ich habe in meinem Häuschen eine Alpha Innotec Lüftungsanlage die eine Modbus RTU Schnittstelle hat.
Diese wollte ich unbedingt in meine Loxone Installation einbinden, aber die Modbus RTU Extension war mir mit 226€ dann doch einen Riemen zu teuer.
Kurzentschlossen dachte ich mir, das bau ich mir selbst.
Ich hatte glücklicherweise grade ein unbenutztes BeagleBone Green herumliegen (ca. 38€), und hab mir dazu noch ein RS485 Cape bei Amazon gekauft (ca.16€).
In Summe also knapp 55€ in Hardware.
Ich hab mich vor einer ganzen Weile schon mal mit Modbus beschäftigt und mich erinnert das ein RTU Frame im Prinzip nur in ein TCP Paket gepackt wird und schon ist's Modbus TCP.
Nach einigen Hürden mit der Problematik wie ich dem Kernel mitteile das er einen GPIO verwenden soll um am RS485 Treiber zwischen senden und Empfangen umzuschalten,
und einer eher dürftigen Doku des RS485 Capes, hab ich es schlussendlich geschafft ein funktionierendes Python Programm zu schreiben das als Gateway zwischen den beiden Welten fungiert :-)
Wer das ganze nachbauen möchte, findet den Code auf Github
Benötigtes Material:
- BeagleBone Green oder Black (sollte beides funktionieren)
- Waveschare RS485 Cape (ein anderes sollte auch gehen, dann muss man lediglich schauen welcher GPIO RX/TX umschaltet)
Dieser Kernel hat einen Patch für das verwenden eines GPIO als "RX/TX Umschalter" integriert.
Meinen Recherchen nach haben das, warum auch immer, die neueren Kernel nicht.
Unterstützt werden Momentan die Modbus Funktionen 1,2,3,4 und 6, weitere hab ich nicht getestet.
Ich hab das ganze jetzt seit letzter Woche Donnerstag laufen und noch keinerlei Beschwerden gehabt.
Wie immer, bei Fragen, Fragen :-)
Kommentar