@homebridge-plugins/homebridge-matter 0.0.6 → 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.
Files changed (95) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +67 -33
  3. package/config.schema.json +73 -77
  4. package/dist/devices/index.d.ts +13 -0
  5. package/dist/devices/index.js +22 -0
  6. package/dist/devices/index.js.map +1 -0
  7. package/dist/devices/section-12-robotic/index.d.ts +6 -0
  8. package/dist/devices/section-12-robotic/index.js +7 -0
  9. package/dist/devices/section-12-robotic/index.js.map +1 -0
  10. package/dist/devices/section-12-robotic/robotic-vacuum-cleaner.d.ts +63 -0
  11. package/dist/devices/section-12-robotic/robotic-vacuum-cleaner.js +318 -0
  12. package/dist/devices/section-12-robotic/robotic-vacuum-cleaner.js.map +1 -0
  13. package/dist/devices/section-4-lighting/color-temperature-light.d.ts +7 -0
  14. package/dist/devices/section-4-lighting/color-temperature-light.js +62 -0
  15. package/dist/devices/section-4-lighting/color-temperature-light.js.map +1 -0
  16. package/dist/devices/section-4-lighting/dimmable-light.d.ts +7 -0
  17. package/dist/devices/section-4-lighting/dimmable-light.js +48 -0
  18. package/dist/devices/section-4-lighting/dimmable-light.js.map +1 -0
  19. package/dist/devices/section-4-lighting/extended-color-light.d.ts +12 -0
  20. package/dist/devices/section-4-lighting/extended-color-light.js +142 -0
  21. package/dist/devices/section-4-lighting/extended-color-light.js.map +1 -0
  22. package/dist/devices/section-4-lighting/index.d.ts +9 -0
  23. package/dist/devices/section-4-lighting/index.js +10 -0
  24. package/dist/devices/section-4-lighting/index.js.map +1 -0
  25. package/dist/devices/section-4-lighting/on-off-light.d.ts +7 -0
  26. package/dist/devices/section-4-lighting/on-off-light.js +37 -0
  27. package/dist/devices/section-4-lighting/on-off-light.js.map +1 -0
  28. package/dist/devices/section-5-smart-plugs/dimmable-plug-in-unit.d.ts +7 -0
  29. package/dist/devices/section-5-smart-plugs/dimmable-plug-in-unit.js +48 -0
  30. package/dist/devices/section-5-smart-plugs/dimmable-plug-in-unit.js.map +1 -0
  31. package/dist/devices/section-5-smart-plugs/index.d.ts +7 -0
  32. package/dist/devices/section-5-smart-plugs/index.js +8 -0
  33. package/dist/devices/section-5-smart-plugs/index.js.map +1 -0
  34. package/dist/devices/section-5-smart-plugs/on-off-plug-in-unit.d.ts +7 -0
  35. package/dist/devices/section-5-smart-plugs/on-off-plug-in-unit.js +37 -0
  36. package/dist/devices/section-5-smart-plugs/on-off-plug-in-unit.js.map +1 -0
  37. package/dist/devices/section-6-switches/index.d.ts +6 -0
  38. package/dist/devices/section-6-switches/index.js +7 -0
  39. package/dist/devices/section-6-switches/index.js.map +1 -0
  40. package/dist/devices/section-6-switches/on-off-light-switch.d.ts +7 -0
  41. package/dist/devices/section-6-switches/on-off-light-switch.js +30 -0
  42. package/dist/devices/section-6-switches/on-off-light-switch.js.map +1 -0
  43. package/dist/devices/section-7-sensors/contact-sensor.d.ts +7 -0
  44. package/dist/devices/section-7-sensors/contact-sensor.js +27 -0
  45. package/dist/devices/section-7-sensors/contact-sensor.js.map +1 -0
  46. package/dist/devices/section-7-sensors/humidity-sensor.d.ts +7 -0
  47. package/dist/devices/section-7-sensors/humidity-sensor.js +29 -0
  48. package/dist/devices/section-7-sensors/humidity-sensor.js.map +1 -0
  49. package/dist/devices/section-7-sensors/index.d.ts +12 -0
  50. package/dist/devices/section-7-sensors/index.js +13 -0
  51. package/dist/devices/section-7-sensors/index.js.map +1 -0
  52. package/dist/devices/section-7-sensors/light-sensor.d.ts +7 -0
  53. package/dist/devices/section-7-sensors/light-sensor.js +29 -0
  54. package/dist/devices/section-7-sensors/light-sensor.js.map +1 -0
  55. package/dist/devices/section-7-sensors/occupancy-sensor.d.ts +8 -0
  56. package/dist/devices/section-7-sensors/occupancy-sensor.js +33 -0
  57. package/dist/devices/section-7-sensors/occupancy-sensor.js.map +1 -0
  58. package/dist/devices/section-7-sensors/smoke-co-alarm.d.ts +7 -0
  59. package/dist/devices/section-7-sensors/smoke-co-alarm.js +37 -0
  60. package/dist/devices/section-7-sensors/smoke-co-alarm.js.map +1 -0
  61. package/dist/devices/section-7-sensors/temperature-sensor.d.ts +7 -0
  62. package/dist/devices/section-7-sensors/temperature-sensor.js +29 -0
  63. package/dist/devices/section-7-sensors/temperature-sensor.js.map +1 -0
  64. package/dist/devices/section-7-sensors/water-leak-detector.d.ts +7 -0
  65. package/dist/devices/section-7-sensors/water-leak-detector.js +27 -0
  66. package/dist/devices/section-7-sensors/water-leak-detector.js.map +1 -0
  67. package/dist/devices/section-8-closure/door-lock.d.ts +7 -0
  68. package/dist/devices/section-8-closure/door-lock.js +48 -0
  69. package/dist/devices/section-8-closure/door-lock.js.map +1 -0
  70. package/dist/devices/section-8-closure/index.d.ts +7 -0
  71. package/dist/devices/section-8-closure/index.js +8 -0
  72. package/dist/devices/section-8-closure/index.js.map +1 -0
  73. package/dist/devices/section-8-closure/window-covering.d.ts +9 -0
  74. package/dist/devices/section-8-closure/window-covering.js +154 -0
  75. package/dist/devices/section-8-closure/window-covering.js.map +1 -0
  76. package/dist/devices/section-9-hvac/fan.d.ts +7 -0
  77. package/dist/devices/section-9-hvac/fan.js +56 -0
  78. package/dist/devices/section-9-hvac/fan.js.map +1 -0
  79. package/dist/devices/section-9-hvac/index.d.ts +7 -0
  80. package/dist/devices/section-9-hvac/index.js +8 -0
  81. package/dist/devices/section-9-hvac/index.js.map +1 -0
  82. package/dist/devices/section-9-hvac/thermostat.d.ts +7 -0
  83. package/dist/devices/section-9-hvac/thermostat.js +61 -0
  84. package/dist/devices/section-9-hvac/thermostat.js.map +1 -0
  85. package/dist/devices/types.d.ts +16 -0
  86. package/dist/devices/types.js +5 -0
  87. package/dist/devices/types.js.map +1 -0
  88. package/dist/homebridge-ui/public/index.html +269 -0
  89. package/dist/homebridge-ui/server.js +47 -0
  90. package/dist/platform.d.ts +25 -21
  91. package/dist/platform.js +133 -1023
  92. package/dist/platform.js.map +1 -1
  93. package/package.json +9 -9
  94. package/plugin-header.png +0 -0
  95. package/.claude/settings.local.json +0 -28
