diff --git a/main/ZgatewayBT.ino b/main/ZgatewayBT.ino index cdacbd98..7154da52 100644 --- a/main/ZgatewayBT.ino +++ b/main/ZgatewayBT.ino @@ -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(), "HHCCJCY01HHCC") == 0) MiFloraDiscovery((char*)macWOdots.c_str()); if (strcmp(BLEdata["model"].as(), "VegTrug") == 0) VegTrugDiscovery((char*)macWOdots.c_str()); if (strcmp(BLEdata["model"].as(), "LYWSDCGQ") == 0) MiJiaDiscovery((char*)macWOdots.c_str()); + if (strcmp(BLEdata["model"].as(), "JQJCY01YM") == 0) FormalDiscovery((char*)macWOdots.c_str()); if (strcmp(BLEdata["model"].as(), "LYWSD02") == 0) LYWSD02Discovery((char*)macWOdots.c_str()); if (strcmp(BLEdata["model"].as(), "CGG1") == 0) CLEARGRASSTRHDiscovery((char*)macWOdots.c_str()); if (strcmp(BLEdata["model"].as(), "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; diff --git a/main/config_BT.h b/main/config_BT.h index 6f6e43be..32f30813 100644 --- a/main/config_BT.h +++ b/main/config_BT.h @@ -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 diff --git a/main/config_mqttDiscovery.h b/main/config_mqttDiscovery.h index 9d77d7d5..c8b61e69 100644 --- a/main/config_mqttDiscovery.h +++ b/main/config_mqttDiscovery.h @@ -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