@homebridge-plugins/homebridge-matter 0.0.5 → 0.1.0
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.
- package/CHANGELOG.md +17 -0
- package/README.md +67 -33
- package/config.schema.json +222 -2
- package/dist/devices/index.d.ts +13 -0
- package/dist/devices/index.js +22 -0
- package/dist/devices/index.js.map +1 -0
- package/dist/devices/section-12-robotic/index.d.ts +6 -0
- package/dist/devices/section-12-robotic/index.js +7 -0
- package/dist/devices/section-12-robotic/index.js.map +1 -0
- package/dist/devices/section-12-robotic/robotic-vacuum-cleaner.d.ts +63 -0
- package/dist/devices/section-12-robotic/robotic-vacuum-cleaner.js +318 -0
- package/dist/devices/section-12-robotic/robotic-vacuum-cleaner.js.map +1 -0
- package/dist/devices/section-4-lighting/color-temperature-light.d.ts +7 -0
- package/dist/devices/section-4-lighting/color-temperature-light.js +62 -0
- package/dist/devices/section-4-lighting/color-temperature-light.js.map +1 -0
- package/dist/devices/section-4-lighting/dimmable-light.d.ts +7 -0
- package/dist/devices/section-4-lighting/dimmable-light.js +48 -0
- package/dist/devices/section-4-lighting/dimmable-light.js.map +1 -0
- package/dist/devices/section-4-lighting/extended-color-light.d.ts +12 -0
- package/dist/devices/section-4-lighting/extended-color-light.js +142 -0
- package/dist/devices/section-4-lighting/extended-color-light.js.map +1 -0
- package/dist/devices/section-4-lighting/index.d.ts +9 -0
- package/dist/devices/section-4-lighting/index.js +10 -0
- package/dist/devices/section-4-lighting/index.js.map +1 -0
- package/dist/devices/section-4-lighting/on-off-light.d.ts +7 -0
- package/dist/devices/section-4-lighting/on-off-light.js +37 -0
- package/dist/devices/section-4-lighting/on-off-light.js.map +1 -0
- package/dist/devices/section-5-smart-plugs/dimmable-plug-in-unit.d.ts +7 -0
- package/dist/devices/section-5-smart-plugs/dimmable-plug-in-unit.js +48 -0
- package/dist/devices/section-5-smart-plugs/dimmable-plug-in-unit.js.map +1 -0
- package/dist/devices/section-5-smart-plugs/index.d.ts +7 -0
- package/dist/devices/section-5-smart-plugs/index.js +8 -0
- package/dist/devices/section-5-smart-plugs/index.js.map +1 -0
- package/dist/devices/section-5-smart-plugs/on-off-plug-in-unit.d.ts +7 -0
- package/dist/devices/section-5-smart-plugs/on-off-plug-in-unit.js +37 -0
- package/dist/devices/section-5-smart-plugs/on-off-plug-in-unit.js.map +1 -0
- package/dist/devices/section-6-switches/index.d.ts +6 -0
- package/dist/devices/section-6-switches/index.js +7 -0
- package/dist/devices/section-6-switches/index.js.map +1 -0
- package/dist/devices/section-6-switches/on-off-light-switch.d.ts +7 -0
- package/dist/devices/section-6-switches/on-off-light-switch.js +30 -0
- package/dist/devices/section-6-switches/on-off-light-switch.js.map +1 -0
- package/dist/devices/section-7-sensors/contact-sensor.d.ts +7 -0
- package/dist/devices/section-7-sensors/contact-sensor.js +27 -0
- package/dist/devices/section-7-sensors/contact-sensor.js.map +1 -0
- package/dist/devices/section-7-sensors/humidity-sensor.d.ts +7 -0
- package/dist/devices/section-7-sensors/humidity-sensor.js +29 -0
- package/dist/devices/section-7-sensors/humidity-sensor.js.map +1 -0
- package/dist/devices/section-7-sensors/index.d.ts +12 -0
- package/dist/devices/section-7-sensors/index.js +13 -0
- package/dist/devices/section-7-sensors/index.js.map +1 -0
- package/dist/devices/section-7-sensors/light-sensor.d.ts +7 -0
- package/dist/devices/section-7-sensors/light-sensor.js +29 -0
- package/dist/devices/section-7-sensors/light-sensor.js.map +1 -0
- package/dist/devices/section-7-sensors/occupancy-sensor.d.ts +8 -0
- package/dist/devices/section-7-sensors/occupancy-sensor.js +33 -0
- package/dist/devices/section-7-sensors/occupancy-sensor.js.map +1 -0
- package/dist/devices/section-7-sensors/smoke-co-alarm.d.ts +7 -0
- package/dist/devices/section-7-sensors/smoke-co-alarm.js +37 -0
- package/dist/devices/section-7-sensors/smoke-co-alarm.js.map +1 -0
- package/dist/devices/section-7-sensors/temperature-sensor.d.ts +7 -0
- package/dist/devices/section-7-sensors/temperature-sensor.js +29 -0
- package/dist/devices/section-7-sensors/temperature-sensor.js.map +1 -0
- package/dist/devices/section-7-sensors/water-leak-detector.d.ts +7 -0
- package/dist/devices/section-7-sensors/water-leak-detector.js +27 -0
- package/dist/devices/section-7-sensors/water-leak-detector.js.map +1 -0
- package/dist/devices/section-8-closure/door-lock.d.ts +7 -0
- package/dist/devices/section-8-closure/door-lock.js +48 -0
- package/dist/devices/section-8-closure/door-lock.js.map +1 -0
- package/dist/devices/section-8-closure/index.d.ts +7 -0
- package/dist/devices/section-8-closure/index.js +8 -0
- package/dist/devices/section-8-closure/index.js.map +1 -0
- package/dist/devices/section-8-closure/window-covering.d.ts +9 -0
- package/dist/devices/section-8-closure/window-covering.js +154 -0
- package/dist/devices/section-8-closure/window-covering.js.map +1 -0
- package/dist/devices/section-9-hvac/fan.d.ts +7 -0
- package/dist/devices/section-9-hvac/fan.js +56 -0
- package/dist/devices/section-9-hvac/fan.js.map +1 -0
- package/dist/devices/section-9-hvac/index.d.ts +7 -0
- package/dist/devices/section-9-hvac/index.js +8 -0
- package/dist/devices/section-9-hvac/index.js.map +1 -0
- package/dist/devices/section-9-hvac/thermostat.d.ts +7 -0
- package/dist/devices/section-9-hvac/thermostat.js +61 -0
- package/dist/devices/section-9-hvac/thermostat.js.map +1 -0
- package/dist/devices/types.d.ts +16 -0
- package/dist/devices/types.js +5 -0
- package/dist/devices/types.js.map +1 -0
- package/dist/homebridge-ui/public/index.html +269 -0
- package/dist/homebridge-ui/server.js +47 -0
- package/dist/platform.d.ts +28 -20
- package/dist/platform.js +187 -973
- package/dist/platform.js.map +1 -1
- package/package.json +9 -9
- package/plugin-header.png +0 -0
- package/.claude/settings.local.json +0 -28
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `@homebridge-plugins/homebridge-matter` will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## v0.1.0 (2025-10-20)
|
|
6
|
+
|
|
7
|
+
### Changes
|
|
8
|
+
|
|
9
|
+
- added plugin header image
|
|
10
|
+
- update plugin repo meta files
|
|
11
|
+
- added custom plugin ui
|
|
12
|
+
- plugin code refactoring + more devices
|
|
13
|
+
- add plugin workflows, including release workflows
|
|
14
|
+
- Add Claude Code GitHub Workflow (#1)
|
|
15
|
+
|
|
16
|
+
## v0.0.6 (2025-10-18)
|
|
17
|
+
|
|
18
|
+
### Changes
|
|
19
|
+
|
|
20
|
+
- allow configuration of examples to expose
|
|
21
|
+
|
|
5
22
|
## v0.0.5 (2025-10-18)
|
|
6
23
|
|
|
7
24
|
### Changes
|
package/README.md
CHANGED
|
@@ -1,52 +1,86 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
+
<a href="https://github.com/homebridge-plugins/homebridge-matter"><img alt="Homebridge Verified" src="https://github.com/homebridge-plugins/homebridge-matter/blob/latest/plugin-header.png?raw=true" width="600px"></a>
|
|
3
|
+
</p>
|
|
4
|
+
<span align="center">
|
|
2
5
|
|
|
3
|
-
|
|
6
|
+
# homebridge-matter
|
|
4
7
|
|
|
5
|
-
|
|
8
|
+
Homebridge plugin to showcase examples of Matter devices in Homebridge.
|
|
6
9
|
|
|
7
|
-
|
|
10
|
+
[](https://www.npmjs.com/package/@homebridge-plugins/homebridge-matter)
|
|
11
|
+
[](https://github.com/homebridge-plugins/homebridge-matter/wiki/Beta-Version)
|
|
12
|
+
|
|
13
|
+
[](https://github.com/homebridge/homebridge/wiki/Verified-Plugins)
|
|
8
14
|
|
|
9
|
-
|
|
15
|
+
[](https://www.npmjs.com/package/@homebridge-plugins/homebridge-matter)
|
|
16
|
+
[](https://discord.com/channels/432663330281226270/742733745743855627)
|
|
10
17
|
|
|
11
18
|
</span>
|
|
12
19
|
|
|
13
|
-
###
|
|
20
|
+
### Plugin Information
|
|
21
|
+
|
|
22
|
+
This plugin provides example implementations of Matter device types in Homebridge:
|
|
23
|
+
|
|
24
|
+
- **21+ Matter Device Types**: Complete implementations across all major Matter device categories
|
|
25
|
+
- **Demonstration & Testing**: Perfect for developers building Matter plugins or testing Matter integrations
|
|
26
|
+
- **Example Code Reference**: Clean, documented examples showing how to implement Matter devices in Homebridge
|
|
27
|
+
- **Apple Home Compatible**: Special support for devices like robotic vacuum cleaners that require dedicated bridges
|
|
28
|
+
- **Production Ready**: Built on the official Matter specification with proper cluster implementations
|
|
29
|
+
|
|
30
|
+
#### Supported Matter Device Types
|
|
31
|
+
|
|
32
|
+
**Section 4: Lighting Devices** (Matter Spec § 4) - 5 devices
|
|
33
|
+
- On/Off Light
|
|
34
|
+
- Dimmable Light
|
|
35
|
+
- Colour Temperature Light
|
|
36
|
+
- Colour Light (HS)
|
|
37
|
+
- Extended Colour Light (HS+CCT)
|
|
38
|
+
|
|
39
|
+
**Section 5: Smart Plugs/Actuators** (Matter Spec § 5) - 2 devices
|
|
40
|
+
- On/Off Outlet
|
|
41
|
+
- Dimmable Outlet
|
|
42
|
+
|
|
43
|
+
**Section 6: Switches & Controllers** (Matter Spec § 6) - 1 device
|
|
44
|
+
- On/Off Light Switch
|
|
45
|
+
|
|
46
|
+
**Section 7: Sensors** (Matter Spec § 7) - 7 devices
|
|
47
|
+
- Contact Sensor
|
|
48
|
+
- Light Sensor
|
|
49
|
+
- Motion Sensor (Occupancy)
|
|
50
|
+
- Temperature Sensor
|
|
51
|
+
- Humidity Sensor
|
|
52
|
+
- Smoke/CO Alarm
|
|
53
|
+
- Water Leak Detector
|
|
14
54
|
|
|
15
|
-
|
|
55
|
+
**Section 8: Closure Devices** (Matter Spec § 8) - 3 devices
|
|
56
|
+
- Door Lock
|
|
57
|
+
- Window Blind
|
|
58
|
+
- Venetian Blind (with Tilt)
|
|
16
59
|
|
|
17
|
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
60
|
+
**Section 9: HVAC** (Matter Spec § 9) - 2 devices
|
|
61
|
+
- Thermostat
|
|
62
|
+
- Fan
|
|
20
63
|
|
|
21
|
-
|
|
64
|
+
**Section 12: Robotic Devices** (Matter Spec § 12) - 1 device
|
|
65
|
+
- Robotic Vacuum Cleaner (published as an external accessory on a dedicated Matter bridge)
|
|
22
66
|
|
|
23
|
-
|
|
67
|
+
### Prerequisites
|
|
24
68
|
|
|
25
|
-
|
|
69
|
+
- To use this plugin, you will need to already have:
|
|
70
|
+
- [Node](https://nodejs.org): latest version of `v20`, `v22` or `v24` - any other major version is not supported.
|
|
71
|
+
- [Homebridge](https://homebridge.io): `>=2.0.0-alpha.55 <2.0.0-beta.0` - refer to link for more information and installation instructions.
|
|
26
72
|
|
|
27
|
-
|
|
28
|
-
- **State Updates** (Device → Home app) - How to sync state when devices change externally (native app, physical buttons, webhooks, etc.)
|
|
29
|
-
- Complete working examples for outlets, lights, and sensors
|
|
30
|
-
- Differences between Matter and HAP (HomeKit Accessory Protocol) patterns
|
|
73
|
+
### Help/About
|
|
31
74
|
|
|
32
|
-
|
|
75
|
+
- [Support Request](https://github.com/homebridge-plugins/homebridge-matter/issues/new/choose)
|
|
76
|
+
- [Changelog](https://github.com/homebridge-plugins/homebridge-matter/blob/latest/CHANGELOG.md)
|
|
77
|
+
- [About Me](https://github.com/sponsors/bwp91)
|
|
33
78
|
|
|
34
|
-
|
|
35
|
-
handlers: {
|
|
36
|
-
onOff: {
|
|
37
|
-
on: async () => {
|
|
38
|
-
await yourDeviceAPI.turnOn()
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
79
|
+
### Credits
|
|
42
80
|
|
|
43
|
-
|
|
44
|
-
function handleExternalChange(newState: boolean) {
|
|
45
|
-
this.api.updateMatterAccessoryState('device-uuid', 'onOff', {
|
|
46
|
-
onOff: newState,
|
|
47
|
-
})
|
|
48
|
-
}
|
|
49
|
-
```
|
|
81
|
+
- To the developers of [matter.js](https://github.com/matter-js/matter.js) who make the Matter integration possible.
|
|
50
82
|
|
|
51
|
-
|
|
83
|
+
### Disclaimer
|
|
52
84
|
|
|
85
|
+
- I am in no way affiliated with Matter and this plugin is a personal project that I maintain in my free time.
|
|
86
|
+
- Use this plugin entirely at your own risk - please see licence for more information.
|
package/config.schema.json
CHANGED
|
@@ -2,7 +2,10 @@
|
|
|
2
2
|
"pluginAlias": "Matter",
|
|
3
3
|
"pluginType": "platform",
|
|
4
4
|
"singular": true,
|
|
5
|
-
"strictValidation":
|
|
5
|
+
"strictValidation": true,
|
|
6
|
+
"customUi": true,
|
|
7
|
+
"customUiPath": "./dist/homebridge-ui",
|
|
8
|
+
"headerDisplay": "<p align=\"center\"><img width=\"60%\" src=\"https://github.com/homebridge-plugins/homebridge-matter/blob/latest/plugin-header.png?raw=true\"></p><p align=\"center\">For help and support please visit our <a href=\"https://github.com/homebridge-plugins/homebridge-matter/wiki\">GitHub Wiki</a>. We hope you find this plugin useful!</p>",
|
|
6
9
|
"schema": {
|
|
7
10
|
"type": "object",
|
|
8
11
|
"required": ["name"],
|
|
@@ -12,7 +15,224 @@
|
|
|
12
15
|
"title": "Name",
|
|
13
16
|
"type": "string",
|
|
14
17
|
"default": "Homebridge Matter"
|
|
18
|
+
},
|
|
19
|
+
"enableOnOffLight": {
|
|
20
|
+
"title": "Enable On/Off Light",
|
|
21
|
+
"type": "boolean",
|
|
22
|
+
"default": false,
|
|
23
|
+
"description": "Enable the on/off light example accessory (Matter Spec § 4.1)."
|
|
24
|
+
},
|
|
25
|
+
"enableDimmableLight": {
|
|
26
|
+
"title": "Enable Dimmable Light",
|
|
27
|
+
"type": "boolean",
|
|
28
|
+
"default": false,
|
|
29
|
+
"description": "Enable the dimmable light example accessory (Matter Spec § 4.2)."
|
|
30
|
+
},
|
|
31
|
+
"enableColourTemperatureLight": {
|
|
32
|
+
"title": "Enable Colour Temperature Light",
|
|
33
|
+
"type": "boolean",
|
|
34
|
+
"default": false,
|
|
35
|
+
"description": "Enable the colour temperature light example accessory (Matter Spec § 4.3)."
|
|
36
|
+
},
|
|
37
|
+
"enableColourLight": {
|
|
38
|
+
"title": "Enable Colour Light (HS)",
|
|
39
|
+
"type": "boolean",
|
|
40
|
+
"default": false,
|
|
41
|
+
"description": "Enable the colour light (hue/saturation) example accessory (Matter Spec § 4.4)."
|
|
42
|
+
},
|
|
43
|
+
"enableExtendedColourLight": {
|
|
44
|
+
"title": "Enable Extended Colour Light (HS+CCT)",
|
|
45
|
+
"type": "boolean",
|
|
46
|
+
"default": false,
|
|
47
|
+
"description": "Enable the extended colour light (hue/saturation + colour temperature) example accessory (Matter Spec § 4.4)."
|
|
48
|
+
},
|
|
49
|
+
"enableOnOffOutlet": {
|
|
50
|
+
"title": "Enable On/Off Outlet",
|
|
51
|
+
"type": "boolean",
|
|
52
|
+
"default": false,
|
|
53
|
+
"description": "Enable the on/off outlet (smart plug) example accessory (Matter Spec § 5.1)."
|
|
54
|
+
},
|
|
55
|
+
"enableDimmableOutlet": {
|
|
56
|
+
"title": "Enable Dimmable Outlet",
|
|
57
|
+
"type": "boolean",
|
|
58
|
+
"default": false,
|
|
59
|
+
"description": "Enable the dimmable outlet example accessory (Matter Spec § 5.2)."
|
|
60
|
+
},
|
|
61
|
+
"enableOnOffSwitch": {
|
|
62
|
+
"title": "Enable On/Off Light Switch",
|
|
63
|
+
"type": "boolean",
|
|
64
|
+
"default": false,
|
|
65
|
+
"description": "Enable the on/off light switch example accessory (Matter Spec § 6.1)."
|
|
66
|
+
},
|
|
67
|
+
"enableContactSensor": {
|
|
68
|
+
"title": "Enable Contact Sensor",
|
|
69
|
+
"type": "boolean",
|
|
70
|
+
"default": false,
|
|
71
|
+
"description": "Enable the contact sensor example accessory (Matter Spec § 7.1)."
|
|
72
|
+
},
|
|
73
|
+
"enableLightSensor": {
|
|
74
|
+
"title": "Enable Light Sensor",
|
|
75
|
+
"type": "boolean",
|
|
76
|
+
"default": false,
|
|
77
|
+
"description": "Enable the light sensor example accessory (Matter Spec § 7.2)."
|
|
78
|
+
},
|
|
79
|
+
"enableMotionSensor": {
|
|
80
|
+
"title": "Enable Motion Sensor",
|
|
81
|
+
"type": "boolean",
|
|
82
|
+
"default": false,
|
|
83
|
+
"description": "Enable the motion sensor (occupancy sensor) example accessory (Matter Spec § 7.3)."
|
|
84
|
+
},
|
|
85
|
+
"enableTemperatureSensor": {
|
|
86
|
+
"title": "Enable Temperature Sensor",
|
|
87
|
+
"type": "boolean",
|
|
88
|
+
"default": false,
|
|
89
|
+
"description": "Enable the temperature sensor example accessory (Matter Spec § 7.4)."
|
|
90
|
+
},
|
|
91
|
+
"enableHumiditySensor": {
|
|
92
|
+
"title": "Enable Humidity Sensor",
|
|
93
|
+
"type": "boolean",
|
|
94
|
+
"default": false,
|
|
95
|
+
"description": "Enable the humidity sensor example accessory (Matter Spec § 7.7)."
|
|
96
|
+
},
|
|
97
|
+
"enableSmokeSensor": {
|
|
98
|
+
"title": "Enable Smoke/CO Alarm",
|
|
99
|
+
"type": "boolean",
|
|
100
|
+
"default": false,
|
|
101
|
+
"description": "Enable the smoke and carbon monoxide alarm example accessory (Matter Spec § 7.9)."
|
|
102
|
+
},
|
|
103
|
+
"enableLeakSensor": {
|
|
104
|
+
"title": "Enable Water Leak Detector",
|
|
105
|
+
"type": "boolean",
|
|
106
|
+
"default": false,
|
|
107
|
+
"description": "Enable the water leak detector example accessory (Matter Spec § 7.12)."
|
|
108
|
+
},
|
|
109
|
+
"enableDoorLock": {
|
|
110
|
+
"title": "Enable Door Lock",
|
|
111
|
+
"type": "boolean",
|
|
112
|
+
"default": false,
|
|
113
|
+
"description": "Enable the door lock example accessory (Matter Spec § 8.1)."
|
|
114
|
+
},
|
|
115
|
+
"enableWindowBlind": {
|
|
116
|
+
"title": "Enable Window Blind",
|
|
117
|
+
"type": "boolean",
|
|
118
|
+
"default": false,
|
|
119
|
+
"description": "Enable the window blind example accessory (Matter Spec § 8.3)."
|
|
120
|
+
},
|
|
121
|
+
"enableVenetianBlind": {
|
|
122
|
+
"title": "Enable Venetian Blind (Tilt)",
|
|
123
|
+
"type": "boolean",
|
|
124
|
+
"default": false,
|
|
125
|
+
"description": "Enable the Venetian blind with tilt control example accessory (Matter Spec § 8.3)."
|
|
126
|
+
},
|
|
127
|
+
"enableThermostat": {
|
|
128
|
+
"title": "Enable Thermostat",
|
|
129
|
+
"type": "boolean",
|
|
130
|
+
"default": false,
|
|
131
|
+
"description": "Enable the thermostat example accessory (Matter Spec § 9.1)."
|
|
132
|
+
},
|
|
133
|
+
"enableFan": {
|
|
134
|
+
"title": "Enable Fan",
|
|
135
|
+
"type": "boolean",
|
|
136
|
+
"default": false,
|
|
137
|
+
"description": "Enable the fan example accessory (Matter Spec § 9.2)."
|
|
138
|
+
},
|
|
139
|
+
"enableRobotVacuum": {
|
|
140
|
+
"title": "Enable Robotic Vacuum Cleaner (Apple Home Compatible)",
|
|
141
|
+
"type": "boolean",
|
|
142
|
+
"default": false,
|
|
143
|
+
"description": "✅ Enable the robotic vacuum cleaner example accessory (Matter Spec § 12.1). This device is automatically published on its own dedicated Matter bridge for Apple Home compatibility. You'll receive separate commissioning codes (QR code + manual code) for the robot vacuum."
|
|
15
144
|
}
|
|
16
145
|
}
|
|
17
|
-
}
|
|
146
|
+
},
|
|
147
|
+
"layout": [
|
|
148
|
+
{
|
|
149
|
+
"type": "fieldset",
|
|
150
|
+
"title": "Plugin Settings",
|
|
151
|
+
"items": ["name"]
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"type": "fieldset",
|
|
155
|
+
"title": "Section 4: Lighting Devices",
|
|
156
|
+
"description": "Matter Specification § 4 - Fundamental lighting device types (5 devices implemented)",
|
|
157
|
+
"expandable": true,
|
|
158
|
+
"expanded": false,
|
|
159
|
+
"items": [
|
|
160
|
+
"enableOnOffLight",
|
|
161
|
+
"enableDimmableLight",
|
|
162
|
+
"enableColourTemperatureLight",
|
|
163
|
+
"enableColourLight",
|
|
164
|
+
"enableExtendedColourLight"
|
|
165
|
+
]
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
"type": "fieldset",
|
|
169
|
+
"title": "Section 5: Smart Plugs/Actuators",
|
|
170
|
+
"description": "Matter Specification § 5 - Devices that control power and fluid flow (2 devices implemented)",
|
|
171
|
+
"expandable": true,
|
|
172
|
+
"expanded": false,
|
|
173
|
+
"items": [
|
|
174
|
+
"enableOnOffOutlet",
|
|
175
|
+
"enableDimmableOutlet"
|
|
176
|
+
]
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"type": "fieldset",
|
|
180
|
+
"title": "Section 6: Switches & Controllers",
|
|
181
|
+
"description": "Matter Specification § 6 - Input devices and control interfaces (1 device implemented)",
|
|
182
|
+
"expandable": true,
|
|
183
|
+
"expanded": false,
|
|
184
|
+
"items": [
|
|
185
|
+
"enableOnOffSwitch"
|
|
186
|
+
]
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
"type": "fieldset",
|
|
190
|
+
"title": "Section 7: Sensors",
|
|
191
|
+
"description": "Matter Specification § 7 - All sensor types (7 devices implemented)",
|
|
192
|
+
"expandable": true,
|
|
193
|
+
"expanded": false,
|
|
194
|
+
"items": [
|
|
195
|
+
"enableContactSensor",
|
|
196
|
+
"enableLightSensor",
|
|
197
|
+
"enableMotionSensor",
|
|
198
|
+
"enableTemperatureSensor",
|
|
199
|
+
"enableHumiditySensor",
|
|
200
|
+
"enableSmokeSensor",
|
|
201
|
+
"enableLeakSensor"
|
|
202
|
+
]
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
"type": "fieldset",
|
|
206
|
+
"title": "Section 8: Closure Devices",
|
|
207
|
+
"description": "Matter Specification § 8 - Locks and window coverings (3 devices implemented)",
|
|
208
|
+
"expandable": true,
|
|
209
|
+
"expanded": false,
|
|
210
|
+
"items": [
|
|
211
|
+
"enableDoorLock",
|
|
212
|
+
"enableWindowBlind",
|
|
213
|
+
"enableVenetianBlind"
|
|
214
|
+
]
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"type": "fieldset",
|
|
218
|
+
"title": "Section 9: HVAC",
|
|
219
|
+
"description": "Matter Specification § 9 - Heating, ventilation, and air conditioning (2 devices implemented)",
|
|
220
|
+
"expandable": true,
|
|
221
|
+
"expanded": false,
|
|
222
|
+
"items": [
|
|
223
|
+
"enableThermostat",
|
|
224
|
+
"enableFan"
|
|
225
|
+
]
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
"type": "fieldset",
|
|
229
|
+
"title": "Section 12: Robotic Devices",
|
|
230
|
+
"description": "Matter Specification § 12 - Autonomous cleaning devices (1 device implemented)",
|
|
231
|
+
"expandable": true,
|
|
232
|
+
"expanded": false,
|
|
233
|
+
"items": [
|
|
234
|
+
"enableRobotVacuum"
|
|
235
|
+
]
|
|
236
|
+
}
|
|
237
|
+
]
|
|
18
238
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Matter Device Implementations
|
|
3
|
+
*
|
|
4
|
+
* Organized by official Matter Specification v1.4.1 categories
|
|
5
|
+
*/
|
|
6
|
+
export * from './section-4-lighting/index.js';
|
|
7
|
+
export * from './section-5-smart-plugs/index.js';
|
|
8
|
+
export * from './section-6-switches/index.js';
|
|
9
|
+
export * from './section-7-sensors/index.js';
|
|
10
|
+
export * from './section-8-closure/index.js';
|
|
11
|
+
export * from './section-9-hvac/index.js';
|
|
12
|
+
export * from './section-12-robotic/index.js';
|
|
13
|
+
export * from './types.js';
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Matter Device Implementations
|
|
3
|
+
*
|
|
4
|
+
* Organized by official Matter Specification v1.4.1 categories
|
|
5
|
+
*/
|
|
6
|
+
// Section 4: Lighting Devices
|
|
7
|
+
export * from './section-4-lighting/index.js';
|
|
8
|
+
// Section 5: Smart Plugs/Actuators
|
|
9
|
+
export * from './section-5-smart-plugs/index.js';
|
|
10
|
+
// Section 6: Switches & Controllers
|
|
11
|
+
export * from './section-6-switches/index.js';
|
|
12
|
+
// Section 7: Sensors
|
|
13
|
+
export * from './section-7-sensors/index.js';
|
|
14
|
+
// Section 8: Closure Devices
|
|
15
|
+
export * from './section-8-closure/index.js';
|
|
16
|
+
// Section 9: HVAC
|
|
17
|
+
export * from './section-9-hvac/index.js';
|
|
18
|
+
// Section 12: Robotic Devices
|
|
19
|
+
export * from './section-12-robotic/index.js';
|
|
20
|
+
// Common types
|
|
21
|
+
export * from './types.js';
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/devices/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,8BAA8B;AAC9B,cAAc,+BAA+B,CAAA;AAE7C,mCAAmC;AACnC,cAAc,kCAAkC,CAAA;AAEhD,oCAAoC;AACpC,cAAc,+BAA+B,CAAA;AAE7C,qBAAqB;AACrB,cAAc,8BAA8B,CAAA;AAE5C,6BAA6B;AAC7B,cAAc,8BAA8B,CAAA;AAE5C,kBAAkB;AAClB,cAAc,2BAA2B,CAAA;AAEzC,8BAA8B;AAC9B,cAAc,+BAA+B,CAAA;AAE7C,eAAe;AACf,cAAc,YAAY,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/devices/section-12-robotic/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAA"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Robotic Vacuum Cleaner Device (Matter Spec § 12.1)
|
|
3
|
+
*
|
|
4
|
+
* A robotic vacuum cleaner with autonomous cleaning capabilities.
|
|
5
|
+
*
|
|
6
|
+
* ✅ Apple Home Compatibility - EXTERNAL ACCESSORIES
|
|
7
|
+
* This device is published using api.matter.publishExternalAccessories() in platform.ts.
|
|
8
|
+
* RVC devices MUST be on their own dedicated Matter bridge for Apple Home compatibility.
|
|
9
|
+
*
|
|
10
|
+
* IMPORTANT: This function only CREATES the accessory configuration.
|
|
11
|
+
* The actual publishing happens in platform.ts using publishExternalAccessories().
|
|
12
|
+
*
|
|
13
|
+
* What happens when this device is published as external:
|
|
14
|
+
* ─────────────────────────────────────────────────────────────
|
|
15
|
+
* 1. Dedicated Matter Server: Gets its own MatterServer instance
|
|
16
|
+
* 2. Automatic Port Allocation: Receives a unique port (e.g., 5541)
|
|
17
|
+
* 3. Separate Commissioning: Gets its own QR code and manual pairing code
|
|
18
|
+
* 4. Isolation: Completely independent from other Matter accessories
|
|
19
|
+
* 5. Apple Home Compatible: Works properly with Apple Home's RVC requirements
|
|
20
|
+
*
|
|
21
|
+
* When you start Homebridge, you'll see logs like:
|
|
22
|
+
* ```
|
|
23
|
+
* [Matter] Publishing 1 external Matter accessory
|
|
24
|
+
* [Matter] Allocated port 5541 for external Matter accessory: Robot Vacuum
|
|
25
|
+
* [Matter] ✓ External Matter accessory published: Robot Vacuum on port 5541
|
|
26
|
+
* [Matter] 📱 Commissioning codes for Robot Vacuum:
|
|
27
|
+
* [Matter] QR Code: MT:Y.K9042C00KA0648G00
|
|
28
|
+
* [Matter] Manual Code: 3492-8840-7309-5200-911
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* Use the separate QR code to commission this device in Apple Home.
|
|
32
|
+
*
|
|
33
|
+
* For developers implementing similar devices:
|
|
34
|
+
* ──────────────────────────────────────────────
|
|
35
|
+
* If you need to create your own device that requires isolation (like cameras,
|
|
36
|
+
* doorbells, or other complex devices that Apple Home requires on separate bridges),
|
|
37
|
+
* follow this pattern:
|
|
38
|
+
*
|
|
39
|
+
* 1. Create the accessory configuration in a device file (like this one)
|
|
40
|
+
* 2. Return it from your registration function
|
|
41
|
+
* 3. In platform.ts, use api.matter.publishExternalAccessories() instead of
|
|
42
|
+
* api.matter.registerPlatformAccessories()
|
|
43
|
+
*
|
|
44
|
+
* Example in your platform.ts:
|
|
45
|
+
* ```typescript
|
|
46
|
+
* const accessories = [...registerYourDevice(context)]
|
|
47
|
+
* if (accessories.length > 0) {
|
|
48
|
+
* // Use publishExternalAccessories for devices that need isolation
|
|
49
|
+
* this.api.matter.publishExternalAccessories(PLUGIN_NAME, accessories)
|
|
50
|
+
* }
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
import type { DeviceContext } from '../types.js';
|
|
54
|
+
/**
|
|
55
|
+
* Registers a Robotic Vacuum Cleaner accessory.
|
|
56
|
+
*
|
|
57
|
+
* NOTE: This returns the accessory configuration but does NOT publish it.
|
|
58
|
+
* Publishing happens in platform.ts using api.matter.publishExternalAccessories().
|
|
59
|
+
*
|
|
60
|
+
* @param context - Device context containing API, logger, and config
|
|
61
|
+
* @returns Array of RVC accessory configurations (empty if disabled)
|
|
62
|
+
*/
|
|
63
|
+
export declare function registerRoboticVacuumCleaner(context: DeviceContext): any[];
|