Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Zigbee2mqtt installation

    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 installation

    This topic has been deleted. Only users with topic management privileges can see it.
    • mickym
      mickym Most Active @Schmetterfliege last edited by mickym

      @schmetterfliege Nein das ist keine spezielle Syntax sondern Du musst ja Deine Klammer wieder begrenzen.

      (.*)\.
      

      Das bedeutet, dass meine Klammer durch den Punkt begrenzt ist.

      .*
      

      Der Rest bedeutet beliebiges Zeichen x mal.

      zusammen:

      (.*)\..*
      

      Ansonsten hiermit testen und die Codes sind da drin auch erklärt:

      7b647d1d-a49a-4e46-aade-874bb1d9fc41-image.png

      https://regex101.com/

      In der Explanation wird das dann auch noch mal Stück für Stück hergeleitet.

      Also :

      .*zigbee2mqtt\.(.*)\..*
      

      Mich interessiert das vorne nicht bis zigbee2mqtt auftaucht, dann ein Punkt, dann beliebige Zeichen, die ich in die Gruppe $1 packe, bis wieder ein Punkt kommt, der aber nicht mehr Bestandteil der Gruppe ist. Der Rest interessiert wieder nicht.

      Damit alleine

      \.*
      

      sagst Du ja nur das ein Punkt auftauchen kann oder auch nicht - also in dem Fall keine eindeutige Begrenzung der Klammer, die ja mit dem Punkt aufhören MUSS.

      S 1 Reply Last reply Reply Quote 0
      • S
        Schmetterfliege @mickym last edited by Schmetterfliege

        @mickym
        Thanks, die Seite ist echt praktisch!

        Noch eine Dummi-Frage:
        Vorher hatte ich ja den Raum als Wert selbst gespeichert.
        Jetzt sind die Sachen im Kontext aber nicht mehr per zigbee-id gespeichert, sondern über den Raum selbst. Nur weiß ich nicht wie ich den Teil adressieren kann?
        d05848de-1c22-441b-8893-88492be1f257-image.png

        ist das payload.id?
        EDIT: die id ist es schon mal nicht 😁
        ec3bd6e9-adf5-4505-a842-ab3063a3d2a5-image.png

        mickym 1 Reply Last reply Reply Quote 0
        • mickym
          mickym Most Active @Schmetterfliege last edited by

          @schmetterfliege Wieso - das eine hat doch mit dem anderen nichts zu tun. Dein Raum ist die Eigenschaft "room" in jedem einzelnen Room Objekt, dass Du in der payload mitgibst. Das was Du oben machst ist ja nur die Definition der Spalten aber nicht das Array der Objekte die Du übergibst?

          1 Reply Last reply Reply Quote 0
          • S
            Schmetterfliege last edited by Schmetterfliege

            Ich befürchte die Antwort wird sein dass ich den Raum speichern muss^^
            8a7d20d6-a0c2-4f1a-a9ba-c88354113506-image.png

            Kann ich denn irgendwie die "topic" jedes Objektes in die Objekte packen, ohne das separat im Objekt abzuspeichern?

            mickym 2 Replies Last reply Reply Quote 0
            • mickym
              mickym Most Active @Schmetterfliege last edited by

              @schmetterfliege Richtig - Du musst in jedem Objekt eine Eigenschaft "room" haben, damit diese der entsprechenden Spalte zugeordnet werden kann.

              S 1 Reply Last reply Reply Quote 0
              • S
                Schmetterfliege @mickym last edited by

                @mickym said in Zigbee2mqtt installation:

                @schmetterfliege Richtig - Du musst in jedem Objekt eine Eigenschaft "room" haben, damit diese der entsprechenden Spalte zugeordnet werden kann.

                Okay, also die Objekte werden ohne deren Topic übergeben. Hmm.

                1 Reply Last reply Reply Quote 0
                • mickym
                  mickym Most Active @Schmetterfliege last edited by mickym

                  @schmetterfliege Du brauchst doch das Topic nur in die einzelnen Objekte mit aufnehmen. Also bevor Du es zum Array zusammenfasst.Sprich Du hast doch für einen Sensor

                  ein topic und ein payload Objekt mit Temp., Humidity etc.

                  Nach dem Du das topic nun extrahiert hast, kannst Du entweder das topic direkt da rein schieben wenn du es nicht mehr brauchst.

                  Veschiebe msg.topic => msg.payload.room

                  S 1 Reply Last reply Reply Quote 0
                  • S
                    Schmetterfliege @mickym last edited by

                    @mickym said in Zigbee2mqtt installation:

                    @schmetterfliege Du brauchst doch das Topic nur in die einzelnen Objekte mit aufnehmen. Also bevor Du es zum Array zusammenfasst.Sprich Du hast doch für einen Sensor

                    ein topic und ein payload Objekt mit Temp., Humidity etc.

                    Nach dem Du das topic nun extrahiert hast, kannst Du entweder das topic direkt da rein schieben wenn du es nicht mehr brauchst.

                    Veschiebe msg.topic => msg.payload.room

                    1f381179-dff3-4e2c-b94a-eff6aa5c703e-image.png
                    Funktioniert, aber ist das "gut" gelöst so? 😀

                    mickym 1 Reply Last reply Reply Quote 0
                    • S
                      Schmetterfliege last edited by

                      34ad4ff5-75f1-4033-92cf-56738fe775e1-image.png

                      Also wahrscheinlich ist da eigentlich gar kein Unterschied zu vorher und ich hätte das vorher auch so kompakt machen können, aber das is schon geil irgendwie.
                      Die JSON sind schon ne geile Sache!

                      mickym 1 Reply Last reply Reply Quote 0
                      • mickym
                        mickym Most Active @Schmetterfliege last edited by

                        @schmetterfliege Hmm warum nicht - ich hab das nicht mehr alles im Kopf - aber in dem Fall passt es doch ggf. kann man das halt schon vorher - also bevor man das Array aufsplittet schon in s Objekt aufnehmen. Aber egal

                        S 1 Reply Last reply Reply Quote 0
                        • mickym
                          mickym Most Active @Schmetterfliege last edited by

                          @schmetterfliege sagte in Zigbee2mqtt installation:

                          34ad4ff5-75f1-4033-92cf-56738fe775e1-image.png

                          Also wahrscheinlich ist da eigentlich gar kein Unterschied zu vorher und ich hätte das vorher auch so kompakt machen können, aber das is schon geil irgendwie.
                          Die JSON sind schon ne geile Sache!

                          Ja leider erkennen nur die wenigsten, wie fantastisch JSON ist - die meisten beschäftigen sich halt nicht damit.

                          1 Reply Last reply Reply Quote 0
                          • S
                            Schmetterfliege @mickym last edited by Schmetterfliege

                            @mickym said in Zigbee2mqtt installation:

                            @schmetterfliege Hmm warum nicht - ich hab das nicht mehr alles im Kopf - aber in dem Fall passt es doch ggf. kann man das halt schon vorher - also bevor man das Array aufsplittet schon in s Objekt aufnehmen. Aber egal

                            Hmm, wüsste ich jetzt tatsächlich nicht wo ich das vorher machen könnte, ohne es in den Kontext zu packen.
                            Vor dem Split werden ja die Objekte aus dem Kontext geladen, d.h. das muss ich splitten um den Raum dann den einzelnen Objekten hinzufügen zu können.
                            Klar könnte ich vorher in der Function node machen wo ich auch die anderen Sachen in den Kontext packe, aber das wäre ja dann irgendwie redundant. (Weil Objekt = Raum, und dann wäre da nochmal ein zusätzlich Wert "Raum")
                            So wie jetzt landet der Raum nicht im Kontext sondern wird nur der Tabelle übergeben.

                            mickym 1 Reply Last reply Reply Quote 0
                            • mickym
                              mickym Most Active @Schmetterfliege last edited by mickym

                              @schmetterfliege sagte in Zigbee2mqtt installation:

                              Vor dem Split werden ja die Objekte aus dem Kontext geladen, d.h. das muss ich splitten um den Raum dann den einzelnen Objekten hinzufügen zu können.

                              Verstehe ich nicht. Auch, wenn Du über Wildcards rein holst, bekommst Du doch eine Nachricht für einen Sensor mit einem Topic, bevor Du es in einem Array sammelst. Ist auch Käse, dass Du das Objekt rein holst und nicht nur den Wert. In diesem Fall brauchst ja nur den Value, da Du keine Objekteigenschaften brauchst, wie es noch mit dem zigbee-Adapter erforderlich war.

                              S 1 Reply Last reply Reply Quote 0
                              • S
                                Schmetterfliege @mickym last edited by

                                @mickym

                                Ich hoffe das wird jetzt nicht viiiel zu kompliziert was ich hier von mir gebe, muss aber glaube ich etwas ausholen zum Verständnis:
                                a6381006-350e-4072-910f-5fdb94b16ce9-image.png
                                Der erste Kasten ist das Updaten der Tabelle.
                                Der zweite Kasten ist hinfällig, da hatte ich den Raum im Kontext gespeichert. Kommt weg, weil ist ja oben mit drin.
                                Der dritte Kasten ist das "initialisieren" der Tabelle, also der erste Aufbau nach einem Neustart.
                                Im Dritten hatte ich daher alle Zigbee Daten geholt, im Kontext gespeichert und die Tabelle anhand des Kontext aufgebaut.
                                Den dritten Teil kann ich ja prinzipiell jetzt genau so easy wie den ersten machen.

                                Den Raum möchte ich ja nicht im Kontext speichern, weil der schon drin steht (die Objekte sind als Raum gespeichert, nicht mehr als zigbee-id). Deshalb kann ich den Raum auch erst nach dem Array in die Tabelle einfügen, weil ich dafür die Objekte aus dem Kontext brauche.
                                Fällt natürlich weg wenn ich den Raum vorher im Kontext speichere, das ist absolut klar. Aber wären halt redundante Daten :S

                                mickym 1 Reply Last reply Reply Quote 0
                                • mickym
                                  mickym Most Active @Schmetterfliege last edited by

                                  @schmetterfliege Ich bin jetzt wieder mal zu faul - auch wenn ich Deinen Flow schon x Mal durchdacht habe - habe ich ja damals mit gearbeitet, aber:

                                  1. Du brauchst keine Prüfung auf irgendwelche IDs?
                                  2. Du brauchst keine Liste von Räumen
                                  3. Auch Gerätenamen halte ich für überflüssig - da der doch auch Bestandteil des topics ist.

                                  Also die ganzen Topic Objekte zum extrahieren von diesen Informationen ist doch alles im topic enthalten. Und nochmal Du brauchst keine Objekte mehr auszulesen. Was willst Du denn initialisieren - über die Objekte musst Du ja auch nicht mehr Werte aus anderen Datenpunkten auslesen. Das ist doch gerade der Vorteil der Objekte.

                                  Du kannst das ja alles behalten 😉 - aber ich würde den Flow neu aufbauen. 😉

                                  S 1 Reply Last reply Reply Quote 0
                                  • S
                                    Schmetterfliege @mickym last edited by

                                    @mickym said in Zigbee2mqtt installation:

                                    @schmetterfliege Ich bin jetzt wieder mal zu faul - auch wenn ich Deinen Flow schon x Mal durchdacht habe - habe ich ja damals mit gearbeitet, aber:

                                    Bin grad ein wenig überfordert das zu kapieren^^

                                    1. Du brauchst keine Prüfung auf irgendwelche IDs?

                                    Wie meinst das? IDs prüfe ich doch gar nicht? Glaube ich^^

                                    1. Du brauchst keine Liste von Räumen

                                    Eine Liste von Räumen habe ich auch nicht mehr - den Raum ziehe ich mir ja aus der Topic jedes Objektes (im Flow-Kontext)

                                    1. Auch Gerätenamen halte ich für überflüssig - da der doch auch Bestandteil des topics ist.

                                    Gerätenamen habe ich doch gar keine drin? In der Tabelle steht: Raum - Ort (falls es mehr als 1 im Raum gibt) - Temp - Humidity - Last Update

                                    Also die ganzen Topic Objekte zum extrahieren von diesen Informationen ist doch alles im topic enthalten. Und nochmal Du brauchst keine Objekte mehr auszulesen. Was willst Du denn initialisieren - über die Objekte musst Du ja auch nicht mehr Werte aus anderen Datenpunkten auslesen. Das ist doch gerade der Vorteil der Objekte.

                                    Du kannst das ja alles behalten 😉 - aber ich würde den Flow neu aufbauen. 😉

                                    Wieso muss ich keine Objekte auslesen? Den Teil verstehe ich nicht.
                                    Ich bekomme vom IoB doch immer ganze Objekte, ich hole die Werte ja gar nicht mehr einzeln ausm IoB sondern nur das JSON.
                                    Also ich glaube ich mache ja genau das was du da sagst^^
                                    In meinem großen Screenshot mit den 3 Kästen: ich habe bisher nur den ersten angepasst. 2. und 3. sind noch alt, der zweite fällt komplett weg und der dritte wird genau so komprimiert wie der erste

                                    mickym 1 Reply Last reply Reply Quote 0
                                    • mickym
                                      mickym Most Active @Schmetterfliege last edited by

                                      @schmetterfliege sagte in Zigbee2mqtt installation:

                                      Ich bekomme vom IoB doch immer ganze Objekte, ich hole die Werte ja gar nicht mehr einzeln ausm IoB sondern nur das JSON.

                                      Du liest doch in deiner iobroker-IN Node Objekte und keine Werte aus. Das Objekte auslesen war mit dem Zigbee-Adapter notwendig - aber doch jetzt nicht mehr.

                                      Aussderdem fehlt meines Erachtens ein Punkt - zeig halt mal die Definition Deiner iobroker IN Node.

                                      S 1 Reply Last reply Reply Quote 0
                                      • S
                                        Schmetterfliege @mickym last edited by Schmetterfliege

                                        @mickym
                                        a3c6ab08-f9c1-4c27-bdd7-d4290815a73e-image.png

                                        Du meinst statt Objekt auf Value ändern?

                                        181ac51e-6045-468b-9271-a72f711db7d3-image.png
                                        Das erste ist als Value, das zweite als Objekt.
                                        Das meintest du, oder?

                                        mickym 2 Replies Last reply Reply Quote 0
                                        • mickym
                                          mickym Most Active @Schmetterfliege last edited by

                                          @schmetterfliege Ja

                                          19204216-0aef-466c-9417-160b77998c1a-image.png

                                          Erstens ist Deine Wildcard verkehrt. Die ist nicht wie bei einem Dateinamen, sondern gilt für Hierarchieebenen.

                                          Das Topic müsste in meinen Augen

                                          mqtt.0.zigbee2mqtt.Multisensor.*
                                          

                                          lauten. Bei Dir fehlt der Punkt.
                                          Ja und statt Objekt - benötigst Du doch nur noch den Value - das Objekt hast Du nur früher gebraucht, da Du common Attribute des Datenpunktes gebraucht hast, um den Raum zu mappen.

                                          1 Reply Last reply Reply Quote 1
                                          • mickym
                                            mickym Most Active @Schmetterfliege last edited by mickym

                                            @schmetterfliege Das Einzige - was ich nicht mehr im Kopf habe - ob Du irgendwie die Zeitstempel im Objekt gebraucht hast. Das war irgendwie zum Initialisieren, wann die letzte Änderung war. Also lass es auf Objekt.

                                            Also von mir aus lass es als Objekt - da ich glaube Du initialisiert damit Deine Zeitstempel

                                            S 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

                                            535
                                            Online

                                            31.9k
                                            Users

                                            80.2k
                                            Topics

                                            1.3m
                                            Posts

                                            6
                                            284
                                            29127
                                            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