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

Routing- und Timing-Bausteine

Referenz zu Switch, Gate, All of, Any of, Not, Split, Join, Sort, Batch, Delay, Debounce, Deduplicate, Rate limit, Only changes, Trigger, Detach und Link call.

Diese Bausteine entscheiden, wohin eine Nachricht geht und wann. Bausteine, die Nachrichten warten lassen oder zurückhalten, speichern sie dauerhaft: Ein Neustart der Plattform verwirft sie nicht. Sofern kein Schlüssel gesetzt ist, behalten Bausteine, die sich pro Schlüssel etwas merken, je einen Speicher pro Gerät (den Originator der Nachricht). Jeder Baustein verwaltet höchstens 10.000 Schlüssel und hält höchstens 16 MiB Nachrichten.

Switch

Leitet eine Nachricht anhand des Werts einer Eigenschaft weiter. Jede Regel hat einen eigenen Ausgang.

EinstellungBedeutungStandardWerte
propertyDer Wert, den die Regeln prüfenmsg.payloadein Pfad
rulesEine Zeile und ein Ausgang je Regel: op, value (und value2 für between), optional Namekeinerbis zu 16 Regeln
stop_firstNur an die erste passende Regel sendenonon, off

Outputs: o0 … o15 (one per rule, labelled with the rule’s Name if set), else (shown as „otherwise“), error. Operators are those of Compare, plus between (from value to value2, both included) and expr (the rule’s own expression is true). With stop_first off, every matching rule gets the message.

Gate

Lässt Nachrichten durch, solange offen; hält sie zurück oder verwirft sie, solange geschlossen.

EinstellungBedeutungStandardWerte
initialZustand beim Start des Flowsopenopen, closed
control_topicTopic der Steuernachrichten; leer = keinesgatebis zu 64 Zeichen
conditionOptionaler Ausdruck: offen nur, solange wahrleerein Ausdruck
closedEine Nachricht im geschlossenen Zustanddropdrop, queue
max_queueAnzahl der Nachrichten, die beim Warten gespeichert werden32bis 1.000

Steuernachrichten haben msg.topic gleich dem Steuer-Topic und msg.payload open (oder true, 1, on), close (oder false, 0, off), toggle oder status; sie werden nicht weitergeleitet. Ausgänge: out, dropped (verworfen im geschlossenen Zustand oder aus einer vollen Warteschlange verdrängt), error. Beispiel für eine Bedingung für Arbeitszeiten: number(fmt_time(now(), "%H")) >= 8 && number(fmt_time(now(), "%H")) < 18.

Alle von

Wartet, bis Nachrichten mit unterschiedlichen Schlüsseln (standardmäßig unterschiedlichen Topics) innerhalb eines Zeitfensters alle eingetroffen sind, und sendet dann eine Nachricht mit allen ihren Payloads.

EinstellungBedeutungStandardWerte
window_msAlle Nachrichten müssen jünger als dieser Wert sein; 0 = keine Begrenzung10 s0 bis 24 h
keyWoher der Schlüssel gelesen wirdmsg.topicein Pfad
min_inputsWie viele verschiedene Schlüssel benötigt werden22 bis 16

Ausgang out: die abschließende Nachricht mit msg.payload = { key: payload, … }. Nur die abschließende Nachricht wird ausgegeben. Was sie sammelt, wird standardmäßig pro Gerät gespeichert (group_by: Originator oder Flow).

Beliebige von

Lässt jede Nachricht passieren; optional werden Wiederholungen eines Schlüssels verworfen.

EinstellungBedeutungStandardWerte
dedup_msEine Nachricht verwerfen, deren Schlüssel vor weniger als dieser Zeit durchgelaufen ist; 0 = alle durchlassen00 bis 24 h
keyDer Schlüssel für die Wiederholungsprüfungmsg.topicein Pfad

Nicht

