| 1234567891011121314151617181920212223242526272829303132333435363738 |
- """Meter parser."""
- from __future__ import annotations
- import struct
- from typing import Any
- from ._sensor_th import decode_temp_humidity
- CO2_UNPACK = struct.Struct(">H").unpack_from
- def process_wosensorth(data: bytes | None, mfr_data: bytes | None) -> dict[str, Any]:
- """Process woSensorTH/Temp sensor services data."""
- temp_data: bytes | None = None
- battery: int | None = None
- if mfr_data:
- temp_data = mfr_data[8:11]
- if data:
- if not temp_data:
- temp_data = data[3:6]
- battery = data[2] & 0b01111111
- if not temp_data:
- return {}
- return decode_temp_humidity(temp_data, battery)
- def process_wosensorth_c(data: bytes | None, mfr_data: bytes | None) -> dict[str, Any]:
- """Process woSensorTH/Temp sensor services data with CO2."""
- _wosensorth_data = process_wosensorth(data, mfr_data)
- if _wosensorth_data and mfr_data and len(mfr_data) >= 15:
- co2_data = mfr_data[13:15]
- _wosensorth_data["co2"] = CO2_UNPACK(co2_data)[0]
- return _wosensorth_data
|