homebridge-securitysystem 6.6.2 → 7.0.0-beta.2
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/.github/demo.jpg +0 -0
- package/README.md +4 -7
- package/config.schema.json +19 -19
- package/package.json +1 -1
- package/src/index.js +158 -163
- package/src/utils/options.js +23 -23
package/.github/demo.jpg
ADDED
|
Binary file
|
package/README.md
CHANGED
|
@@ -17,9 +17,9 @@ If you already have [Homebridge](https://github.com/homebridge/homebridge) insta
|
|
|
17
17
|
## Demo
|
|
18
18
|
|
|
19
19
|
<div align="left">
|
|
20
|
-
<img align="right" width="
|
|
20
|
+
<img align="right" width="205" height="445" src="./.github/demo.jpg">
|
|
21
21
|
<p>Want to know how it looks like? It's pretty customizable, you can configure it to show as many switches as you like.</p>
|
|
22
|
-
<p>What you are seeing at your right is <b>the friendliest</b> configuration that you can start with, each <code>
|
|
22
|
+
<p>What you are seeing at your right is <b>the friendliest</b> configuration that you can start with, each <code>Trip</code> switch that you see can only trip the security system if the mode is set on the security system. This allows you to create logic-less automations from the very Home app that comes already installed on iOS.</p>
|
|
23
23
|
<p>There are also <code>Mode</code> switches which let you run automations that interact with your accessories when a mode is changed or set modes bypassing HomeKit confirmation dialogs.</p>
|
|
24
24
|
<p>A web server, webhooks or even shell commands are available to integrate the security system with other devices or services plus a plenty of more settings to make this plugin your own DIY security system.</p>
|
|
25
25
|
<p>Homebridge / HOOBS UI is recommended to configure the plugin, for additional help please check the <a href="https://github.com/MiguelRipoll23/homebridge-securitysystem/wiki">Wiki</a> page.</p>
|
|
@@ -33,8 +33,8 @@ Here are some examples of automations that can be created:
|
|
|
33
33
|
|
|
34
34
|
| Trigger | Actions |
|
|
35
35
|
| ------------------------ | ----------------------------- |
|
|
36
|
-
| Motion is Detected | Turn on `
|
|
37
|
-
| Door is Opened | Turn on `
|
|
36
|
+
| Motion is Detected | Turn on `Trip Night` |
|
|
37
|
+
| Door is Opened | Turn on `Trip Away` |
|
|
38
38
|
| NFC Tag is Detected (1) | Set Security system to `Home` |
|
|
39
39
|
| Security System Triggers | Play Audio (2) |
|
|
40
40
|
|
|
@@ -42,9 +42,6 @@ Here are some examples of automations that can be created:
|
|
|
42
42
|
|
|
43
43
|
(2) AirPlay 2 speaker and Apple Music subscription are required.
|
|
44
44
|
|
|
45
|
-
> **Warning**
|
|
46
|
-
> Use an NFC tag to arm/disarm the security system easily and securely without using the `Home` app.
|
|
47
|
-
|
|
48
45
|
## Contributions
|
|
49
46
|
|
|
50
47
|
Pull requests are welcome.
|
package/config.schema.json
CHANGED
|
@@ -80,49 +80,49 @@
|
|
|
80
80
|
"placeholder": "/home/user/logs"
|
|
81
81
|
},
|
|
82
82
|
"home_arm_seconds": {
|
|
83
|
-
"title": "Home Arming Seconds",
|
|
83
|
+
"title": "Home Arming Delay Seconds",
|
|
84
84
|
"type": ["null", "integer"],
|
|
85
85
|
"default": "null",
|
|
86
86
|
"required": false,
|
|
87
87
|
"minimum": 0
|
|
88
88
|
},
|
|
89
89
|
"night_arm_seconds": {
|
|
90
|
-
"title": "Night Arming Seconds",
|
|
90
|
+
"title": "Night Arming Delay Seconds",
|
|
91
91
|
"type": ["null", "integer"],
|
|
92
92
|
"default": "null",
|
|
93
93
|
"required": false,
|
|
94
94
|
"minimum": 0
|
|
95
95
|
},
|
|
96
96
|
"away_arm_seconds": {
|
|
97
|
-
"title": "Away Arming Seconds",
|
|
97
|
+
"title": "Away Arming Delay Seconds",
|
|
98
98
|
"type": ["null", "integer"],
|
|
99
99
|
"default": "null",
|
|
100
100
|
"required": false,
|
|
101
101
|
"minimum": 0
|
|
102
102
|
},
|
|
103
103
|
"home_trigger_seconds": {
|
|
104
|
-
"title": "Home Trigger Seconds",
|
|
104
|
+
"title": "Home Trigger Delay Seconds",
|
|
105
105
|
"type": ["null", "integer"],
|
|
106
106
|
"default": "null",
|
|
107
107
|
"required": false,
|
|
108
108
|
"minimum": 0
|
|
109
109
|
},
|
|
110
110
|
"night_trigger_seconds": {
|
|
111
|
-
"title": "Night Trigger Seconds",
|
|
111
|
+
"title": "Night Trigger Delay Seconds",
|
|
112
112
|
"type": ["null", "integer"],
|
|
113
113
|
"default": "null",
|
|
114
114
|
"required": false,
|
|
115
115
|
"minimum": 0
|
|
116
116
|
},
|
|
117
117
|
"away_trigger_seconds": {
|
|
118
|
-
"title": "Away Trigger Seconds",
|
|
118
|
+
"title": "Away Trigger Delay Seconds",
|
|
119
119
|
"type": ["null", "integer"],
|
|
120
120
|
"default": "null",
|
|
121
121
|
"required": false,
|
|
122
122
|
"minimum": 0
|
|
123
123
|
},
|
|
124
124
|
"away_extended_trigger_seconds": {
|
|
125
|
-
"title": "Away Extended Trigger Seconds",
|
|
125
|
+
"title": "Away Extended Delay Trigger Seconds",
|
|
126
126
|
"type": ["null", "integer"],
|
|
127
127
|
"default": "null",
|
|
128
128
|
"required": false,
|
|
@@ -144,7 +144,7 @@
|
|
|
144
144
|
},
|
|
145
145
|
"double_knock": {
|
|
146
146
|
"title": "Use Double-Knock",
|
|
147
|
-
"description": "Needs the
|
|
147
|
+
"description": "Needs the Trip switch to be turn on twice within a time window.",
|
|
148
148
|
"type": "boolean",
|
|
149
149
|
"default": false,
|
|
150
150
|
"required": false
|
|
@@ -211,36 +211,36 @@
|
|
|
211
211
|
}
|
|
212
212
|
},
|
|
213
213
|
"tripped_sensor": {
|
|
214
|
-
"title": "Show
|
|
215
|
-
"description": "Adds a sensor that triggers multiple times when any of the
|
|
214
|
+
"title": "Show Tripped Sensor",
|
|
215
|
+
"description": "Adds a sensor that triggers multiple times when any of the Trip switches have been turned on.",
|
|
216
216
|
"type": "boolean",
|
|
217
217
|
"default": false,
|
|
218
218
|
"required": false
|
|
219
219
|
},
|
|
220
220
|
"tripped_sensor_seconds": {
|
|
221
|
-
"title": "
|
|
221
|
+
"title": "Tripped Sensor Seconds",
|
|
222
222
|
"type": "integer",
|
|
223
223
|
"default": 5,
|
|
224
224
|
"required": false,
|
|
225
225
|
"minimum": 0
|
|
226
226
|
},
|
|
227
227
|
"siren_sensor": {
|
|
228
|
-
"title": "Show
|
|
228
|
+
"title": "Show Triggered Sensor",
|
|
229
229
|
"description": "Adds a sensor that triggers multiple times when the security system has been triggered.",
|
|
230
230
|
"type": "boolean",
|
|
231
231
|
"default": false,
|
|
232
232
|
"required": false
|
|
233
233
|
},
|
|
234
234
|
"siren_sensor_seconds": {
|
|
235
|
-
"title": "
|
|
235
|
+
"title": "Triggered Sensor Seconds",
|
|
236
236
|
"type": "integer",
|
|
237
237
|
"default": 5,
|
|
238
238
|
"required": false,
|
|
239
239
|
"minimum": 0
|
|
240
240
|
},
|
|
241
241
|
"reset_sensor": {
|
|
242
|
-
"title": "Show
|
|
243
|
-
"description": "Adds a sensor that triggers when the security system has reset after
|
|
242
|
+
"title": "Show Triggered Reset Sensor",
|
|
243
|
+
"description": "Adds a sensor that triggers when the security system has reset after being triggered.",
|
|
244
244
|
"type": "boolean",
|
|
245
245
|
"default": false,
|
|
246
246
|
"required": false
|
|
@@ -295,21 +295,21 @@
|
|
|
295
295
|
"required": false
|
|
296
296
|
},
|
|
297
297
|
"siren_switch": {
|
|
298
|
-
"title": "Show
|
|
299
|
-
"description": "Adds a global switch that will
|
|
298
|
+
"title": "Show Trip Switch",
|
|
299
|
+
"description": "Adds a global switch that will trip the security system.",
|
|
300
300
|
"type": "boolean",
|
|
301
301
|
"default": false,
|
|
302
302
|
"required": false
|
|
303
303
|
},
|
|
304
304
|
"siren_override_switch": {
|
|
305
|
-
"title": "Show
|
|
305
|
+
"title": "Show Trip Override Switch",
|
|
306
306
|
"description": "Adds a special switch that will trigger the security system bypassing the conditions set.",
|
|
307
307
|
"type": "boolean",
|
|
308
308
|
"default": false,
|
|
309
309
|
"required": false
|
|
310
310
|
},
|
|
311
311
|
"siren_mode_switches": {
|
|
312
|
-
"title": "Show
|
|
312
|
+
"title": "Show Trip Mode Switches",
|
|
313
313
|
"description": "Adds switches that will trigger the security system when their mode is set.",
|
|
314
314
|
"type": "boolean",
|
|
315
315
|
"default": true,
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "homebridge-securitysystem",
|
|
3
3
|
"displayName": "Homebridge Security System",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "7.0.0-beta.2",
|
|
5
5
|
"description": "Homebridge plugin that creates a security system accessory that can be triggered by HomeKit sensors.",
|
|
6
6
|
"main": "src/index.js",
|
|
7
7
|
"scripts": {
|
package/src/index.js
CHANGED
|
@@ -57,8 +57,8 @@ function SecuritySystem(log, config) {
|
|
|
57
57
|
this.doubleKnockTimeout = null;
|
|
58
58
|
this.resetTimeout = null;
|
|
59
59
|
|
|
60
|
-
this.
|
|
61
|
-
this.
|
|
60
|
+
this.trippedMotionSensorInterval = null;
|
|
61
|
+
this.triggeredMotionSensorInterval = null;
|
|
62
62
|
|
|
63
63
|
// File logger
|
|
64
64
|
if (options.isValueSet(options.logDirectory)) {
|
|
@@ -156,47 +156,47 @@ function SecuritySystem(log, config) {
|
|
|
156
156
|
.getCharacteristic(Characteristic.SecuritySystemCurrentState)
|
|
157
157
|
.on("get", this.getCurrentState.bind(this));
|
|
158
158
|
|
|
159
|
-
//
|
|
160
|
-
this.
|
|
159
|
+
// Trip switches
|
|
160
|
+
this.tripSwitchService = new Service.Switch("Trip", "siren-switch");
|
|
161
161
|
|
|
162
|
-
this.
|
|
162
|
+
this.tripSwitchService
|
|
163
163
|
.getCharacteristic(Characteristic.On)
|
|
164
|
-
.on("get", this.
|
|
165
|
-
.on("set", this.
|
|
164
|
+
.on("get", this.getTripSwitch.bind(this))
|
|
165
|
+
.on("set", this.setTripSwitch.bind(this));
|
|
166
166
|
|
|
167
|
-
this.
|
|
168
|
-
"
|
|
167
|
+
this.tripOverrideSwitchService = new Service.Switch(
|
|
168
|
+
"Trip Override",
|
|
169
169
|
"BdW9ce0mUYatqiRqEjT4iA"
|
|
170
170
|
);
|
|
171
171
|
|
|
172
|
-
this.
|
|
172
|
+
this.tripOverrideSwitchService
|
|
173
173
|
.getCharacteristic(Characteristic.On)
|
|
174
|
-
.on("get", this.
|
|
175
|
-
.on("set", this.
|
|
174
|
+
.on("get", this.getTripOverrideSwitch.bind(this))
|
|
175
|
+
.on("set", this.setTripOverrideSwitch.bind(this));
|
|
176
176
|
|
|
177
|
-
this.
|
|
177
|
+
this.tripHomeSwitchService = new Service.Switch("Trip Home", "siren-home");
|
|
178
178
|
|
|
179
|
-
this.
|
|
179
|
+
this.tripHomeSwitchService
|
|
180
180
|
.getCharacteristic(Characteristic.On)
|
|
181
|
-
.on("get", this.
|
|
182
|
-
.on("set", this.
|
|
181
|
+
.on("get", this.getTripHomeSwitch.bind(this))
|
|
182
|
+
.on("set", this.setTripHomeSwitch.bind(this));
|
|
183
183
|
|
|
184
|
-
this.
|
|
184
|
+
this.tripAwaySwitchService = new Service.Switch("Trip Away", "siren-away");
|
|
185
185
|
|
|
186
|
-
this.
|
|
186
|
+
this.tripAwaySwitchService
|
|
187
187
|
.getCharacteristic(Characteristic.On)
|
|
188
|
-
.on("get", this.
|
|
189
|
-
.on("set", this.
|
|
188
|
+
.on("get", this.getTripAwaySwitch.bind(this))
|
|
189
|
+
.on("set", this.setTripAwaySwitch.bind(this));
|
|
190
190
|
|
|
191
|
-
this.
|
|
192
|
-
"
|
|
191
|
+
this.tripNightSwitchService = new Service.Switch(
|
|
192
|
+
"Trip Night",
|
|
193
193
|
"siren-night"
|
|
194
194
|
);
|
|
195
195
|
|
|
196
|
-
this.
|
|
196
|
+
this.tripNightSwitchService
|
|
197
197
|
.getCharacteristic(Characteristic.On)
|
|
198
|
-
.on("get", this.
|
|
199
|
-
.on("set", this.
|
|
198
|
+
.on("get", this.getTripNightSwitch.bind(this))
|
|
199
|
+
.on("set", this.setTripNightSwitch.bind(this));
|
|
200
200
|
|
|
201
201
|
// Arming lock switches
|
|
202
202
|
this.armingLockSwitchService = new Service.Switch(
|
|
@@ -298,33 +298,33 @@ function SecuritySystem(log, config) {
|
|
|
298
298
|
|
|
299
299
|
this.audioSwitchService.getCharacteristic(Characteristic.On).value = true;
|
|
300
300
|
|
|
301
|
-
//
|
|
302
|
-
this.
|
|
303
|
-
"
|
|
301
|
+
// Tripped / Triggered sensors
|
|
302
|
+
this.trippedMotionSensorService = new Service.MotionSensor(
|
|
303
|
+
"Tripped",
|
|
304
304
|
"siren-tripped"
|
|
305
305
|
);
|
|
306
306
|
|
|
307
|
-
this.
|
|
307
|
+
this.trippedMotionSensorService
|
|
308
308
|
.getCharacteristic(Characteristic.MotionDetected)
|
|
309
|
-
.on("get", this.
|
|
309
|
+
.on("get", this.getTrippedMotionDetected.bind(this));
|
|
310
310
|
|
|
311
|
-
this.
|
|
312
|
-
"
|
|
311
|
+
this.triggeredMotionSensorService = new Service.MotionSensor(
|
|
312
|
+
"Triggered",
|
|
313
313
|
"siren-triggered"
|
|
314
314
|
);
|
|
315
315
|
|
|
316
|
-
this.
|
|
316
|
+
this.triggeredMotionSensorService
|
|
317
317
|
.getCharacteristic(Characteristic.MotionDetected)
|
|
318
|
-
.on("get", this.
|
|
318
|
+
.on("get", this.getTriggeredMotionDetected.bind(this));
|
|
319
319
|
|
|
320
|
-
this.
|
|
321
|
-
"
|
|
320
|
+
this.triggeredResetMotionSensorService = new Service.MotionSensor(
|
|
321
|
+
"Triggered Reset",
|
|
322
322
|
"reset-event"
|
|
323
323
|
);
|
|
324
324
|
|
|
325
|
-
this.
|
|
325
|
+
this.triggeredResetMotionSensorService
|
|
326
326
|
.getCharacteristic(Characteristic.MotionDetected)
|
|
327
|
-
.on("get", this.
|
|
327
|
+
.on("get", this.getTriggeredResetMotionDetected.bind(this));
|
|
328
328
|
|
|
329
329
|
// Accessory information
|
|
330
330
|
this.accessoryInformationService = new Service.AccessoryInformation();
|
|
@@ -357,16 +357,16 @@ function SecuritySystem(log, config) {
|
|
|
357
357
|
// Services list
|
|
358
358
|
this.services = [this.service, this.accessoryInformationService];
|
|
359
359
|
|
|
360
|
-
if (options.
|
|
361
|
-
this.services.push(this.
|
|
360
|
+
if (options.trippedMotionSensor) {
|
|
361
|
+
this.services.push(this.trippedMotionSensorService);
|
|
362
362
|
}
|
|
363
363
|
|
|
364
|
-
if (options.
|
|
365
|
-
this.services.push(this.
|
|
364
|
+
if (options.triggeredMotionSensor) {
|
|
365
|
+
this.services.push(this.triggeredMotionSensorService);
|
|
366
366
|
}
|
|
367
367
|
|
|
368
368
|
if (options.resetSensor) {
|
|
369
|
-
this.services.push(this.
|
|
369
|
+
this.services.push(this.triggeredResetMotionSensorService);
|
|
370
370
|
}
|
|
371
371
|
|
|
372
372
|
if (options.armingLockSwitch) {
|
|
@@ -379,12 +379,12 @@ function SecuritySystem(log, config) {
|
|
|
379
379
|
this.services.push(this.armingLockNightSwitchService);
|
|
380
380
|
}
|
|
381
381
|
|
|
382
|
-
if (options.
|
|
383
|
-
this.services.push(this.
|
|
382
|
+
if (options.tripSwitch) {
|
|
383
|
+
this.services.push(this.tripSwitchService);
|
|
384
384
|
}
|
|
385
385
|
|
|
386
|
-
if (options.
|
|
387
|
-
this.services.push(this.
|
|
386
|
+
if (options.tripOverrideSwitch) {
|
|
387
|
+
this.services.push(this.tripOverrideSwitchService);
|
|
388
388
|
}
|
|
389
389
|
|
|
390
390
|
if (
|
|
@@ -396,8 +396,8 @@ function SecuritySystem(log, config) {
|
|
|
396
396
|
this.services.push(this.modeHomeSwitchService);
|
|
397
397
|
}
|
|
398
398
|
|
|
399
|
-
if (options.
|
|
400
|
-
this.services.push(this.
|
|
399
|
+
if (options.tripModeSwitches) {
|
|
400
|
+
this.services.push(this.tripHomeSwitchService);
|
|
401
401
|
}
|
|
402
402
|
}
|
|
403
403
|
|
|
@@ -410,8 +410,8 @@ function SecuritySystem(log, config) {
|
|
|
410
410
|
this.services.push(this.modeAwaySwitchService);
|
|
411
411
|
}
|
|
412
412
|
|
|
413
|
-
if (options.
|
|
414
|
-
this.services.push(this.
|
|
413
|
+
if (options.tripModeSwitches) {
|
|
414
|
+
this.services.push(this.tripAwaySwitchService);
|
|
415
415
|
}
|
|
416
416
|
}
|
|
417
417
|
|
|
@@ -424,8 +424,8 @@ function SecuritySystem(log, config) {
|
|
|
424
424
|
this.services.push(this.modeNightSwitchService);
|
|
425
425
|
}
|
|
426
426
|
|
|
427
|
-
if (options.
|
|
428
|
-
this.services.push(this.
|
|
427
|
+
if (options.tripModeSwitches) {
|
|
428
|
+
this.services.push(this.tripNightSwitchService);
|
|
429
429
|
}
|
|
430
430
|
}
|
|
431
431
|
|
|
@@ -664,10 +664,10 @@ SecuritySystem.prototype.setCurrentState = function (state, origin) {
|
|
|
664
664
|
this.sendWebhookEvent("current", state, origin);
|
|
665
665
|
|
|
666
666
|
if (state === Characteristic.SecuritySystemCurrentState.ALARM_TRIGGERED) {
|
|
667
|
-
// Update
|
|
668
|
-
this.
|
|
669
|
-
this.
|
|
670
|
-
}, options.
|
|
667
|
+
// Update triggered motion sensor
|
|
668
|
+
this.triggeredMotionSensorInterval = setInterval(() => {
|
|
669
|
+
this.updateTriggeredMotionDetected();
|
|
670
|
+
}, options.triggeredMotionSensorSeconds * 1000);
|
|
671
671
|
|
|
672
672
|
// Automatically arm the security system
|
|
673
673
|
// when time runs out
|
|
@@ -675,14 +675,14 @@ SecuritySystem.prototype.setCurrentState = function (state, origin) {
|
|
|
675
675
|
this.resetTimeout = null;
|
|
676
676
|
this.log.info("Reset (Finished)");
|
|
677
677
|
|
|
678
|
-
// Update reset sensor
|
|
679
|
-
this.
|
|
678
|
+
// Update triggered reset motion sensor
|
|
679
|
+
this.triggeredResetMotionSensorService.updateCharacteristic(
|
|
680
680
|
Characteristic.MotionDetected,
|
|
681
681
|
true
|
|
682
682
|
);
|
|
683
683
|
|
|
684
684
|
setTimeout(() => {
|
|
685
|
-
this.
|
|
685
|
+
this.triggeredResetMotionSensorService.updateCharacteristic(
|
|
686
686
|
Characteristic.MotionDetected,
|
|
687
687
|
false
|
|
688
688
|
);
|
|
@@ -736,20 +736,20 @@ SecuritySystem.prototype.resetTimers = function () {
|
|
|
736
736
|
this.log.debug("Arming timeout (Cleared)");
|
|
737
737
|
}
|
|
738
738
|
|
|
739
|
-
// Clear
|
|
740
|
-
if (this.
|
|
741
|
-
clearInterval(this.
|
|
739
|
+
// Clear triggered motion sensor
|
|
740
|
+
if (this.triggeredMotionSensorInterval !== null) {
|
|
741
|
+
clearInterval(this.triggeredMotionSensorInterval);
|
|
742
742
|
|
|
743
|
-
this.
|
|
744
|
-
this.log.debug("
|
|
743
|
+
this.triggeredMotionSensorInterval = null;
|
|
744
|
+
this.log.debug("Triggered interval (Cleared)");
|
|
745
745
|
}
|
|
746
746
|
|
|
747
|
-
// Clear
|
|
748
|
-
if (this.
|
|
749
|
-
clearInterval(this.
|
|
747
|
+
// Clear tripped sensor
|
|
748
|
+
if (this.trippedMotionSensorInterval !== null) {
|
|
749
|
+
clearInterval(this.trippedMotionSensorInterval);
|
|
750
750
|
|
|
751
|
-
this.
|
|
752
|
-
this.log.debug("
|
|
751
|
+
this.trippedMotionSensorInterval = null;
|
|
752
|
+
this.log.debug("Tripped interval (Cleared)");
|
|
753
753
|
}
|
|
754
754
|
|
|
755
755
|
// Clear double-knock timeout
|
|
@@ -790,15 +790,15 @@ SecuritySystem.prototype.handleStateUpdate = function (alarmTriggered) {
|
|
|
790
790
|
return;
|
|
791
791
|
}
|
|
792
792
|
|
|
793
|
-
const
|
|
793
|
+
const trippedOnCharacteristic = this.tripSwitchService.getCharacteristic(
|
|
794
794
|
Characteristic.On
|
|
795
795
|
);
|
|
796
796
|
|
|
797
|
-
if (
|
|
798
|
-
this.
|
|
797
|
+
if (trippedOnCharacteristic.value) {
|
|
798
|
+
this.updateTripSwitch(false, originTypes.INTERNAL, true, null);
|
|
799
799
|
}
|
|
800
800
|
|
|
801
|
-
this.
|
|
801
|
+
this.resetTripSwitches();
|
|
802
802
|
};
|
|
803
803
|
|
|
804
804
|
SecuritySystem.prototype.updateTargetState = function (
|
|
@@ -958,7 +958,7 @@ SecuritySystem.prototype.setTargetState = function (value, callback) {
|
|
|
958
958
|
this.updateTargetState(value, originTypes.REGULAR_SWITCH, true, callback);
|
|
959
959
|
};
|
|
960
960
|
|
|
961
|
-
SecuritySystem.prototype.
|
|
961
|
+
SecuritySystem.prototype.updateTripSwitch = function (
|
|
962
962
|
value,
|
|
963
963
|
origin,
|
|
964
964
|
stateChanged,
|
|
@@ -981,7 +981,7 @@ SecuritySystem.prototype.updateSiren = function (
|
|
|
981
981
|
const isNotSpecialSwitch = origin !== originTypes.SPECIAL_SWITCH;
|
|
982
982
|
|
|
983
983
|
if (isCurrentStateDisarmed && isNotOverridingOff && isNotSpecialSwitch) {
|
|
984
|
-
this.log.warn("
|
|
984
|
+
this.log.warn("Trip Switch (Not armed)");
|
|
985
985
|
|
|
986
986
|
if (callback !== null) {
|
|
987
987
|
callback(HK_NOT_ALLOWED_IN_CURRENT_STATE, false);
|
|
@@ -992,7 +992,7 @@ SecuritySystem.prototype.updateSiren = function (
|
|
|
992
992
|
|
|
993
993
|
// Check if arming
|
|
994
994
|
if (this.isArming) {
|
|
995
|
-
this.log.warn("
|
|
995
|
+
this.log.warn("Trip Switch (Still arming)");
|
|
996
996
|
|
|
997
997
|
if (callback !== null) {
|
|
998
998
|
callback(HK_NOT_ALLOWED_IN_CURRENT_STATE, false);
|
|
@@ -1017,7 +1017,7 @@ SecuritySystem.prototype.updateSiren = function (
|
|
|
1017
1017
|
isFirstKnock &&
|
|
1018
1018
|
isSpecialSwitch === false
|
|
1019
1019
|
) {
|
|
1020
|
-
this.log.warn("
|
|
1020
|
+
this.log.warn("Trip Switch (Knock)");
|
|
1021
1021
|
this.isKnocked = true;
|
|
1022
1022
|
|
|
1023
1023
|
// Custom mode seconds
|
|
@@ -1044,7 +1044,7 @@ SecuritySystem.prototype.updateSiren = function (
|
|
|
1044
1044
|
this.doubleKnockTimeout = null;
|
|
1045
1045
|
this.isKnocked = false;
|
|
1046
1046
|
|
|
1047
|
-
this.log.info("
|
|
1047
|
+
this.log.info("Trip Switch (Reset)");
|
|
1048
1048
|
}, doubleKnockSeconds * 1000);
|
|
1049
1049
|
|
|
1050
1050
|
if (callback !== null) {
|
|
@@ -1065,13 +1065,13 @@ SecuritySystem.prototype.updateSiren = function (
|
|
|
1065
1065
|
}
|
|
1066
1066
|
|
|
1067
1067
|
if (origin === originTypes.INTERNAL || origin === originTypes.EXTERNAL) {
|
|
1068
|
-
this.
|
|
1068
|
+
this.tripSwitchService.updateCharacteristic(Characteristic.On, value);
|
|
1069
1069
|
}
|
|
1070
1070
|
|
|
1071
1071
|
if (value) {
|
|
1072
1072
|
// Already triggered
|
|
1073
1073
|
if (isCurrentStateAlarmTriggered) {
|
|
1074
|
-
this.log.warn("
|
|
1074
|
+
this.log.warn("Trip Switch (Already triggered)");
|
|
1075
1075
|
|
|
1076
1076
|
if (callback !== null) {
|
|
1077
1077
|
callback(HK_NOT_ALLOWED_IN_CURRENT_STATE, false);
|
|
@@ -1082,7 +1082,7 @@ SecuritySystem.prototype.updateSiren = function (
|
|
|
1082
1082
|
|
|
1083
1083
|
// Already about to trigger
|
|
1084
1084
|
if (this.triggerTimeout !== null) {
|
|
1085
|
-
this.log.warn("
|
|
1085
|
+
this.log.warn("Trip Switch (Already on)");
|
|
1086
1086
|
|
|
1087
1087
|
if (callback !== null) {
|
|
1088
1088
|
callback(HK_NOT_ALLOWED_IN_CURRENT_STATE, false);
|
|
@@ -1091,15 +1091,15 @@ SecuritySystem.prototype.updateSiren = function (
|
|
|
1091
1091
|
return false;
|
|
1092
1092
|
}
|
|
1093
1093
|
|
|
1094
|
-
this.log.info("
|
|
1094
|
+
this.log.info("Trip Switch (On)");
|
|
1095
1095
|
|
|
1096
|
-
// Update
|
|
1097
|
-
if (options.
|
|
1098
|
-
this.
|
|
1096
|
+
// Update tripped motion sensor
|
|
1097
|
+
if (options.trippedMotionSensor) {
|
|
1098
|
+
this.updateTrippedMotionDetected();
|
|
1099
1099
|
|
|
1100
|
-
this.
|
|
1101
|
-
this.
|
|
1102
|
-
}, options.
|
|
1100
|
+
this.trippedMotionSensorInterval = setInterval(() => {
|
|
1101
|
+
this.updateTrippedMotionDetected();
|
|
1102
|
+
}, options.trippedMotionSensorSeconds * 1000);
|
|
1103
1103
|
}
|
|
1104
1104
|
|
|
1105
1105
|
const isCurrentStateHome =
|
|
@@ -1160,7 +1160,7 @@ SecuritySystem.prototype.updateSiren = function (
|
|
|
1160
1160
|
this.sendWebhookEvent("current", "warning", origin);
|
|
1161
1161
|
} else {
|
|
1162
1162
|
// Off
|
|
1163
|
-
this.log.info("
|
|
1163
|
+
this.log.info("Trip Switch (Off)");
|
|
1164
1164
|
this.stopAudio();
|
|
1165
1165
|
|
|
1166
1166
|
if (isCurrentStateAlarmTriggered) {
|
|
@@ -1176,9 +1176,9 @@ SecuritySystem.prototype.updateSiren = function (
|
|
|
1176
1176
|
this.resetTimers();
|
|
1177
1177
|
}
|
|
1178
1178
|
|
|
1179
|
-
// Update
|
|
1179
|
+
// Update tripped motion sensor
|
|
1180
1180
|
if (options.trippedSensor) {
|
|
1181
|
-
this.
|
|
1181
|
+
this.trippedMotionSensorService.updateCharacteristic(
|
|
1182
1182
|
Characteristic.MotionDetected,
|
|
1183
1183
|
false
|
|
1184
1184
|
);
|
|
@@ -1194,8 +1194,8 @@ SecuritySystem.prototype.updateSiren = function (
|
|
|
1194
1194
|
return true;
|
|
1195
1195
|
};
|
|
1196
1196
|
|
|
1197
|
-
SecuritySystem.prototype.
|
|
1198
|
-
this.
|
|
1197
|
+
SecuritySystem.prototype.setTrip = function (value, callback) {
|
|
1198
|
+
this.updateTripSwitch(value, originTypes.REGULAR_SWITCH, false, callback);
|
|
1199
1199
|
};
|
|
1200
1200
|
|
|
1201
1201
|
// Server
|
|
@@ -1264,9 +1264,9 @@ SecuritySystem.prototype.sendCodeInvalidError = function (req, res) {
|
|
|
1264
1264
|
res.status(403).json(response);
|
|
1265
1265
|
};
|
|
1266
1266
|
|
|
1267
|
-
SecuritySystem.prototype.sendResultResponse = function (res,
|
|
1267
|
+
SecuritySystem.prototype.sendResultResponse = function (res, success) {
|
|
1268
1268
|
const response = {
|
|
1269
|
-
error:
|
|
1269
|
+
error: success ? false : true,
|
|
1270
1270
|
};
|
|
1271
1271
|
|
|
1272
1272
|
res.json(response);
|
|
@@ -1297,8 +1297,7 @@ SecuritySystem.prototype.startServer = async function () {
|
|
|
1297
1297
|
arming: this.isArming,
|
|
1298
1298
|
current_mode: this.state2Mode(this.currentState),
|
|
1299
1299
|
target_mode: this.state2Mode(this.targetState),
|
|
1300
|
-
|
|
1301
|
-
arming_lock: this.isArmingLocked("global"),
|
|
1300
|
+
tripped: this.triggerTimeout !== null,
|
|
1302
1301
|
};
|
|
1303
1302
|
|
|
1304
1303
|
res.json(response);
|
|
@@ -1313,7 +1312,7 @@ SecuritySystem.prototype.startServer = async function () {
|
|
|
1313
1312
|
|
|
1314
1313
|
if (this.getDelayParameter(req)) {
|
|
1315
1314
|
// Delay
|
|
1316
|
-
result = this.
|
|
1315
|
+
result = this.updateTripSwitch(true, originTypes.EXTERNAL, false, null);
|
|
1317
1316
|
} else {
|
|
1318
1317
|
const isCurrentStateDisarmed =
|
|
1319
1318
|
this.currentState ===
|
|
@@ -1736,58 +1735,58 @@ SecuritySystem.prototype.sendWebhookEvent = function (type, state, origin) {
|
|
|
1736
1735
|
});
|
|
1737
1736
|
};
|
|
1738
1737
|
|
|
1739
|
-
//
|
|
1740
|
-
SecuritySystem.prototype.
|
|
1741
|
-
const value = this.
|
|
1738
|
+
// Trip switches
|
|
1739
|
+
SecuritySystem.prototype.getTripSwitch = function (callback) {
|
|
1740
|
+
const value = this.tripSwitchService.getCharacteristic(
|
|
1742
1741
|
Characteristic.On
|
|
1743
1742
|
).value;
|
|
1744
1743
|
callback(null, value);
|
|
1745
1744
|
};
|
|
1746
1745
|
|
|
1747
|
-
SecuritySystem.prototype.
|
|
1748
|
-
this.
|
|
1746
|
+
SecuritySystem.prototype.setTripSwitch = function (value, callback) {
|
|
1747
|
+
this.updateTripSwitch(value, originTypes.REGULAR_SWITCH, false, callback);
|
|
1749
1748
|
};
|
|
1750
1749
|
|
|
1751
|
-
SecuritySystem.prototype.
|
|
1752
|
-
const value = this.
|
|
1750
|
+
SecuritySystem.prototype.getTripOverrideSwitch = function (callback) {
|
|
1751
|
+
const value = this.tripOverrideSwitchService.getCharacteristic(
|
|
1753
1752
|
Characteristic.On
|
|
1754
1753
|
).value;
|
|
1755
1754
|
callback(null, value);
|
|
1756
1755
|
};
|
|
1757
1756
|
|
|
1758
|
-
SecuritySystem.prototype.
|
|
1759
|
-
this.
|
|
1757
|
+
SecuritySystem.prototype.setTripOverrideSwitch = function (value, callback) {
|
|
1758
|
+
this.updateTripSwitch(value, originTypes.SPECIAL_SWITCH, false, callback);
|
|
1760
1759
|
};
|
|
1761
1760
|
|
|
1762
|
-
SecuritySystem.prototype.
|
|
1763
|
-
const
|
|
1764
|
-
this.
|
|
1765
|
-
const
|
|
1766
|
-
this.
|
|
1767
|
-
const
|
|
1768
|
-
this.
|
|
1761
|
+
SecuritySystem.prototype.resetTripSwitches = function () {
|
|
1762
|
+
const tripHomeOnCharacteristic =
|
|
1763
|
+
this.tripHomeSwitchService.getCharacteristic(Characteristic.On);
|
|
1764
|
+
const tripAwayOnCharacteristic =
|
|
1765
|
+
this.tripAwaySwitchService.getCharacteristic(Characteristic.On);
|
|
1766
|
+
const tripNightOnCharacteristic =
|
|
1767
|
+
this.tripNightSwitchService.getCharacteristic(Characteristic.On);
|
|
1769
1768
|
|
|
1770
|
-
const
|
|
1771
|
-
this.
|
|
1769
|
+
const tripOverrideOnCharacteristic =
|
|
1770
|
+
this.tripOverrideSwitchService.getCharacteristic(Characteristic.On);
|
|
1772
1771
|
|
|
1773
|
-
if (
|
|
1774
|
-
|
|
1775
|
-
this.log.debug("
|
|
1772
|
+
if (tripHomeOnCharacteristic.value) {
|
|
1773
|
+
tripHomeOnCharacteristic.updateValue(false);
|
|
1774
|
+
this.log.debug("Trip Home Switch (Off)");
|
|
1776
1775
|
}
|
|
1777
1776
|
|
|
1778
|
-
if (
|
|
1779
|
-
|
|
1780
|
-
this.log.debug("
|
|
1777
|
+
if (tripAwayOnCharacteristic.value) {
|
|
1778
|
+
tripAwayOnCharacteristic.updateValue(false);
|
|
1779
|
+
this.log.debug("Trip Away Switch (Off)");
|
|
1781
1780
|
}
|
|
1782
1781
|
|
|
1783
|
-
if (
|
|
1784
|
-
|
|
1785
|
-
this.log.debug("
|
|
1782
|
+
if (tripNightOnCharacteristic.value) {
|
|
1783
|
+
tripNightOnCharacteristic.updateValue(false);
|
|
1784
|
+
this.log.debug("Trip Night Switch (Off)");
|
|
1786
1785
|
}
|
|
1787
1786
|
|
|
1788
|
-
if (
|
|
1789
|
-
|
|
1790
|
-
this.log.debug("
|
|
1787
|
+
if (tripOverrideOnCharacteristic.value) {
|
|
1788
|
+
tripOverrideOnCharacteristic.updateValue(false);
|
|
1789
|
+
this.log.debug("Trip Override Switch (Off)");
|
|
1791
1790
|
}
|
|
1792
1791
|
};
|
|
1793
1792
|
|
|
@@ -1805,25 +1804,25 @@ SecuritySystem.prototype.triggerIfModeSet = function (
|
|
|
1805
1804
|
this.currentState === switchRequiredState ||
|
|
1806
1805
|
(this.targetState === switchRequiredState && isCurrentStateAlarmTriggered)
|
|
1807
1806
|
) {
|
|
1808
|
-
this.
|
|
1807
|
+
this.updateTripSwitch(value, originTypes.REGULAR_SWITCH, false, callback);
|
|
1809
1808
|
} else {
|
|
1810
|
-
this.log.debug("
|
|
1809
|
+
this.log.debug("Trip (Mode not set)");
|
|
1811
1810
|
callback(HK_NOT_ALLOWED_IN_CURRENT_STATE, false);
|
|
1812
1811
|
}
|
|
1813
1812
|
} else {
|
|
1814
|
-
this.
|
|
1813
|
+
this.updateTripSwitch(value, originTypes.REGULAR_SWITCH, false, callback);
|
|
1815
1814
|
}
|
|
1816
1815
|
};
|
|
1817
1816
|
|
|
1818
|
-
SecuritySystem.prototype.
|
|
1819
|
-
const value = this.
|
|
1817
|
+
SecuritySystem.prototype.getTripHomeSwitch = function (callback) {
|
|
1818
|
+
const value = this.tripHomeSwitchService.getCharacteristic(
|
|
1820
1819
|
Characteristic.On
|
|
1821
1820
|
).value;
|
|
1822
1821
|
callback(null, value);
|
|
1823
1822
|
};
|
|
1824
1823
|
|
|
1825
|
-
SecuritySystem.prototype.
|
|
1826
|
-
this.log.debug("
|
|
1824
|
+
SecuritySystem.prototype.setTripHomeSwitch = function (value, callback) {
|
|
1825
|
+
this.log.debug("Trip Home Switch (On)");
|
|
1827
1826
|
this.triggerIfModeSet(
|
|
1828
1827
|
Characteristic.SecuritySystemCurrentState.STAY_ARM,
|
|
1829
1828
|
value,
|
|
@@ -1831,15 +1830,15 @@ SecuritySystem.prototype.setSirenHomeSwitch = function (value, callback) {
|
|
|
1831
1830
|
);
|
|
1832
1831
|
};
|
|
1833
1832
|
|
|
1834
|
-
SecuritySystem.prototype.
|
|
1835
|
-
const value = this.
|
|
1833
|
+
SecuritySystem.prototype.getTripAwaySwitch = function (callback) {
|
|
1834
|
+
const value = this.tripAwaySwitchService.getCharacteristic(
|
|
1836
1835
|
Characteristic.On
|
|
1837
1836
|
).value;
|
|
1838
1837
|
callback(null, value);
|
|
1839
1838
|
};
|
|
1840
1839
|
|
|
1841
|
-
SecuritySystem.prototype.
|
|
1842
|
-
this.log.debug("
|
|
1840
|
+
SecuritySystem.prototype.setTripAwaySwitch = function (value, callback) {
|
|
1841
|
+
this.log.debug("Trip Away Switch (On)");
|
|
1843
1842
|
this.triggerIfModeSet(
|
|
1844
1843
|
Characteristic.SecuritySystemCurrentState.AWAY_ARM,
|
|
1845
1844
|
value,
|
|
@@ -1847,15 +1846,15 @@ SecuritySystem.prototype.setSirenAwaySwitch = function (value, callback) {
|
|
|
1847
1846
|
);
|
|
1848
1847
|
};
|
|
1849
1848
|
|
|
1850
|
-
SecuritySystem.prototype.
|
|
1851
|
-
const value = this.
|
|
1849
|
+
SecuritySystem.prototype.getTripNightSwitch = function (callback) {
|
|
1850
|
+
const value = this.tripNightSwitchService.getCharacteristic(
|
|
1852
1851
|
Characteristic.On
|
|
1853
1852
|
).value;
|
|
1854
1853
|
callback(null, value);
|
|
1855
1854
|
};
|
|
1856
1855
|
|
|
1857
|
-
SecuritySystem.prototype.
|
|
1858
|
-
this.log.debug("
|
|
1856
|
+
SecuritySystem.prototype.setTripNightSwitch = function (value, callback) {
|
|
1857
|
+
this.log.debug("Trip Night Switch (On)");
|
|
1859
1858
|
this.triggerIfModeSet(
|
|
1860
1859
|
Characteristic.SecuritySystemCurrentState.NIGHT_ARM,
|
|
1861
1860
|
value,
|
|
@@ -1907,10 +1906,6 @@ SecuritySystem.prototype.isArmingLocked = function (state) {
|
|
|
1907
1906
|
|
|
1908
1907
|
// Check mode switches
|
|
1909
1908
|
switch (state) {
|
|
1910
|
-
case "global":
|
|
1911
|
-
// Server status endpoint
|
|
1912
|
-
return false;
|
|
1913
|
-
|
|
1914
1909
|
case Characteristic.SecuritySystemCurrentState.STAY_ARM:
|
|
1915
1910
|
armingLockSwitchService = this.armingLockHomeSwitchService;
|
|
1916
1911
|
break;
|
|
@@ -2248,53 +2243,53 @@ SecuritySystem.prototype.setAudioSwitch = function (value, callback) {
|
|
|
2248
2243
|
callback(null);
|
|
2249
2244
|
};
|
|
2250
2245
|
|
|
2251
|
-
//
|
|
2252
|
-
SecuritySystem.prototype.
|
|
2253
|
-
const value = this.
|
|
2246
|
+
// Tripped Motion Sensor
|
|
2247
|
+
SecuritySystem.prototype.getTrippedMotionDetected = function (callback) {
|
|
2248
|
+
const value = this.trippedMotionSensorService.getCharacteristic(
|
|
2254
2249
|
Characteristic.MotionDetected
|
|
2255
2250
|
).value;
|
|
2256
2251
|
callback(null, value);
|
|
2257
2252
|
};
|
|
2258
2253
|
|
|
2259
|
-
SecuritySystem.prototype.
|
|
2260
|
-
this.
|
|
2254
|
+
SecuritySystem.prototype.updateTrippedMotionDetected = function () {
|
|
2255
|
+
this.trippedMotionSensorService.updateCharacteristic(
|
|
2261
2256
|
Characteristic.MotionDetected,
|
|
2262
2257
|
true
|
|
2263
2258
|
);
|
|
2264
2259
|
|
|
2265
2260
|
setTimeout(() => {
|
|
2266
|
-
this.
|
|
2261
|
+
this.trippedMotionSensorService.updateCharacteristic(
|
|
2267
2262
|
Characteristic.MotionDetected,
|
|
2268
2263
|
false
|
|
2269
2264
|
);
|
|
2270
2265
|
}, 750);
|
|
2271
2266
|
};
|
|
2272
2267
|
|
|
2273
|
-
//
|
|
2274
|
-
SecuritySystem.prototype.
|
|
2275
|
-
const value = this.
|
|
2268
|
+
// Triggered Motion Sensor
|
|
2269
|
+
SecuritySystem.prototype.getTriggeredMotionDetected = function (callback) {
|
|
2270
|
+
const value = this.triggeredMotionSensorService.getCharacteristic(
|
|
2276
2271
|
Characteristic.MotionDetected
|
|
2277
2272
|
).value;
|
|
2278
2273
|
callback(null, value);
|
|
2279
2274
|
};
|
|
2280
2275
|
|
|
2281
|
-
SecuritySystem.prototype.
|
|
2282
|
-
this.
|
|
2276
|
+
SecuritySystem.prototype.updateTriggeredMotionDetected = function () {
|
|
2277
|
+
this.triggeredMotionSensorService.updateCharacteristic(
|
|
2283
2278
|
Characteristic.MotionDetected,
|
|
2284
2279
|
true
|
|
2285
2280
|
);
|
|
2286
2281
|
|
|
2287
2282
|
setTimeout(() => {
|
|
2288
|
-
this.
|
|
2283
|
+
this.triggeredMotionSensorService.updateCharacteristic(
|
|
2289
2284
|
Characteristic.MotionDetected,
|
|
2290
2285
|
false
|
|
2291
2286
|
);
|
|
2292
2287
|
}, 750);
|
|
2293
2288
|
};
|
|
2294
2289
|
|
|
2295
|
-
//
|
|
2296
|
-
SecuritySystem.prototype.
|
|
2297
|
-
const value = this.
|
|
2290
|
+
// Triggered Reset Motion Sensor
|
|
2291
|
+
SecuritySystem.prototype.getTriggeredResetMotionDetected = function (callback) {
|
|
2292
|
+
const value = this.triggeredResetMotionSensorService.getCharacteristic(
|
|
2298
2293
|
Characteristic.MotionDetected
|
|
2299
2294
|
).value;
|
|
2300
2295
|
callback(null, value);
|
package/src/utils/options.js
CHANGED
|
@@ -32,20 +32,20 @@ const options = {
|
|
|
32
32
|
options.armingLockSwitch = config.arming_lock_switch;
|
|
33
33
|
options.armingLockSwitches = config.arming_lock_switches;
|
|
34
34
|
|
|
35
|
-
//
|
|
36
|
-
options.
|
|
37
|
-
options.
|
|
38
|
-
options.
|
|
35
|
+
// Trip switches
|
|
36
|
+
options.tripSwitch = config.siren_switch;
|
|
37
|
+
options.tripOverrideSwitch = config.siren_override_switch;
|
|
38
|
+
options.tripModeSwitches = config.siren_mode_switches;
|
|
39
39
|
|
|
40
|
-
// Tripped sensor
|
|
41
|
-
options.
|
|
42
|
-
options.
|
|
40
|
+
// Tripped motion sensor
|
|
41
|
+
options.trippedMotionSensor = config.tripped_sensor;
|
|
42
|
+
options.trippedMotionSensorSeconds = config.tripped_sensor_seconds;
|
|
43
43
|
|
|
44
|
-
//
|
|
45
|
-
options.
|
|
46
|
-
options.
|
|
44
|
+
// Triggered motion sensor
|
|
45
|
+
options.triggeredMotionSensor = config.siren_sensor;
|
|
46
|
+
options.triggeredMotionSensorSeconds = config.siren_sensor_seconds;
|
|
47
47
|
|
|
48
|
-
// Reset sensor
|
|
48
|
+
// Reset motion sensor
|
|
49
49
|
options.resetSensor = config.reset_sensor;
|
|
50
50
|
|
|
51
51
|
// Mode switches
|
|
@@ -194,13 +194,13 @@ const options = {
|
|
|
194
194
|
options.trippedSensorSeconds = 5;
|
|
195
195
|
}
|
|
196
196
|
|
|
197
|
-
//
|
|
198
|
-
if (options.isValueSet(options.
|
|
199
|
-
options.
|
|
197
|
+
// Tripped sensor
|
|
198
|
+
if (options.isValueSet(options.trippedMotionSensor) === false) {
|
|
199
|
+
options.trippedMotionSensor = false;
|
|
200
200
|
}
|
|
201
201
|
|
|
202
|
-
if (options.isValueSet(options.
|
|
203
|
-
options.
|
|
202
|
+
if (options.isValueSet(options.triggeredMotionSensorSeconds) === false) {
|
|
203
|
+
options.triggeredMotionSensorSeconds = 5;
|
|
204
204
|
}
|
|
205
205
|
|
|
206
206
|
// Arming lock switch
|
|
@@ -208,17 +208,17 @@ const options = {
|
|
|
208
208
|
options.armingLockSwitch = false;
|
|
209
209
|
}
|
|
210
210
|
|
|
211
|
-
//
|
|
212
|
-
if (options.isValueSet(options.
|
|
213
|
-
options.
|
|
211
|
+
// Trip switches
|
|
212
|
+
if (options.isValueSet(options.tripSwitch) === false) {
|
|
213
|
+
options.tripSwitch = false;
|
|
214
214
|
}
|
|
215
215
|
|
|
216
|
-
if (options.isValueSet(options.
|
|
217
|
-
options.
|
|
216
|
+
if (options.isValueSet(options.tripOverrideSwitch) === false) {
|
|
217
|
+
options.tripOverrideSwitch = false;
|
|
218
218
|
}
|
|
219
219
|
|
|
220
|
-
if (options.isValueSet(options.
|
|
221
|
-
options.
|
|
220
|
+
if (options.isValueSet(options.tripModeSwitches) === false) {
|
|
221
|
+
options.tripModeSwitches = true;
|
|
222
222
|
}
|
|
223
223
|
|
|
224
224
|
// Reset sensor
|