@homebridge-plugins/homebridge-matter 0.1.3 → 0.1.4

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 (61) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/MATTER_API.md +1189 -182
  3. package/README.md +1 -1
  4. package/dist/devices/section-12-robotic/robotic-vacuum-cleaner.d.ts +9 -53
  5. package/dist/devices/section-12-robotic/robotic-vacuum-cleaner.js +12 -62
  6. package/dist/devices/section-12-robotic/robotic-vacuum-cleaner.js.map +1 -1
  7. package/dist/devices/section-4-lighting/color-temperature-light.d.ts +8 -1
  8. package/dist/devices/section-4-lighting/color-temperature-light.js +27 -23
  9. package/dist/devices/section-4-lighting/color-temperature-light.js.map +1 -1
  10. package/dist/devices/section-4-lighting/dimmable-light.d.ts +5 -22
  11. package/dist/devices/section-4-lighting/dimmable-light.js +40 -319
  12. package/dist/devices/section-4-lighting/dimmable-light.js.map +1 -1
  13. package/dist/devices/section-4-lighting/extended-color-light.d.ts +6 -25
  14. package/dist/devices/section-4-lighting/extended-color-light.js +33 -399
  15. package/dist/devices/section-4-lighting/extended-color-light.js.map +1 -1
  16. package/dist/devices/section-4-lighting/on-off-light.d.ts +8 -28
  17. package/dist/devices/section-4-lighting/on-off-light.js +64 -434
  18. package/dist/devices/section-4-lighting/on-off-light.js.map +1 -1
  19. package/dist/devices/section-5-smart-plugs/dimmable-plug-in-unit.d.ts +6 -0
  20. package/dist/devices/section-5-smart-plugs/dimmable-plug-in-unit.js +13 -3
  21. package/dist/devices/section-5-smart-plugs/dimmable-plug-in-unit.js.map +1 -1
  22. package/dist/devices/section-5-smart-plugs/on-off-plug-in-unit.d.ts +5 -0
  23. package/dist/devices/section-5-smart-plugs/on-off-plug-in-unit.js +9 -2
  24. package/dist/devices/section-5-smart-plugs/on-off-plug-in-unit.js.map +1 -1
  25. package/dist/devices/section-6-switches/on-off-light-switch.d.ts +5 -0
  26. package/dist/devices/section-6-switches/on-off-light-switch.js +19 -5
  27. package/dist/devices/section-6-switches/on-off-light-switch.js.map +1 -1
  28. package/dist/devices/section-7-sensors/contact-sensor.d.ts +5 -0
  29. package/dist/devices/section-7-sensors/contact-sensor.js +5 -0
  30. package/dist/devices/section-7-sensors/contact-sensor.js.map +1 -1
  31. package/dist/devices/section-7-sensors/humidity-sensor.d.ts +5 -0
  32. package/dist/devices/section-7-sensors/humidity-sensor.js +5 -0
  33. package/dist/devices/section-7-sensors/humidity-sensor.js.map +1 -1
  34. package/dist/devices/section-7-sensors/light-sensor.d.ts +5 -0
  35. package/dist/devices/section-7-sensors/light-sensor.js +5 -0
  36. package/dist/devices/section-7-sensors/light-sensor.js.map +1 -1
  37. package/dist/devices/section-7-sensors/occupancy-sensor.d.ts +6 -0
  38. package/dist/devices/section-7-sensors/occupancy-sensor.js +6 -0
  39. package/dist/devices/section-7-sensors/occupancy-sensor.js.map +1 -1
  40. package/dist/devices/section-7-sensors/smoke-co-alarm.d.ts +6 -0
  41. package/dist/devices/section-7-sensors/smoke-co-alarm.js +6 -0
  42. package/dist/devices/section-7-sensors/smoke-co-alarm.js.map +1 -1
  43. package/dist/devices/section-7-sensors/temperature-sensor.d.ts +5 -0
  44. package/dist/devices/section-7-sensors/temperature-sensor.js +5 -0
  45. package/dist/devices/section-7-sensors/temperature-sensor.js.map +1 -1
  46. package/dist/devices/section-7-sensors/water-leak-detector.d.ts +5 -0
  47. package/dist/devices/section-7-sensors/water-leak-detector.js +5 -0
  48. package/dist/devices/section-7-sensors/water-leak-detector.js.map +1 -1
  49. package/dist/devices/section-8-closure/door-lock.d.ts +6 -0
  50. package/dist/devices/section-8-closure/door-lock.js +12 -27
  51. package/dist/devices/section-8-closure/door-lock.js.map +1 -1
  52. package/dist/devices/section-8-closure/window-covering.d.ts +7 -0
  53. package/dist/devices/section-8-closure/window-covering.js +27 -43
  54. package/dist/devices/section-8-closure/window-covering.js.map +1 -1
  55. package/dist/devices/section-9-hvac/fan.d.ts +7 -0
  56. package/dist/devices/section-9-hvac/fan.js +17 -23
  57. package/dist/devices/section-9-hvac/fan.js.map +1 -1
  58. package/dist/devices/section-9-hvac/thermostat.d.ts +7 -0
  59. package/dist/devices/section-9-hvac/thermostat.js +21 -25
  60. package/dist/devices/section-9-hvac/thermostat.js.map +1 -1
  61. package/package.json +3 -3
