diff --git a/tasmota/tasmota_xdrv_driver/xdrv_27_esp32_shutter.ino b/tasmota/tasmota_xdrv_driver/xdrv_27_esp32_shutter.ino index 1841098f0..95a1272dc 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_27_esp32_shutter.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_27_esp32_shutter.ino @@ -215,10 +215,16 @@ void ShutterAllowPreStartProcedure(uint8_t i) { #ifdef USE_RULES AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Delay Start? var%d <99>=<%s>, max10s?"),i + 1, rules_vars[i]); // wait for response from rules +/* uint32_t start_time = millis(); while (TimePassedSince(start_time) < 10000 && (String)rules_vars[i] == "99") { delay(1); } +*/ + uint32_t end_time = millis() + 10000; + while (!TimeReached(end_time) && (String)rules_vars[i] == "99") { + delay(1); + } #endif // USE_RULES } @@ -1383,10 +1389,16 @@ void ShutterUpdateVelocity(uint8_t i) void ShutterWaitForMotorStart(uint8_t i) { +/* uint32_t start_time = Shutter[i].last_stop_time; while (TimePassedSince(start_time) < ShutterSettings.shutter_motorstop && TimePassedSince(start_time) > 0) { loop(); } +*/ + uint32_t end_time = Shutter[i].last_stop_time + ShutterSettings.shutter_motorstop; + while (!TimeReached(end_time)) { + loop(); + } //AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Stoptime done")); } diff --git a/tasmota/tasmota_xdrv_driver/xdrv_27_shutter.ino b/tasmota/tasmota_xdrv_driver/xdrv_27_shutter.ino index 9209516ac..e019cd2e0 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_27_shutter.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_27_shutter.ino @@ -654,10 +654,16 @@ void ShutterWaitForMotorStop(uint8_t i) void ShutterWaitForMotorStart(uint8_t i) { +/* uint32_t start_time = Shutter[i].last_stop_time; while (TimePassedSince(start_time) < Settings->shutter_motorstop && TimePassedSince(start_time) > 0) { loop(); } +*/ + uint32_t end_time = Shutter[i].last_stop_time + Settings->shutter_motorstop; + while (!TimeReached(end_time)) { + loop(); + } //AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Stoptime done")); } @@ -734,10 +740,16 @@ void ShutterAllowPreStartProcedure(uint8_t i) { #ifdef USE_RULES AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Delay Start? var%d <99>=<%s>, max10s?"),i + 1, rules_vars[i]); // wait for response from rules +/* uint32_t start_time = millis(); while (TimePassedSince(start_time) < 10000 && (String)rules_vars[i] == "99") { delay(1); } +*/ + uint32_t end_time = millis() + 10000; + while (!TimeReached(end_time) && (String)rules_vars[i] == "99") { + delay(1); + } #endif // USE_RULES }