Ersetzt msg.payload durch sein logisches Gegenteil, true oder false. false, null, 0, "" und Nicht-Zahl werden zu true; alles andere (auch "0", "false", [], {}) wird zu false. Keine Einstellungen.

Split

Eine Nachricht pro Teil von msg.payload: pro Array-Element, pro Objektschlüssel, pro Textzeile oder pro Block fester Größe.

EinstellungBedeutungStandardWerte
modeauto (Element, Schlüssel oder Trennzeichen) oder length (Blöcke)autoauto, length
delimiterWo der Text geteilt wird; \n Zeilenumbruch, \t Tabulator\nbis zu 16 Zeichen
lengthBlockgröße in Elementen oder Zeichen11 bis 65.536

Jeder Teil trägt msg.parts (id, index, count, type, key …) für Join. Fehler queue_full ab 10.000 Teilen.

Join

Sammelt Nachrichten zu einer einzigen.

EinstellungBedeutungStandardWerte
modeauto fügt zusammen, was Split zerteilt hat; manual baut aus beliebigen Nachrichtenautoauto, manual
buildWas gebaut werden soll (manuell)arrayarray, object, string
joinerZwischen den Textteilen\nbis zu 16 Zeichen
keyObjektschlüssel jeder Nachrichtmsg.topicein Pfad
countNach so vielen Nachrichten senden; 0 = keine Zählung00 bis 10.000
timeout_msSenden, was so lange nach der ersten Nachricht eingetroffen ist; 0 = warten00 bis 24 h

msg.complete (beliebiger Wert) sendet eine manuelle Gruppe sofort. Im manuellen Modus count, timeout_ms oder msg.complete setzen, sonst wird die Gruppe erst bei der Obergrenze von 10.000 Nachrichten ausgegeben.

Sort

Sorts a list (array mode: property, optional field) or the messages of a group made by Split or Batch (messages mode: key, timeout_ms). Settings: order asc/desc, numeric on/off (without it, "10" sorts before "9"). Error queue_full over 10,000 elements.

Batch

Sendet Nachrichten gruppenweise weiter.

EinstellungBedeutungStandardWerte
modeNach Anzahl oder nach Zeitcountcount, interval
countNachrichten in einer Gruppe101 bis 10.000
overlapNachrichten der letzten Gruppe werden mit der nächsten erneut gesendet00 bis count − 1
interval_msZeit von der ersten wartenden Nachricht, bis die Gruppe ausgegeben wird1 s1 ms bis 24 h

Jede Nachricht einer Gruppe erhält msg.parts; ein Join im Modus auto macht daraus dann eine Liste.

Delay

Hält jede Nachricht zurück und sendet sie dann unverändert weiter.

EinstellungBedeutungStandardWerte
msWartezeit1 s0 bis 7 Tage
ms2Obere Grenze einer zufälligen Wartezeitleer0 bis 7 Tage
from_msgDie Wartezeit aus msg.delay übernehmenoffon, off
max_pendingGleichzeitig wartende Nachrichten1,0001 bis 100.000
on_newqueue: jede wartet ihre eigene Zeit; restart: eine neue Nachricht verwirft die wartenden Nachrichten ihres Schlüsselsqueuequeue, restart
keySchlüssel für restartmsg.originatorein Pfad

msg.reset = true verwirft alle wartenden Nachrichten. Fehler queue_full, wenn max_pending erreicht ist.

Debounce

Eine Nachricht pro Schwall.

EinstellungBedeutungStandardWerte
msRuhezeit, die einen Schwall beendet500 ms0 bis 24 h
edgetrailing: die letzte Nachricht nach der Ruhezeit; leading: die erste soforttrailingtrailing, leading
keyJeder Schlüssel wird separat entprelltmsg.originatorein Pfad

Deduplizieren

Eine Nachricht pro Zeitraum und Schlüssel, egal wie viele eintreffen.

