@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.
- package/CHANGELOG.md +13 -0
- package/README.md +2 -1
- package/config.schema.json +8 -1
- package/dist/devices/AirQualitySensorAccessory.d.ts +50 -0
- package/dist/devices/AirQualitySensorAccessory.js +130 -0
- package/dist/devices/AirQualitySensorAccessory.js.map +1 -0
- package/dist/devices/BaseMatterAccessory.d.ts +1 -1
- package/dist/devices/ColorLightAccessory.d.ts +3 -3
- package/dist/devices/ColorLightAccessory.js +41 -6
- package/dist/devices/ColorLightAccessory.js.map +1 -1
- package/dist/devices/ColorTemperatureLightAccessory.d.ts +3 -3
- package/dist/devices/ColorTemperatureLightAccessory.js +19 -6
- package/dist/devices/ColorTemperatureLightAccessory.js.map +1 -1
- package/dist/devices/ContactSensorAccessory.d.ts +1 -1
- package/dist/devices/ContactSensorAccessory.js +2 -2
- package/dist/devices/ContactSensorAccessory.js.map +1 -1
- package/dist/devices/DimmableLightAccessory.d.ts +3 -3
- package/dist/devices/DimmableLightAccessory.js +23 -7
- package/dist/devices/DimmableLightAccessory.js.map +1 -1
- package/dist/devices/DoorLockAccessory.d.ts +1 -1
- package/dist/devices/DoorLockAccessory.js +37 -2
- package/dist/devices/DoorLockAccessory.js.map +1 -1
- package/dist/devices/ExtendedColorLightAccessory.d.ts +3 -3
- package/dist/devices/ExtendedColorLightAccessory.js +24 -6
- package/dist/devices/ExtendedColorLightAccessory.js.map +1 -1
- package/dist/devices/FanAccessory.d.ts +2 -2
- package/dist/devices/FanAccessory.js +36 -4
- package/dist/devices/FanAccessory.js.map +1 -1
- package/dist/devices/HumiditySensorAccessory.d.ts +1 -1
- package/dist/devices/HumiditySensorAccessory.js +2 -2
- package/dist/devices/HumiditySensorAccessory.js.map +1 -1
- package/dist/devices/LeakSensorAccessory.d.ts +1 -1
- package/dist/devices/LeakSensorAccessory.js +2 -2
- package/dist/devices/LeakSensorAccessory.js.map +1 -1
- package/dist/devices/LightSensorAccessory.d.ts +1 -1
- package/dist/devices/LightSensorAccessory.js +2 -2
- package/dist/devices/LightSensorAccessory.js.map +1 -1
- package/dist/devices/OccupancySensorAccessory.d.ts +1 -1
- package/dist/devices/OccupancySensorAccessory.js +3 -4
- package/dist/devices/OccupancySensorAccessory.js.map +1 -1
- package/dist/devices/OnOffLightAccessory.d.ts +1 -1
- package/dist/devices/OnOffLightAccessory.js +18 -2
- package/dist/devices/OnOffLightAccessory.js.map +1 -1
- package/dist/devices/OnOffOutletAccessory.d.ts +1 -1
- package/dist/devices/OnOffOutletAccessory.js +18 -2
- package/dist/devices/OnOffOutletAccessory.js.map +1 -1
- package/dist/devices/OnOffSwitchAccessory.d.ts +1 -1
- package/dist/devices/OnOffSwitchAccessory.js +14 -2
- package/dist/devices/OnOffSwitchAccessory.js.map +1 -1
- package/dist/devices/RoboticVacuumAccessory.d.ts +6 -6
- package/dist/devices/RoboticVacuumAccessory.js +65 -25
- package/dist/devices/RoboticVacuumAccessory.js.map +1 -1
- package/dist/devices/SmokeCOAlarmAccessory.d.ts +2 -2
- package/dist/devices/SmokeCOAlarmAccessory.js +5 -6
- package/dist/devices/SmokeCOAlarmAccessory.js.map +1 -1
- package/dist/devices/TemperatureSensorAccessory.d.ts +1 -1
- package/dist/devices/TemperatureSensorAccessory.js +2 -2
- package/dist/devices/TemperatureSensorAccessory.js.map +1 -1
- package/dist/devices/ThermostatAccessory.d.ts +4 -4
- package/dist/devices/ThermostatAccessory.js +39 -8
- package/dist/devices/ThermostatAccessory.js.map +1 -1
- package/dist/devices/VenetianBlindAccessory.d.ts +2 -2
- package/dist/devices/VenetianBlindAccessory.js +22 -5
- package/dist/devices/VenetianBlindAccessory.js.map +1 -1
- package/dist/devices/WindowBlindAccessory.d.ts +1 -1
- package/dist/devices/WindowBlindAccessory.js +25 -4
- package/dist/devices/WindowBlindAccessory.js.map +1 -1
- package/dist/devices/custom/PowerStripAccessory.d.ts +2 -2
- package/dist/devices/custom/PowerStripAccessory.js +41 -8
- package/dist/devices/custom/PowerStripAccessory.js.map +1 -1
- package/dist/devices/index.d.ts +1 -0
- package/dist/devices/index.js +1 -0
- package/dist/devices/index.js.map +1 -1
- package/dist/homebridge-ui/public/index.html +1 -0
- package/dist/platform.js +7 -1
- package/dist/platform.js.map +1 -1
- package/package.json +6 -6
|
@@ -32,14 +32,49 @@ export class DoorLockAccessory extends BaseMatterAccessory {
|
|
|
32
32
|
this.logInfo('initialized.');
|
|
33
33
|
}
|
|
34
34
|
async handleLock() {
|
|
35
|
+
this.logInfo('locking door.');
|
|
36
|
+
// Example: Check if door is closed before locking
|
|
37
|
+
// if (this.isDoorOpen) {
|
|
38
|
+
// throw new MatterStatus.InvalidInState('Cannot lock door while it is open')
|
|
39
|
+
// }
|
|
40
|
+
// Example: Check if lock mechanism is already in use
|
|
41
|
+
// if (this.isLockMotorActive) {
|
|
42
|
+
// throw new MatterStatus.Busy('Lock mechanism is currently in use')
|
|
43
|
+
// }
|
|
44
|
+
// Example: Lock with timeout and error handling
|
|
45
|
+
// try {
|
|
46
|
+
// await this.lockAPI.lock({ timeout: 10000 })
|
|
47
|
+
// } catch (error) {
|
|
48
|
+
// if (error.code === 'LOCK_JAMMED') {
|
|
49
|
+
// throw new MatterStatus.Failure('Lock is jammed - check door alignment')
|
|
50
|
+
// }
|
|
51
|
+
// if (error.code === 'ETIMEDOUT') {
|
|
52
|
+
// throw new MatterStatus.Timeout('Lock motor did not respond within 10 seconds')
|
|
53
|
+
// }
|
|
54
|
+
// throw error
|
|
55
|
+
// }
|
|
35
56
|
this.logInfo('locked.');
|
|
36
57
|
}
|
|
37
58
|
async handleUnlock() {
|
|
59
|
+
this.logInfo('unlocking door.');
|
|
60
|
+
// Example: Check if user has permission to unlock
|
|
61
|
+
// if (!this.userHasUnlockPermission) {
|
|
62
|
+
// throw new MatterStatus.PermissionDenied('User does not have permission to unlock')
|
|
63
|
+
// }
|
|
64
|
+
// Example: Check if security system prevents unlocking
|
|
65
|
+
// if (this.isSecuritySystemArmed) {
|
|
66
|
+
// throw new MatterStatus.InvalidInState('Cannot unlock while security system is armed')
|
|
67
|
+
// }
|
|
68
|
+
// Example: Check time-based access restrictions
|
|
69
|
+
// const currentHour = new Date().getHours()
|
|
70
|
+
// if (currentHour < 6 || currentHour > 22) {
|
|
71
|
+
// throw new MatterStatus.PermissionDenied('Remote unlocking disabled during night hours')
|
|
72
|
+
// }
|
|
38
73
|
this.logInfo('unlocked.');
|
|
39
74
|
}
|
|
40
|
-
updateLockState(state) {
|
|
75
|
+
async updateLockState(state) {
|
|
41
76
|
// 0 = Not fully locked, 1 = Locked, 2 = Unlocked
|
|
42
|
-
this.updateState('doorLock', { lockState: state });
|
|
77
|
+
await this.updateState('doorLock', { lockState: state });
|
|
43
78
|
const stateStr = ['Not Fully Locked', 'Locked', 'Unlocked'][state];
|
|
44
79
|
this.logInfo(`lock state: ${stateStr}.`);
|
|
45
80
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DoorLockAccessory.js","sourceRoot":"","sources":["../../src/devices/DoorLockAccessory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,MAAM,OAAO,iBAAkB,SAAQ,mBAAmB;IACxD,YAAY,GAAQ,EAAE,GAAW;QAC/B,MAAM,YAAY,GAAG,UAAU,CAAA;QAC/B,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;YACd,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC5C,WAAW,EAAE,WAAW;YACxB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ;YAC3C,YAAY;YACZ,YAAY,EAAE,mBAAmB;YACjC,KAAK,EAAE,qBAAqB;YAC5B,gBAAgB,EAAE,OAAO;YACzB,gBAAgB,EAAE,OAAO;YAEzB,QAAQ,EAAE;gBACR,QAAQ,EAAE;oBACR,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ;oBACvD,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ;oBACrD,eAAe,EAAE,IAAI;oBACrB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM;iBAC9D;aACF;YAED,QAAQ,EAAE;gBACR,QAAQ,EAAE;oBACR,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE;oBACvC,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE;iBAC5C;aACF;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IAC9B,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACzB,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IAC3B,CAAC;IAEM,eAAe,CAAC,KAAgB;
|
|
1
|
+
{"version":3,"file":"DoorLockAccessory.js","sourceRoot":"","sources":["../../src/devices/DoorLockAccessory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,MAAM,OAAO,iBAAkB,SAAQ,mBAAmB;IACxD,YAAY,GAAQ,EAAE,GAAW;QAC/B,MAAM,YAAY,GAAG,UAAU,CAAA;QAC/B,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;YACd,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC5C,WAAW,EAAE,WAAW;YACxB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ;YAC3C,YAAY;YACZ,YAAY,EAAE,mBAAmB;YACjC,KAAK,EAAE,qBAAqB;YAC5B,gBAAgB,EAAE,OAAO;YACzB,gBAAgB,EAAE,OAAO;YAEzB,QAAQ,EAAE;gBACR,QAAQ,EAAE;oBACR,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ;oBACvD,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ;oBACrD,eAAe,EAAE,IAAI;oBACrB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM;iBAC9D;aACF;YAED,QAAQ,EAAE;gBACR,QAAQ,EAAE;oBACR,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE;oBACvC,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE;iBAC5C;aACF;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IAC9B,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;QAE7B,kDAAkD;QAClD,yBAAyB;QACzB,+EAA+E;QAC/E,IAAI;QAEJ,qDAAqD;QACrD,gCAAgC;QAChC,sEAAsE;QACtE,IAAI;QAEJ,gDAAgD;QAChD,QAAQ;QACR,gDAAgD;QAChD,oBAAoB;QACpB,wCAAwC;QACxC,8EAA8E;QAC9E,MAAM;QACN,sCAAsC;QACtC,qFAAqF;QACrF,MAAM;QACN,gBAAgB;QAChB,IAAI;QAEJ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACzB,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;QAE/B,kDAAkD;QAClD,uCAAuC;QACvC,uFAAuF;QACvF,IAAI;QAEJ,uDAAuD;QACvD,oCAAoC;QACpC,0FAA0F;QAC1F,IAAI;QAEJ,gDAAgD;QAChD,4CAA4C;QAC5C,6CAA6C;QAC7C,4FAA4F;QAC5F,IAAI;QAEJ,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IAC3B,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,KAAgB;QAC3C,iDAAiD;QACjD,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;QACxD,MAAM,QAAQ,GAAG,CAAC,kBAAkB,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,CAAA;QAClE,IAAI,CAAC,OAAO,CAAC,eAAe,QAAQ,GAAG,CAAC,CAAA;IAC1C,CAAC;CACF"}
|
|
@@ -12,7 +12,7 @@ export declare class ExtendedColorLightAccessory extends BaseMatterAccessory {
|
|
|
12
12
|
private handleSetColor;
|
|
13
13
|
private handleSetHueSaturation;
|
|
14
14
|
private handleSetColorTemperature;
|
|
15
|
-
updateOnOffState(isOn: boolean): void
|
|
16
|
-
updateBrightness(percent: number): void
|
|
17
|
-
updateHueSaturation(hue: number, saturation: number): void
|
|
15
|
+
updateOnOffState(isOn: boolean): Promise<void>;
|
|
16
|
+
updateBrightness(percent: number): Promise<void>;
|
|
17
|
+
updateHueSaturation(hue: number, saturation: number): Promise<void>;
|
|
18
18
|
}
|
|
@@ -87,19 +87,37 @@ export class ExtendedColorLightAccessory extends BaseMatterAccessory {
|
|
|
87
87
|
const { colorTemperatureMireds, transitionTime } = request;
|
|
88
88
|
const kelvin = Math.round(1000000 / colorTemperatureMireds);
|
|
89
89
|
this.logInfo(`setting color temp to ${kelvin}k.`);
|
|
90
|
+
// Example: Validate color temperature is within device physical limits
|
|
91
|
+
// const minMireds = 147 // ~6800K (cool white)
|
|
92
|
+
// const maxMireds = 454 // ~2200K (warm white)
|
|
93
|
+
// if (colorTemperatureMireds < minMireds || colorTemperatureMireds > maxMireds) {
|
|
94
|
+
// throw new MatterStatus.ConstraintError(
|
|
95
|
+
// `Color temperature ${kelvin}K is out of range (2200K-6800K)`
|
|
96
|
+
// )
|
|
97
|
+
// }
|
|
98
|
+
// Example: Check if bulb is in the correct color mode for CCT
|
|
99
|
+
// if (this.currentColorMode === 'xy' || this.currentColorMode === 'hs') {
|
|
100
|
+
// throw new MatterStatus.InvalidInState(
|
|
101
|
+
// 'Cannot set color temperature while in color mode - switch to white mode first'
|
|
102
|
+
// )
|
|
103
|
+
// }
|
|
104
|
+
// Example: Check if bulb supports tunable white
|
|
105
|
+
// if (!this.supportsTunableWhite) {
|
|
106
|
+
// throw new MatterStatus.InvalidAction('This bulb does not support color temperature adjustment')
|
|
107
|
+
// }
|
|
90
108
|
// TODO: await myLightAPI.setColorTemperature(kelvin, transitionTime)
|
|
91
109
|
}
|
|
92
|
-
updateOnOffState(isOn) {
|
|
93
|
-
this.updateState(this.api.matter.clusterNames.OnOff, { onOff: isOn });
|
|
110
|
+
async updateOnOffState(isOn) {
|
|
111
|
+
await this.updateState(this.api.matter.clusterNames.OnOff, { onOff: isOn });
|
|
94
112
|
}
|
|
95
|
-
updateBrightness(percent) {
|
|
113
|
+
async updateBrightness(percent) {
|
|
96
114
|
const matterLevel = Math.max(1, Math.round((percent / 100) * 254));
|
|
97
|
-
this.updateState(this.api.matter.clusterNames.LevelControl, { currentLevel: matterLevel });
|
|
115
|
+
await this.updateState(this.api.matter.clusterNames.LevelControl, { currentLevel: matterLevel });
|
|
98
116
|
}
|
|
99
|
-
updateHueSaturation(hue, saturation) {
|
|
117
|
+
async updateHueSaturation(hue, saturation) {
|
|
100
118
|
const matterHue = Math.round((hue / 360) * 254);
|
|
101
119
|
const matterSat = Math.round((saturation / 100) * 254);
|
|
102
|
-
this.updateState(this.api.matter.clusterNames.ColorControl, {
|
|
120
|
+
await this.updateState(this.api.matter.clusterNames.ColorControl, {
|
|
103
121
|
currentHue: matterHue,
|
|
104
122
|
currentSaturation: matterSat,
|
|
105
123
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExtendedColorLightAccessory.js","sourceRoot":"","sources":["../../src/devices/ExtendedColorLightAccessory.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ExtendedColorLightAccessory.js","sourceRoot":"","sources":["../../src/devices/ExtendedColorLightAccessory.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,6 @@ export declare class FanAccessory extends BaseMatterAccessory {
|
|
|
8
8
|
private handleStep;
|
|
9
9
|
private handleFanModeChange;
|
|
10
10
|
private handlePercentSettingChange;
|
|
11
|
-
updateFanMode(mode: number): void
|
|
12
|
-
updateFanSpeed(percent: number): void
|
|
11
|
+
updateFanMode(mode: number): Promise<void>;
|
|
12
|
+
updateFanSpeed(percent: number): Promise<void>;
|
|
13
13
|
}
|
|
@@ -44,6 +44,19 @@ export class FanAccessory extends BaseMatterAccessory {
|
|
|
44
44
|
const modeNames = ['Off', 'Low', 'Medium', 'High', 'On', 'Auto', 'Smart'];
|
|
45
45
|
const modeName = modeNames[request.fanMode] || `Unknown (${request.fanMode})`;
|
|
46
46
|
this.logInfo(`fan mode changed to: ${modeName}.`);
|
|
47
|
+
// Example: Check if requested mode is supported by the fan
|
|
48
|
+
// const supportedModes = [0, 1, 2, 3, 4] // Off, Low, Medium, High, On
|
|
49
|
+
// if (!supportedModes.includes(request.fanMode)) {
|
|
50
|
+
// throw new MatterStatus.InvalidAction(
|
|
51
|
+
// `Fan mode ${modeName} is not supported by this device`
|
|
52
|
+
// )
|
|
53
|
+
// }
|
|
54
|
+
// Example: Check if fan can change modes while running
|
|
55
|
+
// if (this.isOscillating && request.fanMode === 5) {
|
|
56
|
+
// throw new MatterStatus.InvalidInState(
|
|
57
|
+
// 'Cannot switch to Auto mode while oscillating'
|
|
58
|
+
// )
|
|
59
|
+
// }
|
|
47
60
|
// TODO: await myFanAPI.setMode(request.fanMode)
|
|
48
61
|
}
|
|
49
62
|
async handlePercentSettingChange(request) {
|
|
@@ -51,6 +64,25 @@ export class FanAccessory extends BaseMatterAccessory {
|
|
|
51
64
|
const percent = request.percentSetting ?? 0;
|
|
52
65
|
const isOff = percent === 0;
|
|
53
66
|
const wasOff = (request.oldPercentSetting ?? 0) === 0;
|
|
67
|
+
// Example: Validate speed percentage is within supported range
|
|
68
|
+
// if (percent < 0 || percent > 100) {
|
|
69
|
+
// throw new MatterStatus.ConstraintError(
|
|
70
|
+
// `Fan speed ${percent}% is out of range (0-100)`
|
|
71
|
+
// )
|
|
72
|
+
// }
|
|
73
|
+
// Example: Check if fan supports variable speed control
|
|
74
|
+
// if (percent > 0 && percent < 100 && !this.supportsVariableSpeed) {
|
|
75
|
+
// throw new MatterStatus.InvalidAction(
|
|
76
|
+
// 'This fan only supports fixed speeds (Low/Medium/High), not variable percentage'
|
|
77
|
+
// )
|
|
78
|
+
// }
|
|
79
|
+
// Example: Enforce minimum speed when fan is on
|
|
80
|
+
// const minSpeed = 20
|
|
81
|
+
// if (percent > 0 && percent < minSpeed) {
|
|
82
|
+
// throw new MatterStatus.ConstraintError(
|
|
83
|
+
// `Fan minimum speed is ${minSpeed}% when on`
|
|
84
|
+
// )
|
|
85
|
+
// }
|
|
54
86
|
if (isOff !== wasOff) {
|
|
55
87
|
this.logInfo(`fan turned ${isOff ? 'off' : 'on'}.`);
|
|
56
88
|
}
|
|
@@ -59,11 +91,11 @@ export class FanAccessory extends BaseMatterAccessory {
|
|
|
59
91
|
}
|
|
60
92
|
// TODO: await myFanAPI.setSpeed(percent)
|
|
61
93
|
}
|
|
62
|
-
updateFanMode(mode) {
|
|
63
|
-
this.updateState(this.api.matter.clusterNames.FanControl, { fanMode: mode });
|
|
94
|
+
async updateFanMode(mode) {
|
|
95
|
+
await this.updateState(this.api.matter.clusterNames.FanControl, { fanMode: mode });
|
|
64
96
|
}
|
|
65
|
-
updateFanSpeed(percent) {
|
|
66
|
-
this.updateState(this.api.matter.clusterNames.FanControl, {
|
|
97
|
+
async updateFanSpeed(percent) {
|
|
98
|
+
await this.updateState(this.api.matter.clusterNames.FanControl, {
|
|
67
99
|
percentSetting: percent,
|
|
68
100
|
percentCurrent: percent,
|
|
69
101
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FanAccessory.js","sourceRoot":"","sources":["../../src/devices/FanAccessory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,MAAM,OAAO,YAAa,SAAQ,mBAAmB;IACnD,YAAY,GAAQ,EAAE,GAAW;QAC/B,MAAM,YAAY,GAAG,SAAS,CAAA;QAC9B,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;YACd,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC5C,WAAW,EAAE,KAAK;YAClB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG;YACtC,YAAY;YACZ,YAAY,EAAE,mBAAmB;YACjC,KAAK,EAAE,eAAe;YACtB,gBAAgB,EAAE,OAAO;YACzB,gBAAgB,EAAE,OAAO;YAEzB,QAAQ,EAAE;gBACR,UAAU,EAAE;oBACV,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG;oBAChD,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,aAAa;oBAC1E,cAAc,EAAE,CAAC;oBACjB,cAAc,EAAE,CAAC;iBAClB;aACF;YAED,QAAQ,EAAE;gBACR,UAAU,EAAE;oBACV,IAAI,EAAE,KAAK,EAAE,OAA+B,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;oBACzE,aAAa,EAAE,KAAK,EAAE,OAAgD,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;oBAC5G,oBAAoB,EAAE,KAAK,EAAE,OAA4E,EAAE,EAAE,CAC3G,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC;iBAC3C;aACF;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IAC9B,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,OAA+B;QACtD,IAAI,CAAC,OAAO,CAAC,oBAAoB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAC3D,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,CAAA;QAC9C,MAAM,MAAM,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAA;QACxD,IAAI,CAAC,OAAO,CAAC,QAAQ,MAAM,WAAW,IAAI,gBAAgB,SAAS,IAAI,CAAC,CAAA;QACxE,wDAAwD;IAC1D,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,OAAgD;QAChF,IAAI,CAAC,OAAO,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAC1D,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QACzE,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,YAAY,OAAO,CAAC,OAAO,GAAG,CAAA;QAC7E,IAAI,CAAC,OAAO,CAAC,wBAAwB,QAAQ,GAAG,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"FanAccessory.js","sourceRoot":"","sources":["../../src/devices/FanAccessory.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 HumiditySensorAccessory extends BaseMatterAccessory {
|
|
7
7
|
constructor(api: API, log: Logger);
|
|
8
|
-
updateHumidity(percent: number): void
|
|
8
|
+
updateHumidity(percent: number): Promise<void>;
|
|
9
9
|
}
|
|
@@ -24,9 +24,9 @@ export class HumiditySensorAccessory extends BaseMatterAccessory {
|
|
|
24
24
|
});
|
|
25
25
|
this.logInfo('initialized.');
|
|
26
26
|
}
|
|
27
|
-
updateHumidity(percent) {
|
|
27
|
+
async updateHumidity(percent) {
|
|
28
28
|
const value = Math.round(percent * 100); // convert to hundredths
|
|
29
|
-
this.updateState('relativeHumidityMeasurement', { measuredValue: value });
|
|
29
|
+
await this.updateState('relativeHumidityMeasurement', { measuredValue: value });
|
|
30
30
|
this.logInfo(`humidity: ${percent}%.`);
|
|
31
31
|
}
|
|
32
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HumiditySensorAccessory.js","sourceRoot":"","sources":["../../src/devices/HumiditySensorAccessory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,MAAM,OAAO,uBAAwB,SAAQ,mBAAmB;IAC9D,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,iBAAiB;YAC9B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,cAAc;YACjD,YAAY;YACZ,YAAY,EAAE,mBAAmB;YACjC,KAAK,EAAE,2BAA2B;YAClC,gBAAgB,EAAE,OAAO;YACzB,gBAAgB,EAAE,OAAO;YAEzB,QAAQ,EAAE;gBACR,2BAA2B,EAAE;oBAC3B,aAAa,EAAE,IAAI,EAAE,mCAAmC;oBACxD,gBAAgB,EAAE,CAAC;oBACnB,gBAAgB,EAAE,KAAK;iBACxB;aACF;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IAC9B,CAAC;IAEM,cAAc,CAAC,OAAe;
|
|
1
|
+
{"version":3,"file":"HumiditySensorAccessory.js","sourceRoot":"","sources":["../../src/devices/HumiditySensorAccessory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,MAAM,OAAO,uBAAwB,SAAQ,mBAAmB;IAC9D,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,iBAAiB;YAC9B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,cAAc;YACjD,YAAY;YACZ,YAAY,EAAE,mBAAmB;YACjC,KAAK,EAAE,2BAA2B;YAClC,gBAAgB,EAAE,OAAO;YACzB,gBAAgB,EAAE,OAAO;YAEzB,QAAQ,EAAE;gBACR,2BAA2B,EAAE;oBAC3B,aAAa,EAAE,IAAI,EAAE,mCAAmC;oBACxD,gBAAgB,EAAE,CAAC;oBACnB,gBAAgB,EAAE,KAAK;iBACxB;aACF;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IAC9B,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,OAAe;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC,CAAA,CAAC,wBAAwB;QAChE,MAAM,IAAI,CAAC,WAAW,CAAC,6BAA6B,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAA;QAC/E,IAAI,CAAC,OAAO,CAAC,aAAa,OAAO,IAAI,CAAC,CAAA;IACxC,CAAC;CACF"}
|
|
@@ -5,5 +5,5 @@ import type { API, Logger } from 'homebridge';
|
|
|
5
5
|
import { BaseMatterAccessory } from './BaseMatterAccessory.js';
|
|
6
6
|
export declare class LeakSensorAccessory extends BaseMatterAccessory {
|
|
7
7
|
constructor(api: API, log: Logger);
|
|
8
|
-
updateLeakState(leakDetected: boolean): void
|
|
8
|
+
updateLeakState(leakDetected: boolean): Promise<void>;
|
|
9
9
|
}
|
|
@@ -22,8 +22,8 @@ export class LeakSensorAccessory extends BaseMatterAccessory {
|
|
|
22
22
|
});
|
|
23
23
|
this.logInfo('initialized.');
|
|
24
24
|
}
|
|
25
|
-
updateLeakState(leakDetected) {
|
|
26
|
-
this.updateState(this.api.matter.clusterNames.BooleanState, { stateValue: leakDetected });
|
|
25
|
+
async updateLeakState(leakDetected) {
|
|
26
|
+
await this.updateState(this.api.matter.clusterNames.BooleanState, { stateValue: leakDetected });
|
|
27
27
|
this.logInfo(`leak: ${leakDetected ? 'detected' : 'none'}.`);
|
|
28
28
|
}
|
|
29
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LeakSensorAccessory.js","sourceRoot":"","sources":["../../src/devices/LeakSensorAccessory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,MAAM,OAAO,mBAAoB,SAAQ,mBAAmB;IAC1D,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,aAAa;YAC1B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU;YAC7C,YAAY;YACZ,YAAY,EAAE,mBAAmB;YACjC,KAAK,EAAE,uBAAuB;YAC9B,gBAAgB,EAAE,OAAO;YACzB,gBAAgB,EAAE,OAAO;YAEzB,QAAQ,EAAE;gBACR,YAAY,EAAE;oBACZ,UAAU,EAAE,KAAK,EAAE,2BAA2B;iBAC/C;aACF;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IAC9B,CAAC;IAEM,eAAe,CAAC,YAAqB;
|
|
1
|
+
{"version":3,"file":"LeakSensorAccessory.js","sourceRoot":"","sources":["../../src/devices/LeakSensorAccessory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,MAAM,OAAO,mBAAoB,SAAQ,mBAAmB;IAC1D,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,aAAa;YAC1B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU;YAC7C,YAAY;YACZ,YAAY,EAAE,mBAAmB;YACjC,KAAK,EAAE,uBAAuB;YAC9B,gBAAgB,EAAE,OAAO;YACzB,gBAAgB,EAAE,OAAO;YAEzB,QAAQ,EAAE;gBACR,YAAY,EAAE;oBACZ,UAAU,EAAE,KAAK,EAAE,2BAA2B;iBAC/C;aACF;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IAC9B,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,YAAqB;QAChD,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAA;QAC/F,IAAI,CAAC,OAAO,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;IAC9D,CAAC;CACF"}
|
|
@@ -5,5 +5,5 @@ import type { API, Logger } from 'homebridge';
|
|
|
5
5
|
import { BaseMatterAccessory } from './BaseMatterAccessory.js';
|
|
6
6
|
export declare class LightSensorAccessory extends BaseMatterAccessory {
|
|
7
7
|
constructor(api: API, log: Logger);
|
|
8
|
-
updateIlluminance(lux: number): void
|
|
8
|
+
updateIlluminance(lux: number): Promise<void>;
|
|
9
9
|
}
|
|
@@ -24,9 +24,9 @@ export class LightSensorAccessory extends BaseMatterAccessory {
|
|
|
24
24
|
});
|
|
25
25
|
this.logInfo('initialized.');
|
|
26
26
|
}
|
|
27
|
-
updateIlluminance(lux) {
|
|
27
|
+
async updateIlluminance(lux) {
|
|
28
28
|
const value = Math.round(10000 * Math.log10(lux));
|
|
29
|
-
this.updateState('illuminanceMeasurement', { measuredValue: value });
|
|
29
|
+
await this.updateState('illuminanceMeasurement', { measuredValue: value });
|
|
30
30
|
this.logInfo(`illuminance: ${lux} lux.`);
|
|
31
31
|
}
|
|
32
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LightSensorAccessory.js","sourceRoot":"","sources":["../../src/devices/LightSensorAccessory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,MAAM,OAAO,oBAAqB,SAAQ,mBAAmB;IAC3D,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,cAAc;YAC3B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW;YAC9C,YAAY;YACZ,YAAY,EAAE,mBAAmB;YACjC,KAAK,EAAE,wBAAwB;YAC/B,gBAAgB,EAAE,OAAO;YACzB,gBAAgB,EAAE,OAAO;YAEzB,QAAQ,EAAE;gBACR,sBAAsB,EAAE;oBACtB,aAAa,EAAE,IAAI;oBACnB,gBAAgB,EAAE,CAAC;oBACnB,gBAAgB,EAAE,KAAK;iBACxB;aACF;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IAC9B,CAAC;IAEM,iBAAiB,CAAC,GAAW;
|
|
1
|
+
{"version":3,"file":"LightSensorAccessory.js","sourceRoot":"","sources":["../../src/devices/LightSensorAccessory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,MAAM,OAAO,oBAAqB,SAAQ,mBAAmB;IAC3D,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,cAAc;YAC3B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW;YAC9C,YAAY;YACZ,YAAY,EAAE,mBAAmB;YACjC,KAAK,EAAE,wBAAwB;YAC/B,gBAAgB,EAAE,OAAO;YACzB,gBAAgB,EAAE,OAAO;YAEzB,QAAQ,EAAE;gBACR,sBAAsB,EAAE;oBACtB,aAAa,EAAE,IAAI;oBACnB,gBAAgB,EAAE,CAAC;oBACnB,gBAAgB,EAAE,KAAK;iBACxB;aACF;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IAC9B,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,GAAW;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;QACjD,MAAM,IAAI,CAAC,WAAW,CAAC,wBAAwB,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAA;QAC1E,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC,CAAA;IAC1C,CAAC;CACF"}
|
|
@@ -5,5 +5,5 @@ import type { API, Logger } from 'homebridge';
|
|
|
5
5
|
import { BaseMatterAccessory } from './BaseMatterAccessory.js';
|
|
6
6
|
export declare class OccupancySensorAccessory extends BaseMatterAccessory {
|
|
7
7
|
constructor(api: API, log: Logger);
|
|
8
|
-
updateOccupancyDetected(detected: boolean): void
|
|
8
|
+
updateOccupancyDetected(detected: boolean): Promise<void>;
|
|
9
9
|
}
|
|
@@ -6,8 +6,7 @@ export class OccupancySensorAccessory extends BaseMatterAccessory {
|
|
|
6
6
|
constructor(api, log) {
|
|
7
7
|
const serialNumber = 'SENSOR-003';
|
|
8
8
|
// Note: Matter.js API calls this "MotionSensor" but it's actually an Occupancy Sensor
|
|
9
|
-
const
|
|
10
|
-
const OccupancySensorWithPIR = api.matter.deviceTypes.MotionSensor.with(OccupancySensingServer.with('PassiveInfrared'));
|
|
9
|
+
const OccupancySensorWithPIR = api.matter.deviceTypes.MotionSensor.with(api.matter.deviceTypes.MotionSensor.requirements.OccupancySensingServer.with('PassiveInfrared'));
|
|
11
10
|
super(api, log, {
|
|
12
11
|
uuid: api.matter.uuid.generate(serialNumber),
|
|
13
12
|
displayName: 'Occupancy Sensor',
|
|
@@ -33,8 +32,8 @@ export class OccupancySensorAccessory extends BaseMatterAccessory {
|
|
|
33
32
|
});
|
|
34
33
|
this.logInfo('initialized.');
|
|
35
34
|
}
|
|
36
|
-
updateOccupancyDetected(detected) {
|
|
37
|
-
this.updateState('occupancySensing', {
|
|
35
|
+
async updateOccupancyDetected(detected) {
|
|
36
|
+
await this.updateState('occupancySensing', {
|
|
38
37
|
occupancy: { occupied: detected },
|
|
39
38
|
});
|
|
40
39
|
this.logInfo(`occupancy: ${detected ? 'detected' : 'clear'}.`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OccupancySensorAccessory.js","sourceRoot":"","sources":["../../src/devices/OccupancySensorAccessory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,MAAM,OAAO,wBAAyB,SAAQ,mBAAmB;IAC/D,YAAY,GAAQ,EAAE,GAAW;QAC/B,MAAM,YAAY,GAAG,YAAY,CAAA;QACjC,sFAAsF;QACtF,MAAM,sBAAsB,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"OccupancySensorAccessory.js","sourceRoot":"","sources":["../../src/devices/OccupancySensorAccessory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,MAAM,OAAO,wBAAyB,SAAQ,mBAAmB;IAC/D,YAAY,GAAQ,EAAE,GAAW;QAC/B,MAAM,YAAY,GAAG,YAAY,CAAA;QACjC,sFAAsF;QACtF,MAAM,sBAAsB,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CACrE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,YAAY,CAAC,sBAAsB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAChG,CAAA;QAED,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;YACd,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC5C,WAAW,EAAE,kBAAkB;YAC/B,UAAU,EAAE,sBAAsB;YAClC,YAAY;YACZ,YAAY,EAAE,mBAAmB;YACjC,KAAK,EAAE,4BAA4B;YACnC,gBAAgB,EAAE,OAAO;YACzB,gBAAgB,EAAE,OAAO;YAEzB,QAAQ,EAAE;gBACR,gBAAgB,EAAE;oBAChB,SAAS,EAAE;wBACT,QAAQ,EAAE,KAAK;qBAChB;oBACD,mBAAmB,EAAE,CAAC;oBACtB,yBAAyB,EAAE;wBACzB,GAAG,EAAE,IAAI;wBACT,UAAU,EAAE,KAAK;wBACjB,eAAe,EAAE,KAAK;qBACvB;iBACF;aACF;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IAC9B,CAAC;IAEM,KAAK,CAAC,uBAAuB,CAAC,QAAiB;QACpD,MAAM,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE;YACzC,SAAS,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;SAClC,CAAC,CAAA;QACF,IAAI,CAAC,OAAO,CAAC,cAAc,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAA;IAChE,CAAC;CACF"}
|
|
@@ -26,7 +26,7 @@ export declare class OnOffLightAccessory extends BaseMatterAccessory {
|
|
|
26
26
|
* Update the on/off state from external source
|
|
27
27
|
* Call this when your physical device state changes externally
|
|
28
28
|
*/
|
|
29
|
-
updateOnOffState(isOn: boolean): void
|
|
29
|
+
updateOnOffState(isOn: boolean): Promise<void>;
|
|
30
30
|
/**
|
|
31
31
|
* Example: Start monitoring external state changes
|
|
32
32
|
* This shows how you might set up event listeners or polling
|
|
@@ -62,6 +62,14 @@ export class OnOffLightAccessory extends BaseMatterAccessory {
|
|
|
62
62
|
}
|
|
63
63
|
catch (error) {
|
|
64
64
|
this.logError('failed to turn on:', error);
|
|
65
|
+
// Example: Handle specific error types from your device API
|
|
66
|
+
// if (error.code === 'ETIMEDOUT' || error.code === 'ECONNREFUSED') {
|
|
67
|
+
// throw new MatterStatus.Timeout('Device did not respond - check network connection')
|
|
68
|
+
// }
|
|
69
|
+
// if (error.code === 'DEVICE_OFFLINE') {
|
|
70
|
+
// throw new MatterStatus.Failure('Device is offline or unreachable')
|
|
71
|
+
// }
|
|
72
|
+
// Re-throw the error - Homebridge will wrap it as a generic Failure
|
|
65
73
|
throw error;
|
|
66
74
|
}
|
|
67
75
|
}
|
|
@@ -78,6 +86,14 @@ export class OnOffLightAccessory extends BaseMatterAccessory {
|
|
|
78
86
|
}
|
|
79
87
|
catch (error) {
|
|
80
88
|
this.logError('failed to turn off:', error);
|
|
89
|
+
// Example: Map HTTP status codes to appropriate Matter errors
|
|
90
|
+
// if (error.response?.status === 503) {
|
|
91
|
+
// throw new MatterStatus.Busy('Device is busy processing another command')
|
|
92
|
+
// }
|
|
93
|
+
// if (error.response?.status === 504) {
|
|
94
|
+
// throw new MatterStatus.Timeout('Request timed out after 30 seconds')
|
|
95
|
+
// }
|
|
96
|
+
// Re-throw the error - Homebridge will wrap it as a generic Failure
|
|
81
97
|
throw error;
|
|
82
98
|
}
|
|
83
99
|
}
|
|
@@ -85,8 +101,8 @@ export class OnOffLightAccessory extends BaseMatterAccessory {
|
|
|
85
101
|
* Update the on/off state from external source
|
|
86
102
|
* Call this when your physical device state changes externally
|
|
87
103
|
*/
|
|
88
|
-
updateOnOffState(isOn) {
|
|
89
|
-
this.updateState(this.api.matter.clusterNames.OnOff, { onOff: isOn });
|
|
104
|
+
async updateOnOffState(isOn) {
|
|
105
|
+
await this.updateState(this.api.matter.clusterNames.OnOff, { onOff: isOn });
|
|
90
106
|
this.logInfo(`state synced: ${isOn ? 'ON' : 'OFF'}.`);
|
|
91
107
|
}
|
|
92
108
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OnOffLightAccessory.js","sourceRoot":"","sources":["../../src/devices/OnOffLightAccessory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D;;;;;GAKG;AACH,MAAM,OAAO,mBAAoB,SAAQ,mBAAmB;IAC1D,YAAY,GAAQ,EAAE,GAAW;QAC/B,MAAM,YAAY,GAAG,WAAW,CAAA;QAChC,MAAM,WAAW,GAAG,cAAc,CAAA;QAClC,MAAM,YAAY,GAAG,mBAAmB,CAAA;QACxC,MAAM,KAAK,GAAG,wBAAwB,CAAA;QACtC,MAAM,gBAAgB,GAAG,OAAO,CAAA;QAChC,MAAM,gBAAgB,GAAG,OAAO,CAAA;QAEhC,oDAAoD;QACpD,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;YACd,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC5C,WAAW;YACX,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU;YAC7C,YAAY;YACZ,YAAY;YACZ,KAAK;YACL,gBAAgB;YAChB,gBAAgB;YAEhB,yBAAyB;YACzB,QAAQ,EAAE;gBACR,KAAK,EAAE;oBACL,KAAK,EAAE,IAAI,EAAE,6BAA6B;iBAC3C;aACF;YAED,mBAAmB;YACnB,QAAQ,EAAE;gBACR,KAAK,EAAE;oBACL,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE;oBACtC,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE;iBACzC;aACF;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IAC9B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe;QAC3B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;QAE3B,IAAI,CAAC;YACH,0CAA0C;YAC1C,YAAY;YACZ,uEAAuE;YACvE,kDAAkD;YAClD,4EAA4E;YAC5E,iDAAiD;YAEjD,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAA;YAE1C,oEAAoE;QACtE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"OnOffLightAccessory.js","sourceRoot":"","sources":["../../src/devices/OnOffLightAccessory.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,14 +30,30 @@ export class OnOffOutletAccessory extends BaseMatterAccessory {
|
|
|
30
30
|
}
|
|
31
31
|
async handleOn() {
|
|
32
32
|
this.logInfo('turning on.');
|
|
33
|
+
// Example: Check for overcurrent protection
|
|
34
|
+
// if (this.hasOvercurrentTripped) {
|
|
35
|
+
// throw new MatterStatus.InvalidInState('Outlet overcurrent protection tripped - reset required')
|
|
36
|
+
// }
|
|
37
|
+
// Example: Check power monitoring threshold
|
|
38
|
+
// if (this.lastPowerDraw > this.maxWattage) {
|
|
39
|
+
// throw new MatterStatus.InvalidInState(`Cannot turn on - last load exceeded ${this.maxWattage}W limit`)
|
|
40
|
+
// }
|
|
41
|
+
// Example: Check if outlet is disabled by physical safety lock
|
|
42
|
+
// if (this.isPhysicallylocked) {
|
|
43
|
+
// throw new MatterStatus.PermissionDenied('Outlet is physically locked for safety')
|
|
44
|
+
// }
|
|
33
45
|
// TODO: await myOutletAPI.turnOn()
|
|
34
46
|
}
|
|
35
47
|
async handleOff() {
|
|
36
48
|
this.logInfo('turning off.');
|
|
49
|
+
// Example: Check if outlet can be turned off (some outlets with critical loads)
|
|
50
|
+
// if (this.isCriticalLoad) {
|
|
51
|
+
// throw new MatterStatus.InvalidInState('Cannot turn off outlet with critical load connected')
|
|
52
|
+
// }
|
|
37
53
|
// TODO: await myOutletAPI.turnOff()
|
|
38
54
|
}
|
|
39
|
-
updateOnOffState(isOn) {
|
|
40
|
-
this.updateState(this.api.matter.clusterNames.OnOff, { onOff: isOn });
|
|
55
|
+
async updateOnOffState(isOn) {
|
|
56
|
+
await this.updateState(this.api.matter.clusterNames.OnOff, { onOff: isOn });
|
|
41
57
|
}
|
|
42
58
|
}
|
|
43
59
|
//# sourceMappingURL=OnOffOutletAccessory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OnOffOutletAccessory.js","sourceRoot":"","sources":["../../src/devices/OnOffOutletAccessory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,MAAM,OAAO,oBAAqB,SAAQ,mBAAmB;IAC3D,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,eAAe;YAC5B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW;YAC9C,YAAY;YACZ,YAAY,EAAE,mBAAmB;YACjC,KAAK,EAAE,yBAAyB;YAChC,gBAAgB,EAAE,OAAO;YACzB,gBAAgB,EAAE,OAAO;YAEzB,QAAQ,EAAE;gBACR,KAAK,EAAE;oBACL,KAAK,EAAE,KAAK;iBACb;aACF;YAED,QAAQ,EAAE;gBACR,KAAK,EAAE;oBACL,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE;oBAC/B,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;iBAClC;aACF;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IAC9B,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"OnOffOutletAccessory.js","sourceRoot":"","sources":["../../src/devices/OnOffOutletAccessory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,MAAM,OAAO,oBAAqB,SAAQ,mBAAmB;IAC3D,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,eAAe;YAC5B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW;YAC9C,YAAY;YACZ,YAAY,EAAE,mBAAmB;YACjC,KAAK,EAAE,yBAAyB;YAChC,gBAAgB,EAAE,OAAO;YACzB,gBAAgB,EAAE,OAAO;YAEzB,QAAQ,EAAE;gBACR,KAAK,EAAE;oBACL,KAAK,EAAE,KAAK;iBACb;aACF;YAED,QAAQ,EAAE;gBACR,KAAK,EAAE;oBACL,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE;oBAC/B,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;iBAClC;aACF;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IAC9B,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;QAE3B,4CAA4C;QAC5C,oCAAoC;QACpC,oGAAoG;QACpG,IAAI;QAEJ,4CAA4C;QAC5C,8CAA8C;QAC9C,2GAA2G;QAC3G,IAAI;QAEJ,+DAA+D;QAC/D,iCAAiC;QACjC,sFAAsF;QACtF,IAAI;QAEJ,mCAAmC;IACrC,CAAC;IAEO,KAAK,CAAC,SAAS;QACrB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;QAE5B,gFAAgF;QAChF,6BAA6B;QAC7B,iGAAiG;QACjG,IAAI;QAEJ,oCAAoC;IACtC,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,IAAa;QACzC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IAC7E,CAAC;CACF"}
|
|
@@ -30,14 +30,26 @@ export class OnOffSwitchAccessory extends BaseMatterAccessory {
|
|
|
30
30
|
}
|
|
31
31
|
async handleOn() {
|
|
32
32
|
this.logInfo('turning on.');
|
|
33
|
+
// Example: Check if switch is in manual mode
|
|
34
|
+
// if (this.isManualModeEnabled) {
|
|
35
|
+
// throw new MatterStatus.InvalidInState('Switch is in manual mode - disable to allow remote control')
|
|
36
|
+
// }
|
|
37
|
+
// Example: Check load type compatibility
|
|
38
|
+
// if (this.loadType === 'inductive' && !this.supportsInductiveLoads) {
|
|
39
|
+
// throw new MatterStatus.InvalidAction('Switch not rated for inductive loads')
|
|
40
|
+
// }
|
|
33
41
|
// TODO: await mySwitchAPI.turnOn()
|
|
34
42
|
}
|
|
35
43
|
async handleOff() {
|
|
36
44
|
this.logInfo('turning off.');
|
|
45
|
+
// Example: Check if always-on mode is enabled
|
|
46
|
+
// if (this.alwaysOnMode) {
|
|
47
|
+
// throw new MatterStatus.InvalidInState('Switch is configured for always-on operation')
|
|
48
|
+
// }
|
|
37
49
|
// TODO: await mySwitchAPI.turnOff()
|
|
38
50
|
}
|
|
39
|
-
updateOnOffState(isOn) {
|
|
40
|
-
this.updateState(this.api.matter.clusterNames.OnOff, { onOff: isOn });
|
|
51
|
+
async updateOnOffState(isOn) {
|
|
52
|
+
await this.updateState(this.api.matter.clusterNames.OnOff, { onOff: isOn });
|
|
41
53
|
}
|
|
42
54
|
}
|
|
43
55
|
//# sourceMappingURL=OnOffSwitchAccessory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OnOffSwitchAccessory.js","sourceRoot":"","sources":["../../src/devices/OnOffSwitchAccessory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,MAAM,OAAO,oBAAqB,SAAQ,mBAAmB;IAC3D,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,eAAe;YAC5B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW;YAC9C,YAAY;YACZ,YAAY,EAAE,mBAAmB;YACjC,KAAK,EAAE,yBAAyB;YAChC,gBAAgB,EAAE,OAAO;YACzB,gBAAgB,EAAE,OAAO;YAEzB,QAAQ,EAAE;gBACR,KAAK,EAAE;oBACL,KAAK,EAAE,KAAK;iBACb;aACF;YAED,QAAQ,EAAE;gBACR,KAAK,EAAE;oBACL,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE;oBAC/B,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;iBAClC;aACF;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IAC9B,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"OnOffSwitchAccessory.js","sourceRoot":"","sources":["../../src/devices/OnOffSwitchAccessory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,MAAM,OAAO,oBAAqB,SAAQ,mBAAmB;IAC3D,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,eAAe;YAC5B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW;YAC9C,YAAY;YACZ,YAAY,EAAE,mBAAmB;YACjC,KAAK,EAAE,yBAAyB;YAChC,gBAAgB,EAAE,OAAO;YACzB,gBAAgB,EAAE,OAAO;YAEzB,QAAQ,EAAE;gBACR,KAAK,EAAE;oBACL,KAAK,EAAE,KAAK;iBACb;aACF;YAED,QAAQ,EAAE;gBACR,KAAK,EAAE;oBACL,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE;oBAC/B,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;iBAClC;aACF;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IAC9B,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;QAE3B,6CAA6C;QAC7C,kCAAkC;QAClC,wGAAwG;QACxG,IAAI;QAEJ,yCAAyC;QACzC,uEAAuE;QACvE,iFAAiF;QACjF,IAAI;QAEJ,mCAAmC;IACrC,CAAC;IAEO,KAAK,CAAC,SAAS;QACrB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;QAE5B,8CAA8C;QAC9C,2BAA2B;QAC3B,0FAA0F;QAC1F,IAAI;QAEJ,oCAAoC;IACtC,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,IAAa;QACzC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IAC7E,CAAC;CACF"}
|
|
@@ -48,15 +48,15 @@ export declare class RoboticVacuumAccessory extends BaseMatterAccessory {
|
|
|
48
48
|
*
|
|
49
49
|
* Since this is a platform accessory, state updates work immediately after registration.
|
|
50
50
|
*/
|
|
51
|
-
updateOperationalState(state: number): void
|
|
52
|
-
updateRunMode(mode: number): void
|
|
53
|
-
updateCleanMode(mode: number): void
|
|
54
|
-
updateSelectedAreas(areaIds: number[]): void
|
|
55
|
-
updateCurrentArea(areaId: number | null): void
|
|
51
|
+
updateOperationalState(state: number): Promise<void>;
|
|
52
|
+
updateRunMode(mode: number): Promise<void>;
|
|
53
|
+
updateCleanMode(mode: number): Promise<void>;
|
|
54
|
+
updateSelectedAreas(areaIds: number[]): Promise<void>;
|
|
55
|
+
updateCurrentArea(areaId: number | null): Promise<void>;
|
|
56
56
|
updateProgress(progress: Array<{
|
|
57
57
|
areaId: number;
|
|
58
58
|
status: number;
|
|
59
|
-
}>): void
|
|
59
|
+
}>): Promise<void>;
|
|
60
60
|
/**
|
|
61
61
|
* Update battery percentage
|
|
62
62
|
* @param percentage - Battery percentage (0-100)
|