Skip to content

Commit c45a4ad

Browse files
committed
Migrate quirks, pass 24
1 parent a18dc5f commit c45a4ad

File tree

6 files changed

+236
-648
lines changed

6 files changed

+236
-648
lines changed

zhaquirks/adeo/color_controller.py

Lines changed: 110 additions & 177 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,10 @@
22

33
from typing import Any, Optional, Union
44

5-
from zigpy.profiles import zha
6-
from zigpy.quirks import CustomDevice
5+
from zigpy.quirks.v2 import CustomDeviceV2, QuirkBuilder
76
import zigpy.types as t
8-
from zigpy.zcl import foundation
9-
from zigpy.zcl.clusters.general import (
10-
Basic,
11-
Groups,
12-
Identify,
13-
LevelControl,
14-
OnOff,
15-
Ota,
16-
PowerConfiguration,
17-
Scenes,
18-
)
19-
from zigpy.zcl.clusters.homeautomation import Diagnostic
20-
from zigpy.zcl.clusters.lighting import Color
21-
from zigpy.zcl.clusters.lightlink import LightLink
7+
from zigpy.zcl import ClusterType, foundation
8+
from zigpy.zcl.clusters.general import Scenes
229
from zigpy.zcl.foundation import BaseCommandDefs
2310

2411
from zhaquirks import Bus, EventableCluster
@@ -36,16 +23,10 @@
3623
COMMAND_STEP_COLOR_TEMP,
3724
COMMAND_STEP_HUE,
3825
COMMAND_STEP_SATURATION,
39-
DEVICE_TYPE,
4026
DIM_DOWN,
4127
DIM_UP,
4228
ENDPOINT_ID,
43-
ENDPOINTS,
44-
INPUT_CLUSTERS,
45-
MODELS_INFO,
46-
OUTPUT_CLUSTERS,
4729
PARAMS,
48-
PROFILE_ID,
4930
SHORT_PRESS,
5031
TURN_OFF,
5132
TURN_ON,
@@ -106,168 +87,120 @@ def __init__(self, *args, **kwargs):
10687
self.endpoint.device.scenes_bus.add_listener(self)
10788

10889

109-
class AdeoColorController(CustomDevice):
90+
class AdeoColorController(CustomDeviceV2):
11091
"""Custom device representing ADEO color controller."""
11192

11293
def __init__(self, *args, **kwargs):
11394
"""Init."""
11495
self.scenes_bus = Bus()
11596
super().__init__(*args, **kwargs)
11697

117-
signature = {
118-
# <SimpleDescriptor endpoint=1 profile=260 device_type=2048
119-
# device_version=1
120-
# input_clusters=[0, 1, 3, 2821, 4096, 64769]
121-
# output_clusters=[3, 4, 6, 8, 25, 768, 4096]>
122-
MODELS_INFO: [("ADEO", "LXEK-5"), ("ADEO", "ZBEK-26")],
123-
ENDPOINTS: {
124-
1: {
125-
PROFILE_ID: zha.PROFILE_ID, # 260
126-
DEVICE_TYPE: zha.DeviceType.COLOR_CONTROLLER, # 2048
127-
INPUT_CLUSTERS: [
128-
Basic.cluster_id, # 0
129-
PowerConfiguration.cluster_id, # 1
130-
Identify.cluster_id, # 3
131-
Diagnostic.cluster_id, # 2821
132-
LightLink.cluster_id, # 4096
133-
0xFD01, # 64769
134-
],
135-
OUTPUT_CLUSTERS: [
136-
Identify.cluster_id, # 3
137-
Groups.cluster_id, # 4
138-
OnOff.cluster_id, # 6
139-
LevelControl.cluster_id, # 8
140-
Ota.cluster_id, # 25
141-
Color.cluster_id, # 768
142-
LightLink.cluster_id, # 4096
143-
],
144-
}
145-
},
146-
}
147-
148-
replacement = {
149-
ENDPOINTS: {
150-
1: {
151-
PROFILE_ID: zha.PROFILE_ID,
152-
DEVICE_TYPE: zha.DeviceType.COLOR_CONTROLLER,
153-
INPUT_CLUSTERS: [
154-
Basic.cluster_id, # 0
155-
PowerConfiguration.cluster_id, # 1
156-
Identify.cluster_id, # 3
157-
Diagnostic.cluster_id, # 2821
158-
LightLink.cluster_id, # 4096
159-
0xFD01, # 64769
160-
],
161-
OUTPUT_CLUSTERS: [
162-
Identify.cluster_id, # 3
163-
Groups.cluster_id, # 4
164-
AdeoScenesCluster, # 5
165-
OnOff.cluster_id, # 6
166-
LevelControl.cluster_id, # 8
167-
Ota.cluster_id, # 25
168-
Color.cluster_id, # 768
169-
LightLink.cluster_id, # 4096
170-
AdeoManufacturerCluster, # 65024
171-
],
172-
}
173-
},
174-
}
17598

