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); });
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