@homebridge-plugins/homebridge-matter 0.1.0 → 0.1.1-beta.1

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 (38) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/devices/section-4-lighting/color-temperature-light.js +18 -9
  3. package/dist/devices/section-4-lighting/color-temperature-light.js.map +1 -1
  4. package/dist/devices/section-4-lighting/dimmable-light.js +10 -4
  5. package/dist/devices/section-4-lighting/dimmable-light.js.map +1 -1
  6. package/dist/devices/section-4-lighting/on-off-light.js +16 -1
  7. package/dist/devices/section-4-lighting/on-off-light.js.map +1 -1
  8. package/dist/devices/section-7-sensors/contact-sensor.js +1 -1
  9. package/dist/devices/section-7-sensors/contact-sensor.js.map +1 -1
  10. package/dist/devices/section-7-sensors/humidity-sensor.js +1 -1
  11. package/dist/devices/section-7-sensors/humidity-sensor.js.map +1 -1
  12. package/dist/devices/section-7-sensors/light-sensor.js +1 -1
  13. package/dist/devices/section-7-sensors/light-sensor.js.map +1 -1
  14. package/dist/devices/section-7-sensors/occupancy-sensor.js +1 -1
  15. package/dist/devices/section-7-sensors/occupancy-sensor.js.map +1 -1
  16. package/dist/devices/section-7-sensors/smoke-co-alarm.js +1 -1
  17. package/dist/devices/section-7-sensors/smoke-co-alarm.js.map +1 -1
  18. package/dist/devices/section-7-sensors/temperature-sensor.js +1 -1
  19. package/dist/devices/section-7-sensors/temperature-sensor.js.map +1 -1
  20. package/dist/devices/section-7-sensors/water-leak-detector.js +1 -1
  21. package/dist/devices/section-7-sensors/water-leak-detector.js.map +1 -1
  22. package/dist/devices/section-8-closure/door-lock.js +23 -9
  23. package/dist/devices/section-8-closure/door-lock.js.map +1 -1
  24. package/dist/devices/section-8-closure/window-covering.js +13 -9
  25. package/dist/devices/section-8-closure/window-covering.js.map +1 -1
  26. package/dist/devices/section-9-hvac/fan.js +18 -10
  27. package/dist/devices/section-9-hvac/fan.js.map +1 -1
  28. package/dist/devices/section-9-hvac/thermostat.js +19 -13
  29. package/dist/devices/section-9-hvac/thermostat.js.map +1 -1
  30. package/dist/devices/types.d.ts +4 -4
  31. package/dist/homebridge-ui/public/index.html +62 -10
  32. package/dist/homebridge-ui/server.js +0 -37
  33. package/dist/index.js +2 -2
  34. package/dist/index.js.map +1 -1
  35. package/dist/platform.d.ts +40 -5
  36. package/dist/platform.js +54 -14
  37. package/dist/platform.js.map +1 -1
  38. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  All notable changes to `@homebridge-plugins/homebridge-matter` will be documented in this file.
4
4
 
5
+ ## v0.1.1 (Unreleased)
6
+
7
+ ### Changes
8
+
9
+ - general improvements to repo and examples
10
+
5
11
  ## v0.1.0 (2025-10-20)
6
12
 
7
13
  ### Changes
