node-red-contrib-chronos
Version:
Time-based Node-RED scheduling, repeating, queueing, routing, filtering and manipulating nodes
281 lines (275 loc) • 13.7 kB
HTML
<!--
Copyright (c) 2020 - 2025 Jens-Uwe Rossbach
This code is licensed under the MIT License.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-->
<script type="text/html" data-help-name="chronos-delay">
<p>
Verzögert eintreffende Nachrichten beim Durchlaufen des Knotens für eine
konfigurierbare Zeitspanne oder bis eine bestimmte Uhrzeit erreicht ist.
</p>
<h3>Details</h3>
<p>
Dieser Knoten puffert alle eintreffenden Nachrichten für eine konfigurierbare
(und optional zufällige) Zeitspanne oder bis eine bestimmte Uhrzeit erreicht
worden ist. Der Zeitpunkt kann entweder direkt eingegeben oder anhand von
Sonnen- oder Mondständen berechnet werden.
</p>
<p>
Sobald die Zeit verstrichen ist oder der Zielzeitpunkt erreicht wurde,
werden alle gepufferten Nachrichten an den Ausgabe-Port des Knotens geleitet.
</p>
<p>
Für weitere Informationen bitte die ausführliche Dokumentation im
<a href="https://github.com/jensrossbach/node-red-contrib-chronos/wiki/Delay-Until-Node">Repository-Wiki</a>
öffnen (nur in Englisch verfügbar).
</p>
<h3>Konfiguration</h3>
<dl>
<dt>Name</dt>
<dd>Der Name des Knotens (optional).</dd>
<dt>Konfiguration</dt>
<dd>
Ein Verweis auf den zu verwendenden Konfigurationsknoten.
</dd>
<dt>Verzög.-Art</dt>
<dd>
Die Art der Verzögerung kann wie folgt festgelegt werden:
<ul>
<li>
<i>Feste Dauer</i>: Die Verzögerung wird als feste
Zeitspanne konfiguriert.
</li>
<li>
<i>Zufällige Dauer</i>: Die Verzögerung wird als
Zeitspannenbereich konfiguriert, aus dem eine
zufällige Dauer gewählt wird.
</li>
<li>
<i>Zeitpunkt</i>: Die Verzögerung wird als Zeitpunkt
konfiguriert zu dem diese endet.
</li>
<li>
<i>Benutzerdefiniert</i>: Die Verzögerung wird als
benutzerdefinierter JSONata-Ausdruck spezifiziert
oder aus einer Kontextvariablen geladen.
</li>
<li>
<i>Unbegrenzt</i>: Die Verzögerung ist unbegenzt und
die gepufferten Nachrichten müssen explizit über eine
entsprechende Eingangsnachricht weitergeleitet werden.
</li>
</ul>
</dd>
<dt>Dauer</dt>
<dd>
Entweder die feste Zeitspanne in Millisekunden, Sekunden, Minuten,
Stunden oder Tagen, nach der gepufferte Nachrichten weitergeleitet
werden, oder ein Zeitspannenbereich in Millisekunden, Sekunden,
Minuten, Stunden oder Tagen. In letzterem Fall ist die Zeitspanne
ein Zufallswert innerhalb dieses Bereichs.
Wenn <i>Zufallswert immer in Millisekundenauflösung</i> aktiviert
ist, wird der Zufallswert immer Millisekundenauflösung haben,
unabhängig von der gewählten Zeiteinheit. Andernfalls richtet sich
die Auflösung des Zufallswerts nach der Zeiteinheit.
</dd>
<dt>Wann</dt>
<dd>
Der Zielzeitpunkt, zu dem gepufferte Nachrichten weitergeleitet
werden sollen. Abhängig von der Auswahl auf der linken Seite gibt
es folgende Möglichkeiten:
<ul>
<li>
<i>Uhrzeit</i>: Eine beliebige Uhrzeit kann direkt in der
Form <code>hh:mm[:ss] [am|pm]</code> eingegeben werden.
</li>
<li>
<i>Sonnenstand</i>: Der Sonnenstand kann aus einer Liste
vorgegebener Werte ausgewählt werden.
</li>
<li>
<i>Mondstand</i>: Der Mondstand kann aus einer Liste
vorgegebener Werte ausgewählt werden.
</li>
<li>
<i>Sonnenstand (benutzerdef.)</i>: Einer der Namen für benutzerdefinierte
Sonnenstände kann eingegeben werden.
</li>
</ul>
</dd>
<dt>Versatz</dt>
<dd>
Ein zeitlicher Versatz in Minuten zwischen -300 und +300 kann angegeben
werden. Der Versatz wird zur Zielzeit hinzuaddiert oder davon
abgezogen.
</dd>
<dt>Zufälligkeit</dt>
<dd>
Wird eine Zufälligkeit zwischen 1 und 300 Minuten angegeben, wird der
Versatz zufällig aus einem Bereich mit der angegebenen Breite gewählt.
Der Versatzwert stellt dabei die Mitte der Zufälligkeitsspanne da.
</dd>
<dt>Verzögerung</dt>
<dd>
Wenn <i>JSONata</i> ausgewählt wurde, ein JSONata-Ausdruck, der
einen Zeitwert für die Verzögerung zurückgeben muss. Der Zeitwert
kann eine Zahl sein, die entweder die Zeitspanne in Millisekunden
enthält oder die Anzahl Millisekunden seit Beginn der UNIX-Zeitzählung
als absoluten Zeitpunkt zu dem die Verzögerung endet. Letzteres
kann auch als Zeichenkette mit Datum und Uhrzeit zurückgegeben werden.
Im Fall von <i>Umgebungsvariable</i>, <i>global</i>, <i>flow</i>
oder <i>msg</i> wird die Verzögerung aus der angegebenen
Umgebungs-/Kontextvariablen bzw. Nachrichteneigenschaft geladen.
Siehe Abschnitt <i>Input</i> weiter unten für eine Beschreibung
des Variablenformats (Eigenschaften <code>fixedDuration</code>,
<code>randomDuration</code> und <code>when</code>).
</dd>
<dt>Warteschlange begrenzen</dt>
<dd>
Wenn aktiviert, kann die Nachrichten-Warteschlange auf eine
maximale Anzahl zu puffernde Nachrichten begrenzt werden.
</dd>
<dt>Beim Eintreffen einer Nachricht bei voller Warteschlange</dt>
<dd>
Gibt an, was passieren soll, wenn eine Nachricht eintrifft und
die Nachrichten-Warteschlange bereits die Obergrenze erreicht hat.
<ul>
<li>
<i>Eingehende Nachricht verwerfen</i>: Die eingehende
Nachricht wird verworfen.
</li>
<li>
<i>Älteste Nachricht verwerfen</i>: Die älteste Nachricht
in der Warteschlange wird verworfen und die eingehende
Nachricht wird gepuffert.
</li>
<li>
<i>Älteste Nachricht weiterleiten</i>: Die älteste
Nachricht in der Warteschlange wird weitergeleitet und
die eingehende Nachricht wird gepuffert.
</li>
</ul>
</dd>
<dt>Steuereigenschaften in Nachrichten beibehalten</dt>
<dd>
Wenn aktiviert, werden Steuereigenschaften, wie unten in Abschnitt
<i>Eingabe</i> beschrieben, nicht aus den Eingangsnachrichten gelöscht
und sind beim Senden an den Ausgabe-Port noch in den Nachrichten
vorhanden.
</dd>
<dt>Steuereigenschaften in Nachrichten ignorieren</dt>
<dd>
Wenn aktiviert, werden Steuereigenschaften, wie unten in Abschnitt
<i>Eingabe</i> beschrieben, ignoriert. Das ist sinnvoll falls
zu verzögernde Eingabenachrichten Eigenschaften mit denselben
Namen wie die Steuereigenschaften enthalten und verhindert somit
deren Fehlinterpretation.
</dd>
</dl>
<h3>Eingabe</h3>
<p>
Die Eingangsnachricht wird unverändert weitergereicht, kann jedoch auch
das Pufferverhalten des Knotens beeinflussen, wenn folgende Eigenschaften
vorhanden sind.
</p>
<dl class="message-properties">
<dt class="optional">drop<span class="property-type">any</span></dt>
<dd>
Wenn vorhanden, werden alle gepufferten Nachrichten verworfen, ohne
weitergeleitet zu werden.
</dd>
<dt class="optional">flush<span class="property-type">any</span></dt>
<dd>
Wenn vorhanden, werden alle gepufferten Nachrichten sofort
weitergeleitet.
</dd>
<dt class="optional">enqueue<span class="property-type">any</span></dt>
<dd>
Kann mit obigen beiden Eigenschaften kombiniert werden. Wenn
vorhanden, wird diese Nachricht gepuffert, nachdem alle vorherigen
Nachrichten verworfen/weitergeleitet wurden.
</dd>
<dt class="optional">fixedDuration<span class="property-type">object</span></dt>
<dd>
Überschreibt die feste Zeitspanne, nach der gepufferte Nachrichten
weitergeleitet werden sollen, siehe unten für weitere Informationen.
</dd>
<dt class="optional">randomDuration<span class="property-type">object</span></dt>
<dd>
Überschreibt die zufällige Zeitspanne, nach der gepufferte Nachrichten
weitergeleitet werden sollen, siehe unten für weitere Informationen.
</dd>
<dt class="optional">when<span class="property-type">object</span></dt>
<dd>
Überschreibt den Zielzeitpunkt, zu dem gepufferte Nachrichten
weitergeleitet werden sollen, siehe unten für weitere Informationen.
</dd>
</dl>
<p>
Wenn eine Eigenschaft mit dem Namen <code>fixedDuration</code> in der
Eingangsnachricht vorhanden ist, wird die feste Verzögerungszeitspanne für
alle momentan und zukünftig gepufferten Nachrichten überschrieben. Die
Eigenschaft muss den folgenden Inhalt haben:
</p>
<dl class="message-properties">
<dt>value<span class="property-type">number</span></dt>
<dd>The Zeitspanne der Verzögerung</dd>
<dt>unit<span class="property-type">string</span></dt>
<dd>Die Einheit der Verzögerungszeitspanne, entweder "milliseconds", "seconds", "minutes", "hours" oder "days"</dd>
</dl>
<p>
Wenn eine Eigenschaft mit dem Namen <code>randomDuration</code> in der
Eingangsnachricht vorhanden ist, wird die zufällige Verzögerungszeitspanne für
alle momentan und zukünftig gepufferten Nachrichten überschrieben. Die
Eigenschaft muss den folgenden Inhalt haben:
</p>
<dl class="message-properties">
<dt>value1<span class="property-type">number</span></dt>
<dd>Die untere Grenze des Zeitspannenbereichs</dd>
<dt>value2<span class="property-type">number</span></dt>
<dd>Die obere Grenze des Zeitspannenbereichs</dd>
<dt>unit<span class="property-type">string</span></dt>
<dd>Die Einheit des Zeitspannenbereichs, entweder "milliseconds", "seconds", "minutes", "hours" oder "days"</dd>
<dt class="optional">randomizerMillis<span class="property-type">boolean</span></dt>
<dd>Zufallswert immer in Millisekundenauflösung</dd>
</dl>
<p>
Wenn eine Eigenschaft mit dem Namen <code>when</code> in der Eingangsnachricht
vorhanden ist, wird der Zielzeitpunkt für alle momentan und zukünftig
gepufferten Nachrichten überschrieben. Die Eigenschaft muss den folgenden
Inhalt haben:
</p>
<dl class="message-properties">
<dt>type<span class="property-type">string</span></dt>
<dd>Art des Zielzeitpunkts; entweder "time", "sun", "moon" oder "custom"</dd>
<dt>value<span class="property-type">string | number</span></dt>
<dd>Zielzeitpunkt; der Inhalt ist abhängig von der Art des Zielzeitpunkts</dd>
<dt class="optional">offset<span class="property-type">number</span></dt>
<dd>Zeitlicher Versatz zum Zielzeitpunkt in Minuten</dd>
<dt class="optional">random<span class="property-type">number</span></dt>
<dd>Zufälligkeitsspanne des Zeitversatzes in Minuten</dd>
</dl>
<h3>Ausgaben</h3>
<p>
Abhängig von der Art der Verzögerung werden verzögerte Nachrichten zum
Ausgabe-Port gesendet, sobald die Dauer überschritten oder die
konfigurierte Zeit erreicht wurde und zusätzlich wenn eine Nachricht mit
der <code>flush</code> Eigenschaft empfangen wurde. Wird eine Nachricht
mit der <code>drop</code> Eigenschaft empfangen, werden alle Nachrichten
verworfen.
</p>
</script>