Skip to content

Commit

Permalink
Add support for reading the co2 value from meter pro
Browse files Browse the repository at this point in the history
  • Loading branch information
bdraco committed Oct 22, 2024
1 parent 5ab93eb commit 2946bb5
Showing 1 changed file with 2 additions and 37 deletions.
39 changes: 2 additions & 37 deletions switchbot/adv_parsers/meter.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,43 +48,8 @@ def process_wosensorth(data: bytes | None, mfr_data: bytes | None) -> dict[str,

def process_wosensorth_c(data: bytes | None, mfr_data: bytes | None) -> dict[str, Any]:
"""Process woSensorTH/Temp sensor services data with CO2."""
temp_data: bytes | None = None
battery: bytes | None = None
co2_data: bytes | None

if mfr_data:
temp_data = mfr_data[8:11]
_wosensorth_data = process_wosensorth(data, mfr_data)
if _wosensorth_data and mfr_data and len(mfr_data) >= 15:
co2_data = mfr_data[13:15]

if data:
if not temp_data:
temp_data = data[3:6]
battery = data[2] & 0b01111111

if not temp_data:
return {}

_temp_sign = 1 if temp_data[1] & 0b10000000 else -1
_temp_c = _temp_sign * (
(temp_data[1] & 0b01111111) + ((temp_data[0] & 0b00001111) / 10)
)
_temp_f = (_temp_c * 9 / 5) + 32
_temp_f = (_temp_f * 10) / 10
humidity = temp_data[2] & 0b01111111

if _temp_c == 0 and humidity == 0 and battery == 0:
return {}

_wosensorth_data = {
# Data should be flat, but we keep the original structure for now
"temp": {"c": _temp_c, "f": _temp_f},
"temperature": _temp_c,
"fahrenheit": bool(temp_data[2] & 0b10000000),
"humidity": humidity,
"battery": battery,
}

if co2_data:
_wosensorth_data["co2"] = CO2_UNPACK(co2_data)[0]

return _wosensorth_data

0 comments on commit 2946bb5

Please sign in to comment.