homebridge-adt-pulse 3.0.0-beta.22 → 3.0.0-beta.24
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 +10 -6
- package/build/config.schema.json +6 -0
- package/build/src/lib/accessory.js +163 -97
- package/build/src/lib/accessory.js.map +1 -1
- package/build/src/lib/api.js +88 -67
- package/build/src/lib/api.js.map +1 -1
- package/build/src/lib/detect.js +80 -0
- package/build/src/lib/detect.js.map +1 -1
- package/build/src/lib/items.js +31 -3
- package/build/src/lib/items.js.map +1 -1
- package/build/src/lib/platform.js +110 -20
- package/build/src/lib/platform.js.map +1 -1
- package/build/src/lib/schema.js +1 -0
- package/build/src/lib/schema.js.map +1 -1
- package/build/src/lib/utility.js +137 -6
- package/build/src/lib/utility.js.map +1 -1
- package/build/src/scripts/repl.js +9 -6
- package/build/src/scripts/repl.js.map +1 -1
- package/build/src/scripts/test-api.js +4 -4
- package/build/src/scripts/test-api.js.map +1 -1
- package/config.schema.json +6 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
ADT Pulse for Homebridge
|
|
2
2
|
=========================
|
|
3
3
|
|
|
4
|
-
### ⚠️ Please Install the Beta Version ⚠️
|
|
5
|
-
This plugin is completely re-written from the ground up (supports v27.0.0-140), and I would love everyone on board! Please install the beta version, so I can quickly get a faster and more stable version to you!
|
|
6
|
-
|
|
7
|
-
Please bear with me, as the beta version is being actively developed and tested. If you see any unusual or annoying bugs, please comment on this [GitHub issue](https://github.com/mrjackyliang/homebridge-adt-pulse/issues/124).
|
|
8
|
-
|
|
9
4
|
[](https://www.npmjs.com/package/homebridge-adt-pulse)
|
|
10
5
|
[](https://www.npmjs.com/package/homebridge-adt-pulse)
|
|
11
6
|
[](https://github.com/mrjackyliang/homebridge-adt-pulse/blob/main/LICENSE)
|
|
@@ -71,7 +66,8 @@ This plugin can expose these devices (in read-only mode) based on your configura
|
|
|
71
66
|
6. `heat` - Heat (Rate-of-Rise) Detector
|
|
72
67
|
7. `motion` - Motion Sensor __::__ Motion Sensor (Notable Events Only)
|
|
73
68
|
8. `shock` - Shock Sensor
|
|
74
|
-
9. `
|
|
69
|
+
9. `supervisory` - System/Supervisory
|
|
70
|
+
10. `temperature` - Temperature Sensor
|
|
75
71
|
|
|
76
72
|
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.
|
|
77
73
|
|
|
@@ -162,6 +158,14 @@ Consumers would enable debug mode, but forget to also enable Homebridge debug mo
|
|
|
162
158
|
|
|
163
159
|
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
160
|
|
|
161
|
+
## Temperature Sensors in HAP Protocol
|
|
162
|
+
The Temperature Sensor (`temperature`) functions differently compared to standard contact sensors when it comes to processing sensor statuses.
|
|
163
|
+
|
|
164
|
+
In contrast to typical contact sensors that convey open or closed status, the temperature sensor exposed in the Home app (utilizing the HAP protocol) operates with temperature values. To accommodate this difference, the accessory converts these binary states into corresponding temperature degrees:
|
|
165
|
+
- Cold temperatures are represented as __0°C__.
|
|
166
|
+
- Normal temperatures are indicated as __20°C__.
|
|
167
|
+
- Hot temperatures are reflected as __40°C__.
|
|
168
|
+
|
|
165
169
|
## Support for HOOBS
|
|
166
170
|
Please note that HOOBS may use an outdated configuration UI. This issue that was reported by me, remains unresolved by the HOOBS team. For additional details, refer to this [GitHub issue](https://github.com/hoobs-org/HOOBS/issues/1873).
|
|
167
171
|
|
package/build/config.schema.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import { condensedSensorTypeItems } from './items.js';
|
|
3
|
-
import { condensePanelStates, stackTracer } from './utility.js';
|
|
3
|
+
import { condensePanelStates, isPanelAlarmActive, stackTracer } from './utility.js';
|
|
4
4
|
export class ADTPulseAccessory {
|
|
5
5
|
#accessory;
|
|
6
6
|
#api;
|
|
@@ -9,6 +9,7 @@ export class ADTPulseAccessory {
|
|
|
9
9
|
#log;
|
|
10
10
|
#services;
|
|
11
11
|
#state;
|
|
12
|
+
#status;
|
|
12
13
|
constructor(accessory, state, instance, service, characteristic, api, log) {
|
|
13
14
|
this.#accessory = accessory;
|
|
14
15
|
this.#api = api;
|
|
@@ -17,8 +18,12 @@ export class ADTPulseAccessory {
|
|
|
17
18
|
this.#log = log;
|
|
18
19
|
this.#services = {};
|
|
19
20
|
this.#state = state;
|
|
21
|
+
this.#status = {
|
|
22
|
+
isBusy: false,
|
|
23
|
+
setValue: null,
|
|
24
|
+
};
|
|
20
25
|
const { context } = this.#accessory;
|
|
21
|
-
const { firmware, hardware,
|
|
26
|
+
const { firmware, hardware, manufacturer, model, name, serial, software, type, } = context;
|
|
22
27
|
this.#services.Information = this.#accessory.getService(service.AccessoryInformation) ?? this.#accessory.addService(service.AccessoryInformation);
|
|
23
28
|
this.#services.Information
|
|
24
29
|
.setCharacteristic(this.#characteristic.Identify, false)
|
|
@@ -63,15 +68,22 @@ export class ADTPulseAccessory {
|
|
|
63
68
|
case 'shock':
|
|
64
69
|
this.#services.Primary = this.#accessory.getService(service.OccupancySensor) ?? this.#accessory.addService(service.OccupancySensor);
|
|
65
70
|
break;
|
|
71
|
+
case 'supervisory':
|
|
72
|
+
this.#services.Primary = this.#accessory.getService(service.OccupancySensor) ?? this.#accessory.addService(service.OccupancySensor);
|
|
73
|
+
break;
|
|
66
74
|
case 'temperature':
|
|
67
75
|
this.#services.Primary = this.#accessory.getService(service.TemperatureSensor) ?? this.#accessory.addService(service.TemperatureSensor);
|
|
68
76
|
break;
|
|
69
77
|
default:
|
|
70
78
|
break;
|
|
71
79
|
}
|
|
80
|
+
}
|
|
81
|
+
updater() {
|
|
82
|
+
const { context } = this.#accessory;
|
|
83
|
+
const { id, name, type, uuid, } = context;
|
|
72
84
|
if (this.#services.Primary === undefined) {
|
|
73
85
|
if (type !== 'gateway') {
|
|
74
|
-
this.#log.error(`Failed to
|
|
86
|
+
this.#log.error(`Failed to update ${chalk.underline(name)} (id: ${id}, uuid: ${uuid}) accessory because the primary service does not exist ...`);
|
|
75
87
|
}
|
|
76
88
|
return;
|
|
77
89
|
}
|
|
@@ -80,11 +92,25 @@ export class ADTPulseAccessory {
|
|
|
80
92
|
break;
|
|
81
93
|
case 'panel':
|
|
82
94
|
this.#services.Primary.getCharacteristic(this.#characteristic.SecuritySystemCurrentState)
|
|
83
|
-
.updateValue(this.getPanelStatus('current'
|
|
95
|
+
.updateValue(this.getPanelStatus('current'));
|
|
84
96
|
this.#services.Primary.getCharacteristic(this.#characteristic.SecuritySystemTargetState)
|
|
85
|
-
.updateValue(this.getPanelStatus('target'
|
|
97
|
+
.updateValue(this.getPanelStatus('target'));
|
|
86
98
|
this.#services.Primary.getCharacteristic(this.#characteristic.SecuritySystemTargetState)
|
|
87
|
-
.onSet((value) => this.setPanelStatus(value
|
|
99
|
+
.onSet(async (value) => this.setPanelStatus(value));
|
|
100
|
+
break;
|
|
101
|
+
default:
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
switch (type) {
|
|
105
|
+
case 'gateway':
|
|
106
|
+
break;
|
|
107
|
+
case 'panel':
|
|
108
|
+
this.#services.Primary.getCharacteristic(this.#characteristic.SecuritySystemAlarmType)
|
|
109
|
+
.updateValue(this.getPanelStatus('alarmType'));
|
|
110
|
+
this.#services.Primary.getCharacteristic(this.#characteristic.StatusFault)
|
|
111
|
+
.updateValue(this.getPanelStatus('fault'));
|
|
112
|
+
this.#services.Primary.getCharacteristic(this.#characteristic.StatusTampered)
|
|
113
|
+
.updateValue(this.getPanelStatus('tamper'));
|
|
88
114
|
break;
|
|
89
115
|
default:
|
|
90
116
|
break;
|
|
@@ -92,53 +118,43 @@ export class ADTPulseAccessory {
|
|
|
92
118
|
switch (type) {
|
|
93
119
|
case 'co':
|
|
94
120
|
this.#services.Primary.getCharacteristic(this.#characteristic.CarbonMonoxideDetected)
|
|
95
|
-
.updateValue(this.getSensorStatus('status'
|
|
121
|
+
.updateValue(this.getSensorStatus('status'));
|
|
96
122
|
break;
|
|
97
123
|
case 'doorWindow':
|
|
98
124
|
this.#services.Primary.getCharacteristic(this.#characteristic.ContactSensorState)
|
|
99
|
-
.updateValue(this.getSensorStatus('status'
|
|
125
|
+
.updateValue(this.getSensorStatus('status'));
|
|
100
126
|
break;
|
|
101
127
|
case 'fire':
|
|
102
128
|
this.#services.Primary.getCharacteristic(this.#characteristic.SmokeDetected)
|
|
103
|
-
.updateValue(this.getSensorStatus('status'
|
|
129
|
+
.updateValue(this.getSensorStatus('status'));
|
|
104
130
|
break;
|
|
105
131
|
case 'flood':
|
|
106
132
|
this.#services.Primary.getCharacteristic(this.#characteristic.LeakDetected)
|
|
107
|
-
.updateValue(this.getSensorStatus('status'
|
|
133
|
+
.updateValue(this.getSensorStatus('status'));
|
|
108
134
|
break;
|
|
109
135
|
case 'glass':
|
|
110
136
|
this.#services.Primary.getCharacteristic(this.#characteristic.OccupancyDetected)
|
|
111
|
-
.updateValue(this.getSensorStatus('status'
|
|
137
|
+
.updateValue(this.getSensorStatus('status'));
|
|
112
138
|
break;
|
|
113
139
|
case 'heat':
|
|
114
140
|
this.#services.Primary.getCharacteristic(this.#characteristic.OccupancyDetected)
|
|
115
|
-
.updateValue(this.getSensorStatus('status'
|
|
141
|
+
.updateValue(this.getSensorStatus('status'));
|
|
116
142
|
break;
|
|
117
143
|
case 'motion':
|
|
118
144
|
this.#services.Primary.getCharacteristic(this.#characteristic.MotionDetected)
|
|
119
|
-
.updateValue(this.getSensorStatus('status'
|
|
145
|
+
.updateValue(this.getSensorStatus('status'));
|
|
120
146
|
break;
|
|
121
147
|
case 'shock':
|
|
122
148
|
this.#services.Primary.getCharacteristic(this.#characteristic.OccupancyDetected)
|
|
123
|
-
.updateValue(this.getSensorStatus('status'
|
|
149
|
+
.updateValue(this.getSensorStatus('status'));
|
|
150
|
+
break;
|
|
151
|
+
case 'supervisory':
|
|
152
|
+
this.#services.Primary.getCharacteristic(this.#characteristic.OccupancyDetected)
|
|
153
|
+
.updateValue(this.getSensorStatus('status'));
|
|
124
154
|
break;
|
|
125
155
|
case 'temperature':
|
|
126
156
|
this.#services.Primary.getCharacteristic(this.#characteristic.CurrentTemperature)
|
|
127
|
-
.updateValue(this.getSensorStatus('status'
|
|
128
|
-
break;
|
|
129
|
-
default:
|
|
130
|
-
break;
|
|
131
|
-
}
|
|
132
|
-
switch (type) {
|
|
133
|
-
case 'gateway':
|
|
134
|
-
break;
|
|
135
|
-
case 'panel':
|
|
136
|
-
this.#services.Primary.getCharacteristic(this.#characteristic.SecuritySystemAlarmType)
|
|
137
|
-
.updateValue(this.getPanelStatus('alarmType', context));
|
|
138
|
-
this.#services.Primary.getCharacteristic(this.#characteristic.StatusFault)
|
|
139
|
-
.updateValue(this.getPanelStatus('fault', context));
|
|
140
|
-
this.#services.Primary.getCharacteristic(this.#characteristic.StatusTampered)
|
|
141
|
-
.updateValue(this.getPanelStatus('tamper', context));
|
|
157
|
+
.updateValue(this.getSensorStatus('status'));
|
|
142
158
|
break;
|
|
143
159
|
default:
|
|
144
160
|
break;
|
|
@@ -152,40 +168,46 @@ export class ADTPulseAccessory {
|
|
|
152
168
|
case 'heat':
|
|
153
169
|
case 'motion':
|
|
154
170
|
case 'shock':
|
|
171
|
+
case 'supervisory':
|
|
155
172
|
case 'temperature':
|
|
156
173
|
this.#services.Primary.getCharacteristic(this.#characteristic.StatusActive)
|
|
157
|
-
.updateValue(this.getSensorStatus('active'
|
|
174
|
+
.updateValue(this.getSensorStatus('active'));
|
|
158
175
|
this.#services.Primary.getCharacteristic(this.#characteristic.StatusFault)
|
|
159
|
-
.updateValue(this.getSensorStatus('fault'
|
|
176
|
+
.updateValue(this.getSensorStatus('fault'));
|
|
160
177
|
this.#services.Primary.getCharacteristic(this.#characteristic.StatusLowBattery)
|
|
161
|
-
.updateValue(this.getSensorStatus('lowBattery'
|
|
178
|
+
.updateValue(this.getSensorStatus('lowBattery'));
|
|
162
179
|
this.#services.Primary.getCharacteristic(this.#characteristic.StatusTampered)
|
|
163
|
-
.updateValue(this.getSensorStatus('tamper'
|
|
180
|
+
.updateValue(this.getSensorStatus('tamper'));
|
|
164
181
|
break;
|
|
165
182
|
default:
|
|
166
183
|
break;
|
|
167
184
|
}
|
|
168
185
|
}
|
|
169
|
-
getSensorStatus(mode
|
|
186
|
+
getSensorStatus(mode) {
|
|
187
|
+
const { context } = this.#accessory;
|
|
170
188
|
const { id, name, originalName, type, uuid, zone, } = context;
|
|
171
189
|
const matchedSensorStatus = this.#state.data.sensorsStatus.find((sensorStatus) => originalName === sensorStatus.name && zone !== null && sensorStatus.zone === zone);
|
|
190
|
+
let hapStatus;
|
|
172
191
|
if (matchedSensorStatus === undefined
|
|
173
192
|
|| type === 'gateway'
|
|
174
193
|
|| type === 'panel'
|
|
175
194
|
|| !condensedSensorTypeItems.includes(type)) {
|
|
195
|
+
hapStatus = new this.#api.hap.HapStatusError(-70409);
|
|
176
196
|
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.`);
|
|
177
|
-
return
|
|
197
|
+
return hapStatus;
|
|
178
198
|
}
|
|
179
199
|
const { icon, statuses } = matchedSensorStatus;
|
|
180
200
|
if (mode === 'active') {
|
|
181
|
-
return !statuses.includes('Offline')
|
|
201
|
+
return (!statuses.includes('Offline')
|
|
182
202
|
&& !statuses.includes('Unknown')
|
|
183
203
|
&& icon !== 'devStatOffline'
|
|
184
|
-
&& icon !== 'devStatUnknown';
|
|
204
|
+
&& icon !== 'devStatUnknown');
|
|
185
205
|
}
|
|
186
206
|
if (mode === 'fault') {
|
|
187
|
-
if (statuses.includes('
|
|
188
|
-
|| statuses.includes('
|
|
207
|
+
if (statuses.includes('ALARM')
|
|
208
|
+
|| statuses.includes('Bypassed')
|
|
209
|
+
|| statuses.includes('Trouble')
|
|
210
|
+
|| icon === 'devStatAlarm') {
|
|
189
211
|
return this.#characteristic.StatusFault.GENERAL_FAULT;
|
|
190
212
|
}
|
|
191
213
|
return this.#characteristic.StatusFault.NO_FAULT;
|
|
@@ -213,7 +235,7 @@ export class ADTPulseAccessory {
|
|
|
213
235
|
}
|
|
214
236
|
break;
|
|
215
237
|
case 'doorWindow':
|
|
216
|
-
if (statuses.includes('Open')) {
|
|
238
|
+
if (statuses.includes('ALARM') || statuses.includes('Open')) {
|
|
217
239
|
return this.#characteristic.ContactSensorState.CONTACT_NOT_DETECTED;
|
|
218
240
|
}
|
|
219
241
|
if (statuses.includes('Closed')) {
|
|
@@ -221,6 +243,9 @@ export class ADTPulseAccessory {
|
|
|
221
243
|
}
|
|
222
244
|
break;
|
|
223
245
|
case 'fire':
|
|
246
|
+
if (statuses.includes('ALARM') || statuses.includes('Tripped')) {
|
|
247
|
+
return this.#characteristic.SmokeDetected.SMOKE_DETECTED;
|
|
248
|
+
}
|
|
224
249
|
if (statuses.includes('Okay')) {
|
|
225
250
|
return this.#characteristic.SmokeDetected.SMOKE_NOT_DETECTED;
|
|
226
251
|
}
|
|
@@ -231,56 +256,69 @@ export class ADTPulseAccessory {
|
|
|
231
256
|
}
|
|
232
257
|
break;
|
|
233
258
|
case 'glass':
|
|
234
|
-
if (statuses.includes('Tripped')) {
|
|
235
|
-
return
|
|
259
|
+
if (statuses.includes('ALARM') || statuses.includes('Tripped')) {
|
|
260
|
+
return this.#characteristic.OccupancyDetected.OCCUPANCY_DETECTED;
|
|
236
261
|
}
|
|
237
262
|
if (statuses.includes('Okay')) {
|
|
238
|
-
return
|
|
263
|
+
return this.#characteristic.OccupancyDetected.OCCUPANCY_NOT_DETECTED;
|
|
239
264
|
}
|
|
240
265
|
break;
|
|
241
266
|
case 'heat':
|
|
267
|
+
if (statuses.includes('Okay')) {
|
|
268
|
+
return this.#characteristic.OccupancyDetected.OCCUPANCY_NOT_DETECTED;
|
|
269
|
+
}
|
|
242
270
|
break;
|
|
243
271
|
case 'motion':
|
|
272
|
+
if (statuses.includes('ALARM') || statuses.includes('Motion')) {
|
|
273
|
+
return true;
|
|
274
|
+
}
|
|
244
275
|
if (statuses.includes('No Motion') || statuses.includes('Okay')) {
|
|
245
276
|
return false;
|
|
246
277
|
}
|
|
247
|
-
if (statuses.includes('Motion')) {
|
|
248
|
-
return true;
|
|
249
|
-
}
|
|
250
278
|
break;
|
|
251
279
|
case 'shock':
|
|
252
280
|
break;
|
|
281
|
+
case 'supervisory':
|
|
282
|
+
break;
|
|
253
283
|
case 'temperature':
|
|
284
|
+
if (statuses.includes('ALARM') || statuses.includes('Tripped')) {
|
|
285
|
+
return 0;
|
|
286
|
+
}
|
|
287
|
+
if (statuses.includes('Okay')) {
|
|
288
|
+
return 20;
|
|
289
|
+
}
|
|
254
290
|
break;
|
|
255
291
|
default:
|
|
256
292
|
break;
|
|
257
293
|
}
|
|
258
294
|
if (statuses.includes('Offline') || statuses.includes('Unknown')) {
|
|
295
|
+
hapStatus = new this.#api.hap.HapStatusError(-70412);
|
|
259
296
|
this.#log.warn(`Attempted to get sensor status on ${chalk.underline(name)} (id: ${id}, uuid: ${uuid}) accessory but sensor is currently "Offline" or "Unknown".`);
|
|
260
|
-
return
|
|
297
|
+
return hapStatus;
|
|
261
298
|
}
|
|
299
|
+
hapStatus = new this.#api.hap.HapStatusError(-70410);
|
|
262
300
|
this.#log.warn(`Attempted to get sensor status on ${chalk.underline(name)} (id: ${id}, uuid: ${uuid}) accessory but actions have not been implemented yet.`);
|
|
263
|
-
return
|
|
301
|
+
return hapStatus;
|
|
264
302
|
}
|
|
265
|
-
getPanelStatus(mode
|
|
303
|
+
getPanelStatus(mode) {
|
|
304
|
+
const { context } = this.#accessory;
|
|
266
305
|
const { id, name, type, uuid, } = context;
|
|
306
|
+
let hapStatus;
|
|
267
307
|
if (type !== 'panel') {
|
|
308
|
+
hapStatus = new this.#api.hap.HapStatusError(-70410);
|
|
268
309
|
this.#log.error(`Attempted to get panel status on ${chalk.underline(name)} (id: ${id}, uuid: ${uuid}) accessory but device is not a security panel.`);
|
|
269
|
-
return
|
|
310
|
+
return hapStatus;
|
|
270
311
|
}
|
|
271
312
|
if (this.#state.data.panelStatus === null
|
|
272
313
|
|| this.#state.data.panelStatus.panelStates.length === 0
|
|
273
314
|
|| this.#state.data.panelStatus.panelStatuses.length === 0) {
|
|
315
|
+
hapStatus = new this.#api.hap.HapStatusError(-70403);
|
|
274
316
|
this.#log.debug(`Attempted to get panel status on ${chalk.underline(name)} (id: ${id}, uuid: ${uuid}) accessory but panel status has not been retrieved yet.`);
|
|
275
|
-
return
|
|
317
|
+
return hapStatus;
|
|
276
318
|
}
|
|
277
319
|
const { panelStates, panelStatuses } = this.#state.data.panelStatus;
|
|
278
320
|
if (mode === 'alarmType') {
|
|
279
|
-
if (panelStatuses
|
|
280
|
-
|| panelStatuses.includes('Carbon Monoxide Alarm')
|
|
281
|
-
|| panelStatuses.includes('FIRE ALARM')
|
|
282
|
-
|| panelStatuses.includes('Uncleared Alarm')
|
|
283
|
-
|| panelStatuses.includes('WATER ALARM')) {
|
|
321
|
+
if (isPanelAlarmActive(panelStatuses)) {
|
|
284
322
|
return 1;
|
|
285
323
|
}
|
|
286
324
|
return 0;
|
|
@@ -292,19 +330,20 @@ export class ADTPulseAccessory {
|
|
|
292
330
|
return this.#characteristic.StatusFault.NO_FAULT;
|
|
293
331
|
}
|
|
294
332
|
if (mode === 'tamper') {
|
|
333
|
+
if (panelStatuses.includes('Sensor Problem') || panelStatuses.includes('Sensor Problems')) {
|
|
334
|
+
return this.#characteristic.StatusTampered.TAMPERED;
|
|
335
|
+
}
|
|
295
336
|
return this.#characteristic.StatusTampered.NOT_TAMPERED;
|
|
296
337
|
}
|
|
297
338
|
switch (true) {
|
|
298
|
-
case mode === 'current' && panelStatuses
|
|
299
|
-
case mode === 'current' && panelStatuses.includes('Carbon Monoxide Alarm'):
|
|
300
|
-
case mode === 'current' && panelStatuses.includes('FIRE ALARM'):
|
|
301
|
-
case mode === 'current' && panelStatuses.includes('Uncleared Alarm'):
|
|
302
|
-
case mode === 'current' && panelStatuses.includes('WATER ALARM'):
|
|
339
|
+
case mode === 'current' && isPanelAlarmActive(panelStatuses):
|
|
303
340
|
return this.#characteristic.SecuritySystemCurrentState.ALARM_TRIGGERED;
|
|
304
|
-
case mode === 'current' &&
|
|
305
|
-
return this.#
|
|
341
|
+
case mode === 'current' && this.#status.isBusy && this.#status.setValue !== null:
|
|
342
|
+
return this.#status.setValue;
|
|
306
343
|
case mode === 'current' && panelStates.includes('Armed Stay'):
|
|
307
344
|
return this.#characteristic.SecuritySystemCurrentState.STAY_ARM;
|
|
345
|
+
case mode === 'current' && panelStates.includes('Armed Away'):
|
|
346
|
+
return this.#characteristic.SecuritySystemCurrentState.AWAY_ARM;
|
|
308
347
|
case mode === 'current' && panelStates.includes('Armed Night'):
|
|
309
348
|
return this.#characteristic.SecuritySystemCurrentState.NIGHT_ARM;
|
|
310
349
|
case mode === 'current' && panelStates.includes('Disarmed'):
|
|
@@ -313,10 +352,14 @@ export class ADTPulseAccessory {
|
|
|
313
352
|
break;
|
|
314
353
|
}
|
|
315
354
|
switch (true) {
|
|
316
|
-
case mode === 'target' && panelStates.includes('
|
|
317
|
-
return this.#characteristic.SecuritySystemTargetState.
|
|
355
|
+
case mode === 'target' && panelStates.includes('Disarmed') && isPanelAlarmActive(panelStatuses):
|
|
356
|
+
return this.#characteristic.SecuritySystemTargetState.STAY_ARM;
|
|
357
|
+
case mode === 'target' && this.#status.isBusy && this.#status.setValue !== null:
|
|
358
|
+
return this.#status.setValue;
|
|
318
359
|
case mode === 'target' && panelStates.includes('Armed Stay'):
|
|
319
360
|
return this.#characteristic.SecuritySystemTargetState.STAY_ARM;
|
|
361
|
+
case mode === 'target' && panelStates.includes('Armed Away'):
|
|
362
|
+
return this.#characteristic.SecuritySystemTargetState.AWAY_ARM;
|
|
320
363
|
case mode === 'target' && panelStates.includes('Armed Night'):
|
|
321
364
|
return this.#characteristic.SecuritySystemTargetState.NIGHT_ARM;
|
|
322
365
|
case mode === 'target' && panelStates.includes('Disarmed'):
|
|
@@ -325,57 +368,80 @@ export class ADTPulseAccessory {
|
|
|
325
368
|
break;
|
|
326
369
|
}
|
|
327
370
|
if (panelStates.includes('Status Unavailable')) {
|
|
371
|
+
hapStatus = new this.#api.hap.HapStatusError(-70403);
|
|
328
372
|
this.#log.warn(`Attempted to get panel status on ${chalk.underline(name)} (id: ${id}, uuid: ${uuid}) accessory but panel state is "Status Unavailable".`);
|
|
329
|
-
return
|
|
373
|
+
return hapStatus;
|
|
330
374
|
}
|
|
375
|
+
hapStatus = new this.#api.hap.HapStatusError(-70402);
|
|
331
376
|
this.#log.warn(`Attempted to get panel status on ${chalk.underline(name)} (id: ${id}, uuid: ${uuid}) accessory but actions have not been implemented yet.`);
|
|
332
|
-
return
|
|
377
|
+
return hapStatus;
|
|
333
378
|
}
|
|
334
|
-
async setPanelStatus(arm
|
|
379
|
+
async setPanelStatus(arm) {
|
|
380
|
+
const { context } = this.#accessory;
|
|
335
381
|
const { id, name, type, uuid, } = context;
|
|
382
|
+
let hapStatus;
|
|
336
383
|
let result = {
|
|
337
384
|
success: false,
|
|
338
385
|
};
|
|
339
386
|
let unknownArmValue = false;
|
|
340
387
|
if (type !== 'panel') {
|
|
388
|
+
hapStatus = new this.#api.hap.HapStatusError(-70410);
|
|
341
389
|
this.#log.error(`Attempted to set panel status on ${chalk.underline(name)} (id: ${id}, uuid: ${uuid}) accessory but device is not a security panel.`);
|
|
342
|
-
throw
|
|
390
|
+
throw hapStatus;
|
|
343
391
|
}
|
|
344
392
|
if (this.#state.data.panelStatus === null || this.#state.data.panelStatus.panelStates.length === 0) {
|
|
393
|
+
hapStatus = new this.#api.hap.HapStatusError(-70403);
|
|
345
394
|
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.`);
|
|
346
|
-
throw
|
|
395
|
+
throw hapStatus;
|
|
347
396
|
}
|
|
348
397
|
const { panelStates } = this.#state.data.panelStatus;
|
|
349
|
-
const armFrom = condensePanelStates(panelStates);
|
|
398
|
+
const armFrom = condensePanelStates(this.#characteristic, panelStates);
|
|
399
|
+
const isAlarmActive = isPanelAlarmActive(this.#state.data.panelStatus.panelStatuses);
|
|
350
400
|
if (armFrom === undefined) {
|
|
401
|
+
hapStatus = new this.#api.hap.HapStatusError(-70403);
|
|
351
402
|
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".`);
|
|
352
|
-
throw
|
|
403
|
+
throw hapStatus;
|
|
353
404
|
}
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
405
|
+
if (armFrom.characteristicValue !== arm
|
|
406
|
+
|| (armFrom.armValue === 'off'
|
|
407
|
+
&& arm === this.#characteristic.SecuritySystemTargetState.DISARM
|
|
408
|
+
&& isAlarmActive)) {
|
|
409
|
+
this.#status = {
|
|
410
|
+
isBusy: true,
|
|
411
|
+
setValue: arm,
|
|
412
|
+
};
|
|
413
|
+
switch (arm) {
|
|
414
|
+
case this.#characteristic.SecuritySystemTargetState.STAY_ARM:
|
|
415
|
+
result = await this.#instance.setPanelStatus(armFrom.armValue, 'stay', isAlarmActive);
|
|
416
|
+
break;
|
|
417
|
+
case this.#characteristic.SecuritySystemTargetState.AWAY_ARM:
|
|
418
|
+
result = await this.#instance.setPanelStatus(armFrom.armValue, 'away', isAlarmActive);
|
|
419
|
+
break;
|
|
420
|
+
case this.#characteristic.SecuritySystemTargetState.NIGHT_ARM:
|
|
421
|
+
result = await this.#instance.setPanelStatus(armFrom.armValue, 'night', isAlarmActive);
|
|
422
|
+
break;
|
|
423
|
+
case this.#characteristic.SecuritySystemTargetState.DISARM:
|
|
424
|
+
result = await this.#instance.setPanelStatus(armFrom.armValue, 'off', isAlarmActive);
|
|
425
|
+
break;
|
|
426
|
+
default:
|
|
427
|
+
unknownArmValue = true;
|
|
428
|
+
break;
|
|
429
|
+
}
|
|
430
|
+
this.#status = {
|
|
431
|
+
isBusy: false,
|
|
432
|
+
setValue: null,
|
|
433
|
+
};
|
|
434
|
+
if (unknownArmValue) {
|
|
435
|
+
hapStatus = new this.#api.hap.HapStatusError(-70410);
|
|
436
|
+
this.#log.error(`Attempted to set panel status on ${chalk.underline(name)} (id: ${id}, uuid: ${uuid}) accessory but request has unknown arm value.`);
|
|
437
|
+
throw hapStatus;
|
|
438
|
+
}
|
|
439
|
+
if (!result.success) {
|
|
440
|
+
hapStatus = new this.#api.hap.HapStatusError(-70408);
|
|
441
|
+
this.#log.error(`Attempted to set panel status on ${chalk.underline(name)} (id: ${id}, uuid: ${uuid}) accessory but request was not successful.`);
|
|
442
|
+
stackTracer('api-response', result);
|
|
443
|
+
throw hapStatus;
|
|
444
|
+
}
|
|
379
445
|
}
|
|
380
446
|
}
|
|
381
447
|
}
|
|
@@ -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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"}
|