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:
1 parent
b7a4591518
commit
4f1b49d135
10 files changed
+97
-52
No files matched your search
+7
-1
@@ -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
@@ -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) {
|
||||||
|
|||||||
@@ -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
@@ -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));
|
||||||
|
|||||||
@@ -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
@@ -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
@@ -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));
|
||||||
|
|||||||
@@ -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----------------------*/
|
||||||
|
|||||||
@@ -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 }}"
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user