Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. On(pattern, callbackOrId, value) -> Rückgabe: obj

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    On(pattern, callbackOrId, value) -> Rückgabe: obj

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

      Muss jetzt funktionieren.

      Danke fürs Fehlermelden. 😉

      1 Reply Last reply Reply Quote 0
      • ruhr70
        ruhr70 last edited by

        javascript-0	2015-07-11 07:29:39	info	}
        javascript-0	2015-07-11 07:29:39	info	"enumNames": []
        javascript-0	2015-07-11 07:29:39	info	"enumIds": [],
        javascript-0	2015-07-11 07:29:39	info	"deviceName": "Küche Taster Säule",
        javascript-0	2015-07-11 07:29:39	info	"deviceId": "hm-rpc.0.FEQ0060867",
        javascript-0	2015-07-11 07:29:39	info	"channelName": "Küche Wandlampe rot",
        javascript-0	2015-07-11 07:29:39	info	"channelId": "hm-rpc.0.FEQ0060867.1",
        javascript-0	2015-07-11 07:29:39	info	"name": "Küche Wandlampe rot Taster links.STATE",
        javascript-0	2015-07-11 07:29:39	info	},
        
        1 Reply Last reply Reply Quote 0
        • ruhr70
          ruhr70 last edited by

          Der Taster ist bei mir dem Raum "Küche" zugeordnet.

          Müsste das nicht in enumNames auftauchen?

          1 Reply Last reply Reply Quote 0
          • carsten04
            carsten04 Developer last edited by

            Hallo ruhr70,

            das müsste eigentlich auch nach meinem Verständnis so sein. Da enumNames ja ein Array ist glaube ich, dass hier nicht nur der Raum (von enum.rooms), sondern auch Favoriten (enum.favotires) und Funktionsnamen (enum.functions) in der jeweilgen JSON-Struktur erscheinen müssten, falls diese bei dem zugehörigen STATE gesetzt wurden (gleiches müsste nach meinem Verständnis auch für die enumIds gelten).

            @Bluefox: danke für die superschnelle Reaktion. Jetzt kann ich schon mal weiter scripten und meine ccu.io Portierung zu Ende bringen.

            Beste Grüße

            Carsten

            1 Reply Last reply Reply Quote 0
            • Bluefox
              Bluefox last edited by

              @ruhr70:

              Der Taster ist bei mir dem Raum "Küche" zugeordnet.

              Müsste das nicht in enumNames auftauchen? `
              Wenn du folgendes eingibst:

              iobroker l e | grep FEQ0060867
              

              Sieht du was?

              P.S. l - list, e - enum. Es geht auch "iobroker list enum"

              1 Reply Last reply Reply Quote 0
              • Bluefox
                Bluefox last edited by

                @carsten04:

                Hallo ruhr70,

                das müsste eigentlich auch nach meinem Verständnis so sein. Da enumNames ja ein Array ist glaube ich, dass hier nicht nur der Raum (von enum.rooms), sondern auch Favoriten (enum.favotires) und Funktionsnamen (enum.functions) in der jeweilgen JSON-Struktur erscheinen müssten, falls diese bei dem zugehörigen STATE gesetzt wurden (gleiches müsste nach meinem Verständnis auch für die enumIds gelten).

                @Bluefox: danke für die superschnelle Reaktion. Jetzt kann ich schon mal weiter scripten und meine ccu.io Portierung zu Ende bringen.

                Beste Grüße

                Carsten `
                Bei mir ist z.B. enumIds = ["enum.favorites.Admin.Heizung","enum.functions.Heizung","enum.rooms.Kinderzimmer"]

                1 Reply Last reply Reply Quote 0
                • ruhr70
                  ruhr70 last edited by

                  ich probier das nachher.

                  d.h. was Du davor angegeben hattest b

                  bin gerade auf einen "russischen" Geburtstag;-)

                  Gesendet von iPhone mit Tapatalk

                  1 Reply Last reply Reply Quote 0
                  • carsten04
                    carsten04 Developer last edited by

                    @Bluefox:

                    @carsten04:

                    Hallo ruhr70,

                    das müsste eigentlich auch nach meinem Verständnis so sein. Da enumNames ja ein Array ist glaube ich, dass hier nicht nur der Raum (von enum.rooms), sondern auch Favoriten (enum.favotires) und Funktionsnamen (enum.functions) in der jeweilgen JSON-Struktur erscheinen müssten, falls diese bei dem zugehörigen STATE gesetzt wurden (gleiches müsste nach meinem Verständnis auch für die enumIds gelten).

                    @Bluefox: danke für die superschnelle Reaktion. Jetzt kann ich schon mal weiter scripten und meine ccu.io Portierung zu Ende bringen.

                    Beste Grüße

                    Carsten Bei mir ist z.B. enumIds = ["enum.favorites.Admin.Heizung","enum.functions.Heizung","enum.rooms.Kinderzimmer"]

                    Hallo Bluefox,

                    bei mir bleiben enumNames und enumIds weiterhin leer. Ich habe folgendes einfache Szenario getestet:

                    function allLightsToggle(obj) {
                        log(JSON.stringify(obj),'info');
                    }
                    
                    on('hm-rpc.0.LEQ1226350.1.STATE',function(obj){
                        allLightsToggle(obj);
                        });
                    

                    Dabei ist LEQ1226350 ein 1fach Schaltaktor (HM-LC-Sw1-FM) der das Terrassenlicht schaltet und dem Raum Garten (enum.rooms) und dem Gewerk Licht (enum.functions) zugeordnet wurde.

                    JSON.stringify(obj) liefert:

                    2015-07-12 08:55:37.651  - info: javascript.0 script.js.Test: {"id":"hm-rpc.0.LEQ1226350.1.STATE","newState":{"val":true,"ts":1436684138,"ack":true,"lc":1436684138,"from":"system.adapter.hm-rpc.0"},"oldState":{"val":false,"ts":1436683871,"ack":true,"lc":1436683158,"from":"system.adapter.hm-rpc.0"},"common":{},"native":{},"channelId":"hm-rpc.0.LEQ1226350.1","channelName":"Schalter Terrassenlicht:1","deviceId":"hm-rpc.0.LEQ1226350","deviceName":"Schalter Terrassenlicht","enumIds":[],"enumNames":[]}
                    

                    und die Ausgabe von iobroker l e liefert an den relevanten Stellen:

                    =====================================================================================
                    rooms.Garten       (Garten)
                    -------------------------------------------------------------------------------------
                    hm-rpc.0.LEQ1226350.1
                    
                    =====================================================================================
                    functions.Licht    (Licht)
                    -------------------------------------------------------------------------------------
                    hm-rpc.0.LEQ1226350.1
                    
                    

                    Das sieht also alles soweit ganz gut aus, ausser das eben enumNames und enumIds leer bleiben.

                    Beste Grüße

                    Carsten
                    721_sma-em.jpg

                    1 Reply Last reply Reply Quote 0
                    • carsten04
                      carsten04 Developer last edited by

                      Hallo,

                      ich wollte das Thema noch einmal nach oben holen, da bei mir immer noch enumIds und enumNames leer bleiben, ich die Informationen in meinem Skript aber gut gebrauchen könnte. Ist das jetzt noch ein bekannter Fehler, oder mache ich noch irgendetwas falsch. Für Hinweise jedweder Art wäre ich very happy.

                      Beste Grüße

                      Carsten

                      1 Reply Last reply Reply Quote 0
                      • Bluefox
                        Bluefox last edited by

                        Was passiert wenn du folgendes machst?

                        var obj1 = getObject('hm-rpc.0.LEQ1226350.1.STATE', true);
                        var obj2 = getObject('hm-rpc.0.LEQ1226350.1', true);
                        
                        log(JSON.stringify(obj1.enumIds));
                        log(JSON.stringify(obj2.enumIds));
                        
                        
                        1 Reply Last reply Reply Quote 0
                        • carsten04
                          carsten04 Developer last edited by

                          Dann wird folgendes geloggt:

                          javascript-0	2015-07-30 14:56:02	info	script.js.test1: ["enum.functions.Licht","enum.rooms.Garten"]
                          javascript-0	2015-07-30 14:56:02	info	script.js.test1: ["enum.functions.Licht","enum.rooms.Garten"]
                          

                          Sieht also eigentlich ganz gut aus.

                          und jetzt kommts: nachdem ich Dein Skript habe laufen lassen, habe ich noch einmal folgendes probiert:

                          function allLightsToggle(obj) {
                              log(JSON.stringify(obj),'info');
                          }
                          on({id:'hm-rpc.0.LEQ1226350.1.STATE',valNe:2}, function (obj) {
                              allLightsToggle(obj);
                          });
                          

                          mit folgender Ausgabe:

                          {"id":"hm-rpc.0.LEQ1226350.1.STATE","newState":{"val":true,"ts":1438261226,"ack":true,"lc":1438261226,"from":"system.adapter.hm-rpc.0"},"oldState":{"val":false,"ts":1438259876,"ack":true,"lc":1438257205,"from":"system.adapter.hm-rega.0"},"common":{"def":false,"type":"boolean","read":true,"write":true,"role":"state","name":"Schalter Terrassenlicht:1.STATE"},"native":{"CONTROL":"SWITCH.STATE","DEFAULT":false,"FLAGS":1,"ID":"STATE","MAX":true,"MIN":false,"OPERATIONS":7,"TAB_ORDER":0,"TYPE":"BOOL","UNIT":""},"name":"Schalter Terrassenlicht:1.STATE","channelId":"hm-rpc.0.LEQ1226350.1","channelName":"Schalter Terrassenlicht:1","deviceId":"hm-rpc.0.LEQ1226350","deviceName":"Schalter Terrassenlicht","enumIds":["enum.functions.Licht","enum.rooms.Garten"],"enumNames":["Licht","Garten"]}
                          

                          Jetzt klappt es also, warum auch immer 😛 Falls Du eine Idee hast warum, würde mich das sehr interessieren. Ansonsten noch einmal Danke für dieses geniale System.

                          Beste Grüße

                          Carsten

                          1 Reply Last reply Reply Quote 0
                          • Bluefox
                            Bluefox last edited by

                            Toll, dass es bei dir geht. Falls JS-Adapter nachdem gestartet wurde als die Enums verteilt sind, dann kennt JS-Adapter die neue Enums.

                            Konnte das sein?

                            Was passiert jetzt bei dir bei?

                            function allLightsToggle(obj) {
                                log(JSON.stringify(obj),'info');
                            }
                            on({id:'hm-rpc.0.LEQ1226350.1.STATE'}, function (obj) {
                                allLightsToggle(obj);
                            });
                            
                            1 Reply Last reply Reply Quote 0
                            • carsten04
                              carsten04 Developer last edited by

                              Sieht jetzt alles super aus, auch ohne valNe:2.

                              2015-07-30 17:31:14.221  - info: javascript.0 script.js.test: {"id":"hm-rpc.0.LEQ1226350.1.STATE","newState":{"val":false,"ts":1438270274,"ack":true,"lc":1438270274,"from":"system.adapter.hm-rpc.0"},"oldState":{"val":true,"ts":1438268324,"ack":true,"lc":1438262778,"from":"system.adapter.hm-rpc.0"},"common":{"def":false,"type":"boolean","read":true,"write":true,"role":"state","name":"Schalter Terrassenlicht:1.STATE"},"native":{"CONTROL":"SWITCH.STATE","DEFAULT":false,"FLAGS":1,"ID":"STATE","MAX":true,"MIN":false,"OPERATIONS":7,"TAB_ORDER":0,"TYPE":"BOOL","UNIT":""},"name":"Schalter Terrassenlicht:1.STATE","channelId":"hm-rpc.0.LEQ1226350.1","channelName":"Schalter Terrassenlicht:1","deviceId":"hm-rpc.0.LEQ1226350","deviceName":"Schalter Terrassenlicht","enumIds":["enum.functions.Licht","enum.rooms.Garten"],"enumNames":["Licht","Garten"]}
                              
                              

                              Die Idee mit dem JS-Adapterstart könnte passen, da ich den Adapter heute mehrmals neu gestartet habe, allerdings hatte ich die functions und rooms auch nicht geändert. So richtig nachvollziehen kann ich es daher noch nicht. Aber egal, bin froh das jetzt alles läuft. Manchmal ist eben alles fuzzy 😄

                              Beste Grüße

                              Carsten

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

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              959
                              Online

                              31.7k
                              Users

                              79.7k
                              Topics

                              1.3m
                              Posts

                              3
                              22
                              3940
                              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