Aktionsblöcke tun etwas: Sie rufen ein anderes System auf, veröffentlichen eine Nachricht, speichern eine Variable, starten einen Timer, übergeben die Nachricht an einen anderen Flow oder schreiben eine Logzeile. Die Aktionen für Geräte, Alarme und Benachrichtigungen stehen auf eigenen Seiten: IoT-Datenblöcke und Alarm-, Befehls- und Benachrichtigungsblöcke.
Gemeinsames Verhalten ausgehender Blöcke
HTTP request, MQTT out und Webhook folgen diesen Regeln:
| Thema | Verhalten |
|---|---|
| Risiko | External: Ein Deployment, das einen solchen Block enthält, verlangt eine Bestätigung |
| Wiederholungen | Nur vorübergehende Fehler werden wiederholt; standardmäßig 3 Versuche (retry_*-Einstellungen), höchstens 5, mit exponentiellem Backoff ab 1 s |
| Idempotenz | Jeder Versuch einer Nachricht trägt denselben Schlüssel (X-Idempotency-Key oder die MQTT-5-Benutzereigenschaft idempotency-key), auch nach einem Absturz oder einem Replay, damit ein Empfänger Duplikate erkennen kann |
| Zustellung | Mindestens einmal |
| Schutzschalter | Ein Block, dessen Aufrufe immer wieder fehlschlagen, pausiert seine Aufrufe für eine Weile (circuit_open) |
| Verspätete Nachrichten | late: skip (Standard; die Nachricht endet und wird als Too old gezählt) oder send (ein Datenfeed, der nach einem Ausfall auch den Rückstau erhalten muss) |
| Tests | Ein Testlauf sendet nichts und meldet, was er gesendet hätte |
| Reihenfolge | Aufrufe von HTTP request und MQTT out laufen getrennt von dem Lauf, der sie ausgelöst hat: Die nächste Nachricht des Geräts wartet nicht auf die Antwort, und die Reihenfolge der Nachrichten nach dem Aufruf ist nicht garantiert |
| Adressen | Private und interne Adressen werden abgelehnt (ssrf_blocked) |
HTTP request
Ruft einen HTTP-Endpunkt auf und legt die Antwort in die Nachricht. Schema, Host, Port, Authentifizierung und TLS kommen nur aus der endpoint-Verbindung, nie aus der Nachricht. Siehe Verbindungen und Geheimnisse.
| Einstellung | Bedeutung | Standard | Werte |
|---|---|---|---|
| endpoint | Die HTTP-Endpunkt-Verbindung | erforderlich | |
| host | Ein anderer Host, den der Endpunkt erlaubt | leer | eine Vorlage; muss mit den erlaubten Hosts des Endpunkts übereinstimmen |
| method | HTTP-Methode | GET | GET, POST, PUT, PATCH, DELETE, HEAD |
| path | Wird an den Basispfad des Endpunkts angehängt | leer | eine Vorlage, 1.024 Zeichen |
| query | Abfrageparameter | keine | bis zu 16 Zeilen |
| headers | Zusätzliche Header | keine | bis zu 16 Zeilen; Host, Authorization, Cookie, Proxy-*, Content-Length, X-Idempotency-Key und Hop-by-Hop-Header werden abgelehnt |
| body | Was gesendet wird | payload | payload, template, none (ausgeblendet bei GET, HEAD, DELETE) |
| template | Die Body-Vorlage | leer | bis zu 4.096 Zeichen |
| template_format | Wie {{ }}-Werte geschrieben werden | text | text, json (jeder Wert als JSON-Wert; der Body muss JSON sein) |
| timeout_ms | Zeit pro Versuch | 10,000 | 1.000 bis 30.000 |
| parse | Wie die Antwort gelesen wird | auto | auto, json, text |
| max_bytes | Größte Antwort | 64 KiB | 1 bis 256 KiB |
| response_headers | Antwort-Header, die in msg.metadata.headers behalten werden | all | all, list, none (höchstens 32 Header, 8 KiB) |
| max_parallel | Gleichzeitige Aufrufe für diesen Block | 0 (keine Begrenzung) | 0 bis 64 |
| inline | Den Aufruf im Lauf belassen, sodass die nächste Nachricht des Geräts auf die Antwort wartet (das Deployment warnt) | off | on, off |
| retry_* | Versuche und Backoff | 3, ab 1 s | |
| late | Siehe oben | skip | skip, send |
Ausgänge:
out: Status unter 400.msg.payloadist der Body, außerdemmsg.statusCode,msg.contentType,msg.metadata.headers. Weiterleitungen werden nicht verfolgt.error:http_status(400 oder höher, Body inmsg.payload),timeout,connect,tls,ssrf_blocked,too_large,invalid_json,invalid_value,oauth_failed,function_error,circuit_open,limit.msg.error.attemptsgibt an, wie viele Versuche unternommen wurden.
Wiederholt werden: Timeouts, Verbindungsfehler sowie HTTP 408, 425, 429 (unter Beachtung von Retry-After), 500, 502, 503, 504.
Für einen aus Werten aufgebauten JSON-Body verwenden Sie template_format: json und lassen die Platzhalter ohne Anführungszeichen: {"name": {{ msg.payload.name }}, "n": {{ msg.payload.n }}}.
HTTP response
Antwortet dem Aufrufer eines synchronen Webhook-Triggers (reply: response). Die erste Antwort eines Laufs gewinnt.
| Einstellung | Bedeutung | Standard | Werte |
|---|---|---|---|
| status | HTTP-Status (msg.statusCode überschreibt ihn) | 200 | 100 bis 599 |
| headers | Antwort-Header | keine | content-type, cache-control, location (3xx), x-* (nicht x-forwarded-*) |
| body | Was gesendet wird | payload | payload, template, none |
| template | Body-Vorlage | leer | bis zu 4.096 Zeichen |
| max_bytes | Größter Body | 256 KiB | höchstens 256 KiB |
Fehler: no_reply_pending, reply_sent, limit. Ohne Antwort erhält der Aufrufer 204; nach dem Timeout des Hooks 504.
MQTT out
Veröffentlicht die Payload auf einem Topic Ihres Brokers und gibt die Nachricht dann weiter. Text wird als Text gesendet, alles andere als JSON.
| Einstellung | Bedeutung | Standard | Werte |
|---|---|---|---|
| broker | Die MQTT-Broker-Verbindung | erforderlich | |
| topic | Das Topic | {{ msg.topic }} | eine Vorlage, 256 Zeichen; ein führendes ~/ ist das Topic-Präfix des Brokers |
| qos | Zustellgarantie | 0 | 0, 1, 2 |
| retain | Den Broker bitten, die Nachricht zu behalten | off | on, off |
| timeout_ms | Zeit für die Bestätigung | 10,000 | 1.000 bis 30.000 |
| max_parallel | Gleichzeitig laufende Veröffentlichungen | 0 (keine Begrenzung) | 0 bis 64 |
| retry_*, late | Wie oben |
Fehler: bad_topic (leer, + oder #, oder ~/ ohne Präfix), timeout, connect, auth, ssrf_blocked, node_not_ready, not_configured, circuit_open, limit. Nur Timeouts und Verbindungsfehler werden wiederholt.
Webhook
Sendet die Nachricht an einen Webhook-Endpunkt Ihrer Organisation: signiert, wiederholt und in den Zustellungen des Endpunkts aufgelistet. Dies ist der Pfad mit garantierter Zustellung.
| Einstellung | Bedeutung | Standard | Werte |
|---|---|---|---|
| endpoint | Der Endpunkt | erforderlich | aktive Endpunkte, die Automation message abonniert haben |
| topic | Wird als topic gesendet | {{ msg.topic }} | eine Vorlage, 256 Zeichen |
| body | Was neben dem Topic gesendet wird | payload | payload, payload and metadata |
| metadata_keys | Gesendete Metadatenschlüssel | keine | höchstens 20 |
| late | Siehe oben | skip | skip, send |
Der Empfänger erhält das Ereignis automation.message mit topic, payload, originator, flowId, flowVersion, nodeId, actor und den aufgelisteten Metadaten. out enthält msg.metadata.webhook.deliveryId, sobald die Nachricht in der Warteschlange steht. Fehler: endpoint_not_found, endpoint_inactive, enqueue_failed, not_configured, node_not_ready, circuit_open, limit (Webhooks nicht in Ihrem Tarif enthalten). Siehe Webhooks.
Ereignis senden
Sendet ein Ereignis, das Event-Trigger mit der Quelle flow empfangen, in jedem Flow.
| Einstellung | Bedeutung | Standard | Werte |
|---|---|---|---|
| kind | Der Name des Ereignisses | erforderlich | ein Kleinbuchstabe zuerst, danach Kleinbuchstaben, Ziffern, _ und .; bis zu 32 Zeichen |
| data | Was es enthält | msg.payload | jeder Wertetyp; ein Nicht-Objekt wird als { "value": … } verpackt |
Empfänger erhalten msg.payload = die Daten und msg.topic flow/<kind>. Fehler: rate_limited, invalid_value (ein ungültiger Typ oder „emit: depth“: der fünfte Schritt einer Kette). Ein Deployment lehnt eine erkennbare Schleife ab (flow_cycle). Eine verspätete Nachricht sendet kein Ereignis.
Variable setzen
Speichert einen Wert in einer Flow- oder globalen Variable.
| Einstellung | Bedeutung | Werte |
|---|---|---|
| path | Die Variable | flow.<name> oder global.<name>, tiefere Schlüssel erlaubt; flow.persist:<name> für den persistenten Speicher |
| value | Was gespeichert wird | jeder Wertetyp; nichts (null) entfernt ihn |
Fehler: invalid_value, limit (Speicher voll; der alte Wert bleibt erhalten). Grenzen: 1 MiB pro Flow, 4 MiB für globale Variablen. Im Test wird die eigene Kopie des Tests geschrieben.
Timer
Startet, startet neu oder bricht einen benannten Timer ab. Wenn er abläuft, werden alle Named timer-Trigger mit diesem Namen ausgelöst.
| Einstellung | Bedeutung | Standard | Werte |
|---|---|---|---|
| name | Der Timer, von allen Flows gemeinsam genutzt | erforderlich | |
| op | Starten (neu) oder abbrechen | start | start, cancel |
| ms | Dauer (msg.ms überschreibt sie) | 1 min | 0 bis 7 Tage |
Das Starten eines laufenden Timers setzt ihn auf null zurück: das Watchdog-Muster. Fehler queue_full „too many timers“: Die Organisation hält 64 Timer mit 60 s oder weniger oder 10.000 längere. Eine verspätete Nachricht startet oder bricht nichts ab.
Flow aktivieren oder deaktivieren
Schaltet einen anderen Flow ein oder aus, wie den Schalter in der Flow-Liste.
| Einstellung | Bedeutung | Standard | Werte |
|---|---|---|---|
| flow | Der Flow | erforderlich | ein bereitgestellter Flow der Organisation, nicht dieser |
| state | Aktivieren oder deaktivieren | enable | enable, disable |
out enthält msg.metadata.flow_enable { flow, enabled, changed }. Fehler: not_configured, self_reference, not_found, not_approved, conflict, invalid, limit (mehr als 6 Schaltvorgänge pro Minute). Das Bereitstellen eines Flows mit diesem Block erfordert die getippte Bestätigung.
Flow ausführen
Übergibt die Nachricht an den Flow input eines anderen Flows und beendet diesen Zweig.
| Einstellung | Bedeutung | Werte |
|---|---|---|
| flow | Der auszuführende Flow | ein anderer Flow desselben Hosts; niemals ein Root-Flow |
Kein out-Port; es kommt nichts zurück. Fehler: not_configured, invalid_value (fehlt, deaktiviert oder gestoppt), forbidden (ein Root), loop (fünfter Sprung). Ein Flow, den andere Flows ausführen, kann erst gelöscht werden, wenn diese Blöcke entfernt sind. Die Nachricht behält ihr Gerät, sodass Save telemetry im Ziel-Flow funktioniert.
Link out
Übergibt die Nachricht nach Name an Link in-Blöcke oder gibt die Antwort an einen Link call zurück.
| Einstellung | Bedeutung | Standard | Werte |
|---|---|---|---|
| mode | link (zu Link-in-Blöcken) oder return (Antwort an den Aufrufer) | link | link, return |
| targets | Link-in-Namen (Modus link) | leer | bis zu 16 |
| name | Der Name der Rückgabe (Modus return) | out | eine Rückgabe, die der Aufrufer deklariert |
Kein out-Port. Ein fehlendes Ziel ist im Debug-Panel eine Warnung, kein Fehler. Ein Deploy lehnt unbekannte Namen und Schleifen ohne wartenden Block ab (cycle_sync).
Systemprotokoll
Schreibt eine Zeile in das Protokoll des Flows (Activity > Events > Log, 24 Stunden gespeichert).
| Einstellung | Bedeutung | Standard | Werte |
|---|---|---|---|
| text | Die Zeile, mit {{ }}-Platzhaltern | {{ msg.payload }} | bis zu 512 Zeichen |
| level | Priorität | info | info, notice, warn, err |
Debug
Zeigt die Nachrichten, die es erreichen, im Tab Activity > Debug des Editors an. Kein out-Port.
| Einstellung | Bedeutung | Standard | Werte |
|---|---|---|---|
| property | Was angezeigt wird | msg.payload | msg (die ganze Nachricht) oder ein Pfad |
| active | Nachrichten überhaupt anzeigen | on | on, off |
Debug-Einträge werden 24 Stunden gespeichert und sind für Personen sichtbar, die debuggen dürfen. Der Schalter am Block schaltet sie ohne Speichern ein und aus.
In eine externe Zeitreihendatenbank schreiben
Ein Block schreibt pro Nachricht einen Messpunkt in einen externen Zeitreihendatenbank-Server, den Sie selbst betreiben, über eine Datenbankserver-Verbindung. Einstellungen: der Server, der Bucket oder die Datenbank, die Measurement, bis zu 16 Tags, 1 bis 32 Felder (mit einem Typ: auto, float, int, string, bool), die Zeit (Standard: die Zeit des ersten Versuchs, bei jedem Wiederholversuch gleich), timeout_ms (1.000 bis 30.000), Wiederholungen und late. out enthält msg.metadata mit dem geschriebenen Measurement, den Feldern und Tags. Für eine allgemeine Integration ist der HTTP request-Block zu Ihrer eigenen API oft einfacher.

