From 1fb4e8bc2352631c3e8749e31149a4cd3314b511 Mon Sep 17 00:00:00 2001 From: dcandi Date: Wed, 19 Dec 2018 20:51:39 +0100 Subject: [PATCH] pressure unit of measure reporting Added a dedicated pressure sensor management to report back as pressure sensor and not fallback as a generic sensor in HA autodiscovery process --- sonoff/xdrv_12_home_assistant.ino | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/sonoff/xdrv_12_home_assistant.ino b/sonoff/xdrv_12_home_assistant.ino index ad9e71a4c..9a29f3562 100644 --- a/sonoff/xdrv_12_home_assistant.ino +++ b/sonoff/xdrv_12_home_assistant.ino @@ -89,6 +89,11 @@ const char HASS_DISCOVER_SENSOR_HUM[] PROGMEM = "\"value_template\":\"{{value_json['%s'].Humidity}}\"," // "SI7021-14":{"Temperature":null,"Humidity":null} -> {{ value_json['SI7021-14'].Humidity }} "\"device_class\":\"humidity\""; // temperature / humidity +const char HASS_DISCOVER_SENSOR_PRESS[] PROGMEM = + "%s,\"unit_of_measurement\":\"%s\"," // PressureUnit() setting + "\"value_template\":\"{{value_json['%s'].Pressure}}\"," // "BME280":{"Temperature":19.7,"Humidity":27.8,"Pressure":990.1} -> {{ value_json['BME280'].Pressure }} + "\"device_class\":\"pressure\""; // pressure + const char HASS_DISCOVER_SENSOR_ANY[] PROGMEM = "%s,\"value_template\":\"{{value_json['%s'].%s}}\""; // "COUNTER":{"C1":0} -> {{ value_json['COUNTER'].C1 }} @@ -167,6 +172,11 @@ const char HASS_DISCOVER_SENSOR_HUM_SHORT[] PROGMEM = "\"val_tpl\":\"{{value_json['%s'].Humidity}}\"," // "SI7021-14":{"Temperature":null,"Humidity":null} -> {{ value_json['SI7021-14'].Humidity }} "\"dev_cla\":\"humidity\""; // humidity +const char HASS_DISCOVER_SENSOR_PRESS_SHORT[] PROGMEM = + "%s,\"unit_of_meas\":\"%s\"," // PressureUnit() setting + "\"val_tpl\":\"{{value_json['%s'].Pressure}}\"," // "BME280":{"Temperature":19.7,"Humidity":27.8,"Pressure":990.1} -> {{ value_json['BME280'].Pressure }} + "\"dev_cla\":\"pressure\""; // pressure + const char HASS_DISCOVER_SENSOR_ANY_SHORT[] PROGMEM = "%s,\"val_tpl\":\"{{value_json['%s'].%s}}\""; // "COUNTER":{"C1":0} -> {{ value_json['COUNTER'].C1 }} @@ -464,7 +474,11 @@ void HAssAnnounceSensor(const char* sensorname, const char* subsensortype) } else if (!strcmp_P(subsensortype, PSTR(D_JSON_HUMIDITY))) { snprintf_P(mqtt_data, sizeof(mqtt_data), Settings.flag3.hass_short_discovery_msg?HASS_DISCOVER_SENSOR_HUM_SHORT:HASS_DISCOVER_SENSOR_HUM, mqtt_data, sensorname); - } else { + } 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 { snprintf_P(mqtt_data, sizeof(mqtt_data), Settings.flag3.hass_short_discovery_msg?HASS_DISCOVER_SENSOR_ANY_SHORT:HASS_DISCOVER_SENSOR_ANY, mqtt_data, sensorname, subsensortype); }