1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
from __future__ import annotations
from typing import Any
from ._compat import cached_property
class Device:
"""Base class for all devices."""
def __init__(self, device_id: str, device_name: str, house_id: str) -> None:
self._device_id = device_id
self._device_name = device_name
self._house_id = house_id
@cached_property
def device_id(self) -> str:
return self._device_id
@cached_property
def device_name(self) -> str:
return self._device_name
@cached_property
def house_id(self) -> str:
return self._house_id
class DeviceDetail:
def __init__(
self,
device_id: str,
device_name: str,
house_id: str,
serial_number: str,
firmware_version: str,
pubsub_channel: str,
data: dict[str, Any],
) -> None:
self._device_id = device_id
self._device_name = device_name
self._house_id = house_id
self._serial_number = serial_number
self._firmware_version = firmware_version
self._pubsub_channel = pubsub_channel
self._data = data
@cached_property
def raw(self):
return self._data
@cached_property
def device_id(self):
return self._device_id
@cached_property
def device_name(self):
return self._device_name
@cached_property
def house_id(self):
return self._house_id
@cached_property
def serial_number(self):
return self._serial_number
@cached_property
def firmware_version(self):
return self._firmware_version
@cached_property
def pubsub_channel(self):
return self._pubsub_channel
|