Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. zigbee2mqtt über MQTT-Adapter einbinden

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    zigbee2mqtt über MQTT-Adapter einbinden

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      Mariatschi0815 last edited by Mariatschi0815

      Hallo Gemeinde,

      folgendes, ich habe ein Thermostat, welches über den Zigbee-Adapter leider noch nicht so richtig funktionieren will. Wenn ich es aber mit zigbee2mqtt paire scheint alles zu funktionieren. Jetzt bin ich allerdings gerade neu dabei und steck noch nicht so tief in der Materie, bin aber lernwillig! Lange rede kurzer Unsinn.
      Nach meinem Wissensstand muss ja mein Client, in dem Fall zigebee2mqtt, die Datenpunkte publishen, Mosqitto subscribed dann und mein ioBroker-Client subscribed ebenfalls. Soweit so klar.
      Es klappt auch bis zu dem Punkt, an dem mir das Gerät im ioBroker angezeigt wird, allerdings nur mit der availability.

      e05df958-b500-47c2-a821-eac7cda805af-grafik.png

      Ich hab jetzt mal alle Datenpunkte in zigbee2mqtt durchgeschalten.

      71fa5f0a-22b0-44e1-89bf-11c6e465f1f2-grafik.png

      Hat auch funktioniert und wird auch übergeben, dass habe ich im MQTTExplorer überprüft. Aber es wird nur als (sagt mir bitte den Fachbegriff) json ans Topic gehangen und nicht als Datenpunkte übermittelt.

      a220e1f1-e8c4-4c09-9719-e02e67656032-grafik.png

      (Da gleich noch die nächste Frage, der BWM ist eine Datenleiche, wie werde ich den denn wieder los?)

      Wie kann ich denn jetzt das json aufspillten um damit im ioBroker arbeiten zu können?

      Vielen Dank schonmal.

      Gruß Martin

      hydrotec arteck 2 Replies Last reply Reply Quote 0
      • hydrotec
        hydrotec @Mariatschi0815 last edited by

        @mariatschi0815

        Hallo Martin,

        damit zigbee2mqtt die Werte nicht als json, sondern als attribute im payload übermittelt, muss in der configuration von zigbee2mqtt folgendes noch mit angegeben werden.
        mqtt-payload-format

        experimental:
          # Optional: MQTT output type: json, attribute or attribute_and_json (default: shown below)
          # Examples when 'state' of a device is published
          # json: topic: 'zigbee2mqtt/my_bulb' payload '{"state": "ON"}'
          # attribute: topic 'zigbee2mqtt/my_bulb/state' payload 'ON"
          # attribute_and_json: both json and attribute (see above)
          output: 'json'
        
        

        In deinem Fall dann

        experimental:
          output: 'attribute'
        

        Vorschlag zur Vorgehensweise (ohne Gewähr)
        Backup anlegen!

        1. mqtt-client in ioBroker stoppen
        2. Objekte in ioBroker löschen (am einfachsten den ganzen Ordner "mqtt.0", wird später automatisch wieder angelegt)
        3. per Terminal (z.B. Putty) bei der zigbee2mqtt Installation anmelden.
          • zigbee2mqtt service stoppen.
            systemctl stop zigbee2mqtt
        4. dann die configurations.yaml anpassen
          cp /opt/zigbee2mqtt/data/configuration.yaml /opt/zigbee2mqtt/data/configuration.yaml_original
          nano /opt/zigbee2mqtt/data/configuration.yaml
        5. zigbee2mqtt.service noch nicht starten.
        6. per Terminal (z.B. Putty) bei der mosquitto Installation anmelden.
          • beibehaltene (retain) Messages löschen. (werden später automatisch wieder angelegt)
          • ohne username/password
            mosquitto_sub -t '#' --remove-retained --retained-only
          • mit username/password
            mosquitto_sub -t '#' -u {username} -P {password} --remove-retained --retained-only
        7. mosquitto neu starten.
        8. mqtt-client in ioBroker starten.
        9. zigbee2mqtt starten.
        10. Warten bis alle Sensoren sich gemeldet haben.

        Hoffe das dies etwas hilfreich ist.

        Gruß, Karsten

        M 1 Reply Last reply Reply Quote 0
        • M
          Mariatschi0815 @hydrotec last edited by

          @hydrotec Das hat funktioniert! Mega, danke dir!

          1 Reply Last reply Reply Quote 0
          • M
            Mariatschi0815 last edited by Mariatschi0815

            Da ist mir noch eine Sache aufgefallen, wie bringe ich denn jetzt ioBroker dazu in json zu publishen, sodass zigbee2mqtt die Werte übernimmt?

            Ich weiß nicht ob ich das jetzt richtig beschrieben habe...
            Was quasi passiert oder eben nicht passiert. Wenn ich das Attribut Tempereratur im ioBroker ändere, wird die Temperatur am Thermostat nicht geändert. Andersherum funktioniert es aber.

            hydrotec 1 Reply Last reply Reply Quote 0
            • hydrotec
              hydrotec @Mariatschi0815 last edited by

              @mariatschi0815

              kannst du mal bitte die genaue Bezeichnung deines Thermostat nennen.

              1 Reply Last reply Reply Quote 0
              • M
                Mariatschi0815 last edited by

                SEA801-Zigbee/SEA802-Zigbee

                Davon müsste es das SEA802-Zigbee sein. Es ist ein Hama Thermostat.

                Im Zigbee-Adapter konnte ich zumindest die Temperatur in beide Richtungen änden. Dafür sonst aber nichts. Also irgend wie brauche ich einen Zwischenweg.

                hydrotec 1 Reply Last reply Reply Quote 0
                • hydrotec
                  hydrotec @Mariatschi0815 last edited by

                  @mariatschi0815

                  Nach dieser Beschreibung, musst du Steuerbefehle über den Topic "zigbee2mqtt/FRIENDLY_NAME/set" mit dem entsprechenden payload senden.

                  Kleines Beispiel
                  Angenommen dein Topic für die Temperatur lautet folgendermaßen.
                  "zigbee2mqtt/ThermostatWZ/temperatur"
                  Dann kannst du über den Topic "zigbee2mqtt/ThermostatWZ/temperatur/set" den entsprechenden payload (z.B. 22) den Wert 22 an das Thermostat senden.
                  Am einfachsten machst du das mit dem Tool, ich glaube du verwendest MQTTexplorer, dann wird der ensprechende Datenpunkt im ioBroker angelegt. Zugegeben, nicht gerade benutzerfreundlich, doch das macht man ja nicht jeden Tag.
                  Zukünftig kannst du dann im ioBroker unter dem DP den gewünschten payload senden.

                  Hoffentlich konnte ich es einigermaßen verständlich erklären.
                  Wenn nicht, gerne noch einmal nachfragen.

                  M 1 Reply Last reply Reply Quote 0
                  • arteck
                    arteck Developer Most Active @Mariatschi0815 last edited by

                    @mariatschi0815 warum so kompliziert.. snutze das Ausschliessen Tab im Einstellungen des zigbee adapter ..fettisch

                    1 Reply Last reply Reply Quote 0
                    • M
                      Mariatschi0815 @hydrotec last edited by

                      @hydrotec said in zigbee2mqtt über MQTT-Adapter einbinden:

                      @mariatschi0815

                      Nach dieser Beschreibung, musst du Steuerbefehle über den Topic "zigbee2mqtt/FRIENDLY_NAME/set" mit dem entsprechenden payload senden.

                      Kleines Beispiel
                      Angenommen dein Topic für die Temperatur lautet folgendermaßen.
                      "zigbee2mqtt/ThermostatWZ/temperatur"
                      Dann kannst du über den Topic "zigbee2mqtt/ThermostatWZ/temperatur/set" den entsprechenden payload (z.B. 22) den Wert 22 an das Thermostat senden.
                      Am einfachsten machst du das mit dem Tool, ich glaube du verwendest MQTTexplorer, dann wird der ensprechende Datenpunkt im ioBroker angelegt. Zugegeben, nicht gerade benutzerfreundlich, doch das macht man ja nicht jeden Tag.
                      Zukünftig kannst du dann im ioBroker unter dem DP den gewünschten payload senden.

                      Hoffentlich konnte ich es einigermaßen verständlich erklären.
                      Wenn nicht, gerne noch einmal nachfragen.

                      Ja, das war schon verständlich. Leider wäre es dann der current_heatsetpoint den zigbee2mqtt ja schon liefert... Also muss ich mich an der Stelle wohl geschlagen geben... Aber danke, hab auf jeden Fall wieder was gelernt.

                      @arteck said in zigbee2mqtt über MQTT-Adapter einbinden:

                      @mariatschi0815 warum so kompliziert.. snutze das Ausschliessen Tab im Einstellungen des zigbee adapter ..fettisch

                      Könntest du mir das bitte erklären?

                      arteck hydrotec 2 Replies Last reply Reply Quote 0
                      • arteck
                        arteck Developer Most Active @Mariatschi0815 last edited by arteck

                        @mariatschi0815 a231e071-ea6a-4389-b635-0514e7cfe3f9-grafik.png

                        solltest aber im zuge dessen den adapter von GIT installieren

                        M 1 Reply Last reply Reply Quote 0
                        • M
                          Mariatschi0815 @arteck last edited by

                          @arteck Das hatte ich schon entdeckt und was macht das dann?

                          1 Reply Last reply Reply Quote 0
                          • hydrotec
                            hydrotec @Mariatschi0815 last edited by hydrotec

                            @Mariatschi0815

                            ... Leider wäre es dann der current_heatsetpoint den zigbee2mqtt ja schon liefert...

                            Dann einfach den Topic zu dem "current_heatsetpoint" nehmen.
                            Bspl.
                            Topic: "zigbee2mqtt/ThermostatWZ/current_heatsetpoint/set"
                            payload: "{"current_heating_setpoint": 22}"

                            Hier kannst du noch einmal nachlesen, zu welchem Topic-set der jeweilige payload auszusehen hat.

                            M 1 Reply Last reply Reply Quote 0
                            • M
                              Mariatschi0815 @hydrotec last edited by Mariatschi0815

                              @hydrotec Wenn ich das jetzt alles richtig verstanden habe, bringt das nicht viel, weil es nur ein "expose" ist. Also wird nur der Datenpunkt im ioBroker aktualisiert, aber eben nicht in zigbee2mqtt und somit nicht am Thermostat selber. Habs probiert.

                              @arteck said in zigbee2mqtt über MQTT-Adapter einbinden:

                              @mariatschi0815

                              solltest aber im zuge dessen den adapter von GIT installieren

                              Würdest du mir trotzdem noch erklären was das nun genau macht? Ich versteh das (noch) nicht so ganz.

                              hydrotec arteck 2 Replies Last reply Reply Quote 0
                              • hydrotec
                                hydrotec @Mariatschi0815 last edited by

                                Guten Morgen Martin

                                @mariatschi0815 sagte in zigbee2mqtt über MQTT-Adapter einbinden:

                                @hydrotec Wenn ich das jetzt alles richtig verstanden habe, bringt das nicht viel, weil es nur ein "expose" ist. Also wird nur der Datenpunkt im ioBroker aktualisiert, aber eben nicht in zigbee2mqtt und somit nicht am Thermostat selber. Habs probiert.

                                Das kann ich jetzt nicht ganz nachvollziehen, eventuell war es doch nicht so ganz verständlich erklärt.
                                Ich versuche es mal anhand eines bei mir funktionierendem Beispiel mit einem Wandschalter.
                                Beschreibung zigbee2mqtt.

                                Topics
                                Status: "zigbee2mqtt/mo_wall_switch_01/state_l1"
                                Wird automatisch unter den Objekten angelegt.

                                Schalten: "zigbee2mqtt/mo_wall_switch_01/l1/set"
                                Muss unter den Objekten angelegt werden.
                                (wie schon geschrieben, am einfachsten mit einem Tool, bei mir MQTT.fx)
                                mqtt_topic_payload_02.png

                                Wenn der DP zum Schalten angelegt ist, wird zukünftig der payload darüber gesendet.
                                mqtt_topic_payload_01.png
                                Entweder direkt im Datenpunkt-Wert
                                mqtt_topic_payload_03.png
                                oder z.B. blockly
                                mqtt_topic_payload_04.png

                                Ich habe, nach diesem Muster, schon mehrere mqtt-clients und devices (nicht nur zigbee2mqtt) in ioBroker eingepflegt.
                                Die Topics, und den payload, musst eben an deine Umgebung anpassen.

                                Vielleicht auch noch nützlich, die Einstellungen der mqtt Instanz
                                Instanz_debug_mqtt1_02.png Instanz_debug_mqtt1_03.png

                                Hoffentlich hilft dir das etwas weiter, falls du die Lust an MQTT noch nicht verloren hast. 😉

                                -----------------------------------------------------------------------------------------------------------------------

                                @arteck said in zigbee2mqtt über MQTT-Adapter einbinden:

                                @mariatschi0815

                                solltest aber im zuge dessen den adapter von GIT installieren

                                Würdest du mir trotzdem noch erklären was das nun genau macht? Ich versteh das (noch) nicht so ganz.

                                Zum Adapter iobroker.zigbee findest du hier Informationen.
                                (auch wie der Adapter über GIT installiert wird)
                                -----------------------------------------------------------------------------------------------------------------------

                                Gruß, Karsten

                                M 2 Replies Last reply Reply Quote 0
                                • M
                                  Mariatschi0815 @hydrotec last edited by

                                  @hydrotec Guten Morgen Karsten,

                                  nein habe noch nicht die Lust daran verloren. Vielen Dank für die ausführliche Erklärung. Ich glaube ich werde mir mal MQTT.fx runter laden. Ich glaube der Explorer ist eher suboptimal. Dann versuch ich es nochmal.

                                  Gruß Martin

                                  1 Reply Last reply Reply Quote 0
                                  • arteck
                                    arteck Developer Most Active @Mariatschi0815 last edited by

                                    @mariatschi0815 damit werden die Geräte wie im zigbee2mqtt angelgt und direkt angesprochen..

                                    M 1 Reply Last reply Reply Quote 0
                                    • M
                                      Mariatschi0815 @arteck last edited by Mariatschi0815

                                      @arteck Ah okay, besten Dank. Da ich mich vorher noch nicht mit der Thematik beschäftigt habe gibt es viel Nachholbedarf. Darum bin ich immer sehr dankbar für Erklärungen die auch über die Anwendung hinaus gehen.

                                      1 Reply Last reply Reply Quote 0
                                      • M
                                        Mariatschi0815 @hydrotec last edited by

                                        @hydrotec So, ich habe nochmal ein wenig rum probiert. Mit MQTT.fx geht es tatsächlich schonmal besser.

                                        Jetzt folgendes:
                                        Nach deiner Anleitung klappt es, hat aber den Haken, dass mir der Datenpunkt set in die Ordnerstruktur der exposes mit angelegt wird.

                                        8ee4aea2-4d70-43bf-9a51-a9cd2cf71de8-grafik.png

                                        Wenn ich jetzt aber noch einen Datenpunkt brauche überschreibt er mir natürlich das "set".

                                        Ändere ich jetzt das Topic, sodass ich z.B. für meine Zieltemperatur einen extra Ordner anlege in dem das set laufen soll, subscribed z2m das Topic nicht mehr.

                                        b4aa279b-cc12-42d7-a17a-0195882c2e02-grafik.png

                                        oder müsste ich hier noch im z2m was ändern?

                                        Über den DP current_heating_setpoint der von z2m geliefert wird werden Änderungen nicht zurück geschickt.

                                        Wenn ich das

                                        @hydrotec said in zigbee2mqtt über MQTT-Adapter einbinden:

                                        Topic: "zigbee2mqtt/ThermostatWZ/current_heatsetpoint/set"
                                        payload: "{"current_heating_setpoint": 22}"

                                        mache, wird der DP zwar bei beiden clients (also ioBroker und z2m) geändert. Wenn ich dann aber den DP im ioBroker ändere wird die Änderung nicht von z2m subscribed.

                                        Die Instanzeinstellungen vom MQTT-Adapter hab ich genauso, bis auf die Client ID ist die wichtig? Was macht die?

                                        hydrotec 1 Reply Last reply Reply Quote 0
                                        • hydrotec
                                          hydrotec @Mariatschi0815 last edited by

                                          @mariatschi0815

                                          Versuch doch mal bitte folgendes.
                                          Bei mqtt.fx unter publish

                                          topic:

                                          zigbee2mqtt/ThermoWZ/current_heating_setpoint/set
                                          

                                          payload:

                                          {"current_heating_setpoint": 22}
                                          

                                          Danach sollte es in ioBroker ungefähr so aussehen.
                                          mqtt_topic_payload_05.png
                                          Unter dem DP "ThermoWZ.current_heating_setpoint" wird die eingestellte Temperatur angezeigt.
                                          Und unter dem DP "ThermoWZ.current_heating_setpoint.set" stellst du dann die gewünschte Temperatur ein.

                                          Was die topics, und die entsprechenden payloads angeht, die kann ich dir nur Beispielhaft aufzeigen.
                                          (ich habe dieses Thermostat nicht zur Verfügung 😉 )
                                          Lies dir bitte diese Anleitung zu deinem Thermostat in Ruhe durch.
                                          Da ist es ausführlich beschrieben, wie sich topic und payload zusammensetzen.
                                          Keine Angst vor Fehlversuchen, mqtt ist am Anfang nicht ganz einfach zu verstehen.
                                          Zudem, wenn etwas schief geht, kannst du die Objekte in ioBroker löschen, und wieder neu anlegen lassen.
                                          (würde ich dir eh raten, wenn deine ganzen Versuche erfolgreich waren, und du nichts mehr ändern musst)

                                          ... bis auf die Client ID ist die wichtig? Was macht die?

                                          Die ist sogar sehr wichtig.
                                          Wie die lautet, ist prinzipiell egal.
                                          Wichtig ist, das sie nur einmal in deiner mqtt-Umgebung vorkommt.

                                          An deiner config in zigbee2mqtt brauchst du vermutlich nichts ändern.
                                          Beispielhaft meine config in zigbee2mqtt.
                                          Bitte nicht 1:1 übernehmen, vor allem nicht, wenn du nicht genau weißt was die Einstellungen bedeuten sollen.

                                          homeassistant: false
                                          permit_join: false
                                          mqtt:
                                           base_topic: zigbee2mqtt
                                           server: mqtt://192.168.XXX.XXX:1883
                                           user: '!secret user'
                                           password: '!secret password'
                                          serial:
                                           port: /dev/ttyUSB0
                                          advanced:
                                           pan_id: XXXXX
                                           network_key: '!secret network_key'
                                           homeassistant_legacy_entity_attributes: false
                                           legacy_api: false
                                           log_level: info
                                           # Optional: Add a last_seen attribute to MQTT messages, contains date/time of last Zigbee message
                                           # possible values are: disable (default), ISO_8601, ISO_8601_local, epoch (default: disable)
                                           last_seen: 'ISO_8601_local'
                                          experimental:
                                           output: attribute
                                          frontend:
                                           port: 8080
                                           host: 0.0.0.0
                                           auth_token: '!secret auth_token'
                                          devices: devices.yaml
                                          groups: groups.yaml
                                          device_options:
                                           legacy: false
                                          # Note: all options are optional
                                          availability:
                                           active:
                                             # Time after which an active device will be marked as offline in
                                             # minutes (default = 10 minutes)
                                             timeout: 10
                                           passive:
                                             # Time after which a passive device will be marked as offline in
                                             # minutes (default = 1500 minutes aka 25 hours)
                                             timeout: 1500
                                          
                                          

                                          Schönen Sonntag noch
                                          Gruß, Karsten

                                          1 Reply Last reply Reply Quote 0
                                          • M
                                            Mariatschi0815 last edited by

                                            Na das hab ich doch im 1. Screenshot so gemacht. Wenn ich jetzt aber noch einen DP ändern muss und wieder so vorgehe bspw. für die local_temperature_calibration (über die wird der Heizzyklus angestoßen) wird mein DP "set" mit dem payload "local_temp[...]" überschrieben. Es wird also kein neuer DP set angelegt, den ich aber bräuchte.

                                            hydrotec 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            961
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            34
                                            5158
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo