NEWS
[Frage] Wie 5 Sekundentakt innerhalb einer If-Bedingung
-
Guten Morgen,
ich bräuchte mal wieder Hilfe, ich möchte in Abhängigkeit einer Variablen meine Yeelight Rgb-Lampen alle 8 Sekunden die Farbe wechseln lassen. Dazu habe ich eine kleine If-Bedingung, wird diese positiv ausgewertet möchte ich eben die Farben wechseln lassen, wird diese negativ ausgewertet wird eine voreingestellte Farbe zugewiesen.
Ich bekomme es nun nicht hin dass der schedule Befehl nur bei "ja" ausgeführt und bei "nein" gestopt wird. Es wird zwar gestartet aber nicht gestoppt.
Ich wollte bewusst den ganzen schedule Befehl in die If-Bedingung packen um bei ausgeschalteter Lampe nicht trotzdem alle 8 Sekunden einen Durchlauf zu haben. Anscheinend geht das jedoch nicht.
Hier mal ein Auszug von dem Versuch der Umsetzung:
//Sonstige Steuerungen // // Zufallsfarbe alle x sekunden im Wechsel on({id: "javascript.0.Yeelight.Automatischer_Farbwechsel"}, function (dp) { if(dp.state.val){ schedule("*/8 * * * * *", function () { var min = 0; var max = 255; var r = Math.round(Math.random() * (max - min)) + min; var g = Math.round(Math.random() * (max - min)) + min; var b = Math.round(Math.random() * (max - min)) + min; log(r + ' ' + g + ' ' + b); setState("javascript.0.Yeelight.RGB_Lampe_1.rgb"/*RGB-Farbwerte*/, r + ' ' + g + ' ' + b); setState("javascript.0.Yeelight.RGB_Lampe_2.rgb"/*RGB-Farbwerte*/, r + ' ' + g + ' ' + b); }); } else{ setState("javascript.0.Yeelight.RGB_Lampe_1.rgb"/*RGB-Farbwerte*/, '203 26 209'); setState("javascript.0.Yeelight.RGB_Lampe_2.rgb"/*RGB-Farbwerte*/, '203 26 209'); } });Hoffe jemand hat ne Idee
Gruß
Peoples
-
das geht nicht
ein schedule läuft systemseitig und das halt immer ..
schedule("*/8 * * * * *", function () { if (getState('javascript.0.Yeelight.Automatischer_Farbwechsel').val) { var min = 0; var max = 255; var r = Math.round(Math.random() * (max - min)) + min; var g = Math.round(Math.random() * (max - min)) + min; var b = Math.round(Math.random() * (max - min)) + min; log(r + ' ' + g + ' ' + b); setState("javascript.0.Yeelight.RGB_Lampe_1.rgb"/*RGB-Farbwerte*/, r + ' ' + g + ' ' + b); setState("javascript.0.Yeelight.RGB_Lampe_2.rgb"/*RGB-Farbwerte*/, r + ' ' + g + ' ' + b); } else{ setState("javascript.0.Yeelight.RGB_Lampe_1.rgb"/*RGB-Farbwerte*/, '203 26 209'); setState("javascript.0.Yeelight.RGB_Lampe_2.rgb"/*RGB-Farbwerte*/, '203 26 209'); } }); -
Naja oder eben setInterval und clearInterval.
Gruß
Pix
EDIT VORSCHLAG:
! ````
var interval = setInterval(farbwechsel, 8000);
! function farbwechsel() {
var min = 0;
var max = 255;
var r = Math.round(Math.random() * (max - min)) + min;
var g = Math.round(Math.random() * (max - min)) + min;
var b = Math.round(Math.random() * (max - min)) + min;
log(r + ' ' + g + ' ' + b);
setState("javascript.0.Yeelight.RGB_Lampe_1.rgb"/RGB-Farbwerte/, r + ' ' + g + ' ' + b);
setState("javascript.0.Yeelight.RGB_Lampe_2.rgb"/RGB-Farbwerte/, r + ' ' + g + ' ' + b);
}
! on({id: "javascript.0.Yeelight.Automatischer_Farbwechsel"}, function (dp) {
if (dp.state.val) {
farbwechsel();
} else {
clearInterval(interval);
setState("javascript.0.Yeelight.RGB_Lampe_1.rgb"/RGB-Farbwerte/, '203 26 209');
setState("javascript.0.Yeelight.RGB_Lampe_2.rgb"/RGB-Farbwerte/, '203 26 209');
}
});>! Und schließlich sollte ein EIN/AUS der Lampe noch überwacht werden. Wenn aus, dann clearInterval
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden