From 722de4b4a8d0b9ce3adb0102711a8e4db159be0d Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Wed, 28 Oct 2020 21:40:58 +0100 Subject: [PATCH] Zigbee fix UI --- tasmota/xdrv_23_zigbee_A_impl.ino | 66 ++++++++++++++++++------------- 1 file changed, 39 insertions(+), 27 deletions(-) diff --git a/tasmota/xdrv_23_zigbee_A_impl.ino b/tasmota/xdrv_23_zigbee_A_impl.ino index f37e67645..f96679c75 100644 --- a/tasmota/xdrv_23_zigbee_A_impl.ino +++ b/tasmota/xdrv_23_zigbee_A_impl.ino @@ -1731,28 +1731,36 @@ void ZigbeeShow(bool json) const Z_Data_Thermo & thermo = device.data.find(); if (&thermo != nullptr) { - WSContentSend_P(PSTR("┆")); - if (thermo.validTemperature()) { - char buf[12]; - dtostrf(thermo.getTemperature() / 100.0f, 3, 1, buf); - WSContentSend_PD(PSTR(" ☀️ %s°C"), buf); - } - if (thermo.validTempTarget()) { - char buf[12]; - dtostrf(thermo.getTempTarget() / 100.0f, 3, 1, buf); - WSContentSend_PD(PSTR(" 🎯 %s°C"), buf); - } - if (thermo.validThSetpoint()) { - WSContentSend_PD(PSTR(" ⚙️ %d%%"), thermo.getThSetpoint()); - } - if (thermo.validHumidity()) { - WSContentSend_P(PSTR(" 💧 %d%%"), (uint16_t)(thermo.getHumidity() / 100.0f + 0.5f)); - } - if (thermo.validPressure()) { - WSContentSend_P(PSTR(" ⛅ %d hPa"), thermo.getPressure()); - } + bool validTemp = thermo.validTemperature(); + bool validTempTarget = thermo.validTempTarget(); + bool validThSetpoint = thermo.validThSetpoint(); + bool validHumidity = thermo.validHumidity(); + bool validPressure = thermo.validPressure(); - WSContentSend_P(PSTR("{e}")); + if (validTemp || validTempTarget || validThSetpoint || validHumidity || validPressure) { + WSContentSend_P(PSTR("┆")); + if (validTemp) { + char buf[12]; + dtostrf(thermo.getTemperature() / 100.0f, 3, 1, buf); + WSContentSend_PD(PSTR(" ☀️ %s°C"), buf); + } + if (validTempTarget) { + char buf[12]; + dtostrf(thermo.getTempTarget() / 100.0f, 3, 1, buf); + WSContentSend_PD(PSTR(" 🎯 %s°C"), buf); + } + if (validThSetpoint) { + WSContentSend_PD(PSTR(" ⚙️ %d%%"), thermo.getThSetpoint()); + } + if (validHumidity) { + WSContentSend_P(PSTR(" 💧 %d%%"), (uint16_t)(thermo.getHumidity() / 100.0f + 0.5f)); + } + if (validPressure) { + WSContentSend_P(PSTR(" ⛅ %d hPa"), thermo.getPressure()); + } + + WSContentSend_P(PSTR("{e}")); + } } // Light, switches and plugs @@ -1787,12 +1795,16 @@ void ZigbeeShow(bool json) } } if (&plug != nullptr) { - WSContentSend_P(PSTR(" ⚡ ")); - if (plug.validMainsVoltage()) { - WSContentSend_P(PSTR(" %dV"), plug.getMainsVoltage()); - } - if (plug.validMainsPower()) { - WSContentSend_P(PSTR(" %dW"), plug.getMainsPower()); + bool validMainsVoltage = plug.validMainsVoltage(); + bool validMainsPower = plug.validMainsPower(); + if (validMainsVoltage || validMainsPower) { + WSContentSend_P(PSTR(" ⚡ ")); + if (validMainsVoltage) { + WSContentSend_P(PSTR(" %dV"), plug.getMainsVoltage()); + } + if (validMainsPower) { + WSContentSend_P(PSTR(" %dW"), plug.getMainsPower()); + } } } WSContentSend_P(PSTR("{e}"));