mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
163 lines
11 KiB
HTML
Executable File
163 lines
11 KiB
HTML
Executable File
<!--
|
|
Copyright JS Foundation and other contributors, http://js.foundation
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
-->
|
|
|
|
<script type="text/html" data-help-name="split">
|
|
<p>Teilt eine Nachricht in eine Folge von Nachrichten auf.</p>
|
|
|
|
<h3>Eingaben</h3>
|
|
<dl class="message-properties">
|
|
<dt>payload<span class="property-type">Objekt | String | Array | Buffer</span></dt>
|
|
<dd>Das Verhalten des Nodes wird durch den Typ der <code>msg.payload</code> bestimmt:
|
|
<ul>
|
|
<li><b>String</b>/<b>Buffer</b> - die Nachricht wird anhand des angegebenen Zeichens (Standard: <code>\n</code>),
|
|
der Buffersequenz oder in feste Längen aufgeteilt.</li>
|
|
<li><b>Array</b> - die Nachricht wird entweder in einzelne Array-Elemente oder Arrays mit fester Länge aufgeteilt.</li>
|
|
<li><b>Objekt</b> - es wird für jedes Schlüssel-Wert-Paar des Objekts eine Nachricht gesendet.</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
<h3>Ausgaben</h3>
|
|
<dl class="message-properties">
|
|
<dt>parts<span class="property-type">Objekt</span></dt>
|
|
<dd>Diese Eigenschaft enthält Informationen darüber, wie die Nachricht von der ursprünglichen Nachricht getrennt wurde.
|
|
Wenn sie an einen Node <b>join</b> übergeben werden,
|
|
kann die Sequenz wieder zu einer einzigen Nachricht zusammengefasst werden.
|
|
Diese Eigenschaft hat die folgenden Eigenschaften:
|
|
<ul>
|
|
<li><code>id</code> - ein Identifikator für die Gruppe der Nachrichten</li>
|
|
<li><code>index</code> - die Position innerhalb der Gruppep</li>
|
|
<li><code>count</code> - falls bekannt, die Gesamtzahl der Nachrichten in der Gruppe. Siehe dazu unten "Streaming-Modus".</li>
|
|
<li><code>type</code> - die Art der Nachricht - string/array/object/buffer</li>
|
|
<li><code>ch</code> - für ein String oder einen Buffer, die Daten, die für das Aufteilen der Nachricht verwendet wurden, entweder als String oder als Array von Bytes.</li>
|
|
<li><code>key</code> - für ein Objekt, den Schlüssel der Eigenschaft, aus der diese Nachricht erstellt wurde. Der Node kann konfiguriert werden, um diesen Wert auch in andere Nachrichteneigenschaften zu kopieren, wie z.B. <code>msg.topic</code>.</li>
|
|
<li><code>len</code> - die Länge jeder Nachricht, wenn sie durch einen Wert fester Länge aufgeteilt wird.</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
<h3>Details</h3>
|
|
<p>Dieser Node macht es einfach, einen Flow zu erstellen, der gemeinsame Aktionen über eine Sequenz von Nachrichten ausführt,
|
|
bevor er den Node <b>join</b> verwendet und die Sequenz zu einer einzigen Nachricht neu kombiniert.</p>
|
|
<p>Es verwendet die Eigenschaft <code>msg.parts</code>, um die einzelnen Teile einer Sequenz zu verfolgen.</p>
|
|
<h4>Streaming Modus</h4>
|
|
<p>Der Node kann auch zum Wiederaufbereiten eines Nachrichtenstroms verwendet werden.
|
|
So kann beispielsweise ein serielles Gerät, das <code><newline/code>-terminierte Befehle sendet,
|
|
eine einzelne Nachricht mit einem Teilbefehl am Ende liefern.
|
|
Im Streaming-Modus teilt dieser Node eine Nachricht auf und sendet jedes komplette Segment.
|
|
Befindet er sich am Ende eines Teilsegments, hält der Node es fest und wird es der nächsten empfangenen Nachricht voranstellen.
|
|
</p>
|
|
<p>Wenn der Node in diesem Modus arbeitet, setzt er die Eigenschaft <code>msg.parts.count</code> nicht, da er nicht weiß, wie viele Nachrichten im Stream zu erwarten sind.
|
|
Das bedeutet, dass er nicht mit dem <b>join</b> Node im Automatikmodus verwendet werden kann.</p>
|
|
</script>
|
|
|
|
<script type="text/html" data-help-name="join">
|
|
<p>Verbindet Sequenzen von Nachrichten zu einer einzigen Nachricht.</p>
|
|
<p>Es sind drei Modi verfügbar:</p>
|
|
<dl>
|
|
<dt>automatisch</dt>
|
|
<dd>Wenn es mit dem Node <b>split</b> gepaart wird, verbindet es automatisch die Nachrichten, um die durchgeführte Aufteilung rückgängig zu machen.</dd>
|
|
<dt>manual</dt>
|
|
<dd>Die Sequenzen von Nachrichten können auf verschiedene Weise verknüpft werden.</dd>
|
|
<dt>Reihenfolge reduzieren</dt>
|
|
<dd>Einen Ausdruck auf alle Nachrichten in einer Sequenz anwenden, um sie auf eine einzige Nachricht zu reduzieren.</dd>
|
|
</dl>
|
|
<h3>Eingaben</h3>
|
|
<dl class="message-properties">
|
|
<dt class="optional">parts<span class="property-type">Objekt</span></dt>
|
|
<dd>Um automatisch einer Nachrichtensequenz beizutreten, sollten sie alle über diese Eigenschaft verfügen.
|
|
Der Node <b>split</b> erzeugt diese Eigenschaft, sie kann aber manuell erstellt werden.
|
|
Es hat die folgenden Eigenschaften:
|
|
<ul>
|
|
<li><code>id</code> - ein Identifikator für die Gruppe der Nachrichten</li>
|
|
<li><code>index</code> - die Position innerhalb der Gruppep</li>
|
|
<li><code>count</code> - fie Gesamtzahl der Nachrichten in der Gruppe.</li>
|
|
<li><code>type</code> - die Art der Nachricht - string/array/object/buffer</li>
|
|
<li><code>ch</code> - für ein String oder einen Buffer, die Daten, die für das Aufteilen der Nachricht verwendet wurden, entweder als String oder als Array von Bytes.</li>
|
|
<li><code>key</code> - für ein Objekt, den Schlüssel der Eigenschaft, aus der diese Nachricht erstellt wurde.</li>
|
|
<li><code>len</code> - die Länge jeder Nachricht, wenn sie durch einen Wert fester Länge aufgeteilt wird.</li>
|
|
</ul>
|
|
</dd>
|
|
<dt class="optional">complete</dt>
|
|
<dd>Wenn gesetzt, sendet der Node seine Ausgangsnachricht im aktuellen Zustand.</dd>
|
|
</dl>
|
|
<h3>Details</h3>
|
|
|
|
<h4>Automatischer Modus</h4>
|
|
<p>Der automatische Modus verwendet die Eigenschaft <code>parts</code> der eingehenden Nachrichten, um festzulegen,
|
|
wie die Sequenz verknüpft werden soll.
|
|
Dies ermöglicht es ihm, die Aktion eines <b>split</b>-Nodes automatisch rückgängig zu machen.
|
|
</p>
|
|
<h4>Manueller Modus</h4>
|
|
<p>Wenn der Node für die Zusammenführung im manuellen Modus konfiguriert ist,
|
|
kann er Sequenzen von Nachrichten zu einer Reihe von verschiedenen Ergebnissen zusammenfügen:</p>
|
|
<ul>
|
|
<li>ein <b>String </b> oder <b>Buffer</b> - erstellt durch Verbinden der ausgewählten Eigenschaft
|
|
jeder Nachricht mit den angegebenen Join-Zeichen oder dem angegebenen Buffer.</li>
|
|
<li>ein <b>Array</b> - erstellt durch Hinzufügen jeder ausgewählten Eigenschaft oder einer ganzen Nachricht zum Ausgangsarray.</li>
|
|
<li>ein <b>Schlüssel/Wert-Objekt</b> - erstellt durch Verwendung einer Eigenschaft jeder Nachricht, um den Schlüssel zu bestimmen,
|
|
unter dem der gewünschte Wert gespeichert ist.</li>
|
|
<li>ein <b>zusammengefügtes Objekt</b> - erstellt durch Zusammenführen der Eigenschaft jeder Nachricht unter einem einzigen Objekt.</li>
|
|
</ul>
|
|
<p>Die anderen Eigenschaften der Ausgangsnachricht werden aus der letzten empfangenen Nachricht entnommen, bevor das Ergebnis gesendet wird.</p>
|
|
<p>Mit <i>count</i> kann angegeben werden, wie viele Nachrichten vor dem Erzeugen der Ausgabemeldung empfangen werden sollen.
|
|
Bei Objektausgaben kann der Node nach Erreichen dieser Anzahl konfiguriert werden,
|
|
um für jede nachfolgende empfangene Nachricht eine Nachricht zu senden.</p>
|
|
<p>Ein <i>Timeout</i> kann so eingestellt werden, dass das Senden einer neuen Nachricht mit dem ausgelöst wird, was bisher empfangen wurde.</p>
|
|
<p>Wenn eine Nachricht mit der Eigenschaft <b>msg.complete</b> empfangen wird, wird die Ausgabemeldung finalisiert und gesendet.
|
|
Dadurch wird die Zählung aller Teile zurückgesetzt.</p>
|
|
<p>Wenn eine Nachricht mit der Eigenschaft <b>msg.reset</b> empfangen wird, wird die teilweise vollständige Nachricht gelöscht und nicht gesendet.
|
|
Dadurch wird die Zählung aller Teile zurückgesetzt.</p>
|
|
|
|
<h4>Reduktion der Sequenz Modus</h4>
|
|
<p>Wenn sie so konfiguriert sind, dass sie sich im Reduktionsmodus befinden, wird auf jede Nachricht in einer Sequenz ein Ausdruck angewendet
|
|
und das Ergebnis zu einer einzigen Nachricht zusammengefasst.</p>
|
|
|
|
<dl class="message-properties">
|
|
<dt>Anfangswert</dt>
|
|
<dd>Der Anfangswert des kumulierten Wertes (<code>$A</code>).</dd>
|
|
<dt>Reduktionsausdruck</dt>
|
|
<dd>Ein JSONata-Ausdruck, der für jede Nachricht in der Sequenz aufgerufen wird.
|
|
Das Ergebnis wird als kumulierter Wert an den nächsten Aufruf des Ausdrucks übergeben.
|
|
Im Ausdruck können die folgenden speziellen Variablen verwendet werden:
|
|
<ul>
|
|
<li><code>$A</code>: der kumulierte Wert, </li>
|
|
<li><code>$I</code>: Index der Nachricht innerhalb der Squenz, </li>
|
|
<li><code>$N</code>: Anzahl der Nachrichten in der Sequenz.</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>Fix-up Ausdruck</dt>
|
|
<dd>Ein optionaler JSONata-Ausdruck, der angewendet wird, nachdem der Reduzierungsausdruck auf alle Nachrichten in der Sequenz angewendet wurde.
|
|
Im Ausdruck können folgende spezielle Variablen verwendet werden:
|
|
<ul>
|
|
<li><code>$A</code>: der kumulierte Wert, </li>
|
|
<li><code>$N</code>: Anzahl der Nachrichten in der Sequenz.</li>
|
|
</ul>
|
|
</dd>
|
|
<p>Standardmäßig wird der Reduktionsausdruck in der Reihenfolge von der ersten bis zur letzten Nachricht der Sequenz angewendet.
|
|
Er kann optional in umgekehrter Reihenfolge angewendet werden.</p>
|
|
</dl>
|
|
<p><b>Beispiel:</b> Die folgenden Einstellungen berechnen bei einer Folge von Zahlenwerten den Mittelwert:
|
|
<ul>
|
|
<li><b>Reduce expression</b>: <code>$A+payload</code></li>
|
|
<li><b>Initial value</b>: <code>0</code></li>
|
|
<li><b>Fix-up expression</b>: <code>$A/$N</code></li>
|
|
</ul>
|
|
</p>
|
|
<h4>Speichern von Nachrichtens</h4>
|
|
<p>Dieser Node puffert Nachrichten intern, um sequenzübergreifend zu arbeiten.
|
|
Mit der Laufzeiteinstellung <code>nodeMessageBufferMaxLength</code> kann begrenzt werden,
|
|
wie viele Nachrichten im Node zwischengespeichert werden sollen.</p>
|
|
</script>
|