NEWS
Gartenbewässerung (später dann Dauer über Jarvis einstellen)
-
Liebe Gemeinde,
ich stehe etwas auf dem Schlauch, weil ich zwar einfaches Javascript hinbekomme, mich aber noch sehr schwer bei komplexen Fragestellungen tue.
Ich habe 6 Kreisläufe (Homematic Schaltaktor), die abends (gegen 20:15 Uhr) nacheinander für eine bestimmte Zeit (20 Minuten und später dann über Jarvis einstellen...) laufen sollen.
Dann soll je nach Regenmenge gestern und heute, aktuell Regen und starkem Wind die Sprenger aus- oder gar nicht erst angehen.
Hat da vielleicht schon jemand mal sowas gebastelt oder hilft mir Schritt für Schritt?
Vielen herzlichen Dank! -
-
@crunchip Cool. Danke für den schnellen Hinweis.
Das sehe ich mir mal genauer an. Aber hoffentlich kommt noch mehr aus der Community... -
-
@tritor So simple finde ich das gar nicht... Danke!
-
@luebke69 sagte: gegen 20:15 Uhr) nacheinander für eine bestimmte Zeit (20 Minuten und später dann über Jarvis einstellen...) laufen sollen.
Dann soll je nach Regenmenge gestern und heute, aktuell Regen und starkem Wind die Sprenger aus- oder gar nicht erst angehen.Version mit gleicher Dauer für alle 6 Ventile und mit Datenpunkten für "genug Regen", "aktuell Regen" und "starkem Wind".
const idDauer = '0_userdata.0.Garten.Bewaesserung.Dauer'; // Dauer pro Ventil in Minuten const idRegen = '...'; // es regnet const idFeucht = '0_userdata.0.Garten.Bewaesserung.Boden_feucht'; // heute, gestern war genug Regen const idSturm = '0_userdata.0.Garten.Bewaesserung.Sturm'; // Starker Wind const ids = [ '', // Platz für ID des gerade offenen Ventils 'id1', 'id2', 'id3', 'id5', 'id5', 'id6' ]; var ventil = 0; // kein Ventil offen var dauer = 60000 * getState(idDauer).val; on(idDauer, function(dp) { dauer = 60000 * dp.state.val; }); var timer = null; function ventile() { if(ids[0]) setState(ids[0], false); // Ventil schließt ventil++; if(ventil <= 6) { setState(ids[ventil], true); // Ventil öffnet ids[0] = ids[ventil]; timer = setTimeout(ventile, dauer); } else { ventil = 0; ids[0] = ''; timer = null; } } function abbruch() { if(timer) clearTimeout(timer); timer = null; if(ids[0]) setState(ids[0], false); ventil = 0; ids[0] = ''; } var regen = getState(idRegen).val; var feucht = getState(idFeucht).val; var sturm = getState(idSturm).val; on(idRegen, function(dp) { regen = dp.state.val; if(regen) abbruch(); }); on(idSturm, function(dp) { sturm = dp.state.val; if(sturm) abbruch(); }); on(idFeucht, function(dp) { feucht = dp.state.val; }); schedule('15 20 * * *', function() { if(!regen && !feucht && !sturm) ventile(); });