-
Notifications
You must be signed in to change notification settings - Fork 0
Especificacion de Comandos de los dispositivos
Los proyectos diseñados en este git se basan en una comunicación json entre la aplicación y el dispositivo apoyándonos en el protocolo mqtt, de manera que aplicación y dispositivo se conectan a un broker intercambiando información a través de él.
La comunicación se realiza sin establecimiento de sesión. Cada dispositivo se conecta al broker por un canal de suscripción y envía la información a través del correspondiente canal de publicación.
- Comándos. Los dispositivos son capaces de recibir un set de comandos orientados a la petición de informacion al dispositivo.
- Mensajes espontaneos. Son mensajes enviados por los dispositivos para reportar la informacion específica o alarmado por anomalias de funcionamiento detectados en el propio dispositivo.
Todos los mensajes tienen una parte común y una parte específica dependiendo de la caracteristica del dispositivo y la petición que proceda para cada dispositivo.
A continuación, se explican los parametros mas importantes.
token: Es un valor que identifica la petición y debe ser única por cada peticion.
date: La fecha de la petición
dlgComando: Valor numérico y que el dispositivo interpretará como un comando reconocido al cual enviará una respuesta válida.
nombreComando: Nombre del comando. Es un parámetro opcional ya que el dispositivo no realiza ninguna accion con este parametro.
La información mas relevante de la cabecera es la siguiente:
{ "comando": { "token": "bc3d1040-8611-4b7a-a7c9-12206669a51c", "date": "28/09/2022 10:53:43", "dlgComando": 51, "nombreComando": "ESTADO" } }
Las respuestas a los comandos siguen la siguiente secuencia:
{ "idDevice": "8CCE4EFC0915", "device": 0, "otaVersion": "2206251749", "date": "28/09/2022 12:48:13", "token": "0ff300c6-49c9-47da-a4f5-a60d7bae50eb", "dlgComando": 51, "estadoRele": 0, "deviceState": 4, "programmerState": 1, "dlgResultCode": 200 }
La respuesta llevará siempre los siguientes parámetros obligatorios. idDevice: Identidad del dispositivo. Intimamente ligado a los topics de publicación y suscripcion. device: Tipo de dispositivo que responde a la peticion. otaVersion: Versión del dispositivo. La logica viene dada por el año, mes, dia, hora, minuto de la compilacion que generó la version. token : Identificador de la petición. dlgComando: Comando ejecutado en la peticion. dlgResultCode: Resultado de la peticion. Ok será un 200. Cualquier otro resultado enviado por el dispositivo debe ser interpretado como un error en la ejecucion.
El resto de parámetros enviados dependerán del tipo de dispositivo, su funcionalidad y el comando asociado.
Son aquellos que envía el dispositivo de forma autonoma. Estos pueden ser:
- Mensajes de alarma.
Si el dispositivo detecta cualquier alarma establecida en el dispositivo, lo enviará para su reporte a la aplicación. En el caso de tratarse de un error que impida la comunicación, se proveen funciones para notificar el error por ejemplo con un led luminoso.
- Mensajes de Informacion
Son aquellos enviados por el dispositivo para informar a la aplicacion. Por ejemplo, un cambio de estado de un interruptor wifi, o un cambio de temperatura en sensor.
Se indica un ejemplo de este envío de informacion:
{ "idDevice": "4C75250214E6", "device": 1, "otaVersion": "2209251454", "date": "28/09/2022 12:49:14", "tipoReport": 6, "programmerState": 1, "deviceState": 0, "temperatura": 25.375, "humedad": 5, "dlgResultCode": 200 }