RS485 Module,  Uncategorized

RS485 WLan WiFi Modbus Bridge Gateway?

Wie so häufig basiert eine Erklärung auf einer verständlichen Kommunikation oder ganz einfach einer verständlichen Sprache. Kommt es zu einem Transfer von Daten unterliegt dieser entsprechenden Schichten, beispielsweise OSI – Model. Üblicherweise passiert diese „Schichtung“ im typischen Rahmen eines Gateways oder mal ganz praktisch einem Router.

Reduziert man sich nun auf eine Datenumsetzung von RS485 auf beispielsweise WLan ist die Bezeichnung Gateway fragwürdig. Der Transfer reduziert sich hier auf Schicht 4 ganz gleich ob TCP (Transmission Control Protocol) oder UDP (User Datagram Protocol).

Hierzu addiert sich nun die Anwendungsschicht im OSI – Model Schicht 7. Hier werden typische Protokolle wie HTTP, SMTP, FTP, MQTT,… innerhalb des vorgenannten Layer 4 Transportschicht durchgereicht.

Dementsprechend reduzieren wir uns auf die Bezeichnung Bridge, zu Deutsch eine Brücke. Ganz praktisch – im Bezug unseres RS485 Tasmota Modbus Modul – es wird vom RS485 Level (von -7V bis +12V) auf UART Level (3,3V) umgesetzt. Eine höhere serielle Signalspannung wird auf eine niedrigere Signalspannung und umgekehrt umgesetzt. Das passiert gleichermassen wie bei einem RS485 USB Konverter, also RS485 Level auf 5V Level.

RS485 WLan Bridge im Detail

Basierend auf der oben beschriebenen Funktionsweise erfolgt dies alleinig durch Hardware. Wird ein RS485 Signal empfangen wird dieses auf UART Level reduziert und geht auf die serielle Schnittstelle des ESP8266 des EI-OT RS485 Moduls über.

Wie man nun weiß erscheinen die seriellen Daten nicht im Webinterface der Tasmota Firmware, sondern lediglich in der Konsole, – die übliche Form seriell zu kommunizieren -. Mittels entsprechender Syntax / Tasmota Befehlssatz kann man nun direkt über WLan – man nutzt also TCP / die Transportschicht in Kombination mit dem HTTP Protokoll (die Tasmota Benutzeroberfläche / Konsole) um Daten auf RS485 auszugeben bzw. zu empfangen -.

RS485 und Modbus

Wie bereits erwähnt bezeichnet RS485 eine Schnittstelle also Hardware, Modbus hingegen ist ein standardisiertes Protokoll welches unter anderen (auch RS232 und RS422) die RS485 Schnittstelle nutzt. Kommt nun Modbus zum Tragen wird man mit einem typischen seriellen Befehlssatz bestenfalls (meist nicht einmal das) einen Error als Antwort erhalten. Denn im Eigentlichen ist RS485 keine einfache serielle Schnittstelle sondern ein Bussystem. Mit einfachen Worten es können mehrere Teilnehmer über nur eine Schnittstelle kommunizieren. Dies können selbstredend unterschiedlichste Geräte sein, jedes mit individueller Funktion als auch Firmware und Protokoll zum einfachen Verständnis Befehlssätze.

Das Modbus Protokoll vereinfacht basierend auf einem einheitlichen Standard / Syntax die individuelle Kommunikation mit jedem Endgerät. Hierbei sollte man nun zwischen Modbus RTU (Master/Slave) und Modbus TCP (Client/Server) differenzieren. Im Bezug der Topologie sollte man stets beachten der Master im TCP Modbus ist stets der Client und der Slave ist der Server.

Zurück zum Tasmota EI-OT RS485 WLan Bridge Modul wird nun die jeweilig notwendige Konfiguration, basierend auf die Anwendung deutlich.

Denkbare Modbus Anwendungen sind

Modbus Bridge im Vergleich zu TCP Bridge

Oftmals ist die Lösung viel einfacher als man zunächst dachte. Häufig ist der Ansatz eine kabelgebundene RS485 Anbindung durch eine kabellose WLan Verbindung zu ersetzen. Hierbei sollte man stets zwischen Protokoll und Transport differenzieren.

Als einfaches Beispiel, die vormals kabelgebundene Lösung basiert häufig auf einem Slave (Endgerät) und einem Master (PC) oft in Kombination mit einem RS485 USB Konverter und einer Software mit entsprechender Schnittstellen Infrastruktur.

Ersetzt man nun den RS485 USB TTL Konverter durch das Tasmota RS485 Modul ist es keineswegs notwendig die Daten / das Protokoll (Modbus) zu interpretieren. Es muss lediglich die Schnittstelle entsprechend definiert werden, im Bezug Modbus üblicherweise Port 502. Zur Erinnerung TCP ist der Transport Schicht / Layer, das heisst das Modbus Protokoll wird über TCP übertragen, ohne eine Veränderung des Datenpakets / Protokoll. Modbus nutzt den Transportlayer / TCP zur Übertragung der Datenpakete.

Hierzu darf allerdings die RS485 Schnittstelle / GPIO1 und GPIO3 nicht als Modbus-Bridge, sondern muß als TCP-Bridge konfiguriert werden.

