44 lines
1.1 KiB
Python
44 lines
1.1 KiB
Python
# from dataclasses import asdict, dataclass
|
|
#
|
|
#
|
|
# @dataclass(frozen=True, slots=True)
|
|
# class QingpingState:
|
|
# temperature: float
|
|
# humidity: float
|
|
# co2: int
|
|
# pm25: int
|
|
# pm10: int
|
|
# rssi: int | None = None
|
|
#
|
|
# def to_dict(self) -> dict:
|
|
# return asdict(self)
|
|
#
|
|
#
|
|
from dataclasses import asdict, dataclass
|
|
from datetime import datetime
|
|
|
|
@dataclass(frozen=True, slots=True)
|
|
class QingpingState:
|
|
temperature: float | None = None
|
|
humidity: float | None = None
|
|
co2: int | None = None
|
|
pm25: int | None = None
|
|
pm10: int | None = None
|
|
battery: int | None = None
|
|
|
|
sample_timestamp: int | None = None
|
|
sample_received_at: datetime | None = None
|
|
last_message_at: datetime | None = None
|
|
|
|
wifi_rssi: int | None = None
|
|
firmware: str | None = None
|
|
mqtt_connected: bool = False
|
|
|
|
def to_dict(self) -> dict:
|
|
result = asdict(self)
|
|
|
|
for key in ("sample_received_at", "last_message_at"):
|
|
if result[key] is not None:
|
|
result[key] = result[key].isoformat()
|
|
|
|
return result |