Usando a interface WEB

Este tutorial descreve as operações básicas na dojot, como criar dispositivos, conferir seus atributos e criar fluxos.

Nota

  • Para quem é esse tutorial: usuários iniciantes
  • Nível: básico
  • Tempo de leitura: 15 minutos

Gerenciamento de dispositivo

Esta seção mostra como gerenciar dispositivos. Para tal, serão utilizados dois dispositivos sensores de temperatura e um dispositivo virtual, esse último com a função de observar as temperaturas medidas nos dois primeiros e gerar alarmes em determinadas condições.

Como descrito em Concepts, todos os dispositivos são baseados em um ou mais modelos (templates). Para a criação de um modelo, você deve acessar a opção Modelos (Templates) na lateral esquerda da tela e então criar um Novo Modelo (New Template), como mostrado abaixo.

Agora há um modelo do qual dispositivos podem ser “instanciados”. Todos dispositivos baseados nesse modelo aceitarão mensagens via protocolo MQTT que serão enviados para o tópico “/devices/thermometers”. Para criar novos dispositivos, deve-se voltar para a opção Dispositivos (Devices) e criar um Novo Dispositivo (New Device), selecionando os modelos nos quais o dispositivo será baseado, como mostrado abaixo.

Note que, quando um modelo é selecionado no painel direito da tela de criação de dispositivo, todos os atributos são herdados para aquele dispositivo. É possível adicionar mais de um modelo, tendo em mente que modelos que compõem o dispositivo não podem compartilhar atributos com o mesmo nome.

Atenção

Os dispositivos são fortemente atrelados aos a modelos. Para remover um modelo, deve-se remover primeiro todos os dispositivos a ele associados. Caso contrário, a seguinte mensagem aparecerá:

Error message when removing an used template

Atenção

É possível adicionar e remover atributos dos modelos, fazendo com que as alterações sejam imediatamente refletidas nos dispositivos associados. No caso de novos adição, no entanto, deve-se observar que os atributos dos modelos que compõem um determinado dispositivo não podem possuir o mesmo nome. Se isso acontecer, a seguinte mensagem aparecerá:

Error while adding overlapping attributes

Essa imagem da tela foi capturada quando um novo modelo foi criado (ExtraTemplate) com um atributo chamado level. Depois um novo dispositivo baseado em ambos os modelos foi criado e um novo atributo também chamado level foi adicionado ao modelo ThermTemplate.

Quando isso ocorre, nenhuma modificação é aplicada ao modelo (nenhum atributo com nome “level” relativo ao “ThermTemplate” é criado). Contudo, o atributo é mantido no cartão do modelo para que o usuário perceba o que está acontecendo. Se o usuário atualizar a tela, as informações serão revertidas para o estado que estava antes da modificação.

Agora os dispositivos físicos podem enviar mensagens à plataforma dojot. Existem algumas coisas a serem observadas: como foi definido o tópico MQTT (todos os dispositivos enviarão mensagens para o tópico /devices/thermometer), os dispositivos devem se identificar utilizando o parâmetro client-id do protocolo MQTT. Outra maneira de se fazer isso é utilizar o esquema de tópico default (que é /{SERVICE}/{DEVICE_ID}/attrs).

Por questão de simplicidade, será emulado um dispositivo utilizando-se a ferramenta mosquito_pub. O parâmetro client-id será configurado utilizando a opção -i do mosquito_pub.

Estando criados os sensores de temperatura, falta agora a criação do dispositivo virtual. Ele será a representação de um alarme de sistema disparado quando algo ruim for detectado pelos sensores. Por exemplo, se os sensores de temperatura estivessem instalados em uma cozinha, a medição de uma temperatura acima de 40ºC poderia indicar que o local estaria em chamas. Essa representação do alarme poderia ter dois atributos: nível de severidade e mensagem textual, para que o usuário pudesse ser informado do acontecimento.

Assim como “dispositivos regulares”, dispositivos virtuais também são baseados em modelos. Portanto, um modelo será criado, como mostrado abaixo.

Configuração de fluxo

Uma vez criado o dispositivo virtual, pode-se adicionar um fluxo para implementar a lógica por detrás da geração de alarmes. A ideia é: se a temperatura medida for menor ou igual a 40ºC, o sistema de alarmes será atualizado com uma notificação de severidade 4 (média) e uma mensagem indicando que a cozinha está OK. Caso a temperatura medida seja maior que os 40ºC, uma notificação de severidade 1 (muito alta) será enviada com a mensagem que a cozinha está em chamas. Isto é feito como mostrado abaixo.

É importante notar que os nós do tipo “change” têm uma referência a uma entidade “output”. Isso pode ser visto como uma simples estrutura de dados, onde existem os atributos message e severity que casam com aqueles do dispositivo virtual. Este “objeto” é referenciado no nó de saída (output) como uma fonte de dados para o dispositivo que será atualizado (nessa caso, o dispositivo virtual criado). Em outras palavras, pode-se dizer que há uma informação que é transferida dos nós do tipo “change” para o “dispositivo virtual” com os nomes “msg.output.message” e “msg.output.severity”, onde “message” e “severity” são atributos do dispositivo virtual.

Vamos, agora, enviar mais algumas mensagens e ver o que acontece para aquele dispositivo virtual.

Se está interessado em como usar os dados gerados por esses dispositivos em sua aplicação, confira o tutorial Building an application.