@paul53 Darauf muss man mal kommen.
Dann kann das Array zur Laufzeit ja weg
Danke Dir, Paul!
Gruß Phlixx
Falls jemand auf der Suche vorbei schaut, einfach das Array mit den DeviceIDs der eigenen Geräte füllen. Rest sollte dank @paul53 jetzt so gehen ...
var thermostate = new Array('maxcul.0.JMD300xxxx','maxcul.0.MEQ145xxxx','maxcul.0.MEQ145xxxx','maxcul.0.JMD301xxxx');
//Array mit den DeviceIDs der eigenen Geräte füllen
for (var i = 0;i <thermostate.length;i++) {
createState(thermostate[i]+'.countdown', 0); // falls noch nicht existent
createState(thermostate[i]+'.afterCount', false);
on(thermostate[i]+'.mode', function (obj) { //je DeviceID einen Listener registrieren
// geht nur mit obj.channelId, nicht obj.deviceId
if (obj.newState.val === 3) {
setState(obj.channelId+'.countdown', 300);
count(obj.channelId);
}
});
}
function count(thermostat) {
// mit diesem Sekundentimer (setTimeOut(...,1000) bin ich nicht glücklich, im Frontent sieht es unruhig aus, da die Updates nicht sekündlich kommen... ggs. als Minuten darstellen...
setTimeout(function () {
var timer = getState(thermostat+'.countdown').val;
if (timer > 1) {
setState(thermostat+'.countdown', timer - 1);
count(thermostat);
} else {
setState(thermostat+'.countdown', 0);
setState(thermostat+'.afterCount', true);
}
}, 1000);
}