Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Problem mit getEnums()

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Problem mit getEnums()

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

      Hallo,

      ich bin beim Debuggen meiner Variante des Heizungssteuerungsskripts auf ein http://forum.iobroker.net/viewtopic.php?f=21&t=6080&start=180#p93363 gestoßen.

      Ich glaube aber nicht, dass dieses seine Ursache in dem Skript hat, deshalb als neues Thema.

      Folgendes Testskript

      // Auslesen aller Raeume
      rooms = getEnums('rooms');                                                      // Lade alle Raeume
      for (var i in rooms){                                                                                                                       // loop ueber alle Raeume
          log("Raum " + rooms[i].name + " gefunden.","info");
      }
      

      liefert die Ausgabe

      javascript.0	2017-11-05 11:56:05.170	info	script.js.Test: Raum Terrasse gefunden.
      javascript.0	2017-11-05 11:56:05.170	info	script.js.Test: Raum Garage gefunden.
      javascript.0	2017-11-05 11:56:05.169	info	script.js.Test: Raum Badezimmer gefunden.
      javascript.0	2017-11-05 11:56:05.169	info	script.js.Test: Raum Spielzimmer gefunden.
      javascript.0	2017-11-05 11:56:05.168	info	script.js.Test: Raum Wohnraum gefunden.
      javascript.0	2017-11-05 11:56:05.167	info	script.js.Test: getEnums(enumName=rooms) => [{'id':'enum.rooms.Wohnraum','members':['hm-rpc.0.NEQ1026839.1','hm-rpc.0.LEQ0998227.7','hm-rpc.0.LEQ0998227.1','hm-rpc.0.LEQ0219343.1','hm-rpc.0.LEQ0219170.1','hm-rpc.0.LEQ0219599.1','hm-rpc.0.LEQ0219340.1','hm-rpc.0.LEQ0219345.1','hm-rpc.0.LEQ0998227.2','hm-rpc.0.LEQ0584821.4','hm-rpc.0.LEQ0585276.4'],'name':'Wohnraum'},{'id':'enum.rooms.Spielzimmer','members':['hm-rpc.0.OEQ1698860.4','hm-rpc.0.NEQ0011813.1'],'name':'Spielzimmer'},{'id':'enum.rooms.Badezimmer','members':['hm-rpc.0.LEQ0585261.4'],'name':'Badezimmer'},{'id':'enum.rooms.Garage','members':['hm-rpc.0.MEQ0475727.1'],'name':'Garage'},{'id':'enum.rooms.Terrasse','members':['hm-rpc.0.LTK0020095.2','hm-rpc.0.NEQ0951964.1'],'name':'Terrasse'},{'id':'enum.rooms.Kinderzimmer','members':['hm-rpc.0.LEQ0585118.4','hm-rpc.0.NEQ0310997.4','hm-rpc.0.NEQ1026725.1','hm-rpc.0.NEQ1026783.1','hm-rpc.0.LEQ0848127.4'],'name':'Kinderzimmer'}]
      javascript.0	2017-11-05 11:56:04.920	info	Start javascript script.js.Test
      

      Meine Raumliste sieht aber wie im Bild aus:
      3975_screenshot_20171105_120242.png
      d.h. der Raum Zentralflur wird nicht gefunden. Hat jemand eine Idee, woran das liegen könnte?[/i]

      1 Reply Last reply Reply Quote 0
      • L
        looxer01 last edited by

        Hi,

        ich bin beim Testen der IP Geräte (und nicht nur ich) auf ähnliche Probleme gestossen.

        Versuche mal einen kompletten restart von ioBroker. Wobei ich sogar mehrere brauchte.

        Irgendwas scheint mit der REGA Sync nicht zu passen. So sieht es jedenfalls bei mir aus.

        vG Looxer

        1 Reply Last reply Reply Quote 0
        • C
          cstauch last edited by

          Tatsächlich, jetzt wird alles gefunden!

          Danke!!

          1 Reply Last reply Reply Quote 0
          • Dutchman
            Dutchman Developer Most Active Administrators last edited by

            Könnte es sein das du diesen Raum erstellt hast nachdem der JavaScript adapter gestartet war?

            Ich habe das Gefühl das enums nur einmalig beim Starten des Adapters eingeladen werden wodurch Änderungen fehlen

            –-----------------------

            Send from mobile device

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

              @Dutchman:

              Könnte es sein das du diesen Raum erstellt hast nachdem der JavaScript adapter gestartet war?

              Ich habe das Gefühl das enums nur einmalig beim Starten des Adapters eingeladen werden wodurch Änderungen fehlen `
              Ist auch für Objekte der Fall. Wenn ich in JS ZWave-Geräte überwache und ein neues einbinde, kriegt das Skript nix davon mit bis zum nächsten Neustart.

              1 Reply Last reply Reply Quote 0
              • Jey Cee
                Jey Cee Developer last edited by

                Ist ziemlich logisch, eine Variable, welche man ja mit seinen enums beschreibt, wird erst dann neu geschrieben wenn man einen Auslöser dafür hat.

                Also zum Beispiel zyklisch mit einem Cronjob.

                Vielleicht kann man ja auch irgendwie auf Änderungen der enums reagieren, das sind schließlich auch nur Objekte.

                Gesendet von Unterwegs

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

                  Adapter haben

                  subscribe[Foreign]Objects("*")
                  

                  und werden damit über Änderungen und hinzugefügte Objekte und States informiert.

                  Wenn ich in einem Skript $(selector) ausführe, extern ein neues Objekt mit States hinzufüge und dann nochmals $(selector) ausführe, ändert sich die Liste der gefundenen States nicht - zumindest war das vor einer Weile noch so.

                  Finde ich aus Benutzersicht nicht logisch.

                  1 Reply Last reply Reply Quote 0
                  • Jey Cee
                    Jey Cee Developer last edited by

                    Ich hab jetzt mal ein bisschen mit den 'enums' gespielt. Es ist wie ich schon geschrieben hab, die enums sind Objekte.

                    Zugreifen kann man auf die enums mit:

                    getObject('enum.rooms.Bad')
                    

                    Aber eine Subscription auf ein enum bringt nichts da es kein value hat. Das heisst die Subscription wird nie ausgelöst.

                    Was mir bei getEnums() aufgefallen ist das ich kein Aufzählung in der 2ten Ebene abrufen kann.

                    Weiss jemand ob das ohne Umwege geht?

                    1 Reply Last reply Reply Quote 0
                    • Dutchman
                      Dutchman Developer Most Active Administrators last edited by

                      @Jey Cee:

                      getObject('enum.rooms.Bad')
                      

                      Aber eine Subscription auf ein enum bringt nichts da es kein value hat. Das heisst die Subscription wird nie ausgelöst. `

                      Doch das geht! Gestern noch ein Script damit gebaut:

                      
                      // Trigger on value change in origin values and syncronise to reverse values
                      on({enumName: 'rolladen', change: "ne"}, function (obj) {
                      
                          //reverse value from KNX to Yahka logic
                          var newvalue = 100 - obj.state.val;
                      
                          //verify is calculated value is different, if yes update KNX value to reversed object otherwise do nothing
                          if (newvalue !== getState("rolladen_reversed_values." + obj.common.name).val){
                              setState("rolladen_reversed_values." + obj.common.name, newvalue, true);
                              console.debug('value change based on KNX trigger, received value = ' + obj.state.val + ' ,calculated to = ' + newvalue);
                      
                          }
                      
                      });
                      
                      

                      –-----------------------

                      Send from mobile device

                      1 Reply Last reply Reply Quote 0
                      • Jey Cee
                        Jey Cee Developer last edited by

                        @Dutchman:

                        Doch das geht! Gestern noch ein Script damit gebaut: `

                        Da hast du mich missverstanden. Wenn du ein Member zur enum hinzufügst wird die Subscription nicht ausgelöst.

                        Dein Code hört auf Veränderungen der Member einer enum.

                        By the Way, ich erhalte folgende fehlermeldung wenn ich eine Subscription auf ein enum erstelle:

                        unsubscribe: empty name
                        
                        1 Reply Last reply Reply Quote 0
                        • Dutchman
                          Dutchman Developer Most Active Administrators last edited by

                          @Jey Cee:

                          By the Way, ich erhalte folgende fehlermeldung wenn ich eine Subscription auf ein enum erstelle:

                          unsubscribe: empty name
                          ```` `  
                          

                          Controller und JavaScript adapter Version ?

                          Wie sieht dein Code aus?

                          –-----------------------

                          Send from mobile device

                          1 Reply Last reply Reply Quote 0
                          • Jey Cee
                            Jey Cee Developer last edited by

                            Hab das Problem gefunden die enum hatte einfach einen falschen Namen.

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

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            789
                            Online

                            31.7k
                            Users

                            79.8k
                            Topics

                            1.3m
                            Posts

                            javascript
                            5
                            12
                            2698
                            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