mirror of
https://github.com/Threnklyn/esphome-dev.git
synced 2026-06-06 04:48:27 +02:00
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:
@@ -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 {};
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user