package/CHANGELOG.md CHANGED
@@ -2,6 +2,17 @@
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
+
5
16
  ## v0.0.6 (2025-10-18)
6
17
 
7
18
  ### 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
- <img src="https://github.com/homebridge/branding/raw/latest/logos/homebridge-wordmark-logo-vertical.png" width="150">
6
+ # homebridge-matter
4
7
 
5
- </p>
8
+ Homebridge plugin to showcase examples of Matter devices in Homebridge.
6
9
 
7
- <span align="center">
10
+ [![npm](https://img.shields.io/npm/v/@homebridge-plugins/homebridge-matter/latest?label=latest)](https://www.npmjs.com/package/@homebridge-plugins/homebridge-matter)
11
+ [![npm](https://img.shields.io/npm/v/@homebridge-plugins/homebridge-matter/beta?label=beta)](https://github.com/homebridge-plugins/homebridge-matter/wiki/Beta-Version)
12
+
13
+ [![verified-by-homebridge](https://badgen.net/badge/homebridge/verified/purple)](https://github.com/homebridge/homebridge/wiki/Verified-Plugins)
8
14
 
9
- # Homebridge Matter
15
+ [![npm](https://img.shields.io/npm/dt/@homebridge-plugins/homebridge-matter)](https://www.npmjs.com/package/@homebridge-plugins/homebridge-matter)
16
+ [![Discord](https://img.shields.io/discord/432663330281226270?color=728ED5&logo=discord&label=hb-discord)](https://discord.com/channels/432663330281226270/742733745743855627)
10
17
 
11
18
  </span>
12
19
 
13
- ### Customise Plugin
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
- You can now start customising the plugin template to suit your requirements.
55
+ **Section 8: Closure Devices** (Matter Spec § 8) - 3 devices
56
+ - Door Lock
57
+ - Window Blind
58
+ - Venetian Blind (with Tilt)
16
59
 
17
- - [`src/platform.ts`](./src/platform.ts) - this is where your device setup and discovery should go.
18
- - [`src/platformAccessory.ts`](./src/platformAccessory.ts) - this is where your accessory control logic should go, you can rename or create multiple instances of this file for each accessory type you need to implement as part of your platform plugin. You can refer to the [developer documentation](https://developers.homebridge.io/) to see what characteristics you need to implement for each service type.
19
- - [`config.schema.json`](./config.schema.json) - update the config schema to match the config you expect from the user. See the [Plugin Config Schema Documentation](https://developers.homebridge.io/#/config-schema).
60
+ **Section 9: HVAC** (Matter Spec § 9) - 2 devices
61
+ - Thermostat
62
+ - Fan
20
63
 
21
- ### Matter State Management Guide
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
- **Important for Matter plugin developers:** Understanding how to manage accessory state is critical when working with Matter.
67
+ ### Prerequisites
24
68
 
25
- 📖 **[Read the State Management Guide](./STATE_MANAGEMENT.md)** to learn:
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
- - **Handlers** (Home app → Device) - How to respond when users control devices via Home app
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
- **Quick Overview:**
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
- ```typescript
35
- handlers: {
36
- onOff: {
37
- on: async () => {
38
- await yourDeviceAPI.turnOn()
39
- }
40
- }
41
- }
79
+ ### Credits
42
80
 
43
- // Pattern 2: Device changes externally Update Home app
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
- See [`STATE_MANAGEMENT.md`](./STATE_MANAGEMENT.md) for complete details and examples.
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.
@@ -2,7 +2,10 @@
2
2
  "pluginAlias": "Matter",
3
3
  "pluginType": "platform",
4
4
  "singular": true,
5
- "strictValidation": false,
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"],
@@ -17,133 +20,127 @@
17
20
  "title": "Enable On/Off Light",
18
21
  "type": "boolean",
19
22
  "default": false,
20
- "description": "Enable the on/off light example accessory."
23
+ "description": "Enable the on/off light example accessory (Matter Spec § 4.1)."
21
24
  },
22
25
  "enableDimmableLight": {
23
26
  "title": "Enable Dimmable Light",
24
27
  "type": "boolean",
25
28
  "default": false,
26
- "description": "Enable the dimmable light example accessory."
29
+ "description": "Enable the dimmable light example accessory (Matter Spec § 4.2)."
27
30
  },
28
31
  "enableColourTemperatureLight": {
29
32
  "title": "Enable Colour Temperature Light",
30
33
  "type": "boolean",
31
34
  "default": false,
32
- "description": "Enable the colour temperature light example accessory."
35
+ "description": "Enable the colour temperature light example accessory (Matter Spec § 4.3)."
33
36
  },
34
37
  "enableColourLight": {
35
38
  "title": "Enable Colour Light (HS)",
36
39
  "type": "boolean",
37
40
  "default": false,
38
- "description": "Enable the colour light (hue/saturation) example accessory."
41
+ "description": "Enable the colour light (hue/saturation) example accessory (Matter Spec § 4.4)."
39
42
  },
40
43
  "enableExtendedColourLight": {
41
44
  "title": "Enable Extended Colour Light (HS+CCT)",
42
45
  "type": "boolean",
43
46
  "default": false,
44
- "description": "Enable the extended colour light (hue/saturation + colour temperature) example accessory."
45
- },
46
- "enableOnOffSwitch": {
47
- "title": "Enable On/Off Switch",
48
- "type": "boolean",
49
- "default": false,
50
- "description": "Enable the on/off switch example accessory"
47
+ "description": "Enable the extended colour light (hue/saturation + colour temperature) example accessory (Matter Spec § 4.4)."
51
48
  },
52
49
  "enableOnOffOutlet": {
53
50
  "title": "Enable On/Off Outlet",
54
51
  "type": "boolean",
55
52
  "default": false,
56
- "description": "Enable the on/off outlet (smart plug) example accessory."
53
+ "description": "Enable the on/off outlet (smart plug) example accessory (Matter Spec § 5.1)."
57
54
  },
58
55
  "enableDimmableOutlet": {
59
56
  "title": "Enable Dimmable Outlet",
60
57
  "type": "boolean",
61
58
  "default": false,
62
- "description": "Enable the dimmable outlet example accessory."
59
+ "description": "Enable the dimmable outlet example accessory (Matter Spec § 5.2)."
63
60
  },
64
- "enableTemperatureSensor": {
65
- "title": "Enable Temperature Sensor",
61
+ "enableOnOffSwitch": {
62
+ "title": "Enable On/Off Light Switch",
66
63
  "type": "boolean",
67
64
  "default": false,
68
- "description": "Enable the temperature sensor example accessory."
65
+ "description": "Enable the on/off light switch example accessory (Matter Spec § 6.1)."
69
66
  },
70
- "enableHumiditySensor": {
71
- "title": "Enable Humidity Sensor",
67
+ "enableContactSensor": {
68
+ "title": "Enable Contact Sensor",
72
69
  "type": "boolean",
73
70
  "default": false,
74
- "description": "Enable the humidity sensor example accessory."
71
+ "description": "Enable the contact sensor example accessory (Matter Spec § 7.1)."
75
72
  },
76
73
  "enableLightSensor": {
77
74
  "title": "Enable Light Sensor",
78
75
  "type": "boolean",
79
76
  "default": false,
80
- "description": "Enable the light sensor example accessory."
77
+ "description": "Enable the light sensor example accessory (Matter Spec § 7.2)."
81
78
  },
82
79
  "enableMotionSensor": {
83
80
  "title": "Enable Motion Sensor",
84
81
  "type": "boolean",
85
82
  "default": false,
86
- "description": "Enable the motion sensor example accessory."
83
+ "description": "Enable the motion sensor (occupancy sensor) example accessory (Matter Spec § 7.3)."
87
84
  },
88
- "enableContactSensor": {
89
- "title": "Enable Contact Sensor",
85
+ "enableTemperatureSensor": {
86
+ "title": "Enable Temperature Sensor",
90
87
  "type": "boolean",
91
88
  "default": false,
92
- "description": "Enable the contact sensor example accessory."
89
+ "description": "Enable the temperature sensor example accessory (Matter Spec § 7.4)."
93
90
  },
94
- "enableLeakSensor": {
95
- "title": "Enable Leak Sensor",
91
+ "enableHumiditySensor": {
92
+ "title": "Enable Humidity Sensor",
96
93
  "type": "boolean",
97
94
  "default": false,
98
- "description": "Enable the leak sensor example accessory."
95
+ "description": "Enable the humidity sensor example accessory (Matter Spec § 7.7)."
99
96
  },
100
97
  "enableSmokeSensor": {
101
- "title": "Enable Smoke Sensor",
102
- "type": "boolean",
103
- "default": false,
104
- "description": "Enable the smoke sensor example accessory."
105
- },
106
- "enableThermostat": {
107
- "title": "Enable Thermostat",
98
+ "title": "Enable Smoke/CO Alarm",
108
99
  "type": "boolean",
109
100
  "default": false,
110
- "description": "Enable the thermostat example accessory."
101
+ "description": "Enable the smoke and carbon monoxide alarm example accessory (Matter Spec § 7.9)."
111
102
  },
112
- "enableFan": {
113
- "title": "Enable Fan",
103
+ "enableLeakSensor": {
104
+ "title": "Enable Water Leak Detector",
114
105
  "type": "boolean",
115
106
  "default": false,
116
- "description": "Enable the fan example accessory."
107
+ "description": "Enable the water leak detector example accessory (Matter Spec § 7.12)."
117
108
  },
118
109
  "enableDoorLock": {
119
110
  "title": "Enable Door Lock",
120
111
  "type": "boolean",
121
112
  "default": false,
122
- "description": "Enable the door lock example accessory."
123
- },
124
- "enableGarageDoor": {
125
- "title": "Enable Garage Door",
126
- "type": "boolean",
127
- "default": false,
128
- "description": "Enable the garage door example accessory."
113
+ "description": "Enable the door lock example accessory (Matter Spec § 8.1)."
129
114
  },
130
115
  "enableWindowBlind": {
131
116
  "title": "Enable Window Blind",
132
117
  "type": "boolean",
133
118
  "default": false,
134
- "description": "Enable the window blind example accessory."
119
+ "description": "Enable the window blind example accessory (Matter Spec § 8.3)."
135
120
  },
136
121
  "enableVenetianBlind": {
137
122
  "title": "Enable Venetian Blind (Tilt)",
138
123
  "type": "boolean",
139
124
  "default": false,
140
- "description": "Enable the Venetian blind with tilt control example accessory."
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)."
141
138
  },
142
139
  "enableRobotVacuum": {
143
- "title": "Enable Robot Vacuum",
140
+ "title": "Enable Robotic Vacuum Cleaner (Apple Home Compatible)",
144
141
  "type": "boolean",
145
142
  "default": false,
146
- "description": "Enable the robotic vacuum cleaner example accessory."
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."
147
144
  }
148
145
  }
149
146
  },
@@ -155,8 +152,8 @@
155
152
  },
156
153
  {
157
154
  "type": "fieldset",
158
- "title": "Lighting Devices",
159
- "description": "Enable or disable example lighting accessories",
155
+ "title": "Section 4: Lighting Devices",
156
+ "description": "Matter Specification § 4 - Fundamental lighting device types (5 devices implemented)",
160
157
  "expandable": true,
161
158
  "expanded": false,
162
159
  "items": [
@@ -169,69 +166,68 @@
169
166
  },
170
167
  {
171
168
  "type": "fieldset",
172
- "title": "Switches and Outlets",
173
- "description": "Enable or disable example switch and outlet accessories.",
169
+ "title": "Section 5: Smart Plugs/Actuators",
170
+ "description": "Matter Specification § 5 - Devices that control power and fluid flow (2 devices implemented)",
174
171
  "expandable": true,
175
172
  "expanded": false,
176
173
  "items": [
177
- "enableOnOffSwitch",
178
174
  "enableOnOffOutlet",
179
175
  "enableDimmableOutlet"
180
176
  ]
181
177
  },
182
178
  {
183
179
  "type": "fieldset",
184
- "title": "Sensors",
185
- "description": "Enable or disable example sensor accessories.",
180
+ "title": "Section 6: Switches & Controllers",
181
+ "description": "Matter Specification § 6 - Input devices and control interfaces (1 device implemented)",
186
182
  "expandable": true,
187
183
  "expanded": false,
188
184
  "items": [
189
- "enableTemperatureSensor",
190
- "enableHumiditySensor",
191
- "enableLightSensor",
192
- "enableMotionSensor",
193
- "enableContactSensor",
194
- "enableLeakSensor",
195
- "enableSmokeSensor"
185
+ "enableOnOffSwitch"
196
186
  ]
197
187
  },
198
188
  {
199
189
  "type": "fieldset",
200
- "title": "HVAC Devices",
201
- "description": "Enable or disable example HVAC accessories.",
190
+ "title": "Section 7: Sensors",
191
+ "description": "Matter Specification § 7 - All sensor types (7 devices implemented)",
202
192
  "expandable": true,
203
193
  "expanded": false,
204
194
  "items": [
205
- "enableThermostat",
206
- "enableFan"
195
+ "enableContactSensor",
196
+ "enableLightSensor",
197
+ "enableMotionSensor",
198
+ "enableTemperatureSensor",
199
+ "enableHumiditySensor",
200
+ "enableSmokeSensor",
201
+ "enableLeakSensor"
207
202
  ]
208
203
  },
209
204
  {
210
205
  "type": "fieldset",
211
- "title": "Security and Access",
212
- "description": "Enable or disable example security and access accessories.",
206
+ "title": "Section 8: Closure Devices",
207
+ "description": "Matter Specification § 8 - Locks and window coverings (3 devices implemented)",
213
208
  "expandable": true,
214
209
  "expanded": false,
215
210
  "items": [
216
211
  "enableDoorLock",
217
- "enableGarageDoor"
212
+ "enableWindowBlind",
213
+ "enableVenetianBlind"
218
214
  ]
219
215
  },
220
216
  {
221
217
  "type": "fieldset",
222
- "title": "Window Coverings",
223
- "description": "Enable or disable example window covering accessories.",
218
+ "title": "Section 9: HVAC",
219
+ "description": "Matter Specification § 9 - Heating, ventilation, and air conditioning (2 devices implemented)",
224
220
  "expandable": true,
225
221
  "expanded": false,
226
222
  "items": [
227
- "enableWindowBlind",
228
- "enableVenetianBlind"
223
+ "enableThermostat",
224
+ "enableFan"
229
225
  ]
230
226
  },
231
227
  {
232
228
  "type": "fieldset",
233
- "title": "Appliances",
234
- "description": "Enable or disable example appliance accessories.",
229
+ "title": "Section 12: Robotic Devices",
230
+ "description": "Matter Specification § 12 - Autonomous cleaning devices (1 device implemented)",
235
231
  "expandable": true,
236
232
  "expanded": false,
237
233
  "items": [
@@ -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,6 @@
1
+ /**
2
+ * Section 12: Robotic Devices
3
+ *
4
+ * Matter Specification § 12 - Autonomous cleaning devices
5
+ */
6
+ export { registerRoboticVacuumCleaner } from './robotic-vacuum-cleaner.js';
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Section 12: Robotic Devices
3
+ *
4
+ * Matter Specification § 12 - Autonomous cleaning devices
5
+ */
6
+ export { registerRoboticVacuumCleaner } from './robotic-vacuum-cleaner.js';
7
+ //# sourceMappingURL=index.js.map
@@ -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[];