Initial commit

This commit is contained in:
Marcelo
2025-11-20 15:27:34 -06:00
commit cc72c9fc5d
3221 changed files with 737477 additions and 0 deletions

View File

@@ -0,0 +1,153 @@
<script type="text/html" data-help-name="serial in">
<p>Datenempfang von lokaler serieller Schnittstelle.</p>
<h3>Ausgangsdaten</h3>
<dl class="message-properties">
<dt>payload <span class="property-type">string | buffer</span></dt>
<dd>Empfangene Daten von serieller Schnittstelle</dd>
<dt>port <span class="property-type">string</span></dt>
<dd>Name der seriellen Schnittstelle</dd>
</dl>
<p>Der Node kann entweder
<ul>
<li>warten auf ein Aufteilungszeichen (standardmäßig \n).
Escape-Sequenzen (z.B. \n) und Hex-Notation (0x0d) werden ebenso akzeptiert.</li>
<li>warten auf Zeitablauf in Millisekunden seit Empfang des ersten Zeichens.</li>
<li>eine Ruhezeit in Millisekunden seit Empfang des letzten Zeichens abwarten.</li>
<li>warten bis ein Puffer mit fester Größer gefüllt ist.</li>
</ul>
</p>
<p>Dann wird <code>msg.payload</code> entweder als UTF-8 ASCII Zeichenfolge (string) oder
als binäres Buffer-Objekt ausgegeben.</p>
<p><code>msg.port</code> enthält den Namen der ausgewählten seriellen Schnittstelle.</p>
<p>Wenn kein Aufteilungszeichen vorgegeben ist oder ein Zeitlimit oder eine Puffergröße von 0 angegeben ist,
wird ein Strom von einzelnen Zeichen ausgegeben -
wieder entweder als ASCII-Zeichen oder als binärer Buffer, jeweils der Größe 1.</p>
</script>
<script type="text/html" data-help-name="serial out">
<p>Datenversand über lokale serielle Schnittstelle.</p>
<h3>Inputs</h3>
<dl class="message-properties">
<dt>payload <span class="property-type">string | buffer</span></dt>
<dd>Zu sendende Daten über serielle Schnittstelle</dd>
<dt class="optional">baudrate <span class="property-type">string</span></dt>
<dd>Baudrate der seriellen Schnittstelle (optional)</dd>
</dl>
<p>Nur <code>msg.payload</code> wird gesendet.</p>
<p>Optional kann die Baudrate geändert werden über <code>msg.baudrate</code></p>
<p>Optional kann das Zeilenvorschub-Zeichen (\n), was zum Aufteilen der Eingangsdaten genutzt wird,
auch jeder zu sendenden Nachricht angefügt werden.</p>
<p>Binäre Nutzdaten (Payload) können unter Verwendung von Buffer-Objekten gesendet werden.</p>
</script>
<script type="text/html" data-help-name="serial request">
<p>Verbindung zu einer seriellen Schnittstelle mit Request/Response-Protokoll (Anfrage/Antwort).</p>
<p>Dieser Node verhält sich wie eine fest gekoppelte Kombination aus einem
<span style="background-color:Gainsboro">serial in</span>- und einem
<span style="background-color:Gainsboro">serial out</span>-Node,
welche sich eine Konfiguration teilen.</p>
<p>Die Anfrage-Nachricht wird über <code>msg.payload</code> so versendet,
wie man es den <span style="background-color:Gainsboro">serial out</span>-Node machen würde.
Die Nachrichten werden an die serielle Schnittstelle nach dem strikten FIFO-Prinzip (First In, First Out) weitergereicht,
d.h. nach jeder gesendeten Anfrage wird auf die Antwort der Gegenstelle gewartet,
bevor mit der nächsten Anfrage fortgefahren wird.
Wenn die Antwort empfangen wurde (mit der selben Logik eines <span style="background-color:Gainsboro">serial in</span>-Nodes)
oder wenn ein Zeitablauf aufgetreten ist, wird eine Nachricht ausgegeben (siehe Ausgangsdaten unten)
mit <code>msg.payload</code>, die empfangene Antwort enthaltend (oder fehlend im Falle eines Zeitablaufs),
und allen anderen unveränderten Eigenschaften der Eingangsnachricht.</p>
<p>Analog zum <span style="background-color:Gainsboro">serial in</span>-Node ist
<code>msg.port</code> ebenso auf den Namen der seriellen Schnittstelle gesetzt.</p>
<h3>Eingangsdaten</h3>
<ul>
<li><code>msg.timeout</code> ist die Ablaufzeit (in ms), nach der eine unbeantwortete Eingangsnachricht
an den Ausgang mit <code>msg.status</code>, gesetzt auf <code>"ERR_TIMEOUT"</code>,
und den unbeantworteten Nutzdaten (Payload) weitergereicht wird.
Wenn nicht vorhanden, wird der Standardwert 10000 (10s) verwendet.</li>
<li>Falls <code>msg.count</code> gesetzt ist, überschreibt sie die konfigurierte Zeichenanzahl,
sofern sie kleiner als die konfigurierte ist.</li>
<li><code>msg.waitfor</code> muss ein Einzelzeichen, ein Escape-Code oder eine Hex-Code sein.
Wenn gesetzt, wartet der Node bis zum passenden Zeichen im Datenstrom und startet dann die Ausgabe.</li>
<li>Optional kann die Baudrate geändert werden über <code>msg.baudrate</code></li>
</ul>
<h3>Ausgangsdaten</h3>
<ul>
<li><code>msg.payload</code> ist die Antwort. Wenn keine Antwort erfolgte, ist die Eigenschaft nicht vorhanden.</li>
<li><code>msg.status</code> ist <code>"OK"</code> im Falle einer empfangenen Antwort oder
<code>"ERR_TIMEOUT"</code> im Falle eines Zeitablaufs.</li>
<li>Alle anderen Eigenschaften der Eingangsdaten werden beibehalten.</li>
</ul>
</script>
<script type="text/html" data-help-name="serial-port">
<p>Konfigurationsoptionen einer lokalen seriellen Schnittstelle.</p>
<p>Die Suchschaltfläche sollte eine Liste der verfügbaren seriellen Schnittstellen zur Auswahl zurückgeben.
Alternativ kann der Schnittstellenname direkt eingegeben werden, sofern bekannt.</p>
<p>Die DTR-, RTS-, CTS- und DSR-Einstellugnen können genutzt werden,
um den entsprechenden Flusskontroll-Pin permanent auf High- oder Low-Pegel zu ziehen,
z.B. um angeschlossene Geräte darüber mit Strom zu versorgen.</p>
<p>Der Node kann optional darauf warten, bis ein vorgegebenes Startzeichen empfangen wurde.</p>
<p>Der Node kann entweder
<ul>
<li>warten auf ein Aufteilungszeichen (standardmäßig \n).
Escape-Sequenzen (z.B. \n) und Hex-Notation (0x0d) werden ebenso akzeptiert.</li>
<li>warten auf Zeitablauf in Millisekunden seit Empfang des ersten Zeichens.</li>
<li>eine Ruhezeit in Millisekunden seit Empfang des letzten Zeichens abwarten.</li>
<li>warten bis ein Puffer mit fester Größer gefüllt ist.</li>
</ul>
</p>
<p>Dann wird <code>msg.payload</code> entweder als UTF-8 ASCII Zeichenfolge (string) oder
als binäres Buffer-Objekt ausgegeben.</p>
<p>Wenn kein Aufteilungszeichen vorgegeben ist oder ein Zeitlimit oder eine Puffergröße von 0 angegeben ist,
wird ein Strom von einzelnen Zeichen ausgegeben -
wieder entweder als ASCII-Zeichen oder als binärer Buffer, jeweils der Größe 1.</p>
<p>Optional kann das Zeilenvorschub-Zeichen (\n), was zum Aufteilen der Eingangsdaten genutzt wird,
auch jeder zu sendenden Nachricht angefügt werden.</p>
</script>
<script type="text/html" data-help-name="serial control">
<p>Stoppt, startet die serielle Kommunikation und ändert die Konfiguration der seriellen Schnittstelle.</p>
<p>Dieser Node bietet die Möglichkeiten:</p>
<ul>
<li>stoppen der Kommunikation und die serielle Schnittstelle freigeben,</li>
<li>den Port erneut öffnen und die Kommunikation neu starten,</li>
<li>dynamische Änderung des seriellen Ports und deren Konfiguration,</li>
<li>abfragen der Konfiguration der seriellen Schnittstelle.</li>
</ul>
<h3>Eingangsdaten</h3>
<p>Um die Kommunikation zu steuern, senden Sie einfach <b>msg.payload</b> mit:</p>
<pre>
{
"serialport": "/dev/ttyUSB0",
"serialbaud": 115200,
"databits": 8,
"parity": "none",
"stopbits": 1,
"enabled": true
}
</pre>
<p>Die folgenden optionalen Parameter ändern die Konfiguration nur, wenn sie vorhanden sind</p>
<p>Jede beliebige Kombination davon kann zur Änderung/Steuerung der seriellen Kommunikation übergeben werden</p>
<ul>
<li> serialport </li>
<li> serialbaud </li>
<li> databits </li>
<li> parity </li>
<li> stopbits </li>
<li> dtr </li>
<li> rts </li>
<li> cts </li>
<li> dsr </li>
<li> enabled </li>
</ul>
<p>Wenn die <code>enabled</code> Eigenschaft nicht vorhanden ist, wird sie standardmäßig auf <code>true</code> gesetzt.</p>
<p>
<code>{"enabled":true}</code> oder <code>{"enabled":false}</code> startet oder stopt die Kommunikation.</p>
<p>Wenn <code>enabled</code> zusammen mit anderen Parametern übergeben wird, wird die Konfiguration geändert und der Port wird entweder gestartet oder bleibt gestoppt, sodass er abhängig von seinem Wert später gestartet werden kann.</p>
<h3>Ausgangsdaten</h3>
<p>Jede Eingabenachricht führt dazu, dass der Knoten die aktuelle Portkonfiguration in <code>msg.payload</code> ausgibt.</p>
</script>