176-
device_automation_triggers = {
177-
(SHORT_PRESS, TURN_ON): {
178-
COMMAND: COMMAND_ON,
179-
CLUSTER_ID: 6, # OnOff.cluster_id
180-
ENDPOINT_ID: 1,
181-
ARGS: [],
182-
},
183-
(SHORT_PRESS, TURN_OFF): {
184-
COMMAND: COMMAND_OFF,
185-
CLUSTER_ID: 6, # OnOff.cluster_id
186-
ENDPOINT_ID: 1,
187-
ARGS: [],
188-
},
189-
(SHORT_PRESS, DIM_UP): {
190-
COMMAND: COMMAND_STEP,
191-
CLUSTER_ID: 8, # LevelControl.cluster_id
192-
ENDPOINT_ID: 1,
193-
PARAMS: {"step_mode": 0},
194-
},
195-
(SHORT_PRESS, DIM_DOWN): {
196-
COMMAND: COMMAND_STEP,
197-
CLUSTER_ID: 8, # LevelControl.cluster_id
198-
ENDPOINT_ID: 1,
199-
PARAMS: {"step_mode": 1},
200-
},
201-
(SHORT_PRESS, COLOR_UP): {
202-
COMMAND: COMMAND_STEP_COLOR_TEMP,
203-
CLUSTER_ID: 768, # Color.cluster_id
204-
ENDPOINT_ID: 1,
205-
PARAMS: {
206-
"step_mode": 3,
207-
"step_size": 22,
208-
"transition_time": 5,
209-
"color_temp_min_mireds": 153,
210-
"color_temp_max_mireds": 370,
99+
(
100+
QuirkBuilder("ADEO", "LXEK-5")
101+
.applies_to("ADEO", "ZBEK-26")
102+
.device_class(AdeoColorController)
103+
.replaces(AdeoScenesCluster, cluster_type=ClusterType.Client, endpoint_id=1)
104+
.adds(AdeoManufacturerCluster, cluster_type=ClusterType.Client, endpoint_id=1)
105+
.device_automation_triggers(
106+
{
107+
(SHORT_PRESS, TURN_ON): {
108+
COMMAND: COMMAND_ON,
109+
CLUSTER_ID: 6, # OnOff.cluster_id
110+
ENDPOINT_ID: 1,
111+
ARGS: [],
112+
},
113+
(SHORT_PRESS, TURN_OFF): {
114+
COMMAND: COMMAND_OFF,
115+
CLUSTER_ID: 6, # OnOff.cluster_id
116+
ENDPOINT_ID: 1,
117+
ARGS: [],
118+
},
119+
(SHORT_PRESS, DIM_UP): {
120+
COMMAND: COMMAND_STEP,
121+
CLUSTER_ID: 8, # LevelControl.cluster_id
122+
ENDPOINT_ID: 1,
123+
PARAMS: {"step_mode": 0},
124+
},
125+
(SHORT_PRESS, DIM_DOWN): {
126+
COMMAND: COMMAND_STEP,
127+
CLUSTER_ID: 8, # LevelControl.cluster_id
128+
ENDPOINT_ID: 1,
129+
PARAMS: {"step_mode": 1},
130+
},
131+
(SHORT_PRESS, COLOR_UP): {
132+
COMMAND: COMMAND_STEP_COLOR_TEMP,
133+
CLUSTER_ID: 768, # Color.cluster_id
134+
ENDPOINT_ID: 1,
135+
PARAMS: {
136+
"step_mode": 3,
137+
"step_size": 22,
138+
"transition_time": 5,
139+
"color_temp_min_mireds": 153,
140+
"color_temp_max_mireds": 370,
141+
},
142+
},
143+
(SHORT_PRESS, COLOR_DOWN): {
144+
COMMAND: COMMAND_STEP_COLOR_TEMP,
145+
CLUSTER_ID: 768, # Color.cluster_id
146+
ENDPOINT_ID: 1,
147+
PARAMS: {
148+
"step_mode": 1,
149+
"step_size": 22,
150+
"transition_time": 5,
151+
"color_temp_min_mireds": 153,
152+
"color_temp_max_mireds": 370,
153+
},
154+
},
155+
(SHORT_PRESS, SATURATION_UP): {
156+
COMMAND: COMMAND_STEP_SATURATION,
157+
CLUSTER_ID: 768, # Color.cluster_id
158+
ENDPOINT_ID: 1,
159+
PARAMS: {"step_mode": 1},
211160
},
212-
},
213-
(SHORT_PRESS, COLOR_DOWN): {
214-
COMMAND: COMMAND_STEP_COLOR_TEMP,
215-
CLUSTER_ID: 768, # Color.cluster_id
216-
ENDPOINT_ID: 1,
217-
PARAMS: {
218-
"step_mode": 1,
219-
"step_size": 22,
220-
"transition_time": 5,
221-
"color_temp_min_mireds": 153,
222-
"color_temp_max_mireds": 370,
161+
(SHORT_PRESS, SATURATION_DOWN): {
162+
COMMAND: COMMAND_STEP_SATURATION,
163+
CLUSTER_ID: 768, # Color.cluster_id
164+
ENDPOINT_ID: 1,
165+
PARAMS: {"step_mode": 3},
223166
},
224-
},
225-
(SHORT_PRESS, SATURATION_UP): {
226-
COMMAND: COMMAND_STEP_SATURATION,
227-
CLUSTER_ID: 768, # Color.cluster_id
228-
ENDPOINT_ID: 1,
229-
PARAMS: {"step_mode": 1},
230-
},
231-
(SHORT_PRESS, SATURATION_DOWN): {
232-
COMMAND: COMMAND_STEP_SATURATION,
233-
CLUSTER_ID: 768, # Color.cluster_id
234-
ENDPOINT_ID: 1,
235-
PARAMS: {"step_mode": 3},
236-
},
237-
(SHORT_PRESS, HUE_LEFT): {
238-
COMMAND: COMMAND_STEP_HUE,
239-
CLUSTER_ID: 768, # Color.cluster_id
240-
ENDPOINT_ID: 1,
241-
PARAMS: {"step_mode": 3},
242-
},
243-
(SHORT_PRESS, HUE_RIGHT): {
244-
COMMAND: COMMAND_STEP_HUE,
245-
CLUSTER_ID: 768, # Color.cluster_id
246-
ENDPOINT_ID: 1,
247-
PARAMS: {"step_mode": 1},
248-
},
249-
(SHORT_PRESS, BUTTON_1): {
250-
COMMAND: "view",
251-
CLUSTER_ID: 5, # Scenes.cluster_id
252-
ENDPOINT_ID: 1,
253-
ARGS: [0, 0xA],
254-
},
255-
(SHORT_PRESS, BUTTON_2): {
256-
COMMAND: "view",
257-
CLUSTER_ID: 5, # Scenes.cluster_id
258-
ENDPOINT_ID: 1,
259-
ARGS: [0, 0xB],
260-
},
261-
(SHORT_PRESS, BUTTON_3): {
262-
COMMAND: "view",
263-
CLUSTER_ID: 5, # Scenes.cluster_id
264-
ENDPOINT_ID: 1,
265-
ARGS: [0, 0xC],
266-
},
267-
(SHORT_PRESS, BUTTON_4): {
268-
COMMAND: "view",
269-
CLUSTER_ID: 5, # Scenes.cluster_id
270-
ENDPOINT_ID: 1,
271-
ARGS: [0, 0xD],
272-
},
273-
}
167+
(SHORT_PRESS, HUE_LEFT): {
168+
COMMAND: COMMAND_STEP_HUE,
169+
CLUSTER_ID: 768, # Color.cluster_id
170+
ENDPOINT_ID: 1,
171+
PARAMS: {"step_mode": 3},
172+
},
173+
(SHORT_PRESS, HUE_RIGHT): {
174+
COMMAND: COMMAND_STEP_HUE,
175+
CLUSTER_ID: 768, # Color.cluster_id
176+
ENDPOINT_ID: 1,
177+
PARAMS: {"step_mode": 1},
178+
},
179+
(SHORT_PRESS, BUTTON_1): {
180+
COMMAND: "view",
181+
CLUSTER_ID: 5, # Scenes.cluster_id
182+
ENDPOINT_ID: 1,
183+
ARGS: [0, 0xA],
184+
},
185+
(SHORT_PRESS, BUTTON_2): {
186+
COMMAND: "view",
187+
CLUSTER_ID: 5, # Scenes.cluster_id
188+
ENDPOINT_ID: 1,
189+
ARGS: [0, 0xB],
190+
},
191+
(SHORT_PRESS, BUTTON_3): {
192+
COMMAND: "view",
193+
CLUSTER_ID: 5, # Scenes.cluster_id
194+
ENDPOINT_ID: 1,
195+
ARGS: [0, 0xC],
196+
},
197+
(SHORT_PRESS, BUTTON_4): {
198+
COMMAND: "view",
199+
CLUSTER_ID: 5, # Scenes.cluster_id
200+
ENDPOINT_ID: 1,
201+
ARGS: [0, 0xD],
202+
},
203+
}
204+
)
205+
.add_to_registry()
206+
)

0 commit comments

Comments
 (0)