Uma Arquitetura para Web of Things (WoT)



Por: Dominique Guinard e Vlad Trifa

Este artigo foi originalmente publicado por IoT Technica Curiosa magazine.

A Internet das Coisas - IoT resumidamente - veio para ficar e com isso mudar o mundo para melhor. Está visão colossal retrata um mundo onde pessoas, construções e até mesmo objetos estão conectados a uma mesma rede. Neste mundo, garrafas de refrigerante, luzes do seu apartamento, carros e todo o resto fornecerão serviços e trocarão dados uns com os outros.

Você deve ter percebido que a IoT está mais pra uma Intranet das Coisas: para interagir com dez dispostivos diferentes do seu telefone, você precisa instalar dez aplicativos diferentes. O problema é que não existe uma única forma para se comunicar entre todos e cada objeto. Há literalmente centenas! A pior parte é que a maioria desses protocolos e padrões IoT não são compatíveis entre si e, por esse motivo, esta tecnologia ainda não cumpriu suas promessas (ainda!).

IoT versus WoT.
Conectando todas as coisas a Internet e dar-lhes a cada uma endereços de IP é apenas o primeiro passo para a realização da Internet das coisas. Os dispositivos podem facilmente trocar dados uns com os outros, mas eles não entenderão necessariamente o que esses dados significam.  Isso é o que os protocolos da Web como o HTTP trouxeram para a Internet: uma maneira universal de descrever imagens, texto e outros elementos de mídia para que as máquinas pudessem se "entender". A Web of Things-ou WoT - é simplesmente a próxima etapa desta evolução: usando e adaptando protocolos da Web para conectar qualquer coisa no mundo físico e dar-lhe presença na World Wide Web.

Assim como a arquitetura em camadas OSI organiza muitos protocolos e padrões da Internet, a arquitetura WoT é uma tentativa de estruturar a galáxia de protocolos e ferramentas da Web em uma estrutura útil para conectar qualquer dispositivo ou objeto à Web. A pilha de arquitetura WoT não é composta de camadas em sentido estrito, mas sim de níveis que adicionam funcionalidades extras, conforme mostrado na Figura 1 abaixo. Cada camada ajuda a integrar as coisas na Web de forma ainda mais precisa, tornando esses dispositivos mais acessíveis para aplicações e pessoas.

Figura 1. A arquitetura WoT e suas quatro camadas de aplicativos em cima da camada de rede.
Para ilustrar o que essas camadas trazem para a tabela IoT, deixe-nos apresentar WoT Pi, um dispositivo baseado em framboesa Pi que funciona em na plataforma EVERYTHING em Londres. O WoT Pi está conectado com um monte de sensores (por exemplo, temperatura, umidade) e atuadores (por exemplo, uma tela LCD, LEDs) com os quais você pode interagir através da Internet. Uma câmera conectada à Internet permite que você veja a configuração ao vivo. Confira aqui:


Camada 1: Acesso

Esta camada é responsável por transformar qualquer coisa em uma Web-Thing que pode ser interagida com o uso de solicitações de HTTP, assim como qualquer outro recurso na Web. Em outras palavras, uma Web Thing é uma API REST que permite interagir com algo no mundo real, como abrir uma porta ou ler um sensor de temperatura localizado mundo a fora.

Para ilustrar isso, os sensores de nosso Pi podem ser acessados através de uma simples solicitação HTTP na seguinte:


Vá em frente e tente isso no seu navegador. Você obterá uma representação HTML com links para os sensores. Clique em "temperatura" e você terá a temperatura. O que você está fazendo aqui é navegar pela API RESTful do nosso Pi, assim como você faria se navegasse em uma página da Web. IoT-Things podem ser mapeadas em recursos REST facilmente, como mostra a Figura 2, abaixo:

Figura 2. Recursos REST do nosso Raspberry Pi conectado.
HTML é ótimo para humanos, mas nem sempre para máquinas que preferem a notação JSON. Nosso Pi fornece ambos. Execute o seguinte comando no seu terminal usando o cURL, uma ferramenta para se comunicar com as APIs HTTP:

curl -X GET -H "Accept: application/json" "http://devices.webofthings.io/pi/sensors/humidity/"

Você verá o nível de umidade em nosso escritório de Londres em JSON em seu terminal. Este é o primeiro passo ideal para construir seu primeiro aplicativo que expande a Web para o mundo real!

Isso tudo é muito bom, mas muitos cenários do IoT são em tempo real e / ou conduzidos por eventos. Em vez de sua aplicação pedir continuamente dados ao nosso Pi, você quer que ela notifique você quando algo acontece no mundo real; por exemplo, quando a umidade atinge um certo limiar ou um ruído é detectado em sua casa no meio da noite. É aí que outro protocolo da Web pode ajudar: WebSocket. O código Javascript abaixo é suficiente para que uma página da Web obtenha automaticamente as atualizações de temperatura do WoT Pi. Cole-o no console do seu navegador da Web e você verá o nosso Pi enviando a temperatura em tempo real para o seu navegador.

var socket = new WebSocket('ws://devices.webofthings.io/pi/sensors/temperature/'); socket.onmessage = function (event) { //Called when a message is received var result = JSON.parse(event.data); console.log(result); };

Camada 2: Encontrar


Tornar as coisas acessíveis através de uma API HTTP e WebSocket é excelente, mas isso não significa que os aplicativos realmente podem "entender" o que o dispositivo é, quais dados ou serviços ele oferece, e assim por diante.

É aí que a segunda camada, Encontrar, torna-se interessante. Esta camada garante que o seu dispositivo não só possa ser facilmente usado por outros clientes HTTP, mas também possa ser encontrado e automaticamente utilizado por outros aplicativos WoT. A abordagem aqui é reutilizar os padrões semânticos da Web para descrever as coisas e seus serviços.  Isso permite pesquisar dispostivos através de mecanismos de pesquisa e outros índices da Web, bem como a geração automática de interfaces ou ferramentas de usuário para interagir com os dispositivos. Neste nível, tecnologias como o JSON-LD estão em uso: um idioma para anotar semânticamente o JSON.  Isto também é onde padrões como o Web Things Model e o trabalho do grupo W3C WoT ajudam: eles definem um conjunto abstrato de recursos REST que os dispositivos devem oferecer.


Camada 3: Compartilhe

A Internet das coisas só florescerá se os dispositivos tiverem uma maneira de compartilhar dados com segurança entre os serviços. Esta é a responsabilidade da camada Compartilhar, que especifica como os dados gerados pelos dispositivos podem ser compartilhados de maneira eficiente e segura na Web. Nesse nível, outro lote de protocolos da Web ajuda. Primeiro, há TLS, o protocolo que torna as transações na Web seguras. Então, técnicas como mecanismos de autenticação da Web, como OAuth, podem ser integradas às APIs de nossos dispositivos.

Camada 4: Composição

Finalmente, uma vez que as coisas estão na Web (camada 1), onde elas podem ser encontradas por seres humanos e máquinas (camada 2), e seus recursos podem ser compartilhados de forma segura com os outros (camada 3), é hora de olhar para como construir grandes- escalas de aplicações significativas para a Web of Things. Em outras palavras, precisamos entender a integração de dados e serviços de Dispositivos heterogêneas em um imenso ecossistema de ferramentas da Web, como software analítico e plataformas de mashup. Ferramentas da Web no intervalo de camada de composição dos toolkit's da Web - por exemplo, SDKs de JavaScript que oferecem abstrações de nível superior - para painéis com widgets programáveis e, finalmente, para ferramentas de mashup físico, como Node-RED, conforme mostrado abaixo. Inspirados pelos serviços participativos da Web 2.0 e em particular os mashups da Web, os mashups físicos oferecem uma visão unificada da Web clássica e da Web das Coisas e capacitam as pessoas a criar aplicativos usando dados e serviços da Web Things sem exigir habilidades de programação.

Figura 3. Um mashup físico com Node-RED. Quando um intruso é detectado através do sensor PIR, uma imagem é tirada e enviada para o Twitter.

Conclusão

A Web of Things é um protocolo de aplicativo de alto nível projetado para maximizar a interoperabilidade no IoT. Esperamos que esta breve introdução lhe tenha dado um gosto do seu potencial. As tecnologias da Web são amplamente populares e oferecem toda a flexibilidade e recursos necessários para a maioria das futuras aplicações IoT, incluindo descobertas, segurança e mensagens em tempo real.

Enquanto nós só explanamos sobre as idéias do WoT, esperamos que isso tenha despertado o seu interesse em tornar a IoT Things mais acessível, graças à Web. A arquitetura da Web de coisas está completamente descrita em nosso livro: "Construindo a Web das Coisas". O livro também é embalado com exemplos de código no Raspberry Pi usando a linguagem Node.js. O código é OpenSource e está disponível gratuitamente em: https://github.com/webofthings/wotbook.

Sou desenvolvedor focado em soluções .NET há 6 anos, sou também tradutor e revisor. Estudante de Letras por vocação, amante da poesia e literatura contemporânea, estou sempre buscando aprender e compartilhar algo novo!

Compartilhe isso

Leia outros posts

Próximo post
« Próximo post
Post Anterior
Próximo Post »

Compre na imago brinquedos

Compre na imago brinquedos
Utilize o cupom de desconto TOCADOTUX e ecnomize 5% na sua compra