Im Detail handelt es sich hierbei um eine Serial to TCP Bridge, das heisst die Konfiguration der Schnittstelle basiert auf dem typischen Befehlssatz serieller Schnittstellen.

Die Konfiguration und Initialisierung der Tasmota Serial to TCP Bridge wird hier überschaubar dokumentiert.

Im Vergleich zur Serial to TCP wird bei der Tasmota Modbus Bridge das vorgenannte Modbus genutzt. Das heisst es erfolgt ein Request basierend auf dem Modbus Protokoll und das Endgerät antwortet basierend auf dem Request.

Hierzu wird die Tasmota Konsole mit entsprechendem Befehlssatz verwendet innerhalb der Tasmota Modbus Bridge verwendet. Mittels dem Befehl ModbusSend wird ein Request in Form eines JSON Object über die serielle Schnittstelle des ESP8266 auf den RS485 Konverter ausgegeben.

Das jeweilige Endgerät interpretiert den Modbus Request und antwortet mit einem entsprechendem Datenpaket über den RS485 Konverter über die serielle Schnittstelle des ESP8266. Die Konsole interpretiert das mittels ModbusReceived Datenpaket und gibt das Datenpaket als JSON Object in der Konsole aus.

Im Detail fungiert das EI-OT Tasmota RS485 Modul somit als Modbus „Master“ um Daten via Befehlszeile / Konsole zu senden und entsprechend zu empfangen. Möchte man nun die Daten anderweitig verwenden bedarf es entweder entsprechender Tasmota Rules oder die Verwendung von Tasmota Script.

Dementsprechend stehen folgende Tasmota Firmware Versionen zum Download bereit

RS485 Tasmota Firmware in Deutsch mit Tasmota Script Unterstützung
https://www.ei-ot.de/download/4134/?tmstv=1723019633

RS485 Tasmota Firmware english version with Tasmota Script Support
https://www.ei-ot.de/download/4133/?tmstv=1723018886

RS485 Tasmota Firmware in Deutsch mit Tasmota Rules Unterstützung
https://www.ei-ot.de/download/4130/?tmstv=1723018721

RS485 Tasmota Firmware english version with Tasmota Rules Support
https://www.ei-ot.de/download/4127/?tmstv=1723018749

Selbstredend ist auch die Umsetzung auf ein anderes Protokoll beispielsweise MQTT Telnet bzw. fixer Log Server mit entsprechendem Port, oder gar HTTP realisierbar.

2 Comments

  • Jörg Nissen

    Hallo,
    ich setzte das Modul mit einem SDM72D ein. Ich bekomme auch Daten. Die Aktuellen Wert sind richtig. Allerdings wird mir bei den Total werten, ein anderen Wert als auf dem Zähler angezeigt.
    Zähler zeigt 2.89 in Tasmota 0.029. Mir scheint hier wird irgentwie der Wert in in KWH umgerechnet. Kann ich hier irgentwo was einstellen ?

  • admin

    Hi Jörg,
    hm ich kratze mich da mal vorsichtig am Kopf 😉
    Also ich vermute Du hast das nachfolgende Script für den SDM72D (MODBus) von der Tasmota Seite verwendet :
    https://tasmota.github.io/docs/Smart-Meter-Interface/#sdm72d-modbus

    >D
    >B
    ->sensor53 r
    >M 1
    +1,25,mN1,0,9600,SDM72D,26,1,01040000,01040002,01040004,01040006,01040008,0104000a,0104000c,0104000e,01040010,01040012,01040014,01040016,01040018,0104001a,0104001c,0104001e,01040020,01040022,0104002a,0104002e,01040030,01040034,01040038,0104003c,0104003e,01040046,01040048,0104004A,01040156,01040158,0104018c,01040500,01040502
    1,010404ffffffff@i0:1,Voltage P1,V,voltage_phase1,2
    1,010404ffffffff@i1:1,Voltage P2,V,voltage_phase2,2
    …..

    weiter unten im Script ist
    1,010404ffffffff@i26:1,Energy Imported,kWh,energy_imported,3
    1,010404ffffffff@i27:1,Energy Exported,kWh,energy_exported,3
    1,010404ffffffff@i28:1,Energy Total,kWh,energy_total,3
    1,010404ffffffff@i29:1,Energy Reactive Total,kVArh,energy_reactive_total,3
    1,010404ffffffff@i30:1,Net Energy,kWh,energy_net,3
    das heisst es wird auf kWh umgerechnet

    Ohne das ich jetzt tiefer in das Script eintauche wenn Du die obigen Zeilen durch

    1,010404ffffffff@i26:1,Energy Imported,kWh,energy_imported,2
    1,010404ffffffff@i27:1,Energy Exported,kWh,energy_exported,2
    1,010404ffffffff@i28:1,Energy Total,kWh,energy_total,2
    1,010404ffffffff@i29:1,Energy Reactive Total,kVArh,energy_reactive_total,2
    1,010404ffffffff@i30:1,Net Energy,kWh,energy_net,2

    könnte die Divison draussen sein, bin mir nicht sicher aber einen Versuch ist es wert

    Grüße
    Markus

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert


Der Zeitraum für die reCAPTCHA-Überprüfung ist abgelaufen. Bitte laden Sie die Seite neu.