From db9b95bbe76b7810cd72022bf3c2f29279acf7e2 Mon Sep 17 00:00:00 2001 From: Barbudor Date: Sat, 16 Apr 2022 17:13:26 +0200 Subject: [PATCH] refactor adding units to sensor message --- tasmota/support_tasmota.ino | 23 ++++++++++++++--------- tasmota/xsns_62_esp32_mi_ble.ino | 8 ++------ 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/tasmota/support_tasmota.ino b/tasmota/support_tasmota.ino index 9af1b89f1..b0642a074 100644 --- a/tasmota/support_tasmota.ino +++ b/tasmota/support_tasmota.ino @@ -845,6 +845,19 @@ String GetSwitchText(uint32_t i) { return switch_text; } +void MqttAppendSensorUnits(void) +{ + if (ResponseContains_P(PSTR(D_JSON_PRESSURE))) { + ResponseAppend_P(PSTR(",\"" D_JSON_PRESSURE_UNIT "\":\"%s\""), PressureUnit().c_str()); + } + if (ResponseContains_P(PSTR(D_JSON_TEMPERATURE))) { + ResponseAppend_P(PSTR(",\"" D_JSON_TEMPERATURE_UNIT "\":\"%c\""), TempUnit()); + } + if (ResponseContains_P(PSTR(D_JSON_SPEED)) && Settings->flag2.speed_conversion) { + ResponseAppend_P(PSTR(",\"" D_JSON_SPEED_UNIT "\":\"%s\""), SpeedUnit().c_str()); + } +} + bool MqttShowSensor(bool call_show_sensor) { ResponseAppendTime(); @@ -893,15 +906,7 @@ bool MqttShowSensor(bool call_show_sensor) } bool json_data_available = (ResponseLength() - json_data_start); - if (ResponseContains_P(PSTR(D_JSON_PRESSURE))) { - ResponseAppend_P(PSTR(",\"" D_JSON_PRESSURE_UNIT "\":\"%s\""), PressureUnit().c_str()); - } - if (ResponseContains_P(PSTR(D_JSON_TEMPERATURE))) { - ResponseAppend_P(PSTR(",\"" D_JSON_TEMPERATURE_UNIT "\":\"%c\""), TempUnit()); - } - if (ResponseContains_P(PSTR(D_JSON_SPEED)) && Settings->flag2.speed_conversion) { - ResponseAppend_P(PSTR(",\"" D_JSON_SPEED_UNIT "\":\"%s\""), SpeedUnit().c_str()); - } + MqttAppendSensorUnits(); ResponseJsonEnd(); if (call_show_sensor && json_data_available) { XdrvCall(FUNC_SHOW_SENSOR); } diff --git a/tasmota/xsns_62_esp32_mi_ble.ino b/tasmota/xsns_62_esp32_mi_ble.ino index 9db9617e7..478b07e8b 100644 --- a/tasmota/xsns_62_esp32_mi_ble.ino +++ b/tasmota/xsns_62_esp32_mi_ble.ino @@ -2883,9 +2883,7 @@ void MI32ShowSomeSensors(){ } cnt++; } - if (ResponseContains_P(PSTR(D_JSON_TEMPERATURE))) { - ResponseAppend_P(PSTR(",\"" D_JSON_TEMPERATURE_UNIT "\":\"%c\""), TempUnit()); - } + MqttAppendSensorUnits(); ResponseAppend_P(PSTR("}")); //AddLog(LOG_LEVEL_DEBUG,PSTR("M32: %s: show some %d %s"),D_CMND_MI32, MI32.mqttCurrentSlot, ResponseData()); MqttPublishPrefixTopicRulesProcess_P(TELE, PSTR(D_RSLT_SENSOR), Settings->flag.mqtt_sensor_retain); @@ -3274,9 +3272,7 @@ void MI32ShowTriggeredSensors(){ } } if (cnt){ // if we got one, then publish - if (ResponseContains_P(PSTR(D_JSON_TEMPERATURE))) { - ResponseAppend_P(PSTR(",\"" D_JSON_TEMPERATURE_UNIT "\":\"%c\""), TempUnit()); - } + MqttAppendSensorUnits(); ResponseAppend_P(PSTR("}")); if( #ifdef USE_HOME_ASSISTANT