Add CGPR1 Qingping PIR and luminance sensor (#905)
This commit is contained in:
1 parent
b9151bb6ac
commit
cd55f0dfd5
3 files changed
+43
No files matched your search
@@ -31,6 +31,7 @@ OpenMQTTGateway is able to scan all the BLE devices that advertise their data so
|
||||
| ClearGrass |CGG1|temperature/humidity/battery|
|
||||
| Qingping |CGDK2|temperature/humidity|
|
||||
| Qingping |CGH1|open|
|
||||
| Qingping |CGPR1|presence/luminance|
|
||||
| ClearGrass alarm clock|CGD1|temperature/humidity|
|
||||
| ClearGrass with atmospheric pressure |CGP1W|temperature/humidity/air pressure|
|
||||
| Clock |LYWDS02|temperature/humidity|
|
||||
|
||||
@@ -384,6 +384,18 @@ void CLEARGRASSCGDK2Discovery(char* mac, char* sensorModel) {
|
||||
createDiscoveryFromList(mac, CLEARGRASSCGDK2sensor, CLEARGRASSCGDK2parametersCount, "CLEARGRASSCGDK2", "ClearGrass", sensorModel);
|
||||
}
|
||||
|
||||
void CLEARGRASSCGPR1Discovery(char* mac, char* sensorModel) {
|
||||
# define CLEARGRASSCGPR1parametersCount 2
|
||||
Log.trace(F("CLEARGRASSCGPR1Discovery" CR));
|
||||
char* CLEARGRASSCGPR1sensor[CLEARGRASSCGPR1parametersCount][8] = {
|
||||
{"sensor", "CLEARGRASSCGPR1-pres", mac, "", jsonPres, "", "", ""},
|
||||
{"sensor", "CLEARGRASSCGPR1-lux", mac, "illuminance", jsonLux, "", "", "lx"}
|
||||
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
|
||||
};
|
||||
|
||||
createDiscoveryFromList(mac, CLEARGRASSCGPR1sensor, CLEARGRASSCGPR1parametersCount, "CLEARGRASSCGPR1", "ClearGrass", sensorModel);
|
||||
}
|
||||
|
||||
void CLEARGRASSCGH1Discovery(char* mac, char* sensorModel) {
|
||||
# define CLEARGRASSCGH1parametersCount 1
|
||||
Log.trace(F("CLEARGRASSCGH1Discovery" CR));
|
||||
@@ -504,6 +516,8 @@ void FormalDiscovery(char* mac, char* sensorModel) {}
|
||||
void LYWSD02Discovery(char* mac, char* sensorModel) {}
|
||||
void CLEARGRASSTRHDiscovery(char* mac, char* sensorModel) {}
|
||||
void CLEARGRASSCGD1Discovery(char* mac, char* sensorModel) {}
|
||||
void CLEARGRASSCGDK2Discovery(char* mac, char* sensorModel) {}
|
||||
void CLEARGRASSCGPR1Discovery(char* mac, char* sensorModel) {}
|
||||
void CLEARGRASSTRHKPADiscovery(char* mac, char* sensorModel) {}
|
||||
void MiScaleDiscovery(char* mac, char* sensorModel) {}
|
||||
void MiLampDiscovery(char* mac, char* sensorModel) {}
|
||||
@@ -1011,6 +1025,7 @@ void launchBTDiscovery() {
|
||||
if (p->sensorModel == CGP1W) CLEARGRASSTRHKPADiscovery((char*)macWOdots.c_str(), "CGP1W");
|
||||
if (p->sensorModel == MUE4094RT) MiLampDiscovery((char*)macWOdots.c_str(), "MUE4094RT");
|
||||
if (p->sensorModel == CGDK2) CLEARGRASSCGDK2Discovery((char*)macWOdots.c_str(), "CGDK2");
|
||||
if (p->sensorModel == CGPR1) CLEARGRASSCGPR1Discovery((char*)macWOdots.c_str(), "CGPR1");
|
||||
if (p->sensorModel == CGH1) CLEARGRASSCGH1Discovery((char*)macWOdots.c_str(), "CGH1");
|
||||
if (p->sensorModel == CGD1) CLEARGRASSCGD1Discovery((char*)macWOdots.c_str(), "CGD1");
|
||||
if (p->sensorModel == MIBAND) MiBandDiscovery((char*)macWOdots.c_str(), "MIBAND");
|
||||
@@ -1142,6 +1157,14 @@ JsonObject& process_bledata(JsonObject& BLEdata) {
|
||||
createOrUpdateDevice(mac, device_flags_init, CGDK2);
|
||||
return process_cleargrass(BLEdata, false);
|
||||
}
|
||||
Log.trace(F("Is it a CGPR1?" CR));
|
||||
if (service_len > ServicedataMinLength && strncmp(&service_data[0], "4812", 4) == 0 || strncmp(&service_data[0], "0812", 4) == 0) {
|
||||
Log.trace(F("CGPR1 data reading" CR));
|
||||
BLEdata.set("model", "CGPR1");
|
||||
if (device->sensorModel == -1)
|
||||
createOrUpdateDevice(mac, device_flags_init, CGPR1);
|
||||
return process_cgpr1(BLEdata);
|
||||
}
|
||||
Log.trace(F("Is it a CGH1?" CR));
|
||||
if (service_len > ServicedataMinLength && (strncmp(&service_data[0], "c804", 4) == 0 || strncmp(&service_data[0], "8804", 4) == 0 || strncmp(&service_data[0], "0804", 4) == 0 || strncmp(&service_data[0], "4804", 4) == 0)) {
|
||||
Log.trace(F("CGH1 data reading" CR));
|
||||
@@ -1404,6 +1427,24 @@ JsonObject& process_cleargrass(JsonObject& BLEdata, boolean air) {
|
||||
return BLEdata;
|
||||
}
|
||||
|
||||
JsonObject& process_cgpr1(JsonObject& BLEdata) {
|
||||
const char* servicedata = BLEdata["servicedata"].as<const char*>();
|
||||
int value = -1;
|
||||
if (strncmp(&servicedata[0], "0812", 4) == 0) { // lux
|
||||
value = value_from_hex_data(servicedata, 33, 4, true);
|
||||
if (value >= 0)
|
||||
BLEdata.set("lux", value);
|
||||
} else if (strncmp(&servicedata[0], "4812", 4) == 0) { // presence
|
||||
value = value_from_hex_data(servicedata, 21, 1, false);
|
||||
if (value == 0)
|
||||
BLEdata.set("pres", false);
|
||||
if (value == 1)
|
||||
BLEdata.set("pres", true);
|
||||
}
|
||||
|
||||
return BLEdata;
|
||||
}
|
||||
|
||||
JsonObject& process_cgh1(JsonObject& BLEdata) {
|
||||
const char* servicedata = BLEdata["servicedata"].as<const char*>();
|
||||
int value = -1;
|
||||
|
||||
@@ -133,6 +133,7 @@ enum ble_sensor_model {
|
||||
CGDK2,
|
||||
LYWSD03MMC_PVVX,
|
||||
CGH1,
|
||||
CGPR1,
|
||||
};
|
||||
|
||||
/*-------------------PIN DEFINITIONS----------------------*/
|
||||
|
||||
Reference in new issue
Block a user