Problem bei Kommunikation mit serieller Schnittstelle

Node-RED als CCU3/RaspberryMatic Addon, WebApp, HomeKit, ...

Moderator: Co-Administratoren

Antworten
FNW
Beiträge: 9
Registriert: 10.05.2019, 16:17
System: sonstige
Wohnort: Friedrichsthal

Problem bei Kommunikation mit serieller Schnittstelle

Beitrag von FNW » 27.03.2022, 20:00

Hallo,
ich versuche über das Addon 'node-red-node-serialport' (Version 1.0.1) mit einem Gerät per serieller Schnittstelle zu kommunizieren.
Hierbei handelt es sich um das Batterie-Management-System 'G1 Control Unit' vom Hersteller Emus. Es ist per Serial-to-USB-Konverter mit meinem Raspberry Pi 3+ verbunden.
Wenn ich im Node-RED-Flow den 'serial-request'-node einsetze, sehe ich den Konverter als Gerät 'dev/tty/USB2', und beim Deploy wird mir dort durch den Hinweis 'connected' eine aufgebaute Verbindung signalisiert.
Leider gelingt es mir jedoch nicht, die in der Anleitung von BMS-System beschriebenen Kommandos zu nutzen.
Eines davon lautet als String 'VR1,?,D7'. Beim Abschicken soll ein Zeilenumbruch-Kontrollzeichen (\r oder \n) zur Kennzeichnung vom Ende des Befehls mitgeschickt werden.
Ich habe den String als 'Inject'-Node eingegeben (msg.payload), und in der Konfiguration vom 'serial-request'-Node die Einstellung vom Befehl-Ende-Sonderzeichen hinterlegt. Baudrate und andere Angaben wurden bereits durch die Geräte-Auswahl (dev/tty/USB2) vorgegeben.
Wenn ich den 'Inject'-Node anklicke, passiert jedoch zunächst nichts, und schließlich wird im Debug-Fenster nur folgende Timeout-Meldung angezeigt:

Code: Alles auswählen

{"_msgid":"a5b6824c5a0654ec","request_payload":"VR1,?,D7","request_msgid":"a5b6824c5a0654ec","port":"/dev/ttyUSB2","status":"ERR_TIMEOUT"}
Für die Windows-Umgebung gibt es vom Hersteller Emus eine Software zur Kommunikation mit dem Gerät. Diese funktioniert zusammen mit dem Serial-to-USB-Konverter problemlos.
Um jedoch selbst einen Befehl an das Gerät zu senden habe ich mir die Software 'Serial Monitor' installiert. Die Kommunikation war hier jedoch nur im Hexadezimalcode-Format möglich, da sich kein Sonderzeichen in die einzelne String-Zeile vom Programm eintragen ließ. Dort nutzte ich das Zeichen '\r' als letztes Byte.
Im Kontext vom Node-RED-System versuchte ich bereits diverse, kleine Anpassungen - u.a. Umstellung von Befehl-Ende-Sonderzeichen, String-Codierung in Hexadezimal-Format. Allerdings änderte keine davon den Ablauf: Immer nur Timeout-Meldung.
Mir fallen jetzt keine weiteren Vorgehensweisen ein, um den Datenaustausch zu realisieren. Deshalb hoffe ich, dass ihr mir in diesem Spezialfall helfen könnt...

Vielen Dank für eure Bemühungen im Voraus
Christian Hüller

Antworten

Zurück zu „RedMatic“