View File

@@ -0,0 +1,73 @@
{
"serial": {
"status": {
"waiting": "Wartend",
"timeout": "Zeitablauf"
},
"label": {
"serialport": "Serieller Port",
"settings": "Einstellungen",
"baudrate": "Baudrate",
"databits": "Datenbits",
"parity": "Parität",
"stopbits": "Stoppbits",
"input": "Empfang",
"split": "Aufteilung",
"deliver": "und Ausgabe als",
"output": "Versand",
"request": "Anforderung",
"responsetimeout": "Standardwert Antwort-Zeitablauf",
"ms": "ms",
"serial": "seriell",
"none": "none",
"start": "Optional Warten auf das Startzeichen",
"startor": ", dann"
},
"placeholder": {
"serialport": "z.B. /dev/ttyUSB0/"
},
"parity": {
"none": "Keine",
"even": "Gerade",
"mark": "Mark",
"odd": "Ungerade",
"space": "Space"
},
"linestates": {
"none": "Auto",
"high": "High",
"low": "Low"
},
"split": {
"character": "anhand Zeichen",
"timeout": "nach Zeitablauf von",
"silent": "nach Ruhezeit von",
"lengths": "in feste Längen von"
},
"output": {
"ascii": "ASCII-Strings",
"binary": "Binäre Buffer"
},
"addsplit": "Zeichen zu Ausgangsnachrichten hinzufügen",
"tip": {
"responsetimeout": "Tipp: Der Standardwert des Antwort-Zeitablaufs (default response timeout) kann durch Setzen von msg.timeout überschrieben werden",
"split": "Tipp: Das Aufteilungszeichen wird benutzt, um die empfangenen Daten in einzelne Nachrichten aufzuteilen. Es werden Zeichen ($), Escape-Codes (\\n) oder Hex-Codes (0x03) akzeptiert.",
"silent": "Tipp: Im Ruhezeit-Modus wird die Ruhezeitmessung bei jedem neu empfangenen Zeichen neu gestartet",
"timeout": "Tipp: Im Zeitablauf-Modus startet die Zeitmessung mit Empfang des ersten Zeichens",
"count": "Tipp: Im Modus der festen Längen kann msg.count die vorgegebene Anzahl überschreiben, sofern dieser Wert kleiner ist",
"waitfor": "Tipp: Optional. Leer lassen, um alle Daten zu empfangen. Es werden Zeichen ($), Escape-Codes (\\n) oder Hex-Codes (0x03) akzeptiert." ,
"addchar": "Tipp: Dieses Zeichen wird jeder über den seriellen Port gesendeten Nachricht hinzugefügt. Üblicherweise \\r oder \\n."
},
"onopen": "Seriellen Port __port__ geöffnet mit __baud__ Baud, __config__",
"errors": {
"missing-conf": "Fehlende serielle Konfiguration",
"serial-port": "Serieller Port",
"error": "Serieller Port __port__ FEHLER: __error__",
"unexpected-close": "Serieller Port __port__ unerwartet geschlossen",
"disconnected": "Serieller Port __port__ getrennt",
"closed": "Serieller Port __port__ geschlossen",
"list": "Port-Auflistung fehlgeschlagen. Bitte manuell eintragen.",
"badbaudrate": "Ungültige Baudrate"
}
}
}

