Simulação de dispositivos na plataforma dojot

plataforma dojot
Este post faz parte da série Plataforma dojot. Leia também os outros posts da série:

Este artigo é parte da série “Introdução à plataforma dojot”:

  1. Instalação e configuração;
  2. Monitorando dispositivos;
  3. Configurando fluxos de processamento de dados.

 

A dojot é uma plataforma brasileira desenvolvida principalmente pelo CPqD e que surgiu com uma proposta open source, visando facilitar o desenvolvimento de soluções e subsidiar o ecossistema IoT com conteúdo local voltado às necessidades do País.

 

O código dos componentes que compõem a solução está disponível no repositório do Github. Descritivos detalhados da arquitetura, do funcionamento dos componentes e alguns casos de uso podem ser encontrados na documentação.

 

Introdução

 

Em aplicações de IoT, a primeira etapa de configuração geralmente envolve o recebimento de dados dos sensores em campo, para que então as informações possam ser analisadas e seja possível a tomada de decisão adequada a cada cenário.

 

Dentre as facilidades trazidas pela dojot, a que será abordada neste artigo é a rápida configuração da comunicação entre dispositivos e plataforma.

 

Será utilizada a comunicação via protocolo MQTT. Esse protocolo foi escolhido por abranger uma vasta gama de dispositivos e gateways, mas isso não significa que a plataforma está limitada a esse tipo de comunicação. Há também suporte a LWM2M, LoRa e sigfox, além de ser extensível a qualquer outro protocolo, bastando a inclusão da implementação - procedimento não abordado neste artigo.

 

Aqui serão abordados os passos necessários para criação do dispositivo virtual - modelo que visa mapear o dispositivo real na plataforma - seguido pelo envio de sinais simulando a leitura de temperatura realizada por um sensor.

 

Configurando um dispositivo virtual

 

O primeiro passo para modelar esta solução é mapear todos os componentes presentes em campo - neste caso, um medidor de temperatura.

 

Na dojot, um componente deve ser criado a partir de um modelo pré-determinado: nele, estão descritos os atributos e configurações daquele tipo de componente.

 

Como, neste momento, não há qualquer dado na plataforma, o primeiro passo deve ser criar o template a ser usado por este componente.

 

Criando um modelo (template)

 

A partir da interface web, o menu Templates traz a opção de adicionar um novo modelo.

 

No componente deste exemplo, é importante que o dispositivo contenha, no mínimo:

  • um atributo referente à temperatura que será medida;
  • uma configuração de rede que o permita transmitir o valor lido.

 

Com isso, o template pode ser configurado na seguinte sequência:

  1. Definir nome do template - neste caso, sensorDeTemperatura;
  2. Adicionar atributo dinâmico de medição do tipo float, nomeado temperatura;
  3. Adicionar configuração de protocolo de comunicação MQTT.

 

As imagens a seguir mostram os três passos em detalhes.

 

(1)

(2)

(3)

Selecione CREATE para finalizar a criação deste template. Agora, já é possível selecionar este modelo na criação de um novo dispositivo.

 

Criando um dispositivo (device)

 

No menu lateral, a opção Devices leva à tela de criação de dispositivos.

Basta selecionar qual o modelo é base para o dispositivo, atribuir um nome e salvá-lo. Em seguida, ele já estará disponível para receber dados do dispositivo real.

 

Neste caso, o nome foi definido como temperaturaDoEscritorio (acentos e caracteres especiais não são permitidos), conforme ilustrado a seguir.

 

Após a criação do dispositivo, seus detalhes podem ser visualizados clicando sobre o mesmo.

 

 

Dentre as configurações, é possível ver o id atribuído ao dispositivo: neste caso, 90a144. Este identificador é essencial para que o sinal lido pelo sensor possa ser mapeado no dispositivo correto pela plataforma.

 

Simulando um dispositivo

 

No exemplo ilustrado por este artigo, o sensor de temperatura se comunica via MQTT com a plataforma.

 

