From c1e098403cea54482c7e0eb84ae7161aa83960dc Mon Sep 17 00:00:00 2001 From: reey <23506385+reey@users.noreply.github.com> Date: Thu, 20 Dec 2018 23:06:56 +0100 Subject: [PATCH 1/3] add missing units of measurements for energy --- sonoff/xdrv_12_home_assistant.ino | 46 +++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/sonoff/xdrv_12_home_assistant.ino b/sonoff/xdrv_12_home_assistant.ino index 9a29f3562..c12d86e4f 100644 --- a/sonoff/xdrv_12_home_assistant.ino +++ b/sonoff/xdrv_12_home_assistant.ino @@ -94,6 +94,23 @@ const char HASS_DISCOVER_SENSOR_PRESS[] PROGMEM = "\"value_template\":\"{{value_json['%s'].Pressure}}\"," // "BME280":{"Temperature":19.7,"Humidity":27.8,"Pressure":990.1} -> {{ value_json['BME280'].Pressure }} "\"device_class\":\"pressure\""; // pressure +//ENERGY +const char HASS_DISCOVER_SENSOR_KWH[] PROGMEM = + "%s,\"unit_of_measurement\":\"°%kWh\"," // kWh + "\"value_template\":\"{{value_json['%s'].%s}}\""; // "ENERGY":{"TotalStartTime":null,"Total":null,"Yesterday":null,"Today":null,"Power":null,"ApparentPower":null,"ReactivePower":null,"Factor":null,"Voltage":null,"Current":null} -> {{ value_json['ENERGY'].Total/Yesterday/Today }} + +const char HASS_DISCOVER_SENSOR_WATT[] PROGMEM = + "%s,\"unit_of_measurement\":\"°%W\"," // W + "\"value_template\":\"{{value_json['%s'].%s}}\""; // "ENERGY":{"TotalStartTime":null,"Total":null,"Yesterday":null,"Today":null,"Power":null,"ApparentPower":null,"ReactivePower":null,"Factor":null,"Voltage":null,"Current":null} -> {{ value_json['ENERGY'].POWER }} + +const char HASS_DISCOVER_SENSOR_VOLTAGE[] PROGMEM = + "%s,\"unit_of_measurement\":\"°%V\"," // V + "\"value_template\":\"{{value_json['%s'].%s}}\""; // "ENERGY":{"TotalStartTime":null,"Total":null,"Yesterday":null,"Today":null,"Power":null,"ApparentPower":null,"ReactivePower":null,"Factor":null,"Voltage":null,"Current":null} -> {{ value_json['ENERGY'].Voltage }} + +const char HASS_DISCOVER_SENSOR_AMPERE[] PROGMEM = + "%s,\"unit_of_measurement\":\"°%A\"," // A + "\"value_template\":\"{{value_json['%s'].%s}}\""; // "ENERGY":{"TotalStartTime":null,"Total":null,"Yesterday":null,"Today":null,"Power":null,"ApparentPower":null,"ReactivePower":null,"Factor":null,"Voltage":null,"Current":null} -> {{ value_json['ENERGY'].Current }} + const char HASS_DISCOVER_SENSOR_ANY[] PROGMEM = "%s,\"value_template\":\"{{value_json['%s'].%s}}\""; // "COUNTER":{"C1":0} -> {{ value_json['COUNTER'].C1 }} @@ -177,6 +194,23 @@ const char HASS_DISCOVER_SENSOR_PRESS_SHORT[] PROGMEM = "\"val_tpl\":\"{{value_json['%s'].Pressure}}\"," // "BME280":{"Temperature":19.7,"Humidity":27.8,"Pressure":990.1} -> {{ value_json['BME280'].Pressure }} "\"dev_cla\":\"pressure\""; // pressure +//ENERGY +const char HASS_DISCOVER_SENSOR_KWH_SHORT[] PROGMEM = + "%s,\"unit_of_meas\":\"°%kWh\"," // kWh + "\"val_tpl\":\"{{value_json['%s'].%s}}\""; // "ENERGY":{"TotalStartTime":null,"Total":null,"Yesterday":null,"Today":null,"Power":null,"ApparentPower":null,"ReactivePower":null,"Factor":null,"Voltage":null,"Current":null} -> {{ value_json['ENERGY'].Total/Yesterday/Today }} + +const char HASS_DISCOVER_SENSOR_WATT_SHORT[] PROGMEM = + "%s,\"unit_of_meas\":\"°%W\"," // W + "\"val_tpl\":\"{{value_json['%s'].%s}}\""; // "ENERGY":{"TotalStartTime":null,"Total":null,"Yesterday":null,"Today":null,"Power":null,"ApparentPower":null,"ReactivePower":null,"Factor":null,"Voltage":null,"Current":null} -> {{ value_json['ENERGY'].POWER }} + +const char HASS_DISCOVER_SENSOR_VOLTAGE_SHORT[] PROGMEM = + "%s,\"unit_of_meas\":\"°%V\"," // V + "\"val_tpl\":\"{{value_json['%s'].%s}}\""; // "ENERGY":{"TotalStartTime":null,"Total":null,"Yesterday":null,"Today":null,"Power":null,"ApparentPower":null,"ReactivePower":null,"Factor":null,"Voltage":null,"Current":null} -> {{ value_json['ENERGY'].Voltage }} + +const char HASS_DISCOVER_SENSOR_AMPERE_SHORT[] PROGMEM = + "%s,\"unit_of_meas\":\"°%A\"," // A + "\"val_tpl\":\"{{value_json['%s'].%s}}\""; // "ENERGY":{"TotalStartTime":null,"Total":null,"Yesterday":null,"Today":null,"Power":null,"ApparentPower":null,"ReactivePower":null,"Factor":null,"Voltage":null,"Current":null} -> {{ value_json['ENERGY'].Current }} + const char HASS_DISCOVER_SENSOR_ANY_SHORT[] PROGMEM = "%s,\"val_tpl\":\"{{value_json['%s'].%s}}\""; // "COUNTER":{"C1":0} -> {{ value_json['COUNTER'].C1 }} @@ -477,6 +511,18 @@ void HAssAnnounceSensor(const char* sensorname, const char* subsensortype) } else if (!strcmp_P(subsensortype, PSTR(D_JSON_PRESSURE))) { snprintf_P(mqtt_data, sizeof(mqtt_data), Settings.flag3.hass_short_discovery_msg?HASS_DISCOVER_SENSOR_PRESS_SHORT:HASS_DISCOVER_SENSOR_PRESS, mqtt_data, PressureUnit().c_str(), sensorname); + } else if (!strcmp_P(subsensortype, PSTR(D_JSON_TOTAL)) || !strcmp_P(subsensortype, PSTR(D_JSON_TODAY)) || !strcmp_P(subsensortype, PSTR(D_JSON_YESTERDAY))){ + snprintf_P(mqtt_data, sizeof(mqtt_data), Settings.flag3.hass_short_discovery_msg?HASS_DISCOVER_SENSOR_KWH_SHORT:HASS_DISCOVER_SENSOR_KWH, + mqtt_data, sensorname, subsensortype); + } else if (!strcmp_P(subsensortype, PSTR(D_JSON_POWERUSAGE))){ + snprintf_P(mqtt_data, sizeof(mqtt_data), Settings.flag3.hass_short_discovery_msg?HASS_DISCOVER_SENSOR_WATT_SHORT:HASS_DISCOVER_SENSOR_WATT, + mqtt_data, sensorname, subsensortype); + } else if (!strcmp_P(subsensortype, PSTR(D_JSON_VOLTAGE))){ + snprintf_P(mqtt_data, sizeof(mqtt_data), Settings.flag3.hass_short_discovery_msg?HASS_DISCOVER_SENSOR_VOLTAGE_SHORT:HASS_DISCOVER_SENSOR_VOLTAGE, + mqtt_data, sensorname, subsensortype); + } else if (!strcmp_P(subsensortype, PSTR(D_JSON_CURRENT))){ + snprintf_P(mqtt_data, sizeof(mqtt_data), Settings.flag3.hass_short_discovery_msg?HASS_DISCOVER_SENSOR_AMPERE_SHORT:HASS_DISCOVER_SENSOR_AMPERE, + mqtt_data, sensorname, subsensortype); } else { snprintf_P(mqtt_data, sizeof(mqtt_data), Settings.flag3.hass_short_discovery_msg?HASS_DISCOVER_SENSOR_ANY_SHORT:HASS_DISCOVER_SENSOR_ANY, From 6c158434ee2e4b31eb15e790042afa4e06465772 Mon Sep 17 00:00:00 2001 From: reey <23506385+reey@users.noreply.github.com> Date: Thu, 20 Dec 2018 23:27:05 +0100 Subject: [PATCH 2/3] removed some errors from copy pasting.. --- sonoff/xdrv_12_home_assistant.ino | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/sonoff/xdrv_12_home_assistant.ino b/sonoff/xdrv_12_home_assistant.ino index c12d86e4f..5902928c8 100644 --- a/sonoff/xdrv_12_home_assistant.ino +++ b/sonoff/xdrv_12_home_assistant.ino @@ -96,19 +96,19 @@ const char HASS_DISCOVER_SENSOR_PRESS[] PROGMEM = //ENERGY const char HASS_DISCOVER_SENSOR_KWH[] PROGMEM = - "%s,\"unit_of_measurement\":\"°%kWh\"," // kWh + "%s,\"unit_of_measurement\":\"kWh\"," // kWh "\"value_template\":\"{{value_json['%s'].%s}}\""; // "ENERGY":{"TotalStartTime":null,"Total":null,"Yesterday":null,"Today":null,"Power":null,"ApparentPower":null,"ReactivePower":null,"Factor":null,"Voltage":null,"Current":null} -> {{ value_json['ENERGY'].Total/Yesterday/Today }} const char HASS_DISCOVER_SENSOR_WATT[] PROGMEM = - "%s,\"unit_of_measurement\":\"°%W\"," // W + "%s,\"unit_of_measurement\":\"W\"," // W "\"value_template\":\"{{value_json['%s'].%s}}\""; // "ENERGY":{"TotalStartTime":null,"Total":null,"Yesterday":null,"Today":null,"Power":null,"ApparentPower":null,"ReactivePower":null,"Factor":null,"Voltage":null,"Current":null} -> {{ value_json['ENERGY'].POWER }} const char HASS_DISCOVER_SENSOR_VOLTAGE[] PROGMEM = - "%s,\"unit_of_measurement\":\"°%V\"," // V + "%s,\"unit_of_measurement\":\"V\"," // V "\"value_template\":\"{{value_json['%s'].%s}}\""; // "ENERGY":{"TotalStartTime":null,"Total":null,"Yesterday":null,"Today":null,"Power":null,"ApparentPower":null,"ReactivePower":null,"Factor":null,"Voltage":null,"Current":null} -> {{ value_json['ENERGY'].Voltage }} const char HASS_DISCOVER_SENSOR_AMPERE[] PROGMEM = - "%s,\"unit_of_measurement\":\"°%A\"," // A + "%s,\"unit_of_measurement\":\"A\"," // A "\"value_template\":\"{{value_json['%s'].%s}}\""; // "ENERGY":{"TotalStartTime":null,"Total":null,"Yesterday":null,"Today":null,"Power":null,"ApparentPower":null,"ReactivePower":null,"Factor":null,"Voltage":null,"Current":null} -> {{ value_json['ENERGY'].Current }} const char HASS_DISCOVER_SENSOR_ANY[] PROGMEM = @@ -196,19 +196,19 @@ const char HASS_DISCOVER_SENSOR_PRESS_SHORT[] PROGMEM = //ENERGY const char HASS_DISCOVER_SENSOR_KWH_SHORT[] PROGMEM = - "%s,\"unit_of_meas\":\"°%kWh\"," // kWh + "%s,\"unit_of_meas\":\"kWh\"," // kWh "\"val_tpl\":\"{{value_json['%s'].%s}}\""; // "ENERGY":{"TotalStartTime":null,"Total":null,"Yesterday":null,"Today":null,"Power":null,"ApparentPower":null,"ReactivePower":null,"Factor":null,"Voltage":null,"Current":null} -> {{ value_json['ENERGY'].Total/Yesterday/Today }} const char HASS_DISCOVER_SENSOR_WATT_SHORT[] PROGMEM = - "%s,\"unit_of_meas\":\"°%W\"," // W + "%s,\"unit_of_meas\":\"W\"," // W "\"val_tpl\":\"{{value_json['%s'].%s}}\""; // "ENERGY":{"TotalStartTime":null,"Total":null,"Yesterday":null,"Today":null,"Power":null,"ApparentPower":null,"ReactivePower":null,"Factor":null,"Voltage":null,"Current":null} -> {{ value_json['ENERGY'].POWER }} const char HASS_DISCOVER_SENSOR_VOLTAGE_SHORT[] PROGMEM = - "%s,\"unit_of_meas\":\"°%V\"," // V + "%s,\"unit_of_meas\":\"V\"," // V "\"val_tpl\":\"{{value_json['%s'].%s}}\""; // "ENERGY":{"TotalStartTime":null,"Total":null,"Yesterday":null,"Today":null,"Power":null,"ApparentPower":null,"ReactivePower":null,"Factor":null,"Voltage":null,"Current":null} -> {{ value_json['ENERGY'].Voltage }} const char HASS_DISCOVER_SENSOR_AMPERE_SHORT[] PROGMEM = - "%s,\"unit_of_meas\":\"°%A\"," // A + "%s,\"unit_of_meas\":\"A\"," // A "\"val_tpl\":\"{{value_json['%s'].%s}}\""; // "ENERGY":{"TotalStartTime":null,"Total":null,"Yesterday":null,"Today":null,"Power":null,"ApparentPower":null,"ReactivePower":null,"Factor":null,"Voltage":null,"Current":null} -> {{ value_json['ENERGY'].Current }} const char HASS_DISCOVER_SENSOR_ANY_SHORT[] PROGMEM = From ebd12235c4f77b497fa46935139ce3d9aaf1047e Mon Sep 17 00:00:00 2001 From: reey <23506385+reey@users.noreply.github.com> Date: Fri, 21 Dec 2018 10:38:44 +0100 Subject: [PATCH 3/3] add empty unit of measurement for any sensors --- sonoff/xdrv_12_home_assistant.ino | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sonoff/xdrv_12_home_assistant.ino b/sonoff/xdrv_12_home_assistant.ino index 5902928c8..01c5eb60c 100644 --- a/sonoff/xdrv_12_home_assistant.ino +++ b/sonoff/xdrv_12_home_assistant.ino @@ -112,7 +112,8 @@ const char HASS_DISCOVER_SENSOR_AMPERE[] PROGMEM = "\"value_template\":\"{{value_json['%s'].%s}}\""; // "ENERGY":{"TotalStartTime":null,"Total":null,"Yesterday":null,"Today":null,"Power":null,"ApparentPower":null,"ReactivePower":null,"Factor":null,"Voltage":null,"Current":null} -> {{ value_json['ENERGY'].Current }} const char HASS_DISCOVER_SENSOR_ANY[] PROGMEM = - "%s,\"value_template\":\"{{value_json['%s'].%s}}\""; // "COUNTER":{"C1":0} -> {{ value_json['COUNTER'].C1 }} + "%s,\"unit_of_measurement\":\" \"," // " " As unit of measurement to get a value graph in Hass + "\"value_template\":\"{{value_json['%s'].%s}}\""; // "COUNTER":{"C1":0} -> {{ value_json['COUNTER'].C1 }} const char HASS_DISCOVER_RELAY_SHORT[] PROGMEM = "{\"name\":\"%s\"," // dualr2 1 @@ -212,7 +213,8 @@ const char HASS_DISCOVER_SENSOR_AMPERE_SHORT[] PROGMEM = "\"val_tpl\":\"{{value_json['%s'].%s}}\""; // "ENERGY":{"TotalStartTime":null,"Total":null,"Yesterday":null,"Today":null,"Power":null,"ApparentPower":null,"ReactivePower":null,"Factor":null,"Voltage":null,"Current":null} -> {{ value_json['ENERGY'].Current }} const char HASS_DISCOVER_SENSOR_ANY_SHORT[] PROGMEM = - "%s,\"val_tpl\":\"{{value_json['%s'].%s}}\""; // "COUNTER":{"C1":0} -> {{ value_json['COUNTER'].C1 }} + "%s,\"unit_of_meas\":\" \"," // " " As unit of measurement to get a value graph in Hass + "\"val_tpl\":\"{{value_json['%s'].%s}}\""; // "COUNTER":{"C1":0} -> {{ value_json['COUNTER'].C1 }} const char HASS_DISCOVER_DEVICE_INFO_SHORT[] PROGMEM = "%s,\"uniq_id\":\"%s\","