diff --git a/tasmota/tasmota.h b/tasmota/tasmota.h index 77cbd00ce..9aa5c1b27 100644 --- a/tasmota/tasmota.h +++ b/tasmota/tasmota.h @@ -343,7 +343,7 @@ enum XsnsFunctions {FUNC_SETTINGS_OVERRIDE, FUNC_PIN_STATE, FUNC_MODULE_INIT, FU FUNC_ENERGY_EVERY_SECOND, FUNC_ENERGY_RESET, FUNC_RULES_PROCESS, FUNC_TELEPERIOD_RULES_PROCESS, FUNC_SERIAL, FUNC_FREE_MEM, FUNC_BUTTON_PRESSED, FUNC_BUTTON_MULTI_PRESSED, FUNC_WEB_ADD_BUTTON, FUNC_WEB_ADD_CONSOLE_BUTTON, FUNC_WEB_ADD_MANAGEMENT_BUTTON, FUNC_WEB_ADD_MAIN_BUTTON, - FUNC_WEB_ADD_HANDLER, FUNC_SET_CHANNELS, FUNC_SET_SCHEME, FUNC_HOTPLUG_SCAN, + FUNC_WEB_GET_ARG, FUNC_WEB_ADD_HANDLER, FUNC_SET_CHANNELS, FUNC_SET_SCHEME, FUNC_HOTPLUG_SCAN, FUNC_DEVICE_GROUP_ITEM }; enum AddressConfigSteps { ADDR_IDLE, ADDR_RECEIVE, ADDR_SEND }; diff --git a/tasmota/xdrv_01_webserver.ino b/tasmota/xdrv_01_webserver.ino index ec28f4f23..1f76a66f6 100644 --- a/tasmota/xdrv_01_webserver.ino +++ b/tasmota/xdrv_01_webserver.ino @@ -1425,6 +1425,9 @@ bool HandleRootStatusRefresh(void) } #endif // USE_ZIGBEE + XsnsCall(FUNC_WEB_GET_ARG); + XdrvCall(FUNC_WEB_GET_ARG); + #ifdef USE_WEB_SSE WSContentBegin(200, CT_STREAM); WSContentSend_P(PSTR("data: ")); diff --git a/tasmota/xdrv_04_light.ino b/tasmota/xdrv_04_light.ino index b05386f4a..a5db3d58a 100644 --- a/tasmota/xdrv_04_light.ino +++ b/tasmota/xdrv_04_light.ino @@ -3214,6 +3214,14 @@ bool Xdrv04(uint8_t function) case FUNC_BUTTON_MULTI_PRESSED: result = XlgtCall(FUNC_BUTTON_MULTI_PRESSED); break; +#ifdef USE_WEBSERVER + case FUNC_WEB_ADD_MAIN_BUTTON: + XlgtCall(FUNC_WEB_ADD_MAIN_BUTTON); + break; + case FUNC_WEB_GET_ARG: + XlgtCall(FUNC_WEB_GET_ARG); + break; +#endif // USE_WEBSERVER case FUNC_COMMAND: result = DecodeCommand(kLightCommands, LightCommand, kLightSynonyms); if (!result) { diff --git a/tasmota/xlgt_07_lsc_mcsl.ino b/tasmota/xlgt_07_lsc_mcsl.ino index 9e8ec00e6..4b9abb6c0 100644 --- a/tasmota/xlgt_07_lsc_mcsl.ino +++ b/tasmota/xlgt_07_lsc_mcsl.ino @@ -17,6 +17,8 @@ along with this program. If not, see . */ +#define USE_LSC_MCSL_GUI + #ifdef USE_LIGHT #ifdef USE_LSC_MCSL /*********************************************************************************************\ @@ -27,6 +29,17 @@ * Template: * {"NAME":"LSC MC Lights","GPIO":[0,0,0,0,544,32,0,0,3840,0,3872,0,0,0],"FLAG":0,"BASE":18} * + * Webbutton: + * {"WebButton1":"On / Off", + * "WebButton2":"Bright", + * "WebButton3":"Slow", + * "WebButton4":"Star", + * "WebButton5":"Flower", + * "WebButton6":"Marquee", + * "WebButton7":"Fireworks", + * "WebButton8":"Meteor", + * "WebButton9":"Stream"} + * * NL: Action LSC Multi color smart lights * * Button usage: @@ -232,6 +245,52 @@ void LscMcModuleSelected(void) { // AddLog(LOG_LEVEL_DEBUG, PSTR("LGT: LSC Multi Color Found")); } +#ifdef USE_WEBSERVER +#ifdef USE_LSC_MCSL_GUI + +void LscMcAddFuctionButtons(void) { + char number[4]; + + uint32_t rows = 1; + uint32_t cols = 8; + for (uint32_t i = 0; i < 8; i++) { + if (strlen(SettingsText(SET_BUTTON1 + i +1))) { + rows <<= 1; + cols >>= 1; + break; + } + } + WSContentSend_P(HTTP_TABLE100); + WSContentSend_P(PSTR("")); + uint32_t idx = 0; + for (uint32_t i = 0; i < rows; i++) { + if (idx > 0) { WSContentSend_P(PSTR("")); } + for (uint32_t j = 0; j < cols; j++) { + idx++; + WSContentSend_P(PSTR(""), // &lsc is related to WebGetArg("lsc", tmp, sizeof(tmp)); + 100 / cols, + idx -1, + (strlen(SettingsText(SET_BUTTON1 + idx))) ? SettingsText(SET_BUTTON1 + idx) : itoa(idx, number, 10)); + } + } + WSContentSend_P(PSTR("")); +} + +void LscMcWebGetArg(void) { + char tmp[8]; // WebGetArg numbers only + char command[20]; + WebGetArg(PSTR("lsc"), tmp, sizeof(tmp)); // 0 - 7 functions + if (strlen(tmp)) { + uint32_t function = atoi(tmp); + snprintf_P(command, sizeof(command), PSTR(D_CMND_DIMMER " %d"), (function * (100 / 8)) + ((100 / 8) / 2)); + ExecuteWebCommand(command); + } +} + +#endif // USE_LSC_MCSL_GUI +#endif // USE_WEBSERVER + + /*********************************************************************************************\ * Interface \*********************************************************************************************/ @@ -247,6 +306,16 @@ bool Xlgt07(uint8_t function) case FUNC_BUTTON_MULTI_PRESSED: result = LscMcMultiButtonPressed(); break; +#ifdef USE_WEBSERVER +#ifdef USE_LSC_MCSL_GUI + case FUNC_WEB_ADD_MAIN_BUTTON: + LscMcAddFuctionButtons(); + break; + case FUNC_WEB_GET_ARG: + LscMcWebGetArg(); + break; +#endif // USE_LSC_MCSL_GUI +#endif // USE_WEBSERVER case FUNC_MODULE_INIT: LscMcModuleSelected(); break;