Neu: Die KI-Firewall überwacht jedes Modul und erklärt jeden Vorfall in einfachen Worten. So funktioniert es

Flow-Kochbuch

Zehn Flows zum Erstellen: Deadband-Filter, Zählerverbrauch, Watchdog für verstummte Sensoren, Weiterleitung, Statusschlüssel, Alarm-E-Mail und SMS, Nachtmodus und mehr.

Jedes Rezept nennt die Bausteine, ihre Einstellungen und wohin sie verdrahtet werden. Rezepte 1 bis 5 und 8 bis 9 kommen in einen Root-Flow auf dem IoT-Host (den mandantenweiten Root oder einen Profil-Root); fügen Sie sie am Ausgang telemetry des Message type-Schalters ein, vor oder nach Save telemetry, wie angegeben. Testen Sie jede Änderung mit Test, bevor Sie sie bereitstellen. Siehe Der Flow-Editor.

1. Einen Wert nur speichern, wenn er sich deutlich ändert

Ein Füllstandssensor meldet alle 10 Sekunden, aber eine Änderung unter 0,5 cm ist nicht relevant.

Message type ─telemetry→ Only changes → Save telemetry
  • Only changes: Eigenschaft msg.payload.level_cm, Modus deadband, Wert 0.5, first an. Key: Standard belassen (ein Speicher pro Gerät).
  • Datensätze ohne level_cm sollen trotzdem gespeichert werden: Setzen Sie zuerst einen Switch (Eigenschaft msg.payload.level_cm, Regel nempty), leiten Sie dessen Regelausgang durch Only changes und seinen otherwise-Ausgang direkt zu Save telemetry.

Dies reduziert gespeicherte Datenpunkte, nicht gezählte Nachrichten. Um Nachrichten zu reduzieren, ändern Sie die Meldeintervalle des Geräts. Siehe Nachrichtenkontingent und Nutzung.

2. Verbrauch eines Zählers, der neu starten kann

Ein Wasserzähler sendet einen steigenden volume_m3-Wert; nach einem Stromausfall beginnt er wieder bei 0.

Message type ─telemetry→ Delta ─out→ Save telemetry
                              └other→ Save telemetry
  • Delta: Eingabe msg.payload.volume_m3, Ausgabe msg.payload.volume_delta_m3, on_negative zero, seed latest, round 3.

Für stündlichen oder täglichen Verbrauch können Sie auch den rohen Zählerstand mit dem Aggregat increase darstellen. Siehe Abgeleitete Werte.

3. Alarm, wenn ein Sensor verstummt

Lösen Sie eine Warnung aus, wenn ein Gerät 15 Minuten lang keine temperature-Werte mehr sendet, und heben Sie sie auf, sobald es wieder meldet.

Message type ─telemetry→ Switch (msg.payload.temperature nempty) → Watchdog ─timeout→ Raise alarm
                                                                     └ok→ Clear alarm
  • Watchdog: ms 15 min, key msg.originator (Standard), repeat aus.
  • Raise alarm: alarm temperature_silent, severity warning, text No temperature for 15 minutes.
  • Clear alarm: alarm temperature_silent.
  • Lassen Sie den Ausgang des Switch auch mit Save telemetry verbunden, oder verdrahten Sie den Watchdog-Zweig neben ihm.

Ein Watchdog beginnt die Überwachung eines Geräts mit dessen erster Nachricht nach der Bereitstellung. Für vollständig offline Geräte verwenden Sie zusätzlich eine Offline-Alarmregel. Siehe Offline-Alarme.

4. Jeden Messwert an Ihren Server weiterleiten

Save telemetry → HTTP request

  1. Erstellen Sie eine HTTP endpoint-Verbindung zu https://ingest.example.com mit Bearer-Authentifizierung. Siehe Verbindungen und Geheimnisse.

  2. HTTP request: Methode POST, Pfad /readings, body template, template_format json, template:
    {"device": {{ msg.metadata.deviceName }}, "ts": {{ msg.metadata.recordTs }}, "values": {{ msg.payload }}}

  3. spät send, sodass auch ein Rückstau nach einem Ausfall weitergeleitet wird.

  4. Verbinden Sie den error-Ausgang der Anfrage mit einem System log-Baustein (Text forward failed: {{ msg.error.code }}).

Eine Verdrahtung nach Save telemetry leitet nur weiter, was gespeichert wurde. Bei vielen Geräten setzen Sie vor der Anfrage einen Batch (count 50) und einen Join (auto, array), um Gruppen zu senden.

5. Ein Statusschlüssel für Standortansichten und Diagramme

Standortansichten färben Räume nach einem status-Schlüssel. Speichern Sie einen daraus abgeleiteten Wert aus der Temperatur:

