NEWS
Feldinhalt in Schedule Funktion einfügen
-
Ich habe in der ccu ein Feld Weckzeit.
Mit
var _Weckzeit = getState("hm-rega.0.21758").val; var _Stunden; var _Minuten; _Stunden = _Weckzeit.substring(0,2); _Minuten = _Weckzeit.substring(3,5);
kriege ich ja schonmal das ganze auseinander
wie kriege ich das jetzt in ein schedule?
schedule("00 07 * * 1-5", function () {
-
Besser so:
function macheWas() { // } // Skriptstart var t = getState("hm-rega.0.21758").val.split(':'); var sched = schedule(t[1] + ' ' + t[0] + ' * * 1-5', macheWas); on("hm-rega.0.21758", function(dp) { // Vorgabezeit ändert sich clearSchedule(sched); // bestehendes Schedule löschen t = dp.state.val.split(':'); sched = schedule(t[1] + ' ' + t[0] + ' * * 1-5', macheWas); });
-
Nur um es richtig zu verstehen: In Zeile 2 dort wo // würde ich jetzt z. B. Eine Lampe einschalten usw.
Und dann würde das Script pünktlich um xx:xx Uhr (Uhrzeit aus der Systemvariable) ausgeführt?
Wenn ich danach die Uhrzeit in der Systemvariable ändere wird das Programm angetriggtert und er stellt dort die neue Uhrzeit ein dabei wird aber nicht die function machewas ausgeführt??
Auf die idee mit split und den Doppelpunkten bin ich auch gekommen nur wußte ich nicht wie ich das umsetze :mrgreen: und dann fiel mir halt die Variante mit substring ein. War schon stolz das das funktioniert hat :mrgreen: :mrgreen:
-
In Zeile 2 dort wo // würde ich jetzt z. B. Eine Lampe einschalten usw. `
Ja.
@cash:Und dann würde das Script pünktlich um xx:xx Uhr (Uhrzeit aus der Systemvariable) ausgeführt? `
Dann würde die Funktion macheWas() pünktlich ausgeführt.
@cash:er stellt dort die neue Uhrzeit ein dabei wird aber nicht die function machewas ausgeführt?? `
Die Funktion macheWas() wird zur neu eingestellten Uhrzeit ausgeführt. -
Perfekt. Noch eine Frage: Wie kann ich den gleichten Timer mit 25 Minuten später erstellen?
Das erste ist meine Weckzeit und spätestens 25 Minuten später soll dann das Licht und andere sachen wieder ausgeschaltet werden sofern sie nicht zwischenzeitlich manuell ausgeschaltet wurden…
-
25 Minuten später soll dann das Licht und andere sachen wieder ausgeschaltet werden `
Das geht mit setTimeout().function macheWas() { // Einschalten setTimeout(function() { // Ausschalten }, 25 * 60000); // 25 Minuten Verzögerung }
-
Einfach nur Hammer.
Vielen, vielen Dank. Funktioniert perfekt.
-
letzte Frage zu dem Thema.
Bisher habe ich in einem Homematic Script abgefragt ob die aktuelle Uhrzeit vor der "Wecker aus" Zeit lag (Weckzeit + 25 Minuten).
War dort sehr einfach mit "Geräteauswahl Schaltzeit Wecker aus:2 bei TIMER_GET im Wertebereich größer als 1.00 s nur prüfen"
Könntest du mir dort nochmal auf die Sprünge helfen 8-)
-
bei TIMER_GET im Wertebereich größer als 1.00 s nur prüfen" `
TIMER_GET ist ein Datenpunkt. Um außerhalb des Skripts abzufragen, ob der Timer läuft, braucht es einen zusätzlichen Datenpunkt (Typ: boolean, unter javascript.0), der nicht manuell ausgeschaltet wird.function macheWas() { // Einschalten setState('javascript.0.timer1', true, true); setTimeout(function() { // Ausschalten setState('javascript.0.timer1', false, true); }, 25 * 60000); // 25 Minuten Verzögerung }
-
Du bist ein Genie
Hätte ich natürlich auch selber drauf kommen können. Ich muss mich da noch etwas umgewöhnen an die alternative herangehensweise von Problemen.
Nochmals Danke….