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. |
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. |
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.
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.
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.
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.
QUER APRENDER A UTILIZAR LINUX DE VERDADE, ENTÃO VENHA APRENDER COMIGO ;) |
Nenhum comentário:
Postar um comentário
Viu algum erro e quer compartilhar seu conhecimento? então comente aí.
Observação: somente um membro deste blog pode postar um comentário.