@homebridge-plugins/homebridge-matter 0.0.1 → 0.0.3

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.
@@ -0,0 +1,24 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(git -C ../homebridge log -1 --oneline)",
5
+ "Bash(git -C ../homebridge show --stat 481784d)",
6
+ "Read(//Users/benpotter/Documents/GitHub/homebridge/src/matter/**)",
7
+ "Read(//Users/benpotter/Documents/GitHub/homebridge/src/**)",
8
+ "Bash(npm run build)",
9
+ "Read(//Users/benpotter/Documents/GitHub/homebridge/node_modules/@matter/**)",
10
+ "WebFetch(domain:github.com)",
11
+ "WebSearch",
12
+ "Read(//Users/benpotter/Documents/GitHub/homebridge/**)",
13
+ "Bash(git -C ../homebridge show --stat HEAD)",
14
+ "Bash(git -C ../homebridge log -10 --oneline)",
15
+ "Bash(git -C ../homebridge show --stat 0420d2b)",
16
+ "Bash(find:*)",
17
+ "Bash(cat:*)",
18
+ "Read(//Users/benpotter/.homebridge/matter/**)",
19
+ "Read(//Users/benpotter/.homebridge/**)"
20
+ ],
21
+ "deny": [],
22
+ "ask": []
23
+ }
24
+ }
package/CHANGELOG.md ADDED
@@ -0,0 +1,24 @@
1
+ # Change Log
2
+
3
+ All notable changes to `@homebridge-plugins/homebridge-matter` will be documented in this file.
4
+
5
+ ## v0.0.3 (2025-10-17)
6
+
7
+ ### Changes
8
+
9
+ - added more examples for lights, examples provided:
10
+ - light on/off
11
+ - light + brightness
12
+ - light + brightness + color
13
+ - light + brightness + color temperature
14
+ - light + brightness + color temperature + color
15
+
16
+ ## v0.0.2 (2025-10-15)
17
+
18
+ ### Changes
19
+
20
+ - added simple examples for getting/updating device state
21
+
22
+ ## v0.0.1 (2025-10-03)
23
+
24
+ - Initial release
package/README.md CHANGED
@@ -135,6 +135,38 @@ You can now start customising the plugin template to suit your requirements.
135
135
  - [`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.
136
136
  - [`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).
137
137
 
138
+ ### Matter State Management Guide
139
+
140
+ **Important for Matter plugin developers:** Understanding how to manage accessory state is critical when working with Matter.
141
+
142
+ 📖 **[Read the State Management Guide](./STATE_MANAGEMENT.md)** to learn:
143
+
144
+ - **Handlers** (Home app → Device) - How to respond when users control devices via Home app
145
+ - **State Updates** (Device → Home app) - How to sync state when devices change externally (native app, physical buttons, webhooks, etc.)
146
+ - Complete working examples for outlets, lights, and sensors
147
+ - Differences between Matter and HAP (HomeKit Accessory Protocol) patterns
148
+
149
+ **Quick Overview:**
150
+
151
+ ```typescript
152
+ handlers: {
153
+ onOff: {
154
+ on: async () => {
155
+ await yourDeviceAPI.turnOn()
156
+ }
157
+ }
158
+ }
159
+
160
+ // Pattern 2: Device changes externally → Update Home app
161
+ function handleExternalChange(newState: boolean) {
162
+ this.api.updateMatterAccessoryState('device-uuid', 'onOff', {
163
+ onOff: newState,
164
+ })
165
+ }
166
+ ```
167
+
168
+ See [`STATE_MANAGEMENT.md`](./STATE_MANAGEMENT.md) for complete details and examples.
169
+
138
170
  ### Versioning Your Plugin
139
171
 
140
172
  Given a version number `MAJOR`.`MINOR`.`PATCH`, such as `1.4.3`, increment the:
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE3D;;GAEG;AACH,eAAe,CAAC,GAAQ,EAAE,EAAE;IAC1B,GAAG,CAAC,gBAAgB,CAAC,WAAW,EAAE,aAAa,EAAE,yBAAyB,CAAC,CAAC;AAC9E,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE1D;;GAEG;AACH,eAAe,CAAC,GAAQ,EAAE,EAAE;IAC1B,GAAG,CAAC,gBAAgB,CAAC,WAAW,EAAE,aAAa,EAAE,yBAAyB,CAAC,CAAA;AAC7E,CAAC,CAAA"}
@@ -13,7 +13,7 @@ export declare class ExampleHomebridgePlatform implements DynamicPlatformPlugin
13
13
  * Required for DynamicPlatformPlugin
14
14
  * Called when homebridge restores cached accessories from disk at startup
15
15
  */
16
- configureAccessory(accessory: PlatformAccessory): void;
16
+ configureAccessory(): void;
17
17
  /**
18
18
  * Register all Matter accessory examples
19
19
  */
@@ -22,24 +22,4 @@ export declare class ExampleHomebridgePlatform implements DynamicPlatformPlugin
22
22
  * Lighting Devices
23
23
  */
24
24
  private registerLightingDevices;
25
- /**
26
- * Switches and Outlets
27
- */
28
- private registerSwitchesAndOutlets;
29
- /**
30
- * Sensors
31
- */
32
- private registerSensors;
33
- /**
34
- * HVAC Devices
35
- */
36
- private registerHVAC;
37
- /**
38
- * Security Devices
39
- */
40
- private registerSecurity;
41
- /**
42
- * Other Devices
43
- */
44
- private registerOtherDevices;
45
25
  }
