From dcabb9c6dc1668209a6a770446253b79efbe1cc5 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 21 Jan 2019 22:18:19 +0100 Subject: [PATCH] 6.4.1.10 Fix Hass discovery of MHZ19(B) 6.4.1.10 20190121 * Fix Hass discovery of MHZ19(B) sensors (#4992) --- sonoff/_changelog.ino | 5 ++++- sonoff/i18n.h | 1 + sonoff/sonoff_version.h | 2 +- sonoff/xsns_15_mhz19.ino | 13 +++++++------ 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 2d77e925f..8db379f8b 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,4 +1,7 @@ -/* 6.4.1.9 20190115 +/* 6.4.1.10 20190121 + * Fix Hass discovery of MHZ19(B) sensors (#4992) + * + * 6.4.1.9 20190115 * Add support for Mi LED Desk Lamp with rotary switch (#4887) * Fix mDNS addService (#4938, #4951) * Fix allowable MAX_RULE_VARS to 16 (#4933) diff --git a/sonoff/i18n.h b/sonoff/i18n.h index a90028e8d..1003a3996 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -92,6 +92,7 @@ #define D_JSON_MAC "Mac" #define D_JSON_MASK "Mask" #define D_JSON_MINIMAL "minimal" +#define D_JSON_MODEL "Model" #define D_JSON_NO "No" #define D_JSON_NOISE "Noise" #define D_JSON_NONE "None" diff --git a/sonoff/sonoff_version.h b/sonoff/sonoff_version.h index 534276418..47bbb82f2 100644 --- a/sonoff/sonoff_version.h +++ b/sonoff/sonoff_version.h @@ -20,7 +20,7 @@ #ifndef _SONOFF_VERSION_H_ #define _SONOFF_VERSION_H_ -#define VERSION 0x06040109 +#define VERSION 0x0604010A #define D_PROGRAMNAME "Sonoff-Tasmota" #define D_AUTHOR "Theo Arends" diff --git a/sonoff/xsns_15_mhz19.ino b/sonoff/xsns_15_mhz19.ino index bc8e46ada..7585ff3d9 100644 --- a/sonoff/xsns_15_mhz19.ino +++ b/sonoff/xsns_15_mhz19.ino @@ -70,7 +70,7 @@ enum MhzFilterOptions {MHZ19_FILTER_OFF, MHZ19_FILTER_OFF_ALLSAMPLES, MHZ19_FILT TasmotaSerial *MhzSerial; -const char kMhzTypes[] PROGMEM = "MHZ19|MHZ19B"; +const char kMhzModels[] PROGMEM = "|B"; enum MhzCommands { MHZ_CMND_READPPM, MHZ_CMND_ABCENABLE, MHZ_CMND_ABCDISABLE, MHZ_CMND_ZEROPOINT, MHZ_CMND_RESET, MHZ_CMND_RANGE_1000, MHZ_CMND_RANGE_2000, MHZ_CMND_RANGE_3000, MHZ_CMND_RANGE_5000 }; const uint8_t kMhzCommands[][4] PROGMEM = { @@ -90,7 +90,6 @@ uint16_t mhz_last_ppm = 0; uint8_t mhz_filter = MHZ19_FILTER_OPTION; bool mhz_abc_enable = MHZ19_ABC_ENABLE; bool mhz_abc_must_apply = false; -char mhz_types[7]; float mhz_temperature = 0; uint8_t mhz_retry = MHZ19_RETRY_COUNT; @@ -322,19 +321,21 @@ void MhzInit(void) void MhzShow(boolean json) { + char types[7] = "MHZ19B"; // MHZ19B for legacy reasons. Prefered is MHZ19 char temperature[33]; dtostrfd(mhz_temperature, Settings.flag2.temperature_resolution, temperature); - GetTextIndexed(mhz_types, sizeof(mhz_types), mhz_type -1, kMhzTypes); + char model[3]; + GetTextIndexed(model, sizeof(model), mhz_type -1, kMhzModels); if (json) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"%s\":{\"" D_JSON_CO2 "\":%d,\"" D_JSON_TEMPERATURE "\":%s}"), mqtt_data, mhz_types, mhz_last_ppm, temperature); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"%s\":{\"" D_JSON_MODEL "\":\"%s\",\"" D_JSON_CO2 "\":%d,\"" D_JSON_TEMPERATURE "\":%s}"), mqtt_data, types, model, mhz_last_ppm, temperature); #ifdef USE_DOMOTICZ if (0 == tele_period) DomoticzSensor(DZ_AIRQUALITY, mhz_last_ppm); #endif // USE_DOMOTICZ #ifdef USE_WEBSERVER } else { - snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_CO2, mqtt_data, mhz_types, mhz_last_ppm); - snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_TEMP, mqtt_data, mhz_types, temperature, TempUnit()); + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_CO2, mqtt_data, types, mhz_last_ppm); + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_TEMP, mqtt_data, types, temperature, TempUnit()); #endif // USE_WEBSERVER } }