matter-python-client 1.5.2__py3-none-any.whl → 1.5.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
chip/clusters/Objects.py CHANGED
@@ -182,5 +182,10 @@ __all__ = [
182
182
  "WiFiNetworkDiagnostics",
183
183
  "WiFiNetworkManagement",
184
184
  "WindowCovering",
185
+ "YeelightBasicCluster",
186
+ "YeelightBasicConfigCluster",
187
+ "YeelightCubeControlCluster",
188
+ "YeelightEnhancedColorEffectConfigV2Cluster",
189
+ "YeelightOverTheAirCluster",
185
190
  "ZoneManagement",
186
191
  ]
@@ -0,0 +1,171 @@
1
+ """YeelightBasicCluster cluster definition (auto-generated, DO NOT edit)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import typing
6
+ from dataclasses import dataclass, field
7
+ from enum import IntFlag
8
+
9
+ from ... import ChipUtility
10
+ from ...clusters.enum import MatterIntEnum
11
+ from ...tlv import float32, uint
12
+ from ..ClusterObjects import (Cluster, ClusterAttributeDescriptor, ClusterCommand, ClusterEvent, ClusterObject,
13
+ ClusterObjectDescriptor, ClusterObjectFieldDescriptor)
14
+ from ..Types import Nullable, NullValue
15
+
16
+
17
+ @dataclass
18
+ class YeelightBasicCluster(Cluster):
19
+ id: typing.ClassVar[int] = 0x1312FC00
20
+
21
+ @ChipUtility.classproperty
22
+ def descriptor(cls) -> ClusterObjectDescriptor:
23
+ return ClusterObjectDescriptor(
24
+ Fields=[
25
+ ClusterObjectFieldDescriptor(Label="yeelightID", Tag=0x13120000, Type=typing.Optional[uint]),
26
+ ClusterObjectFieldDescriptor(Label="softwareVersion", Tag=0x13120001, Type=typing.Optional[uint]),
27
+ ClusterObjectFieldDescriptor(Label="softwareVersionString", Tag=0x13120002, Type=typing.Optional[str]),
28
+ ClusterObjectFieldDescriptor(Label="generatedCommandList", Tag=0x0000FFF8, Type=typing.List[uint]),
29
+ ClusterObjectFieldDescriptor(Label="acceptedCommandList", Tag=0x0000FFF9, Type=typing.List[uint]),
30
+ ClusterObjectFieldDescriptor(Label="attributeList", Tag=0x0000FFFB, Type=typing.List[uint]),
31
+ ClusterObjectFieldDescriptor(Label="featureMap", Tag=0x0000FFFC, Type=uint),
32
+ ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint),
33
+ ])
34
+
35
+ yeelightID: typing.Optional[uint] = None
36
+ softwareVersion: typing.Optional[uint] = None
37
+ softwareVersionString: typing.Optional[str] = None
38
+ generatedCommandList: typing.List[uint] = field(default_factory=lambda: [])
39
+ acceptedCommandList: typing.List[uint] = field(default_factory=lambda: [])
40
+ attributeList: typing.List[uint] = field(default_factory=lambda: [])
41
+ featureMap: uint = 0
42
+ clusterRevision: uint = 0
43
+
44
+ class Attributes:
45
+ @dataclass
46
+ class YeelightID(ClusterAttributeDescriptor):
47
+ @ChipUtility.classproperty
48
+ def cluster_id(cls) -> int:
49
+ return 0x1312FC00
50
+
51
+ @ChipUtility.classproperty
52
+ def attribute_id(cls) -> int:
53
+ return 0x13120000
54
+
55
+ @ChipUtility.classproperty
56
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
57
+ return ClusterObjectFieldDescriptor(Type=typing.Optional[uint])
58
+
59
+ value: typing.Optional[uint] = None
60
+
61
+ @dataclass
62
+ class SoftwareVersion(ClusterAttributeDescriptor):
63
+ @ChipUtility.classproperty
64
+ def cluster_id(cls) -> int:
65
+ return 0x1312FC00
66
+
67
+ @ChipUtility.classproperty
68
+ def attribute_id(cls) -> int:
69
+ return 0x13120001
70
+
71
+ @ChipUtility.classproperty
72
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
73
+ return ClusterObjectFieldDescriptor(Type=typing.Optional[uint])
74
+
75
+ value: typing.Optional[uint] = None
76
+
77
+ @dataclass
78
+ class SoftwareVersionString(ClusterAttributeDescriptor):
79
+ @ChipUtility.classproperty
80
+ def cluster_id(cls) -> int:
81
+ return 0x1312FC00
82
+
83
+ @ChipUtility.classproperty
84
+ def attribute_id(cls) -> int:
85
+ return 0x13120002
86
+
87
+ @ChipUtility.classproperty
88
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
89
+ return ClusterObjectFieldDescriptor(Type=typing.Optional[str])
90
+
91
+ value: typing.Optional[str] = None
92
+
93
+ @dataclass
94
+ class GeneratedCommandList(ClusterAttributeDescriptor):
95
+ @ChipUtility.classproperty
96
+ def cluster_id(cls) -> int:
97
+ return 0x1312FC00
98
+
99
+ @ChipUtility.classproperty
100
+ def attribute_id(cls) -> int:
101
+ return 0x0000FFF8
102
+
103
+ @ChipUtility.classproperty
104
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
105
+ return ClusterObjectFieldDescriptor(Type=typing.List[uint])
106
+
107
+ value: typing.List[uint] = field(default_factory=lambda: [])
108
+
109
+ @dataclass
110
+ class AcceptedCommandList(ClusterAttributeDescriptor):
111
+ @ChipUtility.classproperty
112
+ def cluster_id(cls) -> int:
113
+ return 0x1312FC00
114
+
115
+ @ChipUtility.classproperty
116
+ def attribute_id(cls) -> int:
117
+ return 0x0000FFF9
118
+
119
+ @ChipUtility.classproperty
120
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
121
+ return ClusterObjectFieldDescriptor(Type=typing.List[uint])
122
+
123
+ value: typing.List[uint] = field(default_factory=lambda: [])
124
+
125
+ @dataclass
126
+ class AttributeList(ClusterAttributeDescriptor):
127
+ @ChipUtility.classproperty
128
+ def cluster_id(cls) -> int:
129
+ return 0x1312FC00
130
+
131
+ @ChipUtility.classproperty
132
+ def attribute_id(cls) -> int:
133
+ return 0x0000FFFB
134
+
135
+ @ChipUtility.classproperty
136
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
137
+ return ClusterObjectFieldDescriptor(Type=typing.List[uint])
138
+
139
+ value: typing.List[uint] = field(default_factory=lambda: [])
140
+
141
+ @dataclass
142
+ class FeatureMap(ClusterAttributeDescriptor):
143
+ @ChipUtility.classproperty
144
+ def cluster_id(cls) -> int:
145
+ return 0x1312FC00
146
+
147
+ @ChipUtility.classproperty
148
+ def attribute_id(cls) -> int:
149
+ return 0x0000FFFC
150
+
151
+ @ChipUtility.classproperty
152
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
153
+ return ClusterObjectFieldDescriptor(Type=uint)
154
+
155
+ value: uint = 0
156
+
157
+ @dataclass
158
+ class ClusterRevision(ClusterAttributeDescriptor):
159
+ @ChipUtility.classproperty
160
+ def cluster_id(cls) -> int:
161
+ return 0x1312FC00
162
+
163
+ @ChipUtility.classproperty
164
+ def attribute_id(cls) -> int:
165
+ return 0x0000FFFD
166
+
167
+ @ChipUtility.classproperty
168
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
169
+ return ClusterObjectFieldDescriptor(Type=uint)
170
+
171
+ value: uint = 0
@@ -0,0 +1,192 @@
1
+ """YeelightBasicConfigCluster cluster definition (auto-generated, DO NOT edit)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import typing
6
+ from dataclasses import dataclass, field
7
+ from enum import IntFlag
8
+
9
+ from ... import ChipUtility
10
+ from ...clusters.enum import MatterIntEnum
11
+ from ...tlv import float32, uint
12
+ from ..ClusterObjects import (Cluster, ClusterAttributeDescriptor, ClusterCommand, ClusterEvent, ClusterObject,
13
+ ClusterObjectDescriptor, ClusterObjectFieldDescriptor)
14
+ from ..Types import Nullable, NullValue
15
+
16
+
17
+ @dataclass
18
+ class YeelightBasicConfigCluster(Cluster):
19
+ id: typing.ClassVar[int] = 0x1312FC01
20
+
21
+ @ChipUtility.classproperty
22
+ def descriptor(cls) -> ClusterObjectDescriptor:
23
+ return ClusterObjectDescriptor(
24
+ Fields=[
25
+ ClusterObjectFieldDescriptor(Label="lanControl", Tag=0x13120001, Type=typing.Optional[bool]),
26
+ ClusterObjectFieldDescriptor(Label="micMusicOnOff", Tag=0x13120002, Type=typing.Optional[bool]),
27
+ ClusterObjectFieldDescriptor(Label="micMusicEffectID", Tag=0x13120003, Type=typing.Optional[uint]),
28
+ ClusterObjectFieldDescriptor(Label="generatedCommandList", Tag=0x0000FFF8, Type=typing.List[uint]),
29
+ ClusterObjectFieldDescriptor(Label="acceptedCommandList", Tag=0x0000FFF9, Type=typing.List[uint]),
30
+ ClusterObjectFieldDescriptor(Label="attributeList", Tag=0x0000FFFB, Type=typing.List[uint]),
31
+ ClusterObjectFieldDescriptor(Label="featureMap", Tag=0x0000FFFC, Type=uint),
32
+ ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint),
33
+ ])
34
+
35
+ lanControl: typing.Optional[bool] = None
36
+ micMusicOnOff: typing.Optional[bool] = None
37
+ micMusicEffectID: typing.Optional[uint] = None
38
+ generatedCommandList: typing.List[uint] = field(default_factory=lambda: [])
39
+ acceptedCommandList: typing.List[uint] = field(default_factory=lambda: [])
40
+ attributeList: typing.List[uint] = field(default_factory=lambda: [])
41
+ featureMap: uint = 0
42
+ clusterRevision: uint = 0
43
+
44
+ class Commands:
45
+ @dataclass
46
+ class SetMicMusicMode(ClusterCommand):
47
+ cluster_id: typing.ClassVar[int] = 0x1312FC01
48
+ command_id: typing.ClassVar[int] = 0x13120000
49
+ is_client: typing.ClassVar[bool] = True
50
+ response_type: typing.ClassVar[typing.Optional[str]] = None
51
+
52
+ @ChipUtility.classproperty
53
+ def descriptor(cls) -> ClusterObjectDescriptor:
54
+ return ClusterObjectDescriptor(
55
+ Fields=[
56
+ ClusterObjectFieldDescriptor(Label="on", Tag=0, Type=bool),
57
+ ClusterObjectFieldDescriptor(Label="effectID", Tag=1, Type=typing.Optional[uint]),
58
+ ClusterObjectFieldDescriptor(Label="palette", Tag=2, Type=typing.Optional[typing.List[uint]]),
59
+ ])
60
+
61
+ on: bool = False
62
+ effectID: typing.Optional[uint] = None
63
+ palette: typing.Optional[typing.List[uint]] = None
64
+
65
+ class Attributes:
66
+ @dataclass
67
+ class LanControl(ClusterAttributeDescriptor):
68
+ @ChipUtility.classproperty
69
+ def cluster_id(cls) -> int:
70
+ return 0x1312FC01
71
+
72
+ @ChipUtility.classproperty
73
+ def attribute_id(cls) -> int:
74
+ return 0x13120001
75
+
76
+ @ChipUtility.classproperty
77
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
78
+ return ClusterObjectFieldDescriptor(Type=typing.Optional[bool])
79
+
80
+ value: typing.Optional[bool] = None
81
+
82
+ @dataclass
83
+ class MicMusicOnOff(ClusterAttributeDescriptor):
84
+ @ChipUtility.classproperty
85
+ def cluster_id(cls) -> int:
86
+ return 0x1312FC01
87
+
88
+ @ChipUtility.classproperty
89
+ def attribute_id(cls) -> int:
90
+ return 0x13120002
91
+
92
+ @ChipUtility.classproperty
93
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
94
+ return ClusterObjectFieldDescriptor(Type=typing.Optional[bool])
95
+
96
+ value: typing.Optional[bool] = None
97
+
98
+ @dataclass
99
+ class MicMusicEffectID(ClusterAttributeDescriptor):
100
+ @ChipUtility.classproperty
101
+ def cluster_id(cls) -> int:
102
+ return 0x1312FC01
103
+
104
+ @ChipUtility.classproperty
105
+ def attribute_id(cls) -> int:
106
+ return 0x13120003
107
+
108
+ @ChipUtility.classproperty
109
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
110
+ return ClusterObjectFieldDescriptor(Type=typing.Optional[uint])
111
+
112
+ value: typing.Optional[uint] = None
113
+
114
+ @dataclass
115
+ class GeneratedCommandList(ClusterAttributeDescriptor):
116
+ @ChipUtility.classproperty
117
+ def cluster_id(cls) -> int:
118
+ return 0x1312FC01
119
+
120
+ @ChipUtility.classproperty
121
+ def attribute_id(cls) -> int:
122
+ return 0x0000FFF8
123
+
124
+ @ChipUtility.classproperty
125
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
126
+ return ClusterObjectFieldDescriptor(Type=typing.List[uint])
127
+
128
+ value: typing.List[uint] = field(default_factory=lambda: [])
129
+
130
+ @dataclass
131
+ class AcceptedCommandList(ClusterAttributeDescriptor):
132
+ @ChipUtility.classproperty
133
+ def cluster_id(cls) -> int:
134
+ return 0x1312FC01
135
+
136
+ @ChipUtility.classproperty
137
+ def attribute_id(cls) -> int:
138
+ return 0x0000FFF9
139
+
140
+ @ChipUtility.classproperty
141
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
142
+ return ClusterObjectFieldDescriptor(Type=typing.List[uint])
143
+
144
+ value: typing.List[uint] = field(default_factory=lambda: [])
145
+
146
+ @dataclass
147
+ class AttributeList(ClusterAttributeDescriptor):
148
+ @ChipUtility.classproperty
149
+ def cluster_id(cls) -> int:
150
+ return 0x1312FC01
151
+
152
+ @ChipUtility.classproperty
153
+ def attribute_id(cls) -> int:
154
+ return 0x0000FFFB
155
+
156
+ @ChipUtility.classproperty
157
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
158
+ return ClusterObjectFieldDescriptor(Type=typing.List[uint])
159
+
160
+ value: typing.List[uint] = field(default_factory=lambda: [])
161
+
162
+ @dataclass
163
+ class FeatureMap(ClusterAttributeDescriptor):
164
+ @ChipUtility.classproperty
165
+ def cluster_id(cls) -> int:
166
+ return 0x1312FC01
167
+
168
+ @ChipUtility.classproperty
169
+ def attribute_id(cls) -> int:
170
+ return 0x0000FFFC
171
+
172
+ @ChipUtility.classproperty
173
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
174
+ return ClusterObjectFieldDescriptor(Type=uint)
175
+
176
+ value: uint = 0
177
+
178
+ @dataclass
179
+ class ClusterRevision(ClusterAttributeDescriptor):
180
+ @ChipUtility.classproperty
181
+ def cluster_id(cls) -> int:
182
+ return 0x1312FC01
183
+
184
+ @ChipUtility.classproperty
185
+ def attribute_id(cls) -> int:
186
+ return 0x0000FFFD
187
+
188
+ @ChipUtility.classproperty
189
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
190
+ return ClusterObjectFieldDescriptor(Type=uint)
191
+
192
+ value: uint = 0
@@ -0,0 +1,170 @@
1
+ """YeelightCubeControlCluster cluster definition (auto-generated, DO NOT edit)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import typing
6
+ from dataclasses import dataclass, field
7
+ from enum import IntFlag
8
+
9
+ from ... import ChipUtility
10
+ from ...clusters.enum import MatterIntEnum
11
+ from ...tlv import float32, uint
12
+ from ..ClusterObjects import (Cluster, ClusterAttributeDescriptor, ClusterCommand, ClusterEvent, ClusterObject,
13
+ ClusterObjectDescriptor, ClusterObjectFieldDescriptor)
14
+ from ..Types import Nullable, NullValue
15
+
16
+
17
+ @dataclass
18
+ class YeelightCubeControlCluster(Cluster):
19
+ id: typing.ClassVar[int] = 0x1312FC02
20
+
21
+ @ChipUtility.classproperty
22
+ def descriptor(cls) -> ClusterObjectDescriptor:
23
+ return ClusterObjectDescriptor(
24
+ Fields=[
25
+ ClusterObjectFieldDescriptor(Label="cubeTopology", Tag=0x13120000, Type=typing.Optional[typing.List[uint]]),
26
+ ClusterObjectFieldDescriptor(Label="rotationAngle", Tag=0x13120001, Type=typing.Optional[uint]),
27
+ ClusterObjectFieldDescriptor(Label="generatedCommandList", Tag=0x0000FFF8, Type=typing.List[uint]),
28
+ ClusterObjectFieldDescriptor(Label="acceptedCommandList", Tag=0x0000FFF9, Type=typing.List[uint]),
29
+ ClusterObjectFieldDescriptor(Label="attributeList", Tag=0x0000FFFB, Type=typing.List[uint]),
30
+ ClusterObjectFieldDescriptor(Label="featureMap", Tag=0x0000FFFC, Type=uint),
31
+ ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint),
32
+ ])
33
+
34
+ cubeTopology: typing.Optional[typing.List[uint]] = None
35
+ rotationAngle: typing.Optional[uint] = None
36
+ generatedCommandList: typing.List[uint] = field(default_factory=lambda: [])
37
+ acceptedCommandList: typing.List[uint] = field(default_factory=lambda: [])
38
+ attributeList: typing.List[uint] = field(default_factory=lambda: [])
39
+ featureMap: uint = 0
40
+ clusterRevision: uint = 0
41
+
42
+ class Commands:
43
+ @dataclass
44
+ class UpdateTopology(ClusterCommand):
45
+ cluster_id: typing.ClassVar[int] = 0x1312FC02
46
+ command_id: typing.ClassVar[int] = 0x13120002
47
+ is_client: typing.ClassVar[bool] = True
48
+ response_type: typing.ClassVar[typing.Optional[str]] = None
49
+
50
+ @ChipUtility.classproperty
51
+ def descriptor(cls) -> ClusterObjectDescriptor:
52
+ return ClusterObjectDescriptor(
53
+ Fields=[
54
+ ClusterObjectFieldDescriptor(Label="topology", Tag=0, Type=typing.List[uint]),
55
+ ])
56
+
57
+ topology: typing.List[uint] = field(default_factory=lambda: [])
58
+
59
+ class Attributes:
60
+ @dataclass
61
+ class CubeTopology(ClusterAttributeDescriptor):
62
+ @ChipUtility.classproperty
63
+ def cluster_id(cls) -> int:
64
+ return 0x1312FC02
65
+
66
+ @ChipUtility.classproperty
67
+ def attribute_id(cls) -> int:
68
+ return 0x13120000
69
+
70
+ @ChipUtility.classproperty
71
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
72
+ return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[uint]])
73
+
74
+ value: typing.Optional[typing.List[uint]] = None
75
+
76
+ @dataclass
77
+ class RotationAngle(ClusterAttributeDescriptor):
78
+ @ChipUtility.classproperty
79
+ def cluster_id(cls) -> int:
80
+ return 0x1312FC02
81
+
82
+ @ChipUtility.classproperty
83
+ def attribute_id(cls) -> int:
84
+ return 0x13120001
85
+
86
+ @ChipUtility.classproperty
87
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
88
+ return ClusterObjectFieldDescriptor(Type=typing.Optional[uint])
89
+
90
+ value: typing.Optional[uint] = None
91
+
92
+ @dataclass
93
+ class GeneratedCommandList(ClusterAttributeDescriptor):
94
+ @ChipUtility.classproperty
95
+ def cluster_id(cls) -> int:
96
+ return 0x1312FC02
97
+
98
+ @ChipUtility.classproperty
99
+ def attribute_id(cls) -> int:
100
+ return 0x0000FFF8
101
+
102
+ @ChipUtility.classproperty
103
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
104
+ return ClusterObjectFieldDescriptor(Type=typing.List[uint])
105
+
106
+ value: typing.List[uint] = field(default_factory=lambda: [])
107
+
108
+ @dataclass
109
+ class AcceptedCommandList(ClusterAttributeDescriptor):
110
+ @ChipUtility.classproperty
111
+ def cluster_id(cls) -> int:
112
+ return 0x1312FC02
113
+
114
+ @ChipUtility.classproperty
115
+ def attribute_id(cls) -> int:
116
+ return 0x0000FFF9
117
+
118
+ @ChipUtility.classproperty
119
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
120
+ return ClusterObjectFieldDescriptor(Type=typing.List[uint])
121
+
122
+ value: typing.List[uint] = field(default_factory=lambda: [])
123
+
124
+ @dataclass
125
+ class AttributeList(ClusterAttributeDescriptor):
126
+ @ChipUtility.classproperty
127
+ def cluster_id(cls) -> int:
128
+ return 0x1312FC02
129
+
130
+ @ChipUtility.classproperty
131
+ def attribute_id(cls) -> int:
132
+ return 0x0000FFFB
133
+
134
+ @ChipUtility.classproperty
135
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
136
+ return ClusterObjectFieldDescriptor(Type=typing.List[uint])
137
+
138
+ value: typing.List[uint] = field(default_factory=lambda: [])
139
+
140
+ @dataclass
141
+ class FeatureMap(ClusterAttributeDescriptor):
142
+ @ChipUtility.classproperty
143
+ def cluster_id(cls) -> int:
144
+ return 0x1312FC02
145
+
146
+ @ChipUtility.classproperty
147
+ def attribute_id(cls) -> int:
148
+ return 0x0000FFFC
149
+
150
+ @ChipUtility.classproperty
151
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
152
+ return ClusterObjectFieldDescriptor(Type=uint)
153
+
154
+ value: uint = 0
155
+
156
+ @dataclass
157
+ class ClusterRevision(ClusterAttributeDescriptor):
158
+ @ChipUtility.classproperty
159
+ def cluster_id(cls) -> int:
160
+ return 0x1312FC02
161
+
162
+ @ChipUtility.classproperty
163
+ def attribute_id(cls) -> int:
164
+ return 0x0000FFFD
165
+
166
+ @ChipUtility.classproperty
167
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
168
+ return ClusterObjectFieldDescriptor(Type=uint)
169
+
170
+ value: uint = 0
@@ -0,0 +1,446 @@
1
+ """YeelightEnhancedColorEffectConfigV2Cluster cluster definition (auto-generated, DO NOT edit)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import typing
6
+ from dataclasses import dataclass, field
7
+ from enum import IntFlag
8
+
9
+ from ... import ChipUtility
10
+ from ...clusters.enum import MatterIntEnum
11
+ from ...tlv import float32, uint
12
+ from ..ClusterObjects import (Cluster, ClusterAttributeDescriptor, ClusterCommand, ClusterEvent, ClusterObject,
13
+ ClusterObjectDescriptor, ClusterObjectFieldDescriptor)
14
+ from ..Types import Nullable, NullValue
15
+
16
+
17
+ @dataclass
18
+ class YeelightEnhancedColorEffectConfigV2Cluster(Cluster):
19
+ id: typing.ClassVar[int] = 0x1312FC05
20
+
21
+ @ChipUtility.classproperty
22
+ def descriptor(cls) -> ClusterObjectDescriptor:
23
+ return ClusterObjectDescriptor(
24
+ Fields=[
25
+ ClusterObjectFieldDescriptor(Label="effectID", Tag=0x13120000, Type=typing.Optional[uint]),
26
+ ClusterObjectFieldDescriptor(Label="customID", Tag=0x13120001, Type=typing.Optional[uint]),
27
+ ClusterObjectFieldDescriptor(Label="generatedCommandList", Tag=0x0000FFF8, Type=typing.List[uint]),
28
+ ClusterObjectFieldDescriptor(Label="acceptedCommandList", Tag=0x0000FFF9, Type=typing.List[uint]),
29
+ ClusterObjectFieldDescriptor(Label="attributeList", Tag=0x0000FFFB, Type=typing.List[uint]),
30
+ ClusterObjectFieldDescriptor(Label="featureMap", Tag=0x0000FFFC, Type=uint),
31
+ ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint),
32
+ ])
33
+
34
+ effectID: typing.Optional[uint] = None
35
+ customID: typing.Optional[uint] = None
36
+ generatedCommandList: typing.List[uint] = field(default_factory=lambda: [])
37
+ acceptedCommandList: typing.List[uint] = field(default_factory=lambda: [])
38
+ attributeList: typing.List[uint] = field(default_factory=lambda: [])
39
+ featureMap: uint = 0
40
+ clusterRevision: uint = 0
41
+
42
+ class Structs:
43
+ @dataclass
44
+ class YeelightEffectStruct(ClusterObject):
45
+ @ChipUtility.classproperty
46
+ def descriptor(cls) -> ClusterObjectDescriptor:
47
+ return ClusterObjectDescriptor(
48
+ Fields=[
49
+ ClusterObjectFieldDescriptor(Label="effectID", Tag=0, Type=uint),
50
+ ClusterObjectFieldDescriptor(Label="customID", Tag=1, Type=typing.Optional[uint]),
51
+ ClusterObjectFieldDescriptor(Label="effectParams", Tag=2, Type=typing.Optional[typing.List[YeelightEnhancedColorEffectConfigV2Cluster.Structs.YeelightEffectConfig]]),
52
+ ])
53
+
54
+ effectID: uint = 0
55
+ customID: typing.Optional[uint] = None
56
+ effectParams: typing.Optional[typing.List[YeelightEnhancedColorEffectConfigV2Cluster.Structs.YeelightEffectConfig]] = None
57
+
58
+ @dataclass
59
+ class YeelightEffectConfig(ClusterObject):
60
+ @ChipUtility.classproperty
61
+ def descriptor(cls) -> ClusterObjectDescriptor:
62
+ return ClusterObjectDescriptor(
63
+ Fields=[
64
+ ClusterObjectFieldDescriptor(Label="start", Tag=0, Type=typing.Optional[uint]),
65
+ ClusterObjectFieldDescriptor(Label="end", Tag=1, Type=typing.Optional[uint]),
66
+ ClusterObjectFieldDescriptor(Label="onoff", Tag=2, Type=typing.Optional[uint]),
67
+ ClusterObjectFieldDescriptor(Label="mode", Tag=3, Type=uint),
68
+ ClusterObjectFieldDescriptor(Label="intensity", Tag=4, Type=typing.Optional[uint]),
69
+ ClusterObjectFieldDescriptor(Label="speed", Tag=5, Type=typing.Optional[uint]),
70
+ ClusterObjectFieldDescriptor(Label="color", Tag=6, Type=typing.Optional[typing.List[uint]]),
71
+ ClusterObjectFieldDescriptor(Label="data", Tag=7, Type=typing.Optional[bytes]),
72
+ ClusterObjectFieldDescriptor(Label="mixer", Tag=8, Type=typing.Optional[uint]),
73
+ ClusterObjectFieldDescriptor(Label="direction", Tag=9, Type=typing.Optional[uint]),
74
+ ])
75
+
76
+ start: typing.Optional[uint] = None
77
+ end: typing.Optional[uint] = None
78
+ onoff: typing.Optional[uint] = None
79
+ mode: uint = 0
80
+ intensity: typing.Optional[uint] = None
81
+ speed: typing.Optional[uint] = None
82
+ color: typing.Optional[typing.List[uint]] = None
83
+ data: typing.Optional[bytes] = None
84
+ mixer: typing.Optional[uint] = None
85
+ direction: typing.Optional[uint] = None
86
+
87
+ @dataclass
88
+ class YeelightEffectSnapshot(ClusterObject):
89
+ @ChipUtility.classproperty
90
+ def descriptor(cls) -> ClusterObjectDescriptor:
91
+ return ClusterObjectDescriptor(
92
+ Fields=[
93
+ ClusterObjectFieldDescriptor(Label="effectID", Tag=0, Type=uint),
94
+ ClusterObjectFieldDescriptor(Label="customID", Tag=1, Type=uint),
95
+ ])
96
+
97
+ effectID: uint = 0
98
+ customID: uint = 0
99
+
100
+ class Commands:
101
+ @dataclass
102
+ class SetEffect(ClusterCommand):
103
+ cluster_id: typing.ClassVar[int] = 0x1312FC05
104
+ command_id: typing.ClassVar[int] = 0x13120000
105
+ is_client: typing.ClassVar[bool] = True
106
+ response_type: typing.ClassVar[typing.Optional[str]] = None
107
+
108
+ @ChipUtility.classproperty
109
+ def descriptor(cls) -> ClusterObjectDescriptor:
110
+ return ClusterObjectDescriptor(
111
+ Fields=[
112
+ ClusterObjectFieldDescriptor(Label="apply", Tag=0, Type=typing.Optional[uint]),
113
+ ClusterObjectFieldDescriptor(Label="effect", Tag=1, Type=YeelightEnhancedColorEffectConfigV2Cluster.Structs.YeelightEffectStruct),
114
+ ])
115
+
116
+ apply: typing.Optional[uint] = None
117
+ effect: YeelightEnhancedColorEffectConfigV2Cluster.Structs.YeelightEffectStruct = field(default_factory=lambda: YeelightEnhancedColorEffectConfigV2Cluster.Structs.YeelightEffectStruct())
118
+
119
+ @dataclass
120
+ class SetRate(ClusterCommand):
121
+ cluster_id: typing.ClassVar[int] = 0x1312FC05
122
+ command_id: typing.ClassVar[int] = 0x13120002
123
+ is_client: typing.ClassVar[bool] = True
124
+ response_type: typing.ClassVar[typing.Optional[str]] = None
125
+
126
+ @ChipUtility.classproperty
127
+ def descriptor(cls) -> ClusterObjectDescriptor:
128
+ return ClusterObjectDescriptor(
129
+ Fields=[
130
+ ClusterObjectFieldDescriptor(Label="rate", Tag=0, Type=uint),
131
+ ])
132
+
133
+ rate: uint = 0
134
+
135
+ @dataclass
136
+ class SetMixer(ClusterCommand):
137
+ cluster_id: typing.ClassVar[int] = 0x1312FC05
138
+ command_id: typing.ClassVar[int] = 0x13120006
139
+ is_client: typing.ClassVar[bool] = True
140
+ response_type: typing.ClassVar[typing.Optional[str]] = None
141
+
142
+ @ChipUtility.classproperty
143
+ def descriptor(cls) -> ClusterObjectDescriptor:
144
+ return ClusterObjectDescriptor(
145
+ Fields=[
146
+ ClusterObjectFieldDescriptor(Label="mixer", Tag=0, Type=uint),
147
+ ])
148
+
149
+ mixer: uint = 0
150
+
151
+ @dataclass
152
+ class SetData(ClusterCommand):
153
+ cluster_id: typing.ClassVar[int] = 0x1312FC05
154
+ command_id: typing.ClassVar[int] = 0x13120007
155
+ is_client: typing.ClassVar[bool] = True
156
+ response_type: typing.ClassVar[typing.Optional[str]] = None
157
+
158
+ @ChipUtility.classproperty
159
+ def descriptor(cls) -> ClusterObjectDescriptor:
160
+ return ClusterObjectDescriptor(
161
+ Fields=[
162
+ ClusterObjectFieldDescriptor(Label="data", Tag=0, Type=bytes),
163
+ ])
164
+
165
+ data: bytes = b""
166
+
167
+ @dataclass
168
+ class SetDirection(ClusterCommand):
169
+ cluster_id: typing.ClassVar[int] = 0x1312FC05
170
+ command_id: typing.ClassVar[int] = 0x13120008
171
+ is_client: typing.ClassVar[bool] = True
172
+ response_type: typing.ClassVar[typing.Optional[str]] = None
173
+
174
+ @ChipUtility.classproperty
175
+ def descriptor(cls) -> ClusterObjectDescriptor:
176
+ return ClusterObjectDescriptor(
177
+ Fields=[
178
+ ClusterObjectFieldDescriptor(Label="direction", Tag=0, Type=uint),
179
+ ])
180
+
181
+ direction: uint = 0
182
+
183
+ @dataclass
184
+ class ResetEffect(ClusterCommand):
185
+ cluster_id: typing.ClassVar[int] = 0x1312FC05
186
+ command_id: typing.ClassVar[int] = 0x13120009
187
+ is_client: typing.ClassVar[bool] = True
188
+ response_type: typing.ClassVar[typing.Optional[str]] = None
189
+
190
+ @ChipUtility.classproperty
191
+ def descriptor(cls) -> ClusterObjectDescriptor:
192
+ return ClusterObjectDescriptor(
193
+ Fields=[
194
+ ])
195
+
196
+
197
+ @dataclass
198
+ class UpdatePersistEffectList(ClusterCommand):
199
+ cluster_id: typing.ClassVar[int] = 0x1312FC05
200
+ command_id: typing.ClassVar[int] = 0x1312000A
201
+ is_client: typing.ClassVar[bool] = True
202
+ response_type: typing.ClassVar[typing.Optional[str]] = None
203
+
204
+ @ChipUtility.classproperty
205
+ def descriptor(cls) -> ClusterObjectDescriptor:
206
+ return ClusterObjectDescriptor(
207
+ Fields=[
208
+ ClusterObjectFieldDescriptor(Label="index", Tag=0, Type=uint),
209
+ ClusterObjectFieldDescriptor(Label="effect", Tag=1, Type=YeelightEnhancedColorEffectConfigV2Cluster.Structs.YeelightEffectStruct),
210
+ ])
211
+
212
+ index: uint = 0
213
+ effect: YeelightEnhancedColorEffectConfigV2Cluster.Structs.YeelightEffectStruct = field(default_factory=lambda: YeelightEnhancedColorEffectConfigV2Cluster.Structs.YeelightEffectStruct())
214
+
215
+ @dataclass
216
+ class GetPersistEffectList(ClusterCommand):
217
+ cluster_id: typing.ClassVar[int] = 0x1312FC05
218
+ command_id: typing.ClassVar[int] = 0x1312000B
219
+ is_client: typing.ClassVar[bool] = True
220
+ response_type: typing.ClassVar[typing.Optional[str]] = 'GetPersistEffectListResponse'
221
+
222
+ @ChipUtility.classproperty
223
+ def descriptor(cls) -> ClusterObjectDescriptor:
224
+ return ClusterObjectDescriptor(
225
+ Fields=[
226
+ ])
227
+
228
+
229
+ @dataclass
230
+ class GetCurrentEffect(ClusterCommand):
231
+ cluster_id: typing.ClassVar[int] = 0x1312FC05
232
+ command_id: typing.ClassVar[int] = 0x1312000D
233
+ is_client: typing.ClassVar[bool] = True
234
+ response_type: typing.ClassVar[typing.Optional[str]] = 'GetCurrentEffectResponse'
235
+
236
+ @ChipUtility.classproperty
237
+ def descriptor(cls) -> ClusterObjectDescriptor:
238
+ return ClusterObjectDescriptor(
239
+ Fields=[
240
+ ])
241
+
242
+
243
+ @dataclass
244
+ class SetPresetsEffect(ClusterCommand):
245
+ cluster_id: typing.ClassVar[int] = 0x1312FC05
246
+ command_id: typing.ClassVar[int] = 0x1312000E
247
+ is_client: typing.ClassVar[bool] = True
248
+ response_type: typing.ClassVar[typing.Optional[str]] = None
249
+
250
+ @ChipUtility.classproperty
251
+ def descriptor(cls) -> ClusterObjectDescriptor:
252
+ return ClusterObjectDescriptor(
253
+ Fields=[
254
+ ClusterObjectFieldDescriptor(Label="apply", Tag=0, Type=typing.Optional[uint]),
255
+ ClusterObjectFieldDescriptor(Label="effectID", Tag=1, Type=uint),
256
+ ClusterObjectFieldDescriptor(Label="onoff", Tag=2, Type=typing.Optional[typing.List[uint]]),
257
+ ClusterObjectFieldDescriptor(Label="intensity", Tag=3, Type=typing.Optional[uint]),
258
+ ClusterObjectFieldDescriptor(Label="rate", Tag=4, Type=typing.Optional[uint]),
259
+ ClusterObjectFieldDescriptor(Label="color", Tag=5, Type=typing.Optional[typing.List[uint]]),
260
+ ClusterObjectFieldDescriptor(Label="direction", Tag=6, Type=typing.Optional[uint]),
261
+ ])
262
+
263
+ apply: typing.Optional[uint] = None
264
+ effectID: uint = 0
265
+ onoff: typing.Optional[typing.List[uint]] = None
266
+ intensity: typing.Optional[uint] = None
267
+ rate: typing.Optional[uint] = None
268
+ color: typing.Optional[typing.List[uint]] = None
269
+ direction: typing.Optional[uint] = None
270
+
271
+ @dataclass
272
+ class SendGifDataFragment(ClusterCommand):
273
+ cluster_id: typing.ClassVar[int] = 0x1312FC05
274
+ command_id: typing.ClassVar[int] = 0x1312000F
275
+ is_client: typing.ClassVar[bool] = True
276
+ response_type: typing.ClassVar[typing.Optional[str]] = 'SendGifDataFragmentResponse'
277
+
278
+ @ChipUtility.classproperty
279
+ def descriptor(cls) -> ClusterObjectDescriptor:
280
+ return ClusterObjectDescriptor(
281
+ Fields=[
282
+ ClusterObjectFieldDescriptor(Label="data", Tag=0, Type=bytes),
283
+ ])
284
+
285
+ data: bytes = b""
286
+
287
+ @dataclass
288
+ class GetPersistEffectListResponse(ClusterCommand):
289
+ cluster_id: typing.ClassVar[int] = 0x1312FC05
290
+ command_id: typing.ClassVar[int] = 0x13120001
291
+ is_client: typing.ClassVar[bool] = False
292
+ response_type: typing.ClassVar[typing.Optional[str]] = None
293
+
294
+ @ChipUtility.classproperty
295
+ def descriptor(cls) -> ClusterObjectDescriptor:
296
+ return ClusterObjectDescriptor(
297
+ Fields=[
298
+ ClusterObjectFieldDescriptor(Label="effectList", Tag=0, Type=typing.List[YeelightEnhancedColorEffectConfigV2Cluster.Structs.YeelightEffectSnapshot]),
299
+ ])
300
+
301
+ effectList: typing.List[YeelightEnhancedColorEffectConfigV2Cluster.Structs.YeelightEffectSnapshot] = field(default_factory=lambda: [])
302
+
303
+ @dataclass
304
+ class GetCurrentEffectResponse(ClusterCommand):
305
+ cluster_id: typing.ClassVar[int] = 0x1312FC05
306
+ command_id: typing.ClassVar[int] = 0x13120003
307
+ is_client: typing.ClassVar[bool] = False
308
+ response_type: typing.ClassVar[typing.Optional[str]] = None
309
+
310
+ @ChipUtility.classproperty
311
+ def descriptor(cls) -> ClusterObjectDescriptor:
312
+ return ClusterObjectDescriptor(
313
+ Fields=[
314
+ ClusterObjectFieldDescriptor(Label="effect", Tag=0, Type=YeelightEnhancedColorEffectConfigV2Cluster.Structs.YeelightEffectStruct),
315
+ ])
316
+
317
+ effect: YeelightEnhancedColorEffectConfigV2Cluster.Structs.YeelightEffectStruct = field(default_factory=lambda: YeelightEnhancedColorEffectConfigV2Cluster.Structs.YeelightEffectStruct())
318
+
319
+ @dataclass
320
+ class SendGifDataFragmentResponse(ClusterCommand):
321
+ cluster_id: typing.ClassVar[int] = 0x1312FC05
322
+ command_id: typing.ClassVar[int] = 0x13120004
323
+ is_client: typing.ClassVar[bool] = False
324
+ response_type: typing.ClassVar[typing.Optional[str]] = None
325
+
326
+ @ChipUtility.classproperty
327
+ def descriptor(cls) -> ClusterObjectDescriptor:
328
+ return ClusterObjectDescriptor(
329
+ Fields=[
330
+ ClusterObjectFieldDescriptor(Label="status", Tag=0, Type=uint),
331
+ ])
332
+
333
+ status: uint = 0
334
+
335
+ class Attributes:
336
+ @dataclass
337
+ class EffectID(ClusterAttributeDescriptor):
338
+ @ChipUtility.classproperty
339
+ def cluster_id(cls) -> int:
340
+ return 0x1312FC05
341
+
342
+ @ChipUtility.classproperty
343
+ def attribute_id(cls) -> int:
344
+ return 0x13120000
345
+
346
+ @ChipUtility.classproperty
347
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
348
+ return ClusterObjectFieldDescriptor(Type=typing.Optional[uint])
349
+
350
+ value: typing.Optional[uint] = None
351
+
352
+ @dataclass
353
+ class CustomID(ClusterAttributeDescriptor):
354
+ @ChipUtility.classproperty
355
+ def cluster_id(cls) -> int:
356
+ return 0x1312FC05
357
+
358
+ @ChipUtility.classproperty
359
+ def attribute_id(cls) -> int:
360
+ return 0x13120001
361
+
362
+ @ChipUtility.classproperty
363
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
364
+ return ClusterObjectFieldDescriptor(Type=typing.Optional[uint])
365
+
366
+ value: typing.Optional[uint] = None
367
+
368
+ @dataclass
369
+ class GeneratedCommandList(ClusterAttributeDescriptor):
370
+ @ChipUtility.classproperty
371
+ def cluster_id(cls) -> int:
372
+ return 0x1312FC05
373
+
374
+ @ChipUtility.classproperty
375
+ def attribute_id(cls) -> int:
376
+ return 0x0000FFF8
377
+
378
+ @ChipUtility.classproperty
379
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
380
+ return ClusterObjectFieldDescriptor(Type=typing.List[uint])
381
+
382
+ value: typing.List[uint] = field(default_factory=lambda: [])
383
+
384
+ @dataclass
385
+ class AcceptedCommandList(ClusterAttributeDescriptor):
386
+ @ChipUtility.classproperty
387
+ def cluster_id(cls) -> int:
388
+ return 0x1312FC05
389
+
390
+ @ChipUtility.classproperty
391
+ def attribute_id(cls) -> int:
392
+ return 0x0000FFF9
393
+
394
+ @ChipUtility.classproperty
395
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
396
+ return ClusterObjectFieldDescriptor(Type=typing.List[uint])
397
+
398
+ value: typing.List[uint] = field(default_factory=lambda: [])
399
+
400
+ @dataclass
401
+ class AttributeList(ClusterAttributeDescriptor):
402
+ @ChipUtility.classproperty
403
+ def cluster_id(cls) -> int:
404
+ return 0x1312FC05
405
+
406
+ @ChipUtility.classproperty
407
+ def attribute_id(cls) -> int:
408
+ return 0x0000FFFB
409
+
410
+ @ChipUtility.classproperty
411
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
412
+ return ClusterObjectFieldDescriptor(Type=typing.List[uint])
413
+
414
+ value: typing.List[uint] = field(default_factory=lambda: [])
415
+
416
+ @dataclass
417
+ class FeatureMap(ClusterAttributeDescriptor):
418
+ @ChipUtility.classproperty
419
+ def cluster_id(cls) -> int:
420
+ return 0x1312FC05
421
+
422
+ @ChipUtility.classproperty
423
+ def attribute_id(cls) -> int:
424
+ return 0x0000FFFC
425
+
426
+ @ChipUtility.classproperty
427
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
428
+ return ClusterObjectFieldDescriptor(Type=uint)
429
+
430
+ value: uint = 0
431
+
432
+ @dataclass
433
+ class ClusterRevision(ClusterAttributeDescriptor):
434
+ @ChipUtility.classproperty
435
+ def cluster_id(cls) -> int:
436
+ return 0x1312FC05
437
+
438
+ @ChipUtility.classproperty
439
+ def attribute_id(cls) -> int:
440
+ return 0x0000FFFD
441
+
442
+ @ChipUtility.classproperty
443
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
444
+ return ClusterObjectFieldDescriptor(Type=uint)
445
+
446
+ value: uint = 0
@@ -0,0 +1,153 @@
1
+ """YeelightOverTheAirCluster cluster definition (auto-generated, DO NOT edit)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import typing
6
+ from dataclasses import dataclass, field
7
+ from enum import IntFlag
8
+
9
+ from ... import ChipUtility
10
+ from ...clusters.enum import MatterIntEnum
11
+ from ...tlv import float32, uint
12
+ from ..ClusterObjects import (Cluster, ClusterAttributeDescriptor, ClusterCommand, ClusterEvent, ClusterObject,
13
+ ClusterObjectDescriptor, ClusterObjectFieldDescriptor)
14
+ from ..Types import Nullable, NullValue
15
+
16
+
17
+ @dataclass
18
+ class YeelightOverTheAirCluster(Cluster):
19
+ id: typing.ClassVar[int] = 0x1312FC11
20
+
21
+ @ChipUtility.classproperty
22
+ def descriptor(cls) -> ClusterObjectDescriptor:
23
+ return ClusterObjectDescriptor(
24
+ Fields=[
25
+ ClusterObjectFieldDescriptor(Label="yeeUpdateState", Tag=0x13120000, Type=typing.Optional[uint]),
26
+ ClusterObjectFieldDescriptor(Label="progress", Tag=0x13120001, Type=typing.Union[None, Nullable, uint]),
27
+ ClusterObjectFieldDescriptor(Label="generatedCommandList", Tag=0x0000FFF8, Type=typing.List[uint]),
28
+ ClusterObjectFieldDescriptor(Label="acceptedCommandList", Tag=0x0000FFF9, Type=typing.List[uint]),
29
+ ClusterObjectFieldDescriptor(Label="attributeList", Tag=0x0000FFFB, Type=typing.List[uint]),
30
+ ClusterObjectFieldDescriptor(Label="featureMap", Tag=0x0000FFFC, Type=uint),
31
+ ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint),
32
+ ])
33
+
34
+ yeeUpdateState: typing.Optional[uint] = None
35
+ progress: typing.Union[None, Nullable, uint] = None
36
+ generatedCommandList: typing.List[uint] = field(default_factory=lambda: [])
37
+ acceptedCommandList: typing.List[uint] = field(default_factory=lambda: [])
38
+ attributeList: typing.List[uint] = field(default_factory=lambda: [])
39
+ featureMap: uint = 0
40
+ clusterRevision: uint = 0
41
+
42
+ class Attributes:
43
+ @dataclass
44
+ class YeeUpdateState(ClusterAttributeDescriptor):
45
+ @ChipUtility.classproperty
46
+ def cluster_id(cls) -> int:
47
+ return 0x1312FC11
48
+
49
+ @ChipUtility.classproperty
50
+ def attribute_id(cls) -> int:
51
+ return 0x13120000
52
+
53
+ @ChipUtility.classproperty
54
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
55
+ return ClusterObjectFieldDescriptor(Type=typing.Optional[uint])
56
+
57
+ value: typing.Optional[uint] = None
58
+
59
+ @dataclass
60
+ class Progress(ClusterAttributeDescriptor):
61
+ @ChipUtility.classproperty
62
+ def cluster_id(cls) -> int:
63
+ return 0x1312FC11
64
+
65
+ @ChipUtility.classproperty
66
+ def attribute_id(cls) -> int:
67
+ return 0x13120001
68
+
69
+ @ChipUtility.classproperty
70
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
71
+ return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint])
72
+
73
+ value: typing.Union[None, Nullable, uint] = None
74
+
75
+ @dataclass
76
+ class GeneratedCommandList(ClusterAttributeDescriptor):
77
+ @ChipUtility.classproperty
78
+ def cluster_id(cls) -> int:
79
+ return 0x1312FC11
80
+
81
+ @ChipUtility.classproperty
82
+ def attribute_id(cls) -> int:
83
+ return 0x0000FFF8
84
+
85
+ @ChipUtility.classproperty
86
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
87
+ return ClusterObjectFieldDescriptor(Type=typing.List[uint])
88
+
89
+ value: typing.List[uint] = field(default_factory=lambda: [])
90
+
91
+ @dataclass
92
+ class AcceptedCommandList(ClusterAttributeDescriptor):
93
+ @ChipUtility.classproperty
94
+ def cluster_id(cls) -> int:
95
+ return 0x1312FC11
96
+
97
+ @ChipUtility.classproperty
98
+ def attribute_id(cls) -> int:
99
+ return 0x0000FFF9
100
+
101
+ @ChipUtility.classproperty
102
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
103
+ return ClusterObjectFieldDescriptor(Type=typing.List[uint])
104
+
105
+ value: typing.List[uint] = field(default_factory=lambda: [])
106
+
107
+ @dataclass
108
+ class AttributeList(ClusterAttributeDescriptor):
109
+ @ChipUtility.classproperty
110
+ def cluster_id(cls) -> int:
111
+ return 0x1312FC11
112
+
113
+ @ChipUtility.classproperty
114
+ def attribute_id(cls) -> int:
115
+ return 0x0000FFFB
116
+
117
+ @ChipUtility.classproperty
118
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
119
+ return ClusterObjectFieldDescriptor(Type=typing.List[uint])
120
+
121
+ value: typing.List[uint] = field(default_factory=lambda: [])
122
+
123
+ @dataclass
124
+ class FeatureMap(ClusterAttributeDescriptor):
125
+ @ChipUtility.classproperty
126
+ def cluster_id(cls) -> int:
127
+ return 0x1312FC11
128
+
129
+ @ChipUtility.classproperty
130
+ def attribute_id(cls) -> int:
131
+ return 0x0000FFFC
132
+
133
+ @ChipUtility.classproperty
134
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
135
+ return ClusterObjectFieldDescriptor(Type=uint)
136
+
137
+ value: uint = 0
138
+
139
+ @dataclass
140
+ class ClusterRevision(ClusterAttributeDescriptor):
141
+ @ChipUtility.classproperty
142
+ def cluster_id(cls) -> int:
143
+ return 0x1312FC11
144
+
145
+ @ChipUtility.classproperty
146
+ def attribute_id(cls) -> int:
147
+ return 0x0000FFFD
148
+
149
+ @ChipUtility.classproperty
150
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
151
+ return ClusterObjectFieldDescriptor(Type=uint)
152
+
153
+ value: uint = 0
@@ -150,6 +150,11 @@ from .WebRtcTransportRequestor import WebRtcTransportRequestor
150
150
  from .WiFiNetworkDiagnostics import WiFiNetworkDiagnostics
151
151
  from .WiFiNetworkManagement import WiFiNetworkManagement
152
152
  from .WindowCovering import WindowCovering
153
+ from .YeelightBasicCluster import YeelightBasicCluster
154
+ from .YeelightBasicConfigCluster import YeelightBasicConfigCluster
155
+ from .YeelightCubeControlCluster import YeelightCubeControlCluster
156
+ from .YeelightEnhancedColorEffectConfigV2Cluster import YeelightEnhancedColorEffectConfigV2Cluster
157
+ from .YeelightOverTheAirCluster import YeelightOverTheAirCluster
153
158
  from .ZoneManagement import ZoneManagement
154
159
 
155
160
  __all__ = [
@@ -303,6 +308,11 @@ __all__ = [
303
308
  "WiFiNetworkDiagnostics",
304
309
  "WiFiNetworkManagement",
305
310
  "WindowCovering",
311
+ "YeelightBasicCluster",
312
+ "YeelightBasicConfigCluster",
313
+ "YeelightCubeControlCluster",
314
+ "YeelightEnhancedColorEffectConfigV2Cluster",
315
+ "YeelightOverTheAirCluster",
306
316
  "ZoneManagement",
307
317
  ]
308
318
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: matter-python-client
3
- Version: 1.5.2
3
+ Version: 1.5.3
4
4
  Summary: Python Client for the OHF Matter Server
5
5
  Author-email: Open Home Foundation <hello@openhomefoundation.io>
6
6
  License-Expression: Apache-2.0
@@ -1,7 +1,7 @@
1
1
  chip/ChipUtility.py,sha256=pD_krwMaHGww1OPAVJWGli5Sc9yjlVxrKE2N-3Yeerc,279
2
2
  chip/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  chip/clusters/ClusterObjects.py,sha256=6NDOEUl_zu5KjN-_32_xIrMl7y1M5X1XDZ4eYvVCiSo,11655
4
- chip/clusters/Objects.py,sha256=fJaudOK4SbNbV6KmyEiQaf7uESHBew8Ccj5nFaKo83A,5009
4
+ chip/clusters/Objects.py,sha256=Y30YXMkvHQdR63qTvoiF5e_pLMa-NmuuI1KgelDVIk8,5188
5
5
  chip/clusters/Types.py,sha256=jWwhYCFH5S1JV78wkrXSAoOrDZs29miTL8heZq3QHhU,759
6
6
  chip/clusters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  chip/clusters/enum.py,sha256=ZldcWGjqzfVvWFWOFr_nCgtiCVyQxD6MKiptle_i0O4,1660
@@ -155,14 +155,19 @@ chip/clusters/cluster_defs/WebRtcTransportRequestor.py,sha256=4w-83xo38CJgNDMzq0
155
155
  chip/clusters/cluster_defs/WiFiNetworkDiagnostics.py,sha256=X6fWBeCXDk3t1Y_95gkNDiD9lVNxx4IyuOYDoGjvCM8,19473
156
156
  chip/clusters/cluster_defs/WiFiNetworkManagement.py,sha256=eBmysZ7TEuUCxPsrsNc22dGxnNXE0SHS4Oh43Y5fTdE,7041
157
157
  chip/clusters/cluster_defs/WindowCovering.py,sha256=swHmdMJkkqNbqd3nucCTyuVxQNOFKvvhbOT56CVkbpQ,25680
158
+ chip/clusters/cluster_defs/YeelightBasicCluster.py,sha256=VyM7HJInGYD8wMcbtCY_cj6QYLmg52keXeCh5Kzz0Sg,6482
159
+ chip/clusters/cluster_defs/YeelightBasicConfigCluster.py,sha256=Y7Z4QuyNMaIydRZ7SdLvhC4329FVTJn29NOxzQe2UrA,7458
160
+ chip/clusters/cluster_defs/YeelightCubeControlCluster.py,sha256=cUMyBlKy-6PvA9jPyLtrAZGqjUw_oS4gCytczJExyew,6527
161
+ chip/clusters/cluster_defs/YeelightEnhancedColorEffectConfigV2Cluster.py,sha256=8zKPVd4dk-1F56XTn4L4sKlutJIzZCl_Q-HNEmZ3lPA,19650
162
+ chip/clusters/cluster_defs/YeelightOverTheAirCluster.py,sha256=Om7rGWMSwbvGP-67AR4bpMaBhTJy6D-lELG3SomUpjA,5810
158
163
  chip/clusters/cluster_defs/ZoneManagement.py,sha256=d-ZCgnpaGCB74KNUW9Q7wu23kaBFZr3C5oK_VSAIXLE,21789
159
- chip/clusters/cluster_defs/__init__.py,sha256=YRBp_AMn7wypZDI_3LbRHRvzJIfBNAdY2vINZ3XL7Qw,12128
164
+ chip/clusters/cluster_defs/__init__.py,sha256=5M3REoB9tOL9chjygIWecG8zaIcd2HVpOTy6opovt-c,12660
160
165
  chip/tlv/__init__.py,sha256=24xl0LIaL_f_ciqdaLwZCtDxkJzMgpRAx1QbHCw4Kic,13487
161
166
  chip/tlv/tlvlist.py,sha256=ZpT6Hr6t3qDHiUZWkY4WnioVP2icv5i5LIKNUIgOOps,2469
162
167
  matter_server/__init__.py,sha256=lJ6xyVLSMGtiHvq36VPSDb75ksxfNKYmKEEE-ZwJdhQ,47
163
168
  matter_server/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
164
169
  matter_server/client/__init__.py,sha256=pZzjJp-7C5BmYGZJjIo5SpyjGLU0FcqBa2nJ558y-Is,97
165
- matter_server/client/client.py,sha256=xjqfdp6lsd_pqhuTTFH2gbTqro81wPOBZvNFz23WVVs,66441
170
+ matter_server/client/client.py,sha256=KFohZGl6OIxyXv5VGMC5-fetFHyn1TwvwVY31IgpCxo,67145
166
171
  matter_server/client/connection.py,sha256=Fu_9xShWBcUUaKUAf7XWfi3Mm3AUs4-ohIXHpgObL4I,9245
167
172
  matter_server/client/exceptions.py,sha256=741JkGMBQFJYZ70zX80B-Dn_NtgHffb6jDHC83tCL2U,1901
168
173
  matter_server/client/models/__init__.py,sha256=pT16UC2evZVw2trjun2xJZpaOR55ky7i_8znlA3Mreo,63
@@ -170,14 +175,14 @@ matter_server/client/models/device_types.py,sha256=SU82O_aC_HTV6KEaO00rXbGBy0cUI
170
175
  matter_server/client/models/node.py,sha256=k5ZeGR3hFjdA8zPkw2d28O4-wbn3M-mJ8t6mYGPBT60,26630
171
176
  matter_server/common/__init__.py,sha256=y4EeCH05sUYifS2b624oweA6omnY5k-rLNHHv4t4p7Q,50
172
177
  matter_server/common/const.py,sha256=hTu0siAgpQvAz6oYavTGuqgkXaQH2glQxUQuGyPnn1o,256
173
- matter_server/common/custom_clusters.py,sha256=bdG2b842JBmomPUC-a92fIL_bnbDG-ORZuPaMDni6Oc,2517
178
+ matter_server/common/custom_clusters.py,sha256=4xTN33szeDZQUYvOv8gaE7Uu3GFXcdCwLPau5jeB6Do,3521
174
179
  matter_server/common/errors.py,sha256=lYfbYwWd1Kp-gfWCHg7y86JANh10SHelz3TJS9_arTE,10703
175
180
  matter_server/common/models.py,sha256=EpihSGmVf4E63J21c76nwrALYsGG_JocSsX1OM1nknk,26773
176
181
  matter_server/common/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
177
182
  matter_server/common/helpers/api.py,sha256=9maToXRnef6SLGnecaTSBlWU7wDSG3elil-HtffQ2TA,1993
178
183
  matter_server/common/helpers/json.py,sha256=FktcqarAhmdI0AdiBwo7gCdJp6rA-uVdeNUglQv6HhA,1307
179
184
  matter_server/common/helpers/util.py,sha256=fPYh89ii65JqSKyR4db-L1QkEXBqnsOlFCiDzTC2oT4,14827
180
- matter_python_client-1.5.2.dist-info/METADATA,sha256=bEPgEV3Dqam9iyuS8p83fpcr0NSG8cl-P7oUUVgIPns,10631
181
- matter_python_client-1.5.2.dist-info/WHEEL,sha256=mOdXR9C3wMVov7cSY8PY-XCzo3SmmWCHvGQr5csJoao,91
182
- matter_python_client-1.5.2.dist-info/top_level.txt,sha256=qqEVT8dTHhSn15gf6otxpB5dYM48Sqsucdx9W2Lq-So,19
183
- matter_python_client-1.5.2.dist-info/RECORD,,
185
+ matter_python_client-1.5.3.dist-info/METADATA,sha256=MOf5iW7M2_2WwDgfdSQtZ4WeqQZki10XWoQAvEy1kA8,10631
186
+ matter_python_client-1.5.3.dist-info/WHEEL,sha256=mOdXR9C3wMVov7cSY8PY-XCzo3SmmWCHvGQr5csJoao,91
187
+ matter_python_client-1.5.3.dist-info/top_level.txt,sha256=qqEVT8dTHhSn15gf6otxpB5dYM48Sqsucdx9W2Lq-So,19
188
+ matter_python_client-1.5.3.dist-info/RECORD,,
@@ -163,7 +163,10 @@ class MatterClient:
163
163
  """
