Instituto de Inovação com TIC Dezembro/2013 Software Livre no contexto do Sistema Brasileiro de Medição Avançado (SiBMA) Inovação é a gente! Agenda Smart Grids e Smart Meter. O que é o SiBMA?. SiBMA RI. O Sistema Operacional Contiki. Constrained Application Protocol – CoAP. Efficient XML Interchange – EXI. Dúvidas e Sugestões. Smart Grids & Smart Meter REDE DE ENERGIA ELETRICA: HOJE REDE DE ENERGIA ELETRICA: AMANHÃ SMART GRID: IMPACTO NAS RESIDENCIAS SiBMA O que é o SiBMA? Sistema Brasileiro de “Medição” Avançada. Camada de Aplicação desenvolvida nacionalmente para atender requisitos regionais e especificidades (MME, ANEEL, INMETRO, ABRADEE, ABINEE). Flexibilidade (Evolução com Compatibilidade, Extensibilidade Proprietária, Estrutura e Tipos de Dados, Novas Funcionalidades). Novos Dispositivos Smart Grid: Concentradores e Controladores. Modalidades de Operação: PULL & PUSH. SIBMA: Aplicação em rede Independência de Transporte Conectividade Plena (Host-to-Host) Assinatura Digital: Faturamento e Firmware Descoberta de Dispositivos e Funcionalidades Network Features: Broadcasting, Multicasting, Bootstraping, Discovery e Autoconfig Aspectos de Segurança: Autenticação, Autorização, Sigilo, Auditoria Arquitetura em camadas Modelo Cliente-Servidor Arquitetura como guia. Deve ser flexível. SiBMA RI SiBMA RI SiBMA Reference Implementation Texas Instruments MSP-EXP430F5438 16 KB de RAM 256 KB de Flash 25 Mhz Trade-off memória vs. Processamento Pilha de protocolos do SiBMA RI Pilha de protocolos da solução Visão lógica dos módulos do sistema O Sistema Operacional Características de SO para Smart Objects Severas restrições de memória e processamento Giga Bytes vs. Mega Bytes vs. Kilo Bytes SOs de propósito geral não servem (Windows, MAC, Linux, etc.) Opções de SO embarcado: TinyOS Contiki FreeRTOS Contiki OS “Contiki is an open source operating system for the Internet of Things.” Comunidade de desenvolvedores crescente a cada dia. Suporte a vários MCUs. Suporte a threads (versão light via ProtoThreads). Permite programação orientada a eventos. Carga dinâmica de aplicações. Stack IP (uIP). Contiki OS Motivações do OS: Sem proteção de memória entre APPs. Kernel mínimo. Multiplexação da CPU. Pode ser extendido através de bibliotecas. Contiki OS No Contiki não há threads: A Stack de cada thread precisa ser criada em tempo de execução. A Stack não é acessivel por outras threads. Contiki OS O Contiki é baseado em eventos: Apenas um rodando por vez. Apenas uma stack. Problemas Algumas coisas são difíceis de expressar através de uma máquina de estado. Se alguém levar 2 segundos para terminar todo o resto estará bloqueado. Estatística de uso de memória Memória ROM: SiBMA + Contiki ~ 83 Kbytes 68K (CODE memory) + 15K (CONST memory) Memória RAM: Uso total = 12,3 Kbytes STACK = 0x300 (768 Bytes) HEAP = 0x900 (2,2 Kbytes) Ainda há como enxugar esses dados Visão geral sobre o CoAP Constrained Application Protocol (CoAP) RESTful Protocol For Constrained Devices and Network Easy to Proxy to/from HTTP Not an HTTP Compression Constrained Application Protocol (CoAP) Não há muitas bibliotecas disponíveis. Mudança constante no protocolo. Foi finalizado a pouco meses. Algumas bibliotecas OpenSource: Erbium Libcoap Constrained Application Protocol (CoAP) Libcoap Conseguiu acompanhar o desenvolvimento do protocolo. Possui 100% dos recursos que o CoAP dispõem. Pouca documentação. Alguns bugs. Erbium Dependente do Contiki OS. Baixa taxa de atualização. Bibioteca de mais fácil utilização. Constrained Application Protocol (CoAP) Nossa escolha: Libcoap: C-Implementation of CoAP Corrigimos alguns bugs. Criamos uma interface para facilitar o uso da biblioteca. Libcoap é mais fácil de portar!! Visão geral sobre o EXI Efficient XML Interchange Tipos de compactação de XML: General Text Compressor gzip bzip lzma XML Compressor XML Conscious Compressor Fast Infoset EXI XMill EXI: Taxa de compressão EXI: Velocidade de processamento Outros pontos fortes do EXI Permite codificação e decodificação via SAX. Importante em ambiente com pouca memória. Validação contra um esquema XML. Padronizado pelo W3C (Mar/2011). Manipulação direta do EXI sem necessidade de tradução para XML. Um obstáculo no caminho... EXI: obstáculos Há poucas opções de bibliotecas EXI (principalmente open-source). Necessidade de porting para a plataforma. Por serem recentes, ainda não estão maduras o suficiente (instáveis). Soluções genéricas não são ideais para as restrições do ambiente utilizado (xsd em RAM). Solução... Parser customizado (byte-aligned, strict schema) Mas como fazê-lo?? A implementação customizada Fontes de referência para a solução: LibEXI: Analisi e implementazione del formato EXI su reti di sensori wireless (Mattia Gheda) Representação de gramáticas em código C como arrays tri-dimensionais. Melhoria para arrays unidimensionais (evitar desperdício de memória) A ferramenta EXIDizer da Siemens (utilizado pelo projeto OpenV2G) A implementação customizada Vertentes para solução do problema: Bibliotecas EXI embarcadas (EXIP, Agile Delta) Necessidade muita memória RAM Gerador de código (terceiros: EXIDizer da Siemens, gerador próprio) Fazer o gerador de código a partir de gramáticas prégeradas (nossa solução) Fazer a máquina de estados “do zero na mão” Maior susceptibilidade a erros Obrigado! Marlon Chalegre Engenheiro de Sistemas Sistemas Embarcados [email protected]