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
| Type | Exemple | Dernière valeur | Historique brut (jusqu’à la fenêtre brute) | Résumés par minute, par heure et par jour | Graphiques sur de longues périodes |
|---|---|---|---|---|---|
| Nombre | 21.5 | Oui | Oui | Oui (somme, nombre, min, max, dernière) | Oui |
true / false | true | Oui, affiché comme On / Off | Stocké | Non | Non |
| Texte | "running" | Oui | Stocké | Non | Non |
| JSON | {"x": 1, "y": 2} | Oui | Stocké | Non | Non |
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 de | Envoyer |
|---|---|
"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 :
- Après le switch Message type, sur la branche de télémétrie, ajoutez un bloc Change.
- Ajoutez une étape : set
msg.payload.door_openà l’expressionmsg.payload.door ? 1 : 0. - Conservez la clé d’origine
door, ou ajoutez une seconde étape deletemsg.payload.doorpour 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_largeau-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ôme | Cause et solution |
|---|---|
| Une carte de valeur affiche une valeur, mais le graphique indique No values in this window | La 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 nombres | L’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 vide | L’é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.

