NEWS
[GELÖST] Abfrage anhand der aktuellen Uhrzeit
-
Hi,
ich habe da mal eine Frage an die javascript Profis.
Ich habe folgendes script geschrieben:
function temp() { debug = true; createState('javascript.0.Wetter.Temp_akt', 0); if (compareTime('00:00', '01:00', "between", null)) { setState("javascript.0.Wetter.Temp_akt"/*Temp_akt*/, getState("daswetter.0.hourly.0d.0h.Temperature").val, true); } if (compareTime('01:00', '02:00', "between", null)) { setState("javascript.0.Wetter.Temp_akt"/*Temp_akt*/, getState("daswetter.0.hourly.0d.1h.Temperature").val, true); } if (compareTime('02:00', '03:00', "between", null)) { setState("javascript.0.Wetter.Temp_akt"/*Temp_akt*/, getState("daswetter.0.hourly.0d.2h.Temperature").val, true); } if (compareTime('03:00', '04:00', "between", null)) { setState("javascript.0.Wetter.Temp_akt"/*Temp_akt*/, getState("daswetter.0.hourly.0d.3h.Temperature").val, true); } if (compareTime('04:00', '05:00', "between", null)) { setState("javascript.0.Wetter.Temp_akt"/*Temp_akt*/, getState("daswetter.0.hourly.0d.4h.Temperature").val, true); } if (compareTime('05:00', '06:00', "between", null)) { setState("javascript.0.Wetter.Temp_akt"/*Temp_akt*/, getState("daswetter.0.hourly.0d.5h.Temperature").val, true); } if (compareTime('06:00', '07:00', "between", null)) { setState("javascript.0.Wetter.Temp_akt"/*Temp_akt*/, getState("daswetter.0.hourly.0d.6h.Temperature").val, true); } if (compareTime('07:00', '08:00', "between", null)) { setState("javascript.0.Wetter.Temp_akt"/*Temp_akt*/, getState("daswetter.0.hourly.0d.7h.Temperature").val, true); } if (compareTime('08:00', '09:00', "between", null)) { setState("javascript.0.Wetter.Temp_akt"/*Temp_akt*/, getState("daswetter.0.hourly.0d.8h.Temperature").val, true); } if (compareTime('09:00', '10:00', "between", null)) { setState("javascript.0.Wetter.Temp_akt"/*Temp_akt*/, getState("daswetter.0.hourly.0d.2h.Temperature").val, true); } if (compareTime('10:00', '11:00', "between", null)) { setState("javascript.0.Wetter.Temp_akt"/*Temp_akt*/, getState("daswetter.0.hourly.0d.10h.Temperature").val, true); } if (compareTime('11:00', '12:00', "between", null)) { setState("javascript.0.Wetter.Temp_akt"/*Temp_akt*/, getState("daswetter.0.hourly.0d.11h.Temperature").val, true); } if (compareTime('12:00', '13:00', "between", null)) { setState("javascript.0.Wetter.Temp_akt"/*Temp_akt*/, getState("daswetter.0.hourly.0d.12h.Temperature").val, true); } if (compareTime('13:00', '14:00', "between", null)) { setState("javascript.0.Wetter.Temp_akt"/*Temp_akt*/, getState("daswetter.0.hourly.0d.13h.Temperature").val, true); } if (compareTime('14:00', '15:00', "between", null)) { setState("javascript.0.Wetter.Temp_akt"/*Temp_akt*/, getState("daswetter.0.hourly.0d.14h.Temperature").val, true); } if (compareTime('15:00', '16:00', "between", null)) { setState("javascript.0.Wetter.Temp_akt"/*Temp_akt*/, getState("daswetter.0.hourly.0d.15h.Temperature").val, true); } if (compareTime('16:00', '17:00', "between", null)) { setState("javascript.0.Wetter.Temp_akt"/*Temp_akt*/, getState("daswetter.0.hourly.0d.16h.Temperature").val, true); } if (compareTime('17:00', '18:00', "between", null)) { setState("javascript.0.Wetter.Temp_akt"/*Temp_akt*/, getState("daswetter.0.hourly.0d.17h.Temperature").val, true); } if (compareTime('18:00', '19:00', "between", null)) { setState("javascript.0.Wetter.Temp_akt"/*Temp_akt*/, getState("daswetter.0.hourly.0d.18h.Temperature").val, true); } if (compareTime('19:00', '20:00', "between", null)) { setState("javascript.0.Wetter.Temp_akt"/*Temp_akt*/, getState("daswetter.0.hourly.0d.19h.Temperature").val, true); } if (compareTime('20:00', '21:00', "between", null)) { setState("javascript.0.Wetter.Temp_akt"/*Temp_akt*/, getState("daswetter.0.hourly.0d.20h.Temperature").val, true); } if (compareTime('21:00', '22:00', "between", null)) { setState("javascript.0.Wetter.Temp_akt"/*Temp_akt*/, getState("daswetter.0.hourly.0d.21h.Temperature").val, true); } if (compareTime('22:00', '23:00', "between", null)) { setState("javascript.0.Wetter.Temp_akt"/*Temp_akt*/, getState("daswetter.0.hourly.0d.22h.Temperature").val, true); } if (compareTime('23:00', '24:00', "between", null)) { setState("javascript.0.Wetter.Temp_akt"/*Temp_akt*/, getState("daswetter.0.hourly.0d.23h.Temperature").val, true); } } // Ende temp() schedule('* * * * *', temp);Ziel des script ist es, mit der aktuellen Uhrzeit das passende state "Temperature" zu finden und in mein neues state "Temp_akt" zu schreiben.
Nun meine Frage, kann mann das vereinfachen bzw. anders Lösen?
Bin noch ganz am Anfang was javascript betrifft… ;-)
Gruß,
Tom
-
Der ID-String für die Quelle kann aus der Stunde der aktuellen Uhrzeit und einem String davor und einem danach gebildet werden.
const start = 'daswetter.0.hourly.0d.'; const end = 'h.Temperature'; createState('javascript.0.Wetter.Temp_akt', 0, {type: 'number', unit: '°C'}); function temp() { var hour = new Date().getHours(); setState("javascript.0.Wetter.Temp_akt", getState(start + hour + end).val, true); } schedule('* * * * *', temp); // Weshalb jede Minute ? -
Guten Morgen Paul,
vielen lieben Dank für die tolle Unterstützung!
Das kann ich noch für viele Abfragen nutzen und ich habe wieder was neues gelernt. :D
Die Abfrage im Minutentakt hatte ich nur aus Testzwecken so drin. ;)
Was ich noch nicht so ganz bei cron verstehe, ist der Start zu jeder volle Stunde, also 14, 15 und 16:00Uhr, ist das dann "0 * * * *" oder sagt das dann nur führe es jede Stunde nach cron Start aus?
Also nochmals vielen Dank für die Unterstützung.
Schöne Ostern noch und Gruß,
Tom
-
ist der Start zu jeder volle Stunde, also 14, 15 und 16:00Uhr, ist das dann "0 * * * *" `
Ja. Ich würde allerdings die Abfrage eine Minute später machen: "1 * * * *".Setze bitte das Thema auf gelöst (im Betreff des ersten Beitrags).
