Chaque recette indique les blocs, leurs réglages et l’endroit où les câbler. Les recettes 1 à 5 et 8 à 9 vont dans un flux racine sur l’hôte IoT (la racine à l’échelle du locataire ou une racine de profil) ; insérez-les sur la sortie telemetry du commutateur Message type, avant ou après Save telemetry selon l’indication. Testez chaque modification avec Test avant de déployer. Voir The flow editor.
1. Stocker une valeur uniquement lorsqu’elle change suffisamment
Un capteur de niveau envoie une valeur toutes les 10 secondes, mais un changement inférieur à 0,5 cm n’a pas d’importance.
Message type ─telemetry→ Only changes → Save telemetry
- Only changes : propriété
msg.payload.level_cm, modedeadband, valeur0.5, first activé. Clé : laissez la valeur par défaut (une mémoire par appareil). - Les enregistrements sans
level_cmdoivent quand même être sauvegardés : placez d’abord un Switch (propriétémsg.payload.level_cm, règlenempty), envoyez sa sortie de règle vers Only changes et sa sortie otherwise directement vers Save telemetry.
Cela réduit les points stockés, pas les messages comptés. Pour réduire les messages, modifiez la fréquence de remontée de l’appareil. Voir Message quota and usage.
2. Consommation d’un compteur susceptible de redémarrer
Un compteur d’eau envoie une valeur volume_m3 croissante ; après une coupure de courant, il redémarre à 0.
Message type ─telemetry→ Delta ─out→ Save telemetry
└other→ Save telemetry
- Delta : entrée
msg.payload.volume_m3, sortiemsg.payload.volume_delta_m3,on_negativezero, seedlatest, arrondi à 3.
Pour une consommation horaire ou quotidienne, vous pouvez aussi tracer le compteur brut avec l’agrégat increase. Voir Derived values.
3. Alarme lorsqu’un capteur ne répond plus
Déclenchez un avertissement lorsqu’un appareil cesse d’envoyer temperature pendant 15 minutes, et effacez-le lorsqu’il renvoie des données.
Message type ─telemetry→ Switch (msg.payload.temperature nempty) → Watchdog ─timeout→ Raise alarm
└ok→ Clear alarm
- Watchdog : ms 15 min, clé
msg.originator(par défaut), repeat désactivé. - Raise alarm : alarme
temperature_silent, gravité warning, texteNo temperature for 15 minutes. - Clear alarm : alarme
temperature_silent. - Gardez la sortie du Switch également reliée à Save telemetry, ou câblez la branche watchdog à côté de celle-ci.
Un watchdog commence à surveiller un appareil à son premier message après le déploiement. Pour les appareils totalement hors ligne, utilisez aussi une règle d’alarme hors ligne. Voir Offline alarms.
4. Transmettre chaque mesure à votre serveur
Save telemetry → HTTP request
Créez une connexion HTTP endpoint vershttps://ingest.example.comavec authentification bearer. Voir Connections and secrets.
HTTP request : méthode POST, chemin/readings, corpstemplate, template_formatjson, template :{"device": {{ msg.metadata.deviceName }}, "ts": {{ msg.metadata.recordTs }}, "values": {{ msg.payload }}}
envoisendtardif, afin qu’un retard accumulé après une panne soit lui aussi transmis.
Reliez la sortie error de la requête à un bloc System log (texteforward failed: {{ msg.error.code }}).
Un câblage après Save telemetry ne transmet que ce qui a été stocké. Pour de nombreux appareils, placez un Batch (count 50) et un Join (auto, array) avant la requête afin d’envoyer des groupes.
5. Une clé d’état pour les vues de site et les graphiques
Les vues de site colorent les pièces selon une clé status. Stockez-en une dérivée de la température :
Message type ─telemetry→ Switch (msg.payload.temperature nempty) → Calculate → Save telemetry
- Calculate : cible
msg.payload.status, exprmsg.payload.temperature > 8 ? 2 : (msg.payload.temperature > 6 ? 1 : 0).
Les vues de site interprètent 2 comme critique et 1 comme avertissement. En tant que nombre, status peut aussi être tracé et agrégé. Voir Site views.
6. Envoyer un e-mail et un SMS à une adresse d’astreinte lorsqu’une alarme s’ouvre
Un flux (et non une racine) sur l’hôte IoT :
Device message (types: alarm) → Switch (msg.metadata.alarm.transition) ─created→ Rate limit → Notify
- Device message : types
alarm(cochez-le par son nom), profils : ceux qui vous concernent. - Switch : propriété
msg.metadata.alarm.transition, règleeqcreated. - Rate limit : n 5, per_ms 1 h, mode drop, clé
msg.topic(une seule limite pour tous). - Notify : destinataires
addressoncall@example.com,phone+905551112233, etroleADMIN(dans l’application et par notification push) ; titre{{ msg.payload.title }}; texteAlarm on {{ msg.payload.deviceName }}: {{ msg.payload.title }} ({{ msg.payload.severity }}); urgency critical.
Les rôles atteignent les membres dans l’application, par notification push et dans les applications de messagerie ; seules les lignes address et phone reçoivent un e-mail et un SMS. Voir Alarm, command and notify blocks.
7. Mode nuit
Deux flux sur n’importe quel hôte activent un troisième flux (« Night actions ») à 22:00 et le désactivent à 06:00.
- Flux A : Schedule (daily,
22:00, every day, tzEurope/Istanbul) → Enable or disable a flow (flow : Night actions, state enable). - Flux B : Schedule (daily,
06:00) → Enable or disable a flow (state disable).
Les deux exigent la confirmation saisie au déploiement. Au maximum 6 commutations par minute et par organisation.
8. Commuter une pompe entre deux niveaux
Démarrer une pompe de remplissage sous 30 % et l’arrêter au-dessus de 80 %. Entre les deux niveaux, rien n’est envoyé, si bien que la pompe ne fonctionne pas par à-coups.
Save telemetry → Switch (property msg.payload.level_pct)
─rule 1: lt 30→ Not repeated → Send command pump.set {"on": true}
─rule 2: gt 80→ Not repeated → Send command pump.set {"on": false}
- Switch : propriété
msg.payload.level_pct, règleslt30 (Namelow) etgt80 (Namehigh), stop_first activé. Un enregistrement sans cette clé va vers otherwise et est ignoré. - Chaque Not repeated : période 10 min, de sorte que la commande est envoyée une fois et répétée au plus toutes les 10 minutes tant que le niveau reste hors de la plage.
- Send command : la commande
pump.setdu profil avec les paramètres{"on": true}ou{"on": false}.
Les commandes issues des flux sont limitées à 30 par minute et par appareil, et un message tardif n’envoie rien. Pour une commande opérateur avec les modes Manual et Auto, la carte Rules est souvent l’outil le plus adapté : voir Rules card: actions.
9. Décoder une charge utile binaire
Un appareil envoie 4 octets : une température signée × 10 et une humidité non signée. Elle arrive sous la forme raw (base64).
Switch (msg.payload.raw nempty) → Change → Base64 (decode) → Hex (encode) → Bytes (decode) → Save telemetry
- Change :
setmsg.payloadvers le cheminmsg.payload.raw. - Champs Bytes :
temperatureoffset 0i16scale 0.1 ;humidityoffset 2u16.
Voir Data transform blocks.
10. Récupérer des mesures d’un autre système par webhook
Un système externe envoie du JSON à Hermetry, et le flux le transmet.
- Déclencheur Webhook : auth
hmac, parsejson, replyaccepted. Copiez l’adresse et le secret depuis la boîte de dialogue Webhooks. - Puis Switch sur
msg.payload.type, Change pour remodeler, et une action : Notify, Webhook, MQTT out ou Set variable.
Par défaut, le message d’un webhook concerne l’organisation et non un appareil ; Save telemetry le refuse donc. Pour alimenter des mesures d’appareils depuis un autre système, faites-les envoyer au nom de l’appareil via MQTT ou l’API HTTP des appareils. Voir Device HTTP API.

