Fix TuyaMCU v1 exception 28 regression from v15.1.0.1 reverted PR24063 (#24220)

This commit is contained in:
Theo Arends 2025-12-14 15:37:36 +01:00
parent a40d778795
commit bb0cc4fa5b
3 changed files with 9 additions and 23 deletions

View File

@ -9,8 +9,11 @@ All notable changes to this project will be documented in this file.
### Breaking Changed ### Breaking Changed
### Changed ### Changed
- Vid6608 library from v1.0.2 to v1.0.3 (#24218)
### Fixed ### Fixed
- DALI watchdog exception
- TuyaMCU v1 exception 28 regression from v15.1.0.1 reverted PR24063 (#24220)
### Removed ### Removed

View File

@ -116,5 +116,8 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm
### Added ### Added
### Changed ### Changed
- Vid6608 library from v1.0.2 to v1.0.3 [#24218](https://github.com/arendst/Tasmota/issues/24218)
### Fixed ### Fixed
- DALI watchdog exception
- TuyaMCU v1 exception 28 regression from v15.1.0.1 reverted PR24063 [#24220](https://github.com/arendst/Tasmota/issues/24220)

View File

@ -1097,32 +1097,12 @@ void TuyaNormalPowerModePacketProcess(void)
case TUYA_CMD_STATE: case TUYA_CMD_STATE:
TuyaProcessStatePacket(); TuyaProcessStatePacket();
break; break;
case TUYA_CMD_WIFI_RESET:
case TUYA_CMD_WIFI_SELECT: case TUYA_CMD_WIFI_SELECT:
case TUYA_CMD_WIFI_RESET: { AddLog(LOG_LEVEL_DEBUG, PSTR("TYA: RX WiFi Reset"));
const bool is_select = (Tuya.buffer[3] == TUYA_CMD_WIFI_SELECT);
const uint16_t payload_len = ((uint16_t)Tuya.buffer[4] << 8) | Tuya.buffer[5];
// Establish pairing mode - WIFI_RESET is assumed to be AP mode
uint8_t first = 0x01;
if (is_select && !(payload_len >= 1 && Tuya.buffer[6] == 0x01)) {
first = 0x00;
}
// Send ACK, then WIFI_STATE ramp up to cloud connected to re-enable MCU control
TuyaSendCmd(is_select ? TUYA_CMD_WIFI_SELECT : TUYA_CMD_WIFI_RESET);
uint8_t st = first; TuyaSendCmd(TUYA_CMD_WIFI_STATE, &st, 1);
st = 0x02; TuyaSendCmd(TUYA_CMD_WIFI_STATE, &st, 1);
st = 0x03; TuyaSendCmd(TUYA_CMD_WIFI_STATE, &st, 1);
st = 0x04; TuyaSendCmd(TUYA_CMD_WIFI_STATE, &st, 1);
AddLog(LOG_LEVEL_DEBUG, PSTR("TYA: WIFI_%s received (%s), sent WIFI_STATE ramp"),
is_select ? PSTR("SELECT") : PSTR("RESET"),
(first == 0x01) ? "AP" : "EZ");
// Now actually reset Tasmota WiFi
TuyaResetWifi(); TuyaResetWifi();
break; break;
}
case TUYA_CMD_WIFI_STATE: case TUYA_CMD_WIFI_STATE:
AddLog(LOG_LEVEL_DEBUG, PSTR("TYA: RX WiFi LED set ACK")); AddLog(LOG_LEVEL_DEBUG, PSTR("TYA: RX WiFi LED set ACK"));