Einige Blöcke speichern frühere Nachrichten: eine Zählung, den vorherigen Wert, ein Fenster von Werten, den Zeitpunkt der letzten Nachricht. Diese Seite listet diese Blöcke auf und erklärt, wie sich ihr Speicher verhält, was beim Bereitstellen von Änderungen wichtig ist.
So funktioniert der Blockspeicher
| Regel | Detail |
|---|---|
| Ein Speicher pro Gerät | Sofern Sie key nicht setzen, behalten diese Blöcke einen eigenen Speicher pro Nachrichtenursprung: Jedes Gerät hat seine eigene Zählung, seinen eigenen vorherigen Wert bzw. seine eigene Überwachung. Setzen Sie key auf msg.topic oder einen anderen Pfad, um anders zu gruppieren. |
| Übersteht Neustarts | Speicher und wartende Nachrichten werden von der Plattform gehalten; ein Neustart oder ein Wechsel auf einen anderen Worker verliert sie nicht. Wartezeiten werden auf ihren ursprünglichen Fälligkeitszeitpunkt neu gesetzt. |
| Zurücksetzen bei Einstellungsänderung | Ein Block behält seinen Speicher bei einer Bereitstellung, wenn sich seine Einstellungen nicht geändert haben. Ein Block, dessen Einstellungen geändert wurden, startet mit einem leeren Speicher (Nachrichten, die er zurückhielt, bleiben erhalten). Ein entfernter Block oder einer, dessen Typ geändert wurde, verliert alles. |
| Bleibt beim Pausieren erhalten | Ein ausgeschalteter oder pausierter Flow behält den Speicher seiner Blöcke; ein gelöschter Flow verliert ihn. |
| Größe | Höchstens 10.000 Schlüssel pro Block; darüber hinaus wird der älteste Schlüssel vergessen. Zurückgehaltene Nachrichten zählen gegen 16 MiB pro Block. |
| Tests | Ein Test startet mit einem leeren Speicher oder mit einer schreibgeschützten Kopie des Live-Speichers, wenn Sie Start from the live state and context aktivieren. Ein Test verändert niemals den Live-Speicher. |
Also: Wenn Sie ein Fenster eines Statistics-Blocks ändern, beginnen seine Mittelwerte bei null; wenn Sie nur um ihn herum neu verdrahten, laufen sie weiter.
Counter
Zählt Nachrichten pro Schlüssel, über die gesamte Zeit oder innerhalb eines gleitenden Fensters, und fügt die Zählung der Nachricht hinzu.
| Einstellung | Bedeutung | Standard | Werte |
|---|---|---|---|
| n | Die Zählung, die eine Kopie an reached sendet; leer oder 0 = nie | leer | 0 oder mehr |
| window_ms | Nur so lange zählen; 0 = alle | 0 | 0 bis 7 Tage |
| reset_at_n | Bei Erreichen von n wieder bei 0 beginnen | off | on, off |
| key | Jeder Schlüssel hat eine eigene Zählung | msg.originator | ein Pfad |
| store | memory, oder persist (im persistenten Kontext des Flows gespeichert) | memory | memory, persist |
Ausgänge: out (jede Nachricht, mit msg.count), reached (eine Kopie, wenn die Zählung n oder mehr beträgt). msg.reset = true setzt die Zählung des Schlüssels auf 0. Ohne reset_at_n geht jede Nachricht ab der n-ten auch an reached.
Beispiel: „3 Türöffnungen innerhalb von 10 Minuten“: n 3, window_ms 10 min, reset_at_n on, reached → Raise alarm.
Delta
Die Differenz zwischen einer Zahl und der vorherigen Zahl desselben Schlüssels: Verbrauch eines Zählers, Impulse seit dem letzten Bericht.
| Einstellung | Bedeutung | Standard | Werte |
|---|---|---|---|
| input | Die Zahl | msg.payload | ein Pfad |
| output | Wohin die Differenz geschrieben wird | msg.payload.delta | ein Pfad |
| period | Wohin die Millisekunden seit dem vorherigen Wert geschrieben werden | none | ein Pfad |
| round | Nachkommastellen, zuerst angewendet | none | 0 bis 15 |
| on_negative | Ein Rückgang (Neustart des Zählers) | error | error (negative_delta), pass (mit seinem Vorzeichen geschrieben), zero |
| skip_zero | Eine Nulldifferenz unverändert weitergeben, ohne sie zu schreiben | off | on, off |
| key | Jeder Schlüssel hat seinen eigenen vorherigen Wert | msg.originator | ein Pfad |
| seed | Der vorherige Wert der ersten Nachricht | none (Delta 0) | none, latest (der gespeicherte neueste Wert des Geräts) |
| seed_key | Der gespeicherte Schlüssel, aus dem initialisiert wird (seed = latest) | bis zu 128 Zeichen | |
| ts_path | Wo die Zeit des Messwerts steht | die Aufzeichnungszeit | ein Pfad |
Ausgänge: out, other (kein Wert am Eingangspfad), error (not_a_number, negative_delta). Nach einem Rückgang wird der neue Wert in jedem Modus zur Basis. Delta liest pro Nachricht keine Datenbank, daher ist es der effiziente Weg, Verbrauch zu berechnen.
Statistics
Anzahl, Summe, Mittelwert, Minimum, Maximum, Standardabweichung, letzter Wert und Rate über die letzten Werte oder den letzten Zeitraum, pro Schlüssel.
| Einstellung | Bedeutung | Standard | Werte |
|---|---|---|---|
| property | Die Zahl | msg.payload | ein Pfad |
| window | count (die letzten size Werte) oder time (die letzten size ms) | count | count, time |
| size | Anzahl der Werte, oder das Fenster in ms | 10 | count: 1 bis 10.000; time: 1 ms bis 7 Tage |
| outputs | Welche Kennzahlen | count, avg, min, max | beliebige von count, sum, avg, min, max, stddev, last, rate |
| emit | each pro Nachricht, oder einmal pro vollem Fenster (end_of_window) | each | each, end_of_window |
| key | Jeder Schlüssel hat ein eigenes Fenster | msg.originator | ein Pfad |
msg.payload wird durch die Kennzahl (eine gewählte Ausgabe) oder ein Objekt mit Kennzahlen ersetzt. rate ist Werte pro Sekunde. Ein Zeitfenster hält höchstens 10.000 Werte. Nach dem Umstellen von window auf time setzen Sie size in Millisekunden: Der Standardwert 10 wären 10 ms. Fehler invalid_value „not a number“.
Beispiel: stündlicher Mittelwert, einmal pro Stunde gesendet: window time, size 3600000, outputs avg, emit end_of_window.
Watchdog
Meldet, wenn Nachrichten ausbleiben: Kommt innerhalb der Zeit keine Nachricht eines Schlüssels an, sendet er eine Timeout-Nachricht; kommen Nachrichten zurück, meldet er auch das.
| Einstellung | Bedeutung | Standard | Werte |
|---|---|---|---|
| ms | Wie lange ein Schlüssel still sein darf | 1 min | 100 ms bis 7 Tage |
| key | Jeder Schlüssel wird einzeln überwacht | msg.originator | ein Pfad |
| repeat | timeout alle ms erneut senden, solange es still bleibt | off | on, off |
Ausgänge:
timeout: eine neue Nachricht (ein neuer Lauf) mitmsg.payload= dem Schlüssel,msg.topicder letzten Nachricht,msg.timeout_msund dem Ursprung der letzten Nachricht, sodass Raise alarm damit funktioniert.ok: die erste Nachricht eines Schlüssels nach einem Timeout, unverändert.
Andere Nachrichten werden nicht weitergegeben. Die Überwachung eines Schlüssels beginnt mit seiner ersten Nachricht: Ein Gerät, das nie sendet, wird nicht bemerkt (dafür eine Regel für Offline-Alarme verwenden; siehe Offline-Alarme). Eine verspätete Nachricht (nach einem Ausfall) speist den Watchdog weder, noch löst sie ihn aus, sodass ein Stillstandsalarm nicht anhand alter Messwerte aufgehoben wird. Die Überwachung pro Gerät benötigt key mit dem Gerät: msg.originator (der Standard) oder msg.metadata.deviceId.
Start / Ende
Markiert Beginn und Ende eines Aktivitätszeitraums.
| Einstellung | Bedeutung | Standard | Werte |
|---|---|---|---|
| ms | Ruhezeit nach der letzten Nachricht, die den Zeitraum beendet | 1 min | 0 bis 7 Tage |
| key | Jeder Schlüssel hat einen eigenen Zeitraum | msg.originator | ein Pfad |
Ausgänge: start (eine Kopie der ersten Nachricht eines Zeitraums, sofort), end (die letzte Nachricht, ms nachdem sie eingegangen ist). Nachrichten dazwischen werden nicht weitergegeben.
Variablen als Speicher
Für Werte, die mehrere Blöcke oder Flows teilen, schreiben Sie Variablen mit Set variable oder Change und lesen sie über Pfade:
| Speicher | Geltungsbereich | Grenze |
|---|---|---|
flow.x | Dieser Flow | 1 MiB pro Flow |
global.x | Jeder Flow der Organisation | 4 MiB pro Organisation |
flow.persist:x, global.persist:x | Der persistente Speicher desselben Geltungsbereichs | innerhalb derselben Grenzen |
Ein Schreibvorgang über einer Grenze schlägt mit limit fehl und behält den alten Wert. Der Reiter Data unter Activity > im Editor zeigt die Werte und wie voll die Speicher sind. Siehe Action-Blöcke.
Timer
Für „wenn nichts es innerhalb von 10 Minuten abbricht, dann tue dies“ flowübergreifend verwenden Sie den Action-Block Timer mit einem Trigger Named timer. Siehe Action-Blöcke und Trigger-Blöcke.