@@ -4,16 +4,21 @@
4
4
  * Handles multiple variants:
5
5
  * - Window Blind: Standard lift-only window covering
6
6
  * - Venetian Blind: Window covering with both lift and tilt control
7
+ *
8
+ * For comprehensive documentation, see: ../../../MATTER_API.md
9
+ *
10
+ * This example demonstrates:
11
+ * - WindowCovering cluster for motorized blinds/shades
12
+ * - Multiple control commands (lift, tilt, stop)
13
+ * - Position tracking in hundredths of percent
7
14
  */
8
15
  export function registerWindowCovering(context) {
9
16
  const { api, log, config } = context;
10
17
  const accessories = [];
11
18
  // Variant 1: Window Blind (lift only)
12
19
  if (config.enableWindowBlind) {
13
- // Generate UUID once and reuse in handlers
14
- const windowBlindUuid = api.matter.uuid.generate('matter-window-blind');
15
20
  accessories.push({
16
- uuid: windowBlindUuid,
21
+ uuid: api.matter.uuid.generate('matter-window-blind'),
17
22
  displayName: 'Window Blind',
18
23
  deviceType: api.matter.deviceTypes.WindowCovering,
19
24
  serialNumber: 'BLIND-001',
@@ -48,28 +53,20 @@ export function registerWindowCovering(context) {
48
53
  windowCovering: {
49
54
  goToLiftPercentage: async (request) => {
50
55
  const percent = (request.targetPercent / 100).toFixed(0);
51
- log.info(`[Window Blind] Handler \`goToLiftPercentage\` called: ${request.targetPercent} (${percent}% open)`);
52
- return api.matter.updateAccessoryState(windowBlindUuid, api.matter.clusterNames.WindowCovering, {
53
- currentPositionLiftPercent100ths: request.targetPercent,
54
- targetPositionLiftPercent100ths: request.targetPercent,
55
- });
56
+ log.info(`[Window Blind] Moving to ${percent}% open`);
57
+ // TODO: await myBlindAPI.setPosition(percent)
56
58
  },
57
59
  upOrOpen: async () => {
58
- log.info('[Window Blind] ✓ Handler `upOrOpen` called - Opening blind');
59
- return api.matter.updateAccessoryState(windowBlindUuid, api.matter.clusterNames.WindowCovering, {
60
- currentPositionLiftPercent100ths: 10000, // Fully open
61
- targetPositionLiftPercent100ths: 10000,
62
- });
60
+ log.info('[Window Blind] Opening blind');
61
+ // TODO: await myBlindAPI.open()
63
62
  },
64
63
  downOrClose: async () => {
65
- log.info('[Window Blind] ✓ Handler `downOrClose` called - Closing blind');
66
- return api.matter.updateAccessoryState(windowBlindUuid, api.matter.clusterNames.WindowCovering, {
67
- currentPositionLiftPercent100ths: 0, // Fully closed
68
- targetPositionLiftPercent100ths: 0,
69
- });
64
+ log.info('[Window Blind] Closing blind');
65
+ // TODO: await myBlindAPI.close()
70
66
  },
71
67
  stopMotion: async () => {
72
- log.info('[Window Blind] ✓ Handler `stopMotion` called - Stopping blind');
68
+ log.info('[Window Blind] Stopping blind');
69
+ // TODO: await myBlindAPI.stop()
73
70
  },
74
71
  },
75
72
  },
@@ -77,10 +74,8 @@ export function registerWindowCovering(context) {
77
74
  }
78
75
  // Variant 2: Venetian Blind (lift + tilt)
79
76
  if (config.enableVenetianBlind) {
80
- // Generate UUID once and reuse in handlers
81
- const venetianBlindUuid = api.matter.uuid.generate('matter-venetian-blind');
82
77
  accessories.push({
83
- uuid: venetianBlindUuid,
78
+ uuid: api.matter.uuid.generate('matter-venetian-blind'),
84
79
  displayName: 'Venetian Blind (Tilt)',
85
80
  deviceType: api.matter.deviceTypes.WindowCovering,
86
81
  serialNumber: 'BLIND-002',
@@ -118,36 +113,25 @@ export function registerWindowCovering(context) {
118
113
  windowCovering: {
119
114
  goToLiftPercentage: async (request) => {
120
115
  const percent = (request.targetPercent / 100).toFixed(0);
121
- log.info(`[Venetian Blind] Handler \`goToLiftPercentage\` called: ${request.targetPercent} (${percent}% open)`);
122
- return api.matter.updateAccessoryState(venetianBlindUuid, api.matter.clusterNames.WindowCovering, {
123
- currentPositionLiftPercent100ths: request.targetPercent,
124
- targetPositionLiftPercent100ths: request.targetPercent,
125
- });
116
+ log.info(`[Venetian Blind] Moving to ${percent}% open`);
117
+ // TODO: await myBlindAPI.setLiftPosition(percent)
126
118
  },
127
119
  goToTiltPercentage: async (request) => {
128
120
  const percent = (request.targetPercent / 100).toFixed(0);
129
- log.info(`[Venetian Blind] Handler \`goToTiltPercentage\` called: ${request.targetPercent} (${percent}% tilted)`);
130
- return api.matter.updateAccessoryState(venetianBlindUuid, api.matter.clusterNames.WindowCovering, {
131
- currentPositionTiltPercent100ths: request.targetPercent,
132
- targetPositionTiltPercent100ths: request.targetPercent,
133
- });
121
+ log.info(`[Venetian Blind] Tilting to ${percent}%`);
122
+ // TODO: await myBlindAPI.setTiltAngle(percent)
134
123
  },
135
124
  upOrOpen: async () => {
136
- log.info('[Venetian Blind] ✓ Handler `upOrOpen` called - Opening blind');
137
- return api.matter.updateAccessoryState(venetianBlindUuid, api.matter.clusterNames.WindowCovering, {
138
- currentPositionLiftPercent100ths: 10000, // Fully open
139
- targetPositionLiftPercent100ths: 10000,
140
- });
125
+ log.info('[Venetian Blind] Opening blind');
126
+ // TODO: await myBlindAPI.open()
141
127
  },
142
128
  downOrClose: async () => {
143
- log.info('[Venetian Blind] ✓ Handler `downOrClose` called - Closing blind');
144
- return api.matter.updateAccessoryState(venetianBlindUuid, api.matter.clusterNames.WindowCovering, {
145
- currentPositionLiftPercent100ths: 0, // Fully closed
146
- targetPositionLiftPercent100ths: 0,
147
- });
129
+ log.info('[Venetian Blind] Closing blind');
130
+ // TODO: await myBlindAPI.close()
148
131
  },
149
132
  stopMotion: async () => {
150
- log.info('[Venetian Blind] ✓ Handler `stopMotion` called - Stopping blind');
133
+ log.info('[Venetian Blind] Stopping blind');
134
+ // TODO: await myBlindAPI.stop()
151
135
  },
152
136
  },
153
137
  },
@@ -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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"}
@@ -2,6 +2,13 @@
2
2
  * Fan Device (Matter Spec § 9.2)
3
3
  *
4
4
  * A fan with speed control and mode selection.
5
+ *
6
+ * For comprehensive documentation, see: ../../../MATTER_API.md
7
+ *
8
+ * This example demonstrates:
9
+ * - FanControl cluster with multiple control methods
10
+ * - Using api.matter.types for fan modes and sequences
11
+ * - Speed percentage and mode-based control
5
12
  */
6
13
  import type { DeviceContext } from '../types.js';
7
14
  export declare function registerFan(context: DeviceContext): any[];
@@ -2,6 +2,13 @@
2
2
  * Fan Device (Matter Spec § 9.2)
3
3
  *
4
4
  * A fan with speed control and mode selection.
5
+ *
6
+ * For comprehensive documentation, see: ../../../MATTER_API.md
7
+ *
8
+ * This example demonstrates:
9
+ * - FanControl cluster with multiple control methods
10
+ * - Using api.matter.types for fan modes and sequences
11
+ * - Speed percentage and mode-based control
5
12
  */
6
13
  export function registerFan(context) {
7
14
  const { api, log, config } = context;
@@ -18,43 +25,30 @@ export function registerFan(context) {
18
25
  model: 'Fan v1',
19
26
  clusters: {
20
27
  fanControl: {
21
- // Fan mode using api.matter.types enum for type safety
22
- fanMode: api.matter.types.FanControl.FanMode.Off, // Initial state: Off
23
- // Fan mode sequence: defines which modes this fan supports
24
- // 0=OffLowMedHigh, 1=OffLowHigh, 2=OffLowMedHighAuto, 3=OffLowHighAuto, 4=OffOnAuto, 5=OffOn
25
- fanModeSequence: api.matter.types.FanControl.FanModeSequence.OffLowMedHigh, // 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)
28
+ fanMode: api.matter.types.FanControl.FanMode.Off,
29
+ fanModeSequence: api.matter.types.FanControl.FanModeSequence.OffLowMedHigh,
30
+ percentSetting: 0,
31
+ percentCurrent: 0,
30
32
  speedSetting: 0,
31
33
  speedCurrent: 0,
32
34
  },
33
35
  },
34
36
  handlers: {
35
37
  fanControl: {
36
- // Called when user adjusts the speed slider
37
38
  setPercentSetting: async (request) => {
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
+ log.info(`[Fan] Setting speed to ${request.percentSetting}%`);
40
+ // TODO: await myFanAPI.setSpeed(request.percentSetting)
41
41
  },
42
- // Called when user selects a specific mode (Off, Low, Medium, High, Auto, etc.)
43
42
  setFanMode: async (request) => {
44
43
  const modes = ['Off', 'Low', 'Medium', 'High', 'On', 'Auto', 'Smart'];
45
44
  const modeName = modes[request.fanMode] || `Unknown (${request.fanMode})`;
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
+ log.info(`[Fan] Setting mode to ${modeName}`);
46
+ // TODO: await myFanAPI.setMode(modeName.toLowerCase())
49
47
  },
50
- // Called when user uses up/down buttons to increment/decrement speed
51
48
  step: async (request) => {
52
49
  const dir = request.direction === 0 ? 'Up' : 'Down';
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
+ log.info(`[Fan] Step ${dir}`);
51
+ // TODO: await myFanAPI.step(request.direction, request.wrap, request.lowestOff)
58
52
  },
59
53
  },
60
54
  },
@@ -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,uDAAuD;gBACvD,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,qBAAqB;gBAEvE,2DAA2D;gBAC3D,6FAA6F;gBAC7F,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,aAAa,EAAE,mCAAmC;gBAE/G,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"}
1
+ {"version":3,"file":"fan.js","sourceRoot":"","sources":["../../../src/devices/section-9-hvac/fan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;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,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG;gBAChD,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,aAAa;gBAC1E,cAAc,EAAE,CAAC;gBACjB,cAAc,EAAE,CAAC;gBACjB,YAAY,EAAE,CAAC;gBACf,YAAY,EAAE,CAAC;aAChB;SACF;QAED,QAAQ,EAAE;YACR,UAAU,EAAE;gBACV,iBAAiB,EAAE,KAAK,EAAE,OAAmC,EAAE,EAAE;oBAC/D,GAAG,CAAC,IAAI,CAAC,0BAA0B,OAAO,CAAC,cAAc,GAAG,CAAC,CAAA;oBAC7D,wDAAwD;gBAC1D,CAAC;gBAED,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,yBAAyB,QAAQ,EAAE,CAAC,CAAA;oBAC7C,uDAAuD;gBACzD,CAAC;gBAED,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,cAAc,GAAG,EAAE,CAAC,CAAA;oBAC7B,gFAAgF;gBAClF,CAAC;aACF;SACF;KACF,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC"}
@@ -2,6 +2,13 @@
2
2
  * Thermostat Device (Matter Spec § 9.1)
3
3
  *
4
4
  * A device for controlling heating and cooling systems.
5
+ *
6
+ * For comprehensive documentation, see: ../../../MATTER_API.md
7
+ *
8
+ * This example demonstrates:
9
+ * - Thermostat cluster with heating/cooling setpoints
10
+ * - Using api.matter.types for system modes
11
+ * - Temperature in hundredths of degrees Celsius
5
12
  */
6
13
  import type { DeviceContext } from '../types.js';
7
14
  export declare function registerThermostat(context: DeviceContext): any[];
@@ -2,6 +2,13 @@
2
2
  * Thermostat Device (Matter Spec § 9.1)
3
3
  *
4
4
  * A device for controlling heating and cooling systems.
5
+ *
6
+ * For comprehensive documentation, see: ../../../MATTER_API.md
7
+ *
8
+ * This example demonstrates:
9
+ * - Thermostat cluster with heating/cooling setpoints
10
+ * - Using api.matter.types for system modes
11
+ * - Temperature in hundredths of degrees Celsius
5
12
  */
6
13
  export function registerThermostat(context) {
7
14
  const { api, log, config } = context;
@@ -18,45 +25,34 @@ export function registerThermostat(context) {
18
25
  model: 'Thermostat v1',
19
26
  clusters: {
20
27
  thermostat: {
21
- // Current temperature (in hundredths of degrees Celsius)
22
- localTemperature: 2100, // 21.00°C (2100 / 100 = 21.0)
23
- // Heating setpoint (target temperature in heat mode)
24
- occupiedHeatingSetpoint: 2000, // Target: 20.00°C
25
- minHeatSetpointLimit: 700, // Minimum: 7°C
26
- maxHeatSetpointLimit: 3000, // Maximum: 30°C
27
- // Cooling setpoint (target temperature in cool mode)
28
- occupiedCoolingSetpoint: 2400, // Target: 24.00°C
29
- minCoolSetpointLimit: 1600, // Minimum: 16°C
30
- maxCoolSetpointLimit: 3200, // Maximum: 32°C
31
- // System mode using MatterTypes enum for type safety
32
- systemMode: api.matter.types.Thermostat.SystemMode.Heat, // Currently in Heat mode
33
- // Control sequence: defines what modes are available (mandatory)
28
+ localTemperature: 2100, // 21.00°C
29
+ occupiedHeatingSetpoint: 2000, // 20.00°C
30
+ minHeatSetpointLimit: 700,
31
+ maxHeatSetpointLimit: 3000,
32
+ occupiedCoolingSetpoint: 2400, // 24.00°C
33
+ minCoolSetpointLimit: 1600,
34
+ maxCoolSetpointLimit: 3200,
35
+ systemMode: api.matter.types.Thermostat.SystemMode.Heat,
34
36
  controlSequenceOfOperation: api.matter.types.Thermostat.ControlSequenceOfOperation.CoolingAndHeating,
35
37
  },
36
38
  },
37
39
  handlers: {
38
40
  thermostat: {
39
- // Called when user changes the heating target temperature
40
41
  setOccupiedHeatingSetpoint: async (request) => {
41
42
  const tempC = (request.targetSetpoint / 100).toFixed(1);
42
- log.info(`[Thermostat] Handler \`setOccupiedHeatingSetpoint\` called: ${request.targetSetpoint} (${tempC}°C)`);
43
- // TODO: Add your actual thermostat control logic here
44
- // Example: await myThermostatAPI.setHeatingTarget(parseFloat(tempC))
43
+ log.info(`[Thermostat] Setting heating target to ${tempC}°C`);
44
+ // TODO: await myThermostatAPI.setHeatingTarget(parseFloat(tempC))
45
45
  },
46
- // Called when user changes the cooling target temperature
47
46
  setOccupiedCoolingSetpoint: async (request) => {
48
47
  const tempC = (request.targetSetpoint / 100).toFixed(1);
49
- log.info(`[Thermostat] Handler \`setOccupiedCoolingSetpoint\` called: ${request.targetSetpoint} (${tempC}°C)`);
50
- // TODO: Add your actual thermostat control logic here
51
- // Example: await myThermostatAPI.setCoolingTarget(parseFloat(tempC))
48
+ log.info(`[Thermostat] Setting cooling target to ${tempC}°C`);
49
+ // TODO: await myThermostatAPI.setCoolingTarget(parseFloat(tempC))
52
50
  },
53
- // Called when user changes the system mode (Off, Auto, Cool, Heat, etc.)
54
51
  setSystemMode: async (request) => {
55
52
  const modes = ['Off', 'Auto', 'Reserved', 'Cool', 'Heat', 'Emergency Heating', 'Precooling', 'Fan Only'];
56
53
  const modeName = modes[request.systemMode] || `Unknown (${request.systemMode})`;
57
- log.info(`[Thermostat] Handler \`setSystemMode\` called: ${request.systemMode} (${modeName})`);
58
- // TODO: Add your actual thermostat mode control logic here
59
- // Example: await myThermostatAPI.setMode(modeName.toLowerCase())
54
+ log.info(`[Thermostat] Setting mode to ${modeName}`);
55
+ // TODO: await myThermostatAPI.setMode(modeName.toLowerCase())
60
56
  },
61
57
  },
62
58
  },
@@ -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,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,qDAAqD;gBACrD,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,yBAAyB;gBAElF,iEAAiE;gBACjE,0BAA0B,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,0BAA0B,CAAC,iBAAiB;aACrG;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"}
1
+ {"version":3,"file":"thermostat.js","sourceRoot":"","sources":["../../../src/devices/section-9-hvac/thermostat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;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,gBAAgB,EAAE,IAAI,EAAE,UAAU;gBAClC,uBAAuB,EAAE,IAAI,EAAE,UAAU;gBACzC,oBAAoB,EAAE,GAAG;gBACzB,oBAAoB,EAAE,IAAI;gBAC1B,uBAAuB,EAAE,IAAI,EAAE,UAAU;gBACzC,oBAAoB,EAAE,IAAI;gBAC1B,oBAAoB,EAAE,IAAI;gBAC1B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI;gBACvD,0BAA0B,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,0BAA0B,CAAC,iBAAiB;aACrG;SACF;QAED,QAAQ,EAAE;YACR,UAAU,EAAE;gBACV,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,0CAA0C,KAAK,IAAI,CAAC,CAAA;oBAC7D,kEAAkE;gBACpE,CAAC;gBAED,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,0CAA0C,KAAK,IAAI,CAAC,CAAA;oBAC7D,kEAAkE;gBACpE,CAAC;gBAED,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,gCAAgC,QAAQ,EAAE,CAAC,CAAA;oBACpD,8DAA8D;gBAChE,CAAC;aACF;SACF;KACF,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC"}
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.3",
6
+ "version": "0.1.4",
7
7
  "description": "Homebridge plugin to showcase examples of Matter devices in Homebridge.",
8
8
  "author": {
9
9
  "name": "bwp91",
@@ -49,7 +49,7 @@
49
49
  "main": "dist/index.js",
50
50
  "engines": {
51
51
  "node": "^20.18.0 || ^22.10.0 || ^24.0.0",
52
- "homebridge": ">=2.0.0-alpha.62 <2.0.0-beta.0"
52
+ "homebridge": ">=2.0.0-alpha.64 <2.0.0-beta.0"
53
53
  },
54
54
  "scripts": {
55
55
  "build": "rimraf ./dist && tsc && npm run plugin-ui",
@@ -65,7 +65,7 @@
65
65
  "devDependencies": {
66
66
  "@antfu/eslint-config": "^6.0.0",
67
67
  "@types/node": "^24.9.1",
68
- "homebridge": "2.0.0-alpha.62",
68
+ "homebridge": "2.0.0-alpha.64",
69
69
  "rimraf": "^6.0.1",
70
70
  "ts-node": "^10.9.2",
71
71
  "typescript": "^5.9.3"