diff --git a/tasmota/xdrv_10_rules.ino b/tasmota/xdrv_10_rules.ino index 2b26107a7..53774d999 100644 --- a/tasmota/xdrv_10_rules.ino +++ b/tasmota/xdrv_10_rules.ino @@ -477,7 +477,11 @@ 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)) { - rule_param = String(Settings->timer[index -1].time); + 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); } } } @@ -796,7 +800,11 @@ 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); - RulesVarReplace(commands, stemp, String(Settings->timer[i].time)); + int32_t timer = Settings->timer[i].time; + if (Settings->timer[i].mode && (timer >= 12*60)) { + timer = -(timer - 12*60); + } + RulesVarReplace(commands, stemp, String(timer)); } #if defined(USE_SUNRISE) RulesVarReplace(commands, F("%SUNRISE%"), String(SunMinutes(0)));