View File

@@ -0,0 +1,143 @@
<script type="text/html" data-help-name="serial in">
<p>Reads data from a local serial port.</p>
<h3>Outputs</h3>
<dl class="message-properties">
<dt>payload <span class="property-type">string | buffer</span></dt>
<dd>received data via the serial port</dd>
<dt>port <span class="property-type">string</span></dt>
<dd>name of the serial port</dd>
</dl>
<p>The node can either
<ul>
<li>wait for a "split" character (default \n).
Also accepts escaped shortcut (e.g. \n) or hex notation (0x0d).</li>
<li>wait for a timeout in milliseconds from the first character received.</li>
<li>wait for a silence time in milliseconds after the last character received.</li>
<li>wait to fill a fixed sized buffer.</li>
</ul>
</p>
<p>It then outputs <code>msg.payload</code> as either a UTF-8 ASCII string or a binary buffer object.</p>
<p><code>msg.port</code> is set to the name of the port selected.</p>
<p>If no split character is specified, or a timeout or buffer size of 0,
then a stream of single characters is sent -
again either as ASCII chars or size 1 binary buffers.</p>
</script>
<script type="text/html" data-help-name="serial out">
<p>Send data via a local serial port.</p>
<h3>Inputs</h3>
<dl class="message-properties">
<dt>payload <span class="property-type">string | buffer</span></dt>
<dd>data to be sent via the serial port</dd>
<dt class="optional">baudrate <span class="property-type">string</span></dt>
<dd>baudrate of the serial port (optional)</dd>
</dl>
<p>Only the <code>msg.payload</code> is sent.</p>
<p>Optionally the baudrate can be changed using <code>msg.baudrate</code>.</p>
<p>Optionally the new line character used to split the input
can be appended to every message sent out to the serial port.</p>
<p>Binary payloads can be sent by using a buffer object.</p>
</script>
<script type="text/html" data-help-name="serial request">
<p>Provides a connection to a request/response serial port.</p>
<p>This node behaves as a tightly coupled combination of <code>serial in</code> and <code>serial out</code> nodes,
with which it shares the configuration.</p>
<p>Send the request message in <code>msg.payload</code> as you would do with a <code>serial out</code> node.
The message will be forwarded to the serial port following a strict FIFO (First In, First Out) queue,
waiting for a single response before transmitting the next request.
Once a response is received (with the same logic of a <code>serial in</code> node), or after a timeout occurs,
a message is sent to the output (see Outputs below),
with <code>msg.payload</code> containing the received response (or missing in case if timeout) and
all other properties are preserved.</p>
<p>For consistency with the <code>serial in</code> node, <code>msg.port</code> is set to the name of the port selected.</p>
<h3>Inputs</h3>
<ul>
<li><code>msg.timeout</code> is the timeout (in ms) after which the incoming message is propagated
to the output with <code>msg.status</code> set to <code>"ERR_TIMEOUT"</code> and missing payload.
If not present, the default value is 10000 (10s).</li>
<li><code>msg.count</code> if set this will override the configured number of characters
as long as it is less than the number configured.</li>
<li><code>msg.waitfor</code> must be a single character, escape code, or hex code.
If set, the node will wait until it matches that character in the stream and then start the output.</li>
<li>Optionally the baudrate can be changed using <code>msg.baudrate</code></li>
</ul>
<h3>Outputs</h3>
<ul>
<li><code>msg.payload</code> is the response. If no response occured, this property is removed.</li>
<li><code>msg.status</code> is <code>"OK"</code> in case a response is received,
or <code>"ERR_TIMEOUT"</code> if a timeout occurs.</li>
<li>Any other property coming from the input will be preserved.</li>
</ul>
</script>
<script type="text/html" data-help-name="serial-port">
<p>Configuration options for a local serial port.</p>
<p>The search button should return a list of available serial ports to choose from,
or you can type in the location if known.</p>
<p>The DTR, RTS, CTS and DSR switches can be used to permanently pull the corresponding flow control pin high or low,
e.g. in order to power devices via those pins.</p>
<p>The node can optionally wait until it matches a pre-defined character.</p>
<p>The serial data reception can either
<ul>
<li>wait for a "split" character (default \n). Also accepts escaped shortcut (e.g. \n) or hex notation (0x0d).</li>
<li>wait for a timeout in milliseconds from the first character received.</li>
<li>wait for a silence time in milliseconds after the last character received.</li>
<li>wait to fill a fixed sized buffer.</li>
</ul>
</p>
<p>It then outputs the received data as either a UTF-8 ASCII string or a binary buffer object.</p>
<p>If no split character is specified, or a timeout or buffer size of 0, then a stream of single characters is sent -
again either as ASCII chars or size 1 binary buffers.</p>
<p>Optionally the new line character used to split the input
can be appended to every message sent out to the serial port.</p>
</script>
<script type="text/html" data-help-name="serial control">
<p>Stops, starts the serial communication and changes the serial port configuration.</p>
<p>This node provides the ability to:</p>
<ul>
<li>stop the communication and release the serial port.</li>
<li>reopen the port and restart the communications.</li>
<li>change the serial port and the configuration dynamically.</li>
<li>query the serial port configuration.</li>
</ul>
<h3>Inputs</h3>
<p>In order to control the communication, just send <b>msg.payload</b> containing.</p>
<pre>
{
"serialport": "/dev/ttyUSB0",
"serialbaud": 115200,
"databits": 8,
"parity": "none",
"stopbits": 1,
"enabled": true
}
</pre>
<p>The following optional parameters will change the configuration only if they are present.</p>
<p>Any combination of them can be passed to change/control the serial communication</p>
<ul>
<li> serialport </li>
<li> serialbaud </li>
<li> databits </li>
<li> parity </li>
<li> stopbits </li>
<li> dtr </li>
<li> rts </li>
<li> cts </li>
<li> dsr </li>
<li> enabled </li>
</ul>
<p>If the <code>enabled</code> property is not present, it will default to <code>true</code>.</p>
<p>
<code>{"enabled":true}</code> or <code>{"enabled":false}</code> will start or stop the communication.</p>
<p>If <code>enabled</code> is passed along with other parameters, the configuration will be changed and the
port will be either started or remain stopped, ready to be started later depending on its value.</p>
<h3>Outputs</h3>
<p><code>msg.payload</code> containing the serial port configuration.</p>
</script>

