From 5f9912665adabc7597bca69cfa52416f3cea6ec6 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 10 Nov 2024 17:40:03 +0100 Subject: [PATCH] Clean Tuya code --- .../xdrv_01_9_webserver.ino | 16 ------------- .../xdrv_16_tuyamcu_v1.ino | 24 ++++++++++++++++--- .../xdrv_16_tuyamcu_v2.ino | 24 ++++++++++++++++--- 3 files changed, 42 insertions(+), 22 deletions(-) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino b/tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino index de23ea46c..888f7f8fd 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino @@ -1580,19 +1580,6 @@ bool HandleRootStatusRefresh(void) } } else { #endif // USE_SONOFF_IFAN -#ifdef USE_TUYA_MCU - if (IsModuleTuya()) { - if (device <= TasmotaGlobal.devices_present) { - ExecuteCommandPower(device, POWER_TOGGLE, SRC_IGNORE); - } else { - if (AsModuleTuyaMS() && device == TasmotaGlobal.devices_present + 1) { - uint8_t dpId = TuyaGetDpId(TUYA_MCU_FUNC_MODESET); - snprintf_P(svalue, sizeof(svalue), PSTR("Tuyasend4 %d,%d"), dpId, !TuyaModeSet()); - ExecuteCommand(svalue, SRC_WEBGUI); - } - } - } else { -#endif // USE_TUYA_MCU #ifdef USE_SHUTTER int32_t ShutterWebButton; if (ShutterWebButton = IsShutterWebButton(device)) { @@ -1607,9 +1594,6 @@ bool HandleRootStatusRefresh(void) #ifdef USE_SONOFF_IFAN } #endif // USE_SONOFF_IFAN -#ifdef USE_TUYA_MCU - } -#endif // USE_TUYA_MCU } #ifdef USE_LIGHT WebGetArg(PSTR("d0"), tmp, sizeof(tmp)); // 0 - 100 Dimmer value diff --git a/tasmota/tasmota_xdrv_driver/xdrv_16_tuyamcu_v1.ino b/tasmota/tasmota_xdrv_driver/xdrv_16_tuyamcu_v1.ino index 519a5fa0e..869bf6141 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_16_tuyamcu_v1.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_16_tuyamcu_v1.ino @@ -1620,17 +1620,32 @@ void TuyaSensorsShow(bool json) #ifdef USE_WEBSERVER +#define WEB_HANDLE_TUYA "d16" + void TuyaAddButton(void) { if (AsModuleTuyaMS()) { WSContentSend_P(HTTP_TABLE100); char stemp[33]; - snprintf_P(stemp, sizeof(stemp), PSTR("" D_JSON_IRHVAC_MODE "")); - WSContentSend_P(HTTP_DEVICE_CONTROL, 26, TasmotaGlobal.devices_present + 1, TasmotaGlobal.devices_present + 1, - (strlen(GetWebButton(TasmotaGlobal.devices_present))) ? HtmlEscape(GetWebButton(TasmotaGlobal.devices_present)).c_str() : stemp, ""); + snprintf_P(stemp, sizeof(stemp), PSTR(D_JSON_IRHVAC_MODE)); + WSContentSend_P(PSTR(""), // &d16 is related to WebGetArg("d16", tmp, sizeof(tmp)); + (strlen(GetWebButton(TasmotaGlobal.devices_present))) ? HtmlEscape(GetWebButton(TasmotaGlobal.devices_present)).c_str() : stemp); WSContentSend_P(PSTR("")); } } +void TuyaWebGetArg(void) { + if (AsModuleTuyaMS()) { + char tmp[8]; // WebGetArg numbers only + WebGetArg(PSTR(WEB_HANDLE_TUYA), tmp, sizeof(tmp)); + if (strlen(tmp)) { + uint8_t dpId = TuyaGetDpId(TUYA_MCU_FUNC_MODESET); + char svalue[32]; + snprintf_P(svalue, sizeof(svalue), PSTR("Tuyasend4 %d,%d"), dpId, !TuyaModeSet()); + ExecuteWebCommand(svalue); + } + } +} + #endif // USE_WEBSERVER /*********************************************************************************************\ @@ -1723,6 +1738,9 @@ bool Xdrv16(uint32_t function) { case FUNC_WEB_ADD_MAIN_BUTTON: TuyaAddButton(); break; + case FUNC_WEB_GET_ARG: + TuyaWebGetArg(); + break; case FUNC_WEB_SENSOR: TuyaSensorsShow(0); break; diff --git a/tasmota/tasmota_xdrv_driver/xdrv_16_tuyamcu_v2.ino b/tasmota/tasmota_xdrv_driver/xdrv_16_tuyamcu_v2.ino index 58eec8637..31b47e286 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_16_tuyamcu_v2.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_16_tuyamcu_v2.ino @@ -2413,17 +2413,32 @@ void TuyaSensorsShow(bool json) #ifdef USE_WEBSERVER +#define WEB_HANDLE_TUYA "d16" + void TuyaAddButton(void) { if (AsModuleTuyaMS()) { WSContentSend_P(HTTP_TABLE100); char stemp[33]; - snprintf_P(stemp, sizeof(stemp), PSTR("" D_JSON_IRHVAC_MODE "")); - WSContentSend_P(HTTP_DEVICE_CONTROL, 26, TasmotaGlobal.devices_present + 1, TasmotaGlobal.devices_present + 1, - (strlen(GetWebButton(TasmotaGlobal.devices_present))) ? HtmlEscape(GetWebButton(TasmotaGlobal.devices_present)).c_str() : stemp, ""); + snprintf_P(stemp, sizeof(stemp), PSTR(D_JSON_IRHVAC_MODE)); + WSContentSend_P(PSTR(""), // &d16 is related to WebGetArg("d16", tmp, sizeof(tmp)); + (strlen(GetWebButton(TasmotaGlobal.devices_present))) ? HtmlEscape(GetWebButton(TasmotaGlobal.devices_present)).c_str() : stemp); WSContentSend_P(PSTR("")); } } +void TuyaWebGetArg(void) { + if (AsModuleTuyaMS()) { + char tmp[8]; // WebGetArg numbers only + WebGetArg(PSTR(WEB_HANDLE_TUYA), tmp, sizeof(tmp)); + if (strlen(tmp)) { + uint8_t dpId = TuyaGetDpId(TUYA_MCU_FUNC_MODESET); + char svalue[32]; + snprintf_P(svalue, sizeof(svalue), PSTR("Tuyasend4 %d,%d"), dpId, !TuyaModeSet()); + ExecuteWebCommand(svalue); + } + } +} + #endif // USE_WEBSERVER /*********************************************************************************************\ @@ -2558,6 +2573,9 @@ bool Xdrv16(uint32_t function) { case FUNC_WEB_ADD_MAIN_BUTTON: TuyaAddButton(); break; + case FUNC_WEB_GET_ARG: + TuyaWebGetArg(); + break; case FUNC_WEB_SENSOR: TuyaSensorsShow(0); break;