IoT e Makers

26 nov, 2018

Thing description: um manifesto para aplicações de Internet das Coisas

Publicidade

Um dos grandes dilemas da Internet das Coisas é a interoperabilidade. É comum uma “coisa” conectada utilizar tecnologia e protocolos diferentes de outros fabricantes, e muitas vezes essas “coisas” não se comunicam entre si.

Em certos casos, essa ausência de interoperabilidade se dá pela falta de exposição das interfaces e das informações de dados. Esse fato atrapalha uma aplicação que acessará essa interface para consumir os dados, já que não há informação suficiente para facilitar esse processo.

Essa é uma das premissas da recomendação em que o W3C está trabalhando para facilitar a interoperabilidade na Internet das Coisas utilizando tecnologia Web: o documento W3C Web of Things (WoT) Thing Description.

Esse documento descreve um modelo formal e uma representação comum para uma Thing Description (TD) da Web das Coisas. Uma TD descreve os metadados e interfaces de “coisas”, onde “coisa” é uma abstração de uma entidade física que fornece interações da Web das Coisas.

As descrições fornecem um conjunto de interações com base em um pequeno vocabulário que possibilita a integração de diversos dispositivos e a interoperabilidade de vários aplicativos.

As TDs, por padrão, são codificadas em JSON-LD. O JSON-LD fornece uma base poderosa para representar o conhecimento sobre as coisas de forma simples, já que permite o processamento como um documento JSON. Além de entidades físicas, as coisas podem representar entidades virtuais.

Uma instância TD pode ser hospedada na própria “coisa” ou hospedada externamente devido às restrições de recursos das “coisas” (por exemplo, espaço de memória limitado) ou quando um dispositivo legado compatível com Web das Coisas é adaptado com uma TD.

O arquivo TD é um bloco de construção central em um sistema habilitado para Web das Coisas e pode ser considerado como o ponto de entrada dessa “coisa” conectada, como um “index.html”.

A TD consiste em, além dos metadados semânticos para a “coisa” em si, um modelo de interação (com propriedades, ações e eventos), um esquema semântico para tornar modelos de dados compreensíveis por máquina e recursos de Web Linking para expressar relações entre as “coisas”.

O exemplo a seguir mostra uma instância simples de TD que reflete o conceito de propriedade, ação e evento de WoT, descrevendo uma “coisa” (neste exemplo, uma lâmpada) com o nome MyLampThing.

{
  "@context": ["https://w3c.github.io/wot/w3c-wot-td-context.jsonld"],
  "@type": ["Thing"],
  "name": "MyLampThing",
  "interaction": [
      {
          "@type": ["Property"],
          "name": "status",
          "schema": {"type": "string"},
          "writable": false,
          "observable": true,
          "form": [{
              "href": "coaps://mylamp.example.com:5683/status",
              "mediaType": "application/json"
          }]
      },
      {
          "@type": ["Action"],
          "name": "toggle",
          "form": [{
              "href": "coaps://mylamp.example.com:5683/toggle",
              "mediaType": "application/json"
          }]
      },
      {
          "@type": ["Event"],
          "name": "overheating",
          "schema": {"type": "string"},
          "form": [{
              "href": "coaps://mylamp.example.com:5683/oh",
              "mediaType": "application/json"
          }]
      }
  ]
}

Com essa informação disponível, é possível criar aplicações que se conectem à lâmpada (pelos dados do form->href) e identificar suas ações e eventos.

O objetivo da Thing Description não é reinventar a roda, nem ditar protocolos e formas de interação entre as “coisas”. Sua função é bem simples: disponibilizar um manifesto de metadados para quem deseja se conectar às “coisas” que estão gerando dados na rede.

Esse pode ser um caminho mais suave para a interoperabilidade da Internet das Coisas.

***

Artigo publicado na revista iMasters, edição #28: https://issuu.com/imasters/docs/imasters_28_v5_issuu