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 +5 -0
- chip/clusters/cluster_defs/YeelightBasicCluster.py +171 -0
- chip/clusters/cluster_defs/YeelightBasicConfigCluster.py +192 -0
- chip/clusters/cluster_defs/YeelightCubeControlCluster.py +170 -0
- chip/clusters/cluster_defs/YeelightEnhancedColorEffectConfigV2Cluster.py +446 -0
- chip/clusters/cluster_defs/YeelightOverTheAirCluster.py +153 -0
- chip/clusters/cluster_defs/__init__.py +10 -0
- {matter_python_client-1.5.2.dist-info → matter_python_client-1.5.3.dist-info}/METADATA +1 -1
- {matter_python_client-1.5.2.dist-info → matter_python_client-1.5.3.dist-info}/RECORD +13 -8
- matter_server/client/client.py +11 -3
- matter_server/common/custom_clusters.py +17 -0
- {matter_python_client-1.5.2.dist-info → matter_python_client-1.5.3.dist-info}/WHEEL +0 -0
- {matter_python_client-1.5.2.dist-info → matter_python_client-1.5.3.dist-info}/top_level.txt +0 -0
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,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=
|
|
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=
|
|
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=
|
|
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=
|
|
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.
|
|
181
|
-
matter_python_client-1.5.
|
|
182
|
-
matter_python_client-1.5.
|
|
183
|
-
matter_python_client-1.5.
|
|
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,,
|
matter_server/client/client.py
CHANGED
|
@@ -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
|
-
|
|
1573
|
-
|
|
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
|
]
|
|
File without changes
|
|
File without changes
|