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 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
  [![NPM Package](https://img.shields.io/npm/v/homebridge-adt-pulse?style=flat-square&logo=npm&logoColor=%23ffffff&color=%23b25da6)](https://www.npmjs.com/package/homebridge-adt-pulse)
10
5
  [![NPM Downloads](https://img.shields.io/npm/dt/homebridge-adt-pulse?style=flat-square&logo=npm&logoColor=%23ffffff&color=%236688c3)](https://www.npmjs.com/package/homebridge-adt-pulse)
11
6
  [![GitHub License](https://img.shields.io/github/license/mrjackyliang/homebridge-adt-pulse?style=flat-square&logo=googledocs&logoColor=%23ffffff&color=%2348a56a)](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. `temperature` - Temperature Sensor
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
 
@@ -205,6 +205,12 @@
205
205
  "shock"
206
206
  ]
207
207
  },
208
+ {
209
+ "title": "System/Supervisory",
210
+ "enum": [
211
+ "supervisory"
212
+ ]
213
+ },
208
214
  {
209
215
  "title": "Temperature Sensor",
210
216
  "enum": [
@@ -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, id, manufacturer, model, name, serial, software, type, uuid, } = context;
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 initialize ${chalk.underline(name)} (id: ${id}, uuid: ${uuid}) accessory services ...`);
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', context));
95
+ .updateValue(this.getPanelStatus('current'));
84
96
  this.#services.Primary.getCharacteristic(this.#characteristic.SecuritySystemTargetState)
85
- .updateValue(this.getPanelStatus('target', context));
97
+ .updateValue(this.getPanelStatus('target'));
86
98
  this.#services.Primary.getCharacteristic(this.#characteristic.SecuritySystemTargetState)
87
- .onSet((value) => this.setPanelStatus(value, context));
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', context));
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', context));
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', context));
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', context));
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', context));
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', context));
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', context));
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', context));
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', context));
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', context));
174
+ .updateValue(this.getSensorStatus('active'));
158
175
  this.#services.Primary.getCharacteristic(this.#characteristic.StatusFault)
159
- .updateValue(this.getSensorStatus('fault', context));
176
+ .updateValue(this.getSensorStatus('fault'));
160
177
  this.#services.Primary.getCharacteristic(this.#characteristic.StatusLowBattery)
161
- .updateValue(this.getSensorStatus('lowBattery', context));
178
+ .updateValue(this.getSensorStatus('lowBattery'));
162
179
  this.#services.Primary.getCharacteristic(this.#characteristic.StatusTampered)
163
- .updateValue(this.getSensorStatus('tamper', context));
180
+ .updateValue(this.getSensorStatus('tamper'));
164
181
  break;
165
182
  default:
166
183
  break;
167
184
  }
168
185
  }
169
- getSensorStatus(mode, context) {
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 new this.#api.hap.HapStatusError(-70409);
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('Bypassed')
188
- || statuses.includes('Trouble')) {
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 true;
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 false;
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 new this.#api.hap.HapStatusError(-70412);
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 new this.#api.hap.HapStatusError(-70410);
301
+ return hapStatus;
264
302
  }
265
- getPanelStatus(mode, context) {
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 new this.#api.hap.HapStatusError(-70410);
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 new this.#api.hap.HapStatusError(-70403);
317
+ return hapStatus;
276
318
  }
277
319
  const { panelStates, panelStatuses } = this.#state.data.panelStatus;
278
320
  if (mode === 'alarmType') {
279
- if (panelStatuses.includes('BURGLARY ALARM')
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.includes('BURGLARY ALARM'):
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' && panelStates.includes('Armed Away'):
305
- return this.#characteristic.SecuritySystemCurrentState.AWAY_ARM;
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('Armed Away'):
317
- return this.#characteristic.SecuritySystemTargetState.AWAY_ARM;
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 new this.#api.hap.HapStatusError(-70403);
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 new this.#api.hap.HapStatusError(-70402);
377
+ return hapStatus;
333
378
  }
334
- async setPanelStatus(arm, context) {
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 new this.#api.hap.HapStatusError(-70410);
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 new this.#api.hap.HapStatusError(-70403);
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 new this.#api.hap.HapStatusError(-70403);
403
+ throw hapStatus;
353
404
  }
354
- switch (arm) {
355
- case this.#characteristic.SecuritySystemTargetState.STAY_ARM:
356
- result = await this.#instance.setPanelStatus(armFrom, 'stay');
357
- break;
358
- case this.#characteristic.SecuritySystemTargetState.AWAY_ARM:
359
- result = await this.#instance.setPanelStatus(armFrom, 'away');
360
- break;
361
- case this.#characteristic.SecuritySystemTargetState.NIGHT_ARM:
362
- result = await this.#instance.setPanelStatus(armFrom, 'night');
363
- break;
364
- case this.#characteristic.SecuritySystemTargetState.DISARM:
365
- result = await this.#instance.setPanelStatus(armFrom, 'off');
366
- break;
367
- default:
368
- unknownArmValue = true;
369
- break;
370
- }
371
- if (unknownArmValue) {
372
- this.#log.error(`Attempted to set panel status on ${chalk.underline(name)} (id: ${id}, uuid: ${uuid}) accessory but request has unknown arm value.`);
373
- throw new this.#api.hap.HapStatusError(-70410);
374
- }
375
- if (!result.success) {
376
- this.#log.error(`Attempted to set panel status on ${chalk.underline(name)} (id: ${id}, uuid: ${uuid}) accessory but request was not successful.`);
377
- stackTracer('api-response', result);
378
- throw new this.#api.hap.HapStatusError(-70408);
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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"}