Skip to content

Commit 5f5cf3f

Browse files
marcelveldtagnersMartinHjelmare
authored
Bump chip wheels to 2024.4.1 (Matter SDK 1.3) (#675)
Co-authored-by: Stefan Agner <stefan@agner.ch> Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
1 parent 5fc265a commit 5f5cf3f

File tree

4 files changed

+176
-21
lines changed

4 files changed

+176
-21
lines changed

matter_server/client/models/device_types.py

+162-15
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ def __hash__(self) -> int:
3131
return self.device_type
3232

3333

34-
class OrphanClusters(DeviceType, device_type=0xF001):
34+
class OrphanClusters(DeviceType, device_type=0xFFF10001):
3535
"""Orphan Clusters."""
3636

3737
clusters = {
@@ -65,6 +65,7 @@ class RootNode(DeviceType, device_type=0x0016):
6565
all_clusters.EthernetNetworkDiagnostics,
6666
all_clusters.WiFiNetworkDiagnostics,
6767
all_clusters.ThreadNetworkDiagnostics,
68+
all_clusters.IcdManagement,
6869
}
6970

7071

@@ -77,6 +78,17 @@ class PowerSource(DeviceType, device_type=0x0011):
7778
}
7879

7980

81+
class ElectricalSensor(DeviceType, device_type=0x0510):
82+
"""Electrical Sensor."""
83+
84+
clusters = {
85+
all_clusters.Descriptor,
86+
all_clusters.PowerTopology,
87+
all_clusters.ElectricalEnergyMeasurement,
88+
all_clusters.ElectricalPowerMeasurement,
89+
}
90+
91+
8092
class OtaRequestor(DeviceType, device_type=0x0012):
8193
"""OTA Requestor."""
8294

