diff --git a/tasmota/xdrv_10_rules.ino b/tasmota/xdrv_10_rules.ino index 21b454e8c..2b390bec9 100644 --- a/tasmota/xdrv_10_rules.ino +++ b/tasmota/xdrv_10_rules.ino @@ -437,8 +437,16 @@ bool RuleSetProcess(uint8_t rule_set, String &event_saved) commands.trim(); String ucommand = commands; ucommand.toUpperCase(); + // if (!ucommand.startsWith("BACKLOG")) { commands = "backlog " + commands; } // Always use Backlog to prevent power race exception - if ((ucommand.indexOf("EVENT ") != -1) && (ucommand.indexOf("BACKLOG ") == -1)) { commands = "backlog " + commands; } // Always use Backlog with event to prevent rule event loop exception + +// if ((ucommand.indexOf("EVENT ") != -1) && (ucommand.indexOf("BACKLOG ") == -1)) { +// commands = "backlog " + commands; // Always use Backlog with event to prevent rule event loop exception +// } + + if ((ucommand.indexOf("IF ") == -1) && (ucommand.indexOf("EVENT ") != -1) && (ucommand.indexOf("BACKLOG ") == -1)) { + commands = "backlog " + commands; // Use Backlog with event unless IF is used which uses an implicit backlog to prevent rule event loop exception + } RulesVarReplace(commands, F("%VALUE%"), Rules.event_value); for (uint32_t i = 0; i < MAX_RULE_VARS; i++) {