@@ -18,34 +18,40 @@ export function registerColorTemperatureLight(context) {
18
18
  model: 'ColourTempLight v1',
19
19
  clusters: {
20
20
  onOff: {
21
- onOff: false,
21
+ onOff: false, // Initial state: off
22
22
  },
23
23
  levelControl: {
24
- currentLevel: 127,
25
- minLevel: 1,
26
- maxLevel: 254,
24
+ currentLevel: 127, // Current brightness: 50% (range 1-254)
25
+ minLevel: 1, // Minimum brightness
26
+ maxLevel: 254, // Maximum brightness
27
27
  },
28
28
  colorControl: {
29
- colorMode: 2, // Colour temperature mode
30
- colorTemperatureMireds: 250, // ~4000K
31
- colorTempPhysicalMinMireds: 147, // 6800K (coolest)
32
- colorTempPhysicalMaxMireds: 454, // 2200K (warmest)
33
- coupleColorTempToLevelMinMireds: 147,
29
+ colorMode: 2, // Color temperature mode (0=HS, 1=XY, 2=ColorTemp)
30
+ colorTemperatureMireds: 250, // Current color temp: ~4000K (neutral white)
31
+ colorTempPhysicalMinMireds: 147, // Coolest temp: 6800K (blue-ish white)
32
+ colorTempPhysicalMaxMireds: 454, // Warmest temp: 2200K (orange-ish warm)
33
+ coupleColorTempToLevelMinMireds: 147, // Optional: couples brightness to color temp
34
34
  },
35
35
  },
36
36
  handlers: {
37
37
  onOff: {
38
38
  on: async () => {
39
39
  log.info('[Colour Temp Light] ✓ Handler `on` called (user controlled via Home app)');
40
+ // TODO: Add your actual light control logic here
41
+ // Example: await myLightAPI.turnOn()
40
42
  },
41
43
  off: async () => {
42
44
  log.info('[Colour Temp Light] ✓ Handler `off` called (user controlled via Home app)');
45
+ // TODO: Add your actual light control logic here
46
+ // Example: await myLightAPI.turnOff()
43
47
  },
44
48
  },
45
49
  levelControl: {
46
50
  moveToLevelWithOnOff: async (request) => {
47
51
  const { level } = request;
48
52
  log.info(`[Colour Temp Light] ✓ Handler \`moveToLevel\` called with ${level} (${Math.round(level / 254 * 100)}%)`);
53
+ // TODO: Add your actual brightness control logic here
54
+ // Example: await myLightAPI.setBrightness(Math.round(level / 254 * 100))
49
55
  },
50
56
  },
51
57
  colorControl: {
@@ -53,6 +59,9 @@ export function registerColorTemperatureLight(context) {
53
59
  const { targetMireds, transitionTime } = request;
54
60
  const kelvin = Math.round(1000000 / targetMireds);
55
61
  log.info(`[Colour Temp Light] ✓ Handler \`moveToColorTemperatureLogic\` called with ${targetMireds} mireds (~${kelvin}K), transition: ${transitionTime}s`);
62
+ // TODO: Add your actual color temperature control logic here
63
+ // Note: Convert mireds to Kelvin: kelvin = 1000000 / mireds
64
+ // Example: await myLightAPI.setColorTemperature(kelvin)
56
65
  },
57
66
  },
58
67
  },
@@ -1 +1 @@
1
- {"version":3,"file":"color-temperature-light.js","sourceRoot":"","sources":["../../../src/devices/section-4-lighting/color-temperature-light.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,UAAU,6BAA6B,CAAC,OAAsB;IAClE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IACpC,MAAM,WAAW,GAAU,EAAE,CAAA;IAE7B,IAAI,CAAC,MAAM,CAAC,4BAA4B,EAAE,CAAC;QACzC,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,WAAW,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QAC1D,WAAW,EAAE,0BAA0B;QACvC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,qBAAqB;QACxD,YAAY,EAAE,WAAW;QACzB,YAAY,EAAE,iBAAiB;QAC/B,KAAK,EAAE,oBAAoB;QAE3B,QAAQ,EAAE;YACR,KAAK,EAAE;gBACL,KAAK,EAAE,KAAK;aACb;YACD,YAAY,EAAE;gBACZ,YAAY,EAAE,GAAG;gBACjB,QAAQ,EAAE,CAAC;gBACX,QAAQ,EAAE,GAAG;aACd;YACD,YAAY,EAAE;gBACZ,SAAS,EAAE,CAAC,EAAE,0BAA0B;gBACxC,sBAAsB,EAAE,GAAG,EAAE,SAAS;gBACtC,0BAA0B,EAAE,GAAG,EAAE,kBAAkB;gBACnD,0BAA0B,EAAE,GAAG,EAAE,kBAAkB;gBACnD,+BAA+B,EAAE,GAAG;aACrC;SACF;QAED,QAAQ,EAAE;YACR,KAAK,EAAE;gBACL,EAAE,EAAE,KAAK,IAAI,EAAE;oBACb,GAAG,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAA;gBACtF,CAAC;gBACD,GAAG,EAAE,KAAK,IAAI,EAAE;oBACd,GAAG,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAA;gBACvF,CAAC;aACF;YACD,YAAY,EAAE;gBACZ,oBAAoB,EAAE,KAAK,EAAE,OAAmC,EAAE,EAAE;oBAClE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;oBACzB,GAAG,CAAC,IAAI,CAAC,6DAA6D,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAA;gBACpH,CAAC;aACF;YACD,YAAY,EAAE;gBACZ,2BAA2B,EAAE,KAAK,EAAE,OAAyD,EAAE,EAAE;oBAC/F,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,OAAO,CAAA;oBAChD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC,CAAA;oBACjD,GAAG,CAAC,IAAI,CAAC,6EAA6E,YAAY,aAAa,MAAM,mBAAmB,cAAc,GAAG,CAAC,CAAA;gBAC5J,CAAC;aACF;SACF;KACF,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC"}
1
+ {"version":3,"file":"color-temperature-light.js","sourceRoot":"","sources":["../../../src/devices/section-4-lighting/color-temperature-light.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,UAAU,6BAA6B,CAAC,OAAsB;IAClE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IACpC,MAAM,WAAW,GAAU,EAAE,CAAA;IAE7B,IAAI,CAAC,MAAM,CAAC,4BAA4B,EAAE,CAAC;QACzC,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,WAAW,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QAC1D,WAAW,EAAE,0BAA0B;QACvC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,qBAAqB;QACxD,YAAY,EAAE,WAAW;QACzB,YAAY,EAAE,iBAAiB;QAC/B,KAAK,EAAE,oBAAoB;QAE3B,QAAQ,EAAE;YACR,KAAK,EAAE;gBACL,KAAK,EAAE,KAAK,EAAE,qBAAqB;aACpC;YACD,YAAY,EAAE;gBACZ,YAAY,EAAE,GAAG,EAAE,wCAAwC;gBAC3D,QAAQ,EAAE,CAAC,EAAE,qBAAqB;gBAClC,QAAQ,EAAE,GAAG,EAAE,qBAAqB;aACrC;YACD,YAAY,EAAE;gBACZ,SAAS,EAAE,CAAC,EAAE,mDAAmD;gBACjE,sBAAsB,EAAE,GAAG,EAAE,6CAA6C;gBAC1E,0BAA0B,EAAE,GAAG,EAAE,uCAAuC;gBACxE,0BAA0B,EAAE,GAAG,EAAE,wCAAwC;gBACzE,+BAA+B,EAAE,GAAG,EAAE,6CAA6C;aACpF;SACF;QAED,QAAQ,EAAE;YACR,KAAK,EAAE;gBACL,EAAE,EAAE,KAAK,IAAI,EAAE;oBACb,GAAG,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAA;oBAEpF,iDAAiD;oBACjD,qCAAqC;gBACvC,CAAC;gBACD,GAAG,EAAE,KAAK,IAAI,EAAE;oBACd,GAAG,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAA;oBAErF,iDAAiD;oBACjD,sCAAsC;gBACxC,CAAC;aACF;YACD,YAAY,EAAE;gBACZ,oBAAoB,EAAE,KAAK,EAAE,OAAmC,EAAE,EAAE;oBAClE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;oBACzB,GAAG,CAAC,IAAI,CAAC,6DAA6D,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAA;oBAElH,sDAAsD;oBACtD,yEAAyE;gBAC3E,CAAC;aACF;YACD,YAAY,EAAE;gBACZ,2BAA2B,EAAE,KAAK,EAAE,OAAyD,EAAE,EAAE;oBAC/F,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,OAAO,CAAA;oBAChD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC,CAAA;oBACjD,GAAG,CAAC,IAAI,CAAC,6EAA6E,YAAY,aAAa,MAAM,mBAAmB,cAAc,GAAG,CAAC,CAAA;oBAE1J,6DAA6D;oBAC7D,4DAA4D;oBAC5D,wDAAwD;gBAC1D,CAAC;aACF;SACF;KACF,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC"}
@@ -18,27 +18,33 @@ export function registerDimmableLight(context) {
18
18
  model: 'DimmableLight v1',
19
19
  clusters: {
20
20
  onOff: {
21
- onOff: false,
21
+ onOff: false, // Initial state: off
22
22
  },
23
23
  levelControl: {
24
- currentLevel: 127,
25
- minLevel: 1,
26
- maxLevel: 254,
24
+ currentLevel: 127, // Current brightness: 50% (range 1-254, where 254 = 100%)
25
+ minLevel: 1, // Minimum brightness (Matter spec minimum)
26
+ maxLevel: 254, // Maximum brightness (Matter spec maximum, 0 is reserved for "off")
27
27
  },
28
28
  },
29
29
  handlers: {
30
30
  onOff: {
31
31
  on: async () => {
32
32
  log.info('[Dimmable Light] ✓ Handler `on` called (user controlled via Home app)');
33
+ // TODO: Add your actual light control logic here
34
+ // Example: await myLightAPI.turnOn()
33
35
  },
34
36
  off: async () => {
35
37
  log.info('[Dimmable Light] ✓ Handler `off` called (user controlled via Home app)');
38
+ // TODO: Add your actual light control logic here
39
+ // Example: await myLightAPI.turnOff()
36
40
  },
37
41
  },
38
42
  levelControl: {
39
43
  moveToLevelWithOnOff: async (request) => {
40
44
  const { level } = request;
41
45
  log.info(`[Dimmable Light] ✓ Handler \`moveToLevel\` called with ${level} (${Math.round(level / 254 * 100)}%)`);
46
+ // TODO: Add your actual brightness control logic here
47
+ // Example: await myLightAPI.setBrightness(Math.round(level / 254 * 100))
42
48
  },
43
49
  },
44
50
  },
@@ -1 +1 @@
1
- {"version":3,"file":"dimmable-light.js","sourceRoot":"","sources":["../../../src/devices/section-4-lighting/dimmable-light.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,UAAU,qBAAqB,CAAC,OAAsB;IAC1D,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IACpC,MAAM,WAAW,GAAU,EAAE,CAAA;IAE7B,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAChC,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,WAAW,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QACvD,WAAW,EAAE,gBAAgB;QAC7B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa;QAChD,YAAY,EAAE,WAAW;QACzB,YAAY,EAAE,iBAAiB;QAC/B,KAAK,EAAE,kBAAkB;QAEzB,QAAQ,EAAE;YACR,KAAK,EAAE;gBACL,KAAK,EAAE,KAAK;aACb;YACD,YAAY,EAAE;gBACZ,YAAY,EAAE,GAAG;gBACjB,QAAQ,EAAE,CAAC;gBACX,QAAQ,EAAE,GAAG;aACd;SACF;QAED,QAAQ,EAAE;YACR,KAAK,EAAE;gBACL,EAAE,EAAE,KAAK,IAAI,EAAE;oBACb,GAAG,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAA;gBACnF,CAAC;gBACD,GAAG,EAAE,KAAK,IAAI,EAAE;oBACd,GAAG,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAA;gBACpF,CAAC;aACF;YACD,YAAY,EAAE;gBACZ,oBAAoB,EAAE,KAAK,EAAE,OAAmC,EAAE,EAAE;oBAClE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;oBACzB,GAAG,CAAC,IAAI,CAAC,0DAA0D,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAA;gBACjH,CAAC;aACF;SACF;KACF,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC"}
1
+ {"version":3,"file":"dimmable-light.js","sourceRoot":"","sources":["../../../src/devices/section-4-lighting/dimmable-light.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,UAAU,qBAAqB,CAAC,OAAsB;IAC1D,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IACpC,MAAM,WAAW,GAAU,EAAE,CAAA;IAE7B,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAChC,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,WAAW,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QACvD,WAAW,EAAE,gBAAgB;QAC7B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa;QAChD,YAAY,EAAE,WAAW;QACzB,YAAY,EAAE,iBAAiB;QAC/B,KAAK,EAAE,kBAAkB;QAEzB,QAAQ,EAAE;YACR,KAAK,EAAE;gBACL,KAAK,EAAE,KAAK,EAAE,qBAAqB;aACpC;YACD,YAAY,EAAE;gBACZ,YAAY,EAAE,GAAG,EAAE,0DAA0D;gBAC7E,QAAQ,EAAE,CAAC,EAAE,2CAA2C;gBACxD,QAAQ,EAAE,GAAG,EAAE,oEAAoE;aACpF;SACF;QAED,QAAQ,EAAE;YACR,KAAK,EAAE;gBACL,EAAE,EAAE,KAAK,IAAI,EAAE;oBACb,GAAG,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAA;oBAEjF,iDAAiD;oBACjD,qCAAqC;gBACvC,CAAC;gBACD,GAAG,EAAE,KAAK,IAAI,EAAE;oBACd,GAAG,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAA;oBAElF,iDAAiD;oBACjD,sCAAsC;gBACxC,CAAC;aACF;YACD,YAAY,EAAE;gBACZ,oBAAoB,EAAE,KAAK,EAAE,OAAmC,EAAE,EAAE;oBAClE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;oBACzB,GAAG,CAAC,IAAI,CAAC,0DAA0D,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAA;oBAE/G,sDAAsD;oBACtD,yEAAyE;gBAC3E,CAAC;aACF;SACF;KACF,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC"}
@@ -16,18 +16,33 @@ export function registerOnOffLight(context) {
16
16
  serialNumber: 'LIGHT-001',
17
17
  manufacturer: 'Matter Examples',
18
18
  model: 'OnOffLight v1',
19
+ // Optional: Store custom data that persists across restarts
20
+ // This works the same as PlatformAccessory.context for HAP accessories
21
+ // Use this to cache device state, API tokens, or any custom data
22
+ // context: {
23
+ // deviceId: 'my-light-123',
24
+ // lastKnownState: true,
25
+ // apiToken: 'your-token-here'
26
+ // },
27
+ // Clusters define the functionality and state of the device
19
28
  clusters: {
20
29
  onOff: {
21
- onOff: true,
30
+ onOff: true, // Initial state: light is on (true) or off (false)
22
31
  },
23
32
  },
33
+ // Handlers are called when users control the device from their Home app
24
34
  handlers: {
25
35
  onOff: {
26
36
  on: async () => {
27
37
  log.info('[On/Off Light] ✓ Handler `on` called (user controlled via Home app)');
38
+ // TODO: Add your actual light control logic here
39
+ // Example: await myLightAPI.turnOn()
40
+ // or: await fetch('http://my-light/api/on')
28
41
  },
29
42
  off: async () => {
30
43
  log.info('[On/Off Light] ✓ Handler `off` called (user controlled via Home app)');
44
+ // TODO: Add your actual light control logic here
45
+ // Example: await myLightAPI.turnOff()
31
46
  },
32
47
  },
33
48
  },
@@ -1 +1 @@
1
- {"version":3,"file":"on-off-light.js","sourceRoot":"","sources":["../../../src/devices/section-4-lighting/on-off-light.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,UAAU,kBAAkB,CAAC,OAAsB;IACvD,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IACpC,MAAM,WAAW,GAAU,EAAE,CAAA;IAE7B,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC7B,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,WAAW,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACpD,WAAW,EAAE,cAAc;QAC3B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU;QAC7C,YAAY,EAAE,WAAW;QACzB,YAAY,EAAE,iBAAiB;QAC/B,KAAK,EAAE,eAAe;QAEtB,QAAQ,EAAE;YACR,KAAK,EAAE;gBACL,KAAK,EAAE,IAAI;aACZ;SACF;QAED,QAAQ,EAAE;YACR,KAAK,EAAE;gBACL,EAAE,EAAE,KAAK,IAAI,EAAE;oBACb,GAAG,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAA;gBACjF,CAAC;gBACD,GAAG,EAAE,KAAK,IAAI,EAAE;oBACd,GAAG,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAA;gBAClF,CAAC;aACF;SACF;KACF,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC"}
1
+ {"version":3,"file":"on-off-light.js","sourceRoot":"","sources":["../../../src/devices/section-4-lighting/on-off-light.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,UAAU,kBAAkB,CAAC,OAAsB;IACvD,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IACpC,MAAM,WAAW,GAAU,EAAE,CAAA;IAE7B,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC7B,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,WAAW,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACpD,WAAW,EAAE,cAAc;QAC3B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU;QAC7C,YAAY,EAAE,WAAW;QACzB,YAAY,EAAE,iBAAiB;QAC/B,KAAK,EAAE,eAAe;QAEtB,4DAA4D;QAC5D,uEAAuE;QACvE,iEAAiE;QACjE,aAAa;QACb,8BAA8B;QAC9B,0BAA0B;QAC1B,gCAAgC;QAChC,KAAK;QAEL,4DAA4D;QAC5D,QAAQ,EAAE;YACR,KAAK,EAAE;gBACL,KAAK,EAAE,IAAI,EAAE,mDAAmD;aACjE;SACF;QAED,wEAAwE;QACxE,QAAQ,EAAE;YACR,KAAK,EAAE;gBACL,EAAE,EAAE,KAAK,IAAI,EAAE;oBACb,GAAG,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAA;oBAE/E,iDAAiD;oBACjD,qCAAqC;oBACrC,4CAA4C;gBAC9C,CAAC;gBACD,GAAG,EAAE,KAAK,IAAI,EAAE;oBACd,GAAG,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAA;oBAEhF,iDAAiD;oBACjD,sCAAsC;gBACxC,CAAC;aACF;SACF;KACF,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC"}
@@ -10,7 +10,7 @@ export function registerContactSensor(context) {
10
10
  return accessories;
11
11
  }
12
12
  accessories.push({
13
- uuid: api.hap.uuid.generate('matter-contact-sensor'),
13
+ uuid: api.matter.uuid.generate('matter-contact-sensor'),
14
14
  displayName: 'Contact Sensor',
15
15
  deviceType: api.matter.deviceTypes.ContactSensor,
16
16
  serialNumber: 'CONTACT-001',
@@ -1 +1 @@
1
- {"version":3,"file":"contact-sensor.js","sourceRoot":"","sources":["../../../src/devices/section-7-sensors/contact-sensor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,UAAU,qBAAqB,CAAC,OAAsB;IAC1D,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAC/B,MAAM,WAAW,GAAU,EAAE,CAAA;IAE7B,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAChC,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,WAAW,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QACpD,WAAW,EAAE,gBAAgB;QAC7B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa;QAChD,YAAY,EAAE,aAAa;QAC3B,YAAY,EAAE,YAAY;QAC1B,KAAK,EAAE,wBAAwB;QAC/B,QAAQ,EAAE;YACR,YAAY,EAAE;gBACZ,UAAU,EAAE,KAAK,EAAE,+CAA+C;aACnE;SACF;KACF,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC"}
1
+ {"version":3,"file":"contact-sensor.js","sourceRoot":"","sources":["../../../src/devices/section-7-sensors/contact-sensor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,UAAU,qBAAqB,CAAC,OAAsB;IAC1D,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAC/B,MAAM,WAAW,GAAU,EAAE,CAAA;IAE7B,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAChC,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,WAAW,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QACvD,WAAW,EAAE,gBAAgB;QAC7B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa;QAChD,YAAY,EAAE,aAAa;QAC3B,YAAY,EAAE,YAAY;QAC1B,KAAK,EAAE,wBAAwB;QAC/B,QAAQ,EAAE;YACR,YAAY,EAAE;gBACZ,UAAU,EAAE,KAAK,EAAE,+CAA+C;aACnE;SACF;KACF,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC"}
@@ -10,7 +10,7 @@ export function registerHumiditySensor(context) {
10
10
  return accessories;
11
11
  }
12
12
  accessories.push({
13
- uuid: api.hap.uuid.generate('matter-humidity-sensor'),
13
+ uuid: api.matter.uuid.generate('matter-humidity-sensor'),
14
14
  displayName: 'Humidity Sensor',
15
15
  deviceType: api.matter.deviceTypes.HumiditySensor,
16
16
  serialNumber: 'HUM-001',
@@ -1 +1 @@
1
- {"version":3,"file":"humidity-sensor.js","sourceRoot":"","sources":["../../../src/devices/section-7-sensors/humidity-sensor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,UAAU,sBAAsB,CAAC,OAAsB;IAC3D,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAC/B,MAAM,WAAW,GAAU,EAAE,CAAA;IAE7B,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC;QACjC,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,WAAW,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC;QACrD,WAAW,EAAE,iBAAiB;QAC9B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,cAAc;QACjD,YAAY,EAAE,SAAS;QACvB,YAAY,EAAE,YAAY;QAC1B,KAAK,EAAE,yBAAyB;QAChC,QAAQ,EAAE;YACR,2BAA2B,EAAE;gBAC3B,aAAa,EAAE,IAAI,EAAE,mCAAmC;gBACxD,gBAAgB,EAAE,CAAC;gBACnB,gBAAgB,EAAE,KAAK,EAAE,OAAO;aACjC;SACF;KACF,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC"}
1
+ {"version":3,"file":"humidity-sensor.js","sourceRoot":"","sources":["../../../src/devices/section-7-sensors/humidity-sensor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,UAAU,sBAAsB,CAAC,OAAsB;IAC3D,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAC/B,MAAM,WAAW,GAAU,EAAE,CAAA;IAE7B,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC;QACjC,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,WAAW,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC;QACxD,WAAW,EAAE,iBAAiB;QAC9B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,cAAc;QACjD,YAAY,EAAE,SAAS;QACvB,YAAY,EAAE,YAAY;QAC1B,KAAK,EAAE,yBAAyB;QAChC,QAAQ,EAAE;YACR,2BAA2B,EAAE;gBAC3B,aAAa,EAAE,IAAI,EAAE,mCAAmC;gBACxD,gBAAgB,EAAE,CAAC;gBACnB,gBAAgB,EAAE,KAAK,EAAE,OAAO;aACjC;SACF;KACF,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC"}
@@ -10,7 +10,7 @@ export function registerLightSensor(context) {
10
10
  return accessories;
11
11
  }
12
12
  accessories.push({
13
- uuid: api.hap.uuid.generate('matter-light-sensor'),
13
+ uuid: api.matter.uuid.generate('matter-light-sensor'),
14
14
  displayName: 'Light Sensor',
15
15
  deviceType: api.matter.deviceTypes.LightSensor,
16
16
  serialNumber: 'LIGHT-001',
@@ -1 +1 @@
1
- {"version":3,"file":"light-sensor.js","sourceRoot":"","sources":["../../../src/devices/section-7-sensors/light-sensor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,UAAU,mBAAmB,CAAC,OAAsB;IACxD,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAC/B,MAAM,WAAW,GAAU,EAAE,CAAA;IAE7B,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC9B,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,WAAW,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAClD,WAAW,EAAE,cAAc;QAC3B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW;QAC9C,YAAY,EAAE,WAAW;QACzB,YAAY,EAAE,YAAY;QAC1B,KAAK,EAAE,sBAAsB;QAC7B,QAAQ,EAAE;YACR,sBAAsB,EAAE;gBACtB,aAAa,EAAE,IAAI,EAAE,0CAA0C;gBAC/D,gBAAgB,EAAE,CAAC;gBACnB,gBAAgB,EAAE,KAAK;aACxB;SACF;KACF,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC"}
1
+ {"version":3,"file":"light-sensor.js","sourceRoot":"","sources":["../../../src/devices/section-7-sensors/light-sensor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,UAAU,mBAAmB,CAAC,OAAsB;IACxD,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAC/B,MAAM,WAAW,GAAU,EAAE,CAAA;IAE7B,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC9B,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,WAAW,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QACrD,WAAW,EAAE,cAAc;QAC3B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW;QAC9C,YAAY,EAAE,WAAW;QACzB,YAAY,EAAE,YAAY;QAC1B,KAAK,EAAE,sBAAsB;QAC7B,QAAQ,EAAE;YACR,sBAAsB,EAAE;gBACtB,aAAa,EAAE,IAAI,EAAE,0CAA0C;gBAC/D,gBAAgB,EAAE,CAAC;gBACnB,gBAAgB,EAAE,KAAK;aACxB;SACF;KACF,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC"}
@@ -14,7 +14,7 @@ export function registerOccupancySensor(context) {
14
14
  const OccupancySensingServer = api.matter.deviceTypes.MotionSensor.requirements.OccupancySensingServer;
15
15
  const MotionSensorWithPIR = api.matter.deviceTypes.MotionSensor.with(OccupancySensingServer.with('PassiveInfrared'));
16
16
  accessories.push({
17
- uuid: api.hap.uuid.generate('matter-motion-sensor'),
17
+ uuid: api.matter.uuid.generate('matter-motion-sensor'),
18
18
  displayName: 'Motion Sensor',
19
19
  deviceType: MotionSensorWithPIR,
20
20
  serialNumber: 'MOTION-001',
@@ -1 +1 @@
1
- {"version":3,"file":"occupancy-sensor.js","sourceRoot":"","sources":["../../../src/devices/section-7-sensors/occupancy-sensor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,UAAU,uBAAuB,CAAC,OAAsB;IAC5D,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAC/B,MAAM,WAAW,GAAU,EAAE,CAAA;IAE7B,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAC/B,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,2FAA2F;IAC3F,MAAM,sBAAsB,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,YAAY,CAAC,sBAAsB,CAAA;IACtG,MAAM,mBAAmB,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAClE,sBAAsB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAC/C,CAAA;IAED,WAAW,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACnD,WAAW,EAAE,eAAe;QAC5B,UAAU,EAAE,mBAAmB;QAC/B,YAAY,EAAE,YAAY;QAC1B,YAAY,EAAE,YAAY;QAC1B,KAAK,EAAE,uBAAuB;QAC9B,QAAQ,EAAE;YACR,gBAAgB,EAAE;gBAChB,SAAS,EAAE;oBACT,QAAQ,EAAE,KAAK,EAAE,qBAAqB;iBACvC;aACF;SACF;KACF,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC"}
1
+ {"version":3,"file":"occupancy-sensor.js","sourceRoot":"","sources":["../../../src/devices/section-7-sensors/occupancy-sensor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,UAAU,uBAAuB,CAAC,OAAsB;IAC5D,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAC/B,MAAM,WAAW,GAAU,EAAE,CAAA;IAE7B,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAC/B,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,2FAA2F;IAC3F,MAAM,sBAAsB,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,YAAY,CAAC,sBAAsB,CAAA;IACtG,MAAM,mBAAmB,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAClE,sBAAsB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAC/C,CAAA;IAED,WAAW,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACtD,WAAW,EAAE,eAAe;QAC5B,UAAU,EAAE,mBAAmB;QAC/B,YAAY,EAAE,YAAY;QAC1B,YAAY,EAAE,YAAY;QAC1B,KAAK,EAAE,uBAAuB;QAC9B,QAAQ,EAAE;YACR,gBAAgB,EAAE;gBAChB,SAAS,EAAE;oBACT,QAAQ,EAAE,KAAK,EAAE,qBAAqB;iBACvC;aACF;SACF;KACF,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC"}
@@ -13,7 +13,7 @@ export function registerSmokeCoAlarm(context) {
13
13
  const SmokeCoAlarmServer = api.matter.deviceTypes.SmokeSensor.requirements.SmokeCoAlarmServer;
14
14
  const SmokeSensorWithBoth = api.matter.deviceTypes.SmokeSensor.with(SmokeCoAlarmServer.with('SmokeAlarm', 'CoAlarm'));
15
15
  accessories.push({
16
- uuid: api.hap.uuid.generate('matter-smoke-sensor'),
16
+ uuid: api.matter.uuid.generate('matter-smoke-sensor'),
17
17
  displayName: 'Smoke Sensor',
18
18
  deviceType: SmokeSensorWithBoth,
19
19
  serialNumber: 'SMOKE-001',
@@ -1 +1 @@
1
- {"version":3,"file":"smoke-co-alarm.js","sourceRoot":"","sources":["../../../src/devices/section-7-sensors/smoke-co-alarm.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,UAAU,oBAAoB,CAAC,OAAsB;IACzD,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAC/B,MAAM,WAAW,GAAU,EAAE,CAAA;IAE7B,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC9B,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,8EAA8E;IAC9E,MAAM,kBAAkB,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC,kBAAkB,CAAA;IAC7F,MAAM,mBAAmB,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CACjE,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CACjD,CAAA;IAED,WAAW,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAClD,WAAW,EAAE,cAAc;QAC3B,UAAU,EAAE,mBAAmB;QAC/B,YAAY,EAAE,WAAW;QACzB,YAAY,EAAE,YAAY;QAC1B,KAAK,EAAE,sBAAsB;QAC7B,QAAQ,EAAE;YACR,YAAY,EAAE;gBACZ,UAAU,EAAE,CAAC,EAAE,wCAAwC;gBACvD,OAAO,EAAE,CAAC,EAAE,wCAAwC;gBACpD,YAAY,EAAE,CAAC,EAAE,aAAa;gBAC9B,cAAc,EAAE,KAAK;gBACrB,kBAAkB,EAAE,KAAK;gBACzB,iBAAiB,EAAE,CAAC,EAAE,aAAa;gBACnC,sBAAsB,EAAE,CAAC,EAAE,aAAa;gBACxC,mBAAmB,EAAE,CAAC,EAAE,aAAa;aACtC;SACF;KACF,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC"}
1
+ {"version":3,"file":"smoke-co-alarm.js","sourceRoot":"","sources":["../../../src/devices/section-7-sensors/smoke-co-alarm.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,UAAU,oBAAoB,CAAC,OAAsB;IACzD,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAC/B,MAAM,WAAW,GAAU,EAAE,CAAA;IAE7B,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC9B,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,8EAA8E;IAC9E,MAAM,kBAAkB,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC,kBAAkB,CAAA;IAC7F,MAAM,mBAAmB,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CACjE,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CACjD,CAAA;IAED,WAAW,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QACrD,WAAW,EAAE,cAAc;QAC3B,UAAU,EAAE,mBAAmB;QAC/B,YAAY,EAAE,WAAW;QACzB,YAAY,EAAE,YAAY;QAC1B,KAAK,EAAE,sBAAsB;QAC7B,QAAQ,EAAE;YACR,YAAY,EAAE;gBACZ,UAAU,EAAE,CAAC,EAAE,wCAAwC;gBACvD,OAAO,EAAE,CAAC,EAAE,wCAAwC;gBACpD,YAAY,EAAE,CAAC,EAAE,aAAa;gBAC9B,cAAc,EAAE,KAAK;gBACrB,kBAAkB,EAAE,KAAK;gBACzB,iBAAiB,EAAE,CAAC,EAAE,aAAa;gBACnC,sBAAsB,EAAE,CAAC,EAAE,aAAa;gBACxC,mBAAmB,EAAE,CAAC,EAAE,aAAa;aACtC;SACF;KACF,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC"}
@@ -10,7 +10,7 @@ export function registerTemperatureSensor(context) {
10
10
  return accessories;
11
11
  }
12
12
  accessories.push({
13
- uuid: api.hap.uuid.generate('matter-temperature-sensor'),
13
+ uuid: api.matter.uuid.generate('matter-temperature-sensor'),
14
14
  displayName: 'Temperature Sensor',
15
15
  deviceType: api.matter.deviceTypes.TemperatureSensor,
16
16
  serialNumber: 'TEMP-001',
@@ -1 +1 @@
1
- {"version":3,"file":"temperature-sensor.js","sourceRoot":"","sources":["../../../src/devices/section-7-sensors/temperature-sensor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,UAAU,yBAAyB,CAAC,OAAsB;IAC9D,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAC/B,MAAM,WAAW,GAAU,EAAE,CAAA;IAE7B,IAAI,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAAC;QACpC,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,WAAW,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QACxD,WAAW,EAAE,oBAAoB;QACjC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,iBAAiB;QACpD,YAAY,EAAE,UAAU;QACxB,YAAY,EAAE,YAAY;QAC1B,KAAK,EAAE,4BAA4B;QACnC,QAAQ,EAAE;YACR,sBAAsB,EAAE;gBACtB,aAAa,EAAE,IAAI,EAAE,8CAA8C;gBACnE,gBAAgB,EAAE,CAAC,IAAI,EAAE,QAAQ;gBACjC,gBAAgB,EAAE,KAAK,EAAE,QAAQ;aAClC;SACF;KACF,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC"}
1
+ {"version":3,"file":"temperature-sensor.js","sourceRoot":"","sources":["../../../src/devices/section-7-sensors/temperature-sensor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,UAAU,yBAAyB,CAAC,OAAsB;IAC9D,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAC/B,MAAM,WAAW,GAAU,EAAE,CAAA;IAE7B,IAAI,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAAC;QACpC,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,WAAW,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QAC3D,WAAW,EAAE,oBAAoB;QACjC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,iBAAiB;QACpD,YAAY,EAAE,UAAU;QACxB,YAAY,EAAE,YAAY;QAC1B,KAAK,EAAE,4BAA4B;QACnC,QAAQ,EAAE;YACR,sBAAsB,EAAE;gBACtB,aAAa,EAAE,IAAI,EAAE,8CAA8C;gBACnE,gBAAgB,EAAE,CAAC,IAAI,EAAE,QAAQ;gBACjC,gBAAgB,EAAE,KAAK,EAAE,QAAQ;aAClC;SACF;KACF,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC"}
@@ -10,7 +10,7 @@ export function registerWaterLeakDetector(context) {
10
10
  return accessories;
11
11
  }
12
12
  accessories.push({
13
- uuid: api.hap.uuid.generate('matter-leak-sensor'),
13
+ uuid: api.matter.uuid.generate('matter-leak-sensor'),
14
14
  displayName: 'Leak Sensor',
15
15
  deviceType: api.matter.deviceTypes.LeakSensor,
16
16
  serialNumber: 'LEAK-001',
@@ -1 +1 @@
1
- {"version":3,"file":"water-leak-detector.js","sourceRoot":"","sources":["../../../src/devices/section-7-sensors/water-leak-detector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,UAAU,yBAAyB,CAAC,OAAsB;IAC9D,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAC/B,MAAM,WAAW,GAAU,EAAE,CAAA;IAE7B,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC7B,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,WAAW,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACjD,WAAW,EAAE,aAAa;QAC1B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU;QAC7C,YAAY,EAAE,UAAU;QACxB,YAAY,EAAE,YAAY;QAC1B,KAAK,EAAE,qBAAqB;QAC5B,QAAQ,EAAE;YACR,YAAY,EAAE;gBACZ,UAAU,EAAE,KAAK,EAAE,8CAA8C;aAClE;SACF;KACF,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC"}
1
+ {"version":3,"file":"water-leak-detector.js","sourceRoot":"","sources":["../../../src/devices/section-7-sensors/water-leak-detector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,UAAU,yBAAyB,CAAC,OAAsB;IAC9D,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAC/B,MAAM,WAAW,GAAU,EAAE,CAAA;IAE7B,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC7B,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,WAAW,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACpD,WAAW,EAAE,aAAa;QAC1B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU;QAC7C,YAAY,EAAE,UAAU;QACxB,YAAY,EAAE,YAAY;QAC1B,KAAK,EAAE,qBAAqB;QAC5B,QAAQ,EAAE;YACR,YAAY,EAAE;gBACZ,UAAU,EAAE,KAAK,EAAE,8CAA8C;aAClE;SACF;KACF,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC"}
@@ -9,36 +9,50 @@ export function registerDoorLock(context) {
9
9
  if (!config.enableDoorLock) {
10
10
  return accessories;
11
11
  }
12
+ // Generate UUID once and reuse in handlers
13
+ const doorLockUuid = api.matter.uuid.generate('matter-door-lock');
12
14
  accessories.push({
13
- uuid: api.matter.uuid.generate('matter-door-lock'),
15
+ uuid: doorLockUuid,
14
16
  displayName: 'Door Lock',
15
17
  deviceType: api.matter.deviceTypes.DoorLock,
16
18
  serialNumber: 'LOCK-001',
17
19
  manufacturer: 'Matter Examples',
18
20
  model: 'DoorLock v1',
21
+ // Optional: Persistent storage for custom data (survives Homebridge restarts)
22
+ // Useful for storing device IDs, API credentials, cached state, etc.
23
+ // Access later via configureMatterAccessory() when Homebridge restarts
24
+ // context: {
25
+ // lockDeviceId: 'abc123',
26
+ // apiEndpoint: 'https://api.mylock.com',
27
+ // lastKnownState: 2, // 2 = Unlocked
28
+ // },
19
29
  clusters: {
20
30
  doorLock: {
21
31
  // Lock state: 0=NotFullyLocked, 1=Locked, 2=Unlocked
22
- lockState: 2, // Unlocked
32
+ lockState: 2, // Unlocked (initial state)
23
33
  // Lock type: 0=Deadbolt, 1=Magnetic, 2=Other, etc.
24
34
  lockType: 0, // Deadbolt
25
- // Actuator enabled (can be locked/unlocked)
35
+ // Actuator enabled (can be locked/unlocked remotely)
26
36
  actuatorEnabled: true,
27
37
  },
28
38
  },
29
39
  handlers: {
30
40
  doorLock: {
31
- // Called when user locks the door
41
+ // Called when user locks the door via Home app
32
42
  lockDoor: async () => {
33
43
  log.info('[Door Lock] ✓ Handler `lockDoor` called - Locking door');
34
- // Update the lock state to "Locked" (1)
35
- await api.matter.updateAccessoryState(api.matter.uuid.generate('matter-door-lock'), 'doorLock', { lockState: 1 });
44
+ // TODO: Add your actual lock device control logic here
45
+ // Example: await myLockAPI.lock()
46
+ // Update the Matter state to reflect the lock is now locked
47
+ await api.matter.updateAccessoryState(doorLockUuid, 'doorLock', { lockState: 1 });
36
48
  },
37
- // Called when user unlocks the door
49
+ // Called when user unlocks the door via Home app
38
50
  unlockDoor: async () => {
39
51
  log.info('[Door Lock] ✓ Handler `unlockDoor` called - Unlocking door');
40
- // Update the lock state to "Unlocked" (2)
41
- await api.matter.updateAccessoryState(api.matter.uuid.generate('matter-door-lock'), 'doorLock', { lockState: 2 });
52
+ // TODO: Add your actual lock device control logic here
53
+ // Example: await myLockAPI.unlock()
54
+ // Update the Matter state to reflect the lock is now unlocked
55
+ await api.matter.updateAccessoryState(doorLockUuid, 'doorLock', { lockState: 2 });
42
56
  },
43
57
  },
44
58
  },
@@ -1 +1 @@
1
- {"version":3,"file":"door-lock.js","sourceRoot":"","sources":["../../../src/devices/section-8-closure/door-lock.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,UAAU,gBAAgB,CAAC,OAAsB;IACrD,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IACpC,MAAM,WAAW,GAAU,EAAE,CAAA;IAE7B,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QAC3B,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,WAAW,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAClD,WAAW,EAAE,WAAW;QACxB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ;QAC3C,YAAY,EAAE,UAAU;QACxB,YAAY,EAAE,iBAAiB;QAC/B,KAAK,EAAE,aAAa;QAEpB,QAAQ,EAAE;YACR,QAAQ,EAAE;gBACR,qDAAqD;gBACrD,SAAS,EAAE,CAAC,EAAE,WAAW;gBAEzB,mDAAmD;gBACnD,QAAQ,EAAE,CAAC,EAAE,WAAW;gBAExB,4CAA4C;gBAC5C,eAAe,EAAE,IAAI;aACtB;SACF;QAED,QAAQ,EAAE;YACR,QAAQ,EAAE;gBACR,kCAAkC;gBAClC,QAAQ,EAAE,KAAK,IAAI,EAAE;oBACnB,GAAG,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAA;oBAElE,wCAAwC;oBACxC,MAAM,GAAG,CAAC,MAAM,CAAC,oBAAoB,CACnC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAC5C,UAAU,EACV,EAAE,SAAS,EAAE,CAAC,EAAE,CACjB,CAAA;gBACH,CAAC;gBAED,oCAAoC;gBACpC,UAAU,EAAE,KAAK,IAAI,EAAE;oBACrB,GAAG,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAA;oBAEtE,0CAA0C;oBAC1C,MAAM,GAAG,CAAC,MAAM,CAAC,oBAAoB,CACnC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAC5C,UAAU,EACV,EAAE,SAAS,EAAE,CAAC,EAAE,CACjB,CAAA;gBACH,CAAC;aACF;SACF;KACF,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC"}
1
+ {"version":3,"file":"door-lock.js","sourceRoot":"","sources":["../../../src/devices/section-8-closure/door-lock.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,UAAU,gBAAgB,CAAC,OAAsB;IACrD,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IACpC,MAAM,WAAW,GAAU,EAAE,CAAA;IAE7B,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QAC3B,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,2CAA2C;IAC3C,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA;IAEjE,WAAW,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,WAAW;QACxB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ;QAC3C,YAAY,EAAE,UAAU;QACxB,YAAY,EAAE,iBAAiB;QAC/B,KAAK,EAAE,aAAa;QAEpB,8EAA8E;QAC9E,qEAAqE;QACrE,uEAAuE;QACvE,aAAa;QACb,4BAA4B;QAC5B,2CAA2C;QAC3C,uCAAuC;QACvC,KAAK;QAEL,QAAQ,EAAE;YACR,QAAQ,EAAE;gBACR,qDAAqD;gBACrD,SAAS,EAAE,CAAC,EAAE,2BAA2B;gBAEzC,mDAAmD;gBACnD,QAAQ,EAAE,CAAC,EAAE,WAAW;gBAExB,qDAAqD;gBACrD,eAAe,EAAE,IAAI;aACtB;SACF;QAED,QAAQ,EAAE;YACR,QAAQ,EAAE;gBACR,+CAA+C;gBAC/C,QAAQ,EAAE,KAAK,IAAI,EAAE;oBACnB,GAAG,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAA;oBAElE,uDAAuD;oBACvD,kCAAkC;oBAElC,4DAA4D;oBAC5D,MAAM,GAAG,CAAC,MAAM,CAAC,oBAAoB,CACnC,YAAY,EACZ,UAAU,EACV,EAAE,SAAS,EAAE,CAAC,EAAE,CACjB,CAAA;gBACH,CAAC;gBAED,iDAAiD;gBACjD,UAAU,EAAE,KAAK,IAAI,EAAE;oBACrB,GAAG,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAA;oBAEtE,uDAAuD;oBACvD,oCAAoC;oBAEpC,8DAA8D;oBAC9D,MAAM,GAAG,CAAC,MAAM,CAAC,oBAAoB,CACnC,YAAY,EACZ,UAAU,EACV,EAAE,SAAS,EAAE,CAAC,EAAE,CACjB,CAAA;gBACH,CAAC;aACF;SACF;KACF,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC"}
@@ -10,8 +10,10 @@ export function registerWindowCovering(context) {
10
10
  const accessories = [];
11
11
  // Variant 1: Window Blind (lift only)
12
12
  if (config.enableWindowBlind) {
13
+ // Generate UUID once and reuse in handlers
14
+ const windowBlindUuid = api.matter.uuid.generate('matter-window-blind');
13
15
  accessories.push({
14
- uuid: api.matter.uuid.generate('matter-window-blind'),
16
+ uuid: windowBlindUuid,
15
17
  displayName: 'Window Blind',
16
18
  deviceType: api.matter.deviceTypes.WindowCovering,
17
19
  serialNumber: 'BLIND-001',
@@ -47,21 +49,21 @@ export function registerWindowCovering(context) {
47
49
  goToLiftPercentage: async (request) => {
48
50
  const percent = (request.targetPercent / 100).toFixed(0);
49
51
  log.info(`[Window Blind] ✓ Handler \`goToLiftPercentage\` called: ${request.targetPercent} (${percent}% open)`);
50
- await api.matter.updateAccessoryState(api.matter.uuid.generate('matter-window-blind'), 'windowCovering', {
52
+ await api.matter.updateAccessoryState(windowBlindUuid, 'windowCovering', {
51
53
  currentPositionLiftPercent100ths: request.targetPercent,
52
54
  targetPositionLiftPercent100ths: request.targetPercent,
53
55
  });
54
56
  },
55
57
  upOrOpen: async () => {
56
58
  log.info('[Window Blind] ✓ Handler `upOrOpen` called - Opening blind');
57
- await api.matter.updateAccessoryState(api.matter.uuid.generate('matter-window-blind'), 'windowCovering', {
59
+ await api.matter.updateAccessoryState(windowBlindUuid, 'windowCovering', {
58
60
  currentPositionLiftPercent100ths: 10000, // Fully open
59
61
  targetPositionLiftPercent100ths: 10000,
60
62
  });
61
63
  },
62
64
  downOrClose: async () => {
63
65
  log.info('[Window Blind] ✓ Handler `downOrClose` called - Closing blind');
64
- await api.matter.updateAccessoryState(api.matter.uuid.generate('matter-window-blind'), 'windowCovering', {
66
+ await api.matter.updateAccessoryState(windowBlindUuid, 'windowCovering', {
65
67
  currentPositionLiftPercent100ths: 0, // Fully closed
66
68
  targetPositionLiftPercent100ths: 0,
67
69
  });
@@ -75,8 +77,10 @@ export function registerWindowCovering(context) {
75
77
  }
76
78
  // Variant 2: Venetian Blind (lift + tilt)
77
79
  if (config.enableVenetianBlind) {
80
+ // Generate UUID once and reuse in handlers
81
+ const venetianBlindUuid = api.matter.uuid.generate('matter-venetian-blind');
78
82
  accessories.push({
79
- uuid: api.matter.uuid.generate('matter-venetian-blind'),
83
+ uuid: venetianBlindUuid,
80
84
  displayName: 'Venetian Blind (Tilt)',
81
85
  deviceType: api.matter.deviceTypes.WindowCovering,
82
86
  serialNumber: 'BLIND-002',
@@ -115,7 +119,7 @@ export function registerWindowCovering(context) {
115
119
  goToLiftPercentage: async (request) => {
116
120
  const percent = (request.targetPercent / 100).toFixed(0);
117
121
  log.info(`[Venetian Blind] ✓ Handler \`goToLiftPercentage\` called: ${request.targetPercent} (${percent}% open)`);
118
- await api.matter.updateAccessoryState(api.matter.uuid.generate('matter-venetian-blind'), 'windowCovering', {
122
+ await api.matter.updateAccessoryState(venetianBlindUuid, 'windowCovering', {
119
123
  currentPositionLiftPercent100ths: request.targetPercent,
120
124
  targetPositionLiftPercent100ths: request.targetPercent,
121
125
  });
@@ -123,21 +127,21 @@ export function registerWindowCovering(context) {
123
127
  goToTiltPercentage: async (request) => {
124
128
  const percent = (request.targetPercent / 100).toFixed(0);
125
129
  log.info(`[Venetian Blind] ✓ Handler \`goToTiltPercentage\` called: ${request.targetPercent} (${percent}% tilted)`);
126
- await api.matter.updateAccessoryState(api.matter.uuid.generate('matter-venetian-blind'), 'windowCovering', {
130
+ await api.matter.updateAccessoryState(venetianBlindUuid, 'windowCovering', {
127
131
  currentPositionTiltPercent100ths: request.targetPercent,
128
132
  targetPositionTiltPercent100ths: request.targetPercent,
129
133
  });
130
134
  },
131
135
  upOrOpen: async () => {
132
136
  log.info('[Venetian Blind] ✓ Handler `upOrOpen` called - Opening blind');
133
- await api.matter.updateAccessoryState(api.matter.uuid.generate('matter-venetian-blind'), 'windowCovering', {
137
+ await api.matter.updateAccessoryState(venetianBlindUuid, 'windowCovering', {
134
138
  currentPositionLiftPercent100ths: 10000, // Fully open
135
139
  targetPositionLiftPercent100ths: 10000,
136
140
  });
137
141
  },
138
142
  downOrClose: async () => {
139
143
  log.info('[Venetian Blind] ✓ Handler `downOrClose` called - Closing blind');
140
- await api.matter.updateAccessoryState(api.matter.uuid.generate('matter-venetian-blind'), 'windowCovering', {
144
+ await api.matter.updateAccessoryState(venetianBlindUuid, 'windowCovering', {
141
145
  currentPositionLiftPercent100ths: 0, // Fully closed
142
146
  targetPositionLiftPercent100ths: 0,
143
147
  });
@@ -1 +1 @@
1
- {"version":3,"file":"window-covering.js","sourceRoot":"","sources":["../../../src/devices/section-8-closure/window-covering.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"window-covering.js","sourceRoot":"","sources":["../../../src/devices/section-8-closure/window-covering.ts"],"names":[],"mappings":"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"}
@@ -19,34 +19,42 @@ export function registerFan(context) {
19
19
  clusters: {
20
20
  fanControl: {
21
21
  // Fan mode: 0=Off, 1=Low, 2=Medium, 3=High, 4=On, 5=Auto, 6=Smart
22
- fanMode: 0, // Off
23
- // Fan mode sequence: indicates which modes are supported
22
+ fanMode: 0, // Initial state: Off
23
+ // Fan mode sequence: defines which modes this fan supports
24
24
  // 0=OffLowMedHigh, 1=OffLowHigh, 2=OffLowMedHighAuto, 3=OffLowHighAuto, 4=OffOnAuto, 5=OffOn
25
- fanModeSequence: 0, // OffLowMedHigh
26
- // Percent setting (0-100)
27
- percentSetting: 0,
28
- percentCurrent: 0,
29
- // Speed setting (0-100, some fans use this instead of percent)
25
+ fanModeSequence: 0, // This fan supports: Off, Low, Medium, High
26
+ // Percent-based speed control (0-100)
27
+ percentSetting: 0, // Target speed percentage
28
+ percentCurrent: 0, // Current speed percentage
29
+ // Alternative speed setting (0-100, some fans use this instead)
30
30
  speedSetting: 0,
31
31
  speedCurrent: 0,
32
32
  },
33
33
  },
34
34
  handlers: {
35
35
  fanControl: {
36
- // Called when user changes fan speed via percent slider
36
+ // Called when user adjusts the speed slider
37
37
  setPercentSetting: async (request) => {
38
38
  log.info(`[Fan] ✓ Handler \`setPercentSetting\` called: ${request.percentSetting}%`);
39
+ // TODO: Add your actual fan speed control logic here
40
+ // Example: await myFanAPI.setSpeed(request.percentSetting)
39
41
  },
40
- // Called when user changes fan mode
42
+ // Called when user selects a specific mode (Off, Low, Medium, High, Auto, etc.)
41
43
  setFanMode: async (request) => {
42
44
  const modes = ['Off', 'Low', 'Medium', 'High', 'On', 'Auto', 'Smart'];
43
45
  const modeName = modes[request.fanMode] || `Unknown (${request.fanMode})`;
44
46
  log.info(`[Fan] ✓ Handler \`setFanMode\` called: ${request.fanMode} (${modeName})`);
47
+ // TODO: Add your actual fan mode control logic here
48
+ // Example: await myFanAPI.setMode(modeName.toLowerCase())
45
49
  },
46
- // Called when user presses up/down buttons to adjust speed
50
+ // Called when user uses up/down buttons to increment/decrement speed
47
51
  step: async (request) => {
48
52
  const dir = request.direction === 0 ? 'Up' : 'Down';
49
53
  log.info(`[Fan] ✓ Handler \`step\` called: direction=${dir}, wrap=${request.wrap}, lowestOff=${request.lowestOff}`);
54
+ // TODO: Add your actual fan step control logic here
55
+ // direction: 0 = increase speed, 1 = decrease speed
56
+ // wrap: whether to wrap around from max to min (or vice versa)
57
+ // lowestOff: whether the lowest speed setting should turn the fan off
50
58
  },
51
59
  },
52
60
  },
@@ -1 +1 @@
1
- {"version":3,"file":"fan.js","sourceRoot":"","sources":["../../../src/devices/section-9-hvac/fan.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,UAAU,WAAW,CAAC,OAAsB;IAChD,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IACpC,MAAM,WAAW,GAAU,EAAE,CAAA;IAE7B,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,WAAW,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC5C,WAAW,EAAE,KAAK;QAClB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG;QACtC,YAAY,EAAE,SAAS;QACvB,YAAY,EAAE,iBAAiB;QAC/B,KAAK,EAAE,QAAQ;QAEf,QAAQ,EAAE;YACR,UAAU,EAAE;gBACV,kEAAkE;gBAClE,OAAO,EAAE,CAAC,EAAE,MAAM;gBAElB,yDAAyD;gBACzD,6FAA6F;gBAC7F,eAAe,EAAE,CAAC,EAAE,gBAAgB;gBAEpC,0BAA0B;gBAC1B,cAAc,EAAE,CAAC;gBACjB,cAAc,EAAE,CAAC;gBAEjB,+DAA+D;gBAC/D,YAAY,EAAE,CAAC;gBACf,YAAY,EAAE,CAAC;aAChB;SACF;QAED,QAAQ,EAAE;YACR,UAAU,EAAE;gBACV,wDAAwD;gBACxD,iBAAiB,EAAE,KAAK,EAAE,OAAmC,EAAE,EAAE;oBAC/D,GAAG,CAAC,IAAI,CAAC,iDAAiD,OAAO,CAAC,cAAc,GAAG,CAAC,CAAA;gBACtF,CAAC;gBAED,oCAAoC;gBACpC,UAAU,EAAE,KAAK,EAAE,OAA4B,EAAE,EAAE;oBACjD,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;oBACrE,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,YAAY,OAAO,CAAC,OAAO,GAAG,CAAA;oBACzE,GAAG,CAAC,IAAI,CAAC,0CAA0C,OAAO,CAAC,OAAO,KAAK,QAAQ,GAAG,CAAC,CAAA;gBACrF,CAAC;gBAED,2DAA2D;gBAC3D,IAAI,EAAE,KAAK,EAAE,OAAiE,EAAE,EAAE;oBAChF,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAA;oBACnD,GAAG,CAAC,IAAI,CAAC,8CAA8C,GAAG,UAAU,OAAO,CAAC,IAAI,eAAe,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;gBACrH,CAAC;aACF;SACF;KACF,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC"}
1
+ {"version":3,"file":"fan.js","sourceRoot":"","sources":["../../../src/devices/section-9-hvac/fan.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,UAAU,WAAW,CAAC,OAAsB;IAChD,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IACpC,MAAM,WAAW,GAAU,EAAE,CAAA;IAE7B,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,WAAW,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC5C,WAAW,EAAE,KAAK;QAClB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG;QACtC,YAAY,EAAE,SAAS;QACvB,YAAY,EAAE,iBAAiB;QAC/B,KAAK,EAAE,QAAQ;QAEf,QAAQ,EAAE;YACR,UAAU,EAAE;gBACV,kEAAkE;gBAClE,OAAO,EAAE,CAAC,EAAE,qBAAqB;gBAEjC,2DAA2D;gBAC3D,6FAA6F;gBAC7F,eAAe,EAAE,CAAC,EAAE,4CAA4C;gBAEhE,sCAAsC;gBACtC,cAAc,EAAE,CAAC,EAAE,0BAA0B;gBAC7C,cAAc,EAAE,CAAC,EAAE,2BAA2B;gBAE9C,gEAAgE;gBAChE,YAAY,EAAE,CAAC;gBACf,YAAY,EAAE,CAAC;aAChB;SACF;QAED,QAAQ,EAAE;YACR,UAAU,EAAE;gBACV,4CAA4C;gBAC5C,iBAAiB,EAAE,KAAK,EAAE,OAAmC,EAAE,EAAE;oBAC/D,GAAG,CAAC,IAAI,CAAC,iDAAiD,OAAO,CAAC,cAAc,GAAG,CAAC,CAAA;oBAEpF,qDAAqD;oBACrD,2DAA2D;gBAC7D,CAAC;gBAED,gFAAgF;gBAChF,UAAU,EAAE,KAAK,EAAE,OAA4B,EAAE,EAAE;oBACjD,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;oBACrE,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,YAAY,OAAO,CAAC,OAAO,GAAG,CAAA;oBACzE,GAAG,CAAC,IAAI,CAAC,0CAA0C,OAAO,CAAC,OAAO,KAAK,QAAQ,GAAG,CAAC,CAAA;oBAEnF,oDAAoD;oBACpD,0DAA0D;gBAC5D,CAAC;gBAED,qEAAqE;gBACrE,IAAI,EAAE,KAAK,EAAE,OAAiE,EAAE,EAAE;oBAChF,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAA;oBACnD,GAAG,CAAC,IAAI,CAAC,8CAA8C,GAAG,UAAU,OAAO,CAAC,IAAI,eAAe,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;oBAEnH,oDAAoD;oBACpD,oDAAoD;oBACpD,+DAA+D;oBAC/D,sEAAsE;gBACxE,CAAC;aACF;SACF;KACF,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC"}
@@ -19,39 +19,45 @@ export function registerThermostat(context) {
19
19
  clusters: {
20
20
  thermostat: {
21
21
  // Current temperature (in hundredths of degrees Celsius)
22
- localTemperature: 2100, // 21.00°C
22
+ localTemperature: 2100, // 21.00°C (2100 / 100 = 21.0)
23
23
  // Heating setpoint (target temperature in heat mode)
24
- occupiedHeatingSetpoint: 2000, // 20.00°C
25
- minHeatSetpointLimit: 700, // 7°C minimum
26
- maxHeatSetpointLimit: 3000, // 30°C maximum
24
+ occupiedHeatingSetpoint: 2000, // Target: 20.00°C
25
+ minHeatSetpointLimit: 700, // Minimum: 7°C
26
+ maxHeatSetpointLimit: 3000, // Maximum: 30°C
27
27
  // Cooling setpoint (target temperature in cool mode)
28
- occupiedCoolingSetpoint: 2400, // 24.00°C
29
- minCoolSetpointLimit: 1600, // 16°C minimum
30
- maxCoolSetpointLimit: 3200, // 32°C maximum
28
+ occupiedCoolingSetpoint: 2400, // Target: 24.00°C
29
+ minCoolSetpointLimit: 1600, // Minimum: 16°C
30
+ maxCoolSetpointLimit: 3200, // Maximum: 32°C
31
31
  // System mode: 0=Off, 1=Auto, 3=Cool, 4=Heat
32
- systemMode: 4, // Heat mode
33
- // Control sequence: what modes are available (mandatory field)
34
- // 4 = CoolingAndHeating (correct value when both Heating & Cooling features are present)
32
+ systemMode: 4, // Currently in Heat mode
33
+ // Control sequence: defines what modes are available (mandatory)
34
+ // 4 = CoolingAndHeating (both heating and cooling features present)
35
35
  controlSequenceOfOperation: 4,
36
36
  },
37
37
  },
38
38
  handlers: {
39
39
  thermostat: {
40
- // Called when user changes heating setpoint
40
+ // Called when user changes the heating target temperature
41
41
  setOccupiedHeatingSetpoint: async (request) => {
42
42
  const tempC = (request.targetSetpoint / 100).toFixed(1);
43
43
  log.info(`[Thermostat] ✓ Handler \`setOccupiedHeatingSetpoint\` called: ${request.targetSetpoint} (${tempC}°C)`);
44
+ // TODO: Add your actual thermostat control logic here
45
+ // Example: await myThermostatAPI.setHeatingTarget(parseFloat(tempC))
44
46
  },
45
- // Called when user changes cooling setpoint
47
+ // Called when user changes the cooling target temperature
46
48
  setOccupiedCoolingSetpoint: async (request) => {
47
49
  const tempC = (request.targetSetpoint / 100).toFixed(1);
48
50
  log.info(`[Thermostat] ✓ Handler \`setOccupiedCoolingSetpoint\` called: ${request.targetSetpoint} (${tempC}°C)`);
51
+ // TODO: Add your actual thermostat control logic here
52
+ // Example: await myThermostatAPI.setCoolingTarget(parseFloat(tempC))
49
53
  },
50
- // Called when user changes mode (Off, Auto, Cool, Heat)
54
+ // Called when user changes the system mode (Off, Auto, Cool, Heat, etc.)
51
55
  setSystemMode: async (request) => {
52
56
  const modes = ['Off', 'Auto', 'Reserved', 'Cool', 'Heat', 'Emergency Heating', 'Precooling', 'Fan Only'];
53
57
  const modeName = modes[request.systemMode] || `Unknown (${request.systemMode})`;
54
58
  log.info(`[Thermostat] ✓ Handler \`setSystemMode\` called: ${request.systemMode} (${modeName})`);
59
+ // TODO: Add your actual thermostat mode control logic here
60
+ // Example: await myThermostatAPI.setMode(modeName.toLowerCase())
55
61
  },
56
62
  },
57
63
  },
@@ -1 +1 @@
1
- {"version":3,"file":"thermostat.js","sourceRoot":"","sources":["../../../src/devices/section-9-hvac/thermostat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,UAAU,kBAAkB,CAAC,OAAsB;IACvD,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IACpC,MAAM,WAAW,GAAU,EAAE,CAAA;IAE7B,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC7B,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,WAAW,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACnD,WAAW,EAAE,YAAY;QACzB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU;QAC7C,YAAY,EAAE,YAAY;QAC1B,YAAY,EAAE,iBAAiB;QAC/B,KAAK,EAAE,eAAe;QAEtB,QAAQ,EAAE;YACR,UAAU,EAAE;gBACV,yDAAyD;gBACzD,gBAAgB,EAAE,IAAI,EAAE,UAAU;gBAElC,qDAAqD;gBACrD,uBAAuB,EAAE,IAAI,EAAE,UAAU;gBACzC,oBAAoB,EAAE,GAAG,EAAE,cAAc;gBACzC,oBAAoB,EAAE,IAAI,EAAE,eAAe;gBAE3C,qDAAqD;gBACrD,uBAAuB,EAAE,IAAI,EAAE,UAAU;gBACzC,oBAAoB,EAAE,IAAI,EAAE,eAAe;gBAC3C,oBAAoB,EAAE,IAAI,EAAE,eAAe;gBAE3C,6CAA6C;gBAC7C,UAAU,EAAE,CAAC,EAAE,YAAY;gBAE3B,+DAA+D;gBAC/D,yFAAyF;gBACzF,0BAA0B,EAAE,CAAC;aAC9B;SACF;QAED,QAAQ,EAAE;YACR,UAAU,EAAE;gBACV,4CAA4C;gBAC5C,0BAA0B,EAAE,KAAK,EAAE,OAAmC,EAAE,EAAE;oBACxE,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;oBACvD,GAAG,CAAC,IAAI,CAAC,iEAAiE,OAAO,CAAC,cAAc,KAAK,KAAK,KAAK,CAAC,CAAA;gBAClH,CAAC;gBAED,4CAA4C;gBAC5C,0BAA0B,EAAE,KAAK,EAAE,OAAmC,EAAE,EAAE;oBACxE,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;oBACvD,GAAG,CAAC,IAAI,CAAC,iEAAiE,OAAO,CAAC,cAAc,KAAK,KAAK,KAAK,CAAC,CAAA;gBAClH,CAAC;gBAED,wDAAwD;gBACxD,aAAa,EAAE,KAAK,EAAE,OAA+B,EAAE,EAAE;oBACvD,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE,YAAY,EAAE,UAAU,CAAC,CAAA;oBACxG,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,YAAY,OAAO,CAAC,UAAU,GAAG,CAAA;oBAC/E,GAAG,CAAC,IAAI,CAAC,oDAAoD,OAAO,CAAC,UAAU,KAAK,QAAQ,GAAG,CAAC,CAAA;gBAClG,CAAC;aACF;SACF;KACF,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC"}
1
+ {"version":3,"file":"thermostat.js","sourceRoot":"","sources":["../../../src/devices/section-9-hvac/thermostat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,UAAU,kBAAkB,CAAC,OAAsB;IACvD,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IACpC,MAAM,WAAW,GAAU,EAAE,CAAA;IAE7B,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC7B,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,WAAW,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACnD,WAAW,EAAE,YAAY;QACzB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU;QAC7C,YAAY,EAAE,YAAY;QAC1B,YAAY,EAAE,iBAAiB;QAC/B,KAAK,EAAE,eAAe;QAEtB,QAAQ,EAAE;YACR,UAAU,EAAE;gBACV,yDAAyD;gBACzD,gBAAgB,EAAE,IAAI,EAAE,8BAA8B;gBAEtD,qDAAqD;gBACrD,uBAAuB,EAAE,IAAI,EAAE,kBAAkB;gBACjD,oBAAoB,EAAE,GAAG,EAAE,eAAe;gBAC1C,oBAAoB,EAAE,IAAI,EAAE,gBAAgB;gBAE5C,qDAAqD;gBACrD,uBAAuB,EAAE,IAAI,EAAE,kBAAkB;gBACjD,oBAAoB,EAAE,IAAI,EAAE,gBAAgB;gBAC5C,oBAAoB,EAAE,IAAI,EAAE,gBAAgB;gBAE5C,6CAA6C;gBAC7C,UAAU,EAAE,CAAC,EAAE,yBAAyB;gBAExC,iEAAiE;gBACjE,oEAAoE;gBACpE,0BAA0B,EAAE,CAAC;aAC9B;SACF;QAED,QAAQ,EAAE;YACR,UAAU,EAAE;gBACV,0DAA0D;gBAC1D,0BAA0B,EAAE,KAAK,EAAE,OAAmC,EAAE,EAAE;oBACxE,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;oBACvD,GAAG,CAAC,IAAI,CAAC,iEAAiE,OAAO,CAAC,cAAc,KAAK,KAAK,KAAK,CAAC,CAAA;oBAEhH,sDAAsD;oBACtD,qEAAqE;gBACvE,CAAC;gBAED,0DAA0D;gBAC1D,0BAA0B,EAAE,KAAK,EAAE,OAAmC,EAAE,EAAE;oBACxE,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;oBACvD,GAAG,CAAC,IAAI,CAAC,iEAAiE,OAAO,CAAC,cAAc,KAAK,KAAK,KAAK,CAAC,CAAA;oBAEhH,sDAAsD;oBACtD,qEAAqE;gBACvE,CAAC;gBAED,yEAAyE;gBACzE,aAAa,EAAE,KAAK,EAAE,OAA+B,EAAE,EAAE;oBACvD,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE,YAAY,EAAE,UAAU,CAAC,CAAA;oBACxG,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,YAAY,OAAO,CAAC,UAAU,GAAG,CAAA;oBAC/E,GAAG,CAAC,IAAI,CAAC,oDAAoD,OAAO,CAAC,UAAU,KAAK,QAAQ,GAAG,CAAC,CAAA;oBAEhG,2DAA2D;oBAC3D,iEAAiE;gBACnE,CAAC;aACF;SACF;KACF,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC"}
@@ -2,10 +2,6 @@
2
2
  * Common types for Matter device implementations
3
3
  */
4
4
  import type { API, Logging, PlatformConfig } from 'homebridge';
5
- /**
6
- * Device registration function signature
7
- */
8
- export type DeviceRegistrar = (api: API, log: Logging, config: PlatformConfig) => any[];
9
5
  /**
10
6
  * Base context passed to all device registrars
11
7
  */
@@ -14,3 +10,7 @@ export interface DeviceContext {
14
10
  log: Logging;
15
11
  config: PlatformConfig;
16
12
  }
13
+ /**
14
+ * Device registration function signature
15
+ */
16
+ export type DeviceRegistrar = (context: DeviceContext) => any[];
@@ -85,11 +85,51 @@
85
85
  <table class="table w-100 mt-3" id="deviceTable" style="display: none;">
86
86
  <thead>
87
87
  <tr class="table-active">
88
- <th scope="col" style="width: 40%;">Device Name</th>
89
- <th scope="col" style="width: 60%;" id="displayName"></th>
88
+ <th scope="col" style="width: 40%;">Property</th>
89
+ <th scope="col" style="width: 60%;">Value</th>
90
90
  </tr>
91
91
  </thead>
92
92
  <tbody>
93
+ <tr>
94
+ <th scope="row">Display Name</th>
95
+ <td id="displayName"></td>
96
+ </tr>
97
+ <tr>
98
+ <th scope="row">Plugin</th>
99
+ <td id="plugin"></td>
100
+ </tr>
101
+ <tr>
102
+ <th scope="row">Platform</th>
103
+ <td id="platform"></td>
104
+ </tr>
105
+ <tr>
106
+ <th scope="row">UUID</th>
107
+ <td id="uuid"></td>
108
+ </tr>
109
+ <tr>
110
+ <th scope="row">Device Type</th>
111
+ <td id="deviceType"></td>
112
+ </tr>
113
+ <tr>
114
+ <th scope="row">Serial Number</th>
115
+ <td id="serialNumber"></td>
116
+ </tr>
117
+ <tr>
118
+ <th scope="row">Manufacturer</th>
119
+ <td id="manufacturer"></td>
120
+ </tr>
121
+ <tr>
122
+ <th scope="row">Model</th>
123
+ <td id="model"></td>
124
+ </tr>
125
+ <tr>
126
+ <th scope="row">Device ID</th>
127
+ <td id="deviceId"></td>
128
+ </tr>
129
+ <tr>
130
+ <th scope="row">Protocol</th>
131
+ <td id="protocol"></td>
132
+ </tr>
93
133
  </tbody>
94
134
  </table>
95
135
  </div>
@@ -168,9 +208,9 @@
168
208
  document.getElementById('pageSupport').style.display = 'none'
169
209
  document.getElementById('pageDevices').style.display = 'block'
170
210
  const cachedAccessories =
171
- typeof homebridge.getCachedAccessories === 'function'
172
- ? await homebridge.getCachedAccessories()
173
- : await homebridge.request('/getCachedAccessories')
211
+ typeof homebridge.getCachedMatterAccessories === 'function'
212
+ ? await homebridge.getCachedMatterAccessories()
213
+ : []
174
214
  if (cachedAccessories.length > 0) {
175
215
  cachedAccessories.sort((a, b) => {
176
216
  return a.displayName.toLowerCase() > b.displayName.toLowerCase()
@@ -185,19 +225,31 @@
185
225
  cachedAccessories.forEach(a => {
186
226
  const option = document.createElement('option')
187
227
  option.text = a.displayName
188
- option.value = a.context.hbDeviceId
228
+ option.value = a.uuid
189
229
  deviceSelect.add(option)
190
230
  })
191
- showDeviceInfo = async hbDeviceId => {
231
+ showDeviceInfo = async uuid => {
192
232
  homebridge.showSpinner()
193
- const thisAcc = cachedAccessories.find(x => x.context.hbDeviceId === hbDeviceId)
194
- const context = thisAcc.context
233
+ const thisAcc = cachedAccessories.find(x => x.uuid === uuid)
234
+
235
+ // Populate device information
236
+ document.getElementById('displayName').innerHTML = thisAcc.displayName || 'N/A'
237
+ document.getElementById('plugin').innerHTML = thisAcc.plugin || 'N/A'
238
+ document.getElementById('platform').innerHTML = thisAcc.platform || 'N/A'
239
+ document.getElementById('uuid').innerHTML = thisAcc.uuid || 'N/A'
240
+ document.getElementById('deviceType').innerHTML = thisAcc.deviceType?.name || 'N/A'
241
+ document.getElementById('serialNumber').innerHTML = thisAcc.serialNumber || 'N/A'
242
+ document.getElementById('manufacturer').innerHTML = thisAcc.manufacturer || 'N/A'
243
+ document.getElementById('model').innerHTML = thisAcc.model || 'N/A'
244
+ document.getElementById('deviceId').innerHTML = thisAcc.$deviceId || 'N/A'
245
+ document.getElementById('protocol').innerHTML = thisAcc.$protocol || 'N/A'
246
+
195
247
  document.getElementById('deviceTable').style.display = 'inline-table'
196
248
  homebridge.hideSpinner()
197
249
  }
198
250
  deviceSelect.addEventListener('change', event => showDeviceInfo(event.target.value))
199
251
  if (cachedAccessories.length > 0) {
200
- showDeviceInfo(cachedAccessories[0].context.hbDeviceId)
252
+ showDeviceInfo(cachedAccessories[0].uuid)
201
253
  } else {
202
254
  const option = document.createElement('option')
203
255
  option.text = 'No Devices'
@@ -1,45 +1,8 @@
1
- import fs from 'node:fs'
2
-
3
1
  import { HomebridgePluginUiServer } from '@homebridge/plugin-ui-utils'
4
2
 
5
3
  class PluginUiServer extends HomebridgePluginUiServer {
6
4
  constructor() {
7
5
  super()
8
-
9
- /*
10
- A native method getCachedAccessories() was introduced in config-ui-x v4.37.0
11
- The following is for users who have a lower version of config-ui-x
12
- */
13
- this.onRequest('/getCachedAccessories', async () => {
14
- try {
15
- // Define the plugin and create the array to return
16
- const plugin = '@homebridge-plugins/homebridge-matter'
17
- const devicesToReturn = []
18
-
19
- // The path and file of the cached accessories
20
- const accFile = `${this.homebridgeStoragePath}/accessories/cachedAccessories`
21
-
22
- // Check the file exists
23
- if (fs.existsSync(accFile)) {
24
- // Read the cached accessories file
25
- let cachedAccessories = await fs.promises.readFile(accFile)
26
-
27
- // Parse the JSON
28
- cachedAccessories = JSON.parse(cachedAccessories)
29
-
30
- // We only want the accessories for this plugin
31
- cachedAccessories
32
- .filter(accessory => accessory.plugin === plugin)
33
- .forEach(accessory => devicesToReturn.push(accessory))
34
- }
35
-
36
- // Return the array
37
- return devicesToReturn
38
- } catch (err) {
39
- // Just return an empty accessory list in case of any errors
40
- return []
41
- }
42
- })
43
6
  this.ready()
44
7
  }
45
8
  }
package/dist/index.js CHANGED
@@ -1,9 +1,9 @@
1
- import { ExampleHomebridgePlatform } from './platform.js';
1
+ import { MatterPlatform } from './platform.js';
2
2
  import { PLATFORM_NAME, PLUGIN_NAME } from './settings.js';
3
3
  /**
4
4
  * This method registers the platform with Homebridge
5
5
  */
6
6
  export default (api) => {
7
- api.registerPlatform(PLUGIN_NAME, PLATFORM_NAME, ExampleHomebridgePlatform);
7
+ api.registerPlatform(PLUGIN_NAME, PLATFORM_NAME, MatterPlatform);
8
8
  };
9
9
  //# sourceMappingURL=index.js.map
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,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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,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,cAAc,CAAC,CAAA;AAClE,CAAC,CAAA"}
@@ -5,7 +5,7 @@ import type { API, DynamicPlatformPlugin, Logging, PlatformConfig } from 'homebr
5
5
  *
6
6
  * Organized by official Matter Specification v1.4.1 categories
7
7
  */
8
- export declare class ExampleHomebridgePlatform implements DynamicPlatformPlugin {
8
+ export declare class MatterPlatform implements DynamicPlatformPlugin {
9
9
  readonly log: Logging;
10
10
  readonly config: PlatformConfig;
11
11
  readonly api: API;
@@ -17,7 +17,25 @@ export declare class ExampleHomebridgePlatform implements DynamicPlatformPlugin
17
17
  */
18
18
  configureAccessory(): void;
19
19
  /**
20
- * Called when homebridge restores cached Matter accessories from disk at startup
20
+ * Called when homebridge restores cached Matter accessories from disk at startup.
21
+ *
22
+ * This is where you can access the accessory.context object to retrieve
23
+ * any custom data you stored when the accessory was originally registered.
24
+ *
25
+ * Example:
26
+ * ```typescript
27
+ * configureMatterAccessory(accessory: any) {
28
+ * this.log.debug('Restoring:', accessory.displayName)
29
+ *
30
+ * // Access your stored context data
31
+ * if (accessory.context?.deviceId) {
32
+ * this.log.debug('Device ID:', accessory.context.deviceId)
33
+ * // Reconnect to your device using the stored ID
34
+ * }
35
+ *
36
+ * this.matterAccessories.set(accessory.uuid, accessory)
37
+ * }
38
+ * ```
21
39
  */
22
40
  configureMatterAccessory(accessory: any): void;
23
41
  /**
@@ -30,6 +48,14 @@ export declare class ExampleHomebridgePlatform implements DynamicPlatformPlugin
30
48
  private removeDisabledAccessories;
31
49
  /**
32
50
  * Section 4: Lighting Devices (Matter Spec § 4)
51
+ *
52
+ * This method demonstrates the standard pattern for registering Matter devices:
53
+ * 1. Create a context object containing api, log, and config
54
+ * 2. Call device registration functions to collect accessories
55
+ * 3. Register accessories with Homebridge using api.matter.registerPlatformAccessories()
56
+ *
57
+ * Each device registration function returns an array of accessories (empty if disabled).
58
+ * The spread operator (...) flattens all arrays into a single accessories array.
33
59
  */
34
60
  private registerSection4Lighting;
35
61
  /**
@@ -55,9 +81,18 @@ export declare class ExampleHomebridgePlatform implements DynamicPlatformPlugin
55
81
  /**
56
82
  * Section 12: Robotic Devices (Matter Spec § 12)
57
83
  *
58
- * ⚠️ IMPORTANT: RVC devices are published as external accessories
59
- * Apple Home requires RVC devices to be on their own dedicated Matter bridge.
60
- * Using publishExternalAccessories ensures each RVC device gets its own bridge.
84
+ * ⚠️ IMPORTANT: RVC devices use a DIFFERENT API than other devices!
85
+ *
86
+ * This demonstrates api.matter.publishExternalAccessories() instead of
87
+ * api.matter.registerPlatformAccessories(). The key differences:
88
+ *
89
+ * 1. publishExternalAccessories() creates a dedicated Matter bridge for each device
90
+ * 2. Each device gets its own port and commissioning codes (QR + manual)
91
+ * 3. Required for RVC devices to work with Apple Home
92
+ * 4. Use for devices that need isolation (cameras, doorbells, RVC, etc.)
93
+ *
94
+ * When this runs, you'll see separate commissioning codes in the logs for the robot vacuum.
95
+ * Use those codes to pair the vacuum as a separate bridge in your Home app.
61
96
  */
62
97
  private registerSection12Robotic;
63
98
  }
package/dist/platform.js CHANGED
@@ -6,7 +6,7 @@ import { PLATFORM_NAME, PLUGIN_NAME } from './settings.js';
6
6
  *
7
7
  * Organized by official Matter Specification v1.4.1 categories
8
8
  */
9
- export class ExampleHomebridgePlatform {
9
+ export class MatterPlatform {
10
10
  log;
11
11
  config;
12
12
  api;
@@ -49,7 +49,25 @@ export class ExampleHomebridgePlatform {
49
49
  // this.accessories.set(accessory.UUID, accessory)
50
50
  }
51
51
  /**
52
- * Called when homebridge restores cached Matter accessories from disk at startup
52
+ * Called when homebridge restores cached Matter accessories from disk at startup.
53
+ *
54
+ * This is where you can access the accessory.context object to retrieve
55
+ * any custom data you stored when the accessory was originally registered.
56
+ *
57
+ * Example:
58
+ * ```typescript
59
+ * configureMatterAccessory(accessory: any) {
60
+ * this.log.debug('Restoring:', accessory.displayName)
61
+ *
62
+ * // Access your stored context data
63
+ * if (accessory.context?.deviceId) {
64
+ * this.log.debug('Device ID:', accessory.context.deviceId)
65
+ * // Reconnect to your device using the stored ID
66
+ * }
67
+ *
68
+ * this.matterAccessories.set(accessory.uuid, accessory)
69
+ * }
70
+ * ```
53
71
  */
54
72
  configureMatterAccessory(accessory) {
55
73
  this.log.debug('Loading cached Matter accessory:', accessory.displayName);
@@ -89,13 +107,13 @@ export class ExampleHomebridgePlatform {
89
107
  { enabled: this.config.enableOnOffOutlet, uuid: this.api.matter.uuid.generate('matter-onoff-outlet'), name: 'On/Off Outlet' },
90
108
  { enabled: this.config.enableDimmableOutlet, uuid: this.api.matter.uuid.generate('matter-dimmable-outlet'), name: 'Dimmable Outlet' },
91
109
  { enabled: this.config.enableOnOffSwitch, uuid: this.api.matter.uuid.generate('matter-onoff-switch'), name: 'On/Off Switch' },
92
- { enabled: this.config.enableTemperatureSensor, uuid: this.api.hap.uuid.generate('matter-temperature-sensor'), name: 'Temperature Sensor' },
93
- { enabled: this.config.enableHumiditySensor, uuid: this.api.hap.uuid.generate('matter-humidity-sensor'), name: 'Humidity Sensor' },
94
- { enabled: this.config.enableLightSensor, uuid: this.api.hap.uuid.generate('matter-light-sensor'), name: 'Light Sensor' },
95
- { enabled: this.config.enableMotionSensor, uuid: this.api.hap.uuid.generate('matter-motion-sensor'), name: 'Motion Sensor' },
96
- { enabled: this.config.enableContactSensor, uuid: this.api.hap.uuid.generate('matter-contact-sensor'), name: 'Contact Sensor' },
97
- { enabled: this.config.enableLeakSensor, uuid: this.api.hap.uuid.generate('matter-leak-sensor'), name: 'Leak Sensor' },
98
- { enabled: this.config.enableSmokeSensor, uuid: this.api.hap.uuid.generate('matter-smoke-sensor'), name: 'Smoke Sensor' },
110
+ { enabled: this.config.enableTemperatureSensor, uuid: this.api.matter.uuid.generate('matter-temperature-sensor'), name: 'Temperature Sensor' },
111
+ { enabled: this.config.enableHumiditySensor, uuid: this.api.matter.uuid.generate('matter-humidity-sensor'), name: 'Humidity Sensor' },
112
+ { enabled: this.config.enableLightSensor, uuid: this.api.matter.uuid.generate('matter-light-sensor'), name: 'Light Sensor' },
113
+ { enabled: this.config.enableMotionSensor, uuid: this.api.matter.uuid.generate('matter-motion-sensor'), name: 'Motion Sensor' },
114
+ { enabled: this.config.enableContactSensor, uuid: this.api.matter.uuid.generate('matter-contact-sensor'), name: 'Contact Sensor' },
115
+ { enabled: this.config.enableLeakSensor, uuid: this.api.matter.uuid.generate('matter-leak-sensor'), name: 'Leak Sensor' },
116
+ { enabled: this.config.enableSmokeSensor, uuid: this.api.matter.uuid.generate('matter-smoke-sensor'), name: 'Smoke Sensor' },
99
117
  { enabled: this.config.enableDoorLock, uuid: this.api.matter.uuid.generate('matter-door-lock'), name: 'Door Lock' },
100
118
  { enabled: this.config.enableWindowBlind, uuid: this.api.matter.uuid.generate('matter-window-blind'), name: 'Window Blind' },
101
119
  { enabled: this.config.enableVenetianBlind, uuid: this.api.matter.uuid.generate('matter-venetian-blind'), name: 'Venetian Blind' },
@@ -116,23 +134,36 @@ export class ExampleHomebridgePlatform {
116
134
  }
117
135
  /**
118
136
  * Section 4: Lighting Devices (Matter Spec § 4)
137
+ *
138
+ * This method demonstrates the standard pattern for registering Matter devices:
139
+ * 1. Create a context object containing api, log, and config
140
+ * 2. Call device registration functions to collect accessories
141
+ * 3. Register accessories with Homebridge using api.matter.registerPlatformAccessories()
142
+ *
143
+ * Each device registration function returns an array of accessories (empty if disabled).
144
+ * The spread operator (...) flattens all arrays into a single accessories array.
119
145
  */
120
146
  registerSection4Lighting() {
121
147
  this.log.info('═'.repeat(80));
122
148
  this.log.info('Section 4: Lighting Devices (Matter Spec § 4)');
123
149
  this.log.info('═'.repeat(80));
150
+ // Step 1: Create context object to pass to device registration functions
124
151
  const context = { api: this.api, log: this.log, config: this.config };
152
+ // Step 2: Call device registration functions to collect accessories
153
+ // Each function checks config and returns [] if disabled, or [accessory] if enabled
125
154
  const accessories = [
126
155
  ...registerOnOffLight(context),
127
156
  ...registerDimmableLight(context),
128
157
  ...registerColorTemperatureLight(context),
129
158
  ...registerExtendedColorLight(context),
130
159
  ];
160
+ // Step 3: Register all collected accessories with Homebridge
131
161
  if (accessories.length > 0) {
132
162
  this.log.info(`✓ Registered ${accessories.length} lighting device(s)`);
133
163
  for (const acc of accessories) {
134
164
  this.log.info(` - ${acc.displayName}`);
135
165
  }
166
+ // This is the key API call that registers Matter accessories with Homebridge
136
167
  this.api.matter.registerPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, accessories);
137
168
  }
138
169
  }
@@ -243,9 +274,18 @@ export class ExampleHomebridgePlatform {
243
274
  /**
244
275
  * Section 12: Robotic Devices (Matter Spec § 12)
245
276
  *
246
- * ⚠️ IMPORTANT: RVC devices are published as external accessories
247
- * Apple Home requires RVC devices to be on their own dedicated Matter bridge.
248
- * Using publishExternalAccessories ensures each RVC device gets its own bridge.
277
+ * ⚠️ IMPORTANT: RVC devices use a DIFFERENT API than other devices!
278
+ *
279
+ * This demonstrates api.matter.publishExternalAccessories() instead of
280
+ * api.matter.registerPlatformAccessories(). The key differences:
281
+ *
282
+ * 1. publishExternalAccessories() creates a dedicated Matter bridge for each device
283
+ * 2. Each device gets its own port and commissioning codes (QR + manual)
284
+ * 3. Required for RVC devices to work with Apple Home
285
+ * 4. Use for devices that need isolation (cameras, doorbells, RVC, etc.)
286
+ *
287
+ * When this runs, you'll see separate commissioning codes in the logs for the robot vacuum.
288
+ * Use those codes to pair the vacuum as a separate bridge in your Home app.
249
289
  */
250
290
  registerSection12Robotic() {
251
291
  this.log.info('═'.repeat(80));
@@ -260,8 +300,8 @@ export class ExampleHomebridgePlatform {
260
300
  for (const acc of accessories) {
261
301
  this.log.info(` - ${acc.displayName} (dedicated bridge for Apple Home compatibility)`);
262
302
  }
263
- // Use publishExternalAccessories to give each RVC device its own bridge
264
- // This is required for Apple Home compatibility
303
+ // DIFFERENT API: publishExternalAccessories() instead of registerPlatformAccessories()
304
+ // This gives each device its own Matter bridge, required for RVC devices in Apple Home
265
305
  this.api.matter.publishExternalAccessories(PLUGIN_NAME, accessories);
266
306
  }
267
307
  }
@@ -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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"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "displayName": "Homebridge Matter",
4
4
  "alias": "Matter",
5
5
  "type": "module",
6
- "version": "0.1.0",
6
+ "version": "0.1.1-beta.1",
7
7
  "description": "Homebridge plugin to showcase examples of Matter devices in Homebridge.",
8
8
  "author": {
9
9
  "name": "bwp91",
@@ -58,7 +58,7 @@
58
58
  "prepublishOnly": "npm run lint && npm run build"
59
59
  },
60
60
  "dependencies": {
61
- "@homebridge/plugin-ui-utils": "^2.1.0",
61
+ "@homebridge/plugin-ui-utils": "^2.1.1-beta.0",
62
62
  "@matter/main": "^0.15.6"
63
63
  },
64
64
  "devDependencies": {