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