@homebridge-plugins/homebridge-matter 0.4.1 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +2 -1
  3. package/config.schema.json +8 -1
  4. package/dist/devices/AirQualitySensorAccessory.d.ts +50 -0
  5. package/dist/devices/AirQualitySensorAccessory.js +130 -0
  6. package/dist/devices/AirQualitySensorAccessory.js.map +1 -0
  7. package/dist/devices/BaseMatterAccessory.d.ts +1 -1
  8. package/dist/devices/ColorLightAccessory.d.ts +3 -3
  9. package/dist/devices/ColorLightAccessory.js +41 -6
  10. package/dist/devices/ColorLightAccessory.js.map +1 -1
  11. package/dist/devices/ColorTemperatureLightAccessory.d.ts +3 -3
  12. package/dist/devices/ColorTemperatureLightAccessory.js +19 -6
  13. package/dist/devices/ColorTemperatureLightAccessory.js.map +1 -1
  14. package/dist/devices/ContactSensorAccessory.d.ts +1 -1
  15. package/dist/devices/ContactSensorAccessory.js +2 -2
  16. package/dist/devices/ContactSensorAccessory.js.map +1 -1
  17. package/dist/devices/DimmableLightAccessory.d.ts +3 -3
  18. package/dist/devices/DimmableLightAccessory.js +23 -7
  19. package/dist/devices/DimmableLightAccessory.js.map +1 -1
  20. package/dist/devices/DoorLockAccessory.d.ts +1 -1
  21. package/dist/devices/DoorLockAccessory.js +37 -2
  22. package/dist/devices/DoorLockAccessory.js.map +1 -1
  23. package/dist/devices/ExtendedColorLightAccessory.d.ts +3 -3
  24. package/dist/devices/ExtendedColorLightAccessory.js +24 -6
  25. package/dist/devices/ExtendedColorLightAccessory.js.map +1 -1
  26. package/dist/devices/FanAccessory.d.ts +2 -2
  27. package/dist/devices/FanAccessory.js +36 -4
  28. package/dist/devices/FanAccessory.js.map +1 -1
  29. package/dist/devices/HumiditySensorAccessory.d.ts +1 -1
  30. package/dist/devices/HumiditySensorAccessory.js +2 -2
  31. package/dist/devices/HumiditySensorAccessory.js.map +1 -1
  32. package/dist/devices/LeakSensorAccessory.d.ts +1 -1
  33. package/dist/devices/LeakSensorAccessory.js +2 -2
  34. package/dist/devices/LeakSensorAccessory.js.map +1 -1
  35. package/dist/devices/LightSensorAccessory.d.ts +1 -1
  36. package/dist/devices/LightSensorAccessory.js +2 -2
  37. package/dist/devices/LightSensorAccessory.js.map +1 -1
  38. package/dist/devices/OccupancySensorAccessory.d.ts +1 -1
  39. package/dist/devices/OccupancySensorAccessory.js +3 -4
  40. package/dist/devices/OccupancySensorAccessory.js.map +1 -1
  41. package/dist/devices/OnOffLightAccessory.d.ts +1 -1
  42. package/dist/devices/OnOffLightAccessory.js +18 -2
  43. package/dist/devices/OnOffLightAccessory.js.map +1 -1
  44. package/dist/devices/OnOffOutletAccessory.d.ts +1 -1
  45. package/dist/devices/OnOffOutletAccessory.js +18 -2
  46. package/dist/devices/OnOffOutletAccessory.js.map +1 -1
  47. package/dist/devices/OnOffSwitchAccessory.d.ts +1 -1
  48. package/dist/devices/OnOffSwitchAccessory.js +14 -2
  49. package/dist/devices/OnOffSwitchAccessory.js.map +1 -1
  50. package/dist/devices/RoboticVacuumAccessory.d.ts +6 -6
  51. package/dist/devices/RoboticVacuumAccessory.js +65 -25
  52. package/dist/devices/RoboticVacuumAccessory.js.map +1 -1
  53. package/dist/devices/SmokeCOAlarmAccessory.d.ts +2 -2
  54. package/dist/devices/SmokeCOAlarmAccessory.js +5 -6
  55. package/dist/devices/SmokeCOAlarmAccessory.js.map +1 -1
  56. package/dist/devices/TemperatureSensorAccessory.d.ts +1 -1
  57. package/dist/devices/TemperatureSensorAccessory.js +2 -2
  58. package/dist/devices/TemperatureSensorAccessory.js.map +1 -1
  59. package/dist/devices/ThermostatAccessory.d.ts +4 -4
  60. package/dist/devices/ThermostatAccessory.js +39 -8
  61. package/dist/devices/ThermostatAccessory.js.map +1 -1
  62. package/dist/devices/VenetianBlindAccessory.d.ts +2 -2
  63. package/dist/devices/VenetianBlindAccessory.js +22 -5
  64. package/dist/devices/VenetianBlindAccessory.js.map +1 -1
  65. package/dist/devices/WindowBlindAccessory.d.ts +1 -1
  66. package/dist/devices/WindowBlindAccessory.js +25 -4
  67. package/dist/devices/WindowBlindAccessory.js.map +1 -1
  68. package/dist/devices/custom/PowerStripAccessory.d.ts +2 -2
  69. package/dist/devices/custom/PowerStripAccessory.js +41 -8
  70. package/dist/devices/custom/PowerStripAccessory.js.map +1 -1
  71. package/dist/devices/index.d.ts +1 -0
  72. package/dist/devices/index.js +1 -0
  73. package/dist/devices/index.js.map +1 -1
  74. package/dist/homebridge-ui/public/index.html +1 -0
  75. package/dist/platform.js +7 -1
  76. package/dist/platform.js.map +1 -1
  77. package/package.json +6 -6
