Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Verfügbarkeit von Sensoren über Node Red überwachen

    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

    Verfügbarkeit von Sensoren über Node Red überwachen

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

      @schmetterfliege Was hat den die Gerätenname Node in dem Flow zu suchen?

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

        @mickym

        Der heißt nur so, mit dem setze ich doch die Flow Variablen, oder nicht?

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

          @schmetterfliege Mit der Gerätenamen Node setzt Du nur die Namen in den Objekten der Flow variablen.

          Deswegen ist dieser Teil völlig unabhängig von den Werten und sollte mit der Tabelle gar nichts zu tun haben. Die ID wolltest Du gar nicht in der Tabelle haben und warum ist dann dies in der ui_table. Die id dient nur der internen Adressierung.

          So und Dein Flow geht deswegen nicht, weil die split Node nichts zum aufteilen hat. Du musst ja erst die payload mit dem Inhalt der Flowvariablen füttern. 😉

          Trenn bzw. lass mal das Namen auslesen völlig getrennt vom eigentlich Flow.

          So sollte Dein Flow aussehen:

          16c46fc3-e45c-4e25-a00e-055ebe08c2c7-image.png

          und wenn Du die Ausgabe der Flow variablen testen willst - dann hängst Du eine Inject Node vor die setze msg. payload

          Aus meiner function Node - kommt nichts raus. 😉

          2a847cf5-e6d5-48e3-a9aa-2aee4064a7df-image.png

          Das return.msg habe ich auskommentiert. 😉

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

            @schmetterfliege sagte in Verfügbarkeit von Sensoren über Node Red überwachen:

            @mickym

            Der heißt nur so, mit dem setze ich doch die Flow Variablen, oder nicht?

            Wenn Du allerdings code in Deiner function Node verwendest - den ich nicht kenne - dann weiß ich es natürlich nicht. 😉

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

              @mickym

              Die Change Node vor dem Split hat gefehlt, das hat das Problem gelöst! 🙂

              Wie gesagt, den Teil mit dem aktualisieren hab ich für den Test komplett weggelassen, da ich einfach nur eine neue Tabelle einmalig erzeugen wollte um zu schauen ob die sich richtig aufbaut.

              Ich hab den eigentlichen Flow jetzt wie von dir beschrieben (bis auf die extra Test Node oben).
              992b55f6-efd4-4966-ba65-4f07d1ce98e1-image.png

              Das setzt die Variablen, es erstellt aber nicht automatisch die Tabelle mit den Namen.
              Die kommt nur, wenn ich eine zweite INIT Node oben an den Change Node (wie von dir beschrieben) hänge.
              Nur wenn NR jetzt neu startet und beide gleichzeitig triggern, dann wird die Tabelle doch auch nicht gebaut, weil er sie baut bevor die Gerätenamen da sind?

              Mit anderen Worten:
              13882aaf-6ce8-4e31-99ad-61a9d331bb72-image.png
              Ich möchte, dass das rot markierte, also das was die Gerätenamen generiert, die Namen sofort in die Tabelle einträgt.
              Aber genau das tut sie eben nicht, sondern vermutlich erst wenn mal ein Sensor ein Update macht? (oder ich manuell die change node direkt darüber triggere)

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

                @schmetterfliege Die Init Node - hatte ich ja geschrieben - die muss halt einmalig trigger - da musst halt den Haken setzen. Dann sind die Namen doch direkt nach NR Start verfügbar. Die Werte kommen erst peu a peu, wenn Du die halt unbedingt einmalig initialisieren willst - dann musst halt noch zusätzliche list Nodes zum Auslesen benutzen.

                Also noch den Haken in der Init Node - dann werden die Namen sofort nach Systemstart gesetzt.

                ee2f6351-ba5b-4e70-90a3-625f2ce96d8c-image.png

                Manchmal scheine ich mich doch nicht klar auszudrücken:

                4b8adfdc-aa66-4ac6-a99a-12ab481850d9-image.png

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

                  @schmetterfliege Die Namen werden aber natürlich erst gelesen wenn Du etwas getriggert ist. - wenn Du das nicht willst. Dann gibt halt aus der function Node eine Nachricht aus, wenn alles fertig ist. Das geht mit einer trigger Node.

                  Kommentiere aus der Namens -function Node die return msg; wieder ein:

                  1e02aa0a-7398-46ae-9b55-7c56867a6fb5-image.png

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

                    @mickym
                    Sorry falls ich mich komplett blöd anstelle, solangsam befürchte ich es^^
                    Ich habe (im Prinzip) schon verstanden was du meinst!
                    Also den Haken in der Init Node habe ich nun drin.
                    Wenn ich den Flow neu starte, habe ich in damit also sofort alle Namen verfügbar.
                    Die Tabelle ist aber leer.
                    Die ist erst da, wenn irgendein Sensor nun einen Wert aktualisiert.
                    => Das ist das, was du für mich aufgebaut hast.

                    Genau das - das kursive - möchte ich nun verkürzen indem die Namen nicht nur sofort verfügbar sein sollen, sondern auch sofort in der Tabelle stehen.
                    Das habe ich gerade die ganze Zeit durch meine Tests versucht^^

                    Wenn ich jetzt deine letzte Nachricht richtig interpretiere, müsste ich den Flow also so anpassen:
                    56bc21d1-8859-4e75-b31b-8bb58ff1f531-image.png
                    Also die Function node mit der Change Node verbinden, und in der Function meine msg ausgeben.
                    Oder muss ich die beiden Nodes nicht miteinander verbinden?

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

                      @schmetterfliege Ja

                      3981d44d-4ffb-4861-b835-2aca7ddd35dd-image.png

                      und dazwischen hängst eine trigger Node - damit nur die letzte Nachricht triggert - sprich alles fertig ist:

                      7bf9f904-4a1a-42dd-a852-2b962762dce6-image.png

                      Irgendwann wirst Du Node Red schon noch lieben - ist doch alles super easy wie man vorhandenes einfach miteinander verkabeln kann, um den individuellen Wünschen gerecht zu werden. 😉 😉 😉

                      Übrigens nutzte selbst halt Debug Nodes soviel Du kannst um immer zu sehen, was passiert - also müsste aus der trigger Node nur eine Nachricht anstelle von 18 rauskommen. 😉

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

                        @mickym

                        Ich liebe NR!
                        Es nervt bloß dass ich so viel Hilfe brauche und mich doof anstelle :D.
                        Meinem Spaß an NR tut das keinen Abbruch, im Gegenteil!

                        Mit dem Trigger hat es nun geklappt, vielen Dank!

                        Bitte hasse mich nicht:
                        Nun müsste ich den Flow noch anpassen dass er mir nur die richtigen Sensoren beim aktualisieren liefert.
                        Hier zur Veranschaulichung:
                        cba4a77b-4b6c-4a87-ab99-37f364f76b5d-image.png
                        Der obere Teil - also da wo die Aktualisierungen kommen - liefert mir Daten von 22 Sensoren. 18 die ich will, 2 Sensoren die nicht Konfiguriert sind, und 2 Motion Sensoren die dummerweiße auch einen Temp Sensor haben...
                        Der untere Teil, also da wo ich die Namen auslesen, spuckt eigentlich 32 Sensoren aus (weil 32 Zigbee Devices).
                        Über die Switch Node hole ich mir die 18 die ich brauche (haben alle "Multisensor" im Namen) raus.
                        Das klappt.
                        Nun muss ich den oberen Teil so anpassen, dass ich auch nur die Daten von den 18 Sensoren bekomme.
                        Ansonsten habe ich 4 Einträge in der Tabelle, die keinen Namen haben (von den unkonfigurierten und von den motion sensoren).

                        Was ich tun würde:
                        Mit einer Switch Node VOR den Function Nodes checken ob das was ich bekomme ein bestimmtes Topic hat (die IDs von den Sensoren). Sprich: 18 Outputs, wo ich die 18 die ich brauche raussuche und jeweils einem Output zuweise.
                        Mit den anderen 4 würde dann nichts passieren, weil die nicht in die Funktionen kommen.
                        Zur Veranschaulichtung würde das dann so aussehen:
                        21e3c788-8c29-4255-ad8f-b1877a4f6d5d-image.png
                        Die 18 outputs gehen dann alle in die Funktion Nodes jeweils.

                        Alternativ könnte ich auch - statt mir die 18 rauszusuchen die ich möchte - die 4 raussuchen die ich NICHT möchte, und den Output dann nicht verwenden.
                        So:
                        ee40af29-035c-47c1-b970-1341767cf1da-image.png
                        Da würde dann output1-4 nichts machen, und output 5 hänge ich dann an die Funktion Nodes.
                        Aber ich nehme an das ist nicht gerade die beste Lösung?

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

                          @schmetterfliege Warte halt mal - ich bin ja schon dabei - was als Lösung vorzuschlagen. Das heißt mit den Namen sind nur die gewünschten Sensoren vorselektiert und Du willst nur, dass diese dann auch trigger und in die Tabelle schreiben? - Habe ich hoffentlich so richtig verstanden.

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

                            @mickym

                            Genau.
                            Durch den Part der die Werte aktualisiert bekomme ich aber 4 zusätzliche, die dann ebenfalls in der Tabelle landen:
                            f5caa095-c72f-48c3-a782-13625d0454d2-image.png
                            Hier ganz unten - da sind schon 2 von 4. Die sollen da nicht landen.
                            Wenn die 4 gar nicht erst reinkommen, könnte ich die JOIN Node auch wieder auf 18 begrenzen - da ja dann immer die gleichen 18 reinkommen. Aktuell muss ich das auf 22 lassen, weil sonst die 4 doofen Sensoren die eigentlichen Sensoren aus der Tabelle schmeißen^^

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

                              @schmetterfliege So diese Node zwischen die Change und die Function Node - filtert alle unebkannten IDs aus:

                              bf76ed04-155a-4cdd-9596-12b659855885-image.png

                              [
                                 {
                                     "id": "bfe1061.7e771f8",
                                     "type": "switch",
                                     "z": "54b226bc.0793e8",
                                     "name": "Nur definierte IDs",
                                     "property": "$exists($lookup($flowContext('zigbee'), topic))\t",
                                     "propertyType": "jsonata",
                                     "rules": [
                                         {
                                             "t": "true"
                                         }
                                     ],
                                     "checkall": "true",
                                     "repair": false,
                                     "outputs": 1,
                                     "x": 890,
                                     "y": 1480,
                                     "wires": [
                                         []
                                     ]
                                 }
                              ]
                              

                              fd3fa7cf-6f47-466c-9893-e098f37f9fca-image.png

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

                                @mickym

                                Danke!

                                Verständnisfrage:
                                27dd848c-c521-47ea-8371-217a8da03dda-image.png
                                Sind die "Namen" der Objekte (rechts zu sehen) Topics? (also in dem Beispiel: ist 00158d... das "topic"?)

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

                                  @schmetterfliege Na was machen wir denn hier?

                                  001ba12e-9c7e-4351-a593-8dc9a7422a9d-image.png

                                  So fügt sich zusammen, was zusammengehört. 😉

                                  Und das topic hole ich doch davor aus dem Pfad raus:

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

                                    @mickym said in Verfügbarkeit von Sensoren über Node Red überwachen:

                                    @schmetterfliege Na was machen wir denn hier?

                                    001ba12e-9c7e-4351-a593-8dc9a7422a9d-image.png

                                    So fügt sich zusammen, was zusammengehört. 😉

                                    EDIT: Moment, muss doch nochmal kurz nachdenken.
                                    Also:
                                    In den Funktionen definieren wir die FlowVariablen. Das is klar.
                                    Dass wir die anhand der Topics die wir übergeben bekommen setzen, ist soweit auch klar.
                                    Nur: in dem Moment wo sie dann als FlowVariable gesetzt sind, ist der "Name" den jedes Object hat ein Topic?

                                    Gegenbeispiel: Wenn ich der Funktion die ID nicht per msg.topic, sondern als msg.id gebe (weil die über msg.id reinkommt statt msg.topic), dann erhalte ich doch ebenso die FlowVariable mit den richtigen "Werten".
                                    Würde man dann in der Switch Node statt "topic" -> "id" nutzen, oder weiterhin topic?
                                    Das ist nämlich der Kern meiner Frage: f3887a7d-de9a-4d08-aa1e-f9839ba2c1b6-image.png ist die Definition hiervon ein TOPIC:
                                    Sind das alles Topic per Definition oder weil wir in der Funktion Node den Namen per "msg.topic" gesetzt haben? (was für mich persönlich kein Sinn ergeben würde)

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

                                      @schmetterfliege Kannst ja testen - Du kannst ja 2 Inject Nodew davor plazieren mit einem msg.topic und einer bekannten und unbekannten ID. Es sollte nur die mit der bekannten ID durchgelassen werden. Mach am Besten einfach eine Kopie der Switch Node damit kannst testen.

                                      fe53c17c-a92d-4b75-80df-20ec2d487b76-image.png

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

                                        @mickym

                                        Dass es funktioniert glaube ich ja, ich möchte nur verstehen nach was genau wir da Filtern^^
                                        Also was dieses "topic" ist.

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

                                          @schmetterfliege

                                          Also die Flow variable ist ein Objekt. Dieses Objekt besteht aus Eigenschaften die wiederum ein Objekte sind.

                                          Das Objekt der Flow variable heißt zigbee.

                                          Das Objekt der nun Eigenschaften die ich so benennen wie das msg.topic. Das ist das A und O - die id - spielt nur für die Tabelle eine Rolle für uns nicht.

                                          Im Prinzip interessiert uns wie das Objekt aussieht überhaupt nicht - wir benennen die Eigenschaften des Objektes immer nach dem msg.topic - und somit bleibt auch die Zuordnung immer korrekt:

                                          2b6bcab9-f246-40be-bb96-608ed499a0c2-image.png

                                          Auch beim Setzen der Namen interessiert mich der Inhalt - der Wert der Eigenschaft überhaupt nicht, sondern es wird nur die Zuordnung über das msg.topic gesetzt

                                          a831b0eb-d195-4d27-9719-81cd9762cd66-image.png

                                          Die Eigenschaften im zigbee Objekt stammen also alle aus der msg.topic und nur die ist interessant für die Zuordung und Identifikation:
                                          screen.png

                                          Nun liest Du mit der JSONATA das Objekt aus - wichtig ist hier die lookup Funktion:

                                          d67d8359-920c-4d91-99a4-894cadcf95ca-image.png

                                          Sprich da ich ja vorher die Eigenschaften alle mit msg.topic festgelegt habe, kann ich natürlich auch mit lookup suchen, ob das Wert existiert.

                                          Die Switch Node prüft also ob es im Objekt zigbee eine Eigenschaft "00158d0003f13adf" gibt - falls ja wird das Objekt zurückgeliefert - also am Anfang nur : { "name" : " Gerät Büro"}. Das interessiert uns aber nicht. Deswegen rufe ich mit Exists nur auf - ob lookup ein Objekt zurückliefert oder nicht. Falls true - lässt er die Originalnachricht durch. Ansonsten wird undefined anstelle eines Objektes zurückgegeben und exists liefert false und die Nachricht wird blockiert.

                                          Fertig - viel genauer kann ich es eingentlich nicht mehr erklären.

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

                                            @mickym
                                            Lass dich nicht unterbrechen - ich werfe nur die Zwischenfrage ein weil die Bilder nur im Zwischenspeicher sind^^

                                            Wenn ich die Variable nun nicht über Topic, sondern "bla" setze - weil das was ich will nicht über msg.topic rein kommt sondern über msg.bla:
                                            2479f890-f1b5-4ed8-a926-03b8ce8a1c9a-image.png
                                            Würde die switch Node dann so aussehen:
                                            98ab3a6f-b0c0-4db9-8b32-4b498cfd0179-image.png
                                            Oder würde ich in der Switch Node trotzdem topic benutzen?

                                            Oder kann ich in der Funktion die Variable gar nicht erst basteln wenn ich statt "msg.topic" einfach "msg.bla" nehme?

                                            mickym 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

                                            575
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            5
                                            426
                                            49759
                                            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