From f3bf6bbc3c392770cf94bc4203433031d7c6c494 Mon Sep 17 00:00:00 2001 From: jkerdreux-imt <jerome.kerdreux@imt-atlantique.fr> Date: Tue, 11 Feb 2025 18:15:35 +0100 Subject: [PATCH] Test the light API. --- .../protocols/ZwaveJS/xaal/zwavejs/devices.py | 27 ++++++++++++++++--- devices/protocols/ZwaveJS/xaal/zwavejs/gw.py | 4 +-- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/devices/protocols/ZwaveJS/xaal/zwavejs/devices.py b/devices/protocols/ZwaveJS/xaal/zwavejs/devices.py index 62dd1b06..4864a1f7 100644 --- a/devices/protocols/ZwaveJS/xaal/zwavejs/devices.py +++ b/devices/protocols/ZwaveJS/xaal/zwavejs/devices.py @@ -32,7 +32,8 @@ def value_is_command_class(value: Value, command_class: COMMAND_CLASS): def value_is_value(value: Value): - return value.property_ in ["value", "currentValue"] + # return value.property_ in ["value", "currentValue", "targetValue"] + return value.property_ in ["targetValue"] def build_devices(node: Node, eng: AsyncEngine): @@ -41,7 +42,7 @@ def build_devices(node: Node, eng: AsyncEngine): # node.on("value updated", self.value_updated) # pdb.set_trace() # - + assert BASE_ADDR base_addr = BASE_ADDR + node.node_id * 128 for k in node.values: value = node.values.get(k) @@ -54,6 +55,9 @@ def build_devices(node: Node, eng: AsyncEngine): if value_is_command_class(value, COMMAND_CLASS.SWITCH_BINARY): obj = PowerRelay(node, value, base_addr) + if value_is_command_class(value, COMMAND_CLASS.SWITCH_MULTILEVEL): + obj = Lamp(node, value, base_addr) + if value_is_command_class(value, COMMAND_CLASS.METER): obj = PowerMeter(node, value, base_addr) pass @@ -61,6 +65,7 @@ def build_devices(node: Node, eng: AsyncEngine): if obj is not None and obj.dev: obj.setup() eng.add_device(obj.dev) + logger.warning(obj.dev) # if node.node_id == 5: # pdb.set_trace() @@ -100,7 +105,6 @@ class PowerRelay(ZwaveDevice): self.dev.attributes["power"] = value.value async def turn_on(self): - pdb.set_trace() await self.node.async_set_value(self.state, True) async def turn_off(self): @@ -122,3 +126,20 @@ class PowerMeter(ZwaveDevice): value = event['value'] if self.power == value: self.dev.attributes["power"] = value.value + + +class Lamp(ZwaveDevice): + def __init__(self, node: Node, value: Value, base_addr: bindings.UUID): + super().__init__(node) + dev = devices.lamp(base_addr) + dev.methods["turn_on"] = self.turn_on + dev.methods["turn_off"] = self.turn_off + dev.attributes["light"] = value.value + self.dev = dev + self.state = value + + async def turn_on(self): + await self.node.async_set_value(self.state, 99) + + async def turn_off(self): + await self.node.async_set_value(self.state, 0) diff --git a/devices/protocols/ZwaveJS/xaal/zwavejs/gw.py b/devices/protocols/ZwaveJS/xaal/zwavejs/gw.py index d5cfdee1..8149fbe6 100644 --- a/devices/protocols/ZwaveJS/xaal/zwavejs/gw.py +++ b/devices/protocols/ZwaveJS/xaal/zwavejs/gw.py @@ -26,8 +26,8 @@ logger = logging.getLogger(__name__) logging.getLogger("zwave_js_server").setLevel(logging.WARNING) -URL = "ws://10.77.3.143:3000" -# URL = "ws://localhost:3000" +# URL = "ws://10.77.3.143:3000" +URL = "ws://localhost:3000" DEBUG = True -- GitLab