Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [Gelöst] Array Subscriptions Problem

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.5k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    841

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

[Gelöst] Array Subscriptions Problem

Scheduled Pinned Locked Moved Skripten / Logik
7 Posts 4 Posters 842 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T Offline
    T Offline
    tempestas
    wrote on last edited by
    #1

    Hallo zusammen,

    ich will für meine wenigen Hue Lampen, da diese in den üblichen "Lichter zählen"-Slripten immer nur Ärger machen, separat erfassen.

    Eigentlich sollte das auch kein Thema sein.

    Seltsamerweise sehe ich beim zwischenzeitlichen Teststart meines Skripts, dass die subscriptions auf den Array funktionieren. Aber es wird nichts ausgelöst, wenn ich eine Lampe einschalte.

    Als Gegentest habe ich dann eine der Lampen herausgegriffen, da funktioniert es einzeln.

    Wo ist mein Denkfehler?

    JS-Adapter 3.4.0

    // Skript zum prüfen, wieviele Lampen an sind
    // Aufgrund von Problemen mit Hue Lampen sind diese alle einzeln aufgeführt
    // Status: 3.10.2017
    
    // ############ ALLGEMEINE SKRIPTEINSTELLUNGEN ###############
    
    // debugging
    
    var debug = false;
    
    // Variablen     
    
    var arrEG = [];
    var countEG = 0;
    
    // ################## HUE LAMPEN #####################
    
    // ids deklarieren
    
    var idArbeitszimmerLED = "hue.0.Philips_hue.Hue_lightstrip_plus_1.on"/*Philips_hue.Hue_lightstrip_plus_1.on*/,
        idWohnzimmerKugel = "hue.0.Philips_hue.Ecklampe_Wohnzimmer.on"/*Philips_hue.Ecklampe_Wohnzimmer.on*/,
        idWohnzimmerTV = "hue.0.Philips_hue.Tv_Lampe.on"/*Philips_hue.Tv_Lampe.on*/,
        idWohnzimmerStehlampe = "hue.0.Philips_hue.Stehlampe_Wohnzimmer.on"/*Philips_hue.Stehlampe_Wohnzimmer.on*/,
        idWohnzimmerLeuchttisch = "hue.0.Philips_hue.Tisch_Wohnzimmer.on"/*Philips_hue.Tisch_Wohnzimmer.on*/;
    
    var arrHueEG = ['idArbeitszimmerLED', 'idWohnzimmerKugel', 'idWohnzimmerTV', 'idWohnzimmerStehlampe', 'idWohnzimmerLeuchttisch'];
    
    // ######## FUNKTIONEN ########
    
    on({id: arrHueEG, change: 'ne'} , function(){
    
            log("Etwas ist geschehen");
    
    });
    
    on(idWohnzimmerTV, function (){
        log("Es muss doch klappen")});
    
    

    ` > 12:11:25.312 [info] javascript.0 script.js.common.Lampen_zählen: registered 5 subscriptions and 0 schedules

    12:13:46.000 [info] javascript.0 Stop script script.js.common.Lampen_zählen

    hier zusätzlichen Eionzeltest eingebaut

    12:13:46.015 [info] javascript.0 Start javascript script.js.common.Lampen_zählen

    12:13:46.016 [info] javascript.0 script.js.common.Lampen_zählen: registered 6 subscriptions and 0 schedules

    12:13:51.177 [info] javascript.0 script.js.common.Lampen_zählen: Es muss doch klappen `

    <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

    1 Reply Last reply
    0
    • apollon77A Offline
      apollon77A Offline
      apollon77
      wrote on last edited by
      #2

      Du musst die Variablen referenzieren und keine texte angeben 8weil diese States gibts ja nicht):

      var arrHueEG = [idArbeitszimmerLED, idWohnzimmerKugel, idWohnzimmerTV, idWohnzimmerStehlampe, idWohnzimmerLeuchttisch];
      

      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
      1 Reply Last reply
      0
      • T Offline
        T Offline
        tempestas
        wrote on last edited by
        #3

        Oh man.. danke.

        So einfach, so leicht zu übersehen.

        <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

        1 Reply Last reply
        0
        • T Offline
          T Offline
          tempestas
          wrote on last edited by
          #4

          Eine Frage habe ich noch zum Thema:

          Das Array "on" funktioniert soweit.

          Was ich nicht verstehe:

          wann muss ich

          obj.state.val

          nehmen und wann getState?

          Meine Funktion funktioniertm it obj.val.state aber nicht mit getState(obj).val

          Da fehlt mir der Durchblick, warum ich was wann nutze. Kann mich da einer erleuchten?

          on(arrHueEG, function(obj){
          
                  var name = obj.common.name;
                  var status = obj.state.val;
                  log("Status  ist" +status);
                  var devicename = name.substring(0, name.indexOf(".on")); //.on aus Text entfernen
          
                  if(status){
                      countEG = countEG +1;
                      log(countEG);
                  }
                  else{
                      countEG =  countEG -1;
                      log(countEG);
                  } 
          });  
          
          

          <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

          1 Reply Last reply
          0
          • Jey CeeJ Online
            Jey CeeJ Online
            Jey Cee
            Developer
            wrote on last edited by
            #5

            obj ist das Objekt mit all seinen Informationen.

            getState holt aber nur den Inhalt von state anhand der ID.

            getState(obj.id) = obj.state.val

            Wobei obj eine variable ist und sie enthält das Objekt zum Zeitpunkt des Funktionsaufruf. Wenn sich der Inhalt von state zur Laufzeit der Funktion ändert musst du mit getState(obj.id) arbeiten.

            Gesendet von Unterwegs

            Persönlicher Support
            Spenden -> paypal.me/J3YC33

            1 Reply Last reply
            0
            • paul53P Offline
              paul53P Offline
              paul53
              wrote on last edited by
              #6

              @Jey Cee:

              getState(obj.id) = obj.state.val Nicht ganz, > getState(obj.id) = obj.state

              getState(obj.id).val = obj.state.val `
              wobei die Methode mit dem an die Callback-Funktion übergebenen Objekt effizienter ist als getState(obj.id).

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              1 Reply Last reply
              0
              • T Offline
                T Offline
                tempestas
                wrote on last edited by
                #7

                Danke sehr,

                ich muss das bestimmt noch 100x durchlesen, bis ich es wirklich verstanden habe, aber das hilft mir weiter.

                <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

                1 Reply Last reply
                0
                Reply
                • Reply as topic
                Log in to reply
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes


                Support us

                ioBroker
                Community Adapters
                Donate

                731

                Online

                32.6k

                Users

                82.1k

                Topics

                1.3m

                Posts
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                ioBroker Community 2014-2025
                logo
                • Login

                • Don't have an account? Register

                • Login or register to search.
                • First post
                  Last post
                0
                • Home
                • Recent
                • Tags
                • Unread 0
                • Categories
                • Unreplied
                • Popular
                • GitHub
                • Docu
                • Hilfe