Seite 3 von 4

Re: MQTT Konfiguration OH3.4.4

Verfasst: 6. Jun 2023 16:26
von udo1toni
Stimmt. cmd statt cmnd, passiert gerne mal.

Was die Stelle betrifft, an der cmnd stehen muss: Ja und Nein. Entweder so:

Code: Alles auswählen

Type switch : ch1  "Schalter 1" [ stateTopic="stat/tasmota_01/POWER", commandTopic="cmnd/tasmota_01/POWER" ]
oder so:

Code: Alles auswählen

Type switch : ch1  "Schalter 1" [ stateTopic="tasmota_01/stat/POWER", commandTopic="tasmota_01/cmnd/POWER" ]
Das ist abhängig davon, ob als FullTopic
%prefix%/%topic%/ oder %topic%/%prefix%/ gesetzt ist.
Falls Du beim Fulltopic selbst etwas einträgst: Es ist zwingend, dass zumindest die Variable %prefix% genutzt wird, besser aber, dass sowohl %topic% als auch %prefix% im Fulltopic verwendet werden. %topic% ist automatisch mit dem Inhalt des entsprechenden Feldes darüber gefüllt.

Hintergrund: Du kannst beliebig viele Geräte mit Tasmota flashen und in einem (W)LAN betreiben. Über das Fulltopic kannst Du für alle Geräte eine identische Organisation erreichen, über Topic dann trotzdem unterschiedliche "Klartextnamen" im Fulltopic setzen.
Es gibt gewöhnlich ein gemeinsames "Gruppentopic", über die man alle Tasmota Geräte in einem Verbund gemeinsam steuern kann, z.B. um auf allen Geräten gleichzeitig ein Firmwareupdate anzustoßen. Jedes Gerät ist immer auch über ein alternatives Topic erreichbar, welches Teile der MAC beinhaltet, darüber kann man ein zentrales Provisioning realisieren.

Re: MQTT Konfiguration OH3.4.4

Verfasst: 6. Jun 2023 17:04
von Johannes911
nun ja, ein Thing funktioniert aber bei weiteren scheitere ich wieder mal komplett.
Meiner Auffassung nach benötige ich nur eine Bridge zum mqtt broker. Daher war ich der irrigen Meinung es reicht dann zusätzliche Things mit Ihren channels darunter einzufügen. Geht aber nicht. Egal wie ich die Klammern auch setze: immer meckertopenHAB.

Anbei meine Testkonfiguration, wenn ich das zweite Thing auskommentiere ist's OK

Code: Alles auswählen

Bridge mqtt:broker:broker "MQTT Broker" [
    host="192.168.180.185",
    secure=false 
 ]   {
    Thing topic tasmota_30 "Tasmota Steckdose 1" [
          availabilityTopic="iot/Steckdosen/tasmota_30/LWT",
           payloadAvailable="Online",
        payloadNotAvailable="Offline"
 ]   {
    Channels:
        Type switch : ch1  "Schalter"      [ stateTopic="iot/Steckdosen/tasmota_30/POWER",   commandTopic="iot/Steckdosen/tasmota_30/cmnd/Power", on="ON", off="OFF" ]
        Type number : pow1 "Leistung"      [ stateTopic="iot/Steckdosen/tasmota_30/SENSOR",  transformationPattern="JSONPATH:$.ENERGY.Power", unit="W" ]
     }}
/*     {
    Thing topic tasmota_31 "Tasmota Steckdose 2" [
          availabilityTopic="iot/Steckdosen/tasmota_31/LWT",
           payloadAvailable="Online",
        payloadNotAvailable="Offline"
    ] {
    Channels:
        Type switch : ch1  "Schalter"      [ stateTopic="iot/Steckdosen/tasmota_31/POWER",   commandTopic="iot/Steckdosen/tasmota_31/cmnd/Power", on="ON", off="OFF" ]
        Type number : pow1 "Leistung"      [ stateTopic="iot/Steckdosen/tasmota_31/SENSOR",  transformationPattern="JSONPATH:$.ENERGY.Power", unit="W" ]
     }}
 
auch vor dem ersten Thing eine weitere Klammer bis zum Ende bringt hier nichts

Re: MQTT Konfiguration OH3.4.4

Verfasst: 6. Jun 2023 17:05
von Johannes911
kleine Zusatzfrage: wie bekomme ich das jeweilige LWT in ein ITEM bzw. angezeigt?

Re: MQTT Konfiguration OH3.4.4

Verfasst: 6. Jun 2023 19:09
von udo1toni
Du hast einen Klammerfehler :) Die Struktur sieht so aus:

Code: Alles auswählen

Bridge ... [Konfiguration der Bridge]
 {Thing [Konfiguration des Thing] {Channel Type... [Konfiguration des Type] Type ... } <- Ende der Channel und des Thing
  Nächstes Thing [Konfiguration des Thing] {Channel Type... [Konfiguration des Type] Type ... } <- Ende der Channel und des 2. Thing
} <- Ende der Bridge
Die angeführten Topics sind fehlerhaft (in jedem FullTopic kommen entweder stat/, cmnd/ oder tele/ vor (das ist das Prefix, und zar egal wo es nun stehen muss), der Teil vor dem Prefix ist immer identisch, wahlweise ist ein Teil des Topics hinter dem Prefix identisch, siehe mein voriger Post.

Zeig bitte mal den Wert, den Du bei FullTopic in Tasmota eingetragen hast. Eigentlich sollte das FullTopic bei allen Tasmotas einer Installation identisch sein (z.B. %prefix%/%topic%/ oder auch home/%topic%/%prefix%/, aber auf jeden Fall muss unbedingt die Variable %prefix% vorkommen, als Ebene im FullTopic)

Was die Availability betrifft, so gibt es zwei Möglichkeiten: Entweder, Du legst sie (zusätzlich) als separaten switch Channel an (mit den zusätzlichen Parametern on="Online", off="Offline") oder Du wertest innerhalb einer Rule die Thing Trigger aus (Thing <thingUID> changed), das LWT als Element des Things zu definieren hilft lediglich, das Thing als ONLINE oder OFFLINE anzuzeigen. Ist das LWT nicht als AvailablilityTopic hinterlegt, so wird das Thing immer ONLINE angezeigt (es sei denn, die Bridge ist OFFLINE)

Re: MQTT Konfiguration OH3.4.4

Verfasst: 6. Jun 2023 20:01
von Johannes911
Danke. Ich dachte ich müsse jedes Thing auch noch getrennt klammern. Das funktioniert jetzt.

das mit dem LWT habe ich bestimmt falsch verstanden, denn so wie ich es gemacht habe wird die Änderung nicht angezeigt obwohl im events.log es richtig angezeigt wird
2023-06-06 17:46:55.879 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'tasmota01Switch' changed from ON to OFF
2023-06-06 17:53:23.191 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'mqtt:topic:broker:tasmota_30' changed from ONLINE to OFFLINE
2023-06-06 17:55:25.760 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'mqtt:topic:broker:tasmota_30' changed from OFFLINE to ONLINE
dazu die Things:

Code: Alles auswählen

Bridge mqtt:broker:broker "MQTT Broker" [
    host="192.168.180.185",
    secure=false 
 ]   {
    Thing topic tasmota_30 "Tasmota Steckdose 1" [
          availabilityTopic="iot/Steckdosen/tasmota_30/LWT",
           payloadAvailable="Online",
        payloadNotAvailable="Offline"
 ]   {
    Channels:
        Type switch : ch1  "Schalter"      [ stateTopic="iot/Steckdosen/tasmota_30/POWER",   commandTopic="iot/Steckdosen/tasmota_30/cmnd/Power", on="ON", off="OFF" ]
        Type switch : lwt1  "LWT"          [ availabilityTopic="iot/Steckdosen/tasmota_30/LWT", on="Online", off="Offline" ]
        Type number : pow1 "Leistung"      [ stateTopic="iot/Steckdosen/tasmota_30/SENSOR",  transformationPattern="JSONPATH:$.ENERGY.Power", unit="W" ]
     }
     
    Thing topic tasmota_31 "Tasmota Steckdose 2" [
          availabilityTopic="iot/Steckdosen/tasmota_31/LWT",
           payloadAvailable="Online",
        payloadNotAvailable="Offline"
    ] {
    Channels:
        Type switch : ch1  "Schalter"      [ stateTopic="iot/Steckdosen/tasmota_31/POWER",   commandTopic="iot/Steckdosen/tasmota_31/cmnd/Power", on="ON", off="OFF" ]
        Type number : pow1 "Leistung"      [ stateTopic="iot/Steckdosen/tasmota_31/SENSOR",  transformationPattern="JSONPATH:$.ENERGY.Power", unit="W" ]
     }

und die Items

Code: Alles auswählen

// Tasmota Schaltsteckdose mit IP #30
Switch tasmota01Switch "Schalter"  (EG_Tasmota_01, OO_Uebersicht) {channel="mqtt:topic:broker:tasmota_30:ch1"}
Number:Power tasmota01Power "Power"  (EG_Technik, OO_Uebersicht) {channel="mqtt:topic:broker:tasmota_30:pow1"}
String tasmota01LWT "Tasmota LWT"  (EG_Technik, OO_Uebersicht) {channel="mqtt:topic:broker:tasmota_30:lwt1"}
der Tasmota als Bild

Re: MQTT Konfiguration OH3.4.4

Verfasst: 6. Jun 2023 20:08
von Johannes911
hier noch die Übersicht aus dem MQTT Explorer

Re: MQTT Konfiguration OH3.4.4

Verfasst: 6. Jun 2023 20:30
von Johannes911
auf der openHAb seite :8080/settings/things/ wird der LWT korrekt angezeigt, nur da guckt ja normalerweise keiner.
eigentlich hätte ich ja gern eine Benachrichtigung wenn die Steckdose sich abmeldet

Re: MQTT Konfiguration OH3.4.4

Verfasst: 6. Jun 2023 21:11
von PeterA
Hi,

das LWT Topic habe ich anders Angelegt:

Code: Alles auswählen

 Bridge mqtt:broker:3448a27a [ host="localhost", secure=false ]
{
    // hitchi Lesekopf @ DWS7612 Zähler
    Thing topic hitchi "hitchi" @ "DWS7612" {
    Channels:
        Type number   : hitchi_in      "Bezug"              [ stateTopic="tele/tasmota_8E881A/SENSOR", transformationPattern="JSONPATH:$.DWS7612.total_in" ]
        //Type number   : hitchi_out     "Einspeisung"        [ stateTopic="tele/tasmota_8E881A/SENSOR", transformationPattern="JSONPATH:$.DWS7612.total_out" ]
        Type number   : hitchi_power   "aktuelle Leistung"  [ stateTopic="tele/tasmota_8E881A/SENSOR", transformationPattern="JSONPATH:$.DWS7612.Power_curr" ]
        //Type number   : hitchi_amp_L1  "Strom L1"           [ stateTopic="tele/tasmota_8E881A/SENSOR", transformationPattern="JSONPATH:$.DWS7612.Amp_L1_curr" ]
        //Type number   : hitchi_amp_L2  "Strom L2"           [ stateTopic="tele/tasmota_8E881A/SENSOR", transformationPattern="JSONPATH:$.DWS7612.Amp_L2_curr" ]
        //Type number   : hitchi_amp_L3  "Strom L3"           [ stateTopic="tele/tasmota_8E881A/SENSOR", transformationPattern="JSONPATH:$.DWS7612.Amp_L3_curr" ]
        Type datetime : hitchi_date    "Messung von"        [ stateTopic="tele/tasmota_8E881A/SENSOR", transformationPattern="JSONPATH:$.Time" ]
        Type string   : reachable      "Erreichbarkeit"     [ stateTopic="tele/tasmota_8E881A/LWT"]
    }
}
Ganz am Ende als Type String.

Item dazu:

Code: Alles auswählen

String      reachable       "Erreichbarkeit"                                             <network>    (hitchi)                 {channel="mqtt:topic:3448a27a:hitchi:reachable"}
So kann ich schön in der Sitemap sehen ob der Lesekopf Online ist oder nicht.
Und natürlich kann man das auch in einer Rule als Trigger verwenden.

Gruß Peter

Re: MQTT Konfiguration OH3.4.4

Verfasst: 6. Jun 2023 22:08
von Johannes911
das haut auf den ersten Wurf bei mir nicht hin :-(

Re: MQTT Konfiguration OH3.4.4

Verfasst: 7. Jun 2023 10:34
von udo1toni
Johannes911 hat geschrieben: 6. Jun 2023 20:01 der Tasmota als Bild
Wie schon von mir vermutet hast Du die verpflichtende Variable %prefix% nicht im Full Topic stehen.
Du kannst gerne als Full Topic

Code: Alles auswählen

iot/Steckdosen/%topic%/%prefix%/
angeben, aber %prefix% MUSS drin stehen bleiben, sonst kann Tasmota nicht korrekt arbeiten!!!

Tasmota sendet zyklisch auf dem Prefix tele, es sendet Statusantworten auf dem Prefit stat und es erwartet Befehle auf dem Prefix cmnd. Wenn Du das Prefix aus dem Full Topic entfernst, hast Du eine Überschneidung der Topics (Kommunikation in MQTT ist immer gerichtet, stateTopic = commandTopic ist nicht zulässig)