Bug bei logischen Verknüpfungen
Verfasst: 25.06.2022, 01:13
Ich arbeite hier mit einem Raspberrymatic in Version 3.63.9.20220521.
Habe mir heute an einem Problem die Zähne ausgebissen, bis ich merkte, dass glaube ich grundlegende logische Verknüpfungen nicht funktionieren.
Speziell bei der UND-Verknüpfung zweier Bedingungen.
Hier mein nicht funktionierendes Dimmer-Skript:
Zur Erläuterung:
Der Status der Hue Lampe liegt hier in der Regel zwischen 0 (aus) und 1 (an). Steps ist hier eine Systemvariable, die z.B. den Wert 0.1 enthält, also um in 0.1 Schritten zu dimmen.
Mit folgendem Aufbau ohne logische UND/ODER-Verknüpfung sondern Schachtelung der Bedingungen in einzelne If-Abfragen hatte es funktioniert...
Hat jemand dieses Phänomen auch schon einmal gehabt? Sofern das ein Bug ist, wo kann man den am schlausten melden?
Habe mir heute an einem Problem die Zähne ausgebissen, bis ich merkte, dass glaube ich grundlegende logische Verknüpfungen nicht funktionieren.
Speziell bei der UND-Verknüpfung zweier Bedingungen.
Hier mein nicht funktionierendes Dimmer-Skript:
Code: Alles auswählen
var TARGET = "Hue-Kueche:1";
integer Steps = dom.GetObject ("Steps");
WriteLine(Steps.Value());
WriteLine(dom.GetObject(TARGET).State());
if((dom.GetObject(TARGET).State()<=0 && Steps.Value() < 0) || (dom.GetObject(TARGET).State()>=1 && Steps.Value() > 0)) {
WriteLine("change");
Steps.Variable(Steps.Value() * -1);
}
dom.GetObject(TARGET).State(dom.GetObject(TARGET).State() + Steps.Value());
Der Status der Hue Lampe liegt hier in der Regel zwischen 0 (aus) und 1 (an). Steps ist hier eine Systemvariable, die z.B. den Wert 0.1 enthält, also um in 0.1 Schritten zu dimmen.
Mit folgendem Aufbau ohne logische UND/ODER-Verknüpfung sondern Schachtelung der Bedingungen in einzelne If-Abfragen hatte es funktioniert...
Code: Alles auswählen
var TARGET = "Hue-Kueche:1";
var Steps = dom.GetObject ("Steps");
WriteLine(Steps.Value());
WriteLine(dom.GetObject(TARGET).State());
if(dom.GetObject(TARGET).State() <= 0) {
if(Steps.Value() < 0) {
WriteLine("up");
Steps.Variable(Steps.Value() * -1);
}
}
if(dom.GetObject(TARGET).State() >= 1) {
if(Steps.Value() > 0) {
WriteLine("down");
Steps.Variable(Steps.Value() * -1);
}
}
dom.GetObject(TARGET).State(dom.GetObject(TARGET).State() + Steps.Value());