NEWS
[Frage] Schedule mit Zeit aus einem Datenpunk
-
HI,
ist es möglich folgenden schedule Befehl mit Zeiten aus einem Datenpunkt / Objekt zu bedienen?
schedule("30 22 * * 0-6", function () {der Inhalt des Datenpunktes ist bspw. 22:30
nun habe ich folgendes leider erfolglos versucht:
var zu_stunden = parseFloat(getState("javascript.0.Jalousien.Konfig.Zeit_Schliessen").val.substring(0,2)); var zu_minuten = parseFloat(getState("javascript.0.Jalousien.Konfig.Zeit_Schliessen").val.substring(3,5)); schedule(zu_minuten +" "+ zu_stunden +" * * 0-6", function () {Aber leider funktioniert das nicht. Gibt es hier eine Möglichkeit das zu realisieren?
Gruß
Steffen
-
wenn du nach "Wecker" suchst, findest du einige Interessante Ansätze.
Hier noch ein Beispiel wie ich das für die Rolladensteuerung einsetze
wobei in der Variable idt1 ein Text steht: z. B. 08:30
// #################### Auslöser ########## // ########## Zeit/Wecker ########## var idt1 = "javascript.0.Settings.TagesstartArbeitstag"; var timer1; function getTimeObject(state) { var t = state.val.split(":"); var h = parseInt(t[0]); var m = parseInt(t[1]); return {hour: h, minute: m}; } on(idt1, function(dp) { var t = getTimeObject(dp.newState); log("Beginn Tagesart Arbeitstag wird eingestellt " + JSON.stringify(t),'warn'); if (timer1) clearSchedule(timer1); timer1 = on({time: t}, function () { RolladenFahren('Wecker'); }); }); var state = getState(idt1); var t = getTimeObject(state); if (timer1) clearSchedule(timer1); timer1 = on({time: t}, function () { RolladenFahren('Wecker'); }); -
Versuche es mal so:
var zu = getState("javascript.0.Jalousien.Konfig.Zeit_Schliessen").val.split(':'); schedule(zu[1] + ' ' + zu[0] + ' * * 0-6', function() { ```` `Klappt perfekt Danke.
Warum meines nicht funktioniert verstehe ich trotzdem nicht :(
Gruß
Steffen
-
Warum meines nicht funktioniert verstehe ich trotzdem nicht `
var zu_stunden = getState("javascript.0.Jalousien.Konfig.Zeit_Schliessen").val.substring(0,1); var zu_minuten = getState("javascript.0.Jalousien.Konfig.Zeit_Schliessen").val.substring(3,4);Wozu parseFloat() ? Das Ergebnis soll ein (Teil-)string sein. Außerdem sind führende Nullen erforderlich (z.B. 08:15), bei der Version mit split(':') nicht.
-
funktioniert der Code auch dann wenn die Datenpunkte geändert werden?
Oder muss dann das Script neu gestartet werden?
-
funktioniert der Code auch dann wenn die Datenpunkte geändert werden? `
Nein, dazu muss man auf Änderung triggern.var zu = getState("javascript.0.Jalousien.Konfig.Zeit_Schliessen").val.split(':'); function meineFunktion() { ... } var timer = schedule(zu[1] + ' ' + zu[0] + ' * * 0-6', meineFunktion); on("javascript.0.Jalousien.Konfig.Zeit_Schliessen", function(dp) { // Trigern bei Änderung zu = dp.state.val.split(':'); clearSchedule(timer); // altes Schedule löschen timer = schedule(zu[1] + ' ' + zu[0] + ' * * 0-6', meineFunktion); });
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login