TO-DO ...
Cada nó no sistema, além de possuir sensores que podem ser acessados, pode oferecer "serviços" que permitem ativar o comportamento de um ou mais atuadores (físicos ou digitais).
O fluxo principal de ativação de um serviço é descrito a seguir:
- Cliente (através da "bridge") envia comando (em JSON) para ativar serviço. Valor inclui nome do comando, # do nó alvo e pode incluir argumentos (opcionais). Ex.:
{ "id" : 1, "cmd" : "regar", "duration" : 200}
- Nó sensor verifica comando e inicia execução do serviço. Ele retorna uma mensagem codificada como um objeto JSON, contendo o resultado da requisição (seguindo codificação de status utilizados em HTTP). Pode haver também uma mensagem para explicar o resultado (erro) caso ocorra.
Ex.:
{ "res" : 200}
{ "res" : 404, "msg" : "service does not exist"}
- Nó sensor passa a enviar notificações para o cliente sobre o progresso do serviço. Cada notificação irá conter o id de um nó e o tipo do evento. Além disso irá conter 1 ou mais objetos, identificados pelo nome do serviço, contendo os atributos correspondendo ao estado atual do serviço.
Ex.:
{ "id" : 1, "evt": "notify", "regar" : {"prog" : 85.0}}
Clientes podem fazer consultas em relação ao nós de um sensor.
entrada:
{ "cmd": "nodes"}
saída: lista com ids de nós
[1, 2, 3, 5]
entrada:
{ "id" : 2, "cmd": "services"}
saída:
["regar", "iluminar"]
entrada:
{ "id" : 2, "cmd": "get", "serv" : "regar"}
saída:
- em execução: inclui status variável conforme serviço
{ "id" : 2, "regar" : {"prog" : 85.0}}
- serviço parado: valor é objeto vazio
{ "id" : 2, "regar" : {}}