@jay-d-tyler/homebridge-somfy-protect-automate 1.0.10 → 1.0.15
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/README.md +17 -3
- package/config.schema.json +1 -1
- package/dist/index.js +38 -15
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -27,6 +27,20 @@ This plugin requires the main Somfy Protect plugin to be installed and configure
|
|
|
27
27
|
|
|
28
28
|
Make sure your Somfy Protect alarm is working in HomeKit before installing this automation helper.
|
|
29
29
|
|
|
30
|
+
## ⚠️ Important: Bridge Configuration
|
|
31
|
+
|
|
32
|
+
**Both plugins must run on the Default Bridge (not child bridges)** for cross-plugin communication to work.
|
|
33
|
+
|
|
34
|
+
### How to Configure:
|
|
35
|
+
|
|
36
|
+
1. In Homebridge Config UI X, go to **Plugins**
|
|
37
|
+
2. Click on **Somfy Protect** → Settings (gear icon)
|
|
38
|
+
3. Under **Bridge Settings**, select **"Default Bridge"**
|
|
39
|
+
4. Do the same for **Somfy Protect Automate**
|
|
40
|
+
5. Restart Homebridge
|
|
41
|
+
|
|
42
|
+
**Why?** Child bridges isolate plugins from each other. Since this plugin needs to access the Somfy Protect alarm accessory, both must share the same bridge (the main one).
|
|
43
|
+
|
|
30
44
|
## Installation
|
|
31
45
|
|
|
32
46
|
### Option 1: Homebridge Config UI X (Recommended)
|
|
@@ -54,7 +68,7 @@ Add this platform to your Homebridge `config.json`:
|
|
|
54
68
|
{
|
|
55
69
|
"platform": "SomfyProtectAutomate",
|
|
56
70
|
"name": "Somfy Protect Automate",
|
|
57
|
-
"
|
|
71
|
+
"alarmName": "Somfy Protect"
|
|
58
72
|
}
|
|
59
73
|
]
|
|
60
74
|
}
|
|
@@ -65,8 +79,8 @@ Add this platform to your Homebridge `config.json`:
|
|
|
65
79
|
| Option | Type | Required | Default | Description |
|
|
66
80
|
|--------|------|----------|---------|-------------|
|
|
67
81
|
| `platform` | string | Yes | `SomfyProtectAutomate` | Must be `SomfyProtectAutomate` |
|
|
68
|
-
| `name` | string |
|
|
69
|
-
| `
|
|
82
|
+
| `name` | string | No | `Somfy Protect Automate` | The name that appears in Homebridge logs |
|
|
83
|
+
| `alarmName` | string | Yes | `Somfy Protect` | The exact name of your Somfy Protect alarm as shown in the Home app |
|
|
70
84
|
|
|
71
85
|
## Usage
|
|
72
86
|
|
package/config.schema.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"pluginAlias": "SomfyProtectAutomate",
|
|
3
3
|
"pluginType": "platform",
|
|
4
4
|
"singular": true,
|
|
5
|
-
"headerDisplay": "This plugin creates a switch called **Disarm Somfy Protect** that can be used in HomeKit automations to disarm your Somfy Protect alarm.",
|
|
5
|
+
"headerDisplay": "This plugin creates a switch called **Disarm Somfy Protect** that can be used in HomeKit automations to disarm your Somfy Protect alarm.\n\n⚠️ **IMPORTANT:** Both this plugin and the Somfy Protect plugin must run on the **Default Bridge** (not child bridges) for cross-plugin communication to work. Go to each plugin's settings → Bridge Settings → Select \"Default Bridge\".",
|
|
6
6
|
"footerDisplay": "💡 **Tip:** Find your alarm's exact name in the Home app, then enter it above. You can rename the switch in the Home app if desired.",
|
|
7
7
|
"schema": {
|
|
8
8
|
"type": "object",
|
package/dist/index.js
CHANGED
|
@@ -16,9 +16,11 @@ class SomfyProtectAutomatePlatform {
|
|
|
16
16
|
this.api = api;
|
|
17
17
|
this.Service = this.api.hap.Service;
|
|
18
18
|
this.Characteristic = this.api.hap.Characteristic;
|
|
19
|
-
this.log.
|
|
19
|
+
this.log.info('=== Somfy Protect Automate v1.0.10 Initializing ===');
|
|
20
|
+
this.log.info('Platform name:', this.config.name);
|
|
21
|
+
this.log.info('Alarm name configured:', this.config.alarmName || '(not set)');
|
|
20
22
|
this.api.on('didFinishLaunching', () => {
|
|
21
|
-
this.log.
|
|
23
|
+
this.log.info('Homebridge finished launching, discovering devices...');
|
|
22
24
|
this.discoverDevices();
|
|
23
25
|
});
|
|
24
26
|
}
|
|
@@ -27,8 +29,18 @@ class SomfyProtectAutomatePlatform {
|
|
|
27
29
|
this.accessories.push(accessory);
|
|
28
30
|
}
|
|
29
31
|
discoverDevices() {
|
|
32
|
+
this.log.info('Starting device discovery...');
|
|
30
33
|
const buttonLabel = 'Disarm Somfy Protect';
|
|
31
34
|
const uuid = this.api.hap.uuid.generate(buttonLabel);
|
|
35
|
+
this.log.info(`Generated UUID for "${buttonLabel}": ${uuid}`);
|
|
36
|
+
const oldAccessoriesToRemove = this.accessories.filter(acc => acc.UUID !== uuid);
|
|
37
|
+
if (oldAccessoriesToRemove.length > 0) {
|
|
38
|
+
this.log.info(`Removing ${oldAccessoriesToRemove.length} old cached accessory(ies)...`);
|
|
39
|
+
oldAccessoriesToRemove.forEach(acc => {
|
|
40
|
+
this.log.info(` - Removing: "${acc.displayName}"`);
|
|
41
|
+
});
|
|
42
|
+
this.api.unregisterPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, oldAccessoriesToRemove);
|
|
43
|
+
}
|
|
32
44
|
const existingAccessory = this.accessories.find(accessory => accessory.UUID === uuid);
|
|
33
45
|
if (existingAccessory) {
|
|
34
46
|
this.log.info('Restoring existing accessory from cache:', existingAccessory.displayName);
|
|
@@ -38,7 +50,9 @@ class SomfyProtectAutomatePlatform {
|
|
|
38
50
|
this.log.info('Adding new accessory:', buttonLabel);
|
|
39
51
|
const accessory = new this.api.platformAccessory(buttonLabel, uuid);
|
|
40
52
|
new SomfyDisarmSwitch(this, accessory);
|
|
53
|
+
this.log.info('Registering accessory with Homebridge...');
|
|
41
54
|
this.api.registerPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [accessory]);
|
|
55
|
+
this.log.info('✓ Accessory registered successfully');
|
|
42
56
|
}
|
|
43
57
|
}
|
|
44
58
|
}
|
|
@@ -50,6 +64,7 @@ class SomfyDisarmSwitch {
|
|
|
50
64
|
constructor(platform, accessory) {
|
|
51
65
|
this.platform = platform;
|
|
52
66
|
this.accessory = accessory;
|
|
67
|
+
this.platform.log.info(`Initializing switch: "${accessory.displayName}"`);
|
|
53
68
|
this.accessory.getService(this.platform.Service.AccessoryInformation)
|
|
54
69
|
.setCharacteristic(this.platform.Characteristic.Manufacturer, 'Jay Tyler')
|
|
55
70
|
.setCharacteristic(this.platform.Characteristic.Model, 'Somfy Disarm Switch')
|
|
@@ -57,9 +72,11 @@ class SomfyDisarmSwitch {
|
|
|
57
72
|
this.service = this.accessory.getService(this.platform.Service.Switch)
|
|
58
73
|
|| this.accessory.addService(this.platform.Service.Switch);
|
|
59
74
|
this.service.setCharacteristic(this.platform.Characteristic.Name, accessory.displayName);
|
|
75
|
+
this.platform.log.info('Registering characteristic handlers...');
|
|
60
76
|
this.service.getCharacteristic(this.platform.Characteristic.On)
|
|
61
77
|
.onSet(this.setOn.bind(this))
|
|
62
78
|
.onGet(this.getOn.bind(this));
|
|
79
|
+
this.platform.log.info('✓ Switch initialized and ready');
|
|
63
80
|
}
|
|
64
81
|
async setOn(value) {
|
|
65
82
|
const isOn = value;
|
|
@@ -85,25 +102,30 @@ class SomfyDisarmSwitch {
|
|
|
85
102
|
return;
|
|
86
103
|
}
|
|
87
104
|
this.platform.log.info(`Attempting to disarm Somfy Protect alarm: "${this.platform.config.alarmName}"...`);
|
|
88
|
-
const
|
|
89
|
-
|
|
90
|
-
|
|
105
|
+
const homebridgeAPI = this.platform.api;
|
|
106
|
+
if (!homebridgeAPI._bridge) {
|
|
107
|
+
this.platform.log.error('Could not access Homebridge bridge instance');
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
const bridge = homebridgeAPI._bridge;
|
|
111
|
+
const bridgedAccessories = bridge.bridgedAccessories || [];
|
|
112
|
+
this.platform.log.info(`Searching through ${bridgedAccessories.length} HAP accessories on the bridge...`);
|
|
113
|
+
if (bridgedAccessories.length > 0) {
|
|
91
114
|
this.platform.log.info('Available accessories:');
|
|
92
|
-
|
|
115
|
+
bridgedAccessories.forEach((acc, index) => {
|
|
93
116
|
this.platform.log.info(` ${index + 1}. "${acc.displayName}"`);
|
|
94
117
|
});
|
|
95
118
|
}
|
|
96
119
|
else {
|
|
97
|
-
this.platform.log.
|
|
98
|
-
this.platform.log.
|
|
99
|
-
this.platform.log.warn('You may need to use a different approach to control your alarm.');
|
|
120
|
+
this.platform.log.error('No accessories found on the bridge.');
|
|
121
|
+
this.platform.log.error('Make sure both plugins are running on the Default Bridge (not child bridges).');
|
|
100
122
|
return;
|
|
101
123
|
}
|
|
102
|
-
const targetAccessory =
|
|
124
|
+
const targetAccessory = bridgedAccessories.find((acc) => acc.displayName === this.platform.config.alarmName);
|
|
103
125
|
if (!targetAccessory) {
|
|
104
126
|
this.platform.log.error(`Could not find alarm with name "${this.platform.config.alarmName}"`);
|
|
105
127
|
this.platform.log.error('Available accessories:');
|
|
106
|
-
|
|
128
|
+
bridgedAccessories.forEach((acc) => {
|
|
107
129
|
this.platform.log.error(` - "${acc.displayName}"`);
|
|
108
130
|
});
|
|
109
131
|
this.platform.log.error('Please update the "alarmName" setting to match exactly.');
|
|
@@ -111,21 +133,22 @@ class SomfyDisarmSwitch {
|
|
|
111
133
|
}
|
|
112
134
|
this.platform.log.info(`Found target accessory: "${targetAccessory.displayName}"`);
|
|
113
135
|
const services = targetAccessory.services;
|
|
114
|
-
this.platform.log.info(` Services: ${services.map(s => s.displayName || s.UUID).join(', ')}`);
|
|
115
|
-
const securityService =
|
|
136
|
+
this.platform.log.info(` Services: ${services.map((s) => s.displayName || s.UUID).join(', ')}`);
|
|
137
|
+
const securityService = services.find((s) => s.UUID === this.platform.Service.SecuritySystem.UUID);
|
|
116
138
|
if (!securityService) {
|
|
117
139
|
this.platform.log.error(`Accessory "${targetAccessory.displayName}" does not have a SecuritySystem service`);
|
|
118
140
|
this.platform.log.error('Make sure this is the correct alarm accessory.');
|
|
119
141
|
return;
|
|
120
142
|
}
|
|
121
143
|
this.platform.log.info('Found SecuritySystem service');
|
|
122
|
-
const targetStateChar = securityService.
|
|
144
|
+
const targetStateChar = securityService.characteristics.find((c) => c.UUID === this.platform.Characteristic.SecuritySystemTargetState.UUID);
|
|
123
145
|
if (!targetStateChar) {
|
|
124
146
|
this.platform.log.error('SecuritySystem service does not have TargetState characteristic');
|
|
125
147
|
return;
|
|
126
148
|
}
|
|
127
149
|
const DISARM = this.platform.Characteristic.SecuritySystemTargetState.DISARM;
|
|
128
|
-
|
|
150
|
+
this.platform.log.info(`Setting SecuritySystemTargetState to DISARM (${DISARM})...`);
|
|
151
|
+
targetStateChar.setValue(DISARM);
|
|
129
152
|
this.platform.log.info(`✓ Successfully sent DISARM command to "${targetAccessory.displayName}"`);
|
|
130
153
|
}
|
|
131
154
|
catch (error) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,GAAG,gDAAgD,CAAC;AACrE,MAAM,aAAa,GAAG,sBAAsB,CAAC;AAO7C,eAAe,CAAC,GAAQ,EAAE,EAAE;IAC1B,GAAG,CAAC,gBAAgB,CAAC,WAAW,EAAE,aAAa,EAAE,4BAA4B,CAAC,CAAC;AACjF,CAAC,CAAC;AAEF,MAAM,4BAA4B;IAMd;IACA;IACA;IAPF,OAAO,CAAiB;IACxB,cAAc,CAAwB;IACtC,WAAW,GAAwB,EAAE,CAAC;IAEtD,YACkB,GAAW,EACX,MAA0C,EAC1C,GAAQ;QAFR,QAAG,GAAH,GAAG,CAAQ;QACX,WAAM,GAAN,MAAM,CAAoC;QAC1C,QAAG,GAAH,GAAG,CAAK;QAExB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;QACpC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC;QAClD,IAAI,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@jay-d-tyler/homebridge-somfy-protect-automate",
|
|
3
3
|
"displayName": "Somfy Protect Automate",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"version": "1.0.
|
|
5
|
+
"version": "1.0.15",
|
|
6
6
|
"private": false,
|
|
7
7
|
"description": "A Homebridge plugin that provides a stateless switch to disarm Somfy Protect alarms via automations",
|
|
8
8
|
"author": "Jay Tyler",
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
"README.md"
|
|
33
33
|
],
|
|
34
34
|
"engines": {
|
|
35
|
-
"node": "
|
|
36
|
-
"homebridge": "
|
|
35
|
+
"node": ">=18.17.0",
|
|
36
|
+
"homebridge": ">=1.6.0"
|
|
37
37
|
},
|
|
38
38
|
"scripts": {
|
|
39
39
|
"build": "rimraf ./dist && tsc",
|