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)
This commit is contained in:
Theo Arends 2018-03-08 17:53:02 +01:00
parent 9538dfb585
commit 76a74cc427
3 changed files with 14 additions and 6 deletions

View File

@ -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

View File

@ -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];

View File

@ -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} = <tr><th>, {m} = </th><td>, {e} = </td></tr>
"{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} = <tr><th>, {m} = </th><td>, {e} = </td></tr>
#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
}
}