diff --git a/tasmota/xdrv_27_shutter.ino b/tasmota/xdrv_27_shutter.ino index 22cee4fe0..71b3374f2 100644 --- a/tasmota/xdrv_27_shutter.ino +++ b/tasmota/xdrv_27_shutter.ino @@ -206,7 +206,7 @@ void ShutterInit(void) Shutter.pwm_frequency[i] = 0; Shutter.accelerator[i] = 0; analogWriteFreq(Shutter.pwm_frequency[i]); - analogWrite(Pin(GPIO_PWM1, i), 50); + ExecuteCommandPower(Settings.shutter_startrelay[i]+2, 0, SRC_SHUTTER); } } @@ -364,7 +364,8 @@ void ShutterUpdatePosition(void) while (RtcSettings.pulse_counter[i] < (uint32_t)(Shutter.target_position[i]-Shutter.start_position[i])*Shutter.direction[i]*Shutter.max_pwm_frequency/2000) { delay(1); } - analogWrite(Pin(GPIO_PWM1, i), 0); + //analogWrite(Pin(GPIO_PWM1, i), 0); // removed with 8.3 because of reset caused by watchog + ExecuteCommandPower(Settings.shutter_startrelay[i]+2, 0, SRC_SHUTTER); Shutter.real_position[i] = ShutterCounterBasedPosition(i); AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SHT: Real %d, pulsecount %d, start %d"), Shutter.real_position[i],RtcSettings.pulse_counter[i], Shutter.start_position[i]); @@ -460,6 +461,7 @@ void ShutterWaitForMotorStop(uint32_t i) delay(50); } analogWrite(Pin(GPIO_PWM1, i), 0); + ExecuteCommandPower(Settings.shutter_startrelay[i]+2, 0, SRC_SHUTTER); Shutter.real_position[i] = ShutterCounterBasedPosition(i); } else { ExecuteCommandPower(Settings.shutter_startrelay[i], 0, SRC_SHUTTER); @@ -902,6 +904,9 @@ void CmndShutterPosition(void) ExecuteCommandPower(Settings.shutter_startrelay[index] +1, new_shutterdirection == 1 ? 0 : 1, SRC_SHUTTER); // power on ExecuteCommandPower(Settings.shutter_startrelay[index], 1, SRC_SHUTTER); + if (SHT_OFF_ON__OPEN_CLOSE_STEPPER == Shutter.mode) { + ExecuteCommandPower(Settings.shutter_startrelay[index]+2, 1, SRC_SHUTTER); + } } } else { // now start the motor for the right direction, work for momentary and normal shutters.