@paul53 ich möchte mich ganz recht herzlich für deine Hilfe bedanken! Ich habe zeitbedingt ein paar Tage gebraucht das Script umzusetzen, aber das ganze klappt wirklich wie geschmiert! Dankeschön!
hier nochmal der aktuelle Stand:
// Datenpunkt-IDs
const idAuto = '0_userdata.0.Rollladenautomatik'; // Dummyschalter für Rolladenautomatik
const idAusschlafen = '0_userdata.0.Rollo_Ausschlafen'; // Dummyschalter für Ausschlaf-Modus
const idAusschlafenRauf = 'scene.0.Rollladen.Rollo_ausschlafen_hoch'; // Szene Rolladen rauf bei Ausschlafen
const idNormalRauf = 'scene.0.Rollladen.Rollo_normal_hoch'; // Szene Rolladen rauf normalbetrieb
const idAusschlafenZu = 'scene.0.Rollladen.Rollo_normal_runter'; // Szene Rolladen runter bei Ausschlafen
const idNormalZu = 'scene.0.Rollladen.Rollo_normal_runter'; // Szene Rolladen runter Normalbetrieb
const idRolloOffset = '0_userdata.0.Rollo_offset'; // Offset Schieberegler
// Variablen werden bei Skriptstart initialisiert
var auto = getState(idAuto).val;
var ausschlafen = getState(idAusschlafen).val;
var tag = isAstroDay();
var morgens = compareTime('6:30', '8:00', 'between');
var abends = compareTime('17:00', '22:15', 'between');
var rollooffset = getState(idRolloOffset).val;
function Rollosrauf() {
if(auto) {
if(ausschlafen) setState(idAusschlafenRauf, true);
else setState(idNormalRauf, true);
}
}
function Rollosrunter() {
if(auto) {
if(ausschlafen) setState(idAusschlafenZu, true);
else setState(idNormalZu, true);
}
}
schedule('30 6 * * *', function() {
morgens = true;
if(tag) Rollosrauf();
});
schedule('0 8 * * *', function() {
morgens = false;
if(!tag) Rollosrauf();
});
schedule('0 17 * * *', function() {
abends = true;
if(!tag) Rollosrunter();
});
schedule('15 22 * * *', function() {
abends = false;
if(tag) Rollosrunter();
});
schedule({astro: 'sunrise'}, function () {
tag = true;
if(morgens) Rollosrauf();
});
var sunset;
function sunsetWithOffset() {
const sunsetOff = getAstroDate('sunset').getTime() + 60000 * getState(idRolloOffset).val;
const minute = new Date(sunsetOff).getMinutes().toString();
const hour = new Date(sunsetOff).getHours().toString();
sunset = schedule(minute + ' ' + hour + ' * * *', function() {
tag = false;
if(abends) Rollosrunter();
});
}
sunsetWithOffset(); // Skriptstart
on(idRolloOffset, function(dp) { // Offset wird geändert
clearSchedule(sunset);
sunsetWithOffset();
});
schedule('0 14 * * *', function() { // einmal täglich vor Ereignis
clearSchedule(sunset);
sunsetWithOffset();
});
on(idAuto, function(dp) {
auto = dp.state.val;
});
on(idAusschlafen, function(dp) {
ausschlafen = dp.state.val;
});
on(idRolloOffset, function(dp) {
rollooffset = dp.state.val;
});