6
6
from zigpy .zcl .clusters .closures import WindowCovering
7
7
from zigpy .zcl .clusters .general import Basic
8
8
from zigpy .zcl .clusters .homeautomation import Diagnostic
9
+ from zigpy .zcl .foundation import ZCLAttributeDef
9
10
10
11
_LOGGER = logging .getLogger (__name__ )
11
12
12
- SE = "Schneider Electric"
13
+ SE_MANUF_NAME = "Schneider Electric"
14
+ SE_MANUF_ID = 4190
13
15
14
16
15
17
class SEManufCluster (CustomCluster ):
@@ -20,101 +22,259 @@ class SEManufCluster(CustomCluster):
20
22
21
23
22
24
class SEBasicCluster (SEManufCluster , Basic ):
23
- ATT_ID_E001 = 0xE001
24
- ATT_ID_E002 = 0xE002
25
- ATT_ID_E004 = 0xE004
26
- ATT_ID_E007 = 0xE007
27
- ATT_ID_E008 = 0xE008
28
- ATT_ID_E009 = 0xE009
29
- ATT_ID_E00A = 0xE00A
30
- ATT_ID_E00B = 0xE00B
31
25
32
- attributes = Basic .attributes .copy ()
26
+ attributes : dict [ int , ZCLAttributeDef ] = Basic .attributes .copy ()
33
27
34
28
attributes .update (
35
29
{
36
- ATT_ID_E001 : ("57345" , t .CharacterString )
30
+ 0xE001 : ZCLAttributeDef (
31
+ id = 0xE001 ,
32
+ name = "57345" ,
33
+ type = t .CharacterString ,
34
+ access = "r" ,
35
+ is_manufacturer_specific = True ,
36
+ )
37
37
}, # attribute_name:"57345" # ex: "002.004.016 R
38
38
{
39
- ATT_ID_E002 : ("57346" , t .CharacterString )
39
+ 0xE002 : ZCLAttributeDef (
40
+ id = 0xE002 ,
41
+ name = "57346" ,
42
+ type = t .CharacterString ,
43
+ is_manufacturer_specific = True ,
44
+ )
40
45
}, # attribute_name:"57346" # ex: "001.000.000"
41
46
{
42
- ATT_ID_E004 : ("57348" , t .CharacterString )
47
+ 0xE004 : ZCLAttributeDef (
48
+ id = 0xE004 ,
49
+ name = "57348" ,
50
+ type = t .CharacterString ,
51
+ access = "r" ,
52
+ is_manufacturer_specific = True ,
53
+ )
43
54
}, # attribute_name:"57348" # ex: "213249FEFF5ECFD"
44
- {ATT_ID_E007 : ("57351" , t .enum16 )}, # attribute_name:"57351"
45
55
{
46
- ATT_ID_E008 : ("57352" , t .CharacterString )
56
+ 0xE007 : ZCLAttributeDef (
57
+ id = 0xE007 ,
58
+ name = "57351" ,
59
+ type = t .enum16 ,
60
+ access = "r" ,
61
+ is_manufacturer_specific = True ,
62
+ )
63
+ }, # attribute_name:"57351"
64
+ {
65
+ 0xE008 : ZCLAttributeDef (
66
+ id = 0xE008 ,
67
+ name = "57352" ,
68
+ type = t .CharacterString ,
69
+ access = "r" ,
70
+ is_manufacturer_specific = True ,
71
+ )
47
72
}, # attribute_name:"57352" # ex: "Wiser Light"
48
73
{
49
- ATT_ID_E009 : ("57353" , t .CharacterString )
74
+ 0xE009 : ZCLAttributeDef (
75
+ id = 0xE009 ,
76
+ name = "57353" ,
77
+ type = t .CharacterString ,
78
+ access = "r" ,
79
+ is_manufacturer_specific = True ,
80
+ )
50
81
}, # attribute_name:"57353" # ex: "NHPB/SHUTTER/1"
51
82
{
52
- ATT_ID_E00A : ("57354" , t .CharacterString )
83
+ 0xE00A : ZCLAttributeDef (
84
+ id = 0xE00A ,
85
+ name = "57354" ,
86
+ type = t .CharacterString ,
87
+ access = "r" ,
88
+ is_manufacturer_specific = True ,
89
+ )
53
90
}, # attribute_name:"57354" # ex: "Wiser Home"
54
- {ATT_ID_E00B : ("57355" , t .CharacterString )}, # attribute_name:"57355"
91
+ {
92
+ 0xE00B : ZCLAttributeDef (
93
+ id = 0xE00B ,
94
+ name = "57355" ,
95
+ type = t .CharacterString ,
96
+ access = "r" ,
97
+ is_manufacturer_specific = True ,
98
+ )
99
+ }, # attribute_name:"57355"
55
100
)
56
101
57
102
58
- class SEManufSwitchCluster (SEManufCluster ):
59
- name = "Schneider Electric Manufacturer Specicific"
103
+ class SESpecificCluster (SEManufCluster ):
60
104
cluster_id = 0xFF17
61
105
62
- ATT_ID_0000 = 0x0000
63
- ATT_ID_0001 = 0x0001
64
- ATT_ID_0010 = 0x0010
65
- ATT_ID_0011 = 0x0011
66
- ATT_ID_0020 = 0x0020
67
- ATT_ID_0021 = 0x0021
68
- ATT_ID_FFFD = 0xFFFD
69
-
70
106
attributes = {
71
- {ATT_ID_0000 : ("0" , t .enum8 )}, # attribute_name:"0"
72
- {ATT_ID_0001 : ("1" , t .enum8 )}, # attribute_name:"1"
73
- {ATT_ID_0010 : ("16" , t .uint8_t )}, # attribute_name:"16"
74
- {ATT_ID_0011 : ("17" , t .uint16_t )}, # attribute_name:"17"
75
- {ATT_ID_0020 : ("32" , t .uint8_t )}, # attribute_name:"32"
76
- {ATT_ID_0021 : ("33" , t .uint16_t )}, # attribute_name:"33"
77
- {ATT_ID_FFFD : ("65533" , t .uint16_t )}, # attribute_name:"65533"
107
+ {
108
+ 0x0000 : ZCLAttributeDef (
109
+ id = 0x0000 ,
110
+ name = "0" ,
111
+ type = t .enum8 ,
112
+ access = "rw" ,
113
+ is_manufacturer_specific = True ,
114
+ )
115
+ }, # attribute_name:"0"
116
+ {
117
+ 0x0001 : ZCLAttributeDef (
118
+ id = 0x0001 ,
119
+ name = "1" ,
120
+ type = t .enum8 ,
121
+ access = "rw" ,
122
+ is_manufacturer_specific = True ,
123
+ )
124
+ }, # attribute_name:"1"
125
+ {
126
+ 0x0010 : ZCLAttributeDef (
127
+ id = 0x0010 ,
128
+ name = "16" ,
129
+ type = t .uint8_t ,
130
+ access = "rw" ,
131
+ is_manufacturer_specific = True ,
132
+ )
133
+ }, # attribute_name:"16"
134
+ {
135
+ 0x0011 : ZCLAttributeDef (
136
+ id = 0x0011 ,
137
+ name = "17" ,
138
+ type = t .uint16_t ,
139
+ access = "rw" ,
140
+ is_manufacturer_specific = True ,
141
+ )
142
+ }, # attribute_name:"17"
143
+ {
144
+ 0x0020 : ZCLAttributeDef (
145
+ id = 0x0020 ,
146
+ name = "32" ,
147
+ type = t .uint8_t ,
148
+ access = "rw" ,
149
+ is_manufacturer_specific = True ,
150
+ )
151
+ }, # attribute_name:"32"
152
+ {
153
+ 0x0021 : ZCLAttributeDef (
154
+ id = 0x0021 ,
155
+ name = "33" ,
156
+ type = t .uint16_t ,
157
+ access = "rw" ,
158
+ is_manufacturer_specific = True ,
159
+ )
160
+ }, # attribute_name:"33"
161
+ {
162
+ 0xFFFD : ZCLAttributeDef (
163
+ id = 0xFFFD ,
164
+ name = "65533" ,
165
+ type = t .uint16_t ,
166
+ access = "r" ,
167
+ is_manufacturer_specific = True ,
168
+ )
169
+ }, # attribute_name:"65533"
78
170
}
79
171
80
172
81
173
class SEWindowCover (CustomCluster , WindowCovering ):
82
174
"""Manufacturer Specific Cluster of Device cover."""
83
175
84
- ATT_ID_FFFD = 0xFFFD
85
- ATT_ID_E000 = 0xE000
86
- ATT_ID_E010 = 0xE010
87
- ATT_ID_E012 = 0xE012
88
- ATT_ID_E013 = 0xE013
89
- ATT_ID_E014 = 0xE014
90
- ATT_ID_E015 = 0xE015
91
- ATT_ID_E016 = 0xE016
92
- ATT_ID_E017 = 0xE017
176
+ # TODO: Reverse lift percentage
93
177
94
- attributes = WindowCovering .attributes .copy ()
178
+ attributes : dict [ int , ZCLAttributeDef ] = WindowCovering .attributes .copy ()
95
179
96
180
attributes .update (
97
181
{
98
- ATT_ID_FFFD : ("57344" , t .uint16_t )
99
- }, # attribute_name:"57344" # seems to be lift_duration
100
- {ATT_ID_E000 : ("65533" , t .uint16_t )}, # attribute_name:"65533"
101
- {ATT_ID_E010 : ("57360" , t .bitmap8 )}, # attribute_name:"57360"
102
- {ATT_ID_E012 : ("57362" , t .uint16_t )}, # attribute_name:"57362"
103
- {ATT_ID_E013 : ("57363" , t .bitmap8 )}, # attribute_name:"57363"
104
- {ATT_ID_E014 : ("57364" , t .uint16_t )}, # attribute_name:"57364"
105
- {ATT_ID_E015 : ("57365" , t .uint16_t )}, # attribute_name:"57365"
106
- {ATT_ID_E016 : ("57366" , t .uint16_t )}, # attribute_name:"57366"
107
- {ATT_ID_E017 : ("57367" , t .uint8_t )}, # attribute_name:"57367"
182
+ 0xFFFD : ZCLAttributeDef (
183
+ id = 0xFFFD ,
184
+ name = "lift_duration" ,
185
+ type = t .uint16_t ,
186
+ access = "rw" ,
187
+ is_manufacturer_specific = True ,
188
+ )
189
+ }, # attribute_name:"65533"
190
+ {
191
+ 0xE000 : ZCLAttributeDef (
192
+ id = 0xE000 ,
193
+ name = "57344" ,
194
+ type = t .uint16_t ,
195
+ access = "rw" ,
196
+ is_manufacturer_specific = True ,
197
+ )
198
+ }, # attribute_name:"57344"
199
+ {
200
+ 0xE010 : ZCLAttributeDef (
201
+ id = 0xE010 ,
202
+ name = "57360" ,
203
+ type = t .bitmap8 ,
204
+ access = "r" ,
205
+ is_manufacturer_specific = True ,
206
+ )
207
+ }, # attribute_name:"57360"
208
+ {
209
+ 0xE012 : ZCLAttributeDef (
210
+ id = 0xE012 ,
211
+ name = "57362" ,
212
+ type = t .uint16_t ,
213
+ access = "rw" ,
214
+ is_manufacturer_specific = True ,
215
+ )
216
+ }, # attribute_name:"57362"
217
+ {
218
+ 0xE013 : ZCLAttributeDef (
219
+ id = 0xE013 ,
220
+ name = "57363" ,
221
+ type = t .bitmap8 ,
222
+ access = "r" ,
223
+ is_manufacturer_specific = True ,
224
+ )
225
+ }, # attribute_name:"57363"
226
+ {
227
+ 0xE014 : ZCLAttributeDef (
228
+ id = 0xE014 ,
229
+ name = "57364" ,
230
+ type = t .uint16_t ,
231
+ access = "rw" ,
232
+ is_manufacturer_specific = True ,
233
+ )
234
+ }, # attribute_name:"57364"
235
+ {
236
+ 0xE015 : ZCLAttributeDef (
237
+ id = 0xE015 ,
238
+ name = "57365" ,
239
+ type = t .uint16_t ,
240
+ access = "rw" ,
241
+ is_manufacturer_specific = True ,
242
+ )
243
+ }, # attribute_name:"57365"
244
+ {
245
+ 0xE016 : ZCLAttributeDef (
246
+ id = 0xE016 ,
247
+ name = "57366" ,
248
+ type = t .uint16_t ,
249
+ access = "rw" ,
250
+ is_manufacturer_specific = True ,
251
+ )
252
+ }, # attribute_name:"57366"
253
+ {
254
+ 0xE017 : ZCLAttributeDef (
255
+ id = 0xE017 ,
256
+ name = "57367" ,
257
+ type = t .uint8_t ,
258
+ access = "rw" ,
259
+ is_manufacturer_specific = True ,
260
+ )
261
+ }, # attribute_name:"57367"
108
262
)
109
263
110
264
111
265
class SEDiagnostic (CustomCluster , Diagnostic ):
112
266
113
- ATT_ID_FFFD = 0xFFFD
114
-
115
- attributes = Diagnostic .attributes .copy ()
267
+ attributes : dict [int , ZCLAttributeDef ] = Diagnostic .attributes .copy ()
116
268
117
269
# TODO: Check -> this attr don't seems to be manufacturer related (no "manf_id")
118
270
attributes .update (
119
- {ATT_ID_FFFD : ("65533" , t .uint16_t )}, # attribute_name:"65533"
271
+ {
272
+ 0xFFFD : ZCLAttributeDef (
273
+ id = 0xFFFD ,
274
+ name = "65533" ,
275
+ type = t .uint16_t ,
276
+ access = "r" ,
277
+ is_manufacturer_specific = True ,
278
+ )
279
+ }, # attribute_name:"65533"
120
280
)
0 commit comments