Reduce minimal by 1k

This commit is contained in:
Theo Arends 2024-11-10 16:28:25 +01:00
parent a97aeeedb7
commit fd7554d96e
4 changed files with 31 additions and 44 deletions

View File

@ -273,6 +273,7 @@ const char HTTP_MSG_SLIDER_GRADIENT[] PROGMEM =
"</div>"
"</td>";
// https://stackoverflow.com/questions/4057236/how-to-add-onload-event-to-a-div-element
const char HTTP_MSG_EXEC_JAVASCRIPT[] PROGMEM =
"<img style='display:none;' src onerror=\"";
@ -418,10 +419,7 @@ const char HTTP_END[] PROGMEM =
"</body>"
"</html>";
//const char HTTP_DEVICE_CONTROL[] PROGMEM = "<td style='width:%d%%'><button onclick='la(\"&o=%d\");'>%s%s</button></td>"; // ?o is related to WebGetArg(PSTR("o"), tmp, sizeof(tmp))
//const char HTTP_DEVICE_CONTROL[] PROGMEM = "<td style='width:%d%%'><button id='o%d' style='background:#%06x;' onclick='la(\"&o=%d\");'>%s%s</button></td>"; // ?o is related to WebGetArg(PSTR("o"), tmp, sizeof(tmp))
const char HTTP_DEVICE_CONTROL[] PROGMEM = "<td style='width:%d%%'><button id='o%d' onclick='la(\"&o=%d\");'>%s%s</button></td>"; // ?o is related to WebGetArg(PSTR("o"), tmp, sizeof(tmp))
const char HTTP_DEVICE_STATE[] PROGMEM = "<td style='width:%d%%;text-align:center;font-weight:%s;font-size:%dpx'>%s</td>";
enum ButtonTitle {
@ -467,9 +465,9 @@ ESP8266WebServer *Webserver;
struct WEB {
String chunk_buffer = ""; // Could be max 2 * CHUNKED_BUFFER_SIZE
uint32_t upload_size = 0;
uint32_t slider_update_time = 0;
int slider[LST_MAX];
uint16_t upload_error = 0;
uint8_t slider_update[LST_MAX];
uint8_t state = HTTP_OFF;
uint8_t upload_file_type;
uint8_t config_block_count = 0;
@ -608,7 +606,6 @@ void StartWebserver(int type)
for (uint32_t i = 0; i < LST_MAX; i++) {
Web.slider[i] = -1;
Web.slider_update[i] = 0;
}
if (!Webserver) {
@ -1234,8 +1231,11 @@ void HandleRoot(void) {
#endif
WSContentSend_P(HTTP_SCRIPT_ROOT_PART2);
WSContentSendStyle();
WSContentSend_P(PSTR("<div style='padding:0;' id='l1' name='l1'></div>"));
#ifndef FIRMWARE_MINIMAL
if (TasmotaGlobal.devices_present) {
uint32_t buttons_non_light = TasmotaGlobal.devices_present;
uint32_t button_idx = 1;
@ -1252,8 +1252,7 @@ void HandleRoot(void) {
#ifdef USE_SHUTTER
// Chk for reduced toggle buttons used by shutters
uint32_t shutter_button = 0; // Bitmask for each button
uint32_t shutter_button = 0; // Bitmask for each button
// Find and skip dedicated shutter buttons
if (buttons_non_light && Settings->flag3.shutter_mode) { // SetOption80 - Enable shutter support
for (button_idx = 1; button_idx <= buttons_non_light; button_idx++) {
@ -1265,9 +1264,9 @@ void HandleRoot(void) {
}
#endif // USE_SHUTTER
if (buttons_non_light_non_shutter) { // Any non light AND non shutter button
if (buttons_non_light_non_shutter) { // Any non light AND non shutter button
// Display toggle buttons
WSContentSend_P(HTTP_TABLE100); // "<table style='width:100%%'>"
WSContentSend_P(HTTP_TABLE100); // "<table style='width:100%%'>"
WSContentSend_P(PSTR("<tr>"));
#ifdef USE_SONOFF_IFAN
@ -1517,7 +1516,6 @@ void HandleRoot(void) {
}
WSContentSend_P(PSTR("</script>"));
#ifndef FIRMWARE_MINIMAL
XdrvXsnsCall(FUNC_WEB_ADD_MAIN_BUTTON);
#endif // Not FIRMWARE_MINIMAL
@ -1558,6 +1556,8 @@ bool HandleRootStatusRefresh(void)
return false;
}
#ifndef FIRMWARE_MINIMAL
#ifdef USE_SCRIPT_WEB_DISPLAY
Script_Check_HTML_Setvars();
#endif
@ -1727,6 +1727,7 @@ bool HandleRootStatusRefresh(void)
uint16_t hue;
uint8_t sat;
int current_value = -1;
uint32_t slider_update_time = millis();
for (uint32_t i = 0; i < LST_MAX; i++) {
if (Web.slider[i] != -1) {
if (!Settings->flag3.pwm_multi_channels) { // SetOption68 0 - Enable multi-channels PWM instead of Color PWM
@ -1750,12 +1751,13 @@ bool HandleRootStatusRefresh(void)
current_value = changeUIntScale(Settings->light_color[i], 0, 255, 0, 100);
}
if (current_value != Web.slider[i]) {
Web.slider_update[i]++;
if (Web.slider_update[i] > 2) { // Allow two other users screen sync
Web.slider_update[i] = 0;
if (0 == Web.slider_update_time) {
Web.slider_update_time = slider_update_time + Settings->web_refresh; // Allow other users to sync screen
}
else if (slider_update_time > Web.slider_update_time) {
Web.slider_update_time = 1; // Allow multiple updates
Web.slider[i] = current_value;
}
// https://stackoverflow.com/questions/4057236/how-to-add-onload-event-to-a-div-element
if (!msg_exec_javascript) {
WSContentSend_P(HTTP_MSG_EXEC_JAVASCRIPT); // "<img style='display:none;' src onerror=\""
msg_exec_javascript = true;
@ -1764,6 +1766,9 @@ bool HandleRootStatusRefresh(void)
}
}
}
if (1 == Web.slider_update_time) {
Web.slider_update_time = 0;
}
#endif // USE_LIGHT
if (msg_exec_javascript) {
@ -1782,6 +1787,8 @@ bool HandleRootStatusRefresh(void)
WSContentSend_P(PSTR("\n\n")); // Prep for SSE
WSContentEnd();
#endif // not FIRMWARE_MINIMAL
return true;
}

View File

@ -1164,14 +1164,6 @@ void ShutterSettingsSave(void) {
}
}
void ShutterShow()
{
for (uint32_t i = 0; i < TasmotaGlobal.shutters_present; i++) {
WSContentSend_P(HTTP_MSG_SLIDER_SHUTTER, (ShutterGetOptions(i) & 1) ? D_OPEN : D_CLOSE,(ShutterGetOptions(i) & 1) ? D_CLOSE : D_OPEN, (ShutterGetOptions(i) & 1) ? (100 - ShutterRealToPercentPosition(-9999, i)) : ShutterRealToPercentPosition(-9999, i), i+1);
WSContentSeparator(3); // Don't print separator on next WSContentSeparator(1)
}
}
void ShutterStartInit(uint32_t i, int32_t direction, int32_t target_pos)
{
//AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: dir %d, delta1 %d, delta2 %d"),direction, (Shutter[i].open_max - Shutter[i].real_position) / Shutter[i].close_velocity, Shutter[i].real_position / Shutter[i].close_velocity);
@ -2394,11 +2386,6 @@ bool Xdrv27(uint32_t function)
result = false;
}
break;
#ifdef USE_WEBSERVER
case FUNC_WEB_SENSOR:
// ShutterShow();
break;
#endif // USE_WEBSERVER
case FUNC_ACTIVE:
result = true;
break;

View File

@ -1142,13 +1142,6 @@ void ShutterToggle(bool dir)
}
}
void ShutterShow(){
for (uint32_t i = 0; i < TasmotaGlobal.shutters_present; i++) {
WSContentSend_P(HTTP_MSG_SLIDER_SHUTTER, (Settings->shutter_options[i] & 1) ? D_OPEN : D_CLOSE,(Settings->shutter_options[i] & 1) ? D_CLOSE : D_OPEN, (Settings->shutter_options[i] & 1) ? (100 - ShutterRealToPercentPosition(-9999, i)) : ShutterRealToPercentPosition(-9999, i), i+1);
WSContentSeparator(3); // Don't print separator on next WSContentSeparator(1)
}
}
/*********************************************************************************************\
* Commands
\*********************************************************************************************/
@ -1976,11 +1969,6 @@ bool Xdrv27(uint32_t function)
result = true;
}
break;
#ifdef USE_WEBSERVER
case FUNC_WEB_SENSOR:
// ShutterShow();
break;
#endif // USE_WEBSERVER
case FUNC_ACTIVE:
result = true;
break;

View File

@ -292,6 +292,7 @@ struct DALI {
uint32_t bit_cycles;
uint32_t last_activity;
uint32_t received_dali_data; // Data received from DALI bus
uint32_t slider_update_time;
uint8_t pin_rx;
uint8_t pin_tx;
uint8_t max_short_address;
@ -300,7 +301,6 @@ struct DALI {
uint8_t last_dimmer;
uint8_t dimmer[DALI_MAX_STORED];
uint8_t web_dimmer[DALI_MAX_STORED];
uint8_t web_update[DALI_MAX_STORED];
uint8_t target;
bool allow_light;
bool last_power;
@ -1293,20 +1293,25 @@ void DaliShow(bool json) {
} else {
WSContentSend_P(PSTR("</table>")); // Terminate current {t}
WSContentSend_P(HTTP_MSG_EXEC_JAVASCRIPT); // "<img style='display:none;' src onerror=\""
uint32_t slider_update_time = millis();
for (uint32_t i = Settings->sbflag1.dali_light; i <= Settings->mbflag2.dali_group_sliders; i++) { // DaliLight 0/1, DaliGroupSliders
WSContentSend_P(PSTR("eb('k75%d').style='background:#%06x';"),
i, WebColor((Dali->power[i]) ? COL_BUTTON : COL_FORM));
if (Dali->dimmer[i] != Dali->web_dimmer[i]) {
Dali->web_update[i]++;
if (Dali->web_update[i] > 2) { // Allow two other users screen sync
Dali->web_update[i] = 0;
if (0 == Dali->slider_update_time) {
Dali->slider_update_time = slider_update_time + Settings->web_refresh; // Allow other users to sync screen
}
else if (slider_update_time > Dali->slider_update_time) {
Dali->slider_update_time = 1; // Allow multiple updates
Dali->web_dimmer[i] = Dali->dimmer[i];
}
WSContentSend_P(PSTR("eb('i75%d').value='%d';"),
i, changeUIntScale(Dali->dimmer[i], 0, 254, 0, 100));
}
}
if (1 == Dali->slider_update_time) {
Dali->slider_update_time = 0;
}
WSContentSend_P(PSTR("\">{t}")); // Restart {t} = <table style='width:100%'>
WSContentSeparator(3); // Don't print separator on next WSContentSeparator(1)
#endif // USE_WEBSERVER