homebridge-adt-pulse 3.0.0-beta.11 → 3.0.0-beta.13
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/LICENSE +7 -7
- package/README.md +19 -14
- package/build/config.schema.json +14 -3
- package/build/src/lib/accessory.js +124 -65
- package/build/src/lib/accessory.js.map +1 -1
- package/build/src/lib/api.js +34 -10
- package/build/src/lib/api.js.map +1 -1
- package/build/src/lib/detect.js +141 -244
- package/build/src/lib/detect.js.map +1 -1
- package/build/src/lib/items.js +182 -0
- package/build/src/lib/items.js.map +1 -0
- package/build/src/lib/platform.js +2 -2
- package/build/src/lib/platform.js.map +1 -1
- package/build/src/lib/regex.js +1 -1
- package/build/src/lib/regex.js.map +1 -1
- package/build/src/lib/schema.js +2 -0
- package/build/src/lib/schema.js.map +1 -1
- package/build/src/lib/utility.js +71 -16
- package/build/src/lib/utility.js.map +1 -1
- package/build/src/scripts/repl.js +1 -1
- package/build/src/scripts/repl.js.map +1 -1
- package/build/src/scripts/test-api.js +5 -5
- package/build/src/scripts/test-api.js.map +1 -1
- package/config.schema.json +14 -3
- package/package.json +15 -9
package/LICENSE
CHANGED
|
@@ -6,10 +6,10 @@ Permission to use, copy, modify, and/or distribute this software for any
|
|
|
6
6
|
purpose with or without fee is hereby granted, provided that the above
|
|
7
7
|
copyright notice and this permission notice appear in all copies.
|
|
8
8
|
|
|
9
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
9
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
10
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
11
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
12
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
13
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
14
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
15
|
+
PERFORMANCE OF THIS SOFTWARE.
|
package/README.md
CHANGED
|
@@ -10,14 +10,15 @@ __HOOBS Users:__ Please do not use the configuration UI as that is currently out
|
|
|
10
10
|
|
|
11
11
|
Additionally, I am seeing that the developers for HOOBS are stale based on the activity and complaints I see on [Reddit](https://www.reddit.com/r/HOOBS/). Support will be "best effort", and official status will be pulled in the meantime.
|
|
12
12
|
|
|
13
|
-
[](https://www.npmjs.com/package/homebridge-adt-pulse)
|
|
14
|
+
[](https://www.npmjs.com/package/homebridge-adt-pulse)
|
|
15
|
+
[](https://github.com/mrjackyliang/homebridge-adt-pulse/blob/main/LICENSE)
|
|
16
|
+
[](https://github.com/sponsors/mrjackyliang)
|
|
17
|
+
[](https://liang.nyc/paypal)
|
|
17
18
|
|
|
18
19
|
This is a [verified Homebridge plugin](https://github.com/homebridge/homebridge/wiki/verified-Plugins#verified-plugins) for ADT Pulse customers that allow homeowners to control their security system and view sensor status through the Home app (the HAP protocol).
|
|
19
20
|
|
|
20
|
-
The API relies on the ADT Pulse Web Portal (powered by Icontrol One, owned by ICN Acquisition LLC, an indirect subsidiary of [Alarm.com](https://alarm.com))
|
|
21
|
+
The API relies on the ADT Pulse Web Portal (powered by Icontrol One, owned by ICN Acquisition LLC, an indirect subsidiary of [Alarm.com](https://alarm.com))
|
|
21
22
|
|
|
22
23
|
To use this plugin, here are three simple steps you need to follow:
|
|
23
24
|
1. Run `npm install homebridge-adt-pulse`
|
|
@@ -75,7 +76,9 @@ This plugin can expose these devices (in read-only mode) based on your configura
|
|
|
75
76
|
7. `motion` - Motion Sensor __::__ Motion Sensor (Notable Events Only)
|
|
76
77
|
8. `panic` - Audible Panic Button/Pendant __::__ Silent Panic Button/Pendant
|
|
77
78
|
9. `shock` - Shock Sensor
|
|
78
|
-
10. `
|
|
79
|
+
10. `supervisory` - System/Supervisory
|
|
80
|
+
11. `temperature` - Temperature Sensor
|
|
81
|
+
12. `unknown` - Unknown Device Type
|
|
79
82
|
|
|
80
83
|
Due to implementation complexity and platform instability, all Z-Wave accessories connected to the ADT Pulse gateway will not be planned for development or be supported overall. Consider purchasing the [Hubitat Hub](https://hubitat.com) for a seamless setup experience, or read about the [Home Assistant Z-Wave](https://www.home-assistant.io/integrations/zwave_js/) integration.
|
|
81
84
|
|
|
@@ -85,13 +88,13 @@ ADT Pulse is available to consumers in either the United States or Canada. To sp
|
|
|
85
88
|
- If you are a United States customer, set the `subdomain` value to `"portal"`.
|
|
86
89
|
- If you are a Canada customer, set the `subdomain` value to `"portal-ca"`.
|
|
87
90
|
|
|
88
|
-
Select the appropriate setting based on your country, as the ability to switch between countries is determined by the ADT region
|
|
91
|
+
Select the appropriate setting based on your country, as the ability to switch between countries is determined by the ADT region you are subscribed to.
|
|
89
92
|
|
|
90
93
|
## Finding the Device Fingerprint
|
|
91
|
-
Since the introduction of 2-factor authentication
|
|
94
|
+
Since the introduction of 2-factor authentication, a device fingerprint has become a necessity during login. To retrieve the fingerprint, follow these steps:
|
|
92
95
|
|
|
93
96
|
1. Log in to the ADT Pulse portal, complete the MFA challenge, and choose to "Trust this device" (you can name the device as you see fit).
|
|
94
|
-
2. Using the same browser used for login,
|
|
97
|
+
2. Using the same browser that was used for login, visit the [ADT Pulse Device Fingerprint Detector](https://raw.githack.com/mrjackyliang/homebridge-adt-pulse/main/fingerprint/index.html) web page.
|
|
95
98
|
3. Click the "Copy Fingerprint" button and paste it into the `fingerprint` value in the `config.json` file.
|
|
96
99
|
|
|
97
100
|
For a detailed breakdown of the device fingerprint contents, explore the "Device Details" tab located at the top right of the web page.
|
|
@@ -110,14 +113,14 @@ This precautionary measure is in place to avoid unintended resets that could lea
|
|
|
110
113
|
## Specifying the Synchronization Speed
|
|
111
114
|
Typically, the plugin triggers every second to assess whether sync check signals or keep-alive signals should be dispatched.
|
|
112
115
|
|
|
113
|
-
However, for older devices incompatible with newer OpenSSL versions (
|
|
116
|
+
However, for certain consumer routers, this plugin may induce a network slowdown, and on older devices incompatible with newer OpenSSL versions (`v3.1`), may result in sustained 100% CPU usage. In an attempt to address both issues, adjust the firing interval using the following settings:
|
|
114
117
|
|
|
115
118
|
- For "Normal" operation speed, set the `speed` value to `1`.
|
|
116
119
|
- For "Moderate" operation speed, set the `speed` value to `0.75`.
|
|
117
120
|
- For "Slower" operation speed, set the `speed` value to `0.5`.
|
|
118
121
|
- For "Slowest" operation speed, set the `speed` value to `0.25`.
|
|
119
122
|
|
|
120
|
-
If the plugin does not operate under "Normal" mode, a warning will be issued on every startup, and this warning cannot be disabled.
|
|
123
|
+
If the plugin does not operate under "Normal" mode, a warning will be issued on every startup, and this warning cannot be disabled.
|
|
121
124
|
|
|
122
125
|
## Specifying the Sensors
|
|
123
126
|
In the past, this plugin would automatically detect sensors and dynamically manage their addition and removal based on its observations.
|
|
@@ -144,7 +147,7 @@ If you do not find the supported type listed, please note that the plugin will n
|
|
|
144
147
|
Your patience is appreciated as I address and incorporate the necessary updates.
|
|
145
148
|
|
|
146
149
|
## Force Arming (Arm Away / Arm Stay / Arm Night)
|
|
147
|
-
Due to the way how the Home app (the HAP protocol) establishes arm states, the plugin will force arm upon detecting active motion or open sensors. Disabling this feature is not possible, as this will result in arming failures without alert notifications
|
|
150
|
+
Due to the way how the Home app (the HAP protocol) establishes arm states, the plugin will force arm upon detecting active motion or open sensors. Disabling this feature is not possible, as this will result in arming failures without alert notifications.
|
|
148
151
|
|
|
149
152
|
If you are concerned about this, please read the instructions below to check the status of the sensors in your home before arming your system:
|
|
150
153
|
|
|
@@ -158,9 +161,11 @@ If you are using automation, __you acknowledge that this will happen__ and accep
|
|
|
158
161
|
As for ADT Pulse systems, __Arm Night__ is only available for use through the panel itself. Although it is not visible on the Web Portal or the mobile app, you can still place your system in __Arm Night__ mode with this plugin.
|
|
159
162
|
|
|
160
163
|
## Debug Mode
|
|
161
|
-
Previously, there was a
|
|
164
|
+
Previously, there was a setting to allow users to switch the plugin to debug mode. Over time, it became apparent that this setting made resolving issues excessively challenging.
|
|
162
165
|
|
|
163
|
-
|
|
166
|
+
Consumers would enable debug mode, but forget to also enable Homebridge debug mode, causing contributors to not be able to effectively resolve bug reports.
|
|
167
|
+
|
|
168
|
+
To improve this, debug mode is now activated __ONLY when debug mode is enabled on Homebridge__ itself. This approach promotes isolation (logs can be separated for each bridge) and helps enhance the troubleshooting experience in case any issues arise.
|
|
164
169
|
|
|
165
170
|
## Documentation, Logging, and Detection
|
|
166
171
|
This function comes with a built-in feature to notify me if the plugin detects anomalies in the states of sensors and panel statuses. In the event of such occurrences, especially when these statuses are undocumented, I will receive notifications.
|
package/build/config.schema.json
CHANGED
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
]
|
|
85
85
|
},
|
|
86
86
|
{
|
|
87
|
-
"title": "Reset
|
|
87
|
+
"title": "Reset - \uD83D\uDED1 DANGER",
|
|
88
88
|
"enum": [
|
|
89
89
|
"reset"
|
|
90
90
|
]
|
|
@@ -211,11 +211,23 @@
|
|
|
211
211
|
"shock"
|
|
212
212
|
]
|
|
213
213
|
},
|
|
214
|
+
{
|
|
215
|
+
"title": "System/Supervisory",
|
|
216
|
+
"enum": [
|
|
217
|
+
"supervisory"
|
|
218
|
+
]
|
|
219
|
+
},
|
|
214
220
|
{
|
|
215
221
|
"title": "Temperature Sensor",
|
|
216
222
|
"enum": [
|
|
217
223
|
"temperature"
|
|
218
224
|
]
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
"title": "Unknown Device Type",
|
|
228
|
+
"enum": [
|
|
229
|
+
"unknown"
|
|
230
|
+
]
|
|
219
231
|
}
|
|
220
232
|
]
|
|
221
233
|
},
|
|
@@ -289,12 +301,11 @@
|
|
|
289
301
|
"items": [
|
|
290
302
|
{
|
|
291
303
|
"key": "sensors",
|
|
292
|
-
"htmlClass": "p-10",
|
|
293
304
|
"buttonText": "Add Sensor",
|
|
294
305
|
"items": [
|
|
295
306
|
{
|
|
296
307
|
"type": "div",
|
|
297
|
-
"htmlClass": "my-
|
|
308
|
+
"htmlClass": "my-4 p-4",
|
|
298
309
|
"items": [
|
|
299
310
|
{
|
|
300
311
|
"key": "sensors[].name",
|
|
@@ -1,17 +1,25 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { detectedNewDeviceContext } from './detect.js';
|
|
3
|
+
import { condensedSensorTypeItems } from './items.js';
|
|
4
|
+
import { condensePanelStates, generateHash } from './utility.js';
|
|
1
5
|
export class ADTPulseAccessory {
|
|
2
6
|
#accessory;
|
|
3
7
|
#api;
|
|
4
8
|
#characteristic;
|
|
9
|
+
#debugMode;
|
|
5
10
|
#instance;
|
|
6
11
|
#log;
|
|
12
|
+
#reportedHashes;
|
|
7
13
|
#services;
|
|
8
14
|
#state;
|
|
9
|
-
constructor(accessory, state, instance, service, characteristic, api, log) {
|
|
15
|
+
constructor(accessory, state, instance, service, characteristic, api, log, debugMode) {
|
|
10
16
|
this.#accessory = accessory;
|
|
11
17
|
this.#api = api;
|
|
12
18
|
this.#characteristic = characteristic;
|
|
19
|
+
this.#debugMode = debugMode;
|
|
13
20
|
this.#instance = instance;
|
|
14
21
|
this.#log = log;
|
|
22
|
+
this.#reportedHashes = [];
|
|
15
23
|
this.#services = {};
|
|
16
24
|
this.#state = state;
|
|
17
25
|
this.#services.Information = this.#accessory.getService(service.AccessoryInformation) ?? this.#accessory.addService(service.AccessoryInformation);
|
|
@@ -40,9 +48,10 @@ export class ADTPulseAccessory {
|
|
|
40
48
|
case 'gateway':
|
|
41
49
|
break;
|
|
42
50
|
case 'glass':
|
|
43
|
-
this.#services.Primary = this.#accessory.getService(service.
|
|
51
|
+
this.#services.Primary = this.#accessory.getService(service.OccupancySensor) ?? this.#accessory.addService(service.OccupancySensor);
|
|
44
52
|
break;
|
|
45
53
|
case 'keypad':
|
|
54
|
+
this.#services.Primary = this.#accessory.getService(service.OccupancySensor) ?? this.#accessory.addService(service.OccupancySensor);
|
|
46
55
|
break;
|
|
47
56
|
case 'motion':
|
|
48
57
|
this.#services.Primary = this.#accessory.getService(service.MotionSensor) ?? this.#accessory.addService(service.MotionSensor);
|
|
@@ -51,12 +60,20 @@ export class ADTPulseAccessory {
|
|
|
51
60
|
this.#services.Primary = this.#accessory.getService(service.SecuritySystem) ?? this.#accessory.addService(service.SecuritySystem);
|
|
52
61
|
break;
|
|
53
62
|
case 'panic':
|
|
63
|
+
this.#services.Primary = this.#accessory.getService(service.OccupancySensor) ?? this.#accessory.addService(service.OccupancySensor);
|
|
54
64
|
break;
|
|
55
65
|
case 'shock':
|
|
66
|
+
this.#services.Primary = this.#accessory.getService(service.OccupancySensor) ?? this.#accessory.addService(service.OccupancySensor);
|
|
67
|
+
break;
|
|
68
|
+
case 'supervisory':
|
|
69
|
+
this.#services.Primary = this.#accessory.getService(service.OccupancySensor) ?? this.#accessory.addService(service.OccupancySensor);
|
|
56
70
|
break;
|
|
57
71
|
case 'temperature':
|
|
58
72
|
this.#services.Primary = this.#accessory.getService(service.TemperatureSensor) ?? this.#accessory.addService(service.TemperatureSensor);
|
|
59
73
|
break;
|
|
74
|
+
case 'unknown':
|
|
75
|
+
this.#services.Primary = this.#accessory.getService(service.OccupancySensor) ?? this.#accessory.addService(service.OccupancySensor);
|
|
76
|
+
break;
|
|
60
77
|
default:
|
|
61
78
|
break;
|
|
62
79
|
}
|
|
@@ -86,10 +103,12 @@ export class ADTPulseAccessory {
|
|
|
86
103
|
case 'gateway':
|
|
87
104
|
break;
|
|
88
105
|
case 'glass':
|
|
89
|
-
this.#services.Primary.getCharacteristic(this.#characteristic.
|
|
106
|
+
this.#services.Primary.getCharacteristic(this.#characteristic.OccupancyDetected)
|
|
90
107
|
.onGet(() => this.getSensorStatus(accessory.context));
|
|
91
108
|
break;
|
|
92
109
|
case 'keypad':
|
|
110
|
+
this.#services.Primary.getCharacteristic(this.#characteristic.OccupancyDetected)
|
|
111
|
+
.onGet(() => this.getSensorStatus(accessory.context));
|
|
93
112
|
break;
|
|
94
113
|
case 'motion':
|
|
95
114
|
this.#services.Primary.getCharacteristic(this.#characteristic.MotionDetected)
|
|
@@ -103,75 +122,74 @@ export class ADTPulseAccessory {
|
|
|
103
122
|
.onSet((value) => this.setPanelStatus(value, accessory.context));
|
|
104
123
|
break;
|
|
105
124
|
case 'panic':
|
|
125
|
+
this.#services.Primary.getCharacteristic(this.#characteristic.OccupancyDetected)
|
|
126
|
+
.onGet(() => this.getSensorStatus(accessory.context));
|
|
106
127
|
break;
|
|
107
128
|
case 'shock':
|
|
129
|
+
this.#services.Primary.getCharacteristic(this.#characteristic.OccupancyDetected)
|
|
130
|
+
.onGet(() => this.getSensorStatus(accessory.context));
|
|
131
|
+
break;
|
|
132
|
+
case 'supervisory':
|
|
133
|
+
this.#services.Primary.getCharacteristic(this.#characteristic.OccupancyDetected)
|
|
134
|
+
.onGet(() => this.getSensorStatus(accessory.context));
|
|
108
135
|
break;
|
|
109
136
|
case 'temperature':
|
|
110
137
|
this.#services.Primary.getCharacteristic(this.#characteristic.CurrentTemperature)
|
|
111
138
|
.onGet(() => this.getSensorStatus(accessory.context));
|
|
112
139
|
break;
|
|
140
|
+
case 'unknown':
|
|
141
|
+
this.#services.Primary.getCharacteristic(this.#characteristic.OccupancyDetected)
|
|
142
|
+
.onGet(() => this.getSensorStatus(accessory.context));
|
|
143
|
+
break;
|
|
113
144
|
default:
|
|
114
145
|
break;
|
|
115
146
|
}
|
|
116
147
|
}
|
|
117
|
-
getSensorStatus(context) {
|
|
118
|
-
const { name, type, zone } = context;
|
|
148
|
+
async getSensorStatus(context) {
|
|
149
|
+
const { id, name, type, uuid, zone, } = context;
|
|
119
150
|
const sensor = this.#state.data.sensorsStatus.find((sensorStatus) => zone !== null && sensorStatus.name === name && sensorStatus.zone === zone);
|
|
120
|
-
|
|
121
|
-
'
|
|
122
|
-
'
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
'glass',
|
|
126
|
-
'keypad',
|
|
127
|
-
'motion',
|
|
128
|
-
'panic',
|
|
129
|
-
'shock',
|
|
130
|
-
'temperature',
|
|
131
|
-
];
|
|
132
|
-
if (sensor === undefined || !knownSensorTypes.includes(type)) {
|
|
151
|
+
if (sensor === undefined
|
|
152
|
+
|| type === 'gateway'
|
|
153
|
+
|| type === 'panel'
|
|
154
|
+
|| !condensedSensorTypeItems.includes(type)) {
|
|
155
|
+
this.#log.error(`Attempted to get sensor status on ${chalk.underline(name)} (id: ${id}, uuid: ${uuid}) accessory but sensor is not found or sensor type is not supported.`);
|
|
133
156
|
throw new this.#api.hap.HapStatusError(-70409);
|
|
134
157
|
}
|
|
135
|
-
const {
|
|
136
|
-
if (
|
|
137
|
-
|
|
158
|
+
const { statuses } = sensor;
|
|
159
|
+
if (statuses.includes('Offline') || statuses.includes('Unknown')) {
|
|
160
|
+
this.#log.warn(`Attempted to get sensor status on ${chalk.underline(name)} (id: ${id}, uuid: ${uuid}) accessory but sensor is currently "Offline" or "Unknown".`);
|
|
161
|
+
throw new this.#api.hap.HapStatusError(-70412);
|
|
138
162
|
}
|
|
139
|
-
switch (
|
|
163
|
+
switch (type) {
|
|
140
164
|
case 'co':
|
|
141
|
-
|
|
165
|
+
break;
|
|
142
166
|
case 'doorWindow':
|
|
143
|
-
if (
|
|
167
|
+
if (statuses.includes('Open')) {
|
|
144
168
|
return this.#characteristic.ContactSensorState.CONTACT_NOT_DETECTED;
|
|
145
169
|
}
|
|
146
|
-
if (
|
|
170
|
+
if (statuses.includes('Closed')) {
|
|
147
171
|
return this.#characteristic.ContactSensorState.CONTACT_DETECTED;
|
|
148
172
|
}
|
|
149
173
|
break;
|
|
150
174
|
case 'fire':
|
|
151
|
-
|
|
175
|
+
break;
|
|
152
176
|
case 'flood':
|
|
153
|
-
if (status.includes('ALARM')) {
|
|
154
|
-
return this.#characteristic.LeakDetected.LEAK_DETECTED;
|
|
155
|
-
}
|
|
156
|
-
if (status.includes('Okay')) {
|
|
157
|
-
return this.#characteristic.LeakDetected.LEAK_NOT_DETECTED;
|
|
158
|
-
}
|
|
159
177
|
break;
|
|
160
178
|
case 'glass':
|
|
161
|
-
if (
|
|
162
|
-
return false;
|
|
163
|
-
}
|
|
164
|
-
if (status.includes('Tripped')) {
|
|
179
|
+
if (statuses.includes('Tripped')) {
|
|
165
180
|
return true;
|
|
166
181
|
}
|
|
182
|
+
if (statuses.includes('Okay')) {
|
|
183
|
+
return false;
|
|
184
|
+
}
|
|
167
185
|
break;
|
|
168
186
|
case 'keypad':
|
|
169
187
|
break;
|
|
170
188
|
case 'motion':
|
|
171
|
-
if (
|
|
189
|
+
if (statuses.includes('No Motion')) {
|
|
172
190
|
return false;
|
|
173
191
|
}
|
|
174
|
-
if (
|
|
192
|
+
if (statuses.includes('Motion')) {
|
|
175
193
|
return true;
|
|
176
194
|
}
|
|
177
195
|
break;
|
|
@@ -179,68 +197,109 @@ export class ADTPulseAccessory {
|
|
|
179
197
|
break;
|
|
180
198
|
case 'shock':
|
|
181
199
|
break;
|
|
200
|
+
case 'supervisory':
|
|
201
|
+
break;
|
|
182
202
|
case 'temperature':
|
|
183
|
-
|
|
203
|
+
break;
|
|
204
|
+
case 'unknown':
|
|
205
|
+
break;
|
|
184
206
|
default:
|
|
185
207
|
break;
|
|
186
208
|
}
|
|
187
|
-
|
|
209
|
+
this.#log.warn(`Attempted to get sensor status on ${chalk.underline(name)} (id: ${id}, uuid: ${uuid}) accessory but actions have not been implemented yet.`);
|
|
210
|
+
await this.newInformationDispatcher(context);
|
|
211
|
+
throw new this.#api.hap.HapStatusError(-70410);
|
|
188
212
|
}
|
|
189
|
-
getPanelStatus(mode, context) {
|
|
190
|
-
|
|
191
|
-
|
|
213
|
+
async getPanelStatus(mode, context) {
|
|
214
|
+
const { id, name, type, uuid, } = context;
|
|
215
|
+
if (type !== 'panel') {
|
|
216
|
+
this.#log.error(`Attempted to get panel status on ${chalk.underline(name)} (id: ${id}, uuid: ${uuid}) accessory but device is not a security panel.`);
|
|
217
|
+
throw new this.#api.hap.HapStatusError(-70410);
|
|
192
218
|
}
|
|
193
219
|
if (this.#state.data.panelStatus === null
|
|
194
|
-
|| this.#state.data.panelStatus.
|
|
195
|
-
|| this.#state.data.panelStatus.
|
|
196
|
-
|
|
220
|
+
|| this.#state.data.panelStatus.panelStates.length === 0
|
|
221
|
+
|| this.#state.data.panelStatus.panelStatuses.length === 0) {
|
|
222
|
+
this.#log.warn(`Attempted to get panel status on ${chalk.underline(name)} (id: ${id}, uuid: ${uuid}) accessory but panel status has not been retrieved yet.`);
|
|
223
|
+
throw new this.#api.hap.HapStatusError(-70403);
|
|
197
224
|
}
|
|
198
|
-
const {
|
|
199
|
-
if (
|
|
200
|
-
|
|
225
|
+
const { panelStates, panelStatuses } = this.#state.data.panelStatus;
|
|
226
|
+
if (panelStates.includes('Status Unavailable')) {
|
|
227
|
+
this.#log.warn(`Attempted to get panel status on ${chalk.underline(name)} (id: ${id}, uuid: ${uuid}) accessory but panel state is "Service Unavailable".`);
|
|
228
|
+
throw new this.#api.hap.HapStatusError(-70403);
|
|
201
229
|
}
|
|
202
|
-
if (mode === 'current' &&
|
|
230
|
+
if (mode === 'current' && panelStatuses.includes('BURGLARY ALARM')) {
|
|
203
231
|
return this.#characteristic.SecuritySystemCurrentState.ALARM_TRIGGERED;
|
|
204
232
|
}
|
|
205
|
-
switch (
|
|
206
|
-
case 'Armed Away':
|
|
233
|
+
switch (true) {
|
|
234
|
+
case panelStates.includes('Armed Away'):
|
|
207
235
|
return (mode === 'current') ? this.#characteristic.SecuritySystemCurrentState.AWAY_ARM : this.#characteristic.SecuritySystemTargetState.AWAY_ARM;
|
|
208
|
-
case 'Armed Stay':
|
|
236
|
+
case panelStates.includes('Armed Stay'):
|
|
209
237
|
return (mode === 'current') ? this.#characteristic.SecuritySystemCurrentState.STAY_ARM : this.#characteristic.SecuritySystemTargetState.STAY_ARM;
|
|
210
|
-
case 'Armed Night':
|
|
238
|
+
case panelStates.includes('Armed Night'):
|
|
211
239
|
return (mode === 'current') ? this.#characteristic.SecuritySystemCurrentState.NIGHT_ARM : this.#characteristic.SecuritySystemTargetState.NIGHT_ARM;
|
|
212
|
-
case 'Disarmed':
|
|
240
|
+
case panelStates.includes('Disarmed'):
|
|
213
241
|
return (mode === 'current') ? this.#characteristic.SecuritySystemCurrentState.DISARMED : this.#characteristic.SecuritySystemTargetState.DISARM;
|
|
214
242
|
default:
|
|
215
243
|
break;
|
|
216
244
|
}
|
|
245
|
+
this.#log.warn(`Attempted to get panel status on ${chalk.underline(name)} (id: ${id}, uuid: ${uuid}) accessory but actions have not been implemented yet.`);
|
|
246
|
+
await this.newInformationDispatcher(context);
|
|
217
247
|
throw new this.#api.hap.HapStatusError(-70402);
|
|
218
248
|
}
|
|
219
249
|
async setPanelStatus(arm, context) {
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
250
|
+
const { id, name, type, uuid, } = context;
|
|
251
|
+
let result = {
|
|
252
|
+
success: false,
|
|
253
|
+
};
|
|
254
|
+
let unknownArmValue = false;
|
|
255
|
+
if (type !== 'panel') {
|
|
256
|
+
this.#log.error(`Attempted to set panel status on ${chalk.underline(name)} (id: ${id}, uuid: ${uuid}) accessory but device is not a security panel.`);
|
|
257
|
+
throw new this.#api.hap.HapStatusError(-70410);
|
|
258
|
+
}
|
|
259
|
+
if (this.#state.data.panelStatus === null || this.#state.data.panelStatus.panelStates.length === 0) {
|
|
260
|
+
this.#log.warn(`Attempted to set panel status on ${chalk.underline(name)} (id: ${id}, uuid: ${uuid}) accessory but panel status has not been retrieved yet.`);
|
|
261
|
+
throw new this.#api.hap.HapStatusError(-70403);
|
|
262
|
+
}
|
|
263
|
+
const { panelStates } = this.#state.data.panelStatus;
|
|
264
|
+
const armFrom = condensePanelStates(panelStates);
|
|
265
|
+
if (armFrom === undefined) {
|
|
266
|
+
this.#log.warn(`Attempted to set panel status on ${chalk.underline(name)} (id: ${id}, uuid: ${uuid}) accessory but panel status cannot be found or most likely "Status Unavailable".`);
|
|
267
|
+
throw new this.#api.hap.HapStatusError(-70403);
|
|
223
268
|
}
|
|
224
269
|
switch (arm) {
|
|
225
270
|
case this.#characteristic.SecuritySystemTargetState.STAY_ARM:
|
|
226
|
-
result = await this.#instance.setPanelStatus('stay');
|
|
271
|
+
result = await this.#instance.setPanelStatus(armFrom, 'stay');
|
|
227
272
|
break;
|
|
228
273
|
case this.#characteristic.SecuritySystemTargetState.AWAY_ARM:
|
|
229
|
-
result = await this.#instance.setPanelStatus('away');
|
|
274
|
+
result = await this.#instance.setPanelStatus(armFrom, 'away');
|
|
230
275
|
break;
|
|
231
276
|
case this.#characteristic.SecuritySystemTargetState.NIGHT_ARM:
|
|
232
|
-
result = await this.#instance.setPanelStatus('night');
|
|
277
|
+
result = await this.#instance.setPanelStatus(armFrom, 'night');
|
|
233
278
|
break;
|
|
234
279
|
case this.#characteristic.SecuritySystemTargetState.DISARM:
|
|
235
|
-
result = await this.#instance.setPanelStatus('off');
|
|
280
|
+
result = await this.#instance.setPanelStatus(armFrom, 'off');
|
|
236
281
|
break;
|
|
237
282
|
default:
|
|
283
|
+
unknownArmValue = true;
|
|
238
284
|
break;
|
|
239
285
|
}
|
|
240
|
-
if (
|
|
241
|
-
|
|
286
|
+
if (unknownArmValue) {
|
|
287
|
+
this.#log.error(`Attempted to set panel status on ${chalk.underline(name)} (id: ${id}, uuid: ${uuid}) accessory but request has unknown arm value.`);
|
|
288
|
+
throw new this.#api.hap.HapStatusError(-70410);
|
|
289
|
+
}
|
|
290
|
+
if (!result.success) {
|
|
291
|
+
this.#log.error(`Attempted to set panel status on ${chalk.underline(name)} (id: ${id}, uuid: ${uuid}) accessory but request was not successful.`);
|
|
292
|
+
throw new this.#api.hap.HapStatusError(-70408);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
async newInformationDispatcher(context) {
|
|
296
|
+
const dataHash = generateHash(JSON.stringify(context));
|
|
297
|
+
if (this.#reportedHashes.find((reportedHash) => dataHash === reportedHash) === undefined) {
|
|
298
|
+
const detectedNew = await detectedNewDeviceContext(context, this.#log, this.#debugMode);
|
|
299
|
+
if (detectedNew) {
|
|
300
|
+
this.#reportedHashes.push(dataHash);
|
|
301
|
+
}
|
|
242
302
|
}
|
|
243
|
-
throw new this.#api.hap.HapStatusError(-70410);
|
|
244
303
|
}
|
|
245
304
|
}
|
|
246
305
|
//# sourceMappingURL=accessory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accessory.js","sourceRoot":"","sources":["../../../src/lib/accessory.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"accessory.js","sourceRoot":"","sources":["../../../src/lib/accessory.ts"],"names":[],"mappings":"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"}
|
package/build/src/lib/api.js
CHANGED
|
@@ -25,7 +25,7 @@ export class ADTPulse {
|
|
|
25
25
|
reportedHashes: [],
|
|
26
26
|
testMode: {
|
|
27
27
|
enabled: internalConfig.testMode?.enabled ?? false,
|
|
28
|
-
|
|
28
|
+
isSystemDisarmedBeforeTest: internalConfig.testMode?.isSystemDisarmedBeforeTest ?? false,
|
|
29
29
|
},
|
|
30
30
|
};
|
|
31
31
|
this.#session = {
|
|
@@ -565,13 +565,13 @@ export class ADTPulse {
|
|
|
565
565
|
'Type/Model:',
|
|
566
566
|
], 1, 1);
|
|
567
567
|
const emergencyKeys = _.get(fetchedTableCells, ['Emergency Keys:', 0], null);
|
|
568
|
-
const parsedEmergencyKeys = (
|
|
568
|
+
const parsedEmergencyKeys = (emergencyKeys !== null) ? emergencyKeys.match(textPanelEmergencyKeys) : null;
|
|
569
569
|
const manufacturerProvider = _.get(fetchedTableCells, ['Manufacturer/Provider:', 0], null);
|
|
570
|
-
const parsedManufacturer = (
|
|
571
|
-
const parsedProvider = (
|
|
570
|
+
const parsedManufacturer = (manufacturerProvider !== null) ? manufacturerProvider.split(' - ')[0] ?? null : null;
|
|
571
|
+
const parsedProvider = (manufacturerProvider !== null) ? manufacturerProvider.split(' - ')[1] ?? null : null;
|
|
572
572
|
const typeModel = _.get(fetchedTableCells, ['Type/Model:', 0], null);
|
|
573
|
-
const parsedType = (
|
|
574
|
-
const parsedModel = (
|
|
573
|
+
const parsedType = (typeModel !== null) ? typeModel.split(' - ')[0] ?? null : null;
|
|
574
|
+
const parsedModel = (typeModel !== null) ? typeModel.split(' - ')[1] ?? null : null;
|
|
575
575
|
const panelInformation = {
|
|
576
576
|
emergencyKeys: parsedEmergencyKeys,
|
|
577
577
|
manufacturer: parsedManufacturer,
|
|
@@ -712,10 +712,22 @@ export class ADTPulse {
|
|
|
712
712
|
},
|
|
713
713
|
};
|
|
714
714
|
}
|
|
715
|
-
async setPanelStatus(armTo) {
|
|
715
|
+
async setPanelStatus(armFrom, armTo) {
|
|
716
716
|
let errorObject;
|
|
717
717
|
if (this.#internal.debug) {
|
|
718
|
-
debugLog(this.#internal.logger, 'api.ts / ADTPulse.setPanelStatus()', 'info', `Attempting to update panel status to "${armTo}" at "${this.#internal.baseUrl}"`);
|
|
718
|
+
debugLog(this.#internal.logger, 'api.ts / ADTPulse.setPanelStatus()', 'info', `Attempting to update panel status from "${armFrom}" to "${armTo}" at "${this.#internal.baseUrl}"`);
|
|
719
|
+
}
|
|
720
|
+
if (armFrom !== 'away'
|
|
721
|
+
&& armFrom !== 'night'
|
|
722
|
+
&& armFrom !== 'off'
|
|
723
|
+
&& armFrom !== 'stay') {
|
|
724
|
+
return {
|
|
725
|
+
action: 'SET_PANEL_STATUS',
|
|
726
|
+
success: false,
|
|
727
|
+
info: {
|
|
728
|
+
message: `"${armFrom}" is an invalid arm from state`,
|
|
729
|
+
},
|
|
730
|
+
};
|
|
719
731
|
}
|
|
720
732
|
if (armTo !== 'away'
|
|
721
733
|
&& armTo !== 'night'
|
|
@@ -729,6 +741,18 @@ export class ADTPulse {
|
|
|
729
741
|
},
|
|
730
742
|
};
|
|
731
743
|
}
|
|
744
|
+
if (armFrom === armTo) {
|
|
745
|
+
if (this.#internal.debug) {
|
|
746
|
+
debugLog(this.#internal.logger, 'api.ts / ADTPulse.setPanelStatus()', 'info', `No need to change arm state from "${armFrom}" to "${armTo}" due to its equivalence`);
|
|
747
|
+
}
|
|
748
|
+
return {
|
|
749
|
+
action: 'SET_PANEL_STATUS',
|
|
750
|
+
success: true,
|
|
751
|
+
info: {
|
|
752
|
+
forceArmRequired: false,
|
|
753
|
+
},
|
|
754
|
+
};
|
|
755
|
+
}
|
|
732
756
|
try {
|
|
733
757
|
const internet = await this.isPortalAccessible();
|
|
734
758
|
const sessions = {};
|
|
@@ -847,7 +871,7 @@ export class ADTPulse {
|
|
|
847
871
|
};
|
|
848
872
|
}
|
|
849
873
|
if (this.#internal.testMode.enabled
|
|
850
|
-
&& !this.#internal.testMode.
|
|
874
|
+
&& !this.#internal.testMode.isSystemDisarmedBeforeTest) {
|
|
851
875
|
if (!['off', 'disarmed'].includes(readyButtons[0].urlParams.armState)) {
|
|
852
876
|
if (this.#internal.debug) {
|
|
853
877
|
debugLog(this.#internal.logger, 'api.ts / ADTPulse.setPanelStatus()', 'error', 'Test mode is active and system is not disarmed');
|
|
@@ -860,7 +884,7 @@ export class ADTPulse {
|
|
|
860
884
|
},
|
|
861
885
|
};
|
|
862
886
|
}
|
|
863
|
-
this.#internal.testMode.
|
|
887
|
+
this.#internal.testMode.isSystemDisarmedBeforeTest = true;
|
|
864
888
|
}
|
|
865
889
|
while (!['off', 'disarmed'].includes(readyButtons[0].urlParams.armState)) {
|
|
866
890
|
const armDisarmResponse = await this.armDisarmHandler(readyButtons[0].relativeUrl, readyButtons[0].urlParams.href, readyButtons[0].urlParams.armState, 'off', readyButtons[0].urlParams.sat);
|