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|
|
| ClearGrass |CGG1|temperature/humidity/battery|
|
||||||
| Qingping |CGDK2|temperature/humidity|
|
| Qingping |CGDK2|temperature/humidity|
|
||||||
| Qingping |CGH1|open|
|
| Qingping |CGH1|open|
|
||||||
|
| Qingping |CGPR1|presence/luminance|
|
||||||
| ClearGrass alarm clock|CGD1|temperature/humidity|
|
| ClearGrass alarm clock|CGD1|temperature/humidity|
|
||||||
| ClearGrass with atmospheric pressure |CGP1W|temperature/humidity/air pressure|
|
| ClearGrass with atmospheric pressure |CGP1W|temperature/humidity/air pressure|
|
||||||
| Clock |LYWDS02|temperature/humidity|
|
| Clock |LYWDS02|temperature/humidity|
|
||||||
|
|||||||
@@ -384,6 +384,18 @@ void CLEARGRASSCGDK2Discovery(char* mac, char* sensorModel) {
|
|||||||
createDiscoveryFromList(mac, CLEARGRASSCGDK2sensor, CLEARGRASSCGDK2parametersCount, "CLEARGRASSCGDK2", "ClearGrass", 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) {
|
void CLEARGRASSCGH1Discovery(char* mac, char* sensorModel) {
|
||||||
# define CLEARGRASSCGH1parametersCount 1
|
# define CLEARGRASSCGH1parametersCount 1
|
||||||
Log.trace(F("CLEARGRASSCGH1Discovery" CR));
|
Log.trace(F("CLEARGRASSCGH1Discovery" CR));
|
||||||
@@ -504,6 +516,8 @@ void FormalDiscovery(char* mac, char* sensorModel) {}
|
|||||||
void LYWSD02Discovery(char* mac, char* sensorModel) {}
|
void LYWSD02Discovery(char* mac, char* sensorModel) {}
|
||||||
void CLEARGRASSTRHDiscovery(char* mac, char* sensorModel) {}
|
void CLEARGRASSTRHDiscovery(char* mac, char* sensorModel) {}
|
||||||
void CLEARGRASSCGD1Discovery(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 CLEARGRASSTRHKPADiscovery(char* mac, char* sensorModel) {}
|
||||||
void MiScaleDiscovery(char* mac, char* sensorModel) {}
|
void MiScaleDiscovery(char* mac, char* sensorModel) {}
|
||||||
void MiLampDiscovery(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 == CGP1W) CLEARGRASSTRHKPADiscovery((char*)macWOdots.c_str(), "CGP1W");
|
||||||
if (p->sensorModel == MUE4094RT) MiLampDiscovery((char*)macWOdots.c_str(), "MUE4094RT");
|
if (p->sensorModel == MUE4094RT) MiLampDiscovery((char*)macWOdots.c_str(), "MUE4094RT");
|
||||||
if (p->sensorModel == CGDK2) CLEARGRASSCGDK2Discovery((char*)macWOdots.c_str(), "CGDK2");
|
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 == CGH1) CLEARGRASSCGH1Discovery((char*)macWOdots.c_str(), "CGH1");
|
||||||
if (p->sensorModel == CGD1) CLEARGRASSCGD1Discovery((char*)macWOdots.c_str(), "CGD1");
|
if (p->sensorModel == CGD1) CLEARGRASSCGD1Discovery((char*)macWOdots.c_str(), "CGD1");
|
||||||
if (p->sensorModel == MIBAND) MiBandDiscovery((char*)macWOdots.c_str(), "MIBAND");
|
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);
|
createOrUpdateDevice(mac, device_flags_init, CGDK2);
|
||||||
return process_cleargrass(BLEdata, false);
|
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));
|
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)) {
|
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));
|
Log.trace(F("CGH1 data reading" CR));
|
||||||
@@ -1404,6 +1427,24 @@ JsonObject& process_cleargrass(JsonObject& BLEdata, boolean air) {
|
|||||||
return BLEdata;
|
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) {
|
JsonObject& process_cgh1(JsonObject& BLEdata) {
|
||||||
const char* servicedata = BLEdata["servicedata"].as<const char*>();
|
const char* servicedata = BLEdata["servicedata"].as<const char*>();
|
||||||
int value = -1;
|
int value = -1;
|
||||||
|
|||||||
@@ -133,6 +133,7 @@ enum ble_sensor_model {
|
|||||||
CGDK2,
|
CGDK2,
|
||||||
LYWSD03MMC_PVVX,
|
LYWSD03MMC_PVVX,
|
||||||
CGH1,
|
CGH1,
|
||||||
|
CGPR1,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*-------------------PIN DEFINITIONS----------------------*/
|
/*-------------------PIN DEFINITIONS----------------------*/
|
||||||
|
|||||||
Reference in new issue
Block a user