protocolos de “nuvem” para iot - boscojr.com · 2 roteiro arquitetura para iot web das coisas...
TRANSCRIPT
![Page 1: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/1.jpg)
Protocolos de “Nuvem” para IoT
![Page 2: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/2.jpg)
2
Roteiro
Arquitetura para IoT
Web das Coisas
Formato de Dados
Rest
MQTT
Plataformas de Nuvem
![Page 3: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/3.jpg)
3
Arquitetura para IoT
![Page 4: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/4.jpg)
4
Arquitetura para IoT
![Page 5: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/5.jpg)
http://www.boscojr.com/iot/wot.pdf
WoT (Web of Things)
Um novo paradigma para desenvolvimento de aplicações inspirado na ideia do IOT;
Utiliza protocolos e padrões amplamente aceitos na internet como HTTP e URI;
O objetivo é fazer com que a internet também possa englobar os objetos do dia-a-dia (geladeira, ar-condicionado, tv, carro, etc.)
Fonte: http://www.nce.ufrj.br/labnet/pesquisa/cidadesinteligentes/minicurso-
wot-fnal.pdf
![Page 6: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/6.jpg)
http://www.boscojr.com/iot/wot.pdf
WoT - Protocolos
HTTPtransporte de dados, também usado para manipular os objetos através dos métodos HTTP tais como GET, POST, PUT e DELETE; Através destes métodos é possível expor as funcionalidades de um dado objeto na internet;
URI (Uniform Resource Identifer)Fornecem endereços únicos e globais para identifcaçção dos recursos;
REST Estilo arquitetural para desenvolvimento de aplicações distribuídas
![Page 7: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/7.jpg)
http://www.boscojr.com/iot/wot.pdf
HTTP
Hypertext Transfer Protocol
Implementa o serviço web arquitetura TCP/IP;
Baseado no modelo Cliente-Servidor;
Utiliza os serviços de transporte orientado a conexão na porta 80/TCP;
Envio e recebimento de mensagens;
![Page 8: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/8.jpg)
http://www.boscojr.com/iot/wot.pdf
HTTP: Teste
# telnet www.terra.com.br 80Connected to www.terra.com.br.Escape character is '^]'.GET /index.html HTTP/1.1host: www.terra.com.brUser-Agent: Mozilla/4.0
HTTP/1.1 200 OKServer: nginxDate: Thu, 07 Aug 2014 15:25:31 GMTContent-Type: text/html...Connection: keep-alive
C:
S:
DIGITE
Digite <enter>
![Page 9: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/9.jpg)
http://www.boscojr.com/iot/wot.pdf
HTTP: Sessão
Uma sequência de transações de requisição resposta usando a mesma conexão TCP;
O cliente inicia a comunicação estabelecendo uma conexão TCP para uma porta do servidor, por omissão a porta 80;
O servidor escutando naquele IP e naquela porta, retorna com “HTTP/1.1 200 OK”, juntamente com o resultado da requisição ou erro informado;
![Page 10: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/10.jpg)
http://www.boscojr.com/iot/wot.pdf
HTTP: URI
Em TI, um Identifcador Uniforme de Recursos (URI) - Uniform Resource Identifer (em inglês) é uma cadeia de carateres compacta usada para identifcar ou denominar um recurso na Internet (wikipedia).
<scheme name> : <hierarchical part> [ ? <query> ] [ # <fragment> ]
http://www.boscojr.com/protcomseg/form.php?qualquer=algo#Cap1
![Page 11: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/11.jpg)
http://www.boscojr.com/iot/wot.pdf
HTTP: Métodos
Também chamados de verbos
Usados para indicar a ação desejada sob o recurso
O Recurso é indicado pela URI
Principais métodos utilizados
HTTP 1.0 → GET, POST e HEAD
HTTP 1.1 → OPTIONS, PUT, DELETE, TRACE and CONNECT
![Page 12: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/12.jpg)
http://www.boscojr.com/iot/wot.pdf
HTTP: Métodos
GET: Usado para solicitar um recurso do servidor;HEAD: É idêntico ao GET mas só vem o cabeçalho da resposta a requisição;POST: O método post é usado para solicitar ao servidor o processamento de informações enviadas no corpo da requisição. É maneira padrão usada para processar formulários web;PUT: Solicita que o objeto enviado junto a requisição, seja armazenada sob a URI fornecida. Se o recurso não existe ele é criado, se existe ele é modifcado.DELETE: Pode ser usado para remover um recurso específco.OPTIONS: Retorna os métodos http que o servidor suporta para determinada URL. Isso pode ser usada para checar a funcionalidade do servidor. CONNECT: Converte o pedido de conexão em um túnel TCP/IP transparente, geralmente para facilitar a comunicação criptografada com SSL (HTTPS) através de um proxy HTTP não criptografado.PATCH: Aplica modifcações parciais para um determinado recurso.Um servidor web mínimo deve ter pelo menos os métodos GET e HEAD
![Page 13: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/13.jpg)
http://www.boscojr.com/iot/wot.pdf
HTTP: GET x POST
É possível usar o método GET para enviar dados de formulário para um servidor, porém não é aconselhável, pois os dados serão passados na URL, e podem ser facilmente reproduzidos numa tentativa de fraude no sistema. O método correto para envio do formulário é o metodo POST.
Entrada no html para o método GET:
<FORM action=form.php method=GET>
Entrada no html para o método POST:
<FORM action=form.php method=POST>
Exemplos:
: www.boscojr.com/protcomseg/form.php
![Page 14: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/14.jpg)
http://www.boscojr.com/iot/wot.pdf
HTTP: SSL
S-HTTP o primeiro protocolo de internet com criptografa, desenvolvido por Allan Schifman e Eric Rescorla em 1993. Eles também desenvolveram o Secure Mosaic o primeiro navegador com suporte a esse protocolo.
Em 1994 a Netscape Communications desenvolveu o Secure Sockets Layer (SSL) e este veio a ser o protocolo padrão para segurança de comunicações na WEB. É capaz Prover autenticação, privacidade e integridade.
O HTTPS é uma combinação de HTTP + SSL.
O SSL foi desenhado para ser independente da aplicação. Podendo ser usada para prover segurança para outros protocolos.
Em janeiro de 1999 o IETF adotou uma versão melhorada do protocolo SSL que foi chamada de Transport Layer Protocol (TLS) 1.0 ou SSL 3.1 defnida na RFC 2246.
Em 2008 o IETF lançou a ultima versão TLS 1.2 (SSL 3.3) defnida na RFC 5246.
![Page 15: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/15.jpg)
http://www.boscojr.com/iot/wot.pdf
HTTP:SSL
TLS está colocada acima da camada TCP.
Possui duas camadas:
Record Layer: é usada para encapsular os protocolos de mais alto nível do próprio TLS, tais como Handshake (alert, change cipher spec, como também os protocolos de aplicação, http, ftp, smtp).
A camada TLS Handkshake consiste dos protocolos de handshake, alerta, change cipher spec.
A linha amarela com todas as caixas combinadas, incluindo o http compões o Hiper Text Transfer Protocol Secure (HTTPS).
![Page 16: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/16.jpg)
http://www.boscojr.com/iot/wot.pdf
HTTP: Arquitetura
Cliente
REQUEST
RESPONSE
ArquivosInterpretador
Script
![Page 17: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/17.jpg)
http://www.boscojr.com/iot/wot.pdf
HTTP: Autenticação
Servidor Web
Básica
Digest
Por Certifcado (SSL)
Aplicação
Tokens
![Page 18: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/18.jpg)
http://www.boscojr.com/iot/wot.pdf
HTTP: Códigos de Retorno
200 OK
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
405 Method Not Allowed
500 Internal Server Error
503 Service Unavailable
![Page 19: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/19.jpg)
http://www.boscojr.com/iot/wot.pdf
Fonte: http://www.restapitutorial.com/httpstatuscodes.html
![Page 20: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/20.jpg)
http://www.boscojr.com/iot/wot.pdf
LAB 1: Servidor Web
![Page 21: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/21.jpg)
http://www.boscojr.com/iot/wot.pdf
Comunicaçção “S2S”
![Page 22: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/22.jpg)
http://www.boscojr.com/iot/wot.pdf
API - Aplication Programing Interface
é um conjunto de rotinas e padrões estabelecidos por um software para a utilizaçção das suas funcionalidades por aplicativos que nção pretendem envolver-se em detalhes da implementação do software, mas apenas usar seus serviços.
“How to design a good API and why it matters” Joshua Block - Google
![Page 23: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/23.jpg)
http://www.boscojr.com/iot/wot.pdf
API – Comunicação “S2S”
As APIs permitem que software fale com software. Para fornecer um serviço o “elemento de software” deve possuir uma interface de programação de aplicativo ou API.
O Sistema operacional tem uma API (SPI)
Muitos Protocolos de Aplicação fazem uso de uma API.
![Page 24: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/24.jpg)
http://www.boscojr.com/iot/wot.pdf
Exemplo: MAC Database Vendor
macvendors.com
# curl -k https://api.macvendors.com/FC-A1-3E-2A-1C-33
![Page 25: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/25.jpg)
http://www.boscojr.com/iot/wot.pdf
Características de uma boa API
Fácil de Aprender e usar, mesmo sem documentação;
Fácil leitura e manutenção de código que a usa;
Fácil de estender;
Apropriada a para o público alvo;
![Page 26: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/26.jpg)
http://www.boscojr.com/iot/wot.pdf
Componentes de uma API
Funções
Parâmetros
Retorno
Status
![Page 27: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/27.jpg)
http://www.boscojr.com/iot/wot.pdf
O grandes “players” da internet possuem APIs
Ebay
Twiter
Amazon
Youtube
![Page 28: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/28.jpg)
http://www.boscojr.com/iot/wot.pdf
Demonstração: ALPR
# curl -X POST -F image=@./car1.jpg 'https://api.openalpr.com/v2/recognize?recognize_vehicle=1&country=br&secret_key=seu_token
![Page 29: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/29.jpg)
29
Formato de Dados para IoT
RAW/Binary
JSON
XML
CSV
![Page 30: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/30.jpg)
http://www.boscojr.com/iot/wot.pdf
Binário vs Texto
Formatos binários são performáticos para os computadores tratar mas ruins para leitura por humanos;
Formato texto são mais faceis de serem entendidos por humanos mas geram quantidade excedente de dados. Ex:
150.68.44.4: Representaçção em 11 Bytes
10010110 01000100 00101100 00000100 (32bits)2521050116: 4 Bytes
Em formatos binários a formatação dos dados deve ser conhecida pelo software;
Em formatos texto a formatação é normalmente um padrão ou está no próprio documento. Ex: XML, CSV, JSON.
![Page 31: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/31.jpg)
http://www.boscojr.com/iot/wot.pdf
CSV
Comma-separated values
Valores separados por virgula (,)
Estabelecida pela RFC4180 de 2005
Campos separados por virgula
Registros separados por quebra de linha (CRLF)
Os principais software de planilha podem importar arquivos CSV
Qualquer caractere pode ser usado como separador
![Page 32: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/32.jpg)
http://www.boscojr.com/iot/wot.pdf
XML
XML é uma recomendação do W3C
W3C – World Wide Web Consortium
Responsáveis pela padronizaçção da Web
XML - EXtensible Markup Language
Ou Linguagem de Marcaçção Extensível
XML é uma linguagem de marcação bem como a HTML
XML foi projetada para descrever dados
As tags XML não são pré-defnidas.
Você deve defnir suas próprias tags
![Page 33: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/33.jpg)
http://www.boscojr.com/iot/wot.pdf
XML vs HTML
A XML foi projetada para transportar dados.
A XML não é um substituto para a HTML.
A XML e a HTML foram projetadas com objetivos diferentes:
A XML foi projetada para descrever dados e enfocar o que os dados sção.
A HTML foi projetada para exibir os dados e enfocar como os dados aparecem.
A HTML está relacionada com a exibição de informação, enquanto a XML está relacionada com a descrição de informação.
![Page 34: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/34.jpg)
http://www.boscojr.com/iot/wot.pdf
XML - TAGS
As TAGS não são defnidas
Uso de <> e </> para limitar o escopo. Ex:
<bilhete>
<para>José</para>
<de>Maria</de>
<título>Lembrete</título>
<corpo>Nção me esqueça neste fm-de-semana!</corpo>
</bilhete>
![Page 35: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/35.jpg)
http://www.boscojr.com/iot/wot.pdf
XML – TAGS
Tags podem ter atributos:
<note date="12/11/2007">
<to>Tove</to>
<from>Jani</from>
<message>Hello!</message>
</note>
![Page 36: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/36.jpg)
http://www.boscojr.com/iot/wot.pdf
XML vs IOT
<device>
<id>001</id>
<timestamp>2018-09-01: 10:00</timestamp>
<sensor type=”temp” unit=”oC”>50</sensor>
<sensor type=”humid” unit=”%”>80</sensor>
</device>
Device: 001
temp
Humid
![Page 37: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/37.jpg)
http://www.boscojr.com/iot/wot.pdf
Json
JSON (JavaScript Object Notation - Notação de Objetos JavaScript);
Formatação leve de troca de dados;
Para seres humanos, é fácil de ler e escrever;
Para máquinas, é fácil de interpretar e gerar;
Atualmente padronizada na RFC7159;
![Page 38: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/38.jpg)
http://www.boscojr.com/iot/wot.pdf
JSON - Estrutura
Objeto: Uma coleção de pares nome/valor. Em várias linguagens, isto é caracterizado como um object, record, struct, dicionário, hash table, keyed list, ou arrays associativas.
{ "name":"John", "age":30, "car":null }
Array: Uma lista ordenada de valores. Na maioria das linguagens, isto é caracterizado como uma array, vetor, lista ou sequência.
[ "Ford", "BMW", "Fiat" ]
Exemplo:
{ "name":"John", "age":30, "cars":[ "Ford", "BMW", "Fiat" ] }
![Page 39: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/39.jpg)
http://www.boscojr.com/iot/wot.pdf
JSON - Tipos
Observe o seguinte json:{ “key” : value }
Neste caso “value” pode ser:Um outro objeto: { "key" : { "subkey" : value} }
Um array: { "key" : [ value , value ] }
Uma string (texto): { “key” : “value” }
Observe o uso das aspas
Um numero: { “key” : value }
Sem aspas
Valores lógicos também sção suportados (sem aspas)
true: { “key” : true }
false: { “key” : false }
Valores nulos (null): { “key” : null }
Sem aspas
![Page 40: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/40.jpg)
http://www.boscojr.com/iot/wot.pdf
Crie o CSV, XML, JSON
S1
D1
S1
D2
S2 S1
D3
S3S2
Nuvem
Dado Dado Dado
● S1: Temp● S2: Humid● S3: CO2
![Page 41: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/41.jpg)
41
REST
REST – REpresentative State Transfer;
Transferência de Estado Representativo;
Defnido por Roy T. Fielding em sua tese de PhD;
Estabelece um conjunto de princípios para aplicações web distribuídas;
Diz-se RESTful as aplicações que seguem esses princípios.
![Page 42: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/42.jpg)
42
Principios de REST
A interface da aplicação deve ser uniforme;
Stateless: Uma requisição não depende de outra anterior, Toda informação necessária ao processamento deve está na própria requisição;
Cacheable: O resultado das requisições podem ser armazenadas em cache;
Client-Server: A comunicação deve ser cliente-servidor;
Layered System (Camadas): O cliente não deve enxergar além das camadas adjacentes;
Code-on-Denand: A aplicação pode opcionalmente gerar código para que o cliente execute. Ex: Javascript.
![Page 43: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/43.jpg)
43
REST: Em resumo
Todas as coisas devem ter pelo menos um identifcador
Vincule as coisas
Utilize métodos padronizados
Recursos com múltiplas representações
Comunique sem estado
Fonte: http://www.infoq.com/br/articles/rest-introduction
![Page 44: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/44.jpg)
44
1) Dê a todas as coisas um Identifcador
Use URIs para identifcar tudo o que precisar ser identifcado, especifque todos os recursos de "alto nível" que seu aplicativo oferece, se eles representam itens individuais, conjuntos de itens, objetos virtuais e físicos, ou resultados de computação.
“Coisas” individuais
Conjuntos de “Coisas”
![Page 45: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/45.jpg)
45
2) Vincule as coisas
Use links para referenciar coisas que possam ser identifcadas (recursos) sempre que for possível.
A resposta a uma requisição pode conter links para outros recursos
![Page 46: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/46.jpg)
46
3) Utilize os métodos padrão
![Page 47: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/47.jpg)
47
4) Recursos com múltiplas representações
O cliente pode querer escolher a forma que deseja receber as informações. Ex.:
XML
Vcard (vcf)
![Page 48: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/48.jpg)
48
5) Comunique sem Estado
Uma requisição do cliente para o servidor não deve depender de requisições anteriores;
REST exige que o estado seja transformado no estado do recurso. O estado deve ser transformado em algo que possa ser consultado;
Ou o estado do recurso é enviado ao cliente e lá deve ser mantido.
![Page 49: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/49.jpg)
49
REST
![Page 50: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/50.jpg)
50
LAB 2: Preparando o Servidor para REST
![Page 51: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/51.jpg)
51
EXEMPLO: API RESTCadastro de TAGS RFID
URI: http://www.boscojr.com/iot/restfull
Cadastro ORG: (todos RFID pertencem a um ORG)
PUT http://www.boscojr.com/iot/restfull/{ORG}
Retorno: 200 OK, 409 Confito, 400 Mal Formado
Cadastro RFID:
PUT http://www.boscojr.com/iot/restfull/{ORG}/{RFIDCOD}
Retorno: 200 OK, 409 Confito, 400 Mal Formado
Consulta TAG:
GET http://www.boscojr.com/iot/restfull/{ORG}/{RFIDCOD}
Retorno: 200 Ok, 404 Nção Encontrado, 400 Mal Formado
Consulta todas as TAG:
GET http://www.boscojr.com/iot/restfull/{ORG}
Retorno: 200 Ok, 404 Nção Encontrado, 400 Mal Formado
Remoção:
DELETE http://www.boscojr.com/iot/restfull/{ORG}/{RFIDCOD}
Retorno: 200 Ok, 404 Nção Encontrado, 400 Mal Formado
![Page 52: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/52.jpg)
52
LAB 3: Implementando uma API REST
![Page 53: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/53.jpg)
53
MQTT
Message Queue Telemetry Transport
Assíncrono
Publish/Subscribe (Pub/Sub)
Comunicação em uma direção (Pub → Sub)
Pouca complexidade
Pacote pequenos (mínimo 2 bytes)
Otimizado para cenários de conectivade restrita
Banda Baixa
Latência Alta
Ruido Alto
![Page 54: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/54.jpg)
54
Modelo Publish/Subscribe
Mensagem: Informação do Sensor ou comando para o atuador
Fila, Tópico, Broker
Publishers (Publicadores)
Subscribers (Assinantes)
Operações (PUT[M], GET, SUBSCRIBE)
Funcionamento:
Os ASSINANTES registram o seu interesse em tópicos específcos de um determinado BROKER (SUBSCRIBE).
O PUBLICADOR envia (PUT) uma mensagem para a FILA de um TÓPICO existente em um BROKER. Neste momento todos os assinantes daquele TÓPICO sção avisados e devem consumir (GET) a mensagem gerada.
![Page 55: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/55.jpg)
55
MQTT: Modelo Publish/Subscribe
Fila
Tópico
Broker
![Page 56: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/56.jpg)
56
Brokers (On-Primise)
RabbitMQ
Kafka
Mosquitto (MQTT)
![Page 57: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/57.jpg)
57
Brokers MQTT Cloud
![Page 58: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/58.jpg)
58
MQTT: A HORA DO DEMO!
Mosquitto local
Mosquito clientes no cloudmqtt
MQTT Dash
![Page 59: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/59.jpg)
59
Plataformas de Nuvem
Amazenamento (Cloud data store)
Lógica para Eventos (Event logic)
Integração com outras Plataformas (Platforms integration)
Fonte:https://dzone.com/articles/internet-of-things-4-free-platforms-to-build-iot-p
![Page 60: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/60.jpg)
60
IoT Estratégias de Nuvem
Desenvolvimento Próprio (IaaS, PaaS, Hosting)
Serviços de IoT
Amazon
Azure
…
![Page 61: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/61.jpg)
61
IoT Estratégias de NuvemGoogle
![Page 62: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/62.jpg)
62
Porquê Ubidots (ubidots.com)
30 dias “free”
Modo educacional “free”
Não necessita Cartão de Crédito
Armazenamento
DashBoads
Protocolos HTTP e MQQT
![Page 63: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/63.jpg)
63
Ubidots
Device (Gateway)
Variáveis (Sensor ou Atuador)
Dashboard
Eventos
![Page 64: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/64.jpg)
64
Ubidots: Device x Variáveis
Device é uma entidade que pode ser equiparada ao gateway em nossa arquitetura de referencia
Conectado a um device pode existir vários sensores ou atuadores. Na plataforma Ubidots tanto sensores como atuadores são representados por variáveis.
WemosD1
Lâmpada
Fechadura
Ventilador
Temperatura
Presença
Humidade
0 | 1
0 | 1
0 | 1 | 2
0 | 1-10 → 100
0 → 100
Device“Sala”
Lâmpada
Fechadura
Ventilador
Temperatura
Presença
Humidade
Sensores/Atuadores Variáveis
![Page 65: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/65.jpg)
65
Ubidots: DashBoards
Permite visualizar e interagir com variáveis
![Page 66: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/66.jpg)
66
Ubidots: Dashboard
![Page 67: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/67.jpg)
67
Ubidots: Eventos
Permite executar ações com base no valor das variáveis
Se Temperatura > 100 envia e-mail
Se temperatura < 0 envia faz um tuite
![Page 68: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/68.jpg)
68
Preparação do Ambiente
Baixa o Curl for windows
LAB: Monitoração e Controle via Plataforma de IoT
![Page 69: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/69.jpg)
69
Crie um token de autencação
Crie uma conta em Ubidots.com
Crie um device com duas variáveis
Temperatura
Interruptor
Crie uma dashboad com dois widgets
Chart → Line Chart
Control → Switch
Crie um evento
Se temperatura > 100 e-mail para e-mail de sua escolha
LAB: Monitoração e Controle via Plataforma de IoT
![Page 70: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/70.jpg)
70
Teste 1: Enviar um valor (Após o envio veja a dashboard)
C:\> curl -X POST -H "Content-Type: application/json" -d '{"value":30}' http://things.ubidots.com/api/v1.6/devices/SALA/temperatura/values?token=SeuToken
Teste 2: Enviar um valor (Após o envio veja a dashboard)c:\> curl -X POST -H "Content-Type: application/json" -d '{"value":110}' http://things.ubidots.com/api/v1.6/devices/SALA/temperatura/values?token=SeuToken
Teste 3: Recuperar o valor de uma variável
curl http://things.ubidots.com/api/v1.6/devices/SALA/interruptor/lv?token=SeuToken
Pressione o switch na dashboard e verifque e repita o procedimento. Verifque a mudança no valor
LAB: Monitoração e Controle via Plataforma de IoT
![Page 71: Protocolos de “Nuvem” para IoT - boscojr.com · 2 Roteiro Arquitetura para IoT Web das Coisas Formato de Dados Rest MQTT Plataformas de Nuvem](https://reader031.vdocuments.pub/reader031/viewer/2022022707/5be3ec7509d3f2d7048c04ea/html5/thumbnails/71.jpg)
71
FIM