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