Estrutura
Tópicos
Cada equipamento terá o seu tópico de envio.
mho/keeper/v1/[devicename]/...
Onde [devicename] é o nome do dispositivo definido nas configurações MQTT, para os exemplos desse guia será utilizado mydevice
. O payload para Telemetria e Atributos é em formato JSON, já o payload RPC pode ser também uma string, além de JSON.
Os payloads podem ter os seguintes formatos:
- JSON: Telemetria, atributos e RPC;
- String: RPC (quando exige uma resposta simples).
Quando o payload for em JSON podemos ter os seguintes valores para as tags de telemetria:
- String;
- Booleanos;
- Números inteiros;
- Números de precisão.
Alguns brokers podem recusar conexões caso os tópicos contenham caracteres especiais, evite utilizar símbolos como % # $. Em caso de utilização de espaço, o tópico terá "_" no lugar do espaço. Por exemplo: "my device 1" será definido como my_device_1.
Atributos
Utilizado para informar ao servidor alguns parâmetros do equipamento. Os dados são enviados ao broker no seguinte tópico:
mho/keeper/v1/mydevice/attributes
O payload enviado nesse tópico é um arquivo JSON com os atributos e seus respectivos valores:
{"key1": value1, "key2": value2, ...}
Telemetria
Utilizado para enviar dados de telemetria lidos pelas portas do equipamento.
Os dados são enviados ao broker no seguinte tópico:
mho/keeper/v1/mydevice/telemetry
Payloads sem timestamp:
Nesse payload o dado enviado é o dado referente ao seu estado atual, portanto não existe a informação de timestamp, essa informação deve ser fornecida pelo servidor:
{"key1": value1, "key2": value2, ...}
Payloads com timestamp:
Nesse payload o dado enviado é o dado referente a um evento salvo na memória retentiva, enquanto o equipamento esteve desconectado:
{
"ts": timestampinMilliSecconds,
"values": {
"key1": value1,
"key2": value2
}
}
RPC
Utilizado para comandos remotos e troca de informação de configuração com o equipamento.
Os comandos devem ser enviados no seguinte tópico, conforme API:
mho/keeper/v1/mydevice/rpc/request
O payload enviado nesse tópico é um arquivo JSON com os atributos e seus respectivos valores ou um texto simples em string:
{"method": "myMethodName", "params": "myMethodValue"}
{"method": "myMethodName", "params": {"param1": "value1", "param2": "value2", ...}}
As repostas são enviadas ao broker no seguinte tópico:
mho/keeper/v1/mydevice/rpc/response
O payload enviado nesse tópico é um arquivo JSON com os atributos e seus respectivos valores ou um texto simples em string:
{"key1": value1, "key2": value2, ...}
ou
"resposta"