Cleanup and refactoring

This commit is contained in:
2022-10-15 23:25:44 +02:00
parent 53d1f1f9ae
commit 17eafdee41
5 changed files with 80 additions and 76 deletions

View File

@@ -1,19 +1,44 @@
from builtins import property
from collections import namedtuple
Device = namedtuple("Device", ["model", "type", "dimmable"])
LIGHT = "light"
SENSOR = "sensor"
SWITCH = "switch"
HARDWARE_TYPES = {
"0": Device("-unknown-", LIGHT, False),
"1": Device("DIM-01", LIGHT, True),
"2": Device("DIM-02", LIGHT, True),
"3": Device("CTR-01", LIGHT, False),
"4": Device("GWY-01", SENSOR, False),
"5": Device("LED-10", LIGHT, True),
"6": Device("WPH-01", SWITCH, False),
"7": Device("REL-01", SWITCH, False),
"8": Device("-unknown-", LIGHT, False),
"9": Device("-unknown-", LIGHT, False),
"10": Device("-unknown-", LIGHT, False),
"11": Device("DIM-01", LIGHT, True),
"12": Device("-unknown-", LIGHT, False),
"13": Device("Generic", LIGHT, False),
"14": Device("-unknown-", LIGHT, False),
"15": Device("-unknown-", LIGHT, False),
"16": Device("-unknown-", LIGHT, False),
"17": Device("REL-01", SWITCH, False),
"18": Device("REL-02", SWITCH, False),
"19": Device("-unknown-", LIGHT, False),
"20": Device("SPR-01", SWITCH, False),
}
class PlejdDevice:
def __init__(self, manager, address, BLE_address, name, type, model, dimmable, room, firmware):
def __init__(self, manager, address, BLE_address, data):
self.manager = manager
self.address = address
self._BLE_address = BLE_address
self.name = name
self.type = type
self.model = model
self.dimmable = dimmable
self.room = room
self.firmware = firmware
self.data = data #{name, hardwareId, dimmable, room, firmware}
self.updateCallback = None
@@ -26,12 +51,37 @@ class PlejdDevice:
@property
def dim(self):
return self._dim
return self._dim/255
@property
def BLE_address(self):
return self._BLE_address
@property
def name(self):
return self.data["name"]
@property
def room(self):
return self.data["room"]
@property
def firmware(self):
return self.data["firmware"]
@property
def type(self):
return self.hardware_data.type
@property
def model(self):
return self.hardware_data.model
@property
def dimmable(self):
return self.hardware_data.dimmable and self.data["dimmable"] != False
@property
def hardware_data(self):
deviceType = HARDWARE_TYPES.get(self.data["hardwareId"], HARDWARE_TYPES["0"])
return deviceType
async def new_state(self, state, dim):
update = False
if state != self._state: