Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

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

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    23
    1
    1.3k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.3k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.5k

[Gelöst] Array Subscriptions Problem

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
7 Beiträge 4 Kommentatoren 829 Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • T Offline
    T Offline
    tempestas
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    0
    • apollon77A Offline
      apollon77A Offline
      apollon77
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      0
      • T Offline
        T Offline
        tempestas
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        0
        • T Offline
          T Offline
          tempestas
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          0
          • Jey CeeJ Online
            Jey CeeJ Online
            Jey Cee
            Developer
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            0
            • paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              0
              • T Offline
                T Offline
                tempestas
                schrieb am zuletzt editiert von
                #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 Antwort Letzte Antwort
                0
                Antworten
                • In einem neuen Thema antworten
                Anmelden zum Antworten
                • Älteste zuerst
                • Neuste zuerst
                • Meiste Stimmen


                Support us

                ioBroker
                Community Adapters
                Donate

                617

                Online

                32.5k

                Benutzer

                81.7k

                Themen

                1.3m

                Beiträge
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                ioBroker Community 2014-2025
                logo
                • Anmelden

                • Du hast noch kein Konto? Registrieren

                • Anmelden oder registrieren, um zu suchen
                • Erster Beitrag
                  Letzter Beitrag
                0
                • Home
                • Aktuell
                • Tags
                • Ungelesen 0
                • Kategorien
                • Unreplied
                • Beliebt
                • GitHub
                • Docu
                • Hilfe