Es kommen immer mehr Geräte mit dem RS485-Bus auf den Markt. Sei es nun das Thema Photovoltaik oder z.B. der Bodenfeuchte-Sensor SMT-100 von Truebner. Meine Frage ist allerdings, ob es da schon ein Plugin für den RS485-Bus gibt und inwiefern die USB-Adapter am Raspberry unterstützt werden. So richtig gefunden habe ich nichts. Kann mir aber auch nicht vorstellen, dass es dafür nichts gibt.
Ankündigung
Einklappen
Keine Ankündigung bisher.
RS485 an USB?
Einklappen
X
-
RS485 ist nur die physiklische Übertragung, es kommt auf das Protokoll an. Es gibt hier schon einige plugins für rs485 Geräte mit eigenem proprietärem protokoll (yamaha, trovis heizungsregler usw.) und für dmx. Glaube für can und modbus rtu gibt es noch nichts. Ich habe einen danfoss wr den ich über can über ein plugin abfragen kann. da kannst du dann immer einen rs485 usb-adapter nehmen.
Für den Bodenfeuchte Sensor z.b. als modbus-variante wird es noch kein Plugin geben, sollte aber auch machbar sein. Im einfachsten Fall für einen Anfänger über eine logik. Ich würde den aber als 4-20mA nehmen und über einen knx analogaktor anschließen.
https://knx-user-forum.de/forum/%C3%B6ffentlicher-bereich/knx-eib-forum/15652-bodenfeuchte-sensor-f%C3%BCr-gartenbew%C3%A4sserung/page8
Kommentar
-
Zitat von android Beitrag anzeigenRS485 ist nur die physiklische Übertragung, es kommt auf das Protokoll an. Es gibt hier schon einige plugins für rs485 Geräte mit eigenem proprietärem protokoll (yamaha, trovis heizungsregler usw.) und für dmx. Glaube für can und modbus rtu gibt es noch nichts. Ich habe einen danfoss wr den ich über can über ein plugin abfragen kann. da kannst du dann immer einen rs485 usb-adapter nehmen.
Zitat von android Beitrag anzeigenIch würde den aber als 4-20mA nehmen und über einen knx analogaktor anschließen
Der Thread ist super. Danke.
Kommentar
-
Das Helios Plugin flanscht über RS485 eine pre-2014 Helios KWL an (damals wurde das Modbus-Protokoll noch von Hand implementiert).
Das bereits genannte Trovis Plugin kommuniziert mit einem Trovis Heizungsregler über RS232, nutzt dafür aber eine Bibliothek (pyModbus).
Beide nach Herstellerangaben "unsmarten" Geräte hängen bei mir per Seriell-LAN-Adapter im Netz und kommunizieren mit shNG. Die jeweils verwendeten Adapter und notwendigen Befehle sind in den verlinkten Projektwiki's zu finden.
Wie schon geschrieben wurde - im Grunde egal, ob RS232 oder RS485, da beides seriell und nur für technisch unterschiedliche Anwendungsfälle ausgelegt ist. Wenn das Gerät Modbus spricht, kann man es anprogrammieren, sobald für die verwendete Schnittstelle ein LAN- oder USB-Adapter zur Verfügung steht - egal ob 232, 485, was-auch-immer.
Rest siehe verlinkte Wiki's sowie zugehörige Threads hier im Forum (auch in den Wiki's verlinkt - z.B. für Troubleshooting bei USB-Adaptern siehe Helios-Thread).
Hoffe, das hilft Dir weiter,
/tom
Edit/Nachtrag: Es gibt glaube mittlerweile auch ein 'universelles Modbus-Plugin' für shNG. Kenne aber dazu keine Details und auch den aktuellen Stand nicht.Zuletzt geändert von Tom Bombadil; 10.09.2022, 14:58.
Kommentar
-
Zitat von Tom Bombadil Beitrag anzeigenDas Helios Plugin flanscht über RS485 eine pre-2014 Helios KWL an (damals wurde das Modbus-Protokoll noch von Hand implementiert).
Das bereits genannte Trovis Plugin kommuniziert mit einem Trovis Heizungsregler über RS232, nutzt dafür aber eine Bibliothek (pyModbus).
Passend wäre dann wohl der USR-TCP232-304. Da sind dann auch gleich die richtigen Anschlüsse dran. Oder noch besser für die Hutschiene der USR-DR302.
Aber wenn ich das richtig verstanden habe, kann ich den dann ganz normal ansteuern, als wenn das ein Modbus-Netzwerkgerät wäre? Also mit ModbusTcpClient usw.
Kommentar
-
Du solltest Dir einen virtuellen Port auf der shNG-Büchse definieren, über den die Kommunikation läuft. Ich nutze dafür immer socat. Ist hier beschrieben, wie man das einrichtet. Statt z.B. über /dev/ttyUSB0 kommunizierst Du dann über die Schnittstelle /dev/mein-eigener-socat-name (bei mir z.B. /dev/helios, /dev/trovis). IP und Port müssen natürlich stimmen, erst später werden dann im Software-Client wie z.B. dem shNG-Plugin auch Baudrate, Parität, Stopbits eingestellt (z.B. 8N1).
Ob da grundsätzlich was am Busch funkt (Modbus-seitig), lässt sich mit Vcom unter Windows gut sniffen. Das richtet unter Windows einen virtuellen COM-Port COMx: ein, arbeitet also ähnlich wie oben beschrieben. Da sieht man dann auch, ob einigermaßen sinnvolle ("strukturierte") Pakete ausgetauscht werden. Ist ebenfalls im Wiki beschrieben.
/tomZuletzt geändert von Tom Bombadil; 10.09.2022, 16:32.
Kommentar
-
Zitat von Tom Bombadil Beitrag anzeigenDu solltest Dir einen virtuellen Port auf der shNG-Büchse definieren, über den die Kommunikation läuft. Ich nutze dafür immer socat. Ist hier beschrieben, wie man das einrichtet. Statt z.B. über /dev/ttyUSB0 kommunizierst Du dann über die Schnittstelle /dev/mein-eigener-socat-name (bei mir z.B. /dev/helios, /dev/trovis). IP und Port müssen natürlich stimmen, später dann im eigenen Software-Client auch Baudrate, Parität, Stopbits (z.B. 8N1).
Kommentar
-
Zitat von Cannon Beitrag anzeigenWieso stelle ich bei dem USR-Gerät nicht alles ein und kann dann per IP-Adresse mit dem pyModbus einfach darauf zugreifen?
Das ganze ist vielleicht vergleichbar mit 2 weit entfernt befindlichen Menschen mit Telefonen in der Hand - beim Aufbau der Verbindung Endpoint-Endpoint ist den Telefonen erstmal egal, ob die beiden Menschen die gleiche Sprache sprechen können. Es geht erstmal nur um einen Verbindungsaufbau.
Jetzt kommt die Client-App in's Spiel (z.B. shNG-Plugin). Diese 'spricht' Modbus, und Dein Endgerät auch. Richtige Einstellungen (Geschwindigkeit, Parität usw) vorausgesetzt, können nun Client-App und Gerät über die stehende Verbindung miteinander plaudern.
Oder um bei Telefonbeispiel oben zu bleiben: Beide Menschen sprechen dieselbe Sprache, und es ist ihnen egal, wie oft das Signal über LTE, Kupfer, Glasfaser usw transformiert wird, um auf die andere Seite zu kommen.
Hoffe, das hilft zum Verständnis ...
/tomZuletzt geändert von Tom Bombadil; 10.09.2022, 16:54.
Kommentar
-
Zitat von Tom Bombadil Beitrag anzeigenHoffe, das hilft zum Verständnis ...
Kommentar
-
Unter Unix/Linux kommuniziert man halt über Geräte, die unter /dev liegen. Das ist eines der Grundprinzipien des Betriebssystems. Ich finde die Kommunikation über eine dedizierte Schnittstelle transparent und logisch. Mit 'direkter' Kommunikation über IP's oder per /dev/LAN1 usw hab ich mich nie beschäftigt - keine Ahnung, ob man da vielleicht noch einen extra Protokollstack programmieren muss etc. Fazit: Gute Idee - könnte gehen, muss aber nicht. Einfach ausprobieren ...
/tom
Kommentar
-
Zitat von Tom Bombadil Beitrag anzeigenMit 'direkter' Kommunikation über IP's oder per /dev/LAN1 usw hab ich mich nie beschäftigt - keine Ahnung, ob man da vielleicht noch einen extra Protokollstack programmieren muss etc. Fazit: Gute Idee - könnte gehen, muss aber nicht. Einfach ausprobieren ...
Kommentar
-
Nachtrag: Ging mir nicht aus dem Kopf, nach dem Motto 'da war doch mal was'. Hier hat mal jemand mein Trovis-Plugin so umgebaut, dass es ohne socat per direct IP läuft. Deine Idee sollte also funktionieren, und Aufwand ist es auch keiner. Ich denke vermutlich einfach nur (auch aus beruflichen Gründen) zu sehr in Schichtenmodellen ...
/tom
Kommentar
-
Zitat von Tom Bombadil Beitrag anzeigenNachtrag: Ging mir nicht aus dem Kopf, nach dem Motto 'da war doch mal was'. Hier hat mal jemand mein Trovis-Plugin so umgebaut, dass es ohne socat per direct IP läuft. Deine Idee sollte also funktionieren, und Aufwand ist es auch keiner. Ich denke vermutlich einfach nur (auch aus beruflichen Gründen) zu sehr in Schichtenmodellen ...
Kommentar
-
Gutes Gelingen!
/tom
Nachtrag: Hier noch eine gute Seite über Modbus. Die Links unten sind Gold wert, wenn man Modbus grundsätzlich verstehen und tiefer einsteigen will - besonders der erste Link mit der Übersicht über die verschiedenen read/write-Befehle usw.Zuletzt geändert von Tom Bombadil; 10.09.2022, 17:54.
Kommentar
Kommentar