25 lines
590 B
Python
25 lines
590 B
Python
from dataclasses import asdict, dataclass
|
|
from datetime import datetime
|
|
|
|
|
|
@dataclass(frozen=True, slots=True)
|
|
class ExhaustState:
|
|
mqtt_connected: bool = False
|
|
device_online: bool = False
|
|
|
|
last_message_at: datetime | None = None
|
|
|
|
firmware: str | None = None
|
|
uptime_seconds: int | None = None
|
|
|
|
wifi_rssi: int | None = None
|
|
|
|
def to_dict(self) -> dict:
|
|
result = asdict(self)
|
|
|
|
if result["last_message_at"] is not None:
|
|
result["last_message_at"] = (
|
|
result["last_message_at"].isoformat()
|
|
)
|
|
|
|
return result |