Installation
Laden Sie das Paket für Ihre Architektur und installieren Sie es. apt ist dpkg vorzuziehen, weil es auflöst, was das Paket benötigt.
sudo apt install ./elxmodbusmqtt_1.2.38_amd64.deb
systemctl status elxmodbusmqtt
xdg-open http://localhost:8080
Welches Paket Sie brauchen, sagt uname -m: x86_64 ist amd64, aarch64 ist arm64, armv7l ist armhf.
systemctl status elxmodbusmqtt
journalctl -u elxmodbusmqtt -f
sudo systemctl restart elxmodbusmqtt
Ein Gateway anlegen
Ein Gateway ist der physische Weg zum Bus. Alles darunter — Geräte und Register — wird darüber abgefragt, eine Anfrage nach der anderen.
| Art | Was einzutragen ist |
|---|---|
| Modbus TCP | Adresse und Port des Geräts, üblicherweise 502 |
| RTU über TCP | Adresse und Port des Ethernet-nach-RS-485-Wandlers |
| Serielles RTU | Die Schnittstelle (/dev/ttyUSB0), Baudrate, Parität, Daten- und Stoppbits |
dialout. Zeigt das Terminal nichts als Zeitüberschreitungen und ist die Verkabelung richtig, prüfen Sie, ob der Dienstbenutzer das Gerät öffnen darf.Geräte und Register
Ein Gerät hat eine Busadresse, einen Namen, ein MQTT-Präfix und eine Registerliste. Eine Vorlage aus der Bibliothek füllt die Liste; ein eigenes Gerät beginnt leer.
| Feld | Bedeutung |
|---|---|
| Registerart | Holding und Coil sind beschreibbar; Input und Discrete nur lesbar |
| Adresse | Die Registernummer wie im Datenblatt — achten Sie auf den Anfang, manche Hersteller zählen ab eins |
| Datentyp | int16, uint16, int32, float32, Zeichenkette oder ein einzelnes Bit |
| Wortreihenfolge | Welche Hälfte eines 32-Bit-Werts zuerst kommt; die übliche Ursache unglaubwürdiger Zahlen |
| Faktor und Versatz | Machen aus einem rohen Zählwert eine Einheit: 0,1 macht aus 245 den Wert 24,5 |
| Bitmaske | Holt ein einzelnes Kennzeichen aus einem gepackten Statuswort |
| Intervall | Wie oft genau dieses Register abgefragt wird, falls es vom Gerät abweichen soll |
Der Broker
- Adresse und Port. Host und Port des Brokers; TLS steht dort zur Verfügung, wo der Broker es anbietet.
- Zugangsdaten. Benutzername und Kennwort, falls der Broker sie verlangt.
- Basis-Topic. Das Präfix, unter dem alles erscheint, was dieser Dienst veröffentlicht — etwa
home. - Retain. Ob der Broker den letzten Wert jedes Topics behalten soll.
- Befehls-Topics. Die Endung, die Schreibvorgänge annimmt, standardmäßig
/set.
Das vollständige Topic setzt sich als {Basis}/{Gerätepräfix}/{Registerschlüssel} zusammen, weshalb es sich allein aus der Konfiguration vorhersagen lässt — das Abonnement in Home Assistant kann geschrieben sein, bevor das Gerät überhaupt verdrahtet ist.
Das Protokollterminal
Das Terminal zeigt jede Anfrage und jede Antwort als rohen Rahmen, mit Zeit und Fehlern. Es ist das Werkzeug für die beiden schwersten Momente: ein Gerät in Betrieb zu nehmen, das niemand beschrieben hat, und zu erklären, warum etwas, das lief, nicht mehr läuft.
| Was zu sehen ist | Was es meist bedeutet |
|---|---|
| Zeitüberschreitung bei jeder Anfrage | Falsche Schnittstelle, falsche Baudrate, vertauschte A- und B-Adern oder keine Spannung am Gerät |
| Zeitüberschreitung nur bei einem Gerät | Falsche Busadresse oder dieses Gerät hängt nicht am Bus |
| Ausnahme 02 | Diese Registeradresse gibt es an diesem Gerät nicht |
| Ausnahme 03 | Der geschriebene Wert liegt außerhalb dessen, was das Gerät annimmt |
| CRC-Fehler unter Last | Zu langes Kabel, fehlende Abschlusswiderstände oder eine Baudrate, die die Leitung nicht trägt |
Sicherung und Wiederherstellung
Die gesamte Konfiguration — Gateways, Geräte, Registerkarten und Broker-Einstellungen — lässt sich in eine JSON-Datei ausgeben und daraus wiederherstellen. Diese Datei ist auch der richtige Weg, eine laufende Einrichtung auf eine zweite Maschine zu bringen oder die Konfiguration einer Anlage unter Versionsverwaltung zu stellen.
Wenn etwas nicht stimmt
| Erscheinung | Wo zu suchen ist |
|---|---|
| Die Weboberfläche öffnet sich nicht | systemctl status elxmodbusmqtt; der Dienst konnte Port 8080 womöglich nicht belegen |
| Werte stehen in der Oberfläche, aber nicht in MQTT | Veröffentlichen ist abgeschaltet oder die Broker-Zugangsdaten stimmen nicht — das Ereignisprotokoll sagt, was davon |
Ein Befehl in /set ändert nichts | Der Kanal ist nur lesbar oder das Register ist ein Input- statt eines Holding-Registers |
| Werte aktualisieren sich viel zu langsam | Zu viele Register an einem Gateway mit einem Intervall; erhöhen Sie es für die, die sich nicht ändern |
| Zahlen springen zwischen plausibel und absurd | Wortreihenfolge oder zwei Master am selben Bus, die einander überschreiben |