ELX-Software

Industrielle Automatisierung und IoT

ELX-MODBUS

Eine Brücke zwischen dem Modbus-Bus und einem MQTT-Broker

Fragt Modbus-Geräte über Ethernet und den seriellen Bus RS-485 ab, wandelt die rohen Register in verständliche Werte, veröffentlicht sie über MQTT und schreibt Befehle zurück. Vollständig im Browser eingerichtet — es gibt keine Konfigurationsdateien zu bearbeiten.

v1.2.38 LinuxARM Kostenlos

Gateways über TCP und seriell

Verbindung über Ethernet — Modbus TCP oder RTU über TCP — oder über eine lokale Schnittstelle wie /dev/ttyUSB0. Baudrate, Parität, Stoppbits und Zeitverhalten sind einstellbar.

Eine Bibliothek fertiger Geräte

Vorlagen nach den Datenblättern der Hersteller: Register, Skalierung, Bedienelemente und Aufzählungen sind bereits eingetragen. Ein bekanntes Gerät hinzuzufügen dauert zwei Klicks statt eines Nachmittags.

Register, ganz genau

Holding, Input, Coil und Discrete; ganze Zahlen, Gleitkommazahlen und Zeichenketten; Wort- und Byte-Reihenfolge; Bitmasken; Faktor und Versatz. Jedes einzelne Register lässt sich abschalten, ohne die übrigen zu berühren.

Ein lebendiges Dashboard

Gerätekacheln mit Werten, die sich an Ort und Stelle ändern, Schalter, Regler und Eingabefelder. Eine Kachel zu verschieben ändert zugleich die Abfragereihenfolge, denn die Reihenfolge auf dem Bildschirm ist die Reihenfolge auf dem Bus.

Ein Protokollterminal

Der rohe Verkehr in Hexadezimalform, mit Dauer und Fehler jeder Anfrage. Das ist der Bildschirm, der aus einem unbekannten Gerät ein laufendes macht.

Ein Paket, keine Abhängigkeiten

Ein einziges .deb richtet unter Debian, Ubuntu und Raspberry Pi OS einen systemd-Dienst ein. Builds für amd64, arm64 und armhf; sonst ist nichts zu installieren.

Screenshots

Das Dashboard: Gerätekacheln mit lebenden Werten, Schaltern und Reglern
Die Geräteliste und die Abfragereihenfolge
Die Registerkarte eines Geräts
Gateways: TCP und serielles RTU
Die Gerätebibliothek mit fertigen Vorlagen
Einstellungen des MQTT-Brokers
Das Protokollterminal — der lebende Verkehr in Hexadezimalform

Welches Problem das löst

Industriegeräte sprechen Modbus — ein Protokoll von 1979, das für Sensoren, Relais, Zähler und Antriebe zum Standard wurde. Haus- und Gebäudeautomation spricht MQTT. Von allein treffen die beiden nicht aufeinander, und das übliche Mittel ist ein Haufen Skripte, eines je Gerät, von denen jedes aufhört zu funktionieren, wenn jemand eine Registeradresse ändert.

ELX-MODBUS ist genau dieser Haufen, ersetzt durch einen Dienst. Er fragt den Bus ab, wandelt rohe Register in benannte Werte, veröffentlicht sie zu Ihrem Broker und nimmt Befehle entgegen. Alles wird im Browser eingerichtet.

Modbus-Geräte

Sensoren, Relais, Antriebe, Zähler — an RS-485 oder Ethernet

ELX-MODBUS

Abfragen, dekodieren, veröffentlichen, zurückschreiben

MQTT-Broker

Home Assistant, Node-RED, OpenHAB, Ihr eigener Code

Drei Schritte bis zu Daten im Broker

  1. Ein Gateway anlegen. Beschreiben Sie die Verbindung zum Bus: die Adresse eines RTU-über-TCP-Wandlers oder die serielle Schnittstelle mit Baudrate und Parität.
  2. Ein Gerät anlegen. Wählen Sie eine Vorlage aus der Bibliothek oder bauen Sie Ihre eigene Registerkarte, dann setzen Sie die Busadresse und das MQTT-Präfix.
  3. Den Broker eintragen. Adresse eingeben und Veröffentlichen einschalten. Die Werte fließen sofort in Topics, und Befehle fließen zurück.
Wie die Abfrage sich verhältInnerhalb eines Gateways laufen die Anfragen streng nacheinander — der Bus hat einen Master — und der Liste von oben nach unten folgend. Verschiedene Gateways werden parallel abgefragt. Das Intervall wird je Gerät oder je einzelnem Register gesetzt.

Wie aus Werten Topics werden

Ein rohes Register wird über Wert = roh × Faktor + Versatz zum Wert, unter Berücksichtigung des Datentyps, der Wort- und Byte-Reihenfolge und einer Bitmaske. Das Ergebnis wird nach {Basis}/{Präfix}/{Schlüssel} veröffentlicht.

Eine Klimaanlage im Wohnzimmer
home/livingroom/ac/temp        → 24.5      (bei jeder Abfrage veröffentlicht)
home/livingroom/ac/set_temp    ← 22.0      (Befehls-Topic, wird ins Register geschrieben)
home/livingroom/ac/mode        → cooling

Kanäle mit Lesen und Schreiben erhalten ein Befehls-Topic — standardmäßig {Topic}/set. Ein dorthin gesendeter Wert rückt in der Abfragewarteschlange nach vorn und wird sofort geschrieben, weshalb sich die Steuerung unmittelbar anfühlt und nicht um einen Abfragezyklus verzögert.

RetainMit gesetztem Retain-Kennzeichen behält der Broker den letzten Wert und gibt ihn einem neuen Abonnenten beim Verbinden. Ein Dashboard, das um drei Uhr nachts geöffnet wird, zeigt Zahlen statt Leerstellen.

Die Gerätebibliothek

In den Vorlagen sind Registerkarte, Skalierung und Bedienelement bereits nach Datenblatt eingerichtet. Darunter:

GruppeGeräte
KlimaModbus-Adapter für Klimageräte, Kesselregler mit OpenTherm und eBus, Lüftungsanlagen
RelaisSechs- und sechzehnkanalige Relaismodule mit Befehlsregistern zum Öffnen und Schließen
SensorenTemperatur- und Feuchtefühler, Multisensoren, 1-Wire-Fühler
LichtDimmer, LED-Steuerungen, DALI-Gateways
AnalogAusgangsmodule 0–10 V und 4–20 mA
Alles ÜbrigeEin leeres eigenes Gerät, bei dem Sie die Register selbst eintragen
Ein Gerät, das nicht in der Bibliothek stehtLegen Sie ein eigenes Gerät an und tragen Sie die Register von Hand ein — zu jedem Feld gibt es einen Hinweis, was hineingehört. Das Protokollterminal hilft, Adressen und Formate zu finden, indem es zeigt, was das Gerät tatsächlich antwortet.

Auf einen Blick

Transporte
Modbus TCP, RTU über TCP, RTU über serielle Schnittstelle
Registerarten
Holding, Input, Coil, Discrete
Datentypen
int, float, Zeichenkette, Bitmasken, Wort- und Byte-Reihenfolge
Betriebssysteme
Debian, Ubuntu, Raspberry Pi OS
Architekturen
amd64, arm64, armhf
Einrichtung
Weboberfläche; Zustand in SQLite, als JSON ausgebbar
Port der Oberfläche
8080 standardmäßig
Externe Abhängigkeiten
Keine

ELX-MODBUS

Eine Brücke zwischen dem Modbus-Bus und einem MQTT-Broker

Herunterladen

In derselben Rubrik