Message type ─telemetry→ Switch (msg.payload.temperature nempty) → Calculate → Save telemetry
  • Calculate: target msg.payload.status, expr msg.payload.temperature > 8 ? 2 : (msg.payload.temperature > 6 ? 1 : 0).

Standortansichten zeigen 2 als kritisch und 1 als Warnung an. Als Zahl lässt sich status auch in Diagrammen darstellen und aggregieren. Siehe Standortansichten.

6. Einen Bereitschaftskontakt per E-Mail und SMS benachrichtigen, wenn ein Alarm geöffnet wird

Ein Flow (kein Root) auf dem IoT-Host:

Device message (types: alarm) → Switch (msg.metadata.alarm.transition) ─created→ Rate limit → Notify
  • Device message: Typen alarm (nach Namen anhaken), Profile: diejenigen, die Ihnen wichtig sind.
  • Switch: Eigenschaft msg.metadata.alarm.transition, Regel eq created.
  • Rate limit: n 5, per_ms 1 h, mode drop, key msg.topic (ein Limit für alle).
  • Notify: Empfänger address oncall@example.com, phone +905551112233 und role ADMIN (In-App und Push); Titel {{ msg.payload.title }}; Text Alarm on {{ msg.payload.deviceName }}: {{ msg.payload.title }} ({{ msg.payload.severity }}); urgency critical.

Rollen erreichen Mitglieder in der App, per Push und in Chat-Apps; nur Zeilen mit address und phone erhalten E-Mail und SMS. Siehe Alarm-, Befehls- und Benachrichtigungsbausteine.

7. Nachtmodus

Zwei Flows auf einem beliebigen Host schalten einen dritten Flow („Night actions“) um 22:00 ein und um 06:00 aus.

  • Flow A: Schedule (daily, 22:00, every day, tz Europe/Istanbul) → Enable or disable a flow (flow: Night actions, state enable).
  • Flow B: Schedule (daily, 06:00) → Enable or disable a flow (state disable).

Beide benötigen die eingetippte Bestätigung bei der Bereitstellung. Höchstens 6 Schaltvorgänge pro Minute und Organisation.

8. Eine Pumpe zwischen zwei Füllständen schalten

Starten Sie eine Füllpumpe unter 30 % und stoppen Sie sie über 80 %. Zwischen den beiden Werten wird nichts gesendet, sodass die Pumpe nicht ständig schaltet.

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: Eigenschaft msg.payload.level_pct, Regeln lt 30 (Name low) und gt 80 (Name high), stop_first an. Ein Datensatz ohne diesen Schlüssel geht an otherwise und wird ignoriert.
  • Jeder Not repeated: period 10 min, sodass der Befehl einmal gesendet und höchstens alle 10 Minuten wiederholt wird, solange der Füllstand außerhalb des Bereichs bleibt.
  • Send command: der Befehl pump.set des Profils mit params {"on": true} bzw. {"on": false}.

Befehle aus Flows sind auf 30 pro Minute und Gerät begrenzt, und eine verspätete Nachricht sendet nichts. Für bedienerseitige Steuerung mit Manuell- und Automatikmodus ist die Karte Rules oft das bessere Werkzeug: Siehe Rules-Karte: Aktionen.

9. Eine binäre Nutzlast dekodieren

Ein Gerät sendet 4 Byte: eine vorzeichenbehaftete Temperatur × 10 und eine vorzeichenlose Luftfeuchtigkeit. Sie kommt als raw (base64) an.

Switch (msg.payload.raw nempty) → Change → Base64 (decode) → Hex (encode) → Bytes (decode) → Save telemetry
  • Change: set msg.payload auf den Pfad msg.payload.raw.
  • Bytes-Felder: temperature offset 0 i16 scale 0.1; humidity offset 2 u16.

Siehe Datentransformationsbausteine.

10. Messwerte aus einem anderen System per Webhook übernehmen

Ein externes System sendet JSON an Hermetry, und der Flow leitet es weiter.

  • Webhook-Auslöser: auth hmac, parse json, reply accepted. Kopieren Sie die Adresse und das Geheimnis aus dem Dialog Webhooks.
  • Dann Switch auf msg.payload.type, Change zum Umformen und eine Aktion: Notify, Webhook, MQTT out oder Set variable.

Standardmäßig bezieht sich die Nachricht eines Webhooks auf die Organisation, nicht auf ein Gerät, daher lehnt Save telemetry sie ab. Um Gerätemesswerte aus einem anderen System einzuspeisen, lassen Sie sie als Gerät über MQTT oder die HTTP-API des Geräts senden. Siehe Geräte-HTTP-API.