Adds CGPR1 - Qingping Motion & Ambient light sensor support (#1675)

Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
This commit is contained in:
Tom Matheussen
2021-08-10 07:06:04 +02:00
committed by GitHub
parent 93796491af
commit b92311402a
7 changed files with 212 additions and 2 deletions
+6 -1
View File
@@ -104,7 +104,7 @@ bool parse_xiaomi_message(const std::vector<uint8_t> &message, XiaomiParseResult
}
while (payload_length > 3) {
if (payload[payload_offset + 1] != 0x10) {
if (payload[payload_offset + 1] != 0x10 && payload[payload_offset + 1] != 0x00) {
ESP_LOGVV(TAG, "parse_xiaomi_message(): fixed byte not found, stop parsing residual data.");
break;
}
@@ -203,6 +203,11 @@ optional<XiaomiParseResult> parse_xiaomi_header(const esp32_ble_tracker::Service
} else if ((raw[2] == 0x87) && (raw[3] == 0x03)) { // square body, e-ink display
result.type = XiaomiParseResult::TYPE_MHOC401;
result.name = "MHOC401";
} else if ((raw[2] == 0x83) && (raw[3] == 0x0A)) { // Qingping-branded, motion & ambient light sensor
result.type = XiaomiParseResult::TYPE_CGPR1;
result.name = "CGPR1";
if (raw.size() == 19)
result.raw_offset -= 6;
} else {
ESP_LOGVV(TAG, "parse_xiaomi_header(): unknown device, no magic bytes.");
return {};
+2 -1
View File
@@ -23,7 +23,8 @@ struct XiaomiParseResult {
TYPE_MUE4094RT,
TYPE_WX08ZM,
TYPE_MJYD02YLA,
TYPE_MHOC401
TYPE_MHOC401,
TYPE_CGPR1
} type;
std::string name;
optional<float> temperature;