mirror of
https://github.com/1technophile/OpenMQTTGateway.git
synced 2026-03-19 05:37:43 +01:00
JQJCY01YM BLE formaldehyde, temperature, humidity and battery sensor integration (#722)
* Add JQJCY01YM Formaldcehyde detector The device publish also the temperature, humidity and battery * Reduce ServicedataMinLength so as to read battery data of this device and others
This commit is contained in:
@@ -207,6 +207,21 @@ void MiJiaDiscovery(char* mac) {
|
||||
createDiscoveryFromList(mac, MiJiasensor, MiJiaparametersCount);
|
||||
}
|
||||
|
||||
void FormalDiscovery(char* mac) {
|
||||
# define FormalparametersCount 5
|
||||
Log.trace(F("FormalDiscovery" CR));
|
||||
char* Formalsensor[FormalparametersCount][8] = {
|
||||
{"sensor", "Formal-batt", mac, "battery", jsonBatt, "", "", "%"},
|
||||
{"sensor", "Formal-tempc", mac, "temperature", jsonTempc, "", "", "C"},
|
||||
{"sensor", "Formal-tempf", mac, "temperature", jsonTempf, "", "", "F"},
|
||||
{"sensor", "Formal-hum", mac, "humidity", jsonHum, "", "", "%"},
|
||||
{"sensor", "Formal-for", mac, "formaldehyde", jsonFor, "", "", "%"}
|
||||
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
|
||||
};
|
||||
|
||||
createDiscoveryFromList(mac, Formalsensor, FormalparametersCount);
|
||||
}
|
||||
|
||||
void LYWSD02Discovery(char* mac) {
|
||||
# define LYWSD02parametersCount 5
|
||||
Log.trace(F("LYWSD02Discovery" CR));
|
||||
@@ -319,6 +334,7 @@ void InkBirdDiscovery(char* mac) {
|
||||
void MiFloraDiscovery(char* mac) {}
|
||||
void VegTrugDiscovery(char* mac) {}
|
||||
void MiJiaDiscovery(char* mac) {}
|
||||
void FormalDiscovery(char* mac) {}
|
||||
void LYWSD02Discovery(char* mac) {}
|
||||
void CLEARGRASSTRHDiscovery(char* mac) {}
|
||||
void CLEARGRASSCGD1Discovery(char* mac) {}
|
||||
@@ -678,6 +694,7 @@ void launch_discovery(JsonObject& BLEdata) {
|
||||
if (strcmp(BLEdata["model"].as<const char*>(), "HHCCJCY01HHCC") == 0) MiFloraDiscovery((char*)macWOdots.c_str());
|
||||
if (strcmp(BLEdata["model"].as<const char*>(), "VegTrug") == 0) VegTrugDiscovery((char*)macWOdots.c_str());
|
||||
if (strcmp(BLEdata["model"].as<const char*>(), "LYWSDCGQ") == 0) MiJiaDiscovery((char*)macWOdots.c_str());
|
||||
if (strcmp(BLEdata["model"].as<const char*>(), "JQJCY01YM") == 0) FormalDiscovery((char*)macWOdots.c_str());
|
||||
if (strcmp(BLEdata["model"].as<const char*>(), "LYWSD02") == 0) LYWSD02Discovery((char*)macWOdots.c_str());
|
||||
if (strcmp(BLEdata["model"].as<const char*>(), "CGG1") == 0) CLEARGRASSTRHDiscovery((char*)macWOdots.c_str());
|
||||
if (strcmp(BLEdata["model"].as<const char*>(), "CGP1W") == 0) CLEARGRASSTRHKPADiscovery((char*)macWOdots.c_str());
|
||||
@@ -741,6 +758,13 @@ JsonObject& process_bledata(JsonObject& BLEdata) {
|
||||
|
||||
return process_sensors(0, BLEdata);
|
||||
}
|
||||
Log.trace(F("Is it a JQJCY01YM?" CR));
|
||||
if (strstr(service_data, "20df02") != NULL && strlen(service_data) > ServicedataMinLength) {
|
||||
Log.trace(F("JQJCY01YM data reading" CR));
|
||||
BLEdata.set("model", "JQJCY01YM");
|
||||
|
||||
return process_sensors(0, BLEdata);
|
||||
}
|
||||
Log.trace(F("Is it a LYWSD02?" CR));
|
||||
if (strstr(service_data, "205b04") != NULL && strlen(service_data) > ServicedataMinLength) {
|
||||
Log.trace(F("LYWSD02 data reading" CR));
|
||||
@@ -866,8 +890,8 @@ JsonObject& process_sensors(int offset, JsonObject& BLEdata) {
|
||||
// Mi Jia provides tem(perature), batt(erry) and hum(idity)
|
||||
// following the value of digit 23 + offset we determine the type of data we get from the sensor
|
||||
switch (servicedata[23 + offset]) {
|
||||
case '9':
|
||||
BLEdata.set("fer", (double)value);
|
||||
case '0':
|
||||
BLEdata.set("for", (double)value / 100);
|
||||
break;
|
||||
case '4':
|
||||
BLEdata.set("tem", (double)value / 10); // remove for 0.9.6 release
|
||||
@@ -883,6 +907,9 @@ JsonObject& process_sensors(int offset, JsonObject& BLEdata) {
|
||||
case '8':
|
||||
BLEdata.set("moi", (double)value);
|
||||
break;
|
||||
case '9':
|
||||
BLEdata.set("fer", (double)value);
|
||||
break;
|
||||
case 'a':
|
||||
BLEdata.set("batt", (double)value);
|
||||
break;
|
||||
|
||||
@@ -39,7 +39,7 @@ extern void MQTTtoBT(char* topicOri, JsonObject& RFdata);
|
||||
//#define HM-11 // uncomment this line if you use HM-11 and comment the line above
|
||||
//#define HM_BLUE_LED_STOP true //uncomment to stop the blue led light of HM1X
|
||||
#define BLEdelimiter "4f4b2b444953413a" // OK+DISA:
|
||||
#define ServicedataMinLength 30
|
||||
#define ServicedataMinLength 29
|
||||
|
||||
#ifndef TimeBtw_Read
|
||||
# define TimeBtw_Read 55555 //define default time between 2 scans
|
||||
|
||||
@@ -50,6 +50,7 @@ extern void createDiscovery(char* sensor_type,
|
||||
# define jsonLux "{{ value_json.lux }}"
|
||||
# define jsonPres "{{ value_json.pres }}"
|
||||
# define jsonFer "{{ value_json.fer }}"
|
||||
# define jsonFor "{{ value_json.for }}"
|
||||
# define jsonMoi "{{ value_json.moi }}"
|
||||
# define jsonHum "{{ value_json.hum }}"
|
||||
# define jsonTemp "{{ value_json.tem }}" // remove for 0.9.6 release
|
||||
@@ -76,6 +77,7 @@ extern void createDiscovery(char* sensor_type,
|
||||
# define jsonLux "{{ value_json.lux | is_defined }}"
|
||||
# define jsonPres "{{ value_json.pres | is_defined }}"
|
||||
# define jsonFer "{{ value_json.fer | is_defined }}"
|
||||
# define jsonFor "{{ value_json.for | is_defined }}"
|
||||
# define jsonMoi "{{ value_json.moi | is_defined }}"
|
||||
# define jsonHum "{{ value_json.hum | is_defined }}"
|
||||
# define jsonTemp "{{ value_json.tem | is_defined }}" // remove for 0.9.6 release
|
||||
|
||||
Reference in New Issue
Block a user