View File

@@ -0,0 +1,75 @@
{
"serial": {
"status": {
"waiting": "waiting",
"timeout": "timeout",
"stopped": "stopped"
},
"label": {
"serialport": "Serial Port",
"settings": "Settings",
"baudrate": "Baud Rate",
"databits": "Data Bits",
"parity": "Parity",
"stopbits": "Stop Bits",
"input": "Input",
"split": "Split input",
"deliver": "and deliver",
"output": "Output",
"request": "Request",
"responsetimeout": "Default response timeout",
"ms": "ms",
"serial": "serial",
"none": "none",
"start": "Optionally wait for a start character of",
"startor": ", then"
},
"placeholder": {
"serialport": "for example: /dev/ttyUSB0/"
},
"parity": {
"none": "None",
"even": "Even",
"mark": "Mark",
"odd": "Odd",
"space": "Space"
},
"linestates": {
"none": "auto",
"high": "High",
"low": "Low"
},
"split": {
"character": "on the character",
"timeout": "after a timeout of",
"silent": "after a silence of",
"lengths": "into fixed lengths of"
},
"output": {
"ascii": "ASCII strings",
"binary": "binary buffers"
},
"addsplit": "Add character to output messages",
"tip": {
"responsetimeout": "Tip: The default response timeout can be overridden by setting msg.timeout.",
"split": "Tip: the \"Split on\" character is used to split the input into separate messages. Can accept chars ($), escape codes (\\n), or hex codes (0x03).",
"silent": "Tip: In line-silent mode timeout is restarted upon arrival of any character (i.e. inter-byte timeout).",
"timeout": "Tip: In timeout mode timeout starts from arrival of first character.",
"count": "Tip: In count mode msg.count can override the configured count as long as it smaller than the configured value.",
"waitfor": "Tip: Optional. Leave blank to receive all data. Can accept chars ($), escape codes (\\n), or hex codes (0x02)." ,
"addchar": "Tip: This character is added to every message sent out to the serial port. Usually \\r or \\n."
},
"onopen": "serial port __port__ opened at __baud__ baud __config__",
"errors": {
"missing-conf": "missing serial config",
"serial-port": "serial port",
"error": "serial port __port__ error: __error__",
"unexpected-close": "serial port __port__ closed unexpectedly",
"disconnected": "serial port __port__ disconnected",
"closed": "serial port __port__ closed",
"list": "Failed to list ports. Please enter manually.",
"badbaudrate": "Baudrate is invalid"
},
"stopped": "__port__ stopped"
}
}