@@ -122,7 +134,7 @@ class OnOffLight(DeviceType, device_type=0x0100):
122134
all_clusters.Identify,
123135
all_clusters.Descriptor,
124136
all_clusters.Groups,
125-
all_clusters.Scenes,
137+
all_clusters.ScenesManagement,
126138
all_clusters.OnOff,
127139
all_clusters.LevelControl,
128140
}
@@ -136,7 +148,7 @@ class DimmableLight(DeviceType, device_type=0x0101):
136148
all_clusters.Descriptor,
137149
all_clusters.Binding,
138150
all_clusters.Groups,
139-
all_clusters.Scenes,
151+
all_clusters.ScenesManagement,
140152
all_clusters.OnOff,
141153
all_clusters.LevelControl,
142154
}
@@ -149,7 +161,7 @@ class ColorTemperatureLight(DeviceType, device_type=0x010C):
149161
all_clusters.Identify,
150162
all_clusters.Descriptor,
151163
all_clusters.Groups,
152-
all_clusters.Scenes,
164+
all_clusters.ScenesManagement,
153165
all_clusters.OnOff,
154166
all_clusters.LevelControl,
155167
all_clusters.ColorControl,
@@ -163,7 +175,7 @@ class ExtendedColorLight(DeviceType, device_type=0x010D):
163175
all_clusters.Identify,
164176
all_clusters.Descriptor,
165177
all_clusters.Groups,
166-
all_clusters.Scenes,
178+
all_clusters.ScenesManagement,
167179
all_clusters.OnOff,
168180
all_clusters.LevelControl,
169181
all_clusters.ColorControl,
@@ -177,7 +189,7 @@ class OnOffPlugInUnit(DeviceType, device_type=0x010A):
177189
all_clusters.Identify,
178190
all_clusters.Descriptor,
179191
all_clusters.Groups,
180-
all_clusters.Scenes,
192+
all_clusters.ScenesManagement,
181193
all_clusters.OnOff,
182194
all_clusters.LevelControl,
183195
}
@@ -190,7 +202,7 @@ class DimmablePlugInUnit(DeviceType, device_type=0x010B):
190202
all_clusters.Identify,
191203
all_clusters.Descriptor,
192204
all_clusters.Groups,
193-
all_clusters.Scenes,
205+
all_clusters.ScenesManagement,
194206
all_clusters.OnOff,
195207
all_clusters.LevelControl,
196208
}
@@ -204,7 +216,7 @@ class Pump(DeviceType, device_type=0x0303):
204216
all_clusters.Descriptor,
205217
all_clusters.Binding,
206218
all_clusters.Groups,
207-
all_clusters.Scenes,
219+
all_clusters.ScenesManagement,
208220
all_clusters.OnOff,
209221
all_clusters.PumpConfigurationAndControl,
210222
all_clusters.LevelControl,
@@ -384,7 +396,7 @@ class WindowCovering(DeviceType, device_type=0x0202):
384396
clusters = {
385397
all_clusters.Identify,
386398
all_clusters.Descriptor,
387-
all_clusters.Scenes,
399+
all_clusters.ScenesManagement,
388400
all_clusters.Groups,
389401
all_clusters.WindowCovering,
390402
}
@@ -408,7 +420,7 @@ class HeatingCoolingUnit(DeviceType, device_type=0x0300):
408420
all_clusters.Descriptor,
409421
all_clusters.Binding,
410422
all_clusters.Groups,
411-
all_clusters.Scenes,
423+
all_clusters.ScenesManagement,
412424
all_clusters.FanControl,
413425
all_clusters.LevelControl,
414426
all_clusters.OnOff,
@@ -422,7 +434,7 @@ class Thermostat(DeviceType, device_type=0x0301):
422434
all_clusters.Identify,
423435
all_clusters.Descriptor,
424436
all_clusters.Binding,
425-
all_clusters.Scenes,
437+
all_clusters.ScenesManagement,
426438
all_clusters.Groups,
427439
all_clusters.Thermostat,
428440
all_clusters.TimeSynchronization,
@@ -569,8 +581,9 @@ class RoomAirConditioner(DeviceType, device_type=0x0072):
569581
all_clusters.OnOff,
570582
all_clusters.Descriptor,
571583
all_clusters.Groups,
572-
all_clusters.Scenes,
584+
all_clusters.ScenesManagement,
573585
all_clusters.Thermostat,
586+
all_clusters.ThermostatUserInterfaceConfiguration,
574587
all_clusters.FanControl,
575588
all_clusters.TemperatureMeasurement,
576589
all_clusters.RelativeHumidityMeasurement,
@@ -589,6 +602,7 @@ class SmokeCoAlarm(DeviceType, device_type=0x0076):
589602
all_clusters.TemperatureMeasurement,
590603
all_clusters.CarbonMonoxideConcentrationMeasurement,
591604
all_clusters.PowerSource,
605+
all_clusters.Descriptor,
592606
}
593607

594608

@@ -641,6 +655,28 @@ class Dishwasher(DeviceType, device_type=0x0075):
641655
}
642656

643657

658+
class Oven(DeviceType, device_type=0x007B):
659+
"""Oven."""
660+
661+
clusters = {
662+
all_clusters.Identify,
663+
all_clusters.Descriptor,
664+
}
665+
666+
667+
class MicrowaveOven(DeviceType, device_type=0x0079):
668+
"""Microwave Oven."""
669+
670+
clusters = {
671+
all_clusters.Identify,
672+
all_clusters.Descriptor,
673+
all_clusters.FanControl,
674+
all_clusters.MicrowaveOvenMode,
675+
all_clusters.MicrowaveOvenControl,
676+
all_clusters.OperationalState,
677+
}
678+
679+
644680
class Refrigerator(DeviceType, device_type=0x0070):
645681
"""Refrigerator."""
646682

@@ -666,6 +702,32 @@ class LaundryWasher(DeviceType, device_type=0x0073):
666702
}
667703

668704

705+
class LaundryDryer(DeviceType, device_type=0x007C):
706+
"""Laundry Dryer."""
707+
708+
clusters = {
709+
all_clusters.Identify,
710+
all_clusters.Descriptor,
711+
all_clusters.OnOff,
712+
all_clusters.LaundryWasherMode,
713+
all_clusters.LaundryDryerControls,
714+
all_clusters.TemperatureControl,
715+
all_clusters.OperationalState,
716+
}
717+
718+
719+
class ExtractorHood(DeviceType, device_type=0x007A):
720+
"""Extractor Hood."""
721+
722+
clusters = {
723+
all_clusters.Identify,
724+
all_clusters.Descriptor,
725+
all_clusters.HepaFilterMonitoring,
726+
all_clusters.ActivatedCarbonFilterMonitoring,
727+
all_clusters.FanControl,
728+
}
729+
730+
669731
class RoboticVacuumCleaner(DeviceType, device_type=0x0074):
670732
"""Robotic Vacuum Cleaner."""
671733

@@ -686,10 +748,63 @@ class TemperatureControlledCabinet(DeviceType, device_type=0x0071):
686748
all_clusters.TemperatureControl,
687749
all_clusters.TemperatureMeasurement,
688750
all_clusters.RefrigeratorAndTemperatureControlledCabinetMode,
751+
all_clusters.OvenMode,
752+
all_clusters.OvenCavityOperationalState,
753+
}
754+
755+
756+
class WaterFreezeDetector(DeviceType, device_type=0x0041):
757+
"""Water Freeze Detector."""
758+
759+
clusters = {
760+
all_clusters.Identify,
761+
all_clusters.BooleanState,
762+
all_clusters.BooleanStateConfiguration,
763+
all_clusters.Descriptor,
689764
}
690765

691766

692-
class AllClustersAppServerExample(DeviceType, device_type=0x0000):
767+
class WaterValve(DeviceType, device_type=0x0042):
768+
"""Water Valve."""
769+
770+
clusters = {
771+
all_clusters.Identify,
772+
all_clusters.ValveConfigurationAndControl,
773+
all_clusters.Descriptor,
774+
}
775+
776+
777+
class WaterLeakDetector(DeviceType, device_type=0x0043):
778+
"""Water Leak Detector."""
779+
780+
clusters = {
781+
all_clusters.Identify,
782+
all_clusters.BooleanState,
783+
all_clusters.BooleanStateConfiguration,
784+
all_clusters.Descriptor,
785+
}
786+
787+
788+
class RainSensor(DeviceType, device_type=0x0044):
789+
"""Rain Sensor."""
790+
791+
clusters = {
792+
all_clusters.Identify,
793+
all_clusters.BooleanState,
794+
all_clusters.BooleanStateConfiguration,
795+
all_clusters.Descriptor,
796+
}
797+
798+
799+
class NetworkInfrastructureManager(DeviceType, device_type=0xFFF10010):
800+
"""Network Infrastructure Manager."""
801+
802+
clusters = {
803+
all_clusters.Descriptor,
804+
}
805+
806+
807+
class AllClustersAppServerExample(DeviceType, device_type=0xFFF10003):
693808
"""All-clusters-app Server Example."""
694809

695810
clusters = {
@@ -702,15 +817,47 @@ class AllClustersAppServerExample(DeviceType, device_type=0x0000):
702817
all_clusters.Groups,
703818
all_clusters.LevelControl,
704819
all_clusters.OnOff,
705-
all_clusters.Scenes,
820+
all_clusters.ScenesManagement,
706821
all_clusters.TemperatureMeasurement,
707822
}
708823

709824

710-
class SecondaryNetworkCommissioningDeviceType(DeviceType, device_type=0xF002):
825+
class SecondaryNetworkCommissioningDeviceType(DeviceType, device_type=0xFFF10002):
711826
"""Secondary Network Commissioning Device Type."""
712827

713828
clusters = {
714829
all_clusters.NetworkCommissioning,
715830
all_clusters.Descriptor,
716831
}
832+
833+
834+
class Cooktop(DeviceType, device_type=0x0078):
835+
"""Cooktop."""
836+
837+
clusters = {
838+
all_clusters.Descriptor,
839+
all_clusters.Identify,
840+
all_clusters.OnOff,
841+
}
842+
843+
844+
class CookSurface(DeviceType, device_type=0x0077):
845+
"""Cook Surface."""
846+
847+
clusters = {
848+
all_clusters.Descriptor,
849+
all_clusters.TemperatureControl,
850+
all_clusters.TemperatureMeasurement,
851+
}
852+
853+
854+
class Evse(DeviceType, device_type=0x050C):
855+
"""EVSE."""
856+
857+
clusters = {
858+
all_clusters.Descriptor,
859+
all_clusters.Identify,
860+
all_clusters.EnergyEvse,
861+
all_clusters.EnergyEvseMode,
862+
all_clusters.TemperatureMeasurement,
863+
}

matter_server/server/device_controller.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
from chip.clusters import Attribute, Objects as Clusters
2020
from chip.clusters.Attribute import ValueDecodeFailure
2121
from chip.clusters.ClusterObjects import ALL_ATTRIBUTES, ALL_CLUSTERS, Cluster
22+
from chip.discovery import DiscoveryType
2223
from chip.exceptions import ChipStackError
2324
from chip.native import PyChipError
2425
from zeroconf import BadTypeInNameException, IPVersion, ServiceStateChange, Zeroconf
@@ -256,7 +257,9 @@ async def commission_with_code(
256257
self.chip_controller.CommissionWithCode,
257258
setupPayload=code,
258259
nodeid=node_id,
259-
networkOnly=network_only,
260+
discoveryType=DiscoveryType.DISCOVERY_NETWORK_ONLY
261+
if network_only
262+
else DiscoveryType.DISCOVERY_ALL,
260263
)
261264
if result and result.is_success:
262265
break

pyproject.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ dependencies = [
2121
"coloredlogs",
2222
"dacite",
2323
"orjson",
24-
"home-assistant-chip-clusters==2024.3.2",
24+
"home-assistant-chip-clusters==2024.4.1",
2525
]
2626
description = "Python Matter WebSocket Server"
2727
license = {text = "Apache-2.0"}
@@ -33,7 +33,7 @@ version = "0.0.0"
3333

3434
[project.optional-dependencies]
3535
server = [
36-
"home-assistant-chip-core==2024.3.2",
36+
"home-assistant-chip-core==2024.4.1",
3737
"cryptography==42.0.5",
3838
"zeroconf==0.132.2",
3939
]

scripts/generate_devices.py

+8-3
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
"""Generate device types from matter-devices.xml."""
22

33
import pathlib
4+
import urllib.request
45

56
import black
67
import xmltodict
78

89
REPO_ROOT = pathlib.Path(__file__).parent.parent
910

10-
CHIP_ROOT = REPO_ROOT / "../../project-chip/connectedhomeip"
11-
DEVICE_XML = CHIP_ROOT / "src/app/zap-templates/zcl/data-model/chip/matter-devices.xml"
11+
DEVICE_XML = (
12+
"https://raw.githubusercontent.com/project-chip/connectedhomeip"
13+
"/master/src/app/zap-templates/zcl/data-model/chip/matter-devices.xml"
14+
)
1215

1316
OUTPUT_PYTHON = REPO_ROOT / "matter_server/client/models/device_types.py"
1417

@@ -42,7 +45,9 @@ def gen_cls_name(name: str):
4245

4346
def main():
4447
"""Generate device types from matter-devices.xml."""
45-
data = xmltodict.parse(DEVICE_XML.read_text())
48+
with urllib.request.urlopen(DEVICE_XML) as response: # noqa: S310
49+
xml_data = response.read().decode("utf-8")
50+
data = xmltodict.parse(xml_data)
4651
output = [
4752
'''
4853
"""

0 commit comments

Comments
 (0)