From 04ccde8aa98f85b4746c4c051fcdd5d00dc03da0 Mon Sep 17 00:00:00 2001
From: Theo Arends <11044339+arendst@users.noreply.github.com>
Date: Tue, 12 Apr 2022 11:53:36 +0200
Subject: [PATCH] Align Sonoff SPM GUI with other energy GUI
- Align Sonoff SPM GUI with other energy GUI
- Change GUI Power text to Active Power
---
tasmota/i18n.h | 2 +-
tasmota/xdrv_86_esp32_sonoff_spm.ino | 66 +++++++++++++++-------------
2 files changed, 36 insertions(+), 32 deletions(-)
diff --git a/tasmota/i18n.h b/tasmota/i18n.h
index 43cdcbd49..47bcce2ae 100644
--- a/tasmota/i18n.h
+++ b/tasmota/i18n.h
@@ -870,7 +870,7 @@ const char HTTP_SNS_DISTANCE_CM[] PROGMEM = "{s}%s " D_DISTANCE "{
const char HTTP_SNS_HALL_EFFECT[] PROGMEM = "{s}%s " D_HALL_EFFECT "{m}%d" "{e}";
const char HTTP_SNS_VOLTAGE[] PROGMEM = "{s}" D_VOLTAGE "{m}%s " D_UNIT_VOLT "{e}";
const char HTTP_SNS_CURRENT[] PROGMEM = "{s}" D_CURRENT "{m}%s " D_UNIT_AMPERE "{e}";
-const char HTTP_SNS_POWER[] PROGMEM = "{s}" D_POWERUSAGE "{m}%s " D_UNIT_WATT "{e}";
+const char HTTP_SNS_POWER[] PROGMEM = "{s}" D_POWERUSAGE_ACTIVE "{m}%s " D_UNIT_WATT "{e}";
const char HTTP_SNS_ENERGY_TOTAL[] PROGMEM = "{s}" D_ENERGY_TOTAL "{m}%s " D_UNIT_KILOWATTHOUR "{e}";
const char HTTP_SNS_PH[] PROGMEM = "{s}%s " D_PH "{m}%s " "{e}";
const char HTTP_SNS_MQ[] PROGMEM = "{s}" D_MQ"-%s" "{m}%s " D_UNIT_PARTS_PER_MILLION "{e}";
diff --git a/tasmota/xdrv_86_esp32_sonoff_spm.ino b/tasmota/xdrv_86_esp32_sonoff_spm.ino
index 9538c71ac..709a8d825 100644
--- a/tasmota/xdrv_86_esp32_sonoff_spm.ino
+++ b/tasmota/xdrv_86_esp32_sonoff_spm.ino
@@ -1891,32 +1891,31 @@ bool SSPMButton(void) {
/*********************************************************************************************/
-const uint16_t SSPM_SIZE = 128;
+const uint16_t SSPM_SIZE = 300;
char* SSPMEnergyFormat(char* result, float* input, uint32_t resolution, uint8_t* indirect, uint8_t offset, uint32_t count) {
- result[0] = '\0';
+ ext_snprintf_P(result, SSPM_SIZE, PSTR("")); // Skip first column
+ //
1.23 | |
+ // | 1.23 | | 1.23 | |
+ // | 1.23 | | 1.23 | | 1.23 | |
+ // | 1.23 | | 1.23 | | 1.23 | | 1.23 | |
for (uint32_t i = 0; i < count; i++) {
- ext_snprintf_P(result, SSPM_SIZE, PSTR("%s | %*_f | "), result, resolution, &input[indirect[offset +i]]);
+ ext_snprintf_P(result, SSPM_SIZE, PSTR("%s%*_f | | "),
+ result, (Settings->flag5.gui_table_align)?PSTR("right"):PSTR("left"), resolution, &input[indirect[offset +i]]);
}
- ext_snprintf_P(result, SSPM_SIZE, PSTR("%s"), result);
+ ext_snprintf_P(result, SSPM_SIZE, PSTR("%s | "), result);
return result;
}
#ifdef USE_WEBSERVER
-const char HTTP_SSPM_VOLTAGE[] PROGMEM =
- "{s}" D_VOLTAGE "%s" D_UNIT_VOLT "{e}"; // {s} = | , {m} = | , {e} = |
-const char HTTP_SSPM_CURRENT[] PROGMEM =
- "{s}" D_CURRENT "%s" D_UNIT_AMPERE "{e}";
-const char HTTP_SSPM_POWER[] PROGMEM =
- "{s}" D_POWERUSAGE_ACTIVE "%s" D_UNIT_WATT "{e}";
const char HTTP_SSPM_POWER2[] PROGMEM =
- "{s}" D_POWERUSAGE_APPARENT "%s" D_UNIT_VA "{e}"
- "{s}" D_POWERUSAGE_REACTIVE "%s" D_UNIT_VAR "{e}"
- "{s}" D_POWER_FACTOR "%s{e}";
+ "{s}" D_POWERUSAGE_APPARENT "{m}%s" D_UNIT_VA "{e}" // {s} = , {m} = | , {e} = |
+ "{s}" D_POWERUSAGE_REACTIVE "{m}%s" D_UNIT_VAR "{e}"
+ "{s}" D_POWER_FACTOR "{m}%s{e}";
const char HTTP_SSPM_ENERGY[] PROGMEM =
- "{s}" D_ENERGY_TODAY "%s" D_UNIT_KILOWATTHOUR "{e}"
- "{s}" D_ENERGY_YESTERDAY "%s" D_UNIT_KILOWATTHOUR "{e}"
- "{s}" D_ENERGY_TOTAL "%s" D_UNIT_KILOWATTHOUR "{e}";
+ "{s}" D_ENERGY_TODAY "{m}%s" D_UNIT_KILOWATTHOUR "{e}"
+ "{s}" D_ENERGY_YESTERDAY "{m}%s" D_UNIT_KILOWATTHOUR "{e}"
+ "{s}" D_ENERGY_TOTAL "{m}%s" D_UNIT_KILOWATTHOUR "{e}";
#endif // USE_WEBSERVER
void SSPMEnergyShow(bool json) {
@@ -1992,24 +1991,29 @@ void SSPMEnergyShow(bool json) {
uint32_t offset = (Sspm->rotate >> 2) * 4;
uint32_t count = index - offset;
if (count > 4) { count = 4; }
- WSContentSend_P(PSTR("{t}{s}")); // First column is empty ({t} = , {s} = )
- for (uint32_t i = 0; i < count; i++) {
- WSContentSend_P(PSTR(" | L%d"), relay[offset +i]);
- }
- WSContentSend_P(PSTR(" | {e}")); // Last column is units ({e} = |
)
+ // {s} | Head1 | | {e}
+ // {s} | | Head1 | | Head2 | | {e}
+ // {s} | | Head1 | | Head2 | | Head3 | | {e}
+ // {s} | | Head1 | | Head2 | | Head3 | | Head4 | | {e}
char value_chr[SSPM_SIZE];
- WSContentSend_PD(HTTP_SSPM_VOLTAGE, SSPMEnergyFormat(value_chr, Sspm->voltage[0], Settings->flag2.voltage_resolution, indirect, offset, count));
- WSContentSend_PD(HTTP_SSPM_CURRENT, SSPMEnergyFormat(value_chr, Sspm->current[0], Settings->flag2.current_resolution, indirect, offset, count));
- WSContentSend_PD(HTTP_SSPM_POWER, SSPMEnergyFormat(value_chr, Sspm->active_power[0], Settings->flag2.wattage_resolution, indirect, offset, count));
+ WSContentSend_P(PSTR(" |
{t}{s} | ")); // First column is empty ({t} = , {s} = )
+ bool no_label = false;
+ for (uint32_t i = 0; i < count; i++) {
+ WSContentSend_P(PSTR(" | %s%s | | "), (no_label)?"":"L", (no_label)?"":itoa(relay[offset +i], value_chr, 10));
+ }
+ WSContentSend_P(PSTR("{e}")); // Last column is units ({e} = |
)
+ WSContentSend_PD(HTTP_SNS_VOLTAGE, SSPMEnergyFormat(value_chr, Sspm->voltage[0], Settings->flag2.voltage_resolution, indirect, offset, count));
+ WSContentSend_PD(HTTP_SNS_CURRENT, SSPMEnergyFormat(value_chr, Sspm->current[0], Settings->flag2.current_resolution, indirect, offset, count));
+ WSContentSend_PD(HTTP_SNS_POWER, SSPMEnergyFormat(value_chr, Sspm->active_power[0], Settings->flag2.wattage_resolution, indirect, offset, count));
char valu2_chr[SSPM_SIZE];
char valu3_chr[SSPM_SIZE];
- WSContentSend_PD(HTTP_SSPM_POWER2, SSPMEnergyFormat(value_chr, Sspm->apparent_power[0], Settings->flag2.wattage_resolution, indirect, offset, count),
- SSPMEnergyFormat(valu2_chr, Sspm->reactive_power[0], Settings->flag2.wattage_resolution, indirect, offset, count),
- SSPMEnergyFormat(valu3_chr, Sspm->power_factor[0], 2, indirect, offset, count));
- WSContentSend_PD(HTTP_SSPM_ENERGY, SSPMEnergyFormat(value_chr, Sspm->energy_today[0], Settings->flag2.energy_resolution, indirect, offset, count),
- SSPMEnergyFormat(valu2_chr, Sspm->Settings.energy_yesterday[0], Settings->flag2.energy_resolution, indirect, offset, count),
- SSPMEnergyFormat(valu3_chr, Sspm->energy_total[0], Settings->flag2.energy_resolution, indirect, offset, count));
- WSContentSend_P(PSTR("
{t}")); // {t} = - Define for next FUNC_WEB_SENSOR
+ WSContentSend_PD(HTTP_SSPM_POWER2, SSPMEnergyFormat(value_chr, Sspm->apparent_power[0], Settings->flag2.wattage_resolution, indirect, offset, count),
+ SSPMEnergyFormat(valu2_chr, Sspm->reactive_power[0], Settings->flag2.wattage_resolution, indirect, offset, count),
+ SSPMEnergyFormat(valu3_chr, Sspm->power_factor[0], 2, indirect, offset, count));
+ WSContentSend_PD(HTTP_SSPM_ENERGY, SSPMEnergyFormat(value_chr, Sspm->energy_today[0], Settings->flag2.energy_resolution, indirect, offset, count),
+ SSPMEnergyFormat(valu2_chr, Sspm->Settings.energy_yesterday[0], Settings->flag2.energy_resolution, indirect, offset, count),
+ SSPMEnergyFormat(valu3_chr, Sspm->energy_total[0], Settings->flag2.energy_resolution, indirect, offset, count));
+ WSContentSend_P(PSTR("
{t}")); // {t} = - Define for next FUNC_WEB_SENSOR
}
#endif // USE_WEBSERVER
}