View File

@@ -0,0 +1,73 @@
{
"serial": {
"status": {
"waiting": "waiting",
"timeout": "timeout"
},
"label": {
"serialport": "シリアルポート",
"settings": "設定",
"baudrate": "ボーレート",
"databits": "データビット",
"parity": "パリティ",
"stopbits": "終了ビット",
"input": "入力",
"split": "入力の分割方法",
"deliver": "分割後の配信データ",
"output": "出力",
"request": "リクエスト",
"responsetimeout": "デフォルトの応答タイムアウト",
"ms": "ミリ秒",
"serial": "serial",
"none": "なし",
"start": "オプションで開始文字",
"startor": "を待ちます。"
},
"placeholder": {
"serialport": "例: /dev/ttyUSB0/"
},
"parity": {
"none": "なし",
"even": "偶数",
"mark": "マーク",
"odd": "奇数",
"space": "スペース"
},
"linestates": {
"none": "自動",
"high": "高",
"low": "低"
},
"split": {
"character": "文字列で区切る",
"timeout": "タイムアウト後で区切る",
"silent": "一定の待ち時間後に区切る",
"lengths": "一定の文字数で区切る"
},
"output": {
"ascii": "文字列",
"binary": "バイナリバッファ"
},
"addsplit": "出力メッセージに分割文字を追加する",
"tip": {
"responsetimeout": "Tip: デフォルトの応答タイムアウトは msg.timeout の設定で上書きすることができます。",
"split": "Tip: \"区切り\" 文字は、入力を別々のメッセージに分割するために使用され、シリアルポートに送信されるすべてのメッセージに追加することもできます。",
"silent": "Tip: In line-silent mode timeout is restarted upon arrival of any character (i.e. inter-byte timeout).",
"timeout": "Tip: タイムアウトモードでのタイムアウトは最初の文字が到着したときから始まります。",
"count": "Tip: カウントモードでは msg.count 設定は、構成された値よりも小さいときに限り、構成されたカウントを上書きすることができます。",
"waitfor": "Tip: オプションです。すべてのデータを受信するには、空白のままにします。文字($)・エスケープコード(\\n)・16進コード(0x02)を受け入れることができます。" ,
"addchar": "Tip: この文字は、シリアルポートに送信されるすべてのメッセージに追加されます。通常は \\r や \\n です。"
},
"onopen": "シリアルポート __port__ が __baud__ ボー __config__ で開かれました",
"errors": {
"missing-conf": "シリアル設定がありません。",
"serial-port": "シリアルポート",
"error": "シリアルポート __port__ エラー: __error__",
"unexpected-close": "シリアルポート __port__ が予期せず閉じられました",
"disconnected": "シリアルポート __port__ 切断",
"closed": "シリアルポート __port__ 閉じられました",
"list": "ポートのリスト化に失敗しました。手動で入力してください。",
"badbaudrate": "ボーレートが不正です。"
}
}
}