O servidor (broker) MQTT está localizado no contêiner iotagent-mqtt, tendo os ports 1883 e 8883 vinculados ao localhost.

 

Utilizando uma aplicação de publicação MQTT como o mosquitto_pub, incluso no pacote Mosquitto, é possível se comunicar diretamente com a plataforma e simular os dados enviados por dispositivos reais.

 

Após instalar o mosquitto, é necessário desabilitar o serviço para evitar inicialização do broker local e, por consequência, conflito com a porta vinculada ao contêiner iotagent-mqtt da dojot.

 

Enviando o valor de temperatura

 

Cada dispositivo pertence a um tenant e pode receber mensagens a partir do tópico no formato /<tenant_name>/<device_id>/attrs.

 

A sessão atual teve login realizado com o usuário admin. Esse usuário está incluso no tenant admin. Assim, para publicar no dispositivo virtual de id 90a144 sob o tenant admin, o tópico de destino deve ser /admin/90a144/attrs.

 

Note que cada dispositivo criado possui um id diferente, então é preciso atualizar o valor de acordo com o gerado no momento de criação.

 

O comando a seguir envia a mensagem { “temperatura” : 23 } à plataforma, simulando este dispositivo. O parâmetro -i atribui um id ao cliente responsável pelo envio. Este parâmetro deve ter o formato <tenant>:<device_id>.

 

Visualizando valores no dashboard

 

No dashboard da dojot, cada componente possui uma barra colorida indicando seu status de conexão.

 

A barra vermelha indica que o dispositivo é tido como offline, pois não se comunica há pelo menos 5 segundos (nas configurações padrão).

 

Ao receber uma mensagem, o dispositivo é dado como online e a barra indicadora passa para a cor azul.

 

Componente em modo offline

Componente em modo online

Clicando sobre o componente, é possível selecionar um atributo para visualização dos valores recebidos.

 

 

Enviando mais algumas mensagens contendo a leitura de temperatura, o gráfico é atualizado mediante recebimento dos novos valores.

 

 

Conclusão

 

Com os passos vistos até aqui, foi possível utilizar a dojot para recebimento de sinais enviados por dispositivos mapeados dentro da plataforma.

 

Já espera ser possível ao leitor a configuração dos mais variados dispositivos presentes na sua solução, bastando adicionar modelos que os descrevam, seguido da criação dos dispositivos.

 

Nas próximas etapas, serão configurados fluxos de processamento para que os dados recebidos possam ser utilizados na tomada de decisão, seja na geração de um alerta, acionamento de um dispositivo ou até mesmo envio de dados a um servidor externo.

 

Saiba mais

 

Conhecendo a Electron 3G-U260: Dispositivos conectados à nuvem utilizando a internet 3G

Usando serviços de nuvem para coletar business intelligence

AMQP - Testando a Comunicação de Clientes ao Broker

Outros artigos da série

<< Introdução à plataforma dojot - Instalação e configuraçãoConfigurando fluxos de processamento de dados da plataforma dojot >>
Este post faz da série Plataforma dojot. Leia também os outros posts da série:
NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Rafael Zanetti
Graduado em Engenharia Mecatrônica, atua em desenvolvimento de software com foco em soluções potencializadas por big data e inteligência artificial. Atualmente, está envolvido com IoT e suas aplicações no cenário nacional.

1
Deixe um comentário

avatar
 
1 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
1 Comment authors
Allan Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Allan
Visitante
Allan

Para quem tiver usando VM (dojot) e simulando pelo windows, utilizar o formato correto do JSON:
"{\"temperatura\":30}"

Comando completo: (Windows)
mosquitto_pub -d -i 'admin:978970' -t /admin/978970/attrs -h 192.168.12.128 -p 1883 -m "{\"temperatura\":30}"

Para identificar possíveis erros no envio da mensagem , acesse a VM, precisa identificar o container dojot_iotagent

comando: docker-compose up -d, irá mostar o nome dojot_iotagentXXXXXXX
comando: docker logs --tail 20 dojot_iotagent_XXXXXXXXXXX, irá mostrar o logs com os erros , se existir