diff --git a/CHANGELOG.md b/CHANGELOG.md
index c3d974890..901057b48 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,8 @@ All notable changes to this project will be documented in this file.
## [Unreleased] - Development
## [11.0.0.1]
### Added
+- Command ``SspmMap 0`` to reset Sonoff SPM default mapping
+- Command ``TcpConnect `` to add client connection mode (#14874)
- ESP32 support for BLE Mi scale V1 (#13517)
- ESP32 integrate Homekit in Bluetooth binary (#14818)
- ESP32 Berry always enable rules
@@ -21,6 +23,7 @@ All notable changes to this project will be documented in this file.
- GPIO OptionE1 selection regression (#14821)
- BL0939, BL0940 and BL0942 energy monitoring buffer miscompares resulting in wrong daily energy values regression from v9.5.0.8 (#14829)
- Orno WE517 power meter phase 2 current reactive (#14841)
+- Wiegand 34-bit rfid reading and presentation (#14834)
## [Released]
diff --git a/RELEASENOTES.md b/RELEASENOTES.md
index 45636d317..6e56333fb 100644
--- a/RELEASENOTES.md
+++ b/RELEASENOTES.md
@@ -105,6 +105,8 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo
## Changelog v11.0.0.1
### Added
+- Command ``SspmMap 0`` to reset Sonoff SPM default mapping
+- Command ``TcpConnect `` to add client connection mode [#14874](https://github.com/arendst/Tasmota/issues/14874)
- ESP32 Berry always enable rules
- ESP32 Berry bootloop protection
- ESP32 support for BLE Mi scale V1 [#13517](https://github.com/arendst/Tasmota/issues/13517)
@@ -123,6 +125,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo
- SSPM energy yesterday when zero
- GPIO OptionE1 selection regression [#14821](https://github.com/arendst/Tasmota/issues/14821)
- BL0939, BL0940 and BL0942 energy monitoring buffer miscompares resulting in wrong daily energy values regression from v9.5.0.8 [#14829](https://github.com/arendst/Tasmota/issues/14829)
+- Wiegand 34-bit rfid reading and presentation [#14834](https://github.com/arendst/Tasmota/issues/14834)
- Orno WE517 power meter phase 2 current reactive [#14841](https://github.com/arendst/Tasmota/issues/14841)
### Removed
diff --git a/lib/lib_basic/OneWire-Stickbreaker/OneWire.h b/lib/lib_basic/OneWire-Stickbreaker/OneWire.h
index 2747bea4e..5f4b613c2 100644
--- a/lib/lib_basic/OneWire-Stickbreaker/OneWire.h
+++ b/lib/lib_basic/OneWire-Stickbreaker/OneWire.h
@@ -210,14 +210,14 @@ void directModeInput(IO_REG_TYPE pin)
ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].mux);
ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].pullup | rtc_gpio_desc[pin].pulldown);
}
-#elif ESP_IDF_VERSION_MAJOR > 3 // ESP32-S2 needs IDF 4.2 or later
- int8_t rtc_io = esp32_gpioMux[pin].rtc;
- uint32_t rtc_reg = (rtc_io != -1)?rtc_io_desc[rtc_io].reg:0;
- if ( rtc_reg ) // RTC pins PULL settings
- {
- ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_io_desc[rtc_io].mux);
- ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_io_desc[rtc_io].pullup | rtc_io_desc[rtc_io].pulldown);
- }
+//#elif ESP_IDF_VERSION_MAJOR > 3 // ESP32-S2 needs IDF 4.2 or later
+// int8_t rtc_io = esp32_gpioMux[pin].rtc;
+// uint32_t rtc_reg = (rtc_io != -1)?rtc_io_desc[rtc_io].reg:0;
+// if ( rtc_reg ) // RTC pins PULL settings
+// {
+// ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_io_desc[rtc_io].mux);
+// ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_io_desc[rtc_io].pullup | rtc_io_desc[rtc_io].pulldown);
+// }
#endif
// Input
if ( pin < 32 )
@@ -225,13 +225,13 @@ void directModeInput(IO_REG_TYPE pin)
else
GPIO.enable1_w1tc.val = ((uint32_t)1 << (pin - 32));
- uint32_t pinFunction((uint32_t)2 << FUN_DRV_S); // what are the drivers?
- pinFunction |= FUN_IE; // input enable but required for output as well?
- pinFunction |= ((uint32_t)PIN_FUNC_GPIO << MCU_SEL_S);
+// uint32_t pinFunction((uint32_t)2 << FUN_DRV_S); // what are the drivers?
+// pinFunction |= FUN_IE; // input enable but required for output as well?
+// pinFunction |= ((uint32_t)PIN_FUNC_GPIO << MCU_SEL_S);
- ESP_REG(DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg) = pinFunction;
+// ESP_REG(DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg) = pinFunction;
- GPIO.pin[pin].val = 0;
+// GPIO.pin[pin].val = 0;
}
#endif
}
@@ -252,14 +252,14 @@ void directModeOutput(IO_REG_TYPE pin)
ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].mux);
ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].pullup | rtc_gpio_desc[pin].pulldown);
}
-#elif ESP_IDF_VERSION_MAJOR > 3 // ESP32-S2 needs IDF 4.2 or later
- int8_t rtc_io = esp32_gpioMux[pin].rtc;
- uint32_t rtc_reg = (rtc_io != -1)?rtc_io_desc[rtc_io].reg:0;
- if ( rtc_reg ) // RTC pins PULL settings
- {
- ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_io_desc[rtc_io].mux);
- ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_io_desc[rtc_io].pullup | rtc_io_desc[rtc_io].pulldown);
- }
+//#elif ESP_IDF_VERSION_MAJOR > 3 // ESP32-S2 needs IDF 4.2 or later
+// int8_t rtc_io = esp32_gpioMux[pin].rtc;
+// uint32_t rtc_reg = (rtc_io != -1)?rtc_io_desc[rtc_io].reg:0;
+// if ( rtc_reg ) // RTC pins PULL settings
+// {
+// ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_io_desc[rtc_io].mux);
+// ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_io_desc[rtc_io].pullup | rtc_io_desc[rtc_io].pulldown);
+// }
#endif
// Output
if ( pin < 32 )
@@ -267,13 +267,13 @@ void directModeOutput(IO_REG_TYPE pin)
else // already validated to pins <= 33
GPIO.enable1_w1ts.val = ((uint32_t)1 << (pin - 32));
- uint32_t pinFunction((uint32_t)2 << FUN_DRV_S); // what are the drivers?
- pinFunction |= FUN_IE; // input enable but required for output as well?
- pinFunction |= ((uint32_t)PIN_FUNC_GPIO << MCU_SEL_S);
+// uint32_t pinFunction((uint32_t)2 << FUN_DRV_S); // what are the drivers?
+// pinFunction |= FUN_IE; // input enable but required for output as well?
+// pinFunction |= ((uint32_t)PIN_FUNC_GPIO << MCU_SEL_S);
- ESP_REG(DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg) = pinFunction;
+// ESP_REG(DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg) = pinFunction;
- GPIO.pin[pin].val = 0;
+// GPIO.pin[pin].val = 0;
}
#endif
}
diff --git a/lib/libesp32/berry/default/be_modtab.c b/lib/libesp32/berry/default/be_modtab.c
index e09106849..3bc875f47 100644
--- a/lib/libesp32/berry/default/be_modtab.c
+++ b/lib/libesp32/berry/default/be_modtab.c
@@ -30,6 +30,7 @@ be_extern_native_module(cb);
/* Tasmota specific */
be_extern_native_module(python_compat);
be_extern_native_module(re);
+be_extern_native_module(mqtt);
be_extern_native_module(persist);
be_extern_native_module(autoconf);
be_extern_native_module(tapp);
@@ -108,6 +109,7 @@ BERRY_LOCAL const bntvmodule* const be_module_table[] = {
&be_native_module(python_compat),
&be_native_module(re),
&be_native_module(path),
+ &be_native_module(mqtt),
&be_native_module(persist),
#ifdef USE_AUTOCONF
&be_native_module(autoconf),
@@ -157,7 +159,7 @@ extern void be_load_wirelib(bvm *vm);
extern void be_load_onewirelib(bvm *vm);
extern void be_load_serial_lib(bvm *vm);
extern void be_load_Driver_class(bvm *vm);
-extern void be_load_Timer_class(bvm *vm);
+extern void be_load_Trigger_class(bvm *vm);
extern void be_load_I2C_Driver_class(bvm *vm);
extern void be_load_AXP192_class(bvm *vm);
extern void be_load_md5_lib(bvm *vm);
@@ -198,7 +200,7 @@ BERRY_API void be_load_custom_libs(bvm *vm)
#if !BE_USE_PRECOMPILED_OBJECT
/* be_load_xxxlib(vm); */
#endif
- be_load_Timer_class(vm);
+ be_load_Trigger_class(vm);
be_load_tasmota_ntvlib(vm);
be_load_tasmota_log_reader_class(vm);
be_load_Driver_class(vm);
diff --git a/lib/libesp32/berry/default/berry_conf.h b/lib/libesp32/berry/default/berry_conf.h
index d796dce02..8ee9cd0ba 100644
--- a/lib/libesp32/berry/default/berry_conf.h
+++ b/lib/libesp32/berry/default/berry_conf.h
@@ -175,6 +175,14 @@
**/
#define BE_USE_DEBUG_GC 0
+/* Macro: BE_USE_MEM_ALIGNED
+ * Some embedded processors have special memory areas
+ * with read/write constraints of being aligned to 32 bits boundaries.
+ * This options tries to move such memory areas to this region.
+ * Default: 0
+ **/
+#define BE_USE_MEM_ALIGNED 1
+
/* Macro: BE_USE_XXX_MODULE
* These macros control whether the related module is compiled.
* When they are true, they will enable related modules. At this
@@ -215,8 +223,6 @@ extern "C" {
extern void berry_free(void *ptr);
extern void *berry_realloc(void *ptr, size_t size);
extern void *berry_malloc32(size_t size);
- extern void berry_free32(void *ptr);
- extern void *berry_realloc32(void *ptr, size_t size);
#ifdef __cplusplus
}
#endif
diff --git a/lib/libesp32/berry/generate/be_const_strtab.h b/lib/libesp32/berry/generate/be_const_strtab.h
index 834714ee9..f8108ccc8 100644
--- a/lib/libesp32/berry/generate/be_const_strtab.h
+++ b/lib/libesp32/berry/generate/be_const_strtab.h
@@ -100,7 +100,7 @@ extern const bcstring be_const_str_STATE_DEFAULT;
extern const bcstring be_const_str_TAP_X3A_X20Loaded_X20Tasmota_X20App_X20_X27_X25s_X27;
extern const bcstring be_const_str_Tasmota;
extern const bcstring be_const_str_Tele;
-extern const bcstring be_const_str_Timer;
+extern const bcstring be_const_str_Trigger;
extern const bcstring be_const_str_True;
extern const bcstring be_const_str_Unknown;
extern const bcstring be_const_str_Unknown_X20command;
@@ -526,6 +526,7 @@ extern const bcstring be_const_str_length_X20in_X20bits_X20must_X20be_X20between
extern const bcstring be_const_str_light;
extern const bcstring be_const_str_light_X20must_X20be_X20of_X20class_X20_X27light_state_X27;
extern const bcstring be_const_str_light_state;
+extern const bcstring be_const_str_light_to_id;
extern const bcstring be_const_str_lights;
extern const bcstring be_const_str_line_dsc;
extern const bcstring be_const_str_list;
@@ -759,6 +760,7 @@ extern const bcstring be_const_str_strftime;
extern const bcstring be_const_str_string;
extern const bcstring be_const_str_strip;
extern const bcstring be_const_str_strptime;
+extern const bcstring be_const_str_subscribe;
extern const bcstring be_const_str_success;
extern const bcstring be_const_str_super;
extern const bcstring be_const_str_sys;
@@ -788,6 +790,7 @@ extern const bcstring be_const_str_touch_update;
extern const bcstring be_const_str_toupper;
extern const bcstring be_const_str_tr;
extern const bcstring be_const_str_traceback;
+extern const bcstring be_const_str_trig;
extern const bcstring be_const_str_true;
extern const bcstring be_const_str_try;
extern const bcstring be_const_str_try_rule;
@@ -795,6 +798,7 @@ extern const bcstring be_const_str_type;
extern const bcstring be_const_str_type_error;
extern const bcstring be_const_str_udp;
extern const bcstring be_const_str_unknown_X20instruction;
+extern const bcstring be_const_str_unsubscribe;
extern const bcstring be_const_str_update;
extern const bcstring be_const_str_upper;
extern const bcstring be_const_str_url_encode;
diff --git a/lib/libesp32/berry/generate/be_const_strtab_def.h b/lib/libesp32/berry/generate/be_const_strtab_def.h
index 777e7d55a..6f2bb82eb 100644
--- a/lib/libesp32/berry/generate/be_const_strtab_def.h
+++ b/lib/libesp32/berry/generate/be_const_strtab_def.h
@@ -1,746 +1,747 @@
-be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str__def);
-be_define_const_str(_X0A, "\n", 252472541u, 0, 1, &be_const_str__X2D_X2D_X3A_X2D_X2D);
-be_define_const_str(_X20, " ", 621580159u, 0, 1, NULL);
-be_define_const_str(_X21_X3D, "!=", 2428715011u, 0, 2, &be_const_str_send);
-be_define_const_str(_X21_X3D_X3D, "!==", 559817114u, 0, 3, &be_const_str_yield);
-be_define_const_str(_X22, "\"", 655135397u, 0, 1, &be_const_str__X23autoexec_X2Ebat);
-be_define_const_str(_X22_X3A, "\":", 399167565u, 0, 2, &be_const_str_TAP_X3A_X20Loaded_X20Tasmota_X20App_X20_X27_X25s_X27);
-be_define_const_str(_X23, "#", 638357778u, 0, 1, &be_const_str_delete_all_configs);
-be_define_const_str(_X23autoexec_X2Ebat, "#autoexec.bat", 3382890497u, 0, 13, &be_const_str_constructor_cb);
-be_define_const_str(_X23autoexec_X2Ebe, "#autoexec.be", 1181757091u, 0, 12, &be_const_str__X3Clegend_X3E_X3Cb_X20title_X3D_X27New_X20autoconf_X27_X3E_X26nbsp_X3BSelect_X20new_X20auto_X2Dconfiguration_X3C_X2Fb_X3E_X3C_X2Flegend_X3E);
-be_define_const_str(_X23display_X2Eini, "#display.ini", 182218220u, 0, 12, &be_const_str_public_key);
-be_define_const_str(_X23init_X2Ebat, "#init.bat", 3297595077u, 0, 9, &be_const_str__X3D_X3C_X3E_X21);
-be_define_const_str(_X23preinit_X2Ebe, "#preinit.be", 687035716u, 0, 11, &be_const_str_eth);
-be_define_const_str(_X2502d_X25s_X2502d, "%02d%s%02d", 1587999717u, 0, 10, NULL);
-be_define_const_str(_X2504d_X2D_X2502d_X2D_X2502dT_X2502d_X3A_X2502d_X3A_X2502d, "%04d-%02d-%02dT%02d:%02d:%02d", 3425528601u, 0, 29, &be_const_str_CFG_X3A_X20downloading_X20_X27_X25s_X27);
-be_define_const_str(_X2508x_X2D_X2504x_X2D_X2504x_X2D_X2504x_X2D_X2504x_X2508x, "%08x-%04x-%04x-%04x-%04x%08x", 1670063141u, 0, 28, NULL);
-be_define_const_str(_X25s_X2Eautoconf, "%s.autoconf", 3560383524u, 0, 11, NULL);
-be_define_const_str(_X26lt_X3BError_X3A_X20apply_X20new_X20or_X20remove_X26gt_X3B, "<Error: apply new or remove>", 2855507949u, 0, 34, &be_const_str_EXTERNAL_I2S);
-be_define_const_str(_X26lt_X3BNone_X26gt_X3B, "<None>", 2602165498u, 0, 12, &be_const_str_isinstance);
-be_define_const_str(_X28_X29, "()", 685372826u, 0, 2, &be_const_str_find_key_i);
-be_define_const_str(_X2B, "+", 772578730u, 0, 1, &be_const_str_lower);
-be_define_const_str(_X2C, ",", 688690635u, 0, 1, &be_const_str_leds);
-be_define_const_str(_X2C_X22AXP192_X22_X3A_X7B_X22VBusVoltage_X22_X3A_X25_X2E3f_X2C_X22VBusCurrent_X22_X3A_X25_X2E1f_X2C_X22BattVoltage_X22_X3A_X25_X2E3f_X2C_X22BattCurrent_X22_X3A_X25_X2E1f_X2C_X22Temperature_X22_X3A_X25_X2E1f_X7D, ",\"AXP192\":{\"VBusVoltage\":%.3f,\"VBusCurrent\":%.1f,\"BattVoltage\":%.3f,\"BattCurrent\":%.1f,\"Temperature\":%.1f}", 2598755376u, 0, 106, &be_const_str_files);
-be_define_const_str(_X2D_X2D_X3A_X2D_X2D, "--:--", 1370615441u, 0, 5, &be_const_str_lv_coord_arr);
-be_define_const_str(_X2E, ".", 722245873u, 0, 1, &be_const_str_json_fdump_list);
-be_define_const_str(_X2E_X2E, "..", 2748622605u, 0, 2, &be_const_str_list);
-be_define_const_str(_X2Eautoconf, ".autoconf", 2524679088u, 0, 9, &be_const_str_get_current_module_path);
-be_define_const_str(_X2Ebe, ".be", 1325797348u, 0, 3, &be_const_str_BRY_X3A_X20argument_X20must_X20be_X20a_X20function);
-be_define_const_str(_X2Ebec, ".bec", 3985273221u, 0, 4, &be_const_str_get_vbus_voltage);
-be_define_const_str(_X2Elen, ".len", 850842136u, 0, 4, &be_const_str_rtc);
-be_define_const_str(_X2Ep, ".p", 1171526419u, 0, 2, &be_const_str_create_segment);
-be_define_const_str(_X2Ep1, ".p1", 249175686u, 0, 3, &be_const_str_draw_line_dsc_init);
-be_define_const_str(_X2Ep2, ".p2", 232398067u, 0, 3, &be_const_str_set);
+be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_stop);
+be_define_const_str(_X0A, "\n", 252472541u, 0, 1, &be_const_str_abs);
+be_define_const_str(_X20, " ", 621580159u, 0, 1, &be_const_str_set_gain);
+be_define_const_str(_X21_X3D, "!=", 2428715011u, 0, 2, NULL);
+be_define_const_str(_X21_X3D_X3D, "!==", 559817114u, 0, 3, &be_const_str_read12);
+be_define_const_str(_X22, "\"", 655135397u, 0, 1, &be_const_str_floor);
+be_define_const_str(_X22_X3A, "\":", 399167565u, 0, 2, &be_const_str_True);
+be_define_const_str(_X23, "#", 638357778u, 0, 1, &be_const_str_get_switch);
+be_define_const_str(_X23autoexec_X2Ebat, "#autoexec.bat", 3382890497u, 0, 13, &be_const_str_atan2);
+be_define_const_str(_X23autoexec_X2Ebe, "#autoexec.be", 1181757091u, 0, 12, &be_const_str_ins_time);
+be_define_const_str(_X23display_X2Eini, "#display.ini", 182218220u, 0, 12, &be_const_str_button_pressed);
+be_define_const_str(_X23init_X2Ebat, "#init.bat", 3297595077u, 0, 9, &be_const_str_event_cb);
+be_define_const_str(_X23preinit_X2Ebe, "#preinit.be", 687035716u, 0, 11, &be_const_str__X2F);
+be_define_const_str(_X2502d_X25s_X2502d, "%02d%s%02d", 1587999717u, 0, 10, &be_const_str_display_X2Eini);
+be_define_const_str(_X2504d_X2D_X2502d_X2D_X2502dT_X2502d_X3A_X2502d_X3A_X2502d, "%04d-%02d-%02dT%02d:%02d:%02d", 3425528601u, 0, 29, &be_const_str_MD5);
+be_define_const_str(_X2508x_X2D_X2504x_X2D_X2504x_X2D_X2504x_X2D_X2504x_X2508x, "%08x-%04x-%04x-%04x-%04x%08x", 1670063141u, 0, 28, &be_const_str__filename);
+be_define_const_str(_X25s_X2Eautoconf, "%s.autoconf", 3560383524u, 0, 11, &be_const_str_destructor_cb);
+be_define_const_str(_X26lt_X3BError_X3A_X20apply_X20new_X20or_X20remove_X26gt_X3B, "<Error: apply new or remove>", 2855507949u, 0, 34, &be_const_str_consume_mono);
+be_define_const_str(_X26lt_X3BNone_X26gt_X3B, "<None>", 2602165498u, 0, 12, &be_const_str_get_bat_charge_current);
+be_define_const_str(_X28_X29, "()", 685372826u, 0, 2, &be_const_str_copy);
+be_define_const_str(_X2B, "+", 772578730u, 0, 1, &be_const_str_PART_MAIN);
+be_define_const_str(_X2C, ",", 688690635u, 0, 1, NULL);
+be_define_const_str(_X2C_X22AXP192_X22_X3A_X7B_X22VBusVoltage_X22_X3A_X25_X2E3f_X2C_X22VBusCurrent_X22_X3A_X25_X2E1f_X2C_X22BattVoltage_X22_X3A_X25_X2E3f_X2C_X22BattCurrent_X22_X3A_X25_X2E1f_X2C_X22Temperature_X22_X3A_X25_X2E1f_X7D, ",\"AXP192\":{\"VBusVoltage\":%.3f,\"VBusCurrent\":%.1f,\"BattVoltage\":%.3f,\"BattCurrent\":%.1f,\"Temperature\":%.1f}", 2598755376u, 0, 106, &be_const_str_rtc);
+be_define_const_str(_X2D_X2D_X3A_X2D_X2D, "--:--", 1370615441u, 0, 5, NULL);
+be_define_const_str(_X2E, ".", 722245873u, 0, 1, &be_const_str_BRY_X3A_X20ERROR_X2C_X20bad_X20json_X3A_X20);
+be_define_const_str(_X2E_X2E, "..", 2748622605u, 0, 2, &be_const_str_CFG_X3A_X20No_X20_X27_X2A_X2Eautoconf_X27_X20file_X20found);
+be_define_const_str(_X2Eautoconf, ".autoconf", 2524679088u, 0, 9, &be_const_str_get_temp);
+be_define_const_str(_X2Ebe, ".be", 1325797348u, 0, 3, &be_const_str_color);
+be_define_const_str(_X2Ebec, ".bec", 3985273221u, 0, 4, &be_const_str_millis);
+be_define_const_str(_X2Elen, ".len", 850842136u, 0, 4, &be_const_str_animate);
+be_define_const_str(_X2Ep, ".p", 1171526419u, 0, 2, &be_const_str_ctypes_bytes_dyn);
+be_define_const_str(_X2Ep1, ".p1", 249175686u, 0, 3, &be_const_str_set_ldo_voltage);
+be_define_const_str(_X2Ep2, ".p2", 232398067u, 0, 3, &be_const_str_select);
be_define_const_str(_X2Esize, ".size", 1965188224u, 0, 5, NULL);
-be_define_const_str(_X2Etapp, ".tapp", 1363391594u, 0, 5, &be_const_str_clear);
-be_define_const_str(_X2Ew, ".w", 1255414514u, 0, 2, &be_const_str_set_huesat);
-be_define_const_str(_X2F, "/", 705468254u, 0, 1, NULL);
-be_define_const_str(_X2F_X2Eautoconf, "/.autoconf", 2212074393u, 0, 10, &be_const_str_CFG_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s);
-be_define_const_str(_X2F_X3Frst_X3D, "/?rst=", 580074707u, 0, 6, &be_const_str_ctypes_bytes_dyn);
-be_define_const_str(_X2Fac, "/ac", 3904651978u, 0, 3, &be_const_str__X3Cp_X3E_X3Cform_X20id_X3Dreapply_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20action_X3D_X27_X2Fac_X27_X20method_X3D_X27post_X27_X20);
-be_define_const_str(_X2Flights_X2F, "/lights/", 2370247908u, 0, 8, &be_const_str_init_draw_arc_dsc);
-be_define_const_str(_X2Fstate_X2F, "/state/", 4226179876u, 0, 7, &be_const_str__X3Cselect_X20name_X3D_X27zip_X27_X3E);
-be_define_const_str(_X3A, ":", 1057798253u, 0, 1, &be_const_str_day);
-be_define_const_str(_X3C, "<", 957132539u, 0, 1, &be_const_str_LVG_X3A_X20call_X20to_X20unsupported_X20callback);
-be_define_const_str(_X3C_X2Fform_X3E_X3C_X2Fp_X3E, "
", 3546571739u, 0, 11, &be_const_str_full_status);
-be_define_const_str(_X3C_X2Fselect_X3E_X3Cp_X3E_X3C_X2Fp_X3E, "", 1863865923u, 0, 16, &be_const_str_file);
-be_define_const_str(_X3C_X3D, "<=", 2499223986u, 0, 2, &be_const_str__X3Cp_X3E_X3Cform_X20id_X3Dzip_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20action_X3D_X27_X2Fac_X27_X20method_X3D_X27post_X27_X20);
-be_define_const_str(_X3Cbutton_X20name_X3D_X27reapply_X27_X20class_X3D_X27button_X20bgrn_X27_X3ERe_X2Dapply_X20current_X20configuration_X3C_X2Fbutton_X3E, "", 3147934216u, 0, 82, &be_const_str_False);
-be_define_const_str(_X3Cbutton_X20name_X3D_X27zipapply_X27_X20class_X3D_X27button_X20bgrn_X27_X3EApply_X20configuration_X3C_X2Fbutton_X3E, "", 1205771629u, 0, 72, &be_const_str_erase);
-be_define_const_str(_X3Cfieldset_X3E_X3Cstyle_X3E_X2Ebdis_X7Bbackground_X3A_X23888_X3B_X7D_X2Ebdis_X3Ahover_X7Bbackground_X3A_X23888_X3B_X7D_X3C_X2Fstyle_X3E, "", 2052843416u, 0, 25, &be_const_str_reverse_gamma10);
+be_define_const_str(_X3Cp_X3E_X3Cform_X20id_X3Dac_X20action_X3D_X27ac_X27_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20method_X3D_X27get_X27_X3E_X3Cbutton_X3EAuto_X2Dconfiguration_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E, "", 2058443583u, 0, 110, NULL);
+be_define_const_str(_X3Cp_X3E_X3Cform_X20id_X3Dreapply_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20action_X3D_X27_X2Fac_X27_X20method_X3D_X27post_X27_X20, "