Update xdrv_10_rules.ino

Enhance %timerN% rule variables to also work for timers with SunRise/SunSet configuration
This commit is contained in:
cybermaus 2022-10-13 14:59:51 +02:00 committed by GitHub
parent 4471868580
commit deaba8471d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 12 additions and 0 deletions

View File

@ -1459,6 +1459,18 @@ bool findNextVariableValue(char * &pVarname, float &value)
uint32_t index = sVarName.substring(5).toInt();
if (index > 0 && index <= MAX_TIMERS) {
value = Settings->timer[index -1].time;
#if defined(USE_SUNRISE)
// Correct %timerN% values for sunrise/sunset timers
if (Settings->timer[index -1].mode == 1 || Settings->timer[index -1].mode == 2) {
// in this context, time variable itself is merely an offset, with <720 being negative
value += -720 + SunMinutes(Settings->timer[index -1].mode -1);
}
if (Settings->timer[index -1].mode == 2) {
// To aid rule comparative statements, sunset past midnight (high lattitudes) is expressed past 24h00
// So sunset at 00h45 is at 24h45
if (value<360) { value += 1440; }
}
#endif // USE_SUNRISE
}
#if defined(USE_SUNRISE)
} else if (sVarName.equals(F("SUNRISE"))) {