3. Conceitos

Este documento fornece informações sobre os conceitos e abstrações da dojot.

Nota

  • Público
    • Usuários que desejam dar uma olhada em como a dojot funciona;
    • Desenvolvedores de aplicativos.
  • Nível: básico

3.1. noções básicas da dojot

Antes de usar a dojot, você deve estar familiarizado com algumas operações e conceitos básicos. Eles são muito simples de entender e usar, mas sem eles, todas as operações podem se tornar obscuras e sem sentido.

Na próxima seção, há uma explicação de algumas entidades básicas no dojot: dispositivos, modelos e fluxos. Com esses conceitos em mente, apresentamos um pequeno tutorial sobre como usá-los na dojot - ele cobre apenas o acesso à API. Existe um tutorial orientando como utilizar a interface WEB (GUI) em Usando a interface WEB.

Se você quiser obter mais informações sobre como o dojot funciona internamente, consulte a Arquitetura para se familiarizar com todos os componentes internos.

3.1.1. Autenticação de usuário

Todas as solicitações HTTP suportadas pela dojot são enviadas para o gateway da API. Para controlar qual usuário deve acessar quais terminais e recursos, a dojot utiliza o JSON Web Token (uma ferramenta útil é o jwt.io) que codifica coisas como (não se limitando a eles):

  • Identidade do usuário
  • Dados de validação
  • Data de validade do token

O componente responsável pela autenticação do usuário é auth. Você pode encontrar um tutorial de como autenticar um usuário e obter um token de acesso na auth documentation.

3.1.2. Dispositivos e modelos

Na dojot, um dispositivo é uma representação digital de um dispositivo ou gateway real com um ou mais sensores ou de um virtual com sensores/atributos inferidos de outros dispositivos. Em toda a documentação, esse tipo de dispositivo será chamado simplesmente de “dispositivo”. Se o dispositivo real precisar ser referenciado, nós o chamaremos de “dispositivo físico”.

Considere, por exemplo, um dispositivo físico com sensores de temperatura e umidade; ele pode ser representado na dojot como um dispositivo com dois atributos (um para cada sensor). Chamamos esse tipo de dispositivo como dispositivo normal ou por seu protocolo de comunicação, por exemplo, dispositivo MQTT ou dispositivo CoAP.

Também podemos criar dispositivos que não correspondem diretamente aos seus homólogos físicos, por exemplo, podemos criar um com maior nível de informação de temperatura (está ficando mais quente ou mais frio) cujos valores são inferidos a partir de sensores de temperatura de outros dispositivos. Esse tipo de dispositivo é chamado de dispositivo virtual.

Todos os dispositivos são criados com base em um modelo, que pode ser pensado como um modelo de dispositivo. Como “modelo”, poderíamos pensar em números de peça ou modelos de produtos - um protótipo a partir do qual os dispositivos são criados. Os modelos na dojot têm um rótulo (qualquer sequência alfanumérica), uma lista de atributos que conterão todas as informações emitidas pelo dispositivo e, opcionalmente, alguns atributos especiais que indicarão como o dispositivo se comunica, incluindo métodos de transmissão (protocolo, portas, etc.) e formatos de mensagem.

De fato, os modelos podem representar não apenas “modelos de dispositivos”, mas também podem abstrair uma “classe de dispositivos”. Por exemplo, poderíamos ter um modelo para representar todos os termômetros que serão usados na dojot. Este modelo teria apenas um atributo chamado, digamos, “temperatura”. Ao criar o dispositivo, o usuário selecionaria seu “modelo físico”, digamos TexasInstr882 e o modelo “termômetro”. O usuário também teria que adicionar instruções de tradução (implementadas em termos de fluxos de dados, construídas no construtor de fluxo) para mapear a leitura de temperatura que será enviada do dispositivo para um atributo de “temperatura”.

Para criar um dispositivo, um usuário seleciona quais modelos irão compor esse novo dispositivo. Todos os seus atributos são mesclados e associados a ele - eles estão fortemente vinculados ao modelo original para que qualquer atualização de modelo reflita todos os dispositivos associados.

O componente responsável pelo gerenciamento de dispositivos (reais e virtuais) e modelos é o DeviceManager.

A DeviceManager documentação explica mais detalhadamente todas as operações disponíveis.

3.1.3. Flows

Um fluxo é uma sequência de blocos que processa um evento ou mensagem de dispositivo específica. Contém:

  • ponto de entrada: um bloco representando qual é o gatilho para iniciar um fluxo específico;
  • blocos de processamento: um conjunto de blocos que executam operações usando o evento. Esses blocos podem ou não usar o conteúdo desse evento para processá-lo ainda mais. As operações podem ser: testar conteúdo para valores ou intervalos específicos, análise de posicionamento geográfico, alterar atributos de mensagens, executar operações em elementos externos e assim por diante.
  • ponto de saída: um bloco que representa para onde os dados resultantes devem ser encaminhados. Esse bloco pode ser um banco de dados, um dispositivo virtual, um elemento externo e assim por diante.

O componente responsável por lidar com esses fluxos é flowbroker