EinstellungBedeutungStandardWerte
strategyfirst, last oder all (eine Nachricht, deren Payload jedes { payload, metadata } auflistet)firstfirst, last, all
window_ms (Period)Beginnt mit der ersten Nachricht eines Schlüssels60 s1 s bis 24 h
keyEin Paket pro Wertmsg.originatorein Pfad
timemessage (die eigene Zeit des Messwerts, aus ts_path oder der Aufzeichnungszeit) oder arrivalmessagemessage, arrival
ts_pathWo die Zeit des Messwerts steht (time = message)die Aufzeichnungszeitein Pfad
max_pendingGespeicherte Nachrichten pro Schlüssel für all1001 bis 1.000
msg_typeNachrichtentyp des all-Ergebnissesder Nachrichtentyp der ersten Nachrichtbis zu 64 Zeichen

Das Ergebnis trägt msg.metadata.dedup mit count, start und end. Bei Time message ergibt ein nachgeholter Rückstau ein Ergebnis pro Zeitraum der Gerätezeit.

Ratenbegrenzung

Höchstens n Nachrichten pro Zeitraum und Schlüssel.

EinstellungBedeutungStandardWerte
nNachrichten pro Zeitraum11 bis 10.000
per_msDer gleitende Zeitraum1 s1 ms bis 24 h
modeBei Überschreitung: drop, latest (nur die neueste behalten), queuedropdrop, latest, queue
max_queueWartende Nachrichten pro Schlüssel321 bis 1.000
keyJeder Schlüssel hat eine eigene Begrenzungmsg.originatorein Pfad

Ausgänge: out, dropped. Vor einem SMS-, E-Mail- oder externen Aufruf einsetzen.

Nur Änderungen

Leitet eine Nachricht nur weiter, wenn sich ihr Wert seit der letzten weitergeleiteten geändert hat.

EinstellungBedeutungStandardWerte
propertyDer Wertmsg.payloadein Pfad
modechange, deadband (um mindestens value), deadband_pct (um mindestens value % des letzten Werts)change
valueDas Totband00 oder mehr
keyJeder key hat seinen eigenen letzten Wertmsg.originatorein Pfad
firstDen ersten Wert eines key durchlassenonon, off

Der neue Wert wird mit dem letzten Wert verglichen, der durchgelassen wurde, sodass langsame Drift gemeldet wird, sobald sie sich summiert.

Trigger

Sendet eine erste Nachricht, wartet und sendet dann eine zweite.

EinstellungBedeutungStandardWerte
firstSofort gesendet: die Nachricht selbst, nichts oder ein Wert für msg.payloadthe message
thenNach der Wartezeit gesendet: nichts, die Nachricht oder ein Wertnothing
msWait1 s0 bis 7 Tage
extendEine neue Nachricht während der Wartezeit startet die Wartezeit neuoffon, off
keyJeder key hat seine eigene Wartezeitmsg.originatorein Pfad

msg.reset = true bricht die Wartezeit dieses key ab.

Detach

Der restliche Zweig läuft separat, sodass die nächste Nachricht des Geräts nicht auf ihn wartet. Vor einem langsamen Zweig verwenden. Danach ist die Reihenfolge der Nachrichten nicht garantiert. Keine Einstellungen.

Sendet die Nachricht an einen Link in (oder mit flow:<slug> an den Flow input eines anderen Flows) und wartet auf die Antwort von einem Link out im Modus return.

EinstellungBedeutungStandardWerte
targetDer Name des Link inerforderlich
timeout_msAuf die Antwort warten30 s1 ms bis 1 h
returnsBenannte Rückgaben des Ziels; jede wird zu einem Ausgangnone

Ausgänge: out (die Antwort), einer pro benannter Rückgabe, timeout (keine Antwort rechtzeitig; die ursprüngliche Nachricht), error (invalid_value kein solcher Link, queue_full, unknown_return, loop). Aufrufe sind höchstens 16 Ebenen tief verschachtelt; ein Aufruf in den eigenen Aufrufstapel schlägt mit loop fehl.