Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Frage zu DeviceCounter script [object Object]

    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

    Frage zu DeviceCounter script [object Object]

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

      @Archimedeus sagte:

                  d_list.push(roomsX.enumNames)//, functionsX.enumNames);                                                                                                                                                                            
      

      Ändere mal Zeile 37:

                      d_list.push(roomsX.enumNames[0]); //, functionsX.enumNames[0]);
      

      EDIT: Besser noch Zeilen 29 bis 37 ändern in

                      var room = getObject(id,'rooms').enumNames[0];
                      if(!d_list.includes(room)) d_list.push(room);
      
      A 1 Reply Last reply Reply Quote 0
      • A
        Archimedeus @paul53 last edited by

        @paul53 said in Frage zu DeviceCounter script [object Object]:

        var room = getObject(id,'rooms').enumNames[0];

        Leider keine Verbesserung:
        438fdf89-781c-49df-892c-87da6f249093-grafik.png

        Leider ist total jetzt auch 0, sollte 2 sein.

        Wenn ich nur wüsste, was mir JS mit [object Object] sagen will. Ich vermute, dass ist ein komplexeres Objekt, auf das man nur richtig zugreifen muss.

        Ich probiere es mal so:

        mylist = getState("javascript.0.deviceCounter.lamps_on.list").val;
        log(mylist); 
        for(var property in mylist) {
            log(property + "=" + mylist[property]);
        }
        

        Laut Google: The default conversion from an object to string is "[object Object]".

        Das Ergebnis ist kurios:

        21.12.2020, 22:13:51.887	[info ]: javascript.0 (1891) Stop script script.js.common.Experimental.ListTest
        21.12.2020, 22:13:52.041	[info ]: javascript.0 (1891) Start javascript script.js.common.Experimental.ListTest
        21.12.2020, 22:13:52.065	[info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: [object Object]
        21.12.2020, 22:13:52.065	[info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: 0=[
        21.12.2020, 22:13:52.066	[info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: 1=o
        21.12.2020, 22:13:52.066	[info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: 2=b
        21.12.2020, 22:13:52.066	[info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: 3=j
        21.12.2020, 22:13:52.066	[info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: 4=e
        21.12.2020, 22:13:52.066	[info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: 5=c
        21.12.2020, 22:13:52.067	[info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: 6=t
        21.12.2020, 22:13:52.067	[info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: 7= 
        21.12.2020, 22:13:52.067	[info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: 8=O
        21.12.2020, 22:13:52.067	[info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: 9=b
        21.12.2020, 22:13:52.067	[info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: 10=j
        21.12.2020, 22:13:52.068	[info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: 11=e
        21.12.2020, 22:13:52.068	[info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: 12=c
        21.12.2020, 22:13:52.068	[info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: 13=t
        21.12.2020, 22:13:52.068	[info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: 14=]
        21.12.2020, 22:13:52.069	[info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: registered 0 subscriptions and 0 schedules
        
        paul53 1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @Archimedeus last edited by paul53

          @Archimedeus
          Was sagt das Log (anstelle Zeile 41)?

                  log(d_list);
          

          @Archimedeus sagte in Frage zu DeviceCounter script [object Object]:

          Leider ist total jetzt auch 0, sollte 2 sein.

          An der Zählung (Zeile 39) hat sich nichts geändert ?

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

            @paul53

            Ich bin etwas weiter.

            var roomsX = getObject(id,'rooms');
            

            Die Zeile gibt schon das object Obct. Grund ist, dass in der Aufzählung direkt die Endpunkte -POWER stehen. ID ist dann also sonoff.0.sonoff1.POWER Da drin ist natürlich kein .rooms drin. Ich muss den Aufruf anders machen. Habe jetzt in der Auzählung sonoff.0.sonoff1 und versuche es so:

            addDeviceCounter("lamps_on",$('channel[id=state.*.POWER](functions=sonoff)'),                            true);
            

            Tut aber nicht, findet keine Devices. Ich glaube ioch muss mal drüber schlafen. Hast mir geholfen. Man kämpft sich bit für bit voran.

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

              @Archimedeus sagte in Frage zu DeviceCounter script [object Object]:

              Tut aber nicht, findet keine Devices.

              Versuche es mal so:

              addDeviceCounter("lamps_on",$('sonoff.0.*.POWER'), true);
              

              @Archimedeus sagte in Frage zu DeviceCounter script [object Object]:

              Das Problem mit LOWBATT und LOW_BATT bei HM und HMIP hat der * gelöst

              Das sind unterschiedliche Instanzen.

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

                @paul53 said in Frage zu DeviceCounter script [object Object]:

                addDeviceCounter("lamps_on",$('sonoff.0.*.POWER'), true);

                Das findet alle devices in sonoff (auch die bridge) aber roomsX bleibt object Object.

                Das andere

                addDeviceCounter("battery_homematic",$('channel[state.id=hm-rpc.*.*.0.LOW*]'),     true);
                

                funktioniert wirklich. Er findet die LOW* aus beiden instanzen.

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

                  @Archimedeus sagte:

                  funktioniert wirklich. Er findet die LOW* aus beiden instanzen.

                  Jetzt ist auch keine Instanz angegeben. Der Selektor kann kürzer sein:

                  addDeviceCounter("battery_homematic",$('hm-rpc.*.0.LOW*'), true);
                  

                  @Archimedeus sagte in Frage zu DeviceCounter script [object Object]:

                  aber roomsX bleibt object Object.

                  Welche Version des Javascript-Adapters ? Sind Räume zugeordnet ?

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

                    @paul53
                    4.8.4 und ja es sind Räume zugewiesen. Morgen klappts. bestimmt 🙂

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

                      @Archimedeus
                      Habe nicht mehr daran gedacht: Raumname kann mehrsprachig sein. Deshalb

                                      var room = getObject(id,'rooms').enumNames[0];
                                      if(typeof room == 'object') room = room.de;
                                      if(!d_list.includes(room)) d_list.push(room);
                      
                      A 1 Reply Last reply Reply Quote 0
                      • A
                        Archimedeus @paul53 last edited by

                        @paul53 said in Frage zu DeviceCounter script [object Object]:

                        var room = getObject(id,'rooms').enumNames[0];

                        Schon besser. Problem: enumNames nimmt nur den ersten Raum. Deshalb stand im Original auch
                        d_list.push(rooms.enumNames)
                        und
                        setState(state_list, d_list.join('-'));

                        Naja, eigentlich sollte ein Gerät auch nur in einem Raum sein...

                        A 1 Reply Last reply Reply Quote 0
                        • A
                          Archimedeus @Archimedeus last edited by

                          @Archimedeus
                          Aber es tut, was es soll! Danke vielmals!

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

                            @Archimedeus sagte:

                            es tut, was es soll!

                            Sollen die Batterie-Infos tatsächlich pro Raum erfolgen ?

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

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            398
                            Online

                            31.8k
                            Users

                            80.0k
                            Topics

                            1.3m
                            Posts

                            2
                            15
                            501
                            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