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:
Florian
2020-08-05 19:46:50 -05:00
committed by GitHub
parent 0cd2464bf1
commit da63fd3606
3 changed files with 32 additions and 3 deletions

View File

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

View File

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

View File

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