Es ist ganz einfach. Du vermischst hier Konfiguration für mqtt1 und mqtt2.
Das ist ein großes Problem mit den tollen Anleitungen im weiten Netz, sie sind weder mit einem Datum versehen, noch werden sie zuverlässig überprüft oder gar regelmäßig an die aktuellen Bedingungen angepasst.
MQTT ist ein M2M Protokoll (machine to machine). Es hat einen zentralen Ansatz, das heißt, des gibt einen Server (z.B. Mosquitto), der die Kommunikation steuert. Jedes Gerät, welches per MQTT kommunizieren will, muss sich als Client am Server anmelden. Tasmota bietet einen eingebauten MQTT Client, dem man nur die Zugangsdaten geben muss, damit die Kommunikation klappt.
Für den Desktop gibt es verschiedene Apps, die ebenfalls mit dem MQTT Server kommunizieren können, z.B. MQTT.fx oder mqtt spy. Auch für Android und iOS gibt es solche Apps, sie sind vor allem zur Fehlersuche sehr hilfreich, da man so die Kommunikation mit dem Server live beobachten kann und auch selbst beliebig Topics versenden kann. Ist eigentlich ein Muss, wenn man sich mit MQTT beschäftigt.
openHAB schließlich tritt ebenfalls als Client auf, das heißt, auch hier braucht es eine Stelle, wo die Kommunikation angebunden wird. Das ist die MQTT Bridge (wenn man mit mqtt2 arbeitet). Bitte nicht auf die Idee kommen, den System Broker zu verwenden, das hat nichts(!) mit dem normalen mqtt zu tun.
Nun steht zwar die Verbindung zum MQTT Server, aber das ist ja auch nur ein Teil. Es müssen noch Topics abonniert werden. mqtt2 ist ein OHv2 Binding, welches entsprechend das Thing-Modell nutzt, das heißt, es gibt für jedes Device am Bus ein Thing. Die Bridge ist überigens auch ein Thing, aber mit speziellen Eigenschaften, weil sie ja Bindeglied zwischen Kommunikationsbus und normalen Things ist, das heißt, man kann im gewöhnlichen Thing auswählen, dass die Kommunikation über eine bestimmte Bridge erfolgt (natürlich stehen hier immer nur die Bridges des entsprechenden Protokolls zur Verfügung, gewöhnlich hat man nur eine Bridge pro Protokoll, aber man könnte halt auch mehrere MQTT Server parallel betreiben, dann bräuchte man für jeden Server eine eigene Bridge)
In jedem gewöhnlichen Thing (also nicht bei der Bridge), gibt es Channel, die die eigentlichen Informationen tragen, also z.B. Schaltbefehle entgegennehmen oder Zustände melden. Wenn Du z.B. ein Sonoff Basic mit Tasmota geflasht hast, hast Du einen Channel für das Relais, welches vom Typ Switch ist. Weiterhin kannst Du auch Channel für andere Informationen anlegen, z.B. ob das device online ist (mit dem Topic LWT) oder wie die Anbindung zum WLAN ist (ein Detail aus dem JSON Objekt unter tele/.../status.
Ob Du die Konfiguration über Paper UI oder per *.things Datei erledigst, ist egal. wenn Du aber die Bridge über *.things anlegst, ist es natürlich besser, auch die eigentlichen Things über diese Datei anzulegen, einfach, damit alles an einer Stelle konfiguriert ist. Sieht dann so aus:
Things:
Code: Alles auswählen
Bridge mqtt:broker:mosquitto "MQTT Broker Pandora" @ "Keller" [
host="127.0.0.1",
port=1883,
secure=false,
clientID="OH2MQTT2Thing",
// keep_alive_time=30000, // Der Parameter ist falsch
// reconnect_time=60000 // dieser ebenso
keepAlive=30000,
reconnectTime=60000
] {
Thing topic myThing "Brunnen" {
Channels:
Type switch : ch1 "Schaltkanal" [ stateTopic="Aussen/Brunnen/stat/POWER", commandTopic="Aussen/Brunnen/cmnd/POWER" ]
Type number : ch1PowerTotal "Energie Total" [ stateTopic="Aussen/Brunnen/tele/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Total" ]
Type number : ch1PowerToday "Energie Heute" [ stateTopic="Aussen/Brunnen/tele/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Today" ]
Type number : ch1PowerYesterdday "Energie Gestern" [ stateTopic="Aussen/Brunnen/tele/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Yesterday" ]
Type number : ch1Power "Leistung" [ stateTopic="Aussen/Brunnen/tele/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Power" ]
Type number : ch1Voltage "Spannung" [ stateTopic="Aussen/Brunnen/tele/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Voltage" ]
Type number : ch1Current "Strom" [ stateTopic="Aussen/Brunnen/tele/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Current" ]
Type number : ch1Factor "Leistungsfaktor" [ stateTopic="Aussen/Brunnen/tele/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Factor" ]
}
}
Items:
Code: Alles auswählen
// Items for SHP2:
Switch Stecker1 "Brunnen" { channel="mqtt:topic:mosquitto:myThing:ch1" }
Number Power_Total "Energie Total: [%.3f kWh]" { channel="mqtt:topic:mosquitto:myThing:ch1PowerTotal" }
Number Power_Today "Energie Heute: [%.3f kWh]" { channel="mqtt:topic:mosquitto:myThing:ch1PowerToday" }
Number Power_Yesterday "Energie Gestern: [%.3f kWh]" { channel="mqtt:topic:mosquitto:myThing:ch1PowerYesterdday" }
Number Power "Leistung: [%.1f Watt]" { channel="mqtt:topic:mosquitto:myThing:ch1Power" }
Number Voltage "Spannung: [%.0f V]" { channel="mqtt:topic:mosquitto:myThing:ch1Voltage" }
Number Current "Strom: [%.3f A]" { channel="mqtt:topic:mosquitto:myThing:ch1Current" }
Number Factor "Leistungsfaktor: [%.2f]" { channel="mqtt:topic:mosquitto:myThing:ch1Factor" }
EDIT: In der Konfiguration das Wort
device gegen das Wort
topic getauscht...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet