Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2,...
Click here to load reader
-
Upload
davi-gameiro-salgado -
Category
Documents
-
view
278 -
download
22
Transcript of Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2,...
![Page 1: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/1.jpg)
Plataformas para aInternet das Coisas
Paulo F. Pires1, Flavia C. Delicato1, Thais Batista2, Thomaz Barros1, Everton Cavalcante1,3, Marcelo Pitanga1
1DCC/PPGI, Universidade Federal do Rio de Janeiro, Rio de Janeiro, Brasil2DIMAp, Universidade Federal do Rio Grande do Norte, Natal, Brasil
3IRISA-UMR CNRS/Université de Bretagne-Sud, Vannes, França
![Page 2: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/2.jpg)
Plataformas de middleware para IoT
![Page 3: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/3.jpg)
3
Carriots• Plataforma que utiliza serviços de nuvem para gerenciar dados providos
por dispositivos
• Platform as a Service (Paas) desenvolvida para conexão de dispositivos (M2M) no contexto de IoT
• Coleta e armazena qualquer tipo de dado de quaisquer dispositivo
• Permite a construção de aplicações
• Capacidade de suportar milhares de dispositivos conectados à uma mesma aplicação
Sistemas
Dispositivos
Pessoas
Produtos conectados
![Page 4: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/4.jpg)
4
Carriots: Construindo um Projeto de IoT
Front end Sistemas de TI Personalizados
Plataforma
Hardware
Internet
Internet
Apresentação
Aplicação(BD, middleware e
motor de regras)
Sensores e Atuadores“Coisas”
![Page 5: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/5.jpg)
5
Carriots: Construindo um Projeto de IoT
Serviços Personalizados
HTTPREST
Serviços WebHTTPS
Interface Web
HTTP3G/4G/Ethernet
GatewayZigbee/Rádio
OutrasAPIs
HTTPAPI
Gateway
![Page 6: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/6.jpg)
8
Carriots: Dispositivos
• Sensores― Coletam os dados brutos lidos por um dispositivo
― Por exemplo: temperatura, presença, vento, campos magnéticos, etc.
• Atuadores― Interagem com o mundo físico agindo sobre ele
― Por exemplo: abrir/fechar portas, exibir mensagens, acender/apagar luzes, enviar sinais, etc.
![Page 7: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/7.jpg)
9
Carriots: Dispositivos• No contexto de um projeto de IoT, os
objetos devem ser capazes de se comunicar e interagir pela Internet
― Autossuficientes
o Modem GPRS/3G/4G embutido
― Sensor + Gateway
o Serial (e.g., RS 485) ou rádio (e.g., 868MHz) + gateway de comunicação
― Rede de sensores + Gateway
• Protocolos de Comunicação
― HTTP
― JSON ou XML
― API REST
Gateways
HTTP3G/4G/Ethernet
RS 485 Zigbee
![Page 8: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/8.jpg)
10
Carriots: Dispositivos
• Exemplo: enviando dados de um sensor de presença de veículo estacionado
![Page 9: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/9.jpg)
11
Carriots: Plataforma
• API REST ― Seguindo padrões da Internet, a plataforma implementa uma API
REST sobre HTTPS
― Recebe grande quantidade de dados dos dispositivos
― Plena capacidade de interação entre a plataforma e os painéis de controle personalizados, dashboards, etc.
― Exemplo: Sensores de estacionamento enviando status (ocupada ou livre) de uma vaga. Painel de controle personalizado é utilizado para gerenciamento
![Page 10: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/10.jpg)
12
Carriots: Plataforma
• BD Big Data― Grandes quantidades de dados são armazenadas
em uma arquitetura de big data schemaless― Provê flexibilidade para o gerenciamento de dados
dos mais diversos dispositivos
― Exemplo: temperatura, posicionamento geográfico, etc.
![Page 11: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/11.jpg)
13
Carriots: Plataforma
• Gerenciamento de Projetos e Dispositivos― Projetos podem ser organizados para atender quaisquer
requisitos
― Flexibilidade para atender dos projetos mais simples aos mais complexos
― Capacidade de gerenciamento remoto dos dispositivos
― Exemplo: Ajuste da taxa de amostragem de um sensor de estacionamento
![Page 12: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/12.jpg)
14
Carriots: Plataforma
• Regras de Negócio e Processamento de Eventos
― Plataforma capaz de armazenar e executar toda a lógica de negócio necessária
― Lógica de negócio escrita em Groovy
― Scripts Groovy são executados no motor e isolados através de uma abordagem if-then-else
![Page 13: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/13.jpg)
15
Carriots: Plataforma• Exemplo de uma lógica de negócio em Groovy., que reage quando uma
informação de estacionamento é recebida
![Page 14: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/14.jpg)
16
Carriots: Plataforma
• Segurança― APIkeys para a definição de privilégios e visibilidades
― HTTPS para a criptografia das requisições e respostas à API REST
― Hash HMAC e senha pré-compartilhada para autenticação e verificação de conteúdo
― Permite a utilização de criptografica personalizada e adição de soluções de segurança adicionais
![Page 15: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/15.jpg)
17
Carriots: Plataforma
• Logs & Debug: Mensagens log, acessíveis a partir do painel de controle, e o console de debug são ferramentas para facilitar o desenvolvimento dos projetos hospedados na plataforma
• Painel de Controle :O painel de controle fornece a capacidade de gerenciamento dos projetos a partir de uma interface Web
• Módulo de Comunicação Externa: Envio de e-mails, SMSs, interação com sistemas externos, etc.
![Page 16: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/16.jpg)
19
Carriots: Front End
• Painel de Controle― Primeira ferramenta utilizada para a construção
de um projeto
― Fornece funcionalidades para a configuração do projeto, definição de privilégios de acesso, gerenciamento dos dados, etc.
HTTPSInterface Web
![Page 17: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/17.jpg)
20
Carriots: Front End
• Dashboard & Painel de Controle― Dashboards e paineis de controle construídos sobre a interface
REST são o que os usuários finais realmente vêem
― Exemplos: mapas customizados das vagas de estacionamento disponíveis
• Monitoramento― Pooling da API REST
― Download de dados
― Gráficos personalizados
― Push de dados baseado em eventos
HTTPSInterface Web
HTTPSInterface Web
![Page 18: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/18.jpg)
21
• Sistemas de TI Externos― A Plataforma pode se integrar
com outros sistemas
― Push/Pull de CRMs, ERPs...
― Exemplo: Zoho CRM, ArcGIS ...
• Integrações já fornecidas― Dropbox
― E-mails em massa
― SMSs
― Sockets
HTTPREST
Serviços Web
Carriots: Integração ExternaServiços
Personalizados
OutrasAPIs
HTTPAPI
![Page 19: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/19.jpg)
22
Carriots: Aplicação no Contexto de Cidades Inteligentes
• Recolhimento de lixo inteligente na cidade de Santander, ES
• Sensores sem fio instalados nas lixeiras• Recuperam informações sobre o volume de lixo
nas lixeiras• Enviam esses dados para a Carriots
![Page 20: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/20.jpg)
23
Carriots: Aplicação no Contexto de Cidades Inteligentes• API REST permite receber os dados brutos• Interface Web personalizada permite analisar:
― Volume de lixo
― Estado das baterias dos sensores
― Qualidade do sinal para a transmissão de dados (GPRS)
![Page 21: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/21.jpg)
25
Xively
• Utiliza serviços de nuvem para gerenciar os dados providos pelos dispositivos
• Fornece uma API RESTful para envio dos dados
• Permite a visualização de dados históricos• Provê mecanismos para disparo de eventos
com base nos dados gerados pelos sensores (triggers)
![Page 22: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/22.jpg)
26
Xively: Arquitetura
![Page 23: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/23.jpg)
27
Xively
• Os dados são organizados em:― Feeds
― Datapoints
― Datastreams
• Formas de recuperação de dados:― JSON, EEML (Extended Environments Markup Language) ou CSV
através da API REST
― Através de sockets― Protocolo MQTT
• EEML permite a descrição semântica do dado coletado• Segurança
― Utilização de HTTPS
― Chave para utilização da API
![Page 24: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/24.jpg)
28
EcoDiF• Desenvolvido no contexto do GT-EcoDiF da RNP
• Integra dispositivos heterogêneos e fornece funcionalidades de controle, visualização, processamento e armazenamento de dados em tempo real.
![Page 25: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/25.jpg)
29
EcoDiF: Arquitetura
• Conexão de Dispositivos: facilita a conexão de dispositivos físicos à plataforma e, consequentemente, à Internet
• Fabricantes desenvolvem drivers compatíveis com a API da EcoDiF
• Usuários conectam seus dispositivos, que utilizam os drivers previamente desenvolvidos pelos fabricantes, à plataforma para permitir a comunicação e o envio de dados
Colaboração
Conexão de Dispositivos
Visualização e Gerenciamento
Armazenamento
Aplicações
Manipulação de Dados
Serviços Comuns
(segurança,
transações, etc.)
![Page 26: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/26.jpg)
30
EcoDiF: Arquitetura
• Manipulação de Dados: manipula dos dados coletados dos dispositivos em tempo real
• Permite a criação do conceito de feed― Confere um contexto semântico aos metadados e
aos fluxos de dados
Colaboração
Conexão de Dispositivos
Visualização e Gerenciamento
Armazenamento
Aplicações
Manipulação de Dados
Serviços Comuns
(segurança,
transações, etc.)
![Page 27: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/27.jpg)
31
EcoDiF: Arquitetura
• Visualização e Gerenciamento: Fornece uma interface Web para:
― Gerenciamento dos dispositivos conectados
― Monitoramento das condições e da localização dos dispositivos
― Criação de alertas e notificações (chamados de triggers) relacionados aos ambientes sensoriados
― Visualização de dados históricos
Colaboração
Devices Connection
Visualização e Gerenciamento
Storage
Applications
Data Manipulation
Security, Life Cycle, transactio
ns,etc
![Page 28: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/28.jpg)
32
EcoDiF: Arquitetura
• Colaboração: Facilita a colaboração entre usuários da plataforma
• Busca por dispositivos e feeds a partir de metadados (tipo, usuário, localização...)
• Busca por aplicações (mashup) disponíveis
Colaboração
Conexão de Dispositivos
Visualização e Gerenciamento
Armazenamento
Aplicações
Manipulação de Dados
Serviços Comuns
(segurança,
transações, etc.)
![Page 29: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/29.jpg)
33
EcoDiF: Arquitetura
• Armazenamento: consiste de dois repositórios― SGBD para armazenamento de dados
― Armazenamento dos scripts de construção de aplicações em sistema de arquivos
Colaboração
Conexão de Dispositivos
Visualização e Gerenciamento
Armazenamento
Aplicações
Manipulação de Dados
Serviços Comuns
(segurança,
transações, etc.)
![Page 30: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/30.jpg)
34
EcoDiF: Arquitetura
• Aplicações: provê um modelo e um ambiente de programação e execução para o desenvolvimento de mashups
• Modelo de programação baseado na linguagem EMML (Enterprise Mashup Markup Language)
Colaboração
Conexão de Dispositivos
Visualização e Gerenciamento
Armazenamento
Aplicações
Manipulação de Dados
Serviços Comuns
(segurança,
transações, etc.)
![Page 31: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/31.jpg)
35
EcoDiF: Arquitetura 1 <mashup name="app" 2 xmlns="http://www.openemml.org/2009-04-15/EMMLSchema" 3 xsi:schemaLocation="http://www.openemml.org/2009-04-15/EMMLSchema… " 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xmlns:macro="http://www.openemml.org/2009-04-15/EMMLMacro"> 6 7 <output name="result" type="document"/> 8 <variables> 9 <variable name="feed20" type="document" /> 10 <variable name="feed19" type="document" /> 11 </variables> 12 13 <directinvoke endpoint="http://localhost:8080/EcodifAPI/api/feeds/20/datastreams/20"
method="GET" outputvariable="$feed20" /> 14 <directinvoke endpoint="http://localhost:8080/EcodifAPI/api/feeds/19/datastreams/19" method="GET" outputvariable="$feed19" /> 15 16 <merge inputvariables="$feed20, $feed19" outputvariable="$result" /> 17 18 </mashup>
![Page 32: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/32.jpg)
36
EcoDiF: Arquitetura
DriverAndroid
Conexão de Dispositivos
Armazenamento
Visualização e Gerenciamento
Colaboração
Segurança
Software livre
EEML / REST / HTTP
feeds/aplicações
DriverArduino
JAAS
Outros serviços
JTA JMS …
Manipulação de Dados Aplicações
OMA EMMLEngine
Hibernate
Servidor de Aplicações
Banco de dadosrelacional
Sistema de arquivos
RESTEasy
EEML
EEML/REST
consumidoresde feeds
HTTP
aplicações/consumidoresde feeds
JSF
![Page 33: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/33.jpg)
38
Middleware WSO2
• Plataforma modular, corporativa, free e open-source
• Fornece todas as capacidades do lado servidor (server-side)
• Desenvolvido sobre a tecnologia WSO2-Carbon baseada na OSGi (Open Service Gateway Initiative)*
― Módulos compartilham o mesmo kernel
• Módulos trabalham com protocolos de interoperabilidade padrão
― HTTP, MQTT, AMQP**
*OSGi Alliance: http://www.osgi.org/**Protocolo de messageria para pub/sub. http://amqp.org
![Page 34: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/34.jpg)
39
Middleware WSO2
http://wso2.com/products/
![Page 35: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/35.jpg)
40
Mapeamento do Middleware WSO2 para instanciar uma arquitetura IoT
Como podemos nos beneficiar do middleware WSO2 em IoT?
![Page 36: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/36.jpg)
41
Middleware WSO2Mapeamento para IoT
![Page 37: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/37.jpg)
Estudo de Caso: Monitoramento Inteligente de uma Sala de Reuniões
![Page 38: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/38.jpg)
50
Agenda
• Descrição do Cenário• Visão geral
• Arquitetura
• Ambiente de Hardware e Software utilizados• Configuração do ambiente• Implementação• Cenário em execução
![Page 39: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/39.jpg)
51
Descrição do CenárioControle de salas de reuniões• Integração com a agenda corporativa de reuniões• Monitorar salas de reuniões de uma empresa ou
instituição com o objetivo de deixá-las preparadas para o início de uma reunião
• Monitorar temperatura, iluminação• Acionar o sistema de refrigeração X minutos antes
do inicio caso a temperatura do ambiente não esteja satisfatório como também ligar a iluminação
• Notificar participantes do inicio de uma reunião através de SMS
![Page 40: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/40.jpg)
52
Visão geral da aplicação
![Page 41: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/41.jpg)
53
http / json
Rede 802.15.4
C
Sensor LM335temperatura
E
from SensorInputEventStream[type == 'LM335' and data >= 30.0]#window.time(10 min)select correlation_sensorId as sensorId, type as type, environment as environment, "on" as action insert into SensorOutputEventStream;
Notificação
eventos
Eventos
eventos
Evento atuaçãoEvento atuação
NotificaçãoLembrete da reunião
on / off
E
Sala reunião
E
http / json
Rede 802.15.4
Serviço Integração
evento
Agenda
![Page 42: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/42.jpg)
54
Arquitetura de implementação
![Page 43: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/43.jpg)
55
Mapeamento para aplicação IoT
RESTful
Schema
![Page 44: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/44.jpg)
56
Arquitetura de implementação
![Page 45: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/45.jpg)
57
Modelo de dados dos dispositivos
![Page 46: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/46.jpg)
58
Ambiente de Hardware e
Software utilizados
![Page 47: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/47.jpg)
59
Ambiente de Hardware
![Page 48: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/48.jpg)
60
Ambiente - Hardware
• Dispositivos arduinos• 2 Uno R3
• 2 Mega 2560
• Placa Ethernet Shield• Acesso a internet via
cabo
![Page 49: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/49.jpg)
61
Ambiente - Hardware
• Módulos XBee S1― Estabelecer uma rede sem fio
entre os dispositivos
• Placa XBee explorer usb
• Placa XBee pro
![Page 50: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/50.jpg)
62
Ambiente - Hardware
• Cabos USB para arduino
• Cabo USB mini
• Fontes de alimentação ou baterias para os arduinos
• Roteador
![Page 51: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/51.jpg)
63
Ambiente – Componentes Circuito
• Temperatura• Sensor LM335
• Resistor 2.2k Ohm
• Potenciômetro para calibração
• Atuação• Relé para acionamento de
ar condicionado, iluminação, etc.
![Page 52: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/52.jpg)
64
Ambiente de Software
![Page 53: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/53.jpg)
65
Ambiente - Software
• Arduino IDE• Programação dos arduinos
• XCTU IDE• Configuração dos módulos XBee
• Ambiente Java• Java SDK
![Page 54: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/54.jpg)
66
Ambiente - Software
• Eclipse Java EE IDE for Web Developers
• Plataforma WSO2• CEP – Complex Event Processor• MB – Message Broker
• SGBD MYSQL
![Page 55: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/55.jpg)
67
Configuração do ambiente
Circuito, Rede XBee, WSO2
![Page 56: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/56.jpg)
68
Configuração do ambiente
Circuito
![Page 57: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/57.jpg)
69
Montagem do circuito de temperatura
![Page 58: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/58.jpg)
70
Configuração do ambiente
Rede XBee
![Page 59: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/59.jpg)
71
Dispositivo final
Dispositivo final
Dispositivo final
Controlador da rede
Rede XBee
Rede 802.15.4
![Page 60: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/60.jpg)
72
Configuração do Módulo XBee
• CH : Canal• PAN-ID : ID da rede (Personal Area Network)• DH e DL : Endereço do dispositivo destino• MY : Endereço de 16 bits do dispositivo• CE : Habilitar coordenador ou disp. final• NI : Identificação do Nó• AP : Habilitar uso da API
![Page 61: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/61.jpg)
73
Configuração do Controlador
• CH : 0C• PAN-ID : 3332• DH e DL : 0• MY : 1001 • CE : Coordinator [1]• NI : coord_xbee• AP : API enabled w/PPP [2]
![Page 62: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/62.jpg)
74
Configuração do Dispositivo final
• CH : 0C• PAN-ID : 3332• DH e DL : 0• MY : 1002 • CE : End device [2]• NI : end_device_1002• AP : API enabled w/PPP [2]
![Page 63: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/63.jpg)
75
Configuração do Módulo XBee
• Conectar o Módulo XBee no explorer
• Abrir o programa XTCU
• Clicar na opção Discover devices
![Page 64: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/64.jpg)
76
Configuração do Módulo XBee
![Page 65: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/65.jpg)
77
Configuração do Módulo XBee• Janela apresenta uma
lista com os dispositivos encontrados
• Selecionamos os dispositivos e clicamos no botão Add selected devices
![Page 66: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/66.jpg)
78
Configuração do Módulo XBee• Configuração dos
parâmetros do módulo
![Page 67: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/67.jpg)
79
Configuração do Módulo XBee
• Configuração dos parametros do módulo
• Após configurar os parametros, salvar as configurações no módulo usando o menu ao lado
![Page 68: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/68.jpg)
80
WSO2-CEP
![Page 69: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/69.jpg)
81
WSO2 – CEP – O que processar?
• Processar eventos de temperatura de um determinado ambiente coletados através de um sensor do tipo LM335 e transmitidos ao CEP por um determinado dispositivo.
• Os eventos com temperatura serão acumulados a cada 5 minutos para processamento em modo batch e um dispositivo de atuação será selecionado para envio do comando de atuação.
![Page 70: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/70.jpg)
82
WSO2 – CEP – O que processar?
• Caso o total dos eventos de temperaturas acima ou igual a 25 graus seja maior ou igual a 30, uma mensagem de atuação com o comando “ON” será enviado.
• Caso o total dos eventos de temperaturas abaixo de 25 graus seja maior ou igual a 30, uma mensagem de atuação com o comando “OFF” será enviado.
• Notificar participantes sobre o início da reunião
![Page 71: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/71.jpg)
83
WSO2 Criar fluxo de eventos
e plano de execução para o evento de temperatura
![Page 72: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/72.jpg)
84
WSO2 – CEP - Eventos
• Os passos para criar um fluxo de eventos são:1. Receber (I) e transmitir (O) eventos via HTTP
2. Eventos (I-O) estão em formato JSON
3. Transformar eventos
1. JSON -> WSO2Event -> JSON
4. Criar plano de execução
• Os passos de 1 a 3 são genéricos porque a aplicação envia mensagens padronizadas de sensoriamento independente do tipo de sensor utilizado. O passo 4 é dependente da condição de atuação desejada.
![Page 73: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/73.jpg)
85
WSO2 - CEP
• Iniciar o servidor
• Abrir o navegador e entrar no gerenciador
• URL: https://localhost:9443/carbon
• Login/Senha: admin/admin
![Page 74: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/74.jpg)
86
WSO2 - CEP
• Criar os Input/Output adaptors
• Utilizados para receber eventos de uma fonte e publicar eventos para um coletor
• Clicar na pasta Configure e ir na opção Event Processor Configs
![Page 75: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/75.jpg)
87
WSO2 – CEP – Input adaptor
• Criar um Input adaptor
• Clicar na opção Input Event Adaptors
• Clicar na opção Add Input Event Adaptor
![Page 76: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/76.jpg)
88
WSO2 – CEP – Input adaptor
• Fazer a configuração adequada para o tipo de fonte dos eventos.
![Page 77: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/77.jpg)
89
WSO2 – CEP – Output adaptor
• Criar um Output adaptor
• Clicar na opção Output Event Adaptors
• Clicar na opção Add Output Event Adaptor
![Page 78: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/78.jpg)
90
WSO2 – CEP – Output adaptor• Fazer a configuração adequada para o tipo de coletor dos eventos.
![Page 79: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/79.jpg)
91
WSO2 – CEP – Event Streams• 1-Clicar na aba Main• 2-Selecionar Event Streams• 3-Clicar em Add Event Stream
1
2
3
![Page 80: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/80.jpg)
92
WSO2 – CEP – Novo Event Stream
• Etapa 1 de 2 – Dados básicos
• * campos obrigatórios
![Page 81: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/81.jpg)
93
WSO2 – CEP – Novo Event Stream
• Etapa 2 de 2
• Definir a estrutura do evento, configurando o nome dos atributos e seu tipo
• No final clicar em Add Event Stream e será exibido uma janela solicitando a definição de um EventBuilder
![Page 82: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/82.jpg)
94
WSO2 – CEP – Novo Event Stream
• Janela solicitando a definição de um EventBuilder
• Clicar no botão Create Later
• Repetir os passos 1 e 2 para criar todos os Event Stream
![Page 83: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/83.jpg)
95
WSO2 – CEP – definir Event Builder e Formatters
• Definição de um Event Builder para receber eventos externos via http
• Mapeamento do evento de entrada para o formato interno do CEP
• Clicar na opção In-Flows para definir
![Page 84: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/84.jpg)
96
WSO2 – CEP – definir Event Builder
• Definição de um In-Flow
• Clicar em (+) Receive from...
![Page 85: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/85.jpg)
97
WSO2 – CEP – definir Event Builder
• Definição em 2 passos
• Passo 1 de 2 – Definir Event Builder Name, Input, Topic e Mapping type
1
2
3
4
![Page 86: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/86.jpg)
98
WSO2 – CEP – definir Event Builder
• Passo 2 de 2 –clicar no (+) Advanced para configurar o path de mapeamento de cada campo e no final clicar em Add Event Builder.
![Page 87: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/87.jpg)
99
WSO2 – CEP – definir Event Builder
• Após realizar a configuração o CEP exporta uma URL para envio de eventos
• Método: POST
• http://localhost:9763/endpoints/httpInputSensor/SensorBuilder
![Page 88: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/88.jpg)
100
WSO2 – CEP – definir Formatters• Event Formatters é responsável pelo mapeamento de saída
• Converter um evento (WSO2Event) em diferentes formatos (XML, MAP, JSON e Text)
• Clicar na opção Out-Flows para definir
![Page 89: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/89.jpg)
101
WSO2 – CEP – definir Formatters
• Definição de um Out-Flow
• Clicar em (+) Publish to External...
![Page 90: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/90.jpg)
102
WSO2 – CEP – definir Formatters
• Definição em 2 passos
• Passo 1 de 2 – Definir o Formatter Name e Output Adaptor
![Page 91: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/91.jpg)
103
WSO2 – CEP – definir Formatters• Passo 1 de 2 – configuração da URL que receberá o evento
de saída
![Page 92: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/92.jpg)
104
WSO2 – CEP – definir Formatters• Passo 2 de 2 – configuração do evento de saída
• Indicar o tipo de evento, o conteúdo do evento e no final clicar em Add...
![Page 93: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/93.jpg)
105
WSO2 – CEP – definir Data source
• 1 – clicar na aba Configure
• 2 – clicar na opção Data Sources
• 3 – clicar em (+) Add Data Source
• Acesso ao modelo de dados do Gerenciador de Dispositivo para selecionar o dispositivo “atuador”.
1 2
3
![Page 94: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/94.jpg)
106
WSO2 – CEP – definir Data source
• Configurar os campos com *
![Page 95: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/95.jpg)
107
Plano de Execução
![Page 96: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/96.jpg)
108
WSO2 – CEP – Plano de Execução
• Processa os eventos de entrada e gerar eventos de saída
• Programado através de uma linguagem baseada em SQL
• 1 - Clicar na aba Main
• 2 - Selecionar Execution Plans
• 3 - Selecionar (+) Add Execution Plan
1
2
3
![Page 97: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/97.jpg)
109
WSO2 – CEP – Plano de Execução
• Definição em 3 passos
• Passo 1 – Definir o Execution Plan Name
![Page 98: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/98.jpg)
110
WSO2 – CEP – Plano de Execução• Passo 2 – Definir os Streams de Input e Output do SQL
• Definição do Import Stream• 1 - Selecionar o Input Stream definido e indicas um alias (AS)
• 2 - Clicar em Import
1
2
![Page 99: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/99.jpg)
111
WSO2 – CEP – Plano de Execução
• Definição do Export Stream• 1 - Indicar um Value Of
• 2 - Selecionar o Output Stream definido
• 3 - Clicar em Add
1 2 3
![Page 100: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/100.jpg)
112
WSO2 – CEP – Plano de Execução• Passo 3 – Definição do SQL
![Page 101: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/101.jpg)
113
WSO2 – CEP – Plano de Execução• SQL
define table actuator (id int, macAddress string, env string, sensorType string)
from ('datasource.name'='SensorDS', 'table.name'='actuator');
from SensorInputEventStream [si.type == 'LM335' and si.data >= 25.0]#window.timeBatch(5 min) as sijoin actuator as a on (si.type == a.sensorType) and (a.env == si.environment)select a.macAddress as sensorId, si.type as type, si.environment as environment, "on" as action, count(*) as qtdgroup by si.correlation_sensorId, a.macAddresshaving qtd>=30insert into SensorOutputEventStream2;
![Page 102: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/102.jpg)
114
WSO2 – CEP – Fluxo de eventos• Visualização do fluxo do evento
• 1 – Clicar na Aba Monitor
• 2 – Clicar na opção Event Flow
1
2
![Page 103: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/103.jpg)
115
WSO2 – CEP – Fluxo de eventos
• Integração com a Agenda Corporativa• Mesmos passos indicados anteriormente• Pontos de atenção
• O Input adapter será do tipo JMS
• Na criação do EventBuilder (In-Flow) deve-se configurar o topic/queue que a aplicação da agenda esta publicando as mensagens
• O Output adaptor será do tipo SMS
![Page 104: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/104.jpg)
116
WSO2 – CEP• Input Adapter usando JMS
![Page 105: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/105.jpg)
117
WSO2 – CEP• Event Builder
![Page 106: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/106.jpg)
118
ImplementaçãoArduinos e API Rest
![Page 107: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/107.jpg)
119
Arduinos
![Page 108: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/108.jpg)
120
Arduinos
• Linguagem de programação baseada em C
• Dividida em 4 módulos:• Coletor de dados dos sensores
• Coordenador de Recebimento de eventos e envio ao CEP
• Coordenador de atuação• Recebimento de evento do CEP e envio para atuação
• Atuador
![Page 109: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/109.jpg)
121
Arduinos
• Bibliotecas• Arduino JSON• XBee• Ethernet
![Page 110: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/110.jpg)
122
Coletor de dados de sensor
![Page 111: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/111.jpg)
123
Arduinos – Coletor de dados de sensor
• Dispositivo resposável por• Requisitar informações sobre ambiente a
sensoriar
• coletar dados dos sensores
• formatar a mensagem (JSON)
• enviar ao Coordenador
![Page 112: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/112.jpg)
124
Arduinos – Coletor de dados de sensor
void setup() { pinMode(LEDVerde, OUTPUT); pinMode(LEDVermelho, OUTPUT); pinMode(LEDAmarelo, OUTPUT); pinMode(13, OUTPUT);
Serial.begin(9600); xbee.setSerial(Serial); initVars(); tentativas = 0;}
• setup do dispositivo
![Page 113: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/113.jpg)
125
Arduinos – Coletor de dados de sensor
• setup do dispositivo void initVars() { macAddr = getMAC(); type = "LM335"; env = "SL102"; measure = "C"; pin = 0; tpin = "A";}
String getMAC() { uint8_t shCmd[] = {'S', 'H'}; uint8_t slCmd[] = {'S', 'L'}; String mac = getResultRequest(shCmd); delay(50); mac.concat(getResultRequest(slCmd)); mac.toUpperCase(); return mac;}
![Page 114: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/114.jpg)
126
Arduinos – Coletor de dados de sensor
• loop de execução
void loop() { if (tentativas > -1) { initMessage(); // gera msg de config ao coordenador if (tentativas > 10) { tentativas = -1; } return; }[...]}
![Page 115: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/115.jpg)
127
Arduinos – Coletor de dados de sensor
• Solicita configuração
• Mensagem: {“start”: ”0013A2004076DAF9”}
void initMessage() { String cmd = "{\"start\":\""; cmd.concat(macAddr + "\"}"); [...] uint8_t * payload = (uint8_t *) msg; Tx64Request tx = Tx64Request(addr64, payload, msgsize);[....]
// enviar a mensagem p/ coordenador xbee.send(tx);[...]}
![Page 116: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/116.jpg)
128
Arduinos – Coletor de dados de sensor
• Recebe e processa a configuração
void initMessage() {[...] xbee.readPacket(5000); if (xbee.getResponse().isAvailable()) { [...] if (xbee.getResponse().getApiId() == RX_16_RESPONSE) { xbee.getResponse().getRx16Response(rx16); rxData = rx16.getData(); offset = rx16.getDataOffset(); lenData = rx16.getDataLength(); } else { [...]} // se chegou a resposta da mensagem de inicialização interrompe processConfigMessage(); tentativas = -1;} [...]
![Page 117: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/117.jpg)
129
Arduinos – Coletor de dados de sensor
• Processa a mensagem de configuração recebida
• {"id":"0013A2004076DAF9","type":"LM335","env":"SL102","pin":0,"tpin":"A","measure":"C"}
void processConfigMessage() { String json = dataToString(rxData, 0, lenData); int jsonLen = json.length() + 1; char * msg = (char *) malloc( sizeof( int ) * jsonLen); json.toCharArray(msg, jsonLen); DynamicJsonBuffer jsonBuffer; JsonObject& root = jsonBuffer.parseObject(msg); type = root["type"]; env = root["env"]; measure = root["measure"]; pin = root["pin"]; tpin = root["tpin"];
free(msg);}
![Page 118: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/118.jpg)
130
Arduinos – Coletor de dados de sensor
• Coleta dados do sensor e formata mensagem para envio
• Exemplo: {"id":"0013A2004076DAF9","type":"LM335","env":"SL102","data":0.0,"measure":"C"}
// envia a mensagem formatadavoid sendMessage() { float data = getTemperature(); char * json = getJson(macAddr, type, env, data, measure); int jsonsize = strlen(json); uint8_t * payload = (uint8_t *) json;
Tx64Request tx = Tx64Request(addr64, payload, jsonsize); // envia a mensagem para o coordenador xbee.send(tx);}
![Page 119: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/119.jpg)
131
Arduinos – Coletor de dados de sensor
• Coleta dados do sensor
float getTemperature() { float setting = 2.5;
float sensorValue = 0; if (tpin == "A") { sensorValue = analogRead(pin); } else { [...] } float kelvin = (((sensorValue / 1023) * 5) * 100); float celsius = kelvin - 273.15 - setting; return celsius; // Retorna A temperatura}
![Page 120: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/120.jpg)
132
Coordenador de recebimento de eventos
![Page 121: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/121.jpg)
133
Arduinos – Coordenador de recebimento de eventos
• Dispositivo resposável por• Receber a mensagem de config do dispositivo,
interagir com o sistema de gerenciamento de dispositivos, via API REST, e devolver configuração
• Receber os eventos coletados dos sensores
• Formatar uma nova mensagem (JSON) no modelo do CEP
• Enviar mensagem ao CEP
![Page 122: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/122.jpg)
134
Arduinos – Coordenador de recebimento de eventos
• Código de setupvoid setup() {[...] Serial.begin(9600); xbee.setSerial(Serial);
digitalWrite(statusLed, HIGH); Serial.println("Obtendo IP via DHCP..."); if (Ethernet.begin(mac) != 1) { flashLed(errorLed, 2, 100); Ethernet.begin(mac, ip); } digitalWrite(statusLed, LOW); Serial.print("IP Client : "); Serial.println(Ethernet.localIP()); IPok = 1; flashLed(greenLed, 3, 100);}
![Page 123: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/123.jpg)
135
Arduinos – Coordenador de recebimento de eventos
• Código de processamento
void loop() { if (IPok == 1) { if (readSensorPacket() == 1) { verifyMessageAndSendMessage(); } delay(50); }}
![Page 124: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/124.jpg)
136
Arduinos – Coordenador de recebimento de eventos• Código de tratamento de mensagens recebidas
void verifyMessageAndSendMessage() { String msg = dataToString(rxData, 0, lenData); Serial.println("Mensagem ->"+msg); String mac = getMacAddressFromStartMessage(msg); // verifica se é mensagem de inicialização do device if (mac.length() > 0) { Serial.println("Recebida mensagem de Config."); sendMessageConfig(mac); } else { Serial.println("Recebida mensagem de sensor."); sendDataCEP(msg); } free(jsonArray);}
![Page 125: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/125.jpg)
137
Arduinos – Coordenador de recebimento de eventos• Código de envio de mensagens de config ao dispositivo
void sendMessageConfig(String mac) { String jsonConfig = getDeviceConfig(mac);if (jsonConfig.length() > 0) { sendMessageDevice(jsonConfig); }}
String getDeviceConfig(String mac) { String body = ""; httpRequest("192.168.1.112", 8080, "/devicemanager/device/sensoring/" + mac); [...] body = parseBody(body); } else { Serial.println("Sem retorno"); } body.trim(); return body;}
![Page 126: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/126.jpg)
138
Arduinos – Coordenador de recebimento de eventos• Buscar config no Gerenciador de Dispositivos
void httpRequest(const char * server, unsigned long port, String url) {if (client.connect(server, port)) { client.println("GET " + url + " HTTP/1.1"); client.println("Host: " + String(server) + ":" + String(port)); client.println("User-Agent: arduino-ethernet"); client.println("Content-Type: application/json"); client.println("Cache-Control: no-cache"); client.println("Connection: close"); client.println(); delay(50); } else { Serial.println("connection failed"); }}
![Page 127: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/127.jpg)
139
Arduinos – Coordenador de recebimento de eventos• Enviar configuração ao dispositivo
void sendMessageDevice(String msg) {// Parse da mensagem JSON recebida do DM [...] msg.toCharArray(msgArray, msgsize); DynamicJsonBuffer jsonBuffer; JsonObject& root = jsonBuffer.parseObject(msgArray); [...] const char* env = root["sala"]; const char* sensortype = root["sensortype"]; const int pin = root["pin"]; [...] //formata a msg de resposta a solicitação do device char * json = getJSONConfig(macaddress, sensortype, env, measure, pin, tpin);
uint8_t * payload = (uint8_t *) json; Tx64Request tx = Tx64Request(addr64, payload, strlen(json)); xbee.send(tx); [...]}
![Page 128: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/128.jpg)
140
Arduinos – Coordenador de recebimento de eventos• Código de envio de mensagens para o WSO2-CEP
void sendDataCEP(String msg) { httpRequest("192.168.1.112", 9763, "/endpoints/httpInputSensor/SensorBuilder", getDataToCEP(msg) );}
![Page 129: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/129.jpg)
141
Arduinos – Coordenador de recebimento de eventos
• Código de envio de mensagens para o WSO2-CEP• Formato mapeado no Event Builder:
{"id":"0013A2004076DAF9","type":"LM335","env":"SL102","data":28.00,"measure":"C"}
char * getDataToCEP(String json) {[...] int jsonLen = json.length() + 1; // parser do evento recebido do dispositivo [...] JsonObject& root = jsonBuffer.parseObject(jsonArray); [...] const char* sensorId = root["id"]; const char* type = root["type"]; [...] return getJSON(sensorId, type, date, time, env, data, measurement);}
![Page 130: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/130.jpg)
142
Arduinos – Coordenador de recebimento de eventos• Código de envio de mensagens para o CEP
void httpRequest(const char * server, unsigned long port, char * url, char * data) {[...]if (client.connect(server, port)) { String host = String (server); String sensorData = String (data); // Make a HTTP request: client.println("POST " + (String)url + " HTTP/1.1"); client.println("Host: " + host); client.println("User-Agent: arduino-ethernet"); client.println("Content-type: application/json"); client.println("Connection: close"); client.println("Content-length: " + (String)strlen(data) + "\n"); client.println(sensorData); client.println(); delay(50);} [...]
![Page 131: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/131.jpg)
143
Coordenador de atuação
![Page 132: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/132.jpg)
144
Arduinos – Coordenador de atuação
• Dispositivo resposável por• É iniciado como um servidor WEB e
disponibiliza uma API• Recebe a mensagem de atuação via
HTTP• do servidor CEP ou de qualquer aplicativo
• Identifica o dispositivo de atuação• Envia mensagem de atuação
![Page 133: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/133.jpg)
145
Arduinos – Coordenador de atuação
• Código de setupvoid setup() {[...]
Serial.begin(9600); // iniciar uma conexão Ethernet digitalWrite(statusLed, HIGH); Ethernet.begin(mac, ip); server.begin(); digitalWrite(statusLed, LOW);
Serial.print("Server ON no IP : "); Serial.println(Ethernet.localIP());}
[…]// MAC addressbyte mac[] = { 0x90, 0xA2, 0xDA, 0x03, 0x00, 0xA2};IPAddress ip(192, 168, 1, 163);
// Inicializa o Ethernet server libraryEthernetServer server(80);
[…]
![Page 134: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/134.jpg)
146
Arduinos – Coordenador de atuação• Processamento de mensagens recebidas
void loop() {// escutar as mensagens HTTP vindas dos clientes EthernetClient client = server.available(); String body = ""; if (client) { while (client.connected()) { if (client.available()) { // mensagem HTTP disponível char c = client.read(); body.concat(c); } else { break; } }}...
![Page 135: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/135.jpg)
147
Arduinos – Coordenador de atuação• Processamento de mensagens recebidas
...
digitalWrite(statusLed, HIGH);
// envia mensagem de Ok para o cliente sendAnswer(client); delay(10); digitalWrite(statusLed, LOW);
client.stop();
// envia a mensagem de atuação sendMessage ( parseBody(body) );}
![Page 136: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/136.jpg)
148
Arduinos – Coordenador de atuação• Envia uma resposta ao cliente de mensagem recebida
void sendAnswer(EthernetClient client) { client.println("HTTP/1.1 200 OK"); client.println("Content-Type: application/json"); client.println("Connection: close"); client.println(); client.println("{\"status\":\"OK\"}");}
![Page 137: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/137.jpg)
149
Arduinos – Coordenador de atuação• Forma a mensagem e envia ao dispositivo de atuação
void sendMessage(String msg) {[...] int msgsize = msg.length()+1; char * msgArray = (char *) malloc( sizeof( int ) * msgsize); msg.toCharArray(msgArray, msgsize); DynamicJsonBuffer jsonBuffer; JsonObject& root = jsonBuffer.parseObject(msgArray); const char* sensorId = root["sensorId"]; const char* type = root["type"]; const char* environment = root["environment"]; const char* action = root["action"];....
![Page 138: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/138.jpg)
150
Arduinos – Coordenador de atuação• continuação
... char macHigh[9], macLow[9]; strncpy(macHigh, sensorId, 8);macHigh[8]='\0'; strncpy(macLow, sensorId+8, 8);macLow[8]='\0';// uint32_t msb = strtoul(macHigh, 0, 16); uint32_t lsb = strtoul(macLow, 0, 16);//Seta o mac address do dispositivo de atuação addr64.setMsb (msb); addr64.setLsb (lsb);
uint8_t * payload = (uint8_t *) action; Tx64Request tx = Tx64Request(addr64, payload, strlen(action)); xbee.send(tx);
[...] }
![Page 139: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/139.jpg)
151
Atuador
![Page 140: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/140.jpg)
152
Arduinos – Atuador
• Dispositivo resposável por• Receber a mensagem de atuação do
coordenador e ativar o dispositivo associado por exemplo: um ar-condicionado, um luminária, um eletrodomêstico, etc...
![Page 141: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/141.jpg)
153
Arduinos – Atuador
• Código de setup
void setup() { pinMode(statusLed, OUTPUT); pinMode(redLed, OUTPUT); pinMode(greenLed, OUTPUT);
pinMode(dispositivo, OUTPUT);
// start serial Serial.begin(9600); xbee.setSerial(Serial);
flashLed(statusLed, 3, 50);}
![Page 142: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/142.jpg)
154
Arduinos – Atuador• Código de recebimento de comando de atuação
void loop() { xbee.readPacket(5000); if (xbee.getResponse().isAvailable()) {[...] if (xbee.getResponse().getApiId() == RX_16_RESPONSE) { xbee.getResponse().getRx16Response(rx16); rxData = rx16.getData(); offset = rx16.getDataOffset(); lenData = rx16.getDataLength(); } else {[...] } doActuation();[...]}
![Page 143: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/143.jpg)
155
Arduinos – Atuador• Código de atuação
void doActuation() { String msg = dataToString(rxData, 0, lenData); msg.toUpperCase();
if (msg == "ON") { digitalWrite(dispositivo, HIGH); } else { digitalWrite(dispositivo, LOW); }}
![Page 144: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/144.jpg)
156
API REST Gerenciar dispositivos
![Page 145: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/145.jpg)
157
API REST - Gerenciar dispositivos
@RequestMapping(method = RequestMethod.GET, value = "/device/sensoring/{macAddress}")@ResponseBodypublic Object getDeviceMonitor(@PathVariable String macAddress)
throws Exception {try {
return dmService.getDeviceMonitor(macAddress);} catch (Exception e) {
throw new Exception("Ocorreu um erro ao processar dados! Erro="+e.getMessage());
}}
![Page 146: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/146.jpg)
158
Aplicação na prática
![Page 147: Plataformas para a Internet das Coisas Paulo F. Pires 1, Flavia C. Delicato 1, Thais Batista 2, Thomaz Barros 1, Everton Cavalcante 1,3, Marcelo Pitanga.](https://reader037.fdocuments.net/reader037/viewer/2022102503/5706384d1a28abb8238f682b/html5/thumbnails/147.jpg)
Plataformas para aInternet das Coisas
Paulo F. Pires1, Flavia C. Delicato1, Thais Batista2, Thomaz Barros1, Everton Cavalcante1,3, Marcelo Pitanga1
1DCC/PPGI, Universidade Federal do Rio de Janeiro, Rio de Janeiro, Brasil2DIMAp, Universidade Federal do Rio Grande do Norte, Natal, Brasil
3IRISA-UMR CNRS/Université de Bretagne-Sud, Vannes, França