Novedad: el cortafuegos de IA supervisa cada módulo y explica cada incidente con palabras sencillas. Vea cómo funciona

Números, texto y valores verdadero/falso

Cómo se almacena cada tipo de valor, qué pueden leer los gráficos y los agregados, y cómo almacenar estados y eventos para que su historial siga siendo útil.

Un valor de telemetría puede ser un número, true/false, texto o un objeto o array JSON. Los cuatro se almacenan, pero no son igual de útiles después: solo los números tienen un historial representable en gráficos y resúmenes. Decide el tipo de cada clave antes de que tus dispositivos entren en producción.

Lo que aporta cada tipo

TipoEjemploÚltimo valorHistorial sin procesar (hasta la ventana de datos sin procesar)Resúmenes por minuto, hora y díaGráficos en ventanas largas
Número21.5SíSíSí (suma, recuento, mín, máx, último)Sí
true / falsetrueSí, se muestra como On / OffAlmacenadoNoNo
Texto"running"SíAlmacenadoNoNo
JSON{"x": 1, "y": 2}SíAlmacenadoNoNo

Los números enviados como texto ("21.5") se almacenan como texto, no como números. Envía los números como números JSON.

Por qué los no numéricos no se representan en gráficos

  • Los resúmenes son numéricos. El proceso por minuto suma, cuenta y compara números. Los textos, booleanos y valores JSON no tienen resumen por minuto, hora ni día.
  • Las ventanas largas leen resúmenes. Un gráfico o una lectura de API de más de 24 horas lee los resúmenes, así que una clave de texto o booleana no tiene puntos ahí.
  • Las ventanas cortas leen filas sin procesar, pero la pestaña Telemetry del dispositivo y los gráficos de líneas dibujan solo puntos numéricos; un punto no numérico no se dibuja.

Así, una clave de texto o booleana se ve bien en una tarjeta de valor (último valor), pero deja un hueco en una tendencia, y un increase, promedio o recuento sobre ella queda vacío.

Almacena los estados como números

Cuando quieras el historial de un estado, envía (o deriva) un número:

En lugar deEnvía
"door": true / false"door_open": 1 / 0
"state": "running" / "stopped" / "fault""state_code": 1 / 0 / 2, y mantén "state": "running" para mostrarlo si lo prefieres
"zone": "Hall B""zone_id": 12
"event": "sos""event_code": 3

Con valores 0/1:

  • el promedio en una hora es la proporción de muestras que valieron 1 (por ejemplo, la proporción de muestras con la bomba en marcha; un dispositivo que informa a intervalo constante convierte esto en la proporción del tiempo);
  • el máximo en un día indica si ocurrió alguna vez;
  • la suma de una clave de 1 por evento cuenta los eventos.

Asigna nombres a los códigos en la Label del perfil del dispositivo y en las asignaciones de valores de tu panel, para que las personas vean palabras y no números.

Conversión en un flujo

Si no puedes cambiar el dispositivo, convierte en el flujo raíz antes de Save telemetry. Por ejemplo, para añadir door_open a partir de un door booleano:

  1. Después del switch Message type, en la rama de telemetría, añade un bloque Change.
  2. Añade un paso: set msg.payload.door_open a la expresión msg.payload.door ? 1 : 0.
  3. Conserva la clave original door, o añade un segundo paso delete msg.payload.door para almacenar solo el número.

Para estados de texto, usa un Switch sobre msg.payload.state con una regla por estado, cada una seguida de un Change que establece msg.payload.state_code, y luego une las ramas en Save telemetry. Consulta Derived values.

Booleanos en el perfil

Establece el Type de la clave a Yes / no en el perfil del dispositivo. Los paneles mostrarán entonces el valor como un indicador (en tarjetas de valor, interruptores y lámparas de estado). Esto cambia cómo se muestra el último valor, no cómo se almacena el historial.

Límites de texto

  • Texto: hasta 1.024 caracteres. Un texto más largo descarta la clave (string_too_long).
  • JSON: hasta 4 KiB cuando se escribe como JSON (value_too_large por encima de ese tamaño).
  • Un valor JSON se almacena completo. Si necesitas uno de sus campos como tendencia, almacena ese campo como su propia clave numérica, por ejemplo con un bloque Change que establece msg.payload.pos_x a msg.payload.position.x.

Posiciones

Una tarjeta de mapa lee la latitud y la longitud de claves numéricas (por ejemplo lat y lng). Envíalas como números. Una posición dentro de un objeto JSON no se puede representar en gráficos ni usar para la reproducción de rutas.

Solución de problemas

SíntomaCausa y solución
Una tarjeta de valor muestra un valor, pero el gráfico dice No values in this windowLa clave es de texto o booleana. Almacena una copia numérica.
Una clave aparece como Text en la pestaña Telemetry aunque contiene númerosEl dispositivo envía números como texto ("21.5"). No tienen resúmenes y no se pueden marcar para la tendencia. Envía números JSON, o conviértelos con number(msg.payload.key) en un flujo.
Un recuento o promedio de eventos siempre está vacíoEl evento es de texto. Almacena un 1 por evento (o un código de evento) como número.

Consulta también A dashboard shows no data.