mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-23 10:46:31 +00:00
Refactor Sonoff SPM power on state
This commit is contained in:
parent
a68bcdb34b
commit
4c156f715e
@ -1802,6 +1802,13 @@ void SSPMEvery100ms(void) {
|
||||
break;
|
||||
case SPM_SCAN_COMPLETE:
|
||||
// Scan sequence finished
|
||||
#ifndef SSPM_SIMULATE
|
||||
if (Sspm->power_on_state) {
|
||||
TasmotaGlobal.power = Sspm->power_on_state;
|
||||
Sspm->power_on_state = 0; // Reset power on state solving re-scan
|
||||
SetPowerOnState(); // Set power on state now that all relays have been detected
|
||||
}
|
||||
#endif
|
||||
TasmotaGlobal.discovery_counter = 1; // Force TasDiscovery()
|
||||
Sspm->allow_updates = 1; // Enable requests from 100mSec loop
|
||||
Sspm->get_energy_relay = 0;
|
||||
@ -1875,14 +1882,18 @@ void SSPMEvery100ms(void) {
|
||||
bool SSPMSetDevicePower(void) {
|
||||
power_t new_power = XdrvMailbox.index;
|
||||
if (new_power != Sspm->old_power) {
|
||||
uint32_t relay_count = 0;
|
||||
for (uint32_t i = 0; i < TasmotaGlobal.devices_present; i++) {
|
||||
uint32_t new_state = (new_power >> i) &1;
|
||||
if (new_state != ((Sspm->old_power >> i) &1)) {
|
||||
SSPMSendSetRelay(i, new_state);
|
||||
Sspm->no_send_key = 10; // Disable buttons for 10 * 0.1 second
|
||||
relay_count++;
|
||||
}
|
||||
}
|
||||
Sspm->old_power = new_power;
|
||||
if (relay_count) {
|
||||
Sspm->no_send_key = relay_count *10; // Disable button response for relay_count * 10 * 0.1 second
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user