timerx returns absolute time of day 0:00 to 23:59

This commit is contained in:
barbudor 2022-03-26 14:10:08 +01:00
parent 0c5f67709a
commit 3b10e0ef5c
2 changed files with 18 additions and 10 deletions

View File

@ -235,6 +235,22 @@ uint16_t SunMinutes(uint32_t dawn)
#endif // USE_SUNRISE
uint16_t TimerGetTimeOfDay(uint8_t index)
{
Timer xtimer = Settings->timer[index];
int16_t xtime = xtimer.time;
#ifdef USE_SUNRISE
if (xtimer.mode) {
if (xtime >= 12*60) xtime = 12*60 - xtime;
xtime += (int16_t)SunMinutes(xtimer.mode-1);
if (xtime < 0) xtime += 24*60;
if (xtime >= 24*60) xtime -= 24*60;
}
#endif
return xtime;
}
/*******************************************************************************************/
void TimerSetRandomWindow(uint32_t index)

View File

@ -477,11 +477,7 @@ bool RulesRuleMatch(uint8_t rule_set, String &event, String &rule, bool stop_all
if ((index > 0) && (index <= MAX_TIMERS)) {
snprintf_P(stemp, sizeof(stemp), PSTR("%%TIMER%d%%"), index);
if (rule_param.startsWith(stemp)) {
int32_t timer = Settings->timer[index -1].time;
if (Settings->timer[index -1].mode && (timer >= 12*60)) {
timer = -(timer - (12*60));
}
rule_param = String(timer);
rule_param = String(TimerGetTimeOfDay(index -1));
}
}
}
@ -800,11 +796,7 @@ bool RuleSetProcess(uint8_t rule_set, String &event_saved)
#if defined(USE_TIMERS)
for (uint32_t i = 0; i < MAX_TIMERS; i++) {
snprintf_P(stemp, sizeof(stemp), PSTR("%%TIMER%d%%"), i +1);
int32_t timer = Settings->timer[i].time;
if (Settings->timer[i].mode && (timer >= 12*60)) {
timer = -(timer - 12*60);
}
RulesVarReplace(commands, stemp, String(timer));
RulesVarReplace(commands, stemp, String(TimerGetTimeOfDay(i)));
}
#if defined(USE_SUNRISE)
RulesVarReplace(commands, F("%SUNRISE%"), String(SunMinutes(0)));