From 76a74cc4278d6e0f74d68f139a904ed2c9d4b0aa Mon Sep 17 00:00:00 2001 From: Theo Arends Date: Thu, 8 Mar 2018 17:53:02 +0100 Subject: [PATCH] v5.12.0d - Add Mqtt discovery suffix and precision 5.12.0d * Add always suffix with device number in Mqtt discovery topic (#1962) * Add single decimal precision to Nova Fitness SDS0x1 sensor values (#2093) --- sonoff/_releasenotes.ino | 2 ++ sonoff/xdrv_07_home_assistant.ino | 4 ++-- sonoff/xsns_20_novasds.ino | 14 ++++++++++---- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/sonoff/_releasenotes.ino b/sonoff/_releasenotes.ino index 721498160..86ef2e694 100644 --- a/sonoff/_releasenotes.ino +++ b/sonoff/_releasenotes.ino @@ -2,11 +2,13 @@ * Add support for optional MQTT drivers to be selected in user_config.h (#1992) * Add Portuguese language file * Add compiler check for stable lwIP version v1.4 (#1940) + * Add always suffix with device number in Mqtt discovery topic (#1962) * Add diacritics to Polish language file (#2005) * Add Hungarian language file (#2024) * Add Czech language file * Add Chinese (Traditional) in Taiwan language file (#2108) * Add support for Nova Fitness SDS011 and possibly SDS021 particle concentration sensor (#2070) + * Add single decimal precision to Nova Fitness SDS0x1 sensor values (#2093) * Fix MQTT TLS fingerprint validation (#2033) * * 5.12.0c diff --git a/sonoff/xdrv_07_home_assistant.ino b/sonoff/xdrv_07_home_assistant.ino index d377fe535..84a218bd9 100644 --- a/sonoff/xdrv_07_home_assistant.ino +++ b/sonoff/xdrv_07_home_assistant.ino @@ -93,9 +93,9 @@ void HAssDiscovery() snprintf_P(sidx, sizeof(sidx), PSTR("_%d"), i); // Clear "other" topic first in case the device has been reconfigured - snprintf_P(stopic, sizeof(stopic), PSTR(HOME_ASSISTANT_DISCOVERY_PREFIX "/%s/%s%s/config"), (is_light) ? "switch" : "light", mqtt_topic, (1 == devices_present) ? "" : sidx); + snprintf_P(stopic, sizeof(stopic), PSTR(HOME_ASSISTANT_DISCOVERY_PREFIX "/%s/%s%s/config"), (is_light) ? "switch" : "light", mqtt_topic, sidx); MqttPublish(stopic, true); - snprintf_P(stopic, sizeof(stopic), PSTR(HOME_ASSISTANT_DISCOVERY_PREFIX "/%s/%s%s/config"), (is_light) ? "light" : "switch", mqtt_topic, (1 == devices_present) ? "" : sidx); + snprintf_P(stopic, sizeof(stopic), PSTR(HOME_ASSISTANT_DISCOVERY_PREFIX "/%s/%s%s/config"), (is_light) ? "light" : "switch", mqtt_topic, sidx); if (Settings.flag.hass_discovery) { char name[33]; diff --git a/sonoff/xsns_20_novasds.ino b/sonoff/xsns_20_novasds.ino index ed877fd2f..56d896c5e 100644 --- a/sonoff/xsns_20_novasds.ino +++ b/sonoff/xsns_20_novasds.ino @@ -92,18 +92,24 @@ void NovaSdsInit() #ifdef USE_WEBSERVER const char HTTP_SDS0X1_SNS[] PROGMEM = "%s" - "{s}SDS0X1 " D_ENVIRONMENTAL_CONCENTRATION " 2.5 " D_UNIT_MICROMETER "{m}%d " D_UNIT_MICROGRAM_PER_CUBIC_METER "{e}" - "{s}SDS0X1 " D_ENVIRONMENTAL_CONCENTRATION " 10 " D_UNIT_MICROMETER "{m}%d " D_UNIT_MICROGRAM_PER_CUBIC_METER "{e}"; // {s} = , {m} = , {e} = + "{s}SDS0X1 " D_ENVIRONMENTAL_CONCENTRATION " 2.5 " D_UNIT_MICROMETER "{m}%s " D_UNIT_MICROGRAM_PER_CUBIC_METER "{e}" + "{s}SDS0X1 " D_ENVIRONMENTAL_CONCENTRATION " 10 " D_UNIT_MICROMETER "{m}%s " D_UNIT_MICROGRAM_PER_CUBIC_METER "{e}"; // {s} = , {m} = , {e} = #endif // USE_WEBSERVER void NovaSdsShow(boolean json) { if (novasds_valid) { + char pm10[10]; + char pm2_5[10]; + float pm10f = (float)(novasds_data.pm100) / 10.0f; + float pm2_5f = (float)(novasds_data.pm25) / 10.0f; + dtostrfd(pm10f, 1, pm10); + dtostrfd(pm2_5f, 1, pm2_5); if (json) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"SDS0X1\":{\"PM2.5\":%d,\"PM10\":%d}"), mqtt_data, novasds_data.pm25, novasds_data.pm100); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"SDS0X1\":{\"PM2.5\":%s,\"PM10\":%s}"), mqtt_data, pm2_5, pm10); #ifdef USE_WEBSERVER } else { - snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SDS0X1_SNS, mqtt_data, novasds_data.pm25/10, novasds_data.pm100/10); + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SDS0X1_SNS, mqtt_data, pm2_5, pm10); #endif // USE_WEBSERVER } }