@jay-d-tyler/homebridge-somfy-protect-automate 1.0.15 ā 2.0.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/README.md +13 -17
- package/config.schema.json +23 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -50
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -14,32 +14,26 @@ This plugin creates a workaround by providing a **stateless switch** that, when
|
|
|
14
14
|
## Features
|
|
15
15
|
|
|
16
16
|
- š **Stateless Switch**: Acts like a button that automatically resets after use
|
|
17
|
-
-
|
|
17
|
+
- š **HTTP API Communication**: Uses REST API for reliable cross-plugin communication
|
|
18
18
|
- š **One-Way Operation**: Only disarms (prevents accidental arming via automation)
|
|
19
19
|
- ā” **Instant Response**: Triggers immediately when activated
|
|
20
20
|
- šÆ **Simple Setup**: Minimal configuration required
|
|
21
|
+
- š **Optional Security**: Supports token-based authentication
|
|
21
22
|
|
|
22
23
|
## Prerequisites
|
|
23
24
|
|
|
24
|
-
This plugin requires the main Somfy Protect plugin to be installed and configured:
|
|
25
|
+
This plugin requires the main Somfy Protect plugin (v2.2.0+) to be installed and configured with HTTP API enabled:
|
|
25
26
|
|
|
26
27
|
- [@jay-d-tyler/homebridge-somfy-protect](https://github.com/jay-d-tyler/homebridge-somfy-protect)
|
|
27
28
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
## ā ļø Important: Bridge Configuration
|
|
31
|
-
|
|
32
|
-
**Both plugins must run on the Default Bridge (not child bridges)** for cross-plugin communication to work.
|
|
29
|
+
### Enable HTTP API in Somfy Protect Plugin:
|
|
33
30
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
3. Under **Bridge Settings**, select **"Default Bridge"**
|
|
39
|
-
4. Do the same for **Somfy Protect Automate**
|
|
40
|
-
5. Restart Homebridge
|
|
31
|
+
1. Go to Somfy Protect plugin settings
|
|
32
|
+
2. Set `httpPort` to `8581` (or any available port)
|
|
33
|
+
3. Optionally set `httpToken` for authentication
|
|
34
|
+
4. Restart Homebridge
|
|
41
35
|
|
|
42
|
-
|
|
36
|
+
Make sure your Somfy Protect alarm is working in HomeKit before installing this automation helper.
|
|
43
37
|
|
|
44
38
|
## Installation
|
|
45
39
|
|
|
@@ -68,7 +62,8 @@ Add this platform to your Homebridge `config.json`:
|
|
|
68
62
|
{
|
|
69
63
|
"platform": "SomfyProtectAutomate",
|
|
70
64
|
"name": "Somfy Protect Automate",
|
|
71
|
-
"
|
|
65
|
+
"httpPort": 8581,
|
|
66
|
+
"httpToken": "optional-secret-token"
|
|
72
67
|
}
|
|
73
68
|
]
|
|
74
69
|
}
|
|
@@ -80,7 +75,8 @@ Add this platform to your Homebridge `config.json`:
|
|
|
80
75
|
|--------|------|----------|---------|-------------|
|
|
81
76
|
| `platform` | string | Yes | `SomfyProtectAutomate` | Must be `SomfyProtectAutomate` |
|
|
82
77
|
| `name` | string | No | `Somfy Protect Automate` | The name that appears in Homebridge logs |
|
|
83
|
-
| `
|
|
78
|
+
| `httpPort` | number | No | `8581` | Port the Somfy Protect HTTP API is listening on |
|
|
79
|
+
| `httpToken` | string | No | - | Optional authentication token (must match Somfy Protect plugin) |
|
|
84
80
|
|
|
85
81
|
## Usage
|
|
86
82
|
|
package/config.schema.json
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
"pluginAlias": "SomfyProtectAutomate",
|
|
3
3
|
"pluginType": "platform",
|
|
4
4
|
"singular": true,
|
|
5
|
-
"headerDisplay": "This plugin creates a switch called **Disarm Somfy Protect** that
|
|
6
|
-
"footerDisplay": "š” **Tip:**
|
|
5
|
+
"headerDisplay": "This plugin creates a switch called **Disarm Somfy Protect** that communicates with the Somfy Protect plugin's HTTP API to disarm your alarm via HomeKit automations.\n\nā ļø **IMPORTANT:** The Somfy Protect plugin must have the HTTP API enabled (httpPort setting). Both plugins can run on child bridges.",
|
|
6
|
+
"footerDisplay": "š” **Tip:** Make sure the HTTP port and token match what you configured in the Somfy Protect plugin settings.",
|
|
7
7
|
"schema": {
|
|
8
8
|
"type": "object",
|
|
9
9
|
"properties": {
|
|
@@ -13,25 +13,37 @@
|
|
|
13
13
|
"default": "Somfy Protect Automate",
|
|
14
14
|
"required": false
|
|
15
15
|
},
|
|
16
|
-
"
|
|
17
|
-
"title": "Somfy Protect
|
|
16
|
+
"httpPort": {
|
|
17
|
+
"title": "Somfy Protect HTTP API Port",
|
|
18
|
+
"type": "integer",
|
|
19
|
+
"default": 8581,
|
|
20
|
+
"required": false,
|
|
21
|
+
"description": "The HTTP port that the Somfy Protect plugin is listening on. Must match the httpPort setting in Somfy Protect plugin."
|
|
22
|
+
},
|
|
23
|
+
"httpToken": {
|
|
24
|
+
"title": "HTTP API Token (Optional)",
|
|
18
25
|
"type": "string",
|
|
19
|
-
"required":
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
|
|
26
|
+
"required": false,
|
|
27
|
+
"description": "The authentication token if you configured httpToken in the Somfy Protect plugin. Leave blank if no token is set.",
|
|
28
|
+
"x-schema-form": {
|
|
29
|
+
"type": "password"
|
|
30
|
+
}
|
|
23
31
|
}
|
|
24
32
|
}
|
|
25
33
|
},
|
|
26
34
|
"layout": [
|
|
27
35
|
{
|
|
28
36
|
"type": "fieldset",
|
|
29
|
-
"title": "Configuration",
|
|
37
|
+
"title": "HTTP API Configuration",
|
|
30
38
|
"expandable": false,
|
|
31
39
|
"items": [
|
|
32
40
|
{
|
|
33
|
-
"key": "
|
|
34
|
-
"description": "
|
|
41
|
+
"key": "httpPort",
|
|
42
|
+
"description": "This must match the httpPort configured in the Somfy Protect plugin settings."
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"key": "httpToken",
|
|
46
|
+
"description": "Optional security token. Only needed if you set httpToken in Somfy Protect plugin."
|
|
35
47
|
}
|
|
36
48
|
]
|
|
37
49
|
}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,GAAG,EAQJ,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,GAAG,EAQJ,MAAM,YAAY,CAAC;yBAWJ,KAAK,GAAG;AAAxB,wBAEE"}
|
package/dist/index.js
CHANGED
|
@@ -97,62 +97,43 @@ class SomfyDisarmSwitch {
|
|
|
97
97
|
}
|
|
98
98
|
async disarmSomfyAlarm() {
|
|
99
99
|
try {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
100
|
+
const port = this.platform.config.httpPort || 8581;
|
|
101
|
+
const token = this.platform.config.httpToken;
|
|
102
|
+
const url = `http://localhost:${port}/disarm`;
|
|
103
|
+
this.platform.log.info(`Sending disarm command to Somfy Protect HTTP API at ${url}...`);
|
|
104
|
+
const headers = {
|
|
105
|
+
'Content-Type': 'application/json',
|
|
106
|
+
};
|
|
107
|
+
if (token) {
|
|
108
|
+
headers.Authorization = `Bearer ${token}`;
|
|
103
109
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
110
|
+
const response = await fetch(url, {
|
|
111
|
+
method: 'POST',
|
|
112
|
+
headers,
|
|
113
|
+
});
|
|
114
|
+
if (!response.ok) {
|
|
115
|
+
const errorText = await response.text();
|
|
116
|
+
this.platform.log.error(`HTTP API returned error ${response.status}: ${errorText}`);
|
|
117
|
+
this.platform.log.error('Make sure the Somfy Protect plugin HTTP API is enabled and configured correctly.');
|
|
108
118
|
return;
|
|
109
119
|
}
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
this.platform.log.info(`
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
120
|
+
const result = await response.json();
|
|
121
|
+
this.platform.log.info('ā Successfully disarmed alarm via HTTP API');
|
|
122
|
+
this.platform.log.info(`Response: ${JSON.stringify(result)}`);
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
if (error instanceof Error) {
|
|
126
|
+
if (error.message.includes('ECONNREFUSED')) {
|
|
127
|
+
this.platform.log.error(`Could not connect to Somfy Protect HTTP API on port ${this.platform.config.httpPort || 8581}`);
|
|
128
|
+
this.platform.log.error('Make sure the Somfy Protect plugin is running and HTTP API is enabled.');
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
this.platform.log.error('Error calling Somfy Protect HTTP API:', error.message);
|
|
132
|
+
}
|
|
118
133
|
}
|
|
119
134
|
else {
|
|
120
|
-
this.platform.log.error('
|
|
121
|
-
this.platform.log.error('Make sure both plugins are running on the Default Bridge (not child bridges).');
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
124
|
-
const targetAccessory = bridgedAccessories.find((acc) => acc.displayName === this.platform.config.alarmName);
|
|
125
|
-
if (!targetAccessory) {
|
|
126
|
-
this.platform.log.error(`Could not find alarm with name "${this.platform.config.alarmName}"`);
|
|
127
|
-
this.platform.log.error('Available accessories:');
|
|
128
|
-
bridgedAccessories.forEach((acc) => {
|
|
129
|
-
this.platform.log.error(` - "${acc.displayName}"`);
|
|
130
|
-
});
|
|
131
|
-
this.platform.log.error('Please update the "alarmName" setting to match exactly.');
|
|
132
|
-
return;
|
|
135
|
+
this.platform.log.error('Unknown error calling Somfy Protect HTTP API:', error);
|
|
133
136
|
}
|
|
134
|
-
this.platform.log.info(`Found target accessory: "${targetAccessory.displayName}"`);
|
|
135
|
-
const services = targetAccessory.services;
|
|
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);
|
|
138
|
-
if (!securityService) {
|
|
139
|
-
this.platform.log.error(`Accessory "${targetAccessory.displayName}" does not have a SecuritySystem service`);
|
|
140
|
-
this.platform.log.error('Make sure this is the correct alarm accessory.');
|
|
141
|
-
return;
|
|
142
|
-
}
|
|
143
|
-
this.platform.log.info('Found SecuritySystem service');
|
|
144
|
-
const targetStateChar = securityService.characteristics.find((c) => c.UUID === this.platform.Characteristic.SecuritySystemTargetState.UUID);
|
|
145
|
-
if (!targetStateChar) {
|
|
146
|
-
this.platform.log.error('SecuritySystem service does not have TargetState characteristic');
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
const DISARM = this.platform.Characteristic.SecuritySystemTargetState.DISARM;
|
|
150
|
-
this.platform.log.info(`Setting SecuritySystemTargetState to DISARM (${DISARM})...`);
|
|
151
|
-
targetStateChar.setValue(DISARM);
|
|
152
|
-
this.platform.log.info(`ā Successfully sent DISARM command to "${targetAccessory.displayName}"`);
|
|
153
|
-
}
|
|
154
|
-
catch (error) {
|
|
155
|
-
this.platform.log.error('Error disarming Somfy alarm:', error);
|
|
156
137
|
}
|
|
157
138
|
}
|
|
158
139
|
}
|
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;
|
|
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": "
|
|
5
|
+
"version": "2.0.1",
|
|
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",
|