UNPKG

node-red-contrib-chronos

Version:

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

535 lines (529 loc) 26 kB
<!-- Copyright (c) 2020 - 2026 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-switch"> <p> Leitet Nachrichten anhand eines bestimmten Zeitpunkts oder einer bestimmten Zeitspanne an unterschiedliche Ausgabe-Ports. </p> <h3>Details</h3> <p> Dieser Knoten leitet eingehende Nachrichten anhand des Zeitpunkts beim Eintreffen oder eines Zeitstempels aus einer Nachrichteneigenschaft, einer globalen Variable oder einer Flow-Variable an davon abhängige Ausgabe-Ports um. Alternativ können Zeitspannen basierend auf einer bestimmten Zeitreferenz verglichen werden. </p> <p> Für weitere Informationen bitte die ausführliche Dokumentation im <a href="https://github.com/jensrossbach/node-red-contrib-chronos/wiki/Time-Switch-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>Referenz</dt> <dd> Die Zeitreferenz für die Basiszeit (siehe unten). Der Knoten befindet sich im Zeitpunktmodus, wenn <i>Absolute Zeit</i> ausgewählt wird und alle Bedingungen werden mit der absoluten Basiszeit verglichen. Ansonsten befindet sich der Knoten im Zeitspannenmodus und alle Bedinungen werden mit der Zeitspanne zwischen Referenzzeit und Basiszeit (Basiszeitspanne) verglichen. Für die Referenzzeit des Zeitspannenmodus gibt es folgende Möglichkeiten: <ul> <li> <i>Uhrzeit</i>: Eine beliebige Uhrzeit kann direkt im 12- oder 24-Stunden-Format eingegeben werden. Optional ist die Eingabe eines Datums und einer Zeit in Region-spezifischem oder ISO 8601 Format möglich. </li> <li> <i>Sonnenstand</i>: Der Sonnenstand kann aus einer Liste vorgegebener Werte ausgewählt werden. Wenn mit der Maus über den Button gefahren wird, wird eine Vorschau der Zeit angezeigt. </li> <li> <i>Mondstand</i>: Der Mondstand kann aus einer Liste vorgegebener Werte ausgewählt werden. Wenn mit der Maus über den Button gefahren wird, wird eine Vorschau der Zeit angezeigt. </li> <li> <i>Sonnenstand (benutzerdef.)</i>: Einer der Namen für benutzerdefinierte Sonnenstände kann eingegeben werden. </li> <li> <i>Umgebungsvariable</i>, <i>global</i>, <i>flow</i>, <i>msg</i>: Die Zeit wird aus einer Umgebungs- oder Kontextvariablen oder einer Nachrichteneigenschaft gelesen. Die Variablen/Eigenschaften 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 im ISO 8601 Format</li> <li>Datum und Sonnenstand</li> <li>Datum und Mondstand</li> <li> Datum und benutzerdefinierter Sonnenstand </li> </ul> </li> </ul> </li> </ul> </dd> <dt>Basiszeit</dt> <dd> Die Basiszeit wird für den Vergleich mit den Operanden der Bedingungen verwendet. Folgende Möglichkeiten gibt es: <ul> <li> <i>Nachrichteneingang</i>: Zeitpunkt des Eintreffens der Nachricht. </li> <li> <i>global</i>, <i>flow</i>, <i>msg</i>: Zeit aus einer Kontextvariablen or einer Nachrichteneigenschaft. Die Variablen/Eigenschaften 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> Datum und Uhrzeit in Region-spezifischem Format </li> <li>Datum und Uhrzeit im ISO 8601 Format</li> </ul> </li> </ul> </li> </ul> </dd> <dt>Bedingungen</dt> <dd> <p> Liste der Bedingungen zum Umleiten der Nachrichten. Neue Einträge können über den Button unterhalb der Liste hinzugefügt werden. Vorhandene Einträge können neu angeordnet oder gelöscht werden. </p> <p> Im Zeitpunktmodus gibt es die folgenden Möglichkeiten abhängig vom gewählten Operator oder der gewählten Quelle auf der linken Seite: </p> <ul> <li> Operator <i>&equals;</i>: Prüft ob die Basiszeit mit der spezifizierten Zeit identisch ist. </li> <li> Operator <i>&ne;</i>: Prüft ob die Basiszeit nicht mit der spezifizierten Zeit identisch ist. </li> <li> Operator <i>Vor</i>: Prüft ob die Basiszeit früher als die spezifizierte Zeit ist. </li> <li> Operator <i>Bis</i>: Prüft ob die Basiszeit früher als oder gleich wie die spezifizierte Zeit ist. </li> <li> Operator <i>Ab</i>: Prüft ob die Basiszeit gleich wie oder später als die spezifizierte Zeit ist. </li> <li> Operator <i>Nach</i>: Prüft ob die Basiszeit später als die spezifizierte Zeit ist. </li> <li> Operator <i>Zwischen</i>: Prüft ob die Basiszeit gleich wie oder später als die erste und früher als oder gleich wie die zweite spezifizierte Zeit ist. </li> <li> Operator <i>Außerhalb</i>: Prüft ob die Basiszeit früher als die erste oder später als die zweite spezifizierte Zeit ist. </li> <li> Operator <i>Tage</i>: Prüft ob die Basiszeit auf spezielle Tage eines Monats zutrifft. Das kann der erste, zweite, dritte, vierte, fünfte oder letzte Tag, Wochentag, Werktag oder Wochenendtag sein. Es kann auch ein gerader Tag oder ein bestimmter Tag eines Monats oder jedes Monats sein. Alle Operanden können durch Aktivieren der Option <i>Ausschließen</i> negiert werden. </li> <li> Operator <i>Wochentage</i>: Prüft ob die Basiszeit auf den ausgewählten Wochentag zutrifft. </li> <li> Operator <i>Monate</i>: Prüft ob die Basiszeit auf einen der ausgewählten Monate zutrifft. </li> <li> Operator <i>Sonst</i>: Wird angewendet wenn alle anderen Bedingungen nicht zutreffen. </li> <li> Quelle <i>Ausdruck</i>: Das Ergebnis der Bedingung wird von dem angegebenen JSONata-Ausdruck abgeleitet. Es werden zusätzliche Zeitberechnungsfunktionen unterstützt und die Basiszeit kann über die Variable <code>$baseTime</code> abgefragt werden. </li> <li> Quelle <i>Kontext</i>: Lädt die Bedingung aus der angegebenen Umgebungs- bzw. Kontextvariable. Siehe Abschnitt <i>Eingabe</i> weiter unten für eine Beschreibung der benötigten Struktur der Variable. </li> </ul> <p> Für die Zeiteingabe, abhängig von der Auswahl auf der linken Seite, gibt es folgende Möglichkeiten: </p> <ul> <li> <i>Uhrzeit</i>: Eine beliebige Uhrzeit kann direkt im 12- oder 24-Stunden-Format eingegeben werden. Optional ist die Eingabe eines Datums und einer Zeit in Region-spezifischem oder ISO 8601 Format möglich. </li> <li> <i>Sonnenstand</i>: Der Sonnenstand kann aus einer Liste vorgegebener Werte ausgewählt werden. Wenn mit der Maus über den Button gefahren wird, wird eine Vorschau der Zeit angezeigt. </li> <li> <i>Mondstand</i>: Der Mondstand kann aus einer Liste vorgegebener Werte ausgewählt werden. Wenn mit der Maus über den Button gefahren wird, wird eine Vorschau der Zeit angezeigt. </li> <li> <i>Sonnenstand (benutzerdef.)</i>: Einer der Namen für benutzerdefinierte Sonnenstände kann eingegeben werden. </li> <li> <i>Umgebungsvariable</i>, <i>global</i>, <i>flow</i>, <i>msg</i>: Die Zeit wird aus einer Umgebungs- oder Kontextvariablen oder einer Nachrichteneigenschaft gelesen. Die Variablen/Eigenschaften 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 im ISO 8601 Format</li> <li>Datum und Sonnenstand</li> <li>Datum und Mondstand</li> <li> Datum und benutzerdefinierter Sonnenstand </li> </ul> </li> </ul> </li> </ul> <p> Die spezifizierten Zeitpunkte können zusätzlich mittels eines (wahlweise zufälligen) Versatzes verschoben werden und die Genauigkeit der Zeitpunkte für den Vergleich kann festgelegt werden. Die entsprechenden Eingabefelder können über den Pfeil-Knopf auf der rechten Seite ausgeklappt werden. </p> <p> Im Zeitspannenmodus gibt es die folgenden Möglichkeiten abhängig vom gewählten Operator oder der gewählten Quelle auf der linken Seite: </p> <ul> <li> Operator <i>&equals;</i>: Prüft ob die Basiszeitspanne mit der spezifizierten Zeitspanne identisch ist. </li> <li> Operator <i>&ne;</i>: Prüft ob die Basiszeitspanne nicht mit der spezifizierten Zeitspanne identisch ist. </li> <li> Operator <i>&lt;</i>: Prüft ob die Basiszeitspanne kleiner als die spezifizierte Zeitspanne ist. </li> <li> Operator <i>&le;</i>: Prüft ob die Basiszeitspanne kleiner als oder gleich wie die spezifizierte Zeitspanne ist. </li> <li> Operator <i>&ge;</i>: Prüft ob die Basiszeitspanne gleich wie oder größer als die spezifizierte Zeitspanne ist. </li> <li> Operator <i>&gt;</i>: Prüft ob die Basiszeitspanne größer als die spezifizierte Zeitspanne ist. </li> <li> Operator <i>Zwischen</i>: Prüft ob die Basiszeitspanne gleich wie oder größer als die erste und kleiner als oder gleich wie die zweite spezifizierte Zeitspanne ist. </li> <li> Operator <i>Außerhalb</i>: Prüft ob die Basiszeitspanne kleiner als die erste oder größer als die zweite spezifizierte Zeitspanne ist. </li> <li> Operator <i>Sonst</i>: Wird angewendet wenn alle anderen Bedingungen nicht zutreffen. </li> <li> Quelle <i>Ausdruck</i>: Das Ergebnis der Bedingung wird von dem angegebenen JSONata-Ausdruck abgeleitet. Die Referenzzeit kann über die Variable <code>$refTime</code> und die Basiszeit über die Variable <code>$baseTime</code> abgefragt werden. Zusätzlich kann die Zeitspanne zwischen Referenzzeit und Basiszeit über die Variable <code>$baseDuration</code> abgerufen werden. </li> <li> Quelle <i>Kontext</i>: Lädt die Bedingung aus der angegebenen Umgebungs- bzw. Kontextvariable. Siehe Abschnitt <i>Eingabe</i> weiter unten für eine Beschreibung der benötigten Struktur der Variable. </li> </ul> <p> Für die Zeitspanneneingabe, abhängig von der Auswahl auf der linken Seite, gibt es folgende Möglichkeiten: </p> <ul> <li> <i>number</i>: Die Zeitspanne kann als Zahl eingegeben werden. Die Einheit muss über die Auswahlbox auf der rechten Seite gewählt werden. </li> <li> <i>string</i>: Die Zeitspanne kann im ASP.NET-Stil oder im ISO 8601 Format angegeben werden. </li> <li> <i>Umgebungsvariable</i>, <i>global</i>, <i>flow</i>, <i>msg</i>: Die Zeitspanne wird aus einer Umgebungs- oder Kontextvariablen oder einer Nachrichteneigenschaft gelesen. Die Variablen/Eigenschaften können folgendes Format haben: <ul> <li> Zahl (Zeitspanne in Millisekunden) </li> <li> Zeichenkette <ul> <li>Zeitspanne im ASP.NET-Stil</li> <li>Zeitspanne im ISO 8601 Format</li> </ul> </li> </ul> </li> </ul> </dd> <dt>Bei erster Übereinstimmung aufhören</dt> <dd> Wenn aktiviert, wird die Auswertung von Bedingungen beendet, sobald es eine Übereinstimmung gibt. Das bedeutet, Nachrichten werden zu höchstens einem Ausgabe-Port geleitet. </dd> </dl> <h3>Eingabe</h3> <p> Eingehende Nachrichten werden an keine, einen oder mehrere der konfigurierten Ausgabe-Ports umgeleitet. Falls die Nachricht an mehr als einen Ausgabe-Port gesendet wird, wird sie an jedem Port außer dem ersten geklont. </p> <p> Bedingungen können dynamisch programmiert werden, indem diese so konfiguriert werden, dass die entsprechenden Daten aus einer Kontextvariablen gelesen werden (siehe Abschnitt <i>Konfiguration</i> oben). </p> <p> Im Zeitpunktmodus müssen die Variablen Objekte sein und die folgenden Eigenschaften enthalten: </p> <dl class="message-properties"> <dt>operator<span class="property-type">string</span></dt> <dd> Operator für den Vergleich; entweder "equal", "notEqual", "before", "until", "since", "after", "between", "outside", "days", "weekdays", oder "months" </dd> <dt class="optional">operands<span class="property-type">object | array</span></dt> <dd>Operanden für den Vergleich; der Inhalt ist abhängig vom Operator</dd> </dl> <p> Wenn <code>operator</code> folgendes enthält: <ul> <li>"equal", "notEqual", "before", "until", "since" oder "after", muss <code>operands</code> ein Objekt sein</li> <li>"between" oder "outside", muss <code>operands</code> ein Array mit zwei Objekten sein, die den zwei Operanden entsprechen</li> </ul> Die Objekte müssen jeweils folgende Eigenschaften enthalten: </p> <dl class="message-properties"> <dt>type<span class="property-type">string</span></dt> <dd>Art des Operanden; entweder "time", "sun", "moon" oder "custom"</dd> <dt>value<span class="property-type">string</span></dt> <dd>Operandenwert; der Inhalt ist abhängig von der Art des Operanden</dd> <dt>offset<span class="property-type">number</span></dt> <dd>Zeitlicher Versatz zum Operandenwert in Minuten</dd> <dt>random<span class="property-type">number</span></dt> <dd>Zufälligkeitsspanne des Zeitversatzes in Minuten</dd> <dt class="optional">precision<span class="property-type">string</span></dt> <dd> Vergleichsgenauigkeit; entweder "millisecond", "second", "minute", "hour", "day", "month" oder "year" </dd> </dl> <p> Wenn <code>operator</code> "days" enthält, muss <code>operands</code> ein Objekt sein und folgende Eigenschaften enthalten: </p> <dl class="message-properties"> <dt>type<span class="property-type">string</span></dt> <dd> Art des Operanden; entweder "first", "second", "third", "fourth", "fifth", "last", "even" oder "specific" </dd> <dt class="optional">day<span class="property-type">string | number</span></dt> <dd> Abhängig von der Art des Operanden der (englische) Name eines Tages oder der Monatstag als Zahl; gilt nicht für den Typ "even" </dd> <dt class="optional">month<span class="property-type">string</span></dt> <dd>(Englischer) Name des Monats; gilt nur für den Typ "specific"</dd> <dt>exclude<span class="property-type">boolean</span></dt> <dd>Negiertes Ergebnis</dd> </dl> <p> Wenn <code>operator</code> "weekdays" enthält, muss <code>operands</code> ein Objekt sein. Dieses kann boolesche Eigenschaften enthalten, deren Namen einem englischen Wochentag ("monday", "tuesday", ...) entsprechen. Wenn der Wert wahr ist, ist die Bedingung für Basiszeiten an dem entsprechenden Tag erfüllt oder sie ist nicht erfüllt, wenn der Wert der Eigenschaft falsch ist oder die Eigenschaft fehlt. </p> <p> Wenn <code>operator</code> "months" enthält, muss <code>operands</code> ein Objekt sein. Dieses kann boolesche Eigenschaften enthalten, deren Namen einem englischen Monat ("january", "february", ...) des Jahres entsprechen. Wenn der Wert wahr ist, ist die Bedingung für Basiszeiten in dem entsprechenden Monat erfüllt oder sie ist nicht erfüllt, wenn der Wert der Eigenschaft falsch ist oder die Eigenschaft fehlt. </p> <p> Im Zeitspannenmodus müssen die Variablen Objekte sein und die folgenden Eigenschaften enthalten: </p> <dl class="message-properties"> <dt>operator<span class="property-type">string</span></dt> <dd> Operator für den Vergleich; entweder "equal", "notEqual", "less", "lessOrEqual", "greater", "greaterOrEqual", "between", oder "outside" </dd> <dt class="optional">operands<span class="property-type">number | string | array</span></dt> <dd>Operanden für den Vergleich; der Inhalt ist abhängig vom Operator</dd> </dl> <p> Wenn <code>operator</code> folgendes enthält: <ul> <li>"equal", "notEqual", "less", "lessOrEqual", "greater" oder "greaterOrEqual", muss <code>operands</code> eine Zahl oder eine Zeichenkette sein</li> <li>"between" oder "outside", muss <code>operands</code> ein Array mit zwei Elementen sein, die eine Zahl oder eine Zeichenkette sind</li> </ul> Wenn der Operand eine Zahl ist, stellt diese die Zeitspanne in Millisekunden da. Ist der Operand dagegen eine Zeichenkette, kann die Zeitspanne im ASP.NET-Stil oder im ISO 8601 Format angegeben werden. </p> <h3>Ausgaben</h3> <p> Jeder Ausgabe-Port gehört zu einer konfigurierten Bedingung, welche mit der Basiszeit oder Basiszeitspanne verglichen wird. </p> </script>