package/CHANGELOG.md CHANGED
@@ -2,6 +2,19 @@
2
2
 
3
3
  All notable changes to `@homebridge-plugins/homebridge-matter` will be documented in this file.
4
4
 
5
+ ## v0.6.0 (2025-11-07)
6
+
7
+ ### Changes
8
+
9
+ - add example for air quality sensor
10
+ - update device examples to use `async/await` syntax
11
+
12
+ ## v0.5.0 (2025-11-02)
13
+
14
+ ### Changes
15
+
16
+ - added examples of correct error handling
17
+
5
18
  ## v0.4.1 (2025-10-28)
6
19
 
7
20
  ### Changes
package/README.md CHANGED
@@ -29,7 +29,7 @@ This plugin provides example implementations of Matter device types in Homebridg
29
29
 
30
30
  - To use this plugin, you will need to already have:
31
31
  - [Node](https://nodejs.org): latest version of `v20`, `v22` or `v24` - any other major version is not supported.
32
- - [Homebridge](https://homebridge.io): `>=2.0.0-beta.38` - refer to link for more information and installation instructions.
32
+ - [Homebridge](https://homebridge.io): `>=2.0.0-beta.50` - refer to link for more information and installation instructions.
33
33
 
34
34
  ### Getting Started
35
35
 
@@ -43,6 +43,7 @@ This plugin provides example implementations of Matter device types in Homebridg
43
43
  - [Getting Started](https://github.com/homebridge-plugins/homebridge-matter/wiki/Getting-Started)
44
44
  - [State Management](https://github.com/homebridge-plugins/homebridge-matter/wiki/State-Management)
45
45
  - [Monitoring External Changes](https://github.com/homebridge-plugins/homebridge-matter/wiki/Monitoring-External-Changes)
46
+ - [Error Handling](https://github.com/homebridge-plugins/homebridge-matter/wiki/Error-Handling)
46
47
  - [Best Practices](https://github.com/homebridge-plugins/homebridge-matter/wiki/Best-Practices)
47
48
  - [Advanced Patterns](https://github.com/homebridge-plugins/homebridge-matter/wiki/Advanced-Patterns)
48
49
 
@@ -58,6 +58,12 @@
58
58
  "default": false,
59
59
  "description": "Enable the on/off light switch example accessory (Matter Spec § 6.1)."
60
60
  },
61
+ "enableAirQualitySensor": {
62
+ "title": "Enable Air Quality Sensor",
63
+ "type": "boolean",
64
+ "default": false,
65
+ "description": "Enable the air quality sensor example accessory (Matter Spec § 7.6). Monitors air quality, PM2.5, PM10, temperature, and humidity."
66
+ },
61
67
  "enableContactSensor": {
62
68
  "title": "Enable Contact Sensor",
63
69
  "type": "boolean",
@@ -187,10 +193,11 @@
187
193
  {
188
194
  "type": "fieldset",
189
195
  "title": "Section 7: Sensors",
190
- "description": "Matter Specification § 7 - All sensor types (7 devices implemented).",
196
+ "description": "Matter Specification § 7 - All sensor types (8 devices implemented).",
191
197
  "expandable": true,
192
198
  "expanded": false,
193
199
  "items": [
200
+ "enableAirQualitySensor",
194
201
  "enableContactSensor",
195
202
  "enableLightSensor",
196
203
  "enableOccupancySensor",
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Air Quality Sensor Accessory Class
3
+ *
4
+ * This device combines multiple environmental sensors commonly found in air quality monitors:
5
+ * - Air Quality (overall rating)
6
+ * - PM2.5 (fine particulate matter)
7
+ * - PM10 (coarse particulate matter)
8
+ * - Temperature
9
+ * - Relative Humidity
10
+ */
11
+ import type { API, Logger } from 'homebridge';
12
+ import { BaseMatterAccessory } from './BaseMatterAccessory.js';
13
+ export declare class AirQualitySensorAccessory extends BaseMatterAccessory {
14
+ constructor(api: API, log: Logger);
15
+ /**
16
+ * Update the overall air quality rating
17
+ * @param quality 0 = Unknown, 1 = Good, 2 = Fair, 3 = Moderate, 4 = Poor, 5 = VeryPoor, 6 = ExtremelyPoor
18
+ */
19
+ updateAirQuality(quality: 0 | 1 | 2 | 3 | 4 | 5 | 6): Promise<void>;
20
+ /**
21
+ * Update PM2.5 concentration
22
+ * @param value Concentration in µg/m³ (micrograms per cubic meter)
23
+ */
24
+ updatePM25(value: number): Promise<void>;
25
+ /**
26
+ * Update PM10 concentration
27
+ * @param value Concentration in µg/m³ (micrograms per cubic meter)
28
+ */
29
+ updatePM10(value: number): Promise<void>;
30
+ /**
31
+ * Update temperature
32
+ * @param celsius Temperature in degrees Celsius
33
+ */
34
+ updateTemperature(celsius: number): Promise<void>;
35
+ /**
36
+ * Update relative humidity
37
+ * @param percent Humidity as a percentage (0-100)
38
+ */
39
+ updateHumidity(percent: number): Promise<void>;
40
+ /**
41
+ * Update all sensor values at once
42
+ */
43
+ updateAllValues(values: {
44
+ airQuality?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
45
+ pm25?: number;
46
+ pm10?: number;
47
+ temperature?: number;
48
+ humidity?: number;
49
+ }): Promise<void>;
50
+ }
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Air Quality Sensor Accessory Class
3
+ *
4
+ * This device combines multiple environmental sensors commonly found in air quality monitors:
5
+ * - Air Quality (overall rating)
6
+ * - PM2.5 (fine particulate matter)
7
+ * - PM10 (coarse particulate matter)
8
+ * - Temperature
9
+ * - Relative Humidity
10
+ */
11
+ import { BaseMatterAccessory } from './BaseMatterAccessory.js';
12
+ export class AirQualitySensorAccessory extends BaseMatterAccessory {
13
+ constructor(api, log) {
14
+ const serialNumber = 'SENSOR-007';
15
+ super(api, log, {
16
+ uuid: api.matter.uuid.generate(serialNumber),
17
+ displayName: 'Air Quality Sensor',
18
+ deviceType: api.matter.deviceTypes.AirQualitySensor,
19
+ serialNumber,
20
+ manufacturer: 'Homebridge Matter',
21
+ model: 'HB-MATTER-SENSOR-AIR-QUALITY',
22
+ firmwareRevision: '1.0.0',
23
+ hardwareRevision: '1.0.0',
24
+ clusters: {
25
+ // Overall air quality rating
26
+ // 0 = Unknown, 1 = Good, 2 = Fair, 3 = Moderate, 4 = Poor, 5 = VeryPoor, 6 = ExtremelyPoor
27
+ airQuality: {
28
+ airQuality: 1, // Default: Good
29
+ },
30
+ // Note: the only cluster that appears in the Home app is the Air Quality cluster.
31
+ // The other measurements can be accessed by other Matter-compatible apps.
32
+ // PM2.5 - Fine particulate matter (≤2.5 micrometers)
33
+ // Values in µg/m³ (micrograms per cubic meter)
34
+ pm25ConcentrationMeasurement: {
35
+ measuredValue: 12, // 12 µg/m³ (Good air quality)
36
+ minMeasuredValue: 0,
37
+ maxMeasuredValue: 1000,
38
+ measurementUnit: 0, // 0 = µg/m³
39
+ measurementMedium: 0, // 0 = Air
40
+ },
41
+ // PM10 - Coarse particulate matter (≤10 micrometers)
42
+ // Values in µg/m³
43
+ pm10ConcentrationMeasurement: {
44
+ measuredValue: 25, // 25 µg/m³ (Good air quality)
45
+ minMeasuredValue: 0,
46
+ maxMeasuredValue: 1000,
47
+ measurementUnit: 0, // 0 = µg/m³
48
+ measurementMedium: 0, // 0 = Air
49
+ },
50
+ // Temperature measurement (in hundredths of °C)
51
+ temperatureMeasurement: {
52
+ measuredValue: 2100, // 21.00°C
53
+ minMeasuredValue: -5000, // -50°C
54
+ maxMeasuredValue: 10000, // 100°C
55
+ },
56
+ // Relative humidity (in hundredths of a percent)
57
+ relativeHumidityMeasurement: {
58
+ measuredValue: 5500, // 55%
59
+ minMeasuredValue: 0,
60
+ maxMeasuredValue: 10000, // 100%
61
+ },
62
+ },
63
+ });
64
+ this.logInfo('initialized.');
65
+ }
66
+ /**
67
+ * Update the overall air quality rating
68
+ * @param quality 0 = Unknown, 1 = Good, 2 = Fair, 3 = Moderate, 4 = Poor, 5 = VeryPoor, 6 = ExtremelyPoor
69
+ */
70
+ async updateAirQuality(quality) {
71
+ await this.updateState('airQuality', { airQuality: quality });
72
+ const qualityStr = ['Unknown', 'Good', 'Fair', 'Moderate', 'Poor', 'Very Poor', 'Extremely Poor'][quality];
73
+ this.logInfo(`air quality: ${qualityStr}.`);
74
+ }
75
+ /**
76
+ * Update PM2.5 concentration
77
+ * @param value Concentration in µg/m³ (micrograms per cubic meter)
78
+ */
79
+ async updatePM25(value) {
80
+ await this.updateState('pm25ConcentrationMeasurement', { measuredValue: value });
81
+ this.logInfo(`PM2.5: ${value} µg/m³.`);
82
+ }
83
+ /**
84
+ * Update PM10 concentration
85
+ * @param value Concentration in µg/m³ (micrograms per cubic meter)
86
+ */
87
+ async updatePM10(value) {
88
+ await this.updateState('pm10ConcentrationMeasurement', { measuredValue: value });
89
+ this.logInfo(`PM10: ${value} µg/m³.`);
90
+ }
91
+ /**
92
+ * Update temperature
93
+ * @param celsius Temperature in degrees Celsius
94
+ */
95
+ async updateTemperature(celsius) {
96
+ const value = Math.round(celsius * 100); // convert to hundredths
97
+ await this.updateState('temperatureMeasurement', { measuredValue: value });
98
+ this.logInfo(`temperature: ${celsius}°C.`);
99
+ }
100
+ /**
101
+ * Update relative humidity
102
+ * @param percent Humidity as a percentage (0-100)
103
+ */
104
+ async updateHumidity(percent) {
105
+ const value = Math.round(percent * 100); // convert to hundredths
106
+ await this.updateState('relativeHumidityMeasurement', { measuredValue: value });
107
+ this.logInfo(`humidity: ${percent}%.`);
108
+ }
109
+ /**
110
+ * Update all sensor values at once
111
+ */
112
+ async updateAllValues(values) {
113
+ if (values.airQuality !== undefined) {
114
+ await this.updateAirQuality(values.airQuality);
115
+ }
116
+ if (values.pm25 !== undefined) {
117
+ await this.updatePM25(values.pm25);
118
+ }
119
+ if (values.pm10 !== undefined) {
120
+ await this.updatePM10(values.pm10);
121
+ }
122
+ if (values.temperature !== undefined) {
123
+ await this.updateTemperature(values.temperature);
124
+ }
125
+ if (values.humidity !== undefined) {
126
+ await this.updateHumidity(values.humidity);
127
+ }
128
+ }
129
+ }
130
+ //# sourceMappingURL=AirQualitySensorAccessory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AirQualitySensorAccessory.js","sourceRoot":"","sources":["../../src/devices/AirQualitySensorAccessory.ts"],"names":[],"mappings":"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"}
@@ -41,7 +41,7 @@ export declare abstract class BaseMatterAccessory implements MatterAccessory {
41
41
  readonly parts?: MatterAccessory['parts'];
42
42
  protected readonly api: API;
43
43
  protected readonly log: Logger;
44
- constructor(api: API, log: Logger, config: BaseMatterAccessoryConfig);
44
+ protected constructor(api: API, log: Logger, config: BaseMatterAccessoryConfig);
45
45
  /**
46
46
  * Update the accessory state
47
47
  * Helper method to update cluster attributes
@@ -11,7 +11,7 @@ export declare class ColorLightAccessory extends BaseMatterAccessory {
11
11
  private handleSetLevel;
12
12
  private handleSetColor;
13
13
  private handleSetHueSaturation;
14
- updateOnOffState(isOn: boolean): void;
15
- updateBrightness(percent: number): void;
16
- updateHueSaturation(hue: number, saturation: number): void;
14
+ updateOnOffState(isOn: boolean): Promise<void>;
15
+ updateBrightness(percent: number): Promise<void>;
16
+ updateHueSaturation(hue: number, saturation: number): Promise<void>;
17
17
  }
@@ -48,6 +48,21 @@ export class ColorLightAccessory extends BaseMatterAccessory {
48
48
  }
49
49
  async handleOn() {
50
50
  this.logInfo('turning on.');
51
+ // Example: Check if device is already processing another command
52
+ // if (this.isDeviceBusy) {
53
+ // throw new MatterStatus.Busy('Light is processing another command')
54
+ // }
55
+ // Example: Make API call with timeout
56
+ // try {
57
+ // await this.lightAPI.turnOn({ timeout: 5000 })
58
+ // } catch (error) {
59
+ // // If the API call times out, throw a Timeout error
60
+ // if (error.code === 'ETIMEDOUT') {
61
+ // throw new MatterStatus.Timeout('Light did not respond within 5 seconds')
62
+ // }
63
+ // // For other errors, let Homebridge wrap it as a generic Failure
64
+ // throw error
65
+ // }
51
66
  // TODO: await myLightAPI.turnOn()
52
67
  }
53
68
  async handleOff() {
@@ -59,6 +74,16 @@ export class ColorLightAccessory extends BaseMatterAccessory {
59
74
  const { level } = request;
60
75
  const brightnessPercent = Math.round((level / 254) * 100);
61
76
  this.logInfo(`setting brightness to ${brightnessPercent}%.`);
77
+ // Example: Validate the value meets device constraints
78
+ // if (brightnessPercent < 1 || brightnessPercent > 100) {
79
+ // throw new MatterStatus.ConstraintError(`Brightness ${brightnessPercent}% is out of range (1-100)`)
80
+ // }
81
+ // Example: Check if device supports this brightness level
82
+ // if (brightnessPercent < this.deviceMinBrightness) {
83
+ // throw new MatterStatus.ConstraintError(
84
+ // `Device minimum brightness is ${this.deviceMinBrightness}%`
85
+ // )
86
+ // }
62
87
  // TODO: await myLightAPI.setBrightness(brightnessPercent)
63
88
  }
64
89
  async handleSetColor(request) {
@@ -75,19 +100,29 @@ export class ColorLightAccessory extends BaseMatterAccessory {
75
100
  const hueDegrees = Math.round((hue / 254) * 360);
76
101
  const saturationPercent = Math.round((saturation / 254) * 100);
77
102
  this.logInfo(`setting color to ${hueDegrees}°, ${saturationPercent}%.`);
103
+ // Example: Check if device is in the right mode for color control
104
+ // if (this.currentColorMode !== 'hs') {
105
+ // throw new MatterStatus.InvalidInState(
106
+ // 'Light must be in HS color mode to set hue and saturation'
107
+ // )
108
+ // }
109
+ // Example: Check if light is on before setting color
110
+ // if (!this.isLightOn) {
111
+ // throw new MatterStatus.InvalidInState('Cannot set color while light is off')
112
+ // }
78
113
  // TODO: await myLightAPI.setColor(hueDegrees, saturationPercent, transitionTime)
79
114
  }
80
- updateOnOffState(isOn) {
81
- this.updateState(this.api.matter.clusterNames.OnOff, { onOff: isOn });
115
+ async updateOnOffState(isOn) {
116
+ await this.updateState(this.api.matter.clusterNames.OnOff, { onOff: isOn });
82
117
  }
83
- updateBrightness(percent) {
118
+ async updateBrightness(percent) {
84
119
  const matterLevel = Math.max(1, Math.round((percent / 100) * 254));
85
- this.updateState(this.api.matter.clusterNames.LevelControl, { currentLevel: matterLevel });
120
+ await this.updateState(this.api.matter.clusterNames.LevelControl, { currentLevel: matterLevel });
86
121
  }
87
- updateHueSaturation(hue, saturation) {
122
+ async updateHueSaturation(hue, saturation) {
88
123
  const matterHue = Math.round((hue / 360) * 254);
89
124
  const matterSat = Math.round((saturation / 100) * 254);
90
- this.updateState(this.api.matter.clusterNames.ColorControl, {
125
+ await this.updateState(this.api.matter.clusterNames.ColorControl, {
91
126
  currentHue: matterHue,
92
127
  currentSaturation: matterSat,
93
128
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ColorLightAccessory.js","sourceRoot":"","sources":["../../src/devices/ColorLightAccessory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ColorLightAccessory.js","sourceRoot":"","sources":["../../src/devices/ColorLightAccessory.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ export declare class ColorTemperatureLightAccessory extends BaseMatterAccessory
9
9
  private handleOff;
10
10
  private handleSetLevel;
11
11
  private handleSetColorTemperature;
12
- updateOnOffState(isOn: boolean): void;
13
- updateBrightness(percent: number): void;
14
- updateColorTemperature(kelvin: number): void;
12
+ updateOnOffState(isOn: boolean): Promise<void>;
13
+ updateBrightness(percent: number): Promise<void>;
14
+ updateColorTemperature(kelvin: number): Promise<void>;
15
15
  }
@@ -66,18 +66,31 @@ export class ColorTemperatureLightAccessory extends BaseMatterAccessory {
66
66
  const { colorTemperatureMireds, transitionTime } = request;
67
67
  const kelvin = Math.round(1000000 / colorTemperatureMireds);
68
68
  this.logInfo(`setting color temp to ${kelvin}k (${colorTemperatureMireds} mireds).`);
69
+ // Example: Validate against physical limits defined in cluster
70
+ // const minMireds = 147 // ~6800K (cool daylight)
71
+ // const maxMireds = 454 // ~2200K (warm candlelight)
72
+ // if (colorTemperatureMireds < minMireds) {
73
+ // throw new MatterStatus.ConstraintError(`Color temp ${kelvin}K exceeds maximum 6800K`)
74
+ // }
75
+ // if (colorTemperatureMireds > maxMireds) {
76
+ // throw new MatterStatus.ConstraintError(`Color temp ${kelvin}K below minimum 2200K`)
77
+ // }
78
+ // Example: Check if adjustment requires recalibration
79
+ // if (this.needsRecalibration && Math.abs(colorTemperatureMireds - this.lastMireds) > 100) {
80
+ // throw new MatterStatus.InvalidInState('Large color temp change requires recalibration')
81
+ // }
69
82
  // TODO: await myLightAPI.setColorTemperature(kelvin, transitionTime)
70
83
  }
71
- updateOnOffState(isOn) {
72
- this.updateState(this.api.matter.clusterNames.OnOff, { onOff: isOn });
84
+ async updateOnOffState(isOn) {
85
+ await this.updateState(this.api.matter.clusterNames.OnOff, { onOff: isOn });
73
86
  }
74
- updateBrightness(percent) {
87
+ async updateBrightness(percent) {
75
88
  const matterLevel = Math.max(1, Math.round((percent / 100) * 254));
76
- this.updateState(this.api.matter.clusterNames.LevelControl, { currentLevel: matterLevel });
89
+ await this.updateState(this.api.matter.clusterNames.LevelControl, { currentLevel: matterLevel });
77
90
  }
78
- updateColorTemperature(kelvin) {
91
+ async updateColorTemperature(kelvin) {
79
92
  const mireds = Math.round(1000000 / kelvin);
80
- this.updateState(this.api.matter.clusterNames.ColorControl, { colorTemperatureMireds: mireds });
93
+ await this.updateState(this.api.matter.clusterNames.ColorControl, { colorTemperatureMireds: mireds });
81
94
  }
82
95
  }
83
96
  //# sourceMappingURL=ColorTemperatureLightAccessory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ColorTemperatureLightAccessory.js","sourceRoot":"","sources":["../../src/devices/ColorTemperatureLightAccessory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ColorTemperatureLightAccessory.js","sourceRoot":"","sources":["../../src/devices/ColorTemperatureLightAccessory.ts"],"names":[],"mappings":"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"}
@@ -5,5 +5,5 @@ import type { API, Logger } from 'homebridge';
5
5
  import { BaseMatterAccessory } from './BaseMatterAccessory.js';
6
6
  export declare class ContactSensorAccessory extends BaseMatterAccessory {
7
7
  constructor(api: API, log: Logger);
8
- updateContactState(isOpen: boolean): void;
8
+ updateContactState(isOpen: boolean): Promise<void>;
9
9
  }
@@ -22,9 +22,9 @@ export class ContactSensorAccessory extends BaseMatterAccessory {
22
22
  });
23
23
  this.logInfo('initialized.');
24
24
  }
25
- updateContactState(isOpen) {
25
+ async updateContactState(isOpen) {
26
26
  // Matter BooleanState: false = open/triggered, true = closed/normal (inverted!)
27
- this.updateState(this.api.matter.clusterNames.BooleanState, { stateValue: !isOpen });
27
+ await this.updateState(this.api.matter.clusterNames.BooleanState, { stateValue: !isOpen });
28
28
  this.logInfo(`contact state: ${isOpen ? 'OPEN' : 'CLOSED'}.`);
29
29
  }
30
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ContactSensorAccessory.js","sourceRoot":"","sources":["../../src/devices/ContactSensorAccessory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,MAAM,OAAO,sBAAuB,SAAQ,mBAAmB;IAC7D,YAAY,GAAQ,EAAE,GAAW;QAC/B,MAAM,YAAY,GAAG,YAAY,CAAA;QACjC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;YACd,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC5C,WAAW,EAAE,gBAAgB;YAC7B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa;YAChD,YAAY;YACZ,YAAY,EAAE,mBAAmB;YACjC,KAAK,EAAE,0BAA0B;YACjC,gBAAgB,EAAE,OAAO;YACzB,gBAAgB,EAAE,OAAO;YAEzB,QAAQ,EAAE;gBACR,YAAY,EAAE;oBACZ,UAAU,EAAE,IAAI,EAAE,uDAAuD;iBAC1E;aACF;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IAC9B,CAAC;IAEM,kBAAkB,CAAC,MAAe;QACvC,gFAAgF;QAChF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,CAAC,MAAM,EAAE,CAAC,CAAA;QACpF,IAAI,CAAC,OAAO,CAAC,kBAAkB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAA;IAC/D,CAAC;CACF"}
1
+ {"version":3,"file":"ContactSensorAccessory.js","sourceRoot":"","sources":["../../src/devices/ContactSensorAccessory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,MAAM,OAAO,sBAAuB,SAAQ,mBAAmB;IAC7D,YAAY,GAAQ,EAAE,GAAW;QAC/B,MAAM,YAAY,GAAG,YAAY,CAAA;QACjC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;YACd,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC5C,WAAW,EAAE,gBAAgB;YAC7B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa;YAChD,YAAY;YACZ,YAAY,EAAE,mBAAmB;YACjC,KAAK,EAAE,0BAA0B;YACjC,gBAAgB,EAAE,OAAO;YACzB,gBAAgB,EAAE,OAAO;YAEzB,QAAQ,EAAE;gBACR,YAAY,EAAE;oBACZ,UAAU,EAAE,IAAI,EAAE,uDAAuD;iBAC1E;aACF;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IAC9B,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAAC,MAAe;QAC7C,gFAAgF;QAChF,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,CAAC,MAAM,EAAE,CAAC,CAAA;QAC1F,IAAI,CAAC,OAAO,CAAC,kBAAkB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAA;IAC/D,CAAC;CACF"}
@@ -33,12 +33,12 @@ export declare class DimmableLightAccessory extends BaseMatterAccessory {
33
33
  /**
34
34
  * Update on/off state from external source
35
35
  */
36
- updateOnOffState(isOn: boolean): void;
36
+ updateOnOffState(isOn: boolean): Promise<void>;
37
37
  /**
38
38
  * Update brightness level from external source
39
39
  * @param percent - Brightness percentage (0-100)
40
40
  */
41
- updateBrightness(percent: number): void;
41
+ updateBrightness(percent: number): Promise<void>;
42
42
  /**
43
43
  * Get current brightness as percentage
44
44
  */
@@ -47,7 +47,7 @@ export declare class DimmableLightAccessory extends BaseMatterAccessory {
47
47
  * Set brightness and power state together
48
48
  * Useful for syncing complete state from external source
49
49
  */
50
- updateFullState(isOn: boolean, percent: number): void;
50
+ updateFullState(isOn: boolean, percent: number): Promise<void>;
51
51
  /**
52
52
  * Example monitoring setup
53
53
  */
@@ -95,6 +95,18 @@ export class DimmableLightAccessory extends BaseMatterAccessory {
95
95
  const brightnessPercent = Math.round((level / 254) * 100);
96
96
  this.currentLevel = level;
97
97
  this.logInfo(`setting brightness to ${brightnessPercent}% (level: ${level}).`);
98
+ // Example: Validate the brightness level meets device constraints
99
+ // if (level < 10) {
100
+ // throw new MatterStatus.ConstraintError('Minimum brightness is 10 (4%) for this bulb')
101
+ // }
102
+ // Example: Check if device supports the transition time requested
103
+ // if (transitionTime !== null && transitionTime > 300) {
104
+ // throw new MatterStatus.ConstraintError('Maximum transition time is 300 (30 seconds)')
105
+ // }
106
+ // Example: Check if dimming is supported
107
+ // if (!this.supportsDimming) {
108
+ // throw new MatterStatus.InvalidAction('This bulb does not support dimming')
109
+ // }
98
110
  try {
99
111
  // TODO: Control your physical device
100
112
  // await myLightAPI.setBrightness(brightnessPercent, transitionTime)
@@ -102,21 +114,25 @@ export class DimmableLightAccessory extends BaseMatterAccessory {
102
114
  }
103
115
  catch (error) {
104
116
  this.logError('Failed to set brightness:', error);
117
+ // Example: Handle dimming hardware failures
118
+ // if (error.code === 'DIMMER_FAULT') {
119
+ // throw new MatterStatus.Failure('Dimmer circuit malfunction - bulb may need replacement')
120
+ // }
105
121
  throw error;
106
122
  }
107
123
  }
108
124
  /**
109
125
  * Update on/off state from external source
110
126
  */
111
- updateOnOffState(isOn) {
112
- this.updateState(this.api.matter.clusterNames.OnOff, { onOff: isOn });
127
+ async updateOnOffState(isOn) {
128
+ await this.updateState(this.api.matter.clusterNames.OnOff, { onOff: isOn });
113
129
  this.logInfo(`state synced: ${isOn ? 'ON' : 'OFF'}.`);
114
130
  }
115
131
  /**
116
132
  * Update brightness level from external source
117
133
  * @param percent - Brightness percentage (0-100)
118
134
  */
119
- updateBrightness(percent) {
135
+ async updateBrightness(percent) {
120
136
  // Validate input
121
137
  if (percent < 0 || percent > 100) {
122
138
  this.logWarn(`Invalid brightness percentage: ${percent}. Must be 0-100.`);
@@ -125,7 +141,7 @@ export class DimmableLightAccessory extends BaseMatterAccessory {
125
141
  // Convert percent to Matter level (1-254)
126
142
  const matterLevel = Math.max(1, Math.round((percent / 100) * 254));
127
143
  this.currentLevel = matterLevel;
128
- this.updateState(this.api.matter.clusterNames.LevelControl, {
144
+ await this.updateState(this.api.matter.clusterNames.LevelControl, {
129
145
  currentLevel: matterLevel,
130
146
  });
131
147
  this.logInfo(`brightness synced: ${percent}% (level: ${matterLevel}).`);
@@ -140,10 +156,10 @@ export class DimmableLightAccessory extends BaseMatterAccessory {
140
156
  * Set brightness and power state together
141
157
  * Useful for syncing complete state from external source
142
158
  */
143
- updateFullState(isOn, percent) {
144
- this.updateOnOffState(isOn);
159
+ async updateFullState(isOn, percent) {
160
+ await this.updateOnOffState(isOn);
145
161
  if (isOn) {
146
- this.updateBrightness(percent);
162
+ await this.updateBrightness(percent);
147
163
  }
148
164
  }
149
165
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"DimmableLightAccessory.js","sourceRoot":"","sources":["../../src/devices/DimmableLightAccessory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DimmableLightAccessory.js","sourceRoot":"","sources":["../../src/devices/DimmableLightAccessory.ts"],"names":[],"mappings":"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"}
@@ -7,5 +7,5 @@ export declare class DoorLockAccessory extends BaseMatterAccessory {
7
7
  constructor(api: API, log: Logger);
8
8
  private handleLock;
9
9
  private handleUnlock;
10
- updateLockState(state: 0 | 1 | 2): void;
10
+ updateLockState(state: 0 | 1 | 2): Promise<void>;
11
11
  }