Seite 1 von 1

Kann Blockly die serielle Schnittstelle mit den Controllines setzen?

Verfasst: 20. Apr 2023 06:42
von Norick
Ich habe ein serielles Gerät welches ich in OH (Win) einbinden möchte. Dazu muss u.a. die RTS Leitung gesetzt werden (High / Low). Kann ich dies direkt aus Blockly machen? Hier habe ich nichts passendes gefunden ausser die Daten zum Beispiel über die serielle Schnittstelle einzulesen. Oder
gibt es dazu eine einfachere Lösung?

Ein kleines Beispiel wäre sehr hilfreich.

Danke

Re: Kann Blockly die serielle Schnittstelle mit den Controllines setzen?

Verfasst: 20. Apr 2023 10:06
von udo1toni
RTS/CTS ist Layer 1, das wird wenn, dann in der Schnittstelle gesetzt. openHAB kennt beim Serial Binding keinen Parameter dazu.

Blockly wird nur bereits empfangene Daten zu Gesicht bekommen bzw. diese an den Prozess abgeben, der die serielle Schnittstelle ansteuert.
Blockly ist eher Layer 5 oder Layer 6, denke ich (ich bin nicht sonderlich gut im OSI-Schichtenmodell)

Re: Kann Blockly die serielle Schnittstelle mit den Controllines setzen?

Verfasst: 21. Apr 2023 06:49
von Norick
ja danke für die Antwort. Ich habe ein Python Terminal gefunden welches ich u.U. via commando von OH starten könnte. Um die RTS Leitung zu bedienen muss ich eine Tastenkombination drücken wie "CTRL + R". Somit funktioniert es einwandfrei.

Frage:
Könnte ich diese Tastenkombination auch einfach von OH aus senden? Wenn ja, wie würdest du das machen?

Danke

Re: Kann Blockly die serielle Schnittstelle mit den Controllines setzen?

Verfasst: 21. Apr 2023 09:20
von udo1toni
Wenn überhaupt, ginge das allenfalls indirekt, man müsste also ein Programm schreiben, welches beim Aufruf aus der Liste der vorhandenen Prozesse den heraussucht, an den es den Tastendruck senden soll, sich anschließend mit diesem Prozess verbindet, den Tastendruck absetzt und wieder beendet.
Aber Du müsstest ja die gesamte Kommunikation für diesen Kanal laufen lassen. Ich habe ehrlich gesagt keinen Schimmer, wie man das lösen muss.

Um was für ein Gerät handelt es sich denn? Hardware Handshake ist eigentlich seit Jahren total unüblich.

Falls die Leitung in unüblicher Weise verwendet wird (also um etwas tatsächlich zu schalten, was eigentlich gar nichts mit der seriellen Kommunikation zu tun hat) könntest Du einen GPIO Adapter anschließen (auf dem Raspberry wäre der schon vorhanden...) und Dir ein "Spezialkabel" basteln, bei dem RTS auf einen der GPIO Pins gezogen ist. Dann könntest Du diesen Pin gezielt über ein Switch Item ein- und ausschalten.

Re: Kann Blockly die serielle Schnittstelle mit den Controllines setzen?

Verfasst: 22. Apr 2023 07:40
von Norick
Danke für die Antwort. Nun es ist ein 4-Zonen Verstärker bei dem jede Zone ein- oder ausgeschaltet werden kann über einen Triggerkabel. Das heisst ich habe mir genau ein solches Kabel gebastelt welches es mir erlaubt per RTS jede Zone ein- oder auszuschalten.
Das heisst ich habe jetzt zwei Kabel für die 4 Zonen welche ich dann jeweils über das RTS / Break bedienen kann. Diese Controllines sind natürlich nur per seriellen Port verfügbar sodass ich zuerst den Port öffnen muss bevor ich diesen dann schalten kann.

Jetzt stehe ich gerade dermassen an wie ich das nun per OH lösen kann. Wenn ich das mit einem Terminalprogramm prüfe funktioniert es super.

Re: Kann Blockly die serielle Schnittstelle mit den Controllines setzen?

Verfasst: 22. Apr 2023 10:54
von udo1toni
Ja, siehst Du, das hat ja nichts mit einer normalen seriellen Verbindung zu tun.

Da wird der Weg über GPIO tatsächlich die einfachste Variante sein. Es gibt entsprechende Geräte - je nach Lust und Laune von Taschengeld bis ausschreibungspflichtig... ;) - die man dann entweder über USB/Seriell/(sogar Parallelport) oder (durchaus eine Überlegung wert) über LAN/WLAN anbinden kann. Sowohl Windows als auch GNU/Linux können allgemein mit solchen Erweiterungen umgehen, aber wenn man eh neu anschafft, kann man auf eine möglichst einfache Einbindung achten.
Was die Anbindung an openHAB betrifft, so musst Du halt schauen, wie diese Module angesteuert werden wollen. Per LAN/WLAN geht das dann entweder über eine API oder über TCP/UDP, es gibt auch Selbstbaulösungen (z.B. ein Wemos D1 mit ein paar zusätzlichen Transistoren und Optokopplern) die dann sogar per MQTT angesteuert werden können.
Als Selbstbaulösung kommt durchaus auch ein Arduino oder ein Raspberry Pico in Frage (Letzterer ist leicht erhältlich und kostet irgendwas um 5 €), die bringen halt keine LAN Schnittstelle mit, man müsste sie also über USB an einen Host anschließen und ein kleines Programm schreiben, welches dann Schaltbefehle über die USB-Schnittstelle entgegen nimmt.