Standardize MQTTDiscovery Temp Keys [deprecate tem key] (#703)

* Detect when sensor isn't available or read fails

* Add temperature conversion macros

* Add 'tempc' & 'tempf' keys to published values

* Unique Values for HA Discovery

* Remove degree symbol from temp sensors

Co-authored-by: Jonathan Michael Wells <jonathan-wells@oist.jp>
This commit is contained in:
JonandJonathan Michael Wells authored and GitHub committed 2020-07-24 10:10:44 -05:00
1 parent b7a4591518
commit 4f1b49d135
10 files changed
+97 -52

No files matched your search

+7 -1
View File
@@ -5,11 +5,14 @@ Subscribe to all the messages with mosquitto or open your MQTT client software:
### ADC ### ADC
The value is between 0 and 1024 and is tranmitted via Mqtt when it changes. The value is between 0 and 1024 and is tranmitted via Mqtt when it changes.
`home/OpenMQTTGateway/DHTtoMQTT {"value":543}` `home/OpenMQTTGateway/ADCtoMQTT {"value":543}`
### DHT ### DHT
You will receive every TimeBetweenReadingDHT (set into config_DHT.h) the DHT measurement (30s per default). You will receive every TimeBetweenReadingDHT (set into config_DHT.h) the DHT measurement (30s per default).
`home/OpenMQTTGateway/DHTtoMQTT {"tempc":21,"tempf":69.8,"hum":51}`
Legacy (removed after release 0.9.5)
`home/OpenMQTTGateway/DHTtoMQTT {"temp":21,"hum":51}` `home/OpenMQTTGateway/DHTtoMQTT {"temp":21,"hum":51}`
If you want to don't resend value when it is the same you can set dht_always = false in config_DHT.h If you want to don't resend value when it is the same you can set dht_always = false in config_DHT.h
@@ -32,6 +35,9 @@ If you don't want to resend values that haven't changed you can set AHTx0_always
You will receive the DS18x20 sensor readings every DS1820_INTERVAL_SEC (set into config_DS1820.h) (60s by default). You will receive the DS18x20 sensor readings every DS1820_INTERVAL_SEC (set into config_DS1820.h) (60s by default).
Each sensor will be published under the following topic using each sensors' address. Each sensor will be published under the following topic using each sensors' address.
`home/OpenMQTTGateway/CLIMAtoMQTT/ds1820/0x0000000000000000 {"tempc":27.8, "tempf":82.04, "type":"DS18B20","res":"12bit\n","addr":"0x28616411907650bc"}`
Legacy (removed after release 0.9.5)
`home/OpenMQTTGateway/CLIMAtoMQTT/ds1820/0x0000000000000000 {"temp":27.8,"unit":"C","type":"DS18B20","res":"12bit\n","addr":"0x28616411907650bc"}` `home/OpenMQTTGateway/CLIMAtoMQTT/ds1820/0x0000000000000000 {"temp":27.8,"unit":"C","type":"DS18B20","res":"12bit\n","addr":"0x28616411907650bc"}`
The units for temperature readings are sent in Celcius by default can be changed to ferenheight by setting DS1820_FAHRENHEIT = true in in config_DS1820.h The units for temperature readings are sent in Celcius by default can be changed to ferenheight by setting DS1820_FAHRENHEIT = true in in config_DS1820.h
+48 -24
View File
@@ -135,11 +135,13 @@ void strupp(char* beg) {
# ifdef ZmqttDiscovery # ifdef ZmqttDiscovery
void MiFloraDiscovery(char* mac) { void MiFloraDiscovery(char* mac) {
# define MiFloraparametersCount 4 # define MiFloraparametersCount 6
Log.trace(F("MiFloraDiscovery" CR)); Log.trace(F("MiFloraDiscovery" CR));
char* MiFlorasensor[MiFloraparametersCount][8] = { char* MiFlorasensor[MiFloraparametersCount][8] = {
{"sensor", "MiFlora-lux", mac, "illuminance", jsonLux, "", "", "lx"}, {"sensor", "MiFlora-lux", mac, "illuminance", jsonLux, "", "", "lx"},
{"sensor", "MiFlora-tem", mac, "temperature", jsonTemp, "", "", "°C"}, {"sensor", "MiFlora-tem", mac, "temperature", jsonTempc, "", "", "C"}, // remove for 0.9.6 release
{"sensor", "MiFlora-tempc", mac, "temperature", jsonTempc, "", "", "C"},
{"sensor", "MiFlora-tempf", mac, "temperature", jsonTempf, "", "", "F"},
{"sensor", "MiFlora-fer", mac, "", jsonFer, "", "", "µS/cm"}, {"sensor", "MiFlora-fer", mac, "", jsonFer, "", "", "µS/cm"},
{"sensor", "MiFlora-moi", mac, "", jsonMoi, "", "", "%"} {"sensor", "MiFlora-moi", mac, "", jsonMoi, "", "", "%"}
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement //component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
@@ -150,11 +152,13 @@ void MiFloraDiscovery(char* mac) {
} }
void VegTrugDiscovery(char* mac) { void VegTrugDiscovery(char* mac) {
# define VegTrugparametersCount 4 # define VegTrugparametersCount 6
Log.trace(F("VegTrugDiscovery" CR)); Log.trace(F("VegTrugDiscovery" CR));
char* VegTrugsensor[VegTrugparametersCount][8] = { char* VegTrugsensor[VegTrugparametersCount][8] = {
{"sensor", "VegTrug-lux", mac, "illuminance", jsonLux, "", "", "lx"}, {"sensor", "VegTrug-lux", mac, "illuminance", jsonLux, "", "", "lx"},
{"sensor", "VegTrug-tem", mac, "temperature", jsonTemp, "", "", "°C"}, {"sensor", "VegTrug-tem", mac, "temperature", jsonTempc, "", "", "C"}, // remove for 0.9.6 release
{"sensor", "VegTrug-tempc", mac, "temperature", jsonTempc, "", "", "C"},
{"sensor", "VegTrug-tempf", mac, "temperature", jsonTempf, "", "", "F"},
{"sensor", "VegTrug-fer", mac, "", jsonFer, "", "", "µS/cm"}, {"sensor", "VegTrug-fer", mac, "", jsonFer, "", "", "µS/cm"},
{"sensor", "VegTrug-moi", mac, "", jsonMoi, "", "", "%"} {"sensor", "VegTrug-moi", mac, "", jsonMoi, "", "", "%"}
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement //component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
@@ -165,11 +169,13 @@ void VegTrugDiscovery(char* mac) {
} }
void MiJiaDiscovery(char* mac) { void MiJiaDiscovery(char* mac) {
# define MiJiaparametersCount 3 # define MiJiaparametersCount 5
Log.trace(F("MiJiaDiscovery" CR)); Log.trace(F("MiJiaDiscovery" CR));
char* MiJiasensor[MiJiaparametersCount][8] = { char* MiJiasensor[MiJiaparametersCount][8] = {
{"sensor", "MiJia-batt", mac, "battery", jsonBatt, "", "", "%"}, {"sensor", "MiJia-batt", mac, "battery", jsonBatt, "", "", "%"},
{"sensor", "MiJia-tem", mac, "temperature", jsonTemp, "", "", "°C"}, {"sensor", "MiJia-tem", mac, "temperature", jsonTempc, "", "", "C"}, // remove for 0.9.6 release
{"sensor", "MiJia-tempc", mac, "temperature", jsonTempc, "", "", "C"},
{"sensor", "MiJia-tempf", mac, "temperature", jsonTempf, "", "", "F"},
{"sensor", "MiJia-hum", mac, "humidity", jsonHum, "", "", "%"} {"sensor", "MiJia-hum", mac, "humidity", jsonHum, "", "", "%"}
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement //component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
}; };
@@ -179,11 +185,13 @@ void MiJiaDiscovery(char* mac) {
} }
void LYWSD02Discovery(char* mac) { void LYWSD02Discovery(char* mac) {
# define LYWSD02parametersCount 3 # define LYWSD02parametersCount 5
Log.trace(F("LYWSD02Discovery" CR)); Log.trace(F("LYWSD02Discovery" CR));
char* LYWSD02sensor[LYWSD02parametersCount][8] = { char* LYWSD02sensor[LYWSD02parametersCount][8] = {
{"sensor", "LYWSD02-batt", mac, "battery", jsonBatt, "", "", "V"}, {"sensor", "LYWSD02-batt", mac, "battery", jsonBatt, "", "", "V"},
{"sensor", "LYWSD02-tem", mac, "temperature", jsonTemp, "", "", "°C"}, {"sensor", "LYWSD02-tem", mac, "temperature", jsonTempc, "", "", "C"}, // remove for 0.9.6 release
{"sensor", "LYWSD02-tempc", mac, "temperature", jsonTempc, "", "", "C"},
{"sensor", "LYWSD02-tempf", mac, "temperature", jsonTempf, "", "", "F"},
{"sensor", "LYWSD02-hum", mac, "humidity", jsonHum, "", "", "%"} {"sensor", "LYWSD02-hum", mac, "humidity", jsonHum, "", "", "%"}
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement //component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
}; };
@@ -193,11 +201,13 @@ void LYWSD02Discovery(char* mac) {
} }
void CLEARGRASSTRHDiscovery(char* mac) { void CLEARGRASSTRHDiscovery(char* mac) {
# define CLEARGRASSTRHparametersCount 3 # define CLEARGRASSTRHparametersCount 5
Log.trace(F("CLEARGRASSTRHDiscovery" CR)); Log.trace(F("CLEARGRASSTRHDiscovery" CR));
char* CLEARGRASSTRHsensor[CLEARGRASSTRHparametersCount][8] = { char* CLEARGRASSTRHsensor[CLEARGRASSTRHparametersCount][8] = {
{"sensor", "CLEARGRASSTRH-batt", mac, "battery", jsonBatt, "", "", "V"}, {"sensor", "CLEARGRASSTRH-batt", mac, "battery", jsonBatt, "", "", "V"},
{"sensor", "CLEARGRASSTRH-tem", mac, "temperature", jsonTemp, "", "", "°C"}, {"sensor", "CLEARGRASSTRH-tem", mac, "temperature", jsonTempc, "", "", "C"}, // remove for 0.9.6 release
{"sensor", "CLEARGRASSTRH-tempc", mac, "temperature", jsonTempc, "", "", "C"},
{"sensor", "CLEARGRASSTRH-tempf", mac, "temperature", jsonTempf, "", "", "F"},
{"sensor", "CLEARGRASSTRH-hum", mac, "humidity", jsonHum, "", "", "%"} {"sensor", "CLEARGRASSTRH-hum", mac, "humidity", jsonHum, "", "", "%"}
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement //component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
}; };
@@ -207,11 +217,13 @@ void CLEARGRASSTRHDiscovery(char* mac) {
} }
void CLEARGRASSCGD1Discovery(char* mac) { void CLEARGRASSCGD1Discovery(char* mac) {
# define CLEARGRASSCGD1parametersCount 3 # define CLEARGRASSCGD1parametersCount 5
Log.trace(F("CLEARGRASSCGD1Discovery" CR)); Log.trace(F("CLEARGRASSCGD1Discovery" CR));
char* CLEARGRASSCGD1sensor[CLEARGRASSCGD1parametersCount][8] = { char* CLEARGRASSCGD1sensor[CLEARGRASSCGD1parametersCount][8] = {
{"sensor", "CLEARGRASSCGD1-batt", mac, "battery", jsonBatt, "", "", "V"}, {"sensor", "CLEARGRASSCGD1-batt", mac, "battery", jsonBatt, "", "", "V"},
{"sensor", "CLEARGRASSCGD1-tem", mac, "temperature", jsonTemp, "", "", "°C"}, {"sensor", "CLEARGRASSCGD1-tem", mac, "temperature", jsonTempc, "", "", "C"}, // remove for 0.9.6 release
{"sensor", "CLEARGRASSCGD1-tempc", mac, "temperature", jsonTempc, "", "", "C"},
{"sensor", "CLEARGRASSCGD1-tempf", mac, "temperature", jsonTempf, "", "", "F"},
{"sensor", "CLEARGRASSCGD1-hum", mac, "humidity", jsonHum, "", "", "%"} {"sensor", "CLEARGRASSCGD1-hum", mac, "humidity", jsonHum, "", "", "%"}
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement //component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
}; };
@@ -221,11 +233,13 @@ void CLEARGRASSCGD1Discovery(char* mac) {
} }
void CLEARGRASSTRHKPADiscovery(char* mac) { void CLEARGRASSTRHKPADiscovery(char* mac) {
# define CLEARGRASSTRHKPAparametersCount 3 # define CLEARGRASSTRHKPAparametersCount 5
Log.trace(F("CLEARGRASSTRHKPADiscovery" CR)); Log.trace(F("CLEARGRASSTRHKPADiscovery" CR));
char* CLEARGRASSTRHKPAsensor[CLEARGRASSTRHKPAparametersCount][8] = { char* CLEARGRASSTRHKPAsensor[CLEARGRASSTRHKPAparametersCount][8] = {
{"sensor", "CLEARGRASSTRHKPA-pres", mac, "pressure", jsonPres, "", "", "kPa"}, {"sensor", "CLEARGRASSTRHKPA-pres", mac, "pressure", jsonPres, "", "", "kPa"},
{"sensor", "CLEARGRASSTRHKPA-tem", mac, "temperature", jsonTemp, "", "", "°C"}, {"sensor", "CLEARGRASSTRHKPA-tem", mac, "temperature", jsonTempc, "", "", "C"}, // remove for 0.9.6 release
{"sensor", "CLEARGRASSTRHKPA-tempc", mac, "temperature", jsonTempc, "", "", "C"},
{"sensor", "CLEARGRASSTRHKPA-tempf", mac, "temperature", jsonTempf, "", "", "F"},
{"sensor", "CLEARGRASSTRHKPA-hum", mac, "humidity", jsonHum, "", "", "%"} {"sensor", "CLEARGRASSTRHKPA-hum", mac, "humidity", jsonHum, "", "", "%"}
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement //component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
}; };
@@ -271,11 +285,13 @@ void MiBandDiscovery(char* mac) {
} }
void InkBirdDiscovery(char* mac) { void InkBirdDiscovery(char* mac) {
# define InkBirdparametersCount 3 # define InkBirdparametersCount 5
Log.trace(F("InkBirdDiscovery" CR)); Log.trace(F("InkBirdDiscovery" CR));
char* InkBirdsensor[InkBirdparametersCount][8] = { char* InkBirdsensor[InkBirdparametersCount][8] = {
{"sensor", "InkBird-batt", mac, "battery", jsonBatt, "", "", "%"}, {"sensor", "InkBird-batt", mac, "battery", jsonBatt, "", "", "%"},
{"sensor", "InkBird-tem", mac, "temperature", jsonTemp, "", "", "°C"}, {"sensor", "InkBird-tem", mac, "temperature", jsonTempc, "", "", "C"}, // remove for 0.9.6 release
{"sensor", "InkBird-tempc", mac, "temperature", jsonTempc, "", "", "C"},
{"sensor", "InkBird-tempf", mac, "temperature", jsonTempf, "", "", "F"},
{"sensor", "InkBird-hum", mac, "humidity", jsonHum, "", "", "%"} {"sensor", "InkBird-hum", mac, "humidity", jsonHum, "", "", "%"}
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement //component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
}; };
@@ -845,7 +861,9 @@ JsonObject& process_sensors(int offset, JsonObject& BLEdata) {
BLEdata.set("fer", (double)value); BLEdata.set("fer", (double)value);
break; break;
case '4': case '4':
BLEdata.set("tem", (double)value / 10); BLEdata.set("tem", (double)value / 10); // remove for 0.9.6 release
BLEdata.set("tempc", (double)value / 10);
BLEdata.set("tempf", (double)convertTemp_CtoF(value) / 10);
break; break;
case '6': case '6':
BLEdata.set("hum", (double)value / 10); BLEdata.set("hum", (double)value / 10);
@@ -860,10 +878,12 @@ JsonObject& process_sensors(int offset, JsonObject& BLEdata) {
BLEdata.set("batt", (double)value); BLEdata.set("batt", (double)value);
break; break;
case 'd': case 'd':
// humidity
value = value_from_service_data(servicedata, 28 + offset, 4);
BLEdata.set("tem", (double)value / 10);
// temperature // temperature
value = value_from_service_data(servicedata, 28 + offset, 4);
BLEdata.set("tem", (double)value / 10); // remove for 0.9.6 release
BLEdata.set("tempc", (double)value / 10);
BLEdata.set("tempf", (double)convertTemp_CtoF(value) / 10);
// humidity
value = value_from_service_data(servicedata, 32 + offset, 4); value = value_from_service_data(servicedata, 32 + offset, 4);
BLEdata.set("hum", (double)value / 10); BLEdata.set("hum", (double)value / 10);
break; break;
@@ -906,7 +926,9 @@ JsonObject& process_inkbird(JsonObject& BLEdata) {
double battery = value_from_service_data(manufacturerdata, 14, 2); double battery = value_from_service_data(manufacturerdata, 14, 2);
//Set Json values //Set Json values
BLEdata.set("tem", (double)temperature); BLEdata.set("tem", (double)temperature); // remove for 0.9.6 release
BLEdata.set("tempc", (double)temperature);
BLEdata.set("tempf", (double)convertTemp_CtoF(temperature));
BLEdata.set("hum", (double)humidity); BLEdata.set("hum", (double)humidity);
BLEdata.set("batt", (double)battery); BLEdata.set("batt", (double)battery);
@@ -940,10 +962,12 @@ JsonObject& process_cleargrass(JsonObject& BLEdata, boolean air) {
const char* servicedata = BLEdata["servicedata"].as<const char*>(); const char* servicedata = BLEdata["servicedata"].as<const char*>();
double value = 9999; double value = 9999;
// humidity
value = value_from_service_data(servicedata, 20, 4);
BLEdata.set("tem", (double)value / 10);
// temperature // temperature
value = value_from_service_data(servicedata, 20, 4);
BLEdata.set("tem", (double)value / 10); // remove for 0.9.6 release
BLEdata.set("tempc", (double)value / 10);
BLEdata.set("tempf", (double)convertTemp_CtoF(value) / 10);
// humidity
value = value_from_service_data(servicedata, 24, 4); value = value_from_service_data(servicedata, 24, 4);
BLEdata.set("hum", (double)value / 10); BLEdata.set("hum", (double)value / 10);
if (air) { if (air) {
+3 -1
View File
@@ -105,7 +105,9 @@ void sendTemperatureData(byte id, float temperature, int humidity, byte battery_
StaticJsonBuffer<JSON_MSG_CALC_BUFFER> jsonBuffer; StaticJsonBuffer<JSON_MSG_CALC_BUFFER> jsonBuffer;
JsonObject& RFdata = jsonBuffer.createObject(); JsonObject& RFdata = jsonBuffer.createObject();
RFdata.set("sensor", id); RFdata.set("sensor", id);
RFdata.set("temperature", temperature); RFdata.set("temperature", temperature); // remove for 0.9.6 release
RFdata.set("tempc", temperature);
RFdata.set("tempf", wsdr.convertCtoF(temperature));
RFdata.set("humidity", humidity); RFdata.set("humidity", humidity);
RFdata.set("battery", bitRead(battery_status, 0) == 0 ? "OK" : "Low"); RFdata.set("battery", bitRead(battery_status, 0) == 0 ? "OK" : "Low");
pub(subjectRFtoMQTT, RFdata); pub(subjectRFtoMQTT, RFdata);
+12 -9
View File
@@ -145,8 +145,8 @@ void pubMqttDiscovery() {
# define BMEparametersCount 6 # define BMEparametersCount 6
Log.trace(F("bme280Discovery" CR)); Log.trace(F("bme280Discovery" CR));
char* BMEsensor[BMEparametersCount][8] = { char* BMEsensor[BMEparametersCount][8] = {
{"sensor", "tempc", "bme", "temperature", jsonTemp, "", "", "°C"}, {"sensor", "tempc", "bme", "temperature", jsonTempc, "", "", "C"},
{"sensor", "tempf", "bme", "temperature", jsonTempf, "", "", "°F"}, {"sensor", "tempf", "bme", "temperature", jsonTempf, "", "", "F"},
{"sensor", "pa", "bme", "", jsonPa, "", "", "hPa"}, {"sensor", "pa", "bme", "", jsonPa, "", "", "hPa"},
{"sensor", "hum", "bme", "humidity", jsonHum, "", "", "%"}, {"sensor", "hum", "bme", "humidity", jsonHum, "", "", "%"},
{"sensor", "altim", "bme", "", jsonAltim, "", "", "m"}, {"sensor", "altim", "bme", "", jsonAltim, "", "", "m"},
@@ -169,8 +169,8 @@ void pubMqttDiscovery() {
# define HTUparametersCount 3 # define HTUparametersCount 3
Log.trace(F("htu21Discovery" CR)); Log.trace(F("htu21Discovery" CR));
char* HTUsensor[HTUparametersCount][8] = { char* HTUsensor[HTUparametersCount][8] = {
{"sensor", "tempc", "htu", "temperature", jsonTemp, "", "", "°C"}, {"sensor", "tempc", "htu", "temperature", jsonTempc, "", "", "C"},
{"sensor", "tempf", "htu", "temperature", jsonTempf, "", "", "°F"}, {"sensor", "tempf", "htu", "temperature", jsonTempf, "", "", "F"},
{"sensor", "hum", "htu", "humidity", jsonHum, "", "", "%"} {"sensor", "hum", "htu", "humidity", jsonHum, "", "", "%"}
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement //component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
}; };
@@ -190,8 +190,8 @@ void pubMqttDiscovery() {
# define AHTparametersCount 3 # define AHTparametersCount 3
Log.trace(F("AHTx0Discovery" CR)); Log.trace(F("AHTx0Discovery" CR));
char* AHTsensor[AHTparametersCount][8] = { char* AHTsensor[AHTparametersCount][8] = {
{"sensor", "tempc", "aht", "temperature", jsonTemp, "", "", "°C"}, {"sensor", "tempc", "aht", "temperature", jsonTempc, "", "", "C"},
{"sensor", "tempf", "aht", "temperature", jsonTempf, "", "", "°F"}, {"sensor", "tempf", "aht", "temperature", jsonTempf, "", "", "F"},
{"sensor", "hum", "aht", "humidity", jsonHum, "", "", "%"} {"sensor", "hum", "aht", "humidity", jsonHum, "", "", "%"}
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement //component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
}; };
@@ -207,11 +207,14 @@ void pubMqttDiscovery() {
# endif # endif
# ifdef ZsensorDHT # ifdef ZsensorDHT
# define DHTparametersCount 2 # define DHTparametersCount 3
Log.trace(F("DHTDiscovery" CR)); Log.trace(F("DHTDiscovery" CR));
char* DHTsensor[DHTparametersCount][8] = { char* DHTsensor[DHTparametersCount][8] = {
{"sensor", "tempc", "dht", "temperature", jsonTemp, "", "", "°C"}, {"sensor", "tempc", "dht", "temperature", jsonTempc, "", "", "C"},
{"sensor", "hum", "dht", "humidity", jsonHum, "", "", "%"}}; {"sensor", "tempf", "dht", "temperature", jsonTempf, "", "", "F"},
{"sensor", "hum", "dht", "humidity", jsonHum, "", "", "%"}
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
};
for (int i = 0; i < DHTparametersCount; i++) { for (int i = 0; i < DHTparametersCount; i++) {
Log.trace(F("CreateDiscoverySensor" CR)); Log.trace(F("CreateDiscoverySensor" CR));
+1 -1
View File
@@ -90,7 +90,7 @@ void MeasureAHTTempHum() {
JsonObject& AHTx0data = jsonBuffer.createObject(); JsonObject& AHTx0data = jsonBuffer.createObject();
// Generate Temperature in degrees C // Generate Temperature in degrees C
if (ahtTempC.temperature != persisted_aht_tempc || AHTx0_always) { if (ahtTempC.temperature != persisted_aht_tempc || AHTx0_always) {
float ahtTempF = (ahtTempC.temperature * 1.8) + 32; float ahtTempF = convertTemp_CtoF(ahtTempC.temperature);
AHTx0data.set("tempc", (float)ahtTempC.temperature); AHTx0data.set("tempc", (float)ahtTempC.temperature);
AHTx0data.set("tempf", (float)ahtTempF); AHTx0data.set("tempf", (float)ahtTempF);
} else { } else {
+3 -1
View File
@@ -63,7 +63,9 @@ void MeasureTempAndHum() {
Log.trace(F("Same hum don't send it" CR)); Log.trace(F("Same hum don't send it" CR));
} }
if (t != persistedt || dht_always) { if (t != persistedt || dht_always) {
DHTdata.set("temp", (float)t); DHTdata.set("temp", (float)t); // remove for 0.9.6 release
DHTdata.set("tempc", (float)t);
DHTdata.set("tempf", dht.convertCtoF(t));
} else { } else {
Log.trace(F("Same temp don't send it" CR)); Log.trace(F("Same temp don't send it" CR));
} }
+13 -10
View File
@@ -102,27 +102,24 @@ void pubOneWire_HADiscovery() {
# ifdef ZmqttDiscovery # ifdef ZmqttDiscovery
Log.notice(F("CreateDiscoverySensor - Found %d" CR), ds1820_count); Log.notice(F("CreateDiscoverySensor - Found %d" CR), ds1820_count);
for (int index = 0; index < ds1820_count; index++) { for (int index = 0; index < ds1820_count; index++) {
# if DS1820_FAHRENHEIT
createDiscovery("sensor", createDiscovery("sensor",
(char*)(String(OW_TOPIC) + "/" + ds1820_addr[index]).c_str(), (char*)(String(OW_TOPIC) + "/" + ds1820_addr[index]).c_str(),
(char*)String("DS12B20_" + String(index + 1)).c_str(), (char*)("DS12B20_" + String(index + 1) + "_f").c_str(),
(char*)ds1820_addr[index].c_str(), (char*)(ds1820_addr[index] + "_f").c_str(),
will_Topic, will_Topic,
"temperature", "temperature",
jsonTempf, jsonTempf,
"", "", "°F", "", "", "F",
0, "", "", true, ""); 0, "", "", true, "");
# else
createDiscovery("sensor", createDiscovery("sensor",
(char*)(String(OW_TOPIC) + "/" + ds1820_addr[index]).c_str(), (char*)(String(OW_TOPIC) + "/" + ds1820_addr[index]).c_str(),
(char*)String("DS12B20_" + String(index + 1)).c_str(), (char*)("DS12B20_" + String(index + 1) + "_c").c_str(),
(char*)ds1820_addr[index].c_str(), (char*)(ds1820_addr[index] + "_c").c_str(),
will_Topic, will_Topic,
"temperature", "temperature",
jsonTemp, jsonTempc,
"", "", "°C", "", "", "C",
0, "", "", true, ""); 0, "", "", true, "");
# endif
} }
# endif # endif
} }
@@ -155,6 +152,7 @@ void MeasureDS1820Temp() {
if (current_temp[i] == -127) { if (current_temp[i] == -127) {
Log.error(F("DS1820: Device %s currently disconnected!" CR), (char*)ds1820_addr[i].c_str()); Log.error(F("DS1820: Device %s currently disconnected!" CR), (char*)ds1820_addr[i].c_str());
} else if (DS1820_ALWAYS || current_temp[i] != persisted_temp[i]) { } else if (DS1820_ALWAYS || current_temp[i] != persisted_temp[i]) {
// remove for 0.9.6 release -- BEGIN (Additional BREAKING CHANGE - Unit will be removed)
if (DS1820_FAHRENHEIT) { if (DS1820_FAHRENHEIT) {
Log.notice(F("DS1820: Temperature %s %d F" CR), Log.notice(F("DS1820: Temperature %s %d F" CR),
(char*)ds1820_addr[i].c_str(), (char*)ds1820_addr[i].c_str(),
@@ -170,6 +168,11 @@ void MeasureDS1820Temp() {
DS1820data.set("temp", (float)current_temp[i]); DS1820data.set("temp", (float)current_temp[i]);
DS1820data.set("unit", "C"); DS1820data.set("unit", "C");
} }
// remove for 0.9.6 release -- END
DS1820data.set("tempc", (float)DallasTemperature::toFahrenheit(current_temp[i]));
DS1820data.set("tempf", (float)current_temp[i]);
if (DS1820_DETAILS) { if (DS1820_DETAILS) {
DS1820data.set("type", ds1820_type[i]); DS1820data.set("type", ds1820_type[i]);
DS1820data.set("res", ds1820_resolution[i] + String("bit" CR)); DS1820data.set("res", ds1820_resolution[i] + String("bit" CR));
+3 -3
View File
@@ -36,9 +36,9 @@ extern void pubOneWire_HADiscovery();
#define DS1820_ALWAYS true // if false only published current temperature if has changed from previous reading #define DS1820_ALWAYS true // if false only published current temperature if has changed from previous reading
#define DS1820_INTERVAL_SEC 60 // time between DS1820 readings (seconds) #define DS1820_INTERVAL_SEC 60 // time between DS1820 readings (seconds)
#define DS1820_RESOLUTION 10 // conversion times: 9 bit (93.75 ms), 10 bit (187.5 ms), 11 bit (375 ms), 12 bit (750 ms) #define DS1820_RESOLUTION 10 // conversion times: 9 bit (93.75 ms), 10 bit (187.5 ms), 11 bit (375 ms), 12 bit (750 ms)
#ifndef DS1820_FAHRENHEIT #ifndef DS1820_FAHRENHEIT // remove for 0.9.6 release
# define DS1820_FAHRENHEIT false // defaults to Celcius # define DS1820_FAHRENHEIT false // defaults to Celcius // remove for 0.9.6 release
#endif #endif // remove for 0.9.6 release
#define DS1820_DETAILS true // publish extented info for each sensor (resolution, address, type) #define DS1820_DETAILS true // publish extented info for each sensor (resolution, address, type)
#define DS1820_CONV_TIME 2000 // trigger conversion before requesting temperature readings (ms) #define DS1820_CONV_TIME 2000 // trigger conversion before requesting temperature readings (ms)
/*-------------------PIN DEFINITIONS----------------------*/ /*-------------------PIN DEFINITIONS----------------------*/
+4 -2
View File
@@ -52,12 +52,13 @@ extern void createDiscovery(char* sensor_type,
# define jsonFer "{{ value_json.fer }}" # define jsonFer "{{ value_json.fer }}"
# define jsonMoi "{{ value_json.moi }}" # define jsonMoi "{{ value_json.moi }}"
# define jsonHum "{{ value_json.hum }}" # define jsonHum "{{ value_json.hum }}"
# define jsonTemp "{{ value_json.tem }}" # define jsonTemp "{{ value_json.tem }}" // remove for 0.9.6 release
# define jsonStep "{{ value_json.steps }}" # define jsonStep "{{ value_json.steps }}"
# define jsonWeight "{{ value_json.weight }}" # define jsonWeight "{{ value_json.weight }}"
# define jsonPresence "{{ value_json.presence }}" # define jsonPresence "{{ value_json.presence }}"
# define jsonAltim "{{ value_json.altim }}" # define jsonAltim "{{ value_json.altim }}"
# define jsonAltif "{{ value_json.altift }}" # define jsonAltif "{{ value_json.altift }}"
# define jsonTempc "{{ value_json.tempc }}"
# define jsonTempf "{{ value_json.tempf }}" # define jsonTempf "{{ value_json.tempf }}"
# define jsonMsg "{{ value_json.message }}" # define jsonMsg "{{ value_json.message }}"
# define jsonVal "{{ value_json.value }}" # define jsonVal "{{ value_json.value }}"
@@ -77,12 +78,13 @@ extern void createDiscovery(char* sensor_type,
# define jsonFer "{{ value_json.fer | is_defined }}" # define jsonFer "{{ value_json.fer | is_defined }}"
# define jsonMoi "{{ value_json.moi | is_defined }}" # define jsonMoi "{{ value_json.moi | is_defined }}"
# define jsonHum "{{ value_json.hum | is_defined }}" # define jsonHum "{{ value_json.hum | is_defined }}"
# define jsonTemp "{{ value_json.tem | is_defined }}" # define jsonTemp "{{ value_json.tem | is_defined }}" // remove for 0.9.6 release
# define jsonStep "{{ value_json.steps | is_defined }}" # define jsonStep "{{ value_json.steps | is_defined }}"
# define jsonWeight "{{ value_json.weight | is_defined }}" # define jsonWeight "{{ value_json.weight | is_defined }}"
# define jsonPresence "{{ value_json.presence | is_defined }}" # define jsonPresence "{{ value_json.presence | is_defined }}"
# define jsonAltim "{{ value_json.altim | is_defined }}" # define jsonAltim "{{ value_json.altim | is_defined }}"
# define jsonAltif "{{ value_json.altift | is_defined }}" # define jsonAltif "{{ value_json.altift | is_defined }}"
# define jsonTempc "{{ value_json.tempc | is_defined }}"
# define jsonTempf "{{ value_json.tempf | is_defined }}" # define jsonTempf "{{ value_json.tempf | is_defined }}"
# define jsonMsg "{{ value_json.message | is_defined }}" # define jsonMsg "{{ value_json.message | is_defined }}"
# define jsonVal "{{ value_json.value | is_defined }}" # define jsonVal "{{ value_json.value | is_defined }}"
+3
View File
@@ -168,6 +168,9 @@ WiFiClient eClient;
EthernetClient eClient; EthernetClient eClient;
#endif #endif
#define convertTemp_CtoF(c) ((c * 1.8) + 32)
#define convertTemp_FtoC(f) ((f - 32) * 5 / 9)
// client link to pubsub mqtt // client link to pubsub mqtt
PubSubClient client(eClient); PubSubClient client(eClient);