package/dist/platform.js CHANGED
@@ -28,9 +28,8 @@ export class ExampleHomebridgePlatform {
28
28
  * Required for DynamicPlatformPlugin
29
29
  * Called when homebridge restores cached accessories from disk at startup
30
30
  */
31
- configureAccessory(accessory) {
32
- this.log.info('Loading accessory from cache:', accessory.displayName);
33
- this.accessories.set(accessory.UUID, accessory);
31
+ configureAccessory( /* accessory: PlatformAccessory */) {
32
+ // Note this is not used for Matter accessories, as they are registered dynamically
34
33
  }
35
34
  /**
36
35
  * Register all Matter accessory examples
@@ -45,40 +44,66 @@ export class ExampleHomebridgePlatform {
45
44
  // this.registerSecurity();
46
45
  // this.registerOtherDevices();
47
46
  this.log.info('Finished registering Matter accessories');
47
+ // You can read current state using the API
48
+ const onOffState = this.api.matter.getAccessoryState('matter-dimmable-light', this.api.matter.clusterNames.OnOff);
49
+ if (onOffState) {
50
+ this.log.info(`[On/Off Light] 📖 Reading Dimmable Light on/off via API: ${onOffState.onOff ? 'ON' : 'OFF'}`);
51
+ }
52
+ const levelState = this.api.matter.getAccessoryState('matter-dimmable-light', this.api.matter.clusterNames.LevelControl);
53
+ if (levelState) {
54
+ this.log.info(`[On/Off Light] 📖 Reading Dimmable Light brightness via API: ${levelState.currentLevel} (${Math.round((levelState?.currentLevel || 0) / 254 * 100)}%)`);
55
+ }
56
+ // // ═══════════════════════════════════════════════════════════════
57
+ // // PATTERN 2 DEMONSTRATION: Update Dimmable Light WITHOUT handler
58
+ // // ═══════════════════════════════════════════════════════════════
59
+ // // Simulating: Dimmable light state changed externally (like via native app)
60
+ // // This will update the Home app WITHOUT triggering the dimmable light's handler
61
+ // // Note: Homebridge automatically defers the update to avoid transaction conflicts
62
+ // this.log.info('[On/Off Light] → Updating Dimmable Light state using updateMatterAccessoryState (no handler!)')
63
+ //
64
+ // this.api.matter.updateAccessoryState(uuidLightDimmable, this.api.matter.clusterNames.OnOff, {
65
+ // onOff: true,
66
+ // })
48
67
  }
49
68
  /**
50
69
  * Lighting Devices
51
70
  */
52
71
  registerLightingDevices() {
72
+ const uuidLightOnOff = this.api.matter.uuid.generate('matter-onoff-light');
73
+ const uuidLightDimmable = this.api.matter.uuid.generate('matter-dimmable-light');
74
+ const uuidLightColourTemp = this.api.matter.uuid.generate('matter-colour-temp-light');
75
+ const uuidLightColour = this.api.matter.uuid.generate('matter-colour-light');
76
+ const uuidLightExtendedColour = this.api.matter.uuid.generate('matter-extended-colour-light');
53
77
  // 1. On/Off Light
54
- this.api.registerMatterAccessory({
55
- uuid: 'matter-onoff-light',
78
+ this.api.matter.registerAccessory({
79
+ uuid: uuidLightOnOff,
56
80
  displayName: 'On/Off Light',
57
- deviceType: this.api.matterDeviceTypes.OnOffLight,
81
+ deviceType: this.api.matter.deviceTypes.OnOffLight,
58
82
  serialNumber: 'LIGHT-001',
59
83
  manufacturer: 'Matter Examples',
60
84
  model: 'OnOffLight v1',
61
85
  clusters: {
62
86
  onOff: {
63
- onOff: false,
87
+ onOff: true,
64
88
  },
65
89
  },
90
+ // These are called when the user controls the accessory via the Home app
66
91
  handlers: {
67
92
  onOff: {
68
- on: async () => {
69
- this.log.info('[On/Off Light] Turned ON');
93
+ on: async ( /* no args */) => {
94
+ this.log.info('[On/Off Light] Handler `on` called (user controlled via Home app)');
70
95
  },
71
- off: async () => {
72
- this.log.info('[On/Off Light] Turned OFF');
96
+ off: async ( /* no args */) => {
97
+ this.log.info('[On/Off Light] Handler `off` called (user controlled via Home app)');
73
98
  },
74
99
  },
75
100
  },
76
101
  });
77
102
  // 2. Dimmable Light
78
- this.api.registerMatterAccessory({
79
- uuid: 'matter-dimmable-light',
103
+ this.api.matter.registerAccessory({
104
+ uuid: uuidLightDimmable,
80
105
  displayName: 'Dimmable Light',
81
- deviceType: this.api.matterDeviceTypes.DimmableLight,
106
+ deviceType: this.api.matter.deviceTypes.DimmableLight,
82
107
  serialNumber: 'LIGHT-002',
83
108
  manufacturer: 'Matter Examples',
84
109
  model: 'DimmableLight v1',
@@ -87,191 +112,87 @@ export class ExampleHomebridgePlatform {
87
112
  onOff: false,
88
113
  },
89
114
  levelControl: {
90
- currentLevel: 127, // 50% brightness (1-254 scale)
115
+ currentLevel: 127,
91
116
  minLevel: 1,
92
117
  maxLevel: 254,
93
118
  },
94
119
  },
120
+ // These are called when the user controls the accessory via the Home app
95
121
  handlers: {
96
122
  onOff: {
97
123
  on: async () => {
98
- this.log.info('[Dimmable Light] Turned ON');
124
+ this.log.info('[Dimmable Light] Handler `on` called (user controlled via Home app)');
99
125
  },
100
126
  off: async () => {
101
- this.log.info('[Dimmable Light] Turned OFF');
127
+ this.log.info('[Dimmable Light] Handler `off` called (user controlled via Home app)');
102
128
  },
103
129
  },
104
130
  levelControl: {
105
- moveToLevel: async (args) => {
106
- this.log.info(`[Dimmable Light] Brightness changed to ${args.level} (${Math.round(args.level / 254 * 100)}%)`);
131
+ moveToLevelWithOnOff: async (request) => {
132
+ const { level } = request;
133
+ this.log.info(`[Dimmable Light] ✓ Handler \`moveToLevel\` called with ${level} (${Math.round(level / 254 * 100)}%)`);
107
134
  },
108
135
  },
109
136
  },
110
137
  });
111
- //
112
- // // 3. Color Temperature Light
113
- // this.api.registerMatterAccessory({
114
- // uuid: 'matter-color-temp-light',
115
- // displayName: 'Color Temperature Light',
116
- // deviceType: this.api.matterDeviceTypes.ColorTemperatureLight,
117
- // serialNumber: 'LIGHT-003',
118
- // manufacturer: 'Matter Examples',
119
- // model: 'ColorTempLight v1',
120
- //
121
- // clusters: {
122
- // onOff: {
123
- // onOff: false,
124
- // },
125
- // levelControl: {
126
- // currentLevel: 127,
127
- // minLevel: 1,
128
- // maxLevel: 254,
129
- // },
130
- // colorControl: {
131
- // colorMode: 2, // Color temperature mode
132
- // colorTemperatureMireds: 250, // ~4000K
133
- // colorTempPhysicalMinMireds: 147, // 6800K
134
- // colorTempPhysicalMaxMireds: 454, // 2200K
135
- // },
136
- // },
137
- //
138
- // handlers: {
139
- // onOff: {
140
- // on: async () => {
141
- // this.log.info('[Color Temp Light] Turned ON');
142
- // },
143
- // off: async () => {
144
- // this.log.info('[Color Temp Light] Turned OFF');
145
- // },
146
- // },
147
- // levelControl: {
148
- // moveToLevel: async (args: any) => {
149
- // this.log.info(`[Color Temp Light] Brightness changed to ${args.level}`);
150
- // },
151
- // },
152
- // colorControl: {
153
- // moveToColorTemperature: async (args: any) => {
154
- // const kelvin = Math.round(1000000 / args.colorTemperatureMireds);
155
- // this.log.info(`[Color Temp Light] Color temperature changed to ${args.colorTemperatureMireds} mireds (~${kelvin}K)`);
156
- // },
157
- // },
158
- // },
159
- // });
160
- //
161
- // // 4. Extended Color Light (RGB)
162
- // this.api.registerMatterAccessory({
163
- // uuid: 'matter-rgb-light',
164
- // displayName: 'RGB Color Light',
165
- // deviceType: this.api.matterDeviceTypes.ExtendedColorLight,
166
- // serialNumber: 'LIGHT-004',
167
- // manufacturer: 'Matter Examples',
168
- // model: 'RGBLight v1',
169
- //
170
- // clusters: {
171
- // onOff: {
172
- // onOff: false,
173
- // },
174
- // levelControl: {
175
- // currentLevel: 127,
176
- // minLevel: 1,
177
- // maxLevel: 254,
178
- // },
179
- // colorControl: {
180
- // colorMode: 1, // Hue/Saturation mode
181
- // currentHue: 0, // Red
182
- // currentSaturation: 254, // Full saturation
183
- // colorCapabilities: 0x0001, // Hue/Saturation support
184
- // },
185
- // },
186
- //
187
- // handlers: {
188
- // onOff: {
189
- // on: async () => {
190
- // this.log.info('[RGB Light] Turned ON');
191
- // },
192
- // off: async () => {
193
- // this.log.info('[RGB Light] Turned OFF');
194
- // },
195
- // },
196
- // levelControl: {
197
- // moveToLevel: async (args: any) => {
198
- // this.log.info(`[RGB Light] Brightness changed to ${args.level}`);
199
- // },
200
- // },
201
- // colorControl: {
202
- // moveToHue: async (args: any) => {
203
- // this.log.info(`[RGB Light] Hue changed to ${args.hue}`);
204
- // },
205
- // moveToSaturation: async (args: any) => {
206
- // this.log.info(`[RGB Light] Saturation changed to ${args.saturation}`);
207
- // },
208
- // moveToHueAndSaturation: async (args: any) => {
209
- // this.log.info(`[RGB Light] Color changed to H:${args.hue} S:${args.saturation}`);
210
- // },
211
- // },
212
- // },
213
- // });
214
- }
215
- /**
216
- * Switches and Outlets
217
- */
218
- registerSwitchesAndOutlets() {
219
- // 5. On/Off Switch
220
- this.api.registerMatterAccessory({
221
- uuid: 'matter-switch',
222
- displayName: 'On/Off Switch',
223
- deviceType: this.api.matterDeviceTypes.OnOffSwitch,
224
- serialNumber: 'SWITCH-001',
138
+ // 3. Colour Temperature Light
139
+ this.api.matter.registerAccessory({
140
+ uuid: uuidLightColourTemp,
141
+ displayName: 'Colour Temperature Light',
142
+ deviceType: this.api.matter.deviceTypes.ColorTemperatureLight,
143
+ serialNumber: 'LIGHT-003',
225
144
  manufacturer: 'Matter Examples',
226
- model: 'Switch v1',
145
+ model: 'ColourTempLight v1',
227
146
  clusters: {
228
147
  onOff: {
229
148
  onOff: false,
230
149
  },
150
+ levelControl: {
151
+ currentLevel: 127,
152
+ minLevel: 1,
153
+ maxLevel: 254,
154
+ },
155
+ colorControl: {
156
+ colorMode: 2, // Colour temperature mode
157
+ colorTemperatureMireds: 250, // ~4000K
158
+ colorTempPhysicalMinMireds: 147, // 6800K (coolest)
159
+ colorTempPhysicalMaxMireds: 454, // 2200K (warmest)
160
+ coupleColorTempToLevelMinMireds: 147,
161
+ },
231
162
  },
163
+ // These are called when the user controls the accessory via the Home app
232
164
  handlers: {
233
165
  onOff: {
234
- on: async () => {
235
- this.log.info('[Switch] Turned ON');
166
+ on: async ( /* no args */) => {
167
+ this.log.info('[Colour Temp Light] handler `on` called (user controlled via Home app)');
236
168
  },
237
- off: async () => {
238
- this.log.info('[Switch] Turned OFF');
169
+ off: async ( /* no args */) => {
170
+ this.log.info('[Colour Temp Light] Turned `off` called (user controlled via Home app)');
239
171
  },
240
172
  },
241
- },
242
- });
243
- // 6. On/Off Outlet
244
- this.api.registerMatterAccessory({
245
- uuid: 'matter-outlet',
246
- displayName: 'Smart Outlet',
247
- deviceType: this.api.matterDeviceTypes.OnOffOutlet,
248
- serialNumber: 'OUTLET-001',
249
- manufacturer: 'Matter Examples',
250
- model: 'Outlet v1',
251
- clusters: {
252
- onOff: {
253
- onOff: false,
254
- },
255
- },
256
- handlers: {
257
- onOff: {
258
- on: async () => {
259
- this.log.info('[Outlet] Turned ON');
173
+ levelControl: {
174
+ moveToLevelWithOnOff: async (request) => {
175
+ const { level } = request;
176
+ this.log.info(`[Colour Light] ✓ Handler \`moveToLevel\` called with ${level} (${Math.round(level / 254 * 100)}%)`);
260
177
  },
261
- off: async () => {
262
- this.log.info('[Outlet] Turned OFF');
178
+ },
179
+ colorControl: {
180
+ moveToColorTemperatureLogic: async (request) => {
181
+ const { targetMireds, transitionTime } = request;
182
+ const kelvin = Math.round(1000000 / targetMireds);
183
+ this.log.info(`[Colour Temp Light] ✓ Handler \`moveToColorTemperatureLogic\` called with ${targetMireds} mireds (~${kelvin}K), transition: ${transitionTime}s`);
263
184
  },
264
185
  },
265
186
  },
266
187
  });
267
- // 7. Dimmable Outlet
268
- this.api.registerMatterAccessory({
269
- uuid: 'matter-dimmable-outlet',
270
- displayName: 'Dimmable Outlet',
271
- deviceType: this.api.matterDeviceTypes.DimmableOutlet,
272
- serialNumber: 'OUTLET-002',
188
+ // 4. Colour Light (Hue/Saturation ONLY - no CCT)
189
+ this.api.matter.registerAccessory({
190
+ uuid: uuidLightColour,
191
+ displayName: 'Colour Light (HS)',
192
+ deviceType: this.api.matter.deviceTypes.ExtendedColorLight,
193
+ serialNumber: 'LIGHT-004',
273
194
  manufacturer: 'Matter Examples',
274
- model: 'DimmableOutlet v1',
195
+ model: 'ColorLight v1',
275
196
  clusters: {
276
197
  onOff: {
277
198
  onOff: false,
@@ -281,341 +202,109 @@ export class ExampleHomebridgePlatform {
281
202
  minLevel: 1,
282
203
  maxLevel: 254,
283
204
  },
205
+ colorControl: {
206
+ colorMode: 0, // Hue/Saturation mode
207
+ currentHue: 0, // Red (0 degrees)
208
+ currentSaturation: 254, // Full saturation
209
+ currentX: 41942, // Also provide XY for compatibility
210
+ currentY: 21626,
211
+ },
284
212
  },
213
+ // These are called when the user controls the accessory via the Home app
285
214
  handlers: {
286
215
  onOff: {
287
216
  on: async () => {
288
- this.log.info('[Dimmable Outlet] Turned ON');
217
+ this.log.info('[Colour Light HS] Handler `on` called (user controlled via Home app)');
289
218
  },
290
219
  off: async () => {
291
- this.log.info('[Dimmable Outlet] Turned OFF');
220
+ this.log.info('[Colour Light HS] Handler `off` called (user controlled via Home app)');
292
221
  },
293
222
  },
294
223
  levelControl: {
295
- moveToLevel: async (args) => {
296
- this.log.info(`[Dimmable Outlet] Level changed to ${args.level}`);
224
+ moveToLevelWithOnOff: async (request) => {
225
+ const { level } = request;
226
+ this.log.info(`[Colour Light HS] ✓ Handler \`moveToLevel\` called with ${level} (${Math.round(level / 254 * 100)}%)`);
297
227
  },
298
228
  },
299
- },
300
- });
301
- }
302
- /**
303
- * Sensors
304
- */
305
- registerSensors() {
306
- // 8. Temperature Sensor
307
- this.api.registerMatterAccessory({
308
- uuid: 'matter-temp-sensor',
309
- displayName: 'Temperature Sensor',
310
- deviceType: this.api.matterDeviceTypes.TemperatureSensor,
311
- serialNumber: 'TEMP-001',
312
- manufacturer: 'Matter Examples',
313
- model: 'TempSensor v1',
314
- clusters: {
315
- temperatureMeasurement: {
316
- measuredValue: 2100, // 21.00°C (in hundredths of degree Celsius)
317
- minMeasuredValue: -5000, // -50°C
318
- maxMeasuredValue: 10000, // 100°C
319
- },
320
- },
321
- });
322
- // 9. Humidity Sensor
323
- this.api.registerMatterAccessory({
324
- uuid: 'matter-humidity-sensor',
325
- displayName: 'Humidity Sensor',
326
- deviceType: this.api.matterDeviceTypes.HumiditySensor,
327
- serialNumber: 'HUM-001',
328
- manufacturer: 'Matter Examples',
329
- model: 'HumiditySensor v1',
330
- clusters: {
331
- relativeHumidityMeasurement: {
332
- measuredValue: 5000, // 50% (in hundredths of percent)
333
- minMeasuredValue: 0,
334
- maxMeasuredValue: 10000, // 100%
335
- },
336
- },
337
- });
338
- // 10. Light Sensor
339
- this.api.registerMatterAccessory({
340
- uuid: 'matter-light-sensor',
341
- displayName: 'Light Sensor',
342
- deviceType: this.api.matterDeviceTypes.LightSensor,
343
- serialNumber: 'LIGHT-SENSOR-001',
344
- manufacturer: 'Matter Examples',
345
- model: 'LightSensor v1',
346
- clusters: {
347
- illuminanceMeasurement: {
348
- measuredValue: 1000, // Lux value
349
- minMeasuredValue: 1,
350
- maxMeasuredValue: 65535,
351
- },
352
- },
353
- });
354
- // 11. Motion Sensor
355
- this.api.registerMatterAccessory({
356
- uuid: 'matter-motion-sensor',
357
- displayName: 'Motion Sensor',
358
- deviceType: this.api.matterDeviceTypes.MotionSensor,
359
- serialNumber: 'MOTION-001',
360
- manufacturer: 'Matter Examples',
361
- model: 'MotionSensor v1',
362
- clusters: {
363
- occupancySensing: {
364
- occupancy: 0, // 0 = not occupied, 1 = occupied
365
- occupancySensorType: 0, // PIR sensor
366
- },
367
- },
368
- });
369
- // 12. Contact Sensor
370
- this.api.registerMatterAccessory({
371
- uuid: 'matter-contact-sensor',
372
- displayName: 'Contact Sensor',
373
- deviceType: this.api.matterDeviceTypes.ContactSensor,
374
- serialNumber: 'CONTACT-001',
375
- manufacturer: 'Matter Examples',
376
- model: 'ContactSensor v1',
377
- clusters: {
378
- booleanState: {
379
- stateValue: false, // false = contact, true = no contact
380
- },
381
- },
382
- });
383
- // 13. Leak Sensor
384
- this.api.registerMatterAccessory({
385
- uuid: 'matter-leak-sensor',
386
- displayName: 'Water Leak Sensor',
387
- deviceType: this.api.matterDeviceTypes.LeakSensor,
388
- serialNumber: 'LEAK-001',
389
- manufacturer: 'Matter Examples',
390
- model: 'LeakSensor v1',
391
- clusters: {
392
- booleanState: {
393
- stateValue: false, // false = no leak, true = leak detected
394
- },
395
- },
396
- });
397
- // 14. Smoke Sensor
398
- this.api.registerMatterAccessory({
399
- uuid: 'matter-smoke-sensor',
400
- displayName: 'Smoke/CO Alarm',
401
- deviceType: this.api.matterDeviceTypes.SmokeSensor,
402
- serialNumber: 'SMOKE-001',
403
- manufacturer: 'Matter Examples',
404
- model: 'SmokeCOAlarm v1',
405
- clusters: {
406
- smokeCoAlarm: {
407
- smokeState: 0, // 0 = normal, 1 = warning, 2 = critical
408
- coState: 0, // 0 = normal, 1 = warning, 2 = critical
409
- batteryAlert: 0, // 0 = normal, 1 = warning, 2 = critical
410
- },
411
- },
412
- });
413
- }
414
- /**
415
- * HVAC Devices
416
- */
417
- registerHVAC() {
418
- // 15. Thermostat
419
- this.api.registerMatterAccessory({
420
- uuid: 'matter-thermostat',
421
- displayName: 'Thermostat',
422
- deviceType: this.api.matterDeviceTypes.Thermostat,
423
- serialNumber: 'THERMO-001',
424
- manufacturer: 'Matter Examples',
425
- model: 'Thermostat v1',
426
- clusters: {
427
- thermostat: {
428
- localTemperature: 2100, // 21°C (in hundredths)
429
- occupiedCoolingSetpoint: 2400, // 24°C
430
- occupiedHeatingSetpoint: 2000, // 20°C
431
- systemMode: 1, // 0 = Off, 1 = Auto, 3 = Cool, 4 = Heat
432
- controlSequenceOfOperation: 4, // Cooling and heating
433
- },
434
- },
435
- handlers: {
436
- thermostat: {
437
- setpointRaiseLower: async (args) => {
438
- this.log.info(`[Thermostat] Setpoint changed by ${args.amount / 10}°C`);
439
- },
440
- },
441
- },
442
- });
443
- // 16. Fan
444
- this.api.registerMatterAccessory({
445
- uuid: 'matter-fan',
446
- displayName: 'Fan',
447
- deviceType: this.api.matterDeviceTypes.Fan,
448
- serialNumber: 'FAN-001',
449
- manufacturer: 'Matter Examples',
450
- model: 'Fan v1',
451
- clusters: {
452
- fanControl: {
453
- fanMode: 0, // 0 = Off, 1 = Low, 2 = Medium, 3 = High, 4 = On, 5 = Auto, 6 = Smart
454
- percentCurrent: 0,
455
- percentSetting: 0,
456
- },
457
- },
458
- handlers: {
459
- fanControl: {
460
- step: async (args) => {
461
- this.log.info(`[Fan] Step ${args.direction === 0 ? 'increase' : 'decrease'}`);
229
+ colorControl: {
230
+ moveToColorLogic: async (request) => {
231
+ const { targetX, targetY, transitionTime } = request;
232
+ const xFloat = (targetX / 65535).toFixed(4);
233
+ const yFloat = (targetY / 65535).toFixed(4);
234
+ this.log.info(`[Colour Light HS] ✓ Handler \`moveToColorLogic\` called with x=${targetX} (~${xFloat}), y=${targetY} (~${yFloat}), transition: ${transitionTime}s`);
462
235
  },
463
- },
464
- },
465
- });
466
- }
467
- /**
468
- * Security Devices
469
- */
470
- registerSecurity() {
471
- // 17. Door Lock
472
- this.api.registerMatterAccessory({
473
- uuid: 'matter-door-lock',
474
- displayName: 'Smart Door Lock',
475
- deviceType: this.api.matterDeviceTypes.DoorLock,
476
- serialNumber: 'LOCK-001',
477
- manufacturer: 'Matter Examples',
478
- model: 'DoorLock v1',
479
- clusters: {
480
- doorLock: {
481
- lockState: 1, // 0 = not fully locked, 1 = locked, 2 = unlocked
482
- lockType: 0, // 0 = dead bolt
483
- actuatorEnabled: true,
484
- },
485
- },
486
- handlers: {
487
- doorLock: {
488
- lockDoor: async () => {
489
- this.log.info('[Door Lock] Locked');
490
- },
491
- unlockDoor: async () => {
492
- this.log.info('[Door Lock] Unlocked');
236
+ moveToHueAndSaturationLogic: async (request) => {
237
+ const { targetHue, targetSaturation, transitionTime } = request;
238
+ const hueDegrees = Math.round((targetHue / 254) * 360);
239
+ const saturationPercent = Math.round((targetSaturation / 254) * 100);
240
+ this.log.info(`[Colour Light HS] ✓ Handler \`moveToHueAndSaturationLogic\` called with hue=${targetHue} (~${hueDegrees}°), saturation=${targetSaturation} (~${saturationPercent}%), transition: ${transitionTime}s`);
493
241
  },
242
+ // NOTE: No moveToColorTemperatureLogic handler - this light only supports color, not CCT
494
243
  },
495
244
  },
496
245
  });
497
- }
498
- /**
499
- * Other Devices
500
- */
501
- registerOtherDevices() {
502
- // 18. Window Covering
503
- this.api.registerMatterAccessory({
504
- uuid: 'matter-window-covering',
505
- displayName: 'Window Blinds',
506
- deviceType: this.api.matterDeviceTypes.WindowCovering,
507
- serialNumber: 'BLIND-001',
246
+ // 5. Extended Colour Light (Hue/Saturation + CCT)
247
+ this.api.matter.registerAccessory({
248
+ uuid: uuidLightExtendedColour,
249
+ displayName: 'Extended Colour Light (HS+CCT)',
250
+ deviceType: this.api.matter.deviceTypes.ExtendedColorLight,
251
+ serialNumber: 'LIGHT-005',
508
252
  manufacturer: 'Matter Examples',
509
- model: 'WindowCovering v1',
510
- clusters: {
511
- windowCovering: {
512
- currentPositionLiftPercent100ths: 0, // 0 = fully open, 10000 = fully closed
513
- targetPositionLiftPercent100ths: 0,
514
- type: 0, // 0 = rollershade
515
- configStatus: 0x03, // operational and online
516
- },
517
- },
518
- handlers: {
519
- windowCovering: {
520
- upOrOpen: async () => {
521
- this.log.info('[Window Covering] Opening');
522
- },
523
- downOrClose: async () => {
524
- this.log.info('[Window Covering] Closing');
525
- },
526
- stopMotion: async () => {
527
- this.log.info('[Window Covering] Stopped');
528
- },
529
- goToLiftPercentage: async (args) => {
530
- this.log.info(`[Window Covering] Moving to ${args.liftPercent100thsValue / 100}%`);
531
- },
532
- },
533
- },
534
- });
535
- // 19. Generic Switch
536
- this.api.registerMatterAccessory({
537
- uuid: 'matter-generic-switch',
538
- displayName: 'Generic Switch',
539
- deviceType: this.api.matterDeviceTypes.GenericSwitch,
540
- serialNumber: 'GSWITCH-001',
541
- manufacturer: 'Matter Examples',
542
- model: 'GenericSwitch v1',
543
- clusters: {
544
- switch: {
545
- numberOfPositions: 2,
546
- currentPosition: 0,
547
- },
548
- },
549
- });
550
- // 20. Pump
551
- this.api.registerMatterAccessory({
552
- uuid: 'matter-pump',
553
- displayName: 'Water Pump',
554
- deviceType: this.api.matterDeviceTypes.Pump,
555
- serialNumber: 'PUMP-001',
556
- manufacturer: 'Matter Examples',
557
- model: 'Pump v1',
253
+ model: 'ExtendedColorLight v1',
558
254
  clusters: {
559
255
  onOff: {
560
256
  onOff: false,
561
257
  },
562
- pumpConfigurationAndControl: {
563
- effectiveOperationMode: 0, // 0 = normal
564
- effectiveControlMode: 0, // 0 = constant speed
565
- },
566
- },
567
- handlers: {
568
- onOff: {
569
- on: async () => {
570
- this.log.info('[Pump] Turned ON');
571
- },
572
- off: async () => {
573
- this.log.info('[Pump] Turned OFF');
574
- },
575
- },
576
- },
577
- });
578
- // 21. Room Air Conditioner
579
- this.api.registerMatterAccessory({
580
- uuid: 'matter-air-conditioner',
581
- displayName: 'Air Conditioner',
582
- deviceType: this.api.matterDeviceTypes.RoomAirConditioner,
583
- serialNumber: 'AC-001',
584
- manufacturer: 'Matter Examples',
585
- model: 'RoomAC v1',
586
- clusters: {
587
- onOff: {
588
- onOff: false,
589
- },
590
- thermostat: {
591
- localTemperature: 2500, // 25°C
592
- occupiedCoolingSetpoint: 2200, // 22°C
593
- systemMode: 3, // Cool mode
594
- controlSequenceOfOperation: 2, // Cooling only
258
+ levelControl: {
259
+ currentLevel: 127,
260
+ minLevel: 1,
261
+ maxLevel: 254,
595
262
  },
596
- fanControl: {
597
- fanMode: 5, // Auto
598
- percentCurrent: 50,
599
- percentSetting: 50,
263
+ colorControl: {
264
+ colorMode: 0, // Hue/Saturation mode
265
+ currentHue: 0, // Red (0 degrees)
266
+ currentSaturation: 254, // Full saturation
267
+ currentX: 41942, // Also provide XY for compatibility
268
+ currentY: 21626,
269
+ colorTemperatureMireds: 250, // ~4000K (for CCT mode)
270
+ colorTempPhysicalMinMireds: 147, // 6800K (coolest)
271
+ colorTempPhysicalMaxMireds: 454, // 2200K (warmest)
272
+ coupleColorTempToLevelMinMireds: 147,
600
273
  },
601
274
  },
275
+ // These are called when the user controls the accessory via the Home app
602
276
  handlers: {
603
277
  onOff: {
604
278
  on: async () => {
605
- this.log.info('[Air Conditioner] Turned ON');
279
+ this.log.info('[Extended Colour Light] Handler `on` called (user controlled via Home app)');
606
280
  },
607
281
  off: async () => {
608
- this.log.info('[Air Conditioner] Turned OFF');
282
+ this.log.info('[Extended Colour Light] Handler `off` called (user controlled via Home app)');
609
283
  },
610
284
  },
611
- thermostat: {
612
- setpointRaiseLower: async (args) => {
613
- this.log.info(`[Air Conditioner] Temperature setpoint changed by ${args.amount / 10}°C`);
285
+ levelControl: {
286
+ moveToLevelWithOnOff: async (request) => {
287
+ const { level } = request;
288
+ this.log.info(`[Extended Colour Light] ✓ Handler \`moveToLevel\` called with ${level} (${Math.round(level / 254 * 100)}%)`);
614
289
  },
615
290
  },
616
- fanControl: {
617
- step: async (args) => {
618
- this.log.info(`[Air Conditioner] Fan step ${args.direction === 0 ? 'increase' : 'decrease'}`);
291
+ colorControl: {
292
+ moveToColorLogic: async (request) => {
293
+ const { targetX, targetY, transitionTime } = request;
294
+ const xFloat = (targetX / 65535).toFixed(4);
295
+ const yFloat = (targetY / 65535).toFixed(4);
296
+ this.log.info(`[Extended Colour Light] ✓ Handler \`moveToColorLogic\` called with x=${targetX} (~${xFloat}), y=${targetY} (~${yFloat}), transition: ${transitionTime}s`);
297
+ },
298
+ moveToHueAndSaturationLogic: async (request) => {
299
+ const { targetHue, targetSaturation, transitionTime } = request;
300
+ const hueDegrees = Math.round((targetHue / 254) * 360);
301
+ const saturationPercent = Math.round((targetSaturation / 254) * 100);
302
+ this.log.info(`[Extended Colour Light] ✓ Handler \`moveToHueAndSaturationLogic\` called with hue=${targetHue} (~${hueDegrees}°), saturation=${targetSaturation} (~${saturationPercent}%), transition: ${transitionTime}s`);
303
+ },
304
+ moveToColorTemperatureLogic: async (request) => {
305
+ const { targetMireds, transitionTime } = request;
306
+ const kelvin = Math.round(1000000 / targetMireds);
307
+ this.log.info(`[Extended Colour Light] ✓ Handler \`moveToColorTemperatureLogic\` called with ${targetMireds} mireds (~${kelvin}K), transition: ${transitionTime}s`);
619
308
  },
620
309
  },
621
310
  },
@@ -1 +1 @@
1
- {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,QAAQ,CAAC;AAEtC;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,uCAAuC,CAAC"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,QAAQ,CAAA;AAErC;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,uCAAuC,CAAA"}
package/package.json CHANGED
@@ -2,17 +2,17 @@
2
2
  "name": "@homebridge-plugins/homebridge-matter",
3
3
  "displayName": "Homebridge Matter",
4
4
  "type": "module",
5
- "version": "0.0.1",
5
+ "version": "0.0.3",
6
6
  "description": "A short description about what your plugin does.",
7
7
  "author": "Your Name",
8
8
  "license": "Apache-2.0",
9
- "homepage": "https://github.com/@homebridge-plugins/homebridge-matter#readme",
9
+ "homepage": "https://github.com/homebridge-plugins/homebridge-matter#readme",
10
10
  "repository": {
11
11
  "type": "git",
12
- "url": "git+https://github.com/@homebridge-plugins/homebridge-matter.git"
12
+ "url": "git+https://github.com/homebridge-plugins/homebridge-matter.git"
13
13
  },
14
14
  "bugs": {
15
- "url": "https://github.com/@homebridge-plugins/homebridge-matter/issues"
15
+ "url": "https://github.com/homebridge-plugins/homebridge-matter/issues"
16
16
  },
17
17
  "keywords": [
18
18
  "homebridge-plugin"
@@ -24,7 +24,7 @@
24
24
  },
25
25
  "scripts": {
26
26
  "build": "rimraf ./dist && tsc",
27
- "lint": "eslint . --max-warnings=0",
27
+ "lint": "eslint . --fix",
28
28
  "prepublishOnly": "npm run lint && npm run build",
29
29
  "watch": "npm run build && npm link && nodemon"
30
30
  },
@@ -32,14 +32,12 @@
32
32
  "homebridge-lib": "^7.1.9"
33
33
  },
34
34
  "devDependencies": {
35
- "@eslint/js": "^9.37.0",
36
- "@types/node": "^24.7.0",
37
- "eslint": "^9.37.0",
38
- "homebridge": "2.0.0-alpha.43",
35
+ "@antfu/eslint-config": "^6.0.0",
36
+ "@types/node": "^24.8.1",
37
+ "homebridge": "2.0.0-alpha.47",
39
38
  "nodemon": "^3.1.10",
40
39
  "rimraf": "^6.0.1",
41
40
  "ts-node": "^10.9.2",
42
- "typescript": "^5.9.3",
43
- "typescript-eslint": "^8.46.0"
41
+ "typescript": "^5.9.3"
44
42
  }
45
43
  }
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="AgentMigrationStateService">
4
- <option name="migrationStatus" value="COMPLETED" />
5
- </component>
6
- </project>
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="AskMigrationStateService">
4
- <option name="migrationStatus" value="COMPLETED" />
5
- </component>
6
- </project>
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="Ask2AgentMigrationStateService">
4
- <option name="migrationStatus" value="COMPLETED" />
5
- </component>
6
- </project>
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="EditMigrationStateService">
4
- <option name="migrationStatus" value="COMPLETED" />
5
- </component>
6
- </project>
@@ -1,3 +0,0 @@
1
- <component name="ProjectDictionaryState">
2
- <dictionary name="benpotter" />
3
- </component>
@@ -1,8 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <module type="WEB_MODULE" version="4">
3
- <component name="NewModuleRootManager">
4
- <content url="file://$MODULE_DIR$" />
5
- <orderEntry type="inheritedJdk" />
6
- <orderEntry type="sourceFolder" forTests="false" />
7
- </component>
8
- </module>
@@ -1,6 +0,0 @@
1
- <component name="InspectionProjectProfileManager">
2
- <profile version="1.0">
3
- <option name="myName" value="Project Default" />
4
- <inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
5
- </profile>
6
- </component>
package/.idea/modules.xml DELETED
@@ -1,8 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ProjectModuleManager">
4
- <modules>
5
- <module fileurl="file://$PROJECT_DIR$/.idea/homebridge-matter.iml" filepath="$PROJECT_DIR$/.idea/homebridge-matter.iml" />
6
- </modules>
7
- </component>
8
- </project>
package/.idea/vcs.xml DELETED
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="VcsDirectoryMappings">
4
- <mapping directory="" vcs="Git" />
5
- </component>
6
- </project>