164
164
  Subscribe to node and server events.
165
165
 
166
- Optionally filter by specific events or node attributes.
166
+ Optionally filter by specific events or node attributes. An exception raised by the callback
167
+ is logged and does not stop the delivery of the event to other subscribers. A callback that
168
+ is subscribed or unsubscribed while an event is delivered may or may not get that event; the
169
+ change applies to every later event.
167
170
  Returns:
168
171
  function to unsubscribe.
169
172
  """
@@ -1569,8 +1572,13 @@ class MatterClient:
1569
1572
  if attribute_path_key is None:
1570
1573
  continue
1571
1574
  key = f"{evt_key}/{node_key}/{attribute_path_key}"
1572
- for callback in self._subscribers.get(key, []):
1573
- callback(event, data)
1575
+ # A snapshot, so a callback that unsubscribes does not make the loop skip the next one.
1576
+ for callback in list(self._subscribers.get(key, ())):
1577
+ # A raising subscriber must not skip the model cleanup, starve the others or end the loop.
1578
+ try:
1579
+ callback(event, data)
1580
+ except Exception:
1581
+ self.logger.exception("Event subscriber failed on %s (node_id=%s)", event.value, node_id)
1574
1582
 
1575
1583
  async def __aenter__(self) -> Self:
1576
1584
  """Initialize and connect the Matter Websocket client."""
@@ -14,6 +14,13 @@ from chip.clusters.cluster_defs.TclDehumidifierCluster import TclDehumidifierClu
14
14
  from chip.clusters.cluster_defs.ThirdRealityMeteringCluster import ThirdRealityMeteringCluster
15
15
  from chip.clusters.cluster_defs.UnitTestingCluster import UnitTestingCluster
16
16
  from chip.clusters.cluster_defs.WagoCluster import WagoCluster
17
+ from chip.clusters.cluster_defs.YeelightBasicCluster import YeelightBasicCluster
18
+ from chip.clusters.cluster_defs.YeelightBasicConfigCluster import YeelightBasicConfigCluster
19
+ from chip.clusters.cluster_defs.YeelightCubeControlCluster import YeelightCubeControlCluster
20
+ from chip.clusters.cluster_defs.YeelightEnhancedColorEffectConfigV2Cluster import (
21
+ YeelightEnhancedColorEffectConfigV2Cluster,
22
+ )
23
+ from chip.clusters.cluster_defs.YeelightOverTheAirCluster import YeelightOverTheAirCluster
17
24
 
18
25
  ALL_CUSTOM_CLUSTERS: dict = {
19
26
  AqaraAmbientSensingConfigurationCluster.id: AqaraAmbientSensingConfigurationCluster,
@@ -30,6 +37,11 @@ ALL_CUSTOM_CLUSTERS: dict = {
30
37
  ThirdRealityMeteringCluster.id: ThirdRealityMeteringCluster,
31
38
  UnitTestingCluster.id: UnitTestingCluster,
32
39
  WagoCluster.id: WagoCluster,
40
+ YeelightBasicCluster.id: YeelightBasicCluster,
41
+ YeelightBasicConfigCluster.id: YeelightBasicConfigCluster,
42
+ YeelightCubeControlCluster.id: YeelightCubeControlCluster,
43
+ YeelightEnhancedColorEffectConfigV2Cluster.id: YeelightEnhancedColorEffectConfigV2Cluster,
44
+ YeelightOverTheAirCluster.id: YeelightOverTheAirCluster,
33
45
  }
34
46
 
35
47
  __all__ = [
@@ -48,4 +60,9 @@ __all__ = [
48
60
  "ThirdRealityMeteringCluster",
49
61
  "UnitTestingCluster",
50
62
  "WagoCluster",
63
+ "YeelightBasicCluster",
64
+ "YeelightBasicConfigCluster",
65
+ "YeelightCubeControlCluster",
66
+ "YeelightEnhancedColorEffectConfigV2Cluster",
67
+ "YeelightOverTheAirCluster",
51
68
  ]