homebridge-adt-pulse 3.0.0-beta.12 → 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 +9 -7
- package/build/src/lib/accessory.js +112 -67
- 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 +93 -193
- 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/utility.js +65 -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/package.json +6 -6
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,11 +10,11 @@ __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)
|
|
18
18
|
|
|
19
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).
|
|
20
20
|
|
|
@@ -161,9 +161,11 @@ If you are using automation, __you acknowledge that this will happen__ and accep
|
|
|
161
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.
|
|
162
162
|
|
|
163
163
|
## Debug Mode
|
|
164
|
-
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.
|
|
165
165
|
|
|
166
|
-
|
|
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.
|
|
167
169
|
|
|
168
170
|
## Documentation, Logging, and Detection
|
|
169
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.
|
|
@@ -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,15 +60,19 @@ 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);
|
|
56
67
|
break;
|
|
57
68
|
case 'supervisory':
|
|
69
|
+
this.#services.Primary = this.#accessory.getService(service.OccupancySensor) ?? this.#accessory.addService(service.OccupancySensor);
|
|
58
70
|
break;
|
|
59
71
|
case 'temperature':
|
|
60
72
|
this.#services.Primary = this.#accessory.getService(service.TemperatureSensor) ?? this.#accessory.addService(service.TemperatureSensor);
|
|
61
73
|
break;
|
|
62
74
|
case 'unknown':
|
|
75
|
+
this.#services.Primary = this.#accessory.getService(service.OccupancySensor) ?? this.#accessory.addService(service.OccupancySensor);
|
|
63
76
|
break;
|
|
64
77
|
default:
|
|
65
78
|
break;
|
|
@@ -90,10 +103,12 @@ export class ADTPulseAccessory {
|
|
|
90
103
|
case 'gateway':
|
|
91
104
|
break;
|
|
92
105
|
case 'glass':
|
|
93
|
-
this.#services.Primary.getCharacteristic(this.#characteristic.
|
|
106
|
+
this.#services.Primary.getCharacteristic(this.#characteristic.OccupancyDetected)
|
|
94
107
|
.onGet(() => this.getSensorStatus(accessory.context));
|
|
95
108
|
break;
|
|
96
109
|
case 'keypad':
|
|
110
|
+
this.#services.Primary.getCharacteristic(this.#characteristic.OccupancyDetected)
|
|
111
|
+
.onGet(() => this.getSensorStatus(accessory.context));
|
|
97
112
|
break;
|
|
98
113
|
case 'motion':
|
|
99
114
|
this.#services.Primary.getCharacteristic(this.#characteristic.MotionDetected)
|
|
@@ -107,81 +122,74 @@ export class ADTPulseAccessory {
|
|
|
107
122
|
.onSet((value) => this.setPanelStatus(value, accessory.context));
|
|
108
123
|
break;
|
|
109
124
|
case 'panic':
|
|
125
|
+
this.#services.Primary.getCharacteristic(this.#characteristic.OccupancyDetected)
|
|
126
|
+
.onGet(() => this.getSensorStatus(accessory.context));
|
|
110
127
|
break;
|
|
111
128
|
case 'shock':
|
|
129
|
+
this.#services.Primary.getCharacteristic(this.#characteristic.OccupancyDetected)
|
|
130
|
+
.onGet(() => this.getSensorStatus(accessory.context));
|
|
112
131
|
break;
|
|
113
132
|
case 'supervisory':
|
|
133
|
+
this.#services.Primary.getCharacteristic(this.#characteristic.OccupancyDetected)
|
|
134
|
+
.onGet(() => this.getSensorStatus(accessory.context));
|
|
114
135
|
break;
|
|
115
136
|
case 'temperature':
|
|
116
137
|
this.#services.Primary.getCharacteristic(this.#characteristic.CurrentTemperature)
|
|
117
138
|
.onGet(() => this.getSensorStatus(accessory.context));
|
|
118
139
|
break;
|
|
119
140
|
case 'unknown':
|
|
141
|
+
this.#services.Primary.getCharacteristic(this.#characteristic.OccupancyDetected)
|
|
142
|
+
.onGet(() => this.getSensorStatus(accessory.context));
|
|
120
143
|
break;
|
|
121
144
|
default:
|
|
122
145
|
break;
|
|
123
146
|
}
|
|
124
147
|
}
|
|
125
|
-
getSensorStatus(context) {
|
|
126
|
-
const { name, type, zone } = context;
|
|
148
|
+
async getSensorStatus(context) {
|
|
149
|
+
const { id, name, type, uuid, zone, } = context;
|
|
127
150
|
const sensor = this.#state.data.sensorsStatus.find((sensorStatus) => zone !== null && sensorStatus.name === name && sensorStatus.zone === zone);
|
|
128
|
-
|
|
129
|
-
'
|
|
130
|
-
'
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
'glass',
|
|
134
|
-
'keypad',
|
|
135
|
-
'motion',
|
|
136
|
-
'panic',
|
|
137
|
-
'shock',
|
|
138
|
-
'supervisory',
|
|
139
|
-
'temperature',
|
|
140
|
-
'unknown',
|
|
141
|
-
];
|
|
142
|
-
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.`);
|
|
143
156
|
throw new this.#api.hap.HapStatusError(-70409);
|
|
144
157
|
}
|
|
145
|
-
const {
|
|
146
|
-
if (
|
|
147
|
-
|
|
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);
|
|
148
162
|
}
|
|
149
|
-
switch (
|
|
163
|
+
switch (type) {
|
|
150
164
|
case 'co':
|
|
151
|
-
|
|
165
|
+
break;
|
|
152
166
|
case 'doorWindow':
|
|
153
|
-
if (
|
|
167
|
+
if (statuses.includes('Open')) {
|
|
154
168
|
return this.#characteristic.ContactSensorState.CONTACT_NOT_DETECTED;
|
|
155
169
|
}
|
|
156
|
-
if (
|
|
170
|
+
if (statuses.includes('Closed')) {
|
|
157
171
|
return this.#characteristic.ContactSensorState.CONTACT_DETECTED;
|
|
158
172
|
}
|
|
159
173
|
break;
|
|
160
174
|
case 'fire':
|
|
161
|
-
|
|
175
|
+
break;
|
|
162
176
|
case 'flood':
|
|
163
|
-
if (status.includes('ALARM')) {
|
|
164
|
-
return this.#characteristic.LeakDetected.LEAK_DETECTED;
|
|
165
|
-
}
|
|
166
|
-
if (status.includes('Okay')) {
|
|
167
|
-
return this.#characteristic.LeakDetected.LEAK_NOT_DETECTED;
|
|
168
|
-
}
|
|
169
177
|
break;
|
|
170
178
|
case 'glass':
|
|
171
|
-
if (
|
|
172
|
-
return false;
|
|
173
|
-
}
|
|
174
|
-
if (status.includes('Tripped')) {
|
|
179
|
+
if (statuses.includes('Tripped')) {
|
|
175
180
|
return true;
|
|
176
181
|
}
|
|
182
|
+
if (statuses.includes('Okay')) {
|
|
183
|
+
return false;
|
|
184
|
+
}
|
|
177
185
|
break;
|
|
178
186
|
case 'keypad':
|
|
179
187
|
break;
|
|
180
188
|
case 'motion':
|
|
181
|
-
if (
|
|
189
|
+
if (statuses.includes('No Motion')) {
|
|
182
190
|
return false;
|
|
183
191
|
}
|
|
184
|
-
if (
|
|
192
|
+
if (statuses.includes('Motion')) {
|
|
185
193
|
return true;
|
|
186
194
|
}
|
|
187
195
|
break;
|
|
@@ -192,69 +200,106 @@ export class ADTPulseAccessory {
|
|
|
192
200
|
case 'supervisory':
|
|
193
201
|
break;
|
|
194
202
|
case 'temperature':
|
|
195
|
-
|
|
203
|
+
break;
|
|
196
204
|
case 'unknown':
|
|
197
205
|
break;
|
|
198
206
|
default:
|
|
199
207
|
break;
|
|
200
208
|
}
|
|
201
|
-
|
|
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);
|
|
202
212
|
}
|
|
203
|
-
getPanelStatus(mode, context) {
|
|
204
|
-
|
|
205
|
-
|
|
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);
|
|
206
218
|
}
|
|
207
219
|
if (this.#state.data.panelStatus === null
|
|
208
|
-
|| this.#state.data.panelStatus.
|
|
209
|
-
|| this.#state.data.panelStatus.
|
|
210
|
-
|
|
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);
|
|
211
224
|
}
|
|
212
|
-
const {
|
|
213
|
-
if (
|
|
214
|
-
|
|
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);
|
|
215
229
|
}
|
|
216
|
-
if (mode === 'current' &&
|
|
230
|
+
if (mode === 'current' && panelStatuses.includes('BURGLARY ALARM')) {
|
|
217
231
|
return this.#characteristic.SecuritySystemCurrentState.ALARM_TRIGGERED;
|
|
218
232
|
}
|
|
219
|
-
switch (
|
|
220
|
-
case 'Armed Away':
|
|
233
|
+
switch (true) {
|
|
234
|
+
case panelStates.includes('Armed Away'):
|
|
221
235
|
return (mode === 'current') ? this.#characteristic.SecuritySystemCurrentState.AWAY_ARM : this.#characteristic.SecuritySystemTargetState.AWAY_ARM;
|
|
222
|
-
case 'Armed Stay':
|
|
236
|
+
case panelStates.includes('Armed Stay'):
|
|
223
237
|
return (mode === 'current') ? this.#characteristic.SecuritySystemCurrentState.STAY_ARM : this.#characteristic.SecuritySystemTargetState.STAY_ARM;
|
|
224
|
-
case 'Armed Night':
|
|
238
|
+
case panelStates.includes('Armed Night'):
|
|
225
239
|
return (mode === 'current') ? this.#characteristic.SecuritySystemCurrentState.NIGHT_ARM : this.#characteristic.SecuritySystemTargetState.NIGHT_ARM;
|
|
226
|
-
case 'Disarmed':
|
|
240
|
+
case panelStates.includes('Disarmed'):
|
|
227
241
|
return (mode === 'current') ? this.#characteristic.SecuritySystemCurrentState.DISARMED : this.#characteristic.SecuritySystemTargetState.DISARM;
|
|
228
242
|
default:
|
|
229
243
|
break;
|
|
230
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);
|
|
231
247
|
throw new this.#api.hap.HapStatusError(-70402);
|
|
232
248
|
}
|
|
233
249
|
async setPanelStatus(arm, context) {
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
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);
|
|
237
268
|
}
|
|
238
269
|
switch (arm) {
|
|
239
270
|
case this.#characteristic.SecuritySystemTargetState.STAY_ARM:
|
|
240
|
-
result = await this.#instance.setPanelStatus('stay');
|
|
271
|
+
result = await this.#instance.setPanelStatus(armFrom, 'stay');
|
|
241
272
|
break;
|
|
242
273
|
case this.#characteristic.SecuritySystemTargetState.AWAY_ARM:
|
|
243
|
-
result = await this.#instance.setPanelStatus('away');
|
|
274
|
+
result = await this.#instance.setPanelStatus(armFrom, 'away');
|
|
244
275
|
break;
|
|
245
276
|
case this.#characteristic.SecuritySystemTargetState.NIGHT_ARM:
|
|
246
|
-
result = await this.#instance.setPanelStatus('night');
|
|
277
|
+
result = await this.#instance.setPanelStatus(armFrom, 'night');
|
|
247
278
|
break;
|
|
248
279
|
case this.#characteristic.SecuritySystemTargetState.DISARM:
|
|
249
|
-
result = await this.#instance.setPanelStatus('off');
|
|
280
|
+
result = await this.#instance.setPanelStatus(armFrom, 'off');
|
|
250
281
|
break;
|
|
251
282
|
default:
|
|
283
|
+
unknownArmValue = true;
|
|
252
284
|
break;
|
|
253
285
|
}
|
|
254
|
-
if (
|
|
255
|
-
|
|
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
|
+
}
|
|
256
302
|
}
|
|
257
|
-
throw new this.#api.hap.HapStatusError(-70410);
|
|
258
303
|
}
|
|
259
304
|
}
|
|
260
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);
|