UNPKG

node-red-contrib-chronos

Version:

Time-based Node-RED scheduling, repeating, queueing, routing, filtering and manipulating nodes

311 lines (305 loc) 15 kB
<!-- 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>