@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);
}