Add delayed SetPowerOnState

Add delayed SetPowerOnState to Sonoff SPM (#13447)
This commit is contained in:
Theo Arends 2022-04-16 18:20:10 +02:00
parent 845972cf49
commit f8254901d0
3 changed files with 12 additions and 0 deletions

View File

@ -8,6 +8,7 @@ All notable changes to this project will be documented in this file.
- Support for Sonoff MS01 soil moisture sensor (#15335) - Support for Sonoff MS01 soil moisture sensor (#15335)
- Support for daisy chaining MAX7219 displays (#15345) - Support for daisy chaining MAX7219 displays (#15345)
- Command ``EnergyExportActive<phase>`` to (p)reset energy export active for supported devices. Currently ADE7880 only (#13515) - Command ``EnergyExportActive<phase>`` to (p)reset energy export active for supported devices. Currently ADE7880 only (#13515)
- Sonoff SPM delayed SetPowerOnState (#13447)
### Changed ### Changed

View File

@ -109,6 +109,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo
- Command ``EnergyExportActive<phase>`` to (p)reset energy export active for supported devices. Currently ADE7880 only [#13515](https://github.com/arendst/Tasmota/issues/13515) - Command ``EnergyExportActive<phase>`` to (p)reset energy export active for supported devices. Currently ADE7880 only [#13515](https://github.com/arendst/Tasmota/issues/13515)
- Support for Sonoff MS01 soil moisture sensor [#15335](https://github.com/arendst/Tasmota/issues/15335) - Support for Sonoff MS01 soil moisture sensor [#15335](https://github.com/arendst/Tasmota/issues/15335)
- Support for daisy chaining MAX7219 displays [#15345](https://github.com/arendst/Tasmota/issues/15345) - Support for daisy chaining MAX7219 displays [#15345](https://github.com/arendst/Tasmota/issues/15345)
- Sonoff SPM delayed SetPowerOnState [#13447](https://github.com/arendst/Tasmota/issues/13447)
### Breaking Changed ### Breaking Changed

View File

@ -251,6 +251,7 @@ typedef struct {
uint32_t timeout; uint32_t timeout;
power_t old_power; power_t old_power;
power_t power_on_state;
uint16_t last_totals; uint16_t last_totals;
uint16_t serial_in_byte_counter; uint16_t serial_in_byte_counter;
uint16_t expected_bytes; uint16_t expected_bytes;
@ -1097,6 +1098,14 @@ void SSPMHandleReceivedData(void) {
} else { } else {
AddLog(LOG_LEVEL_DEBUG, PSTR("SPM: Relay scan done")); AddLog(LOG_LEVEL_DEBUG, PSTR("SPM: Relay scan done"));
#ifndef SSPM_SIMULATE
if (Sspm->power_on_state) {
TasmotaGlobal.power = Sspm->power_on_state;
Sspm->power_on_state = 0;
SetPowerOnState();
}
#endif
Sspm->mstate = SPM_SCAN_COMPLETE; Sspm->mstate = SPM_SCAN_COMPLETE;
} }
break; break;
@ -1704,6 +1713,7 @@ void SSPMInit(void) {
Sspm->history_relay = 255; // Disable display energy history Sspm->history_relay = 255; // Disable display energy history
Sspm->log_relay = 255; // Disable display logging Sspm->log_relay = 255; // Disable display logging
Sspm->old_power = TasmotaGlobal.power; Sspm->old_power = TasmotaGlobal.power;
Sspm->power_on_state = TasmotaGlobal.power;
Sspm->mstate = SPM_WAIT; // Start init sequence Sspm->mstate = SPM_WAIT; // Start init sequence
} }