NEWS
Insert Objects from Folder into Array
-
Hallo zusammen,
ich habe mir ein Skript zum Szenenwechsel gebastelt, was durch ein Array loopt und die entsprechende Szene aktiviert. Aktuell muss ich das Array im Skript manuell erstellen.
Wünschen würde ich mir, dass sich das Array aus den Objekten eines Ordners zusammensetzt.var idTaster = ["zigbee.0.00158d0004505ebf.click", 'zigbee.0.00158d000450a5b9.click'/*Click event*/, 'zigbee.0.00158d000626914b.click'/*Click event*/]; var idHueSzene = "hue.0.Flur_."; var set = getIdByName("SL."); var zaehler = 0; console.log(set); on({id:idTaster, val: true}, function (obj) { zaehler++; if (zaehler >= set.length) zaehler = 0; for (var count = 0; count < 2; count++) { setState(idHueSzene + set[zaehler], 'true'); } });
Also dachte ich, dass ich var set mit getIdByName setzen kann, sodass das Array alle IDs beinhaltet, die mit SL. starten. Offenbar habe ich einen Denkfehler, da mein Array undefined ist.
idHueSzene werde ich dann vermutlich auch nicht mehr brauchen.
Vielleicht kann mir jemand kurz auf die Sprünge helfen.Viele Dank
-
@zäsch sagte: mit getIdByName setzen kann
getIdByName(name) verlangt vollständige Namen.
-
@paul53 Danke. Das erklärt es...
Gibt es eine andere, elegante Möglichkeit mein Array mit den IDs zu befüllen, wenn man nicht den gesamten Namen hat?
Case ist der, dass meine Freundin über die Hue App Szenen bauen möchte, die sie durch drücken eines Schalters durchwechseln können möchte. Das soll automatisch klappen, daher dachte ich, ich lasse das Skript das Array bauen, das Objekte beinhaltet, die mit SL. beginnen.
Die Enum Funktion müsste ich ja auch manuell im nachpflegen, bevor das greifen würden, daher die Idee mit
Obejcts where id starts with "hue.0.Flur_.SL" -
@zäsch sagte: Gibt es eine andere, elegante Möglichkeit mein Array mit den IDs zu befüllen, wenn man nicht den gesamten Namen hat?
Versuch es mal so:
const idsSL = $('hue.0.Flur_.SL*'); var set = []; idsSL.each(function(id, i) { let name = getObject(id).common.name; if(name.startsWith('SL.')) set.push(id); });
Die Abfrage des Namensbeginns kann man sich evtl. sparen?