Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Mediola Gateway Statusabfrage (States) umwandeln per Script

    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

    Mediola Gateway Statusabfrage (States) umwandeln per Script

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

      Hi,
      ich hab ein Mediola Gateway und EnOcean Aktoren (Licht Rolladen usw.).
      Primär gehts mir eigentl. aber ums Licht erst einmal.
      Und zwar kann ich die die Aktoren auch per HTTP Request aus dem iobroker schalten, das funktioniert wunderbar.
      Jetzt hätte ich allerdings gerne den aktuellen Status ebenfalls im iobroker, da wenn ich z.b. mit dem Tablet per iobroker das Licht Schalte,
      aber jemand dann per Taster (EnOcean) wieder ausschaltet, bekommt das der iobroker ja nicht mit, da er den "Status" ja nicht kennt.

      Jetzt kann man aber per "GetStates" den Status aller Aktoren abfragen.
      Das würde ich Zyklisch gerne machen wollen und dann den aktuellen Status je ID in einen Datenpunkt schreiben.

      Der Output von Getstates sieht folgendermassen aus:

      {"XC_SUC":[{"type":"ENOCEAN","sid":"01","adr":"00000001","deviceProtocol":"normal","senderID":"FFAF2D81","virtual":false,"data":"eltako_dimmer","state":{"rssiPercentage":0,"timeout":false,"state":null,"level":null,"ramp_time":0,"lock":false}},{"type":"ENOCEAN","sid":"02","adr":"00000002","deviceProtocol":"normal","senderID":"FFAF2D82","virtual":false,"data":"eltako_dimmer","state":{"rssiPercentage":0,"timeout":false,"state":null,"level":null,"ramp_time":0,"lock":false}},{"type":"ENOCEAN","sid":"03","adr":"FFB6FD0E","deviceProtocol":"normal","senderID":"FFAF2D83","virtual":false,"data":"eltako_dimmer","state":{"rssiPercentage":71,"timeout":false,"state":"off","level":0,"ramp_time":0,"lock":false}},{"type":"ENOCEAN","sid":"04","adr":"FFB6FD0F","deviceProtocol":"normal","senderID":"FFAF2D84","virtual":false,"data":"eltako_dimmer","state":{"rssiPercentage":71,"timeout":false,"state":"off","level":0,"ramp_time":0,"lock":false}},{"type":"ENOCEAN","sid":"05","adr":"FFB6FD0B","deviceProtocol":"normal","senderID":"FFAF2D85","virtual":false,"data":"eltako_switch","state":{"rssiPercentage":64,"state":"off","lock":false}},{"type":"ENOCEAN","sid":"06","adr":"FFB6FD14","deviceProtocol":"normal","senderID":"FFAF2D86","virtual":false,"data":"eltako_blind","state":{"rssiPercentage":66,"pos":100,"sync":true,"rv":200,"rt":200,"lock":false}},{"type":"ENOCEAN","sid":"07","adr":"FFB6FD13","deviceProtocol":"normal","senderID":"FFAF2D87","virtual":false,"data":"eltako_blind","state":{"rssiPercentage":66,"pos":100,"sync":true,"rv":200,"rt":200,"lock":false}},{"type":"ENOCEAN","sid":"08","adr":"FFB6FD15","deviceProtocol":"normal","senderID":"FFAF2D88","virtual":false,"data":"eltako_blind","state":{"rssiPercentage":71,"pos":100,"sync":true,"rv":200,"rt":200,"lock":false}},{"type":"ENOCEAN","sid":"09","adr":"FFB6FD16","deviceProtocol":"normal","senderID":"FFAF2D89","virtual":false,"data":"eltako_blind","state":{"rssiPercentage":66,"pos":100,"sync":false,"rv":25,"rt":25,"lock":false}},{"type":"ENOCEAN","sid":"0A","adr":"FFB6FD1B","deviceProtocol":"normal","senderID":"FFAF2DA5","virtual":false,"data":"eltako_blind","state":{"rssiPercentage":71,"pos":100,"sync":false,"rv":30,"rt":30,"lock":false}},{"type":"ENOCEAN","sid":"0B","adr":"FFB6FD06","deviceProtocol":"normal","senderID":"FFAF2D8B","virtual":false,"data":"eltako_switch","state":{"rssiPercentage":71,"state":"on","lock":false}},{"type":"ENOCEAN","sid":"0C","adr":"FFB6FD26","deviceProtocol":"normal","senderID":"FFAF2D8C","virtual":false,"data":"eltako_switch","state":{"rssiPercentage":66,"state":"off","lock":false}},{"type":"ENOCEAN","sid":"0D","adr":"0000000D","deviceProtocol":"normal","senderID":"FFAF2D8D","virtual":false,"data":"eltako_blind","state":{"rssiPercentage":0,"pos":0,"sync":false,"rv":200,"rt":200,"lock":false}},{"type":"ENOCEAN","sid":"0E","adr":"0000000E","deviceProtocol":"normal","senderID":"FFAF2D8E","virtual":false,"data":"eltako_blind","state":{"rssiPercentage":0,"pos":0,"sync":false,"rv":200,"rt":200,"lock":false}},{"type":"ENOCEAN","sid":"0F","adr":"FFB6FD1F","deviceProtocol":"normal","senderID":"FFAF2D8F","virtual":false,"data":"eltako_blind","state":{"rssiPercentage":66,"pos":99,"sync":true,"rv":200,"rt":200,"lock":false}},{"type":"ENOCEAN","sid":"10","adr":"FFB6FD20","deviceProtocol":"normal","senderID":"FFAF2D90","virtual":false,"data":"eltako_blind","state":{"rssiPercentage":71,"pos":100,"sync":true,"rv":200,"rt":200,"lock":false}},{"type":"ENOCEAN","sid":"11","adr":"FFB6FD23","deviceProtocol":"normal","senderID":"FFAF2D91","virtual":false,"data":"eltako_switch","state":{"rssiPercentage":71,"state":"off","lock":false}},{"type":"ENOCEAN","sid":"12","adr":"FFB6FD21","deviceProtocol":"normal","senderID":"FFAF2D92","virtual":false,"data":"eltako_blind","state":{"rssiPercentage":71,"pos":100,"sync":true,"rv":200,"rt":200,"lock":false}},{"type":"ENOCEAN","sid":"13","adr":"FFB6FD22","deviceProtocol":"normal","senderID":"FFAF2D93","virtual":false,"data":"eltako_blind","state":{"rssiPercentage":71,"pos":100,"sync":true,"rv":200,"rt":200,"lock":false}},{"type":"ENOCEAN","sid":"14","adr":"FFB6FD0C","deviceProtocol":"normal","senderID":"FFAF2D94","virtual":false,"data":"eltako_switch","state":{"rssiPercentage":66,"state":"off","lock":false}},{"type":"ENOCEAN","sid":"15","adr":"FFB6FD25","deviceProtocol":"normal","senderID":"FFAF2D95","virtual":false,"data":"eltako_switch","state":{"rssiPercentage":71,"state":"off","lock":false}},{"type":"ENOCEAN","sid":"16","adr":"FFB6FD02","deviceProtocol":"normal","senderID":"FFAF2D96","virtual":false,"data":"eltako_switch","state":{"rssiPercentage":73,"state":"off","lock":false}},{"type":"ENOCEAN","sid":"17","adr":"FFB6FD18","deviceProtocol":"normal","senderID":"FFAF2D97","virtual":false,"data":"eltako_blind","state":{"rssiPercentage":71,"pos":100,"sync":true,"rv":30,"rt":30,"lock":false}},{"type":"ENOCEAN","sid":"18","adr":"FFB6FD0A","deviceProtocol":"normal","senderID":"FFAF2D98","virtual":false,"data":"eltako_switch","state":{"rssiPercentage":71,"state":"off","lock":false}},{"type":"ENOCEAN","sid":"19","adr":"00000019","deviceProtocol":"normal","senderID":"FFAF2D99","virtual":false,"data":"eltako_blind","state":{"rssiPercentage":0,"pos":0,"sync":false,"rv":200,"rt":200,"lock":false}},{"type":"ENOCEAN","sid":"1A","adr":"FFB6FD11","deviceProtocol":"normal","senderID":"FFAF2D9A","virtual":false,"data":"eltako_blind","state":{"rssiPercentage":71,"pos":0,"sync":true,"rv":12,"rt":12,"lock":false}},{"type":"ENOCEAN","sid":"1B","adr":"FFB6FD12","deviceProtocol":"normal","senderID":"FFAF2D9B","virtual":false,"data":"eltako_blind","state":{"rssiPercentage":71,"pos":100,"sync":true,"rv":12,"rt":12,"lock":false}},{"type":"ENOCEAN","sid":"1C","adr":"FFB6FD07","deviceProtocol":"normal","senderID":"FFAF2D9C","virtual":false,"data":"eltako_switch","state":{"rssiPercentage":71,"state":"off","lock":false}},{"type":"ENOCEAN","sid":"1D","adr":"FFB6FD27","deviceProtocol":"normal","senderID":"FFAF2D9D","virtual":false,"data":"eltako_switch","state":{"rssiPercentage":0,"state":"off","lock":false}},{"type":"ENOCEAN","sid":"1E","adr":"0000001E","deviceProtocol":"normal","senderID":"FFAF2D9E","virtual":false,"data":"eltako_switch","state":{"rssiPercentage":0,"state":"off","lock":false}},{"type":"ENOCEAN","sid":"1F","adr":"FFB6FD04","deviceProtocol":"normal","senderID":"FFAF2D9F","virtual":false,"data":"eltako_switch","state":{"rssiPercentage":0,"state":"off","lock":false}},{"type":"ENOCEAN","sid":"20","adr":"FFB6FD05","deviceProtocol":"normal","senderID":"FFAF2DA0","virtual":false,"data":"eltako_switch","state":{"rssiPercentage":0,"state":"off","lock":false}},{"type":"ENOCEAN","sid":"21","adr":"FFB6FD08","deviceProtocol":"normal","senderID":"FFAF2DA1","virtual":false,"data":"eltako_switch","state":{"rssiPercentage":66,"state":"off","lock":false}},{"type":"ENOCEAN","sid":"22","adr":"FFB6FD10","deviceProtocol":"normal","senderID":"FFAF2DA2","virtual":false,"data":"eltako_dimmer","state":{"rssiPercentage":71,"timeout":false,"state":"off","level":0,"ramp_time":0,"lock":false}},{"type":"ENOCEAN","sid":"23","adr":"FFB6FD0D","deviceProtocol":"normal","senderID":"FFAF2DA3","virtual":false,"data":"eltako_switch","state":{"rssiPercentage":71,"state":"off","lock":false}},{"type":"ENOCEAN","sid":"24","adr":"FFB6FD09","deviceProtocol":"normal","senderID":"FFAF2DA4","virtual":false,"data":"eltako_switch","state":{"rssiPercentage":59,"state":"off","lock":false}},{"type":"ENOCEAN","sid":"25","adr":"FFB6FD1E","deviceProtocol":"normal","senderID":"FFAF2DA6","virtual":false,"data":"eltako_blind","state":{"rssiPercentage":71,"pos":100,"sync":true,"rv":30,"rt":30,"lock":false}},{"type":"ENOCEAN","sid":"26","adr":"FFB6FD17","deviceProtocol":"normal","senderID":"FFAF2DA7","virtual":false,"data":"eltako_blind","state":{"rssiPercentage":66,"pos":100,"sync":true,"rv":25,"rt":25,"lock":false}},{"type":"ENOCEAN","sid":"27","adr":"FFB6FD19","deviceProtocol":"normal","senderID":"FFAF2DA8","virtual":false,"data":"eltako_blind","state":{"rssiPercentage":71,"pos":100,"sync":true,"rv":30,"rt":30,"lock":false}},{"type":"ENOCEAN","sid":"28","adr":"FFB6FD1C","deviceProtocol":"normal","senderID":"FFAF2DA9","virtual":false,"data":"eltako_blind","state":{"rssiPercentage":71,"pos":100,"sync":false,"rv":23,"rt":23,"lock":false}},{"type":"ENOCEAN","sid":"29","adr":"FFB6FD1D","deviceProtocol":"normal","senderID":"FFAF2DAA","virtual":false,"data":"eltako_blind","state":{"rssiPercentage":71,"pos":100,"sync":false,"rv":30,"rt":30,"lock":false}},{"type":"EVENT","adr":"01","state":"1"},{"type":"EVENT","adr":"02","state":"1"}]}
      

      Sorry für die Optik des Codes, wenn mans im Texfile ganz breit zieht, sieht man dass da pro ID eine Zeile ist. Hier ist es ein Durcheinander leider und schlecht lesbar.

      Kann man das irgendwie per Script filtern, z.b. ich nehme jetzt z.b. mal die Adresse "FFB6FD0B" das letzte "state":"off" ist ja der status (EIN/AUS), den ich gerne abfragen möchte. Kann man das irgendwie scripten dass ich die Statuse der gewünschten ID´s irgendwie rausschreiben kann in einen Datenpunkt im iobroker, den ich dann anderweitig wieder benutzen kann. True/False reicht da ja oder bei den Dimmern die Prozente z.b....

      Ich bin da leider Scripttechnisch überfragt und mir fällt da auch mit Blockly nichts ein wie ich das filtern könnte? Wahrscheinlich geht das am besten per Javascript, aber da hab ich absolut keine Ahnung davon.

      Ich stell mir das irgendwie so vor: If "FFB6FD0B" status = off write userdata.0/LampeXY=false , so in die Richtung. Nur halt absolut keine Ahnung wie, da man ja den ganzen unnützen Müll der da mit in der Liste ist auch irgendwie filtern muss.

      Vielleicht hat jemand die Lösung oder zumindestens einen Ansatz den man ausarbeiten könnte?

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @W0RSCHD last edited by paul53

        @w0rschd sagte: mir fällt da auch mit Blockly nichts ein wie ich das filtern könnte?

        Ansatz:

        Bild_2021-12-21_231119.png

        W 1 Reply Last reply Reply Quote 1
        • W
          W0RSCHD @paul53 last edited by W0RSCHD

          @paul53 Ok das ist wirklich schon mal ein Ansatz vielen Dank!!! Ich bekomme es damit wahrsch. nicht komplett hin aber ich fange mal an zu "basteln"

          Wie bringe ich die Liste als Variable da rein?

          Ich mache ja als erstes ein execute mit dem http get Befehl damit ich diese Liste aktuell bekomme als Antwort vom Mediola Gateway.
          Diese will ich dann ja immer aktuell "Filtern" und die States setzen. Idealerweise zyklisch.
          Welchen block muss ich benutzen damit der Output vom exec Befehl (also diese Liste dann) als Variable fürs Script verfügbar ist?
          Das ist für mich noch "Neuland", ich versuch mich da aber rein zu fuchsen

          paul53 2 Replies Last reply Reply Quote 0
          • paul53
            paul53 @W0RSCHD last edited by

            @w0rschd sagte: execute mit dem http get Befehl

            Weshalb nicht mit request?

            1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @W0RSCHD last edited by

              @w0rschd sagte: Idealerweise zyklisch.

              Oberer Teil für alle 10 Sekunden:

              Bild_2021-12-21_232351.png

              Die Variable result muss genau so geschrieben werden.

              W 2 Replies Last reply Reply Quote 0
              • W
                W0RSCHD @paul53 last edited by

                @paul53 oh cool danke!! das klimper ich direkt mal rein und Teste mich ran.

                Ja sorry ich meinte auch Request nicht Execute, hab ich grad gemerkt als ich mal anfangen wollte das zusammen zu bauen

                1 Reply Last reply Reply Quote 0
                • W
                  W0RSCHD @paul53 last edited by

                  @paul53 Ich habs zum Testen mal so gemacht

                  Neue Bitmap (5).jpg

                  Dann müsste ich doch zumindestens was er als Variable in der Get_States_Liste hat als Telegram Nachricht bekommen oder?
                  Weil da kommt nichts.
                  Ich wollte es zum debuggen mal so testen damit ich sehe dass der Teil schon mal klappt. Und dann stück für Stück aufbauen.

                  paul53 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @W0RSCHD last edited by paul53

                    @w0rschd sagte: Get_States_Liste hat als Telegram Nachrich

                    Telegram kann wahrscheinlich nicht mit einem Array of objects umgehen, sondern benötigt Strings.

                    W 1 Reply Last reply Reply Quote 1
                    • W
                      W0RSCHD @paul53 last edited by W0RSCHD

                      @paul53 ah ok... hab den Fehler vom Telegram aber auch schon, da muss noch ein erstelle Text aus... vor die Variable...

                      Dann kommt aber auch wie du schon vermutet hast nur (object) object in "endlosschleife" ^^

                      Nächste Frage, angenommen die Liste passt (was ich ja so wie ich dachte nicht überprüfen kann), kommt ja das mit dem Zählen. Er zählt die Kollumnen durch,
                      woher weiss er was der Trenner ist also : oder ;? Oder zählt er Zeilenweise?

                      Was ich auch nicht ganz kapier, du aktualisierst objektid xy mit dem atribut state.state vom obj mit "on" als text, aber wenn dort z.b. off drin wäre, dann würde er trotzdem "on" in das objekt schreiben? Ich steh da grad aufm schlauch

                      paul53 1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 @W0RSCHD last edited by

                        @w0rschd sagte: da muss noch ein erstelle Text aus... vor die Variable

                        Das funktioniert nicht. Wandle es für Telegram in ein JSON:

                        Bild_2021-12-21_234057.png

                        W 1 Reply Last reply Reply Quote 1
                        • W
                          W0RSCHD @paul53 last edited by

                          @paul53 wie kann ich mir anschauen was der "Inhalt" von der Liste ist? Damit ich auch den späteren zusammenbau wann er was wählt besser verstehe?

                          paul53 1 Reply Last reply Reply Quote 0
                          • paul53
                            paul53 @W0RSCHD last edited by

                            @w0rschd sagte: wie kann ich mir anschauen was der "Inhalt" von der Liste ist?

                            Mit dem JSON-Viewer.

                            W 1 Reply Last reply Reply Quote 1
                            • W
                              W0RSCHD @paul53 last edited by

                              @paul53 ok, wie komm ich an die Liste dran? Die liegt als File auf dem iobroker System oder wie bekomm ich die Variable in den Json-Viewer? Vielleicht doof die Frage aber das ist mir noch nicht ganz klar.

                              paul53 1 Reply Last reply Reply Quote 0
                              • paul53
                                paul53 @W0RSCHD last edited by

                                @w0rschd sagte: wie bekomm ich die Variable in den Json-Viewer?

                                Mit Copy & Paste aus dem ersten Beitrag.

                                Bild_2021-12-22_000511.png

                                W 1 Reply Last reply Reply Quote 0
                                • W
                                  W0RSCHD @paul53 last edited by W0RSCHD

                                  @paul53 achsooo du meintest meine Liste, das ist ja das Ergebnis wenn man den Request mit dem Browser macht.... damit komm ich ja noch klar.
                                  Ich meinte im Blocky um zu prüfen ob der Request funktioniert und er das was zurück kommt auch in der Liste richtig hat, wollte ich um nachzuprüfen was in der Variable drin ist mir das per Telegram senden. So meinte ich das. Geht das irgendwie anderst zu prüfen was in der "Variable" drin steht und ob er den Request richtig übernommen hat?
                                  Oder muss ich mich einfach drauf verlassen dass das halt so klappt hehe

                                  paul53 1 Reply Last reply Reply Quote 0
                                  • paul53
                                    paul53 @W0RSCHD last edited by

                                    @w0rschd sagte: zu prüfen was in der "Variable" drin steht und ob er den Request richtig übernommen hat?

                                    Ein Debug-Block in der Schleife gibt nacheinander die 42 Objekte aus.

                                    Bild_2021-12-22_002122.png

                                    W 2 Replies Last reply Reply Quote 1
                                    • W
                                      W0RSCHD @paul53 last edited by

                                      @paul53 ok, so langsam klingelts 🙂

                                      tesltauf.jpg

                                      Ich habs jetzt mal so gemacht, nur SenderID gegen adr getauscht, da ich ja den Zustand vom Aktor, nicht den Lichtschalter oder was auch immer SenderID ist, abfragen will.

                                      Aber er schreibt mir nichts in den Datenpunkt vom Bürolicht.
                                      Wo hängt mein Hirn gerade?

                                      paul53 1 Reply Last reply Reply Quote 0
                                      • W
                                        W0RSCHD @paul53 last edited by

                                        @paul53 Habs hinbekommen.

                                        Vielen vielen Dank! Ohne deine Hilfe wär ich da niemals drauf gekommen, genial 🙂

                                        1 Reply Last reply Reply Quote 0
                                        • paul53
                                          paul53 @W0RSCHD last edited by

                                          @w0rschd sagte: schreibt mir nichts in den Datenpunkt vom Bürolicht.

                                          Hat die Debug-Ausgabe funktioniert? Dann müsste "on" oder "off" in den Datenpunkt geschrieben werden.

                                          W 1 Reply Last reply Reply Quote 0
                                          • W
                                            W0RSCHD @paul53 last edited by

                                            @paul53 ja hat geklappt. Hatte Debug noch im Blockly an dann hat er nichts geschrieben, das hab ich dann gemerkt und ausgemacht und tadaaaa es ginge.
                                            Habe mir jetzt schon mal Wohn-Esszimmer-Küche "programmiert" und das funktioniert alles prima, das war genau das was ich gesucht habe.

                                            Ich kanns nur nochmal wiederholen, Danke für deine Hilfe, ohne die hätte ich da gar nix verstanden, geschweige denn hinbekommen!

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            972
                                            Online

                                            31.9k
                                            Users

                                            80.2k
                                            Topics

                                            1.3m
                                            Posts

                                            blockly javascript
                                            4
                                            23
                                            1145
                                            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