MQTT Konfiguration OH3.4.4

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Johannes911
Beiträge: 55
Registriert: 17. Aug 2020 08:02

Re: MQTT Konfiguration OH3.4.4

Beitrag von Johannes911 »

ja, das Testsystem starte ich gefühlt alle 5 Minuten :-(

Benutzeravatar
udo1toni
Beiträge: 13867
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: MQTT Konfiguration OH3.4.4

Beitrag von udo1toni »

Du hast da ein paar Fehler drin.

Grob gesagt: Du kannst Dir nicht einfach aussuchen, wie die UIDs der einzelnen Teile heißen. Bei der Formatierung hast Du grundsätzlich freie Hand, aber es sollte lesbar bleiben und möglichst konsistent sein.
Du hast die Konfiguration so angelegt, Things unabhängig von der Bridge erzeugt werden, das kann man machen, aber es bedeutet mehr Aufwand und (viel wichtiger) mehr Fehlerquellen.
Außerdem hast Du beim switch Channel einen Parameter OFF angegeben, den geibt es nicht. Wenn, dann off (aber den brauchst Du nicht)

Code: Alles auswählen

Bridge mqtt:broker:myMQTTBroker [
    host="192.168.180.30",
    secure=false 
]

Thing mqtt:topic:myMQTTBroker:tasmota_01 (mqtt:broker:myMQTTBroker) "" [
    availabilityTopic="tele/tasmota/LWT",
    payloadAvailable="Online",
    payloadNotAvailable="Offline"
] {
    Channels:
        Type switch : PowerSwitch "Power Switch" [
            stateTopic="stat/tasmota_01/POWER", 
            commandTopic="cmnd/tasmota_01/POWER"
        ]
// Sonoff Pow (read current wattage; for read and switch on-state see above)
        Type number : Tasmota_01Power        [
             stateTopic="tele/tasmota_01/SENSOR", 
             transformationPattern="JSONPATH:$.ENERGY.Power"
        ]
}
wäre eine Möglichkeit (man beachte insbesondere die geänderte UID mqtt:topic:myMQTTBroker:tasmota_01 statt mqtt:topic:tasmota:tasmota_01)

Besser (wegen Lesbarkeit und so...)

Code: Alles auswählen

Bridge mqtt:broker:broker "MQTT Broker" [
    host="192.168.180.30",
    secure=false 
 ] {
    Thing topic tasmota_01 "Tasmota Steckdose 1" [
          availabilityTopic="tele/tasmota/LWT",
           payloadAvailable="Online",
        payloadNotAvailable="Offline"
    ] {
    Channels:
        Type switch : ch1  "Schalter 1" [ stateTopic="stat/tasmota_01/POWER", commandTopic="cmnd/tasmota_01/POWER" ]
        Type number : pow1 "Leistung 1" [ stateTopic="tele/tasmota_01/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Power", unit="W" ]
    }
}
Zunächst mal hast Du mit großer Wahrscheinlichkeit nur einen Broker. Dass es sich um einen MQTT Broker handelt, ist zwingend, denn er ist mit dem mqtt Binding definiert. Allerdings ist es nett, in der Liste der Things ein sinnvolles Label präsentiert zu bekommen :)
Darunter ist das Thing als Kind der Bridge angelegt. Das hat mehrere Vorteile. Zum einen muss man nicht extra definieren, welcher Broker zuständig ist. Man erspart sich auch die Redundanz, was die Zugehörigkeit zum Binding betrifft. Außerdem kann man in passenden Editoren die eingerückten Textteile zuklappen :) aund erhält so eine fabelhafte Übersicht über die verschiedenen Things.
Die Channelnamen sollten möglichst kurz gestaltet sein (vor allem, weil Du sie eventuell an anderer Stelle eintippen musst). der größte Teil der Tasmota Geräte dürfte nur einen Kanal haben, aber vielleicht handelt es sich ja um eine mehrkanalige Ausführung, wer weiß.
Wenn man die Unit mit angibt, kann man direkt ein Number:Power Item verknüpfen und erhält die korrekte Anzeige mitsamt der Einheit.

Die passenden Items sind dann

Code: Alles auswählen

Switch tasmota01Switch "Tasmota 1" {channel="mqtt:topic:broker:tasmota_01:ch1"}
Number:Power tasmota01Power "Tasmota 1 Power" {channel="mqtt:topic:broker:tasmota_01:pow1"}

EDIT: Typo in der Item-Konfiguration korrigiert
EDIT: Typo im topic korrigiert (cmnd stat cmd)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Johannes911
Beiträge: 55
Registriert: 17. Aug 2020 08:02

Re: MQTT Konfiguration OH3.4.4

Beitrag von Johannes911 »

danke, die beiden Dateien werden nach kleiner Änderung jetzt fehlerfrei geladen. In der ITEMS muss nach channels ein = und nicht ein :

das war alles für mich nachvollziehbar.
Allerdings bekomme ich keine Werte geliefert. Da habe ich den mqtt broker im Verdacht, das der gar nichts tut (wenn er denn gestartet ist und überhaupt läuft. Ich sehe in den Logs keinerlei Eintrag zu einem mqtt.

Die Steckdose ist per ping oder auch per http erreichbar.

Johannes911
Beiträge: 55
Registriert: 17. Aug 2020 08:02

Re: MQTT Konfiguration OH3.4.4

Beitrag von Johannes911 »

einen Schritt bin ich weiter, ich bekomme mqtt Meldungen im openhab.log:
2023-06-05 09:45:24.639 [INFO ] [.reconnect.PeriodicReconnectStrategy] - Try to restore connection to '192.168.180.30'. Next attempt in 60000ms
2023-06-05 09:45:24.647 [INFO ] [.transport.mqtt.MqttBrokerConnection] - Starting MQTT broker connection to '192.168.180.30' with clientid 6da59219-601a-42f1-a696-7f908655a1ad
und im events.log:
2023-06-05 09:45:24.645 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'mqtt:broker:broker' changed from OFFLINE (COMMUNICATION_ERROR): io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: /192.168.180.30:1883 to OFFLINE
2023-06-05 09:45:24.704 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'mqtt:broker:broker' changed from OFFLINE to OFFLINE (COMMUNICATION_ERROR): io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: /192.168.180.30:1883

Johannes911
Beiträge: 55
Registriert: 17. Aug 2020 08:02

Re: MQTT Konfiguration OH3.4.4

Beitrag von Johannes911 »

also mit dem MQTT Explorer kann ich zu keiner mir sinnvoll erscheinenden IP-Adresse eine Verbindung aufbauen. Ich schließe daraus dass noch gar kein mqtt broker im Hintergrund läuft

Aus Verzweifelung überlege ich schon ob ich auf dem NAS nicht einen eigenen Docker für den Mosquitto installiere

Benutzeravatar
udo1toni
Beiträge: 13867
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: MQTT Konfiguration OH3.4.4

Beitrag von udo1toni »

mosquitto auf dem raspberry per openhabian-config?

Schau bitte mal in die Datei /etc/mosquitto/mosquitto.conf (aus dem Kopf...)
dort sollte es zwei Zeilen dieser Art geben:

Code: Alles auswählen

listener 1883
allow_anonymous true
Diese Zeilen stehen aus irgendeinem Grund eventuell unten in der Datei, sie müssen aber ganz oben stehen (Kommentarzeilen dürfen drüber auftauchen, aber keine aktiven Parameter)
Falls das bei Dir auch so ist, bewege die beiden Zeilen nach oben vor den ersten nicht auskommentierten Parameter und speichere die datei neu ab (Du musst die Datei mittels sudo nano /etc/mosquitto/mosquitto.conf bearbeiten, damit Du Schreibrechte hast).

Anschließend musst Du den Dienst neu starten:
sudo systemctl restart mosquitto.service
Danach sollte die Verbindung direkt zustande kommen.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Johannes911
Beiträge: 55
Registriert: 17. Aug 2020 08:02

Re: MQTT Konfiguration OH3.4.4

Beitrag von Johannes911 »

sorry, es lief kein Mosquitto. Ich dachte openHAB würde beim Laden des addon einen internen starten.
Ich habe jetzt einen Mosquitto auf dem NAS installiert und gestartet.
Mit dem MQTT Explorer sehe ich schon mal den Mosquitto

nur sind die mqtt logs wieder weg

Wo bekommt openHAB die ip-Adresse des Mosquitto her? 192.168.180.185
wenn ich das richtig verstehe steht in den Things ja die ip-Adresse des Gerätes drin, in meinem Fall die Steckdose unter 192.168.180.30

Johannes911
Beiträge: 55
Registriert: 17. Aug 2020 08:02

Re: MQTT Konfiguration OH3.4.4

Beitrag von Johannes911 »

Die Steckdosen liefern auch alle 5 Minuten Werte, laut MQTT Explorer

Benutzeravatar
udo1toni
Beiträge: 13867
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: MQTT Konfiguration OH3.4.4

Beitrag von udo1toni »

Das openHAB Addon für MQTT stellt einen MQTT Client zur Verfügung, nicht mehr und nicht weniger. Das heißt, Du konfigurierst die "Bridge" (mit exakt den gleichen Einstellungen wie jeden anderen Client auch.
Die IP-Adresse des Brokers ist die IP-Adresse des Brokers, so, wie Du sie in der Steckdose oder auch im MQTT Explorer einträgst :)

Unter openHAB 2.2 - 2.5.12 gab es einen embedded MQTT Broker (Moquette), der als separates Binding installiert werden konnte. Moquette hat aber mehrere Unzulänglichkeiten, insbesondere war er auf einem alten Stand und wurde nicht mehr weiterentwickelt. Aus Sicht von openHAB gibt es auch kaum Gründe, Moquette zu verwenden, gerade wenn man mit openHABian eine recht komfortable Möglichkeit hat, Mosquuitto zu installieren - z.B. knxd wurde auch nicht in openHAB integriert (das entspräche funktional ungefähr einem MQTT Broker)

Wenn das NAS ohnehin 24/7 läuft, ist diese Variante im Grunde besser als Mosquitto parallel zu openHAB zu installieren, denn so sind die beiden Dienste vollständig voneinander getrennt.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Johannes911
Beiträge: 55
Registriert: 17. Aug 2020 08:02

Re: MQTT Konfiguration OH3.4.4

Beitrag von Johannes911 »

nach vielen Versuchen und nach noch mal eine genaue Suche in der Information die der Schalter per WEB-Interface ausgibt habe ich es endlich auch geschafft den Schalter zum SCHALTEN zu bewegen. Da sind in dem Beispiel oben in der tasmota.things Datei zwei Fehler:

a) der Befehl zum tasmota heißt cmnd und nicht cmd
b) der Befehl muss an anderer Stelle eingetragen sein als in der Datei oben

so nicht:
Type switch : ch1 "Schalter 1" [ stateTopic="stat/tasmota_01/POWER", commandTopic="cmd/tasmota_01/POWER" ]
sondern so:
Type switch : ch1 "Schalter 1" [ stateTopic="stat/tasmota_01/POWER", commandTopic="tasmota_01/cmnd/POWER, on="ON", off="OFF" ]
zumindest bei mir war das die Lösung für einen: Smart WIFI Socket A1T von nous

Antworten