Ich habe jetzt eine andere Ursache gefunden, es funktioniert doch mit der ursprünglichen Methode Hilfsvariable.
! ````
var Threshold_Bar_Esstisch, is_running, Threshold_Bar_Wohnwand, Threshold_Vitrine_Esstisch, Threshold_Vitrine_Wohnwand, timeout1, Esstisch, Wohnwand, timeout2;
! Threshold_Bar_Esstisch = 40;
Threshold_Bar_Wohnwand = 40;
Threshold_Vitrine_Esstisch = 40;
Threshold_Vitrine_Wohnwand = 80;
! is_running = false;
on({id: new RegExp('hue\.0\.Hue_Bridge\.Esstisch\.level' + "|" + 'hue\.0\.Hue_Bridge\.Wohnwand\.level'), change: "any"}, function (obj) {
if (is_running != true) {
is_running = true;
timeout1 = setTimeout(function () {
Esstisch = getState("hue.0.Hue_Bridge.Esstisch.level").val;
Wohnwand = getState("hue.0.Hue_Bridge.Wohnwand.level").val;
if (Esstisch >= Threshold_Bar_Esstisch || Wohnwand >= Threshold_Bar_Wohnwand) {
setState("hue.1.HA-Bridge.Bar.on"/HA-Bridge.Bar.on/, true);
} else {
setState("hue.1.HA-Bridge.Bar.on"/HA-Bridge.Bar.on/, false);
}
timeout2 = setTimeout(function () {
if (Esstisch >= Threshold_Vitrine_Esstisch || Wohnwand >= Threshold_Vitrine_Wohnwand) {
setState("hue.1.HA-Bridge.Vitrine.on"/HA-Bridge.Vitrine.on/, true);
} else {
setState("hue.1.HA-Bridge.Vitrine.on"/HA-Bridge.Vitrine.on/, false);
}
is_running = false;
}, 500);
}, 500);
}
});
Das Problem war, dass bei gleichzeitigem Schalten von Esstisch und Wohnwand nicht sofort die Werte von "hue.0.Hue_Bridge.Esstisch.level" und "hue.0.Hue_Bridge.Wohnwand.level" gesetzt sind wenn die Subscription zuschlägt, da der Adapter diese seriell abfragt.
Daher habe ich "timeout1" von 500 ms hinzugefügt.
Im Zusammenspiel mit "is_running", welches sofort auf "true" gesetzt wird, wird der Block jetzt nur noch exklusiv aber mit korrekten Werten ausgeführt.