Nouveau : le pare-feu IA surveille chaque module et explique chaque incident en termes simples. Découvrez comment ça marche

Nombres, textes et valeurs vrai/faux

Comment chaque type de valeur est stocké, ce que les graphiques et les agrégats peuvent lire, et comment stocker les états et les événements pour que leur historique reste exploitable.

Une valeur de télémétrie peut être un nombre, true/false, un texte ou un objet ou tableau JSON. Les quatre sont stockées, mais elles ne sont pas aussi utiles par la suite : seuls les nombres ont un historique exploitable dans des graphiques et des agrégats. Définissez le type de chaque clé avant la mise en service de vos appareils.

Ce que chaque type vous apporte

TypeExempleDernière valeurHistorique brut (jusqu’à la fenêtre brute)Résumés par minute, par heure et par jourGraphiques sur de longues périodes
Nombre21.5OuiOuiOui (somme, nombre, min, max, dernière)Oui
true / falsetrueOui, affiché comme On / OffStockéNonNon
Texte"running"OuiStockéNonNon
JSON{"x": 1, "y": 2}OuiStockéNonNon

Les nombres écrits sous forme de texte ("21.5") sont stockés comme du texte, et non comme des nombres. Envoyez les nombres sous forme de nombres JSON.

Pourquoi les valeurs non numériques ne se tracent pas

  • Les résumés sont numériques. Le travail par minute additionne, compte et compare des nombres. Les textes, booléens et valeurs JSON n’ont pas de résumé par minute, par heure ou par jour.
  • Les longues fenêtres lisent les résumés. Un graphique ou une lecture d’API sur plus de 24 heures lit les résumés ; une clé de type texte ou booléen n’a donc aucun point dans ce cas.
  • Les fenêtres courtes lisent les lignes brutes, mais l’onglet Telemetry de l’appareil et les graphiques en courbes ne tracent que des points numériques ; un point non numérique n’est pas dessiné.

Ainsi, une clé de type texte ou booléen s’affiche bien sur une carte de valeur (dernière valeur), mais laisse un trou dans une tendance, et un increase, une moyenne ou un compte sur celle-ci est vide.

Stocker les états sous forme de nombres

Lorsque vous voulez l’historique d’un état, envoyez (ou calculez) un nombre :

Au lieu deEnvoyer
"door": true / false"door_open": 1 / 0
"state": "running" / "stopped" / "fault""state_code": 1 / 0 / 2, et conservez "state": "running" pour l’affichage si vous le souhaitez
"zone": "Hall B""zone_id": 12
"event": "sos""event_code": 3

Avec des valeurs 0/1 :

  • la moyenne sur une heure est la part des échantillons valant 1 (par exemple la part des échantillons où la pompe tourne ; un appareil qui transmet à intervalle régulier en fait la part du temps) ;
  • le max sur une journée indique si l’événement s’est produit au moins une fois ;
  • la somme d’une clé valant 1 par événement compte les événements.

Nommez les codes dans le Label du profil d’appareil et dans les correspondances de valeurs de votre tableau de bord afin que les utilisateurs voient des mots, et non des nombres.

Conversion dans un flux

Si vous ne pouvez pas modifier l’appareil, convertissez dans le flux racine avant Save telemetry. Par exemple, pour ajouter door_open à partir d’un booléen door :

  1. Après le switch Message type, sur la branche de télémétrie, ajoutez un bloc Change.
  2. Ajoutez une étape : set msg.payload.door_open à l’expression msg.payload.door ? 1 : 0.
  3. Conservez la clé d’origine door, ou ajoutez une seconde étape delete msg.payload.door pour ne stocker que le nombre.

Pour les états textuels, utilisez un Switch sur msg.payload.state avec une règle par état, chacune suivie d’un Change qui définit msg.payload.state_code, puis reliez les branches à Save telemetry. Voir Derived values.

Booléens dans le profil

Réglez le Type de la clé sur Yes / no dans le profil d’appareil. Les tableaux de bord affichent alors la valeur sous forme de voyant (sur les cartes de valeur, les interrupteurs et les voyants d’état). Cela modifie l’affichage de la dernière valeur, pas la manière dont l’historique est stocké.

Limites des textes

  • Texte : jusqu’à 1 024 caractères. Un texte plus long supprime la clé (string_too_long).
  • JSON : jusqu’à 4 Kio lorsqu’il est écrit en JSON (value_too_large au-delà).
  • Une valeur JSON est stockée en entier. Si vous avez besoin d’un de ses champs sous forme de tendance, stockez ce champ comme sa propre clé numérique, par exemple avec un bloc Change qui définit msg.payload.pos_x à msg.payload.position.x.

Positions

Une carte lit la latitude et la longitude à partir de clés numériques (par exemple lat et lng). Envoyez-les sous forme de nombres. Une position à l’intérieur d’un objet JSON ne peut pas être tracée ni utilisée pour le rejeu d’itinéraire.

Dépannage

SymptômeCause et solution
Une carte de valeur affiche une valeur, mais le graphique indique No values in this windowLa clé est de type texte ou booléen. Stockez une copie numérique.
Une clé apparaît comme Text dans l’onglet Telemetry alors qu’elle contient des nombresL’appareil envoie les nombres sous forme de texte ("21.5"). Ils n’ont pas de résumés et ne peuvent pas être cochés pour la tendance. Envoyez des nombres JSON, ou convertissez avec number(msg.payload.key) dans un flux.
Un compte ou une moyenne d’événements est toujours videL’événement est de type texte. Stockez un 1 par événement (ou un code d’événement) sous forme de nombre.

Voir aussi A dashboard shows no data.