Umstieg von MQTT v1 zu MQTT v2 inkl. Openhab Embedded Broker

  • Hier nun ein kleines Tutorial wie Ihr in Openhab auf die MQTT Version 2 wechselt und auch den internen Broker nutzen könnt.

    1.
    wenn ihr windows auf eurem rechner nutzt um auf euer openhab system zuzugreifen, dann installiert euch als erstes bspw mqttfx.
    damit könnt ihr u.a. die topics eurer mqtt geräte abonieren um sie leichter in openhab einpflegen zu können.
    in dem programm muss lediglich in den einstellungen die ip eures mqtt brokers (openhab system) eingegeben werden, danach im hauptfenster verbinden, auf den button subscribe gehen und dann unten links den scanbutton drücken.
    sobald sich ein mqtt gerät meldet wird es dort angezeigtund ihr könnt es mit einem doppelklick abonieren...der [definition='1','0']log[/definition] taucht dann rechts im fenster auf.
    alternativ könnt ihr # als wildcard nutzen um alle aktivitäten sofort zu sehen.
    mqttfx lässt sich nutzen sobald ihr schritt 3 abgeschlossen habt.

    2.
    SYSTEMBACKUP machen!!!!
    solltet ihr in der things datei mqtt1 geräte hinterlegt haben müssen diese ebenfalls entfernt werden.
    das mqtt1 binding in openhab deinstallieren, dafür das neue mqtt2 binding installieren.
    danach mosquitto installieren über sudo openhabian-config -> 20 Optional Components -> Mosquitto

    3.
    in der openhab things datei legt ihr euch nun die mqtt bridge an, die sich mit dem embedded broker verbindet.
    zwischen die letzten beiden geschweiften klammern kommt nun euer mqtt gerät inkl channels welches ihr einfügen woll


    hier ein vollständiges beispiel mqtt bridge inkl einiger geräte.
    sonoff basic mit tasmota geflasht, der zweite mit espeasy, danach kommt eine sonoff bridge, danach ein xiaomi pflanzensensor, dann ein sonoff pow:

    welche channels es alles beim entsprechenden gerät gibt, seht ihr in mqttfx sobald das gerät etwas zu eurem openhab system sendet.
    dort ist dann auch der state und command topic ersichtlich.
    abschliessend ist zu erwähnen das es bei openhab 2.4 noch einen bug mit mqtt 2 gibt der euch dazu zwingt, nach änderungen an der things datei openhab neu zu starten.

    wenn wie im beispiel JSONPATH genutzt wird, dann muss das natürlich auch unter addons -> transformation ->JSONPATH installiert werden.

    zum abschluss müsst ihr alle eingebundenen geräte die nun in eurer paperui liste unter configuration -> things auftauchen in die item datei einpflegen.
    solltet ihr mqtt1 genutzt haben muss natürlich nur die channel id des items geändert werden.


    fragen, anregungen, kritik?...dann hier bitte posten

  • Ich blicke es nicht durch.

    Ich habe nun 2 Obi Steckdosen mit Tasmota geflasht. Die funktionieren, ich kann sie über die eingebaute Webseite schalten.

    Nun versuche ich seit 2 Stunden diese in Openhab 2.4 einzubinden.

    Ich bin schockiert davon wie kryptisch das alles ist und dass überall im Internet zig Beispiele gepostet sind aber niemals erklärt jemand wozu welche Parameter gut sind und wie man das für sich anpassen könnte.

    Nun hoffe ich auf eine Anleitung die auch erklärt was wofür gedacht ist und wie ich die Steckdosen dann auch schalten kann. Erst mal nur per Switch auf der sitemap.


    .things Datei.
    Den Benutzernamen und das Passwort habe ich aus Verzweiflung genommen weil ich das Gefühl hatte man muss auf den Steckdosen ein Passwort eingeben. Keine Ahnung, ich blicke es nicht.


    So sieht das nach Installation der Bindings und Horschtes Tipps oben aus. An sich mal gut und "grün"


    Steckdose 1 - was muss wohin und vor allem wo zuerst? Also gebe ich hier was vor uns trage es einer Things oder Items oder sonstwas Datei ein? Oder gebe ich das in der Things oder Items oder sonstwas Datei vor und übernehme es dann hierher?


    Steckdose 2 - was muss wohin und vor allem wo zuerst? Also gebe ich hier was vor uns trage es einer Things oder Items oder sonstwas Datei ein? Oder gebe ich das in der Things oder Items oder sonstwas Datei vor und übernehme es dann hierher?


    Danke

  • ist alles halb so wild, glaub mir....sieht anfangs chaotisch aus, ist aber später verständlich wenn man es mal gemacht hat.
    hier eine config für deine steckdosen ohne konfigurierten usernamen und passwort in tasmota. die namen hab ich so wie auf deinen screenshots angezeigt abgeändert.

    things datei:

    items datei:

    Code
    Switch    Steckdose_1    "Meine Steckdose 1"    <poweroutlet>    {channel="mqtt:topic:embedded-mqtt-broker:sonoff1:Steckdose_1"}
    Switch    Steckdose_2    "Meine Steckdose 2"    <poweroutlet>    {channel="mqtt:topic:embedded-mqtt-broker:sonoff2:Steckdose_2"}

    sitemap:

    Code
    Switch item=Steckdose_1
    Switch item=Steckdose_2


    ....jetzt openhab neustarten (es gibt in der aktuellen 2.4 noch nen bug, der dazu führen kann, dass mqtt nicht mehr funktioniert wenn man im laufenden betrieb an der things datei rumgespielt hat.
    die steckdosen sollte nun funktionieren...ggf mit mqttfx die topics prüfen.


    nehmen wir zur erklärung das ganze mal auseinander.
    eintrag aus der things datei oben zeile 7-10.

    Code
    Thing topic sonoff1 "Steckdose 1" @ "Mein Zimmer" {
        Channels:
            Type switch : Steckdose_1    "Steckdose 1"    [stateTopic="stat/sonoff1/POWER",    commandTopic="cmnd/sonoff1/POWER"] 
    }

    jedes gerät braucht diesen "thing topic .....eintrag"...damit wird es erstmal im openhab system bekannt gemacht.
    dann kommt zu jedem gerät noch einen channel (zeile 2-3) in dem openhab gesagt wird, was das teil alles kann.
    bei ner steckdose ist das natürlich übersichtlich, da die nur ein/aus beherrscht.
    wenn die geräte mehr "fähigkeiten" (bspw multi-sensoren) haben dann bedarf es mehreren channels....hier ein beispiel eines xiaomi blumensensors:

    Spoiler anzeigen
    Code
    Thing topic drachenbaum "Pflanzen Drachenbaum"  @ "Wohnzimmer" {
        Channels:
            Type number : Drachenbaum_Licht       "Drachenbaum Licht"      [stateTopic="miflora/Drachenbaum", transformationPattern="JSONPATH:$.light"]
            Type number : Drachenbaum_Temperatur        "Drachenbaum Temperatur"      [stateTopic="miflora/Drachenbaum", transformationPattern="JSONPATH:$.temperature"]
            Type number : Drachenbaum_Feuchtigkeit        "Drachenbaum Feuchtigkeit"      [stateTopic="miflora/Drachenbaum", transformationPattern="JSONPATH:$.moisture"]
            Type number : Drachenbaum_Duenger        "Drachenbaum Duenger"      [stateTopic="miflora/Drachenbaum", transformationPattern="JSONPATH:$.conductivity"]
            Type number : Drachenbaum_Batterie        "Drachenbaum Batterie"      [stateTopic="miflora/Drachenbaum", transformationPattern="JSONPATH:$.battery"]
    }

    zurück zu deinem eintrag:
    Thing topic sonoff1 "Steckdose 1" @ "Mein Zimmer" 
    sonoff1 = topicname wie von dir in tasmota unter "topic" konfiguriert
    Steckdose 1 = frei wählbarer name fürs paperui
    Mein Zimmer = ordnet die steckdose einer kategorie im paperui->control eintrag zu

    zum eintrag beim channel deiner steckdose:
    Channels: Type switch : Steckdose_1 "Steckdose 1" [stateTopic="stat/sonoff1/POWER", commandTopic="cmnd/sonoff1/POWER"]
    Steckdose_1 = frei wählbarer unique name....der übersicht halber sollte der natürlich dem nahmen des gerätes entsprechen, wenn ein gerät mehrere channels besitzt dann ggf noch die funktion des channels an den namen hängen (siehst du in meinem beitrag weiter oben zum xiaomi pflanzensensor)
    im dahinter folgenden state und command topic stat/sonoff1/POWER und cmnd/sonoff1/POWER entspricht sonoff1 deinem topic-namen den du in tasmota unter "topic" eingetragen hast.

    zur items datei gibts nicht viel zu sagen. jeder item eintrag steht für einen channel eines gerätes...in deinem fall 2 steckdosen die jeweils nur einen channel haben -> macht also nur 2 items die angelegt werden müssen.
    Switch Steckdose_1 "Meine Steckdose 1" <poweroutlet> {channel="mqtt:topic:embedded-mqtt-broker:sonoff1:Steckdose_1"}
    ganz vorne Steckdose_1 = frei wählbarer unique name, der übersicht halber habe ich den so benannt wie den channel namen des gerätes aus der things datei.
    weiter hinten findest du "sonoff1"...das ist der topic name wie in der things datei und in tasmota konfiguriert.
    ganz hinten steht nochmals Steckdose_1...das ist dann der channel aus der things datei der angesprochen wird, er muss also Steckdose_1 lauten. dann macht das item das, was ihm in der things datei zugeordnet wurde


    ich hoffe das ist so halbwegs verständlich geschrieben ...viel erfolg @Commerzpunk :thumbup:

  • Aaaaalter, ich bin erst mal platt das es tatsächlich klappt.

    Nächstes mal machst du mir noch in der .things die letzte } und dann ist ja alles super. :P

    Jetzt suhle ich mich erst mal im Erfolg und überlege was ich damit anstelle.

    DANKE

  • Syntax geht so, das stoppel ich mir schon zusammen wenn es nötig wird. Scheint ja eng an Java(Script?) zu sein.
    Ist bei mir wie mit Spanisch. Werde ich nie flüssig sprechen, brauche ich selten und wenn dann wird gegoogelt und gestoppelt.
    Die Architektur von OpenHAB ist ja ganz clever, wenn auch nicht so sehr für Anfänger und Wenignutzer geeignet, passt schon.

    Meine Probleme sind dann eher:

    Code
    Thing topic sonoff1 "Steckdose 1" @ "Mein Zimmer" {
        Channels:
            Type switch : Steckdose_1    "Steckdose 1"    [stateTopic="stat/sonoff1/POWER",    commandTopic="cmnd/sonoff1/POWER"]

    Wie zum Teufel kommt man auf sowas? Woher soll man wissen dass es so heißt? >>> [stateTopic="stat/sonoff1/POWER", commandTopic="cmnd/sonoff1/POWER"]

  • Ich mach hier mal gleich weiter, weil es irgendwie dazu passt.

    Ich bin von mqtt1 auf mqtt2 umgestiegen *graus*, rein textbasiert. Soweit funktioniert alles.

    In einer mqtt.things datei (die ich jetzt leider nicht dabei habe) habe ich - wie in allen Beispielen ersichtlich - die bridge und danach die things definiert. Da ist jetzt ganz schön unübersichtlich, da die Datei recht lange geworden ist. Ich würde daher gerne die bridge in einer datei und in anderen thematisch sortierten dateien die things definieren. Geht das? Wenn ja, wie?

    Eventuell kann mir das jemand anhand dieser, obigen things datei näherbringen, wie sie in einzelne dateien aufgeteilt wird.

  • Wenngleich ichs noch nicht getestet habe (bin in der Arbeit, habe aber keine lust zu arbeiten, daher diese Gedankenspiele :D ), habe ich gerade diesen post https://community.openhab.org/t/things-files…qtt-2-4/61090/8 gefunden, nach dem es so funktionieren sollte:

    bridge.things

    Code
    Bridge mqtt:broker:embedded-mqtt-broker "MQTT Bridge"
    [
       host="nas-27",
        secure=false
    ]


    sonoff1.things

    Code
    Thing topic sonoff1 "Steckdose 1" (mqtt:broker:embedded-mqtt-broker) @ "Mein Zimmer" {
        Channels:
            Type switch : Steckdose_1    "Steckdose 1"    [stateTopic="stat/sonoff1/POWER",    commandTopic="cmnd/sonoff1/POWER"]
    }

    Wenn das geht, wird das ganze wesentlich übersichtlicher

  • Hab das auch mal mit einem Sonoff versucht - Problem ist wenn ich dann versuche den Sonoff über OH2 einzuschalten passiert nichts. das einzige was ich in der Konsole des Sonoffs angezeigt bekomme ist dann ein stat/topic/power = off aber es wird kein ON Command geschickt.

    Habe es aber genau so wie oben beschrieben drin:

    Support ME ! Buy me a Coffee :thumbup:


    Dont Touch ME

    LivingRoom: SilverStone Milo ML03 | Gigabyte B450 | Ryzen 3400G | 250GB NVME | 16GB DDR4-3200| Win10 64 bit | KODI 18 | Logitech Harmony Elite | SONOS Playbar + SUB
    BedRoom: PLAY:3
    Kitchen: PLAY:3
    BathRoom: Play:3

  • Habe es aber genau so wie oben beschrieben drin:

    hast du nicht :whistling:
    on/off muss bei tasmota nicht definiert sein...und wenn, dann müsste es bei dir bspw ON="ON" heissen
    so sieht das richtig aus bei nutzung von tasmota...mehr kommt da nicht hin:

    Code
    Thing topic Ventilator "Ventilator"  @ "Wohnzimmer" {
        Channels:
            Type switch : Ventilator"Ventilator"      [stateTopic="stat/ventilator/POWER", commandTopic="cmnd/ventilator/POWER"] 
        }

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!