Skip to content

Commit f8132ea

Browse files
authored
ClearGrass/Qingping Thermo-Hygrometer CO2 Detector CGP22C (#646)
1 parent b390289 commit f8132ea

5 files changed

Lines changed: 74 additions & 0 deletions

File tree

docs/devices/CGP22C.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# ClearGrass/Qingping Thermo-Hygrometer CO2 Detector CGP22C
2+
3+
|Model Id|[CGP22C](https://github.com/theengs/decoder/blob/development/src/devices/CGP22C_json.h)|
4+
|-|-|
5+
|Brand|ClearGrass/Qingping|
6+
|Model|Thermo-Hygrometer CO2 Detector|
7+
|Short Description|Rechargeable temperature, humidity and carbon dioxide sensor|
8+
|Communication|BLE broadcast|
9+
|Frequency|2.4Ghz|
10+
|Power Source|Internal battery/USB-C|
11+
|Exchanged Data|temperature, humidity, carbon dioxide, battery|
12+
|Encrypted|No|

src/decoder.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ class TheengsDecoder {
5050
LYWSD02,
5151
LYWSDCGQ,
5252
CGP1W,
53+
CGP22C,
5354
CGP23W,
5455
CGG1_STOCK,
5556
CGG1_ATC1441,

src/devices.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include "devices/CGDN1_json.h"
2626
#include "devices/CGH1_json.h"
2727
#include "devices/CGP1W_json.h"
28+
#include "devices/CGP22C_json.h"
2829
#include "devices/CGP23W_json.h"
2930
#include "devices/CGPR1_json.h"
3031
#include "devices/ECOFLOW_ADV_json.h"
@@ -143,6 +144,7 @@ const char* _devices[][2] = {
143144
{_LYWSD02_json, _LYWSD02_json_props},
144145
{_LYWSDCGQ_json, _LYWSDCGQ_json_props},
145146
{_CGP1W_json, _CGP1W_json_props},
147+
{_CGP22C_json, _CGP22C_json_props},
146148
{_CGP23W_json, _CGP23W_json_props},
147149
{_CGG1_json_STOCK, _CGG1_json_props},
148150
{_CGG1_json_ATC1441, _CGG1_json_props},

src/devices/CGP22C_json.h

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
const char* _CGP22C_json = "{\"brand\":\"ClearGrass/Qingping\",\"model\":\"Thermo-Hygrometer CO2 Detector\",\"model_id\":\"CGP22C\",\"tag\":\"0f\",\"condition\":[\"servicedata\",\"=\",42,\"index\",2,\"5d\",\"&\",\"uuid\",\"index\",0,\"fdcd\"],\"properties\":{\"tempc\":{\"decoder\":[\"value_from_hex_data\",\"servicedata\",20,4,true,true],\"post_proc\":[\"/\",10]},\"hum\":{\"decoder\":[\"value_from_hex_data\",\"servicedata\",24,4,true,false],\"post_proc\":[\"/\",10]},\"co2\":{\"decoder\":[\"value_from_hex_data\",\"servicedata\",38,4,true,false]},\"batt\":{\"decoder\":[\"value_from_hex_data\",\"servicedata\",32,2,false,false],\"post_proc\":[\"&\",127]},\"mac\":{\"decoder\":[\"revmac_from_hex_data\",\"servicedata\",4]}}}";
2+
/*R""""(
3+
{
4+
"brand":"ClearGrass/Qingping",
5+
"model":"Thermo-Hygrometer CO2 Detector",
6+
"model_id":"CGP22C",
7+
"tag":"0f",
8+
"condition":["servicedata", "=", 42, "index", 2, "5d", "&", "uuid", "index", 0, "fdcd"],
9+
"properties":{
10+
"tempc":{
11+
"decoder":["value_from_hex_data", "servicedata", 20, 4, true, true],
12+
"post_proc":["/", 10]
13+
},
14+
"hum":{
15+
"decoder":["value_from_hex_data", "servicedata", 24, 4, true, false],
16+
"post_proc":["/", 10]
17+
},
18+
"co2":{
19+
"decoder":["value_from_hex_data", "servicedata", 38, 4, true, false]
20+
},
21+
"batt":{
22+
"decoder":["value_from_hex_data", "servicedata", 32, 2, false, false],
23+
"post_proc":["&", 127]
24+
},
25+
"mac":{
26+
"decoder":["revmac_from_hex_data", "servicedata", 4]
27+
}
28+
}
29+
})"""";*/
30+
31+
const char* _CGP22C_json_props = "{\"properties\":{\"tempc\":{\"unit\":\"°C\",\"name\":\"temperature\"},\"hum\":{\"unit\":\"%\",\"name\":\"humidity\"},\"co2\":{\"unit\":\"ppm\",\"name\":\"carbon_dioxide\"},\"batt\":{\"unit\":\"%\",\"name\":\"battery\"},\"mac\":{\"unit\":\"string\",\"name\":\"MAC address\"}}}";
32+
/*R""""(
33+
{
34+
"properties":{
35+
"tempc":{
36+
"unit":"°C",
37+
"name":"temperature"
38+
},
39+
"hum":{
40+
"unit":"%",
41+
"name":"humidity"
42+
},
43+
"co2":{
44+
"unit":"ppm",
45+
"name":"carbon_dioxide"
46+
},
47+
"batt":{
48+
"unit":"%",
49+
"name":"battery"
50+
},
51+
"mac":{
52+
"unit":"string",
53+
"name":"MAC address"
54+
}
55+
}
56+
})"""";*/

tests/BLE/test_ble.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -508,6 +508,7 @@ const char* expected_uuid[] = {
508508
"{\"brand\":\"Feasycom\",\"model\":\"Beacon\",\"model_id\":\"FEASY\",\"type\":\"BCON\",\"track\":true,\"beaconmodel\":\"BP108\",\"batt\":100,\"plugged-in\":false,\"mac\":\"AA:BB:CC:DD:EE:FF\"}",
509509
"{\"brand\":\"Feasycom\",\"model\":\"Beacon\",\"model_id\":\"FEASY\",\"type\":\"BCON\",\"track\":true,\"beaconmodel\":\"BP103B\",\"batt\":100,\"plugged-in\":false,\"mac\":\"AA:BB:CC:DD:EE:FF\"}",
510510
"{\"brand\":\"BlueCharm\",\"model\":\"Beacon 08/04P/021\",\"model_id\":\"KSensor\",\"type\":\"ACEL\",\"track\":true,\"tempc\":21.25,\"tempf\":70.25,\"accx\":4,\"accy\":-12,\"accz\":-4,\"volt\":3.05}",
511+
"{\"brand\":\"ClearGrass/Qingping\",\"model\":\"Thermo-Hygrometer CO2 Detector\",\"model_id\":\"CGP22C\",\"type\":\"AIR\",\"tempc\":25.5,\"tempf\":77.9,\"hum\":43.1,\"co2\":583,\"batt\":100,\"mac\":\"AA:BB:CC:DD:EE:FF\"}",
511512
};
512513

513514
const char* expected_mac_mfg[] = {
@@ -1430,6 +1431,7 @@ const char* test_uuid[][4] = {
14301431
{"Feasycom BP108", "0xfff0", "servicedata", "27021992aabbccddeeff64"},
14311432
{"Feasycom BPXXX", "0xfff0", "servicedata", "29021992aabbccddeeff64"},
14321433
{"BlueCharm BC04P", "0xfeaa", "servicedata", "21000b0bea15400004fff4fffc"},
1434+
{"ClearGrass CO2 Detector", "0xfdcd", "servicedata", "0a5dffeeddccbbaa0104ff00af0102016413024702"},
14331435
};
14341436

14351437
TheengsDecoder::BLE_ID_NUM test_uuid_id_num[]{
@@ -1567,6 +1569,7 @@ TheengsDecoder::BLE_ID_NUM test_uuid_id_num[]{
15671569
TheengsDecoder::BLE_ID_NUM::FEASY,
15681570
TheengsDecoder::BLE_ID_NUM::FEASY,
15691571
TheengsDecoder::BLE_ID_NUM::BC08,
1572+
TheengsDecoder::BLE_ID_NUM::CGP22C,
15701573
};
15711574

15721575
// MAC manufacturer data test input [test name] [mac] [data]

0 commit comments

Comments
 (0)