Modbus ist... speziell...
Schau Dir gerne an, wie das konfiguriert wird

dann wirst Du schnell verstehen, was ich meine.
Grundsätzlich gibt es bei Modbus auch zwei verschiedene Optionen, nämllich "allgemeines" Modbus und gerätespezifisches Modbus. Bei letzterem kann die Konfiguration durchaus komfortabel sein, nur muss exakt Dein Gerät unterstützt werden, z.B. das Modbus Sungrow Binding unterstützt diverse Sungrow Inverter. Die Konfiguration reduziert sich dann auf wenige Eckdaten (IP, User, Passwort...) und Du bekommst eine komplette Anbindung mit diversen Channels, die komplett aufbereitet sind und "einfach funktionieren". Hast Du aber ein Gerät, welches nicht speziell unterstützt wird, musst Du auf die allgemeine Modbus Unterstützung ausweichen, dann musst Du die exakten Adressen kennen, ob es sich um Coils, Input, Holding oder Discrete handelt usw. Und Du musst ebenfalls wissen, in welchem Format Du auf die Werte zugreifen willst/musst. Du musst also im Grunde das anzusteuernde Gerät sehr genau kennen, um überhaupt eine Chance zu haben, die Definition in openHAB korrekt anzugeben.
Modbus ist - auf die allgemeine Variante bezogen - definitiv ein Binding für weit fortgeschrittene Anwender (nicht, dass es nicht auch als Anfänger möglich wäre, das hinzukriegen, aber das Frustrationsrisiko ist sehr hoch).
Mqtt auf der anderen Seite ist ein tolles Protokoll, zum einen, weil es sehr einfach zu implementieren ist (mosquitto installieren, Adresse eintragen, auf Wunsch User/Passwort, muss aber nicht sein, und los), zum anderen weil es trotz M2M-Schnittstelle auch leicht für Menschen les- und verstehbar ist.
Es gibt als Tool z.B. den MQTT Explorer (Microsoft Store, kostenlos, OpenSource) um die gesamte Kommuniktaion einzusehen und gegebenenfalls zu debuggen, in openHABian ist eine Installationsroutine für mosquitto (mit User/Passwort) schon implementiert, openHAB hat eine sehr gute Unterstützung für mqtt (incl. voller Unterstützung von QuantityType/Units of Measurement) und selbstverständlich kannst Du direkt aus Rules heraus auch Topics publishen, die nicht als Channel angelegt sind (wichtig, um dynamische Topics einsetzen zu können). Da mqtt aber
keine Core Funktion ist, musst Du hier die mqttActions importieren, um sie nutzen zu können. Das ist aber nur eine Zeile Code, also nix Wildes.
Code: Alles auswählen
val mqttActions = getActions("mqtt","mqtt:broker:mosquitto")
Nach dieser Zuordnung steht die Action
mqttActions.publishMQTT() zur Verfügung, der Du dann das Topic, die Payload, sowie optional Retention mit übergeben kannst, das ist also echt komfortabel. Der Zugriff auf den Broker wird dann über die als Thing konfigurierte Bridge gemacht (im Beispiel heißt die Bridge
mqtt:broker:mosquitto)
Bezüglich der fehlenden Authentisierung: Du kannst mit sendHttpGetRequest wahlweise auch einen Header mit übergeben und dort die Authentisierung definieren (falls nicht über die URL authentisiert werden kann), Du musst dazu natürlich wissen, wie der Header aussehen muss.
Und schon sind wir wieder an der Stelle, wo ich darauf hinweise, dass mqtt "einfach einfach" ist.
Auch bei mqtt kann man die Kommunikation absichern (sogar mit Zertifikaten und verschlüsselter Kommunikation, User und Passwort ohnehin...), aber es ist eben "einfach einfach", Zugriffsdaten in mosquitto und den Clients eintragen, fertig.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet