Conceptos Clave
Los términos que el resto de la documentación da por conocidos.
Identidad y modelo de datos
Un espacio de trabajo que agrupa dispositivos, flujos de datos, dashboards y miembros. Cada dispositivo pertenece exactamente a un proyecto.
Una pieza de hardware física (o lógica), con su propia credencial, que reporta una o más señales.
Cómo se conecta un dispositivo: un usuario (el id corto del dispositivo, que debe ser también el clientid de MQTT), una contraseña dvp_ y un topic_id corto y opaco que sirve de raíz a los topics del dispositivo. La contraseña sirve además como clave que firma con HMAC cada mensaje: un solo secreto, no dos. Se emite por dispositivo; regenerarla invalida de inmediato la contraseña anterior y su clave de firma. El topic_id se puede rotar por separado.
La credencial antigua por dispositivo (prefijo dvk_). Todavía se acepta como contraseña MQTT - y luego como clave de firma - para firmware que no se puede reconfigurar. Los dispositivos nuevos deberían usar la credencial MQTT de arriba en su lugar. Regenerarla invalida la clave anterior de inmediato.
Una señal es un valor con nombre que reporta un dispositivo (temperature, door_open). Un flujo de datos es la metadata de esa señal del lado del servidor: tipo, unidad, si es de lectura/escritura/observable, límites, umbral de obsolescencia.
Protocolo y datos
Un conjunto de valores de señal con marca de tiempo enviados en un mismo mensaje. Un valor puede ser un número decimal, un entero, un booleano o una cadena, cada uno con una unidad y un indicador de calidad opcionales. Formato en el cable: <a href="/docs/mqtt">referencia del protocolo MQTT</a>.
El transporte de dispositivos: una conexión MQTT sobre TLS que lleva muchas señales en muchas mediciones, más un canal de comandos de vuelta. La autenticación ocurre dentro del CONNECT, y cada mensaje se firma con HMAC usando la contraseña de la conexión. Consulte <a href="/docs/mqtt">referencia del protocolo MQTT</a>.
Un entero por dispositivo que debe crecer estrictamente, para siempre: es la defensa contra reenvíos. El servidor recuerda el valor más alto que aceptó, así que todo lo menor o igual se descarta en silencio. Inicialícelo con el reloj del sistema, nunca en cero.
UTC, ISO-8601. Una medición lleva el momento en que fue observada en el dispositivo; el servidor registra cuándo fue recibida - así la telemetría en buffer igual llega con el momento correcto.
Cada valor puede llevar una cadena de unidad (C, %). El flujo de datos puede definir una unidad canónica para gráficos y exportaciones consistentes.
Indicadores de calidad
Cada valor lleva un indicador de calidad:
| valid | una lectura normal y confiable (el valor por defecto) |
| stale | más antigua de lo esperado para esta señal; puede que el sensor no se haya actualizado recientemente |
| uncertain | el propio dispositivo no está seguro (calentando, fuera del rango calibrado) |
| error | el dispositivo no pudo obtener una lectura real; no confíes en el valor |
Control
Deseado = lo que alguien quiere que un flujo de datos escribible llegue a ser ("enciende este relé"). Reportado = lo que el dispositivo dice que realmente hizo. Se registran por separado: establecer el estado deseado no significa que la acción física haya ocurrido.
Una solicitud para cambiar el estado deseado de un flujo de datos escribible. Que se acepte significa que la solicitud fue almacenada - no que el dispositivo la haya recibido o aplicado.
cmd y responden en cmd/ack - ver <a href="/docs/mqtt#msg-cmd">referencia del protocolo MQTT</a>. No asumas que un 201 del endpoint de comandos significa que un relé realmente cambió; espera el resultado del comando.