node-red-contrib-chronos
Version:
Time-based Node-RED scheduling, repeating, queueing, routing, filtering and manipulating nodes
311 lines (305 loc) • 15 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-repeat">
<p>
Wiederholt eintreffende Nachrichten beim Durchlaufen des Knotens auf
Grundlage eines konfigurierbaren Intervalls oder Cron-Zeitplans.
</p>
<h3>Details</h3>
<p>
Dieser Knoten leitet eine eintreffendende Nachricht weiter und schickt
diese anschließend periodisch anhand des konfigurierten Intervalls an den
Ausgabe-Port. Die Wiederholung ended wenn eine neue Nachricht empfangen
wird und optional zu einer bestimmten Zeit.
</p>
<p>
Für weitere Informationen bitte die ausführliche Dokumentation im
<a href="https://github.com/jensrossbach/node-red-contrib-chronos/wiki/Repeat-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>Modus</dt>
<dd>
Der Wiederholungsmodus, der entweder einfach (siehe "Intervall"
unten), erweitert (siehe "Cron-Tabelle" unten) oder
benutzerdefiniert (siehe "Ausdruck" unten) sein kann.
</dd>
<dt>Intervall</dt>
<dd>
Im einfachen Modus wird hier das Intervall zum Wiederholen der
Ausgabe-Nachrichten in Sekunden, Minuten oder Stunden angegeben.
</dd>
<dt>Cron-Tabelle</dt>
<dd>
Im erweiterten Modus wird hier ein Cron-Zeitplan angegeben, der der
<a href="https://github.com/jaclarke/cronosjs#supported-expression-syntax">CronosJS Ausdruckssyntax</a>
entsprechen muss.
</dd>
<dt>Iteration</dt>
<dd>
Im benutzerdefinierten Modus, wenn <i>JSONata</i> ausgewählt wurde,
wird hier ein JSONata-Ausdruck angegeben, der bei jeder Wiederholung
ausgewertet wird und einen Zeitwert zurückgeben muss. Der Zeitwert
kann entweder eine Zahl sein, die die Anzahl Millisekunden bis zur
nächsten Wiederholung oder die Anzahl Millisekunden seit Beginn der
UNIX-Zeitzählung als absoluten Zeitpunkt der nächsten Wiederholung
enthält. Oder es handelt sich um eine Zeichenkette mit einem Datum
und einer Uhrzeit, die den absoluten Zeitpunkt der nächsten Wiederholung
darstellt. Im Fall von <i>Umgebungsvariable</i>, <i>global</i>,
<i>flow</i> oder <i>msg</i> wird die Wiederholung aus der angegebenen
Umgebungs-/Kontextvariablen bzw. Nachrichteneigenschaft geladen. Siehe
Abschnitt <i>Input</i> weiter unten für eine Beschreibung des
Variablenformats (Eigenschaften <code>interval</code> und <code>crontab</code>).
</dd>
<dt>Bis</dt>
<dd>
Die Bedingung, wann das periodische Senden der Nachricht beendet werden
soll. Nachfolgende Nachrichten beenden die Wiederholung der vorherigen
Ausgabe-Nachrichten immer. Zusätzlich kann eine zeitbasierte oder
benutzerdefinierte Ende-Bedingung konfiguriert werden. Abhängig von der
Auswahl gibt es folgende Möglichkeiten:
<ul>
<li>
<i>Nächste Nachricht</i>: Die Wiederholung wird nur bei
Empfang einer neuen Nachricht beendet.
</li>
<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>
<li>
<i>JSONata</i>: Ein JSONata-Ausdruck, der entweder <code>false</code>
(Ende-Bedingung nicht erreicht) oder <code>true</code> (Ende-Bedingung
erreicht) ergibt, kann eingegeben werden. Der Zeitpunkt des nächsten
Sendens der Nachricht kann über die Variable <code>$next</code>
abgefragt werden.
</li>
<li>
<i>Umgebungsvariable</i>: Die Ende-Bedingung wird aus der
angegebenen Umgebungsvariablen geladen, siehe Abschnitt
<i>Eingabe</i> für weitere Informationen.
</li>
<li>
<i>global</i>: Die Ende-Bedingung wird aus der angegebenen
globalen Kontextvariablen geladen, siehe Abschnitt
<i>Eingabe</i> für weitere Informationen.
</li>
<li>
<i>flow</i>: Die Ende-Bedingung wird aus der angegebenen
Flow-Kontextvariablen geladen, siehe Abschnitt
<i>Eingabe</i> für weitere Informationen.
</li>
<li>
<i>msg</i>: Die Ende-Bedingung wird aus der angegebenen
Nachrichteneigenschaft geladen, siehe Abschnitt
<i>Eingabe</i> für weitere Informationen.
</li>
</ul>
</dd>
<dt>Datum</dt>
<dd>
Ein Datum für den Endzeitpunkt kann in der Form <code>JJJJ-MM-TT</code>
angegeben werden. Falls nicht angegeben, wird das Datum des Eintreffens
der Nachricht verwendet.
</dd>
<dt>Versatz</dt>
<dd>
Ein zeitlicher Versatz in Minuten zwischen -300 und +300 kann angegeben
werden. Der Versatz wird zur Endezeit 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>Beim Eintreffen einer Nachricht</dt>
<dd>
Bestimmt das Verhalten beim Eintreffen einer Nachricht.
<ul>
<li>
<i>Nichts machen</i>: Die Nachricht wird beim Eintreffen
nicht weitergeleitet, der nächste Versand der Nachricht
erfolgt nach Ablauf des ersten Intervalls (vorausgesetzt
die Ende-Bedingung wurde dann noch nicht erfüllt).
</li>
<li>
<i>Nachricht weiterleiten</i>: Die Nachricht wird sofort
weitergeleitet, vorausgesetzt die Endezeit wurde noch nicht
überschritten oder es wurde keine Endezeit angegeben.
</li>
<li>
<i>Nachricht immer weiterleiten</i>: Die Nachricht wird
sofort weitergeleitet, unabhängig davon ob die Endezeit
bereits überschritten wurde oder nicht.
</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 wiederholende 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 Verhalten des Knotens in Bezug auf diese Nachricht beeinflussen, wenn
folgende Eigenschaften vorhanden sind.
</p>
<dl class="message-properties">
<dt class="optional">stop<span class="property-type">any</span></dt>
<dd>
Wenn vorhanden, wird das periodische Senden der Nachricht sofort
beendet. Die Nachricht, die diese Eigenschaft enthält, wird verworfen.
</dd>
<dt class="optional">interval<span class="property-type">object</span></dt>
<dd>
Überschreibt das Intervall zum Wiederholen der Nachricht, siehe unten
für weitere Informationen.
</dd>
<dt class="optional">crontab<span class="property-type">string</span></dt>
<dd>
Überschreibt die Cron-Tabelle zum Wiederholen der Nachricht.
</dd>
<dt class="optional">until<span class="property-type">object</span></dt>
<dd>
Überschreibt die Bedingung, wann das periodische Senden der Nachricht
beendet werden soll, siehe unten für weitere Informationen.
</dd>
<dt class="optional">ingress<span class="property-type">string</span></dt>
<dd>
Überschreibt das Verhalten beim Eintreffen einer Nachricht. Mögliche
Werte sind "noop", "forward" und "forward:forced".
</dd>
</dl>
<p>
Wenn eine Eigenschaft mit dem Namen <code>interval</code> in der
Eingangsnachricht vorhanden ist, wird das Intervall zum Wiederholen der
Ausgabe-Nachrichten überschrieben. Die Eigenschaft muss den folgenden
Inhalt haben:
</p>
<dl class="message-properties">
<dt>value<span class="property-type">number</span></dt>
<dd>Die Dauer des Intervalls</dd>
<dt>unit<span class="property-type">string</span></dt>
<dd>Die Einheit der Intervalldauer, entweder "seconds", "minutes" oder "hours"</dd>
</dl>
<p>
Wenn eine Eigenschaft mit dem Namen <code>until</code> in der Eingangsnachricht
vorhanden ist, wird die Bedingung, wann das periodische Senden der Nachricht
beendet werden soll, überschrieben. Die Eigenschaft darf den Wert <code>null</code>
annehmen, in diesem Fall endet die Wiederholung nur beim Eintreffen einer neuen
Nachricht. Anderfalls muss die Eigenschaft den folgenden Inhalt haben:
</p>
<dl class="message-properties">
<dt>type<span class="property-type">string</span></dt>
<dd>Art des Endzeitpunkts; entweder "time", "sun", "moon" oder "custom"</dd>
<dt>value<span class="property-type">string | number</span></dt>
<dd>Endzeitpunkt; der Inhalt ist abhängig von der Art des Endzeitpunkts</dd>
<dt class="optional">date<span class="property-type">string</span></dt>
<dd>Datum des Endzeitpunkts in der Form <code>JJJJ-MM-TT</code></dd>
<dt class="optional">offset<span class="property-type">number</span></dt>
<dd>Zeitlicher Versatz zum Endzeitpunkt in Minuten</dd>
<dt class="optional">random<span class="property-type">number</span></dt>
<dd>Zufälligkeitsspanne des Zeitversatzes in Minuten</dd>
</dl>
<p>
Umgebungs- und Kontextvariablen für den Endzeitpunkt der periodischen
Nachrichtenwiederholung können als Zahlen, Zeichenketten oder Objekte
spezifiziert werden. Bei letzterem muss die Objektstruktur die gleiche
sein wie bei der Nachrichteneigenschaft <code>until</code> (siehe oben).
Zahlen und Zeichenketten können folgendes Format haben:
<ul>
<li>
Zahl (Zeitstempel)
<ul>
<li>
Anzahl Millisekunden seit Beginn der
UNIX-Zeitzählung (Weltzeit)
</li>
<li>
Anzahl Millisekunden seit Mitternacht,
(lokaler Zeit) wenn Wert kleiner als
86.400.000
</li>
</ul>
</li>
<li>
Zeichenkette
<ul>
<li>Uhrzeit im 12- oder 24-Stunden-Format</li>
<li>Sonnenstand</li>
<li>Mondstand</li>
<li>Benutzerdefinierter Sonnenstand</li>
<li>
Datum und Uhrzeit in Region-spezifischem
Format
</li>
<li>Datum und Uhrzeit in ISO 8601 Format</li>
<li>Datum und Sonnenstand</li>
<li>Datum und Mondstand</li>
<li>
Datum und benutzerdefinierter
Sonnenstand
</li>
</ul>
</li>
</ul>
</p>
<h3>Ausgaben</h3>
<p>
Nachrichten werden beim Eintreffen zum Ausgabe-Port weitergeleitet und
anschließend periodisch versendet, bis die nächste Nachricht eintrifft
oder eine Nachricht mit der Eigenschaft <code>stop</code> empfangen wird.
Falls konfiguriert, endet die Wiederholung der Ausgabe-Nachricht auch,
wenn der Endzeitpunkt erreicht wurde.
</p>
</script>