NEWS
[Gelöst] Array Subscriptions Problem
-
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 `
-
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); } }); -
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
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden