homebridge-unifi-protect 6.19.0 → 6.21.0
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 +35 -49
- package/dist/devices/protect-camera-package.js +1 -1
- package/dist/devices/protect-camera-package.js.map +1 -1
- package/dist/devices/protect-camera.d.ts +6 -4
- package/dist/devices/protect-camera.js +144 -218
- package/dist/devices/protect-camera.js.map +1 -1
- package/dist/devices/protect-chime.d.ts +3 -0
- package/dist/devices/protect-chime.js +100 -28
- package/dist/devices/protect-chime.js.map +1 -1
- package/dist/devices/protect-device.d.ts +9 -2
- package/dist/devices/protect-device.js +162 -105
- package/dist/devices/protect-device.js.map +1 -1
- package/dist/devices/protect-doorbell.js +48 -81
- package/dist/devices/protect-doorbell.js.map +1 -1
- package/dist/devices/protect-light.js +33 -43
- package/dist/devices/protect-light.js.map +1 -1
- package/dist/devices/protect-liveviews.js +10 -20
- package/dist/devices/protect-liveviews.js.map +1 -1
- package/dist/devices/protect-nvr-systeminfo.js +3 -9
- package/dist/devices/protect-nvr-systeminfo.js.map +1 -1
- package/dist/devices/protect-securitysystem.d.ts +1 -2
- package/dist/devices/protect-securitysystem.js +31 -58
- package/dist/devices/protect-securitysystem.js.map +1 -1
- package/dist/devices/protect-sensor.d.ts +2 -3
- package/dist/devices/protect-sensor.js +154 -204
- package/dist/devices/protect-sensor.js.map +1 -1
- package/dist/devices/protect-viewer.js +21 -28
- package/dist/devices/protect-viewer.js.map +1 -1
- package/dist/ffmpeg/protect-ffmpeg-options.d.ts +14 -2
- package/dist/ffmpeg/protect-ffmpeg-options.js +61 -46
- package/dist/ffmpeg/protect-ffmpeg-options.js.map +1 -1
- package/dist/ffmpeg/protect-ffmpeg-record.js +11 -2
- package/dist/ffmpeg/protect-ffmpeg-record.js.map +1 -1
- package/dist/ffmpeg/protect-ffmpeg-stream.js +2 -2
- package/dist/ffmpeg/protect-ffmpeg-stream.js.map +1 -1
- package/dist/ffmpeg/protect-ffmpeg.js +2 -2
- package/dist/ffmpeg/protect-ffmpeg.js.map +1 -1
- package/dist/protect-events.js +25 -20
- package/dist/protect-events.js.map +1 -1
- package/dist/protect-mqtt.d.ts +2 -2
- package/dist/protect-mqtt.js +17 -3
- package/dist/protect-mqtt.js.map +1 -1
- package/dist/protect-nvr.d.ts +5 -0
- package/dist/protect-nvr.js +46 -24
- package/dist/protect-nvr.js.map +1 -1
- package/dist/protect-options.d.ts +7 -2
- package/dist/protect-options.js +24 -12
- package/dist/protect-options.js.map +1 -1
- package/dist/protect-record.d.ts +3 -1
- package/dist/protect-record.js +29 -15
- package/dist/protect-record.js.map +1 -1
- package/dist/protect-rtp.d.ts +2 -2
- package/dist/protect-rtp.js +8 -9
- package/dist/protect-rtp.js.map +1 -1
- package/dist/protect-snapshot.js +13 -1
- package/dist/protect-snapshot.js.map +1 -1
- package/dist/protect-stream.js +26 -8
- package/dist/protect-stream.js.map +1 -1
- package/dist/protect-types.d.ts +10 -0
- package/dist/protect-types.js +6 -1
- package/dist/protect-types.js.map +1 -1
- package/dist/settings.d.ts +1 -0
- package/dist/settings.js +2 -0
- package/dist/settings.js.map +1 -1
- package/homebridge-ui/public/index.html +11 -12
- package/package.json +12 -12
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ProtectDevice } from "./protect-device.js";
|
|
2
2
|
import { ProtectReservedNames } from "../protect-types.js";
|
|
3
3
|
export class ProtectSensor extends ProtectDevice {
|
|
4
|
+
enabledSensors;
|
|
4
5
|
lastAlarm;
|
|
5
6
|
lastContact;
|
|
6
7
|
lastLeak;
|
|
@@ -8,6 +9,7 @@ export class ProtectSensor extends ProtectDevice {
|
|
|
8
9
|
// Create an instance.
|
|
9
10
|
constructor(nvr, device, accessory) {
|
|
10
11
|
super(nvr, accessory);
|
|
12
|
+
this.enabledSensors = [];
|
|
11
13
|
this.ufp = device;
|
|
12
14
|
this.configureHints();
|
|
13
15
|
this.configureDevice();
|
|
@@ -23,72 +25,57 @@ export class ProtectSensor extends ProtectDevice {
|
|
|
23
25
|
// Configure the battery status.
|
|
24
26
|
this.configureBatteryService();
|
|
25
27
|
// Configure the sensor services that have been enabled.
|
|
26
|
-
|
|
28
|
+
this.updateDevice(false);
|
|
27
29
|
// Configure MQTT services.
|
|
28
30
|
this.configureMqtt();
|
|
29
31
|
// Listen for events.
|
|
30
32
|
this.nvr.events.on("updateEvent." + this.ufp.id, this.listeners["updateEvent." + this.ufp.id] = this.eventHandler.bind(this));
|
|
31
|
-
// Inform the user what we're enabling on startup.
|
|
32
|
-
if (enabledSensors.length) {
|
|
33
|
-
this.log.info("Enabled sensor%s: %s.", enabledSensors.length > 1 ? "s" : "", enabledSensors.join(", "));
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
this.log.info("No sensors enabled.");
|
|
37
|
-
}
|
|
38
33
|
return true;
|
|
39
34
|
}
|
|
40
35
|
// Update battery status information for HomeKit.
|
|
41
36
|
configureBatteryService() {
|
|
42
|
-
//
|
|
43
|
-
|
|
44
|
-
//
|
|
45
|
-
if (!
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
if (!batteryService) {
|
|
49
|
-
this.log.error("Unable to add the battery service.");
|
|
50
|
-
return false;
|
|
51
|
-
}
|
|
52
|
-
this.accessory.addService(batteryService);
|
|
37
|
+
// Acquire the service.
|
|
38
|
+
const service = this.acquireService(this.hap.Service.Battery);
|
|
39
|
+
// Fail gracefully.
|
|
40
|
+
if (!service) {
|
|
41
|
+
this.log.error("Unable to add the battery service.");
|
|
42
|
+
return false;
|
|
53
43
|
}
|
|
54
44
|
// Retrieve the current battery status when requested.
|
|
55
|
-
|
|
45
|
+
service.getCharacteristic(this.hap.Characteristic.StatusLowBattery)?.onGet(() => {
|
|
56
46
|
return this.ufp.batteryStatus?.percentage ?? 0;
|
|
57
47
|
});
|
|
58
|
-
|
|
48
|
+
service.getCharacteristic(this.hap.Characteristic.StatusLowBattery)?.onGet(() => {
|
|
59
49
|
return this.ufp.batteryStatus?.isLow ?? false;
|
|
60
50
|
});
|
|
61
|
-
// Initialize our name.
|
|
62
|
-
batteryService.displayName = this.accessoryName;
|
|
63
|
-
batteryService.updateCharacteristic(this.hap.Characteristic.Name, this.accessoryName);
|
|
64
51
|
// Initialize the battery state.
|
|
65
52
|
this.updateBatteryStatus();
|
|
66
53
|
return true;
|
|
67
54
|
}
|
|
68
55
|
// Update accessory services and characteristics.
|
|
69
56
|
updateDevice(isInitialized = true) {
|
|
70
|
-
const
|
|
57
|
+
const currentEnabledSensors = [];
|
|
71
58
|
// Update the battery status for the accessory.
|
|
72
59
|
this.updateBatteryStatus();
|
|
73
60
|
// Configure the alarm sound sensor.
|
|
74
61
|
if (this.configureAlarmSoundSensor()) {
|
|
75
|
-
|
|
62
|
+
currentEnabledSensors.push("alarm sound");
|
|
76
63
|
}
|
|
77
64
|
// Configure the ambient light sensor.
|
|
78
65
|
if (this.configureAmbientLightSensor()) {
|
|
79
|
-
|
|
66
|
+
currentEnabledSensors.push("ambient light");
|
|
80
67
|
}
|
|
81
68
|
// Configure the contact sensor.
|
|
82
69
|
if (this.configureContactSensor()) {
|
|
83
|
-
|
|
70
|
+
currentEnabledSensors.push("contact");
|
|
84
71
|
}
|
|
85
72
|
// Configure the humidity sensor.
|
|
86
73
|
if (this.configureHumiditySensor()) {
|
|
87
|
-
|
|
74
|
+
currentEnabledSensors.push("humidity");
|
|
88
75
|
}
|
|
89
76
|
// Configure the alarm sound sensor.
|
|
90
77
|
if (this.configureLeakSensor()) {
|
|
91
|
-
|
|
78
|
+
currentEnabledSensors.push("leak");
|
|
92
79
|
}
|
|
93
80
|
// Configure the motion sensor.
|
|
94
81
|
if (this.configureMotionSensor(this.ufp.motionSettings?.isEnabled, isInitialized)) {
|
|
@@ -98,256 +85,230 @@ export class ProtectSensor extends ProtectDevice {
|
|
|
98
85
|
// Update the state characteristics.
|
|
99
86
|
this.configureStateCharacteristics(motionService);
|
|
100
87
|
}
|
|
101
|
-
|
|
88
|
+
currentEnabledSensors.push("motion sensor");
|
|
102
89
|
}
|
|
103
90
|
// Configure the occupancy sensor.
|
|
104
91
|
this.configureOccupancySensor(this.ufp.motionSettings?.isEnabled, isInitialized);
|
|
105
92
|
// Configure the temperature sensor.
|
|
106
93
|
if (this.configureTemperatureSensor()) {
|
|
107
|
-
|
|
94
|
+
currentEnabledSensors.push("temperature");
|
|
95
|
+
}
|
|
96
|
+
// Inform the user if we've had a change.
|
|
97
|
+
if (this.enabledSensors.join(" ") !== currentEnabledSensors.join(" ")) {
|
|
98
|
+
this.enabledSensors = currentEnabledSensors;
|
|
99
|
+
// Inform the user what we're enabling on startup.
|
|
100
|
+
if (this.enabledSensors.length) {
|
|
101
|
+
this.log.info("Enabled sensor%s: %s.", this.enabledSensors.length > 1 ? "s" : "", this.enabledSensors.join(", "));
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
this.log.info("No sensors enabled.");
|
|
105
|
+
}
|
|
108
106
|
}
|
|
109
|
-
return enabledSensors;
|
|
110
107
|
}
|
|
111
108
|
// Configure the alarm sound sensor for HomeKit.
|
|
112
109
|
configureAlarmSoundSensor() {
|
|
113
|
-
//
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
this.accessory.removeService(contactService);
|
|
119
|
-
this.log.info("Disabling alarm sound contact sensor.");
|
|
110
|
+
// Validate whether we should have this service enabled.
|
|
111
|
+
if (!this.validService(this.hap.Service.ContactSensor, () => {
|
|
112
|
+
// Have we disabled the sensor?
|
|
113
|
+
if (!this.ufp.alarmSettings?.isEnabled) {
|
|
114
|
+
return false;
|
|
120
115
|
}
|
|
116
|
+
return true;
|
|
117
|
+
}, ProtectReservedNames.CONTACT_SENSOR_ALARM_SOUND)) {
|
|
121
118
|
return false;
|
|
122
119
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
return false;
|
|
130
|
-
}
|
|
131
|
-
contactService.addOptionalCharacteristic(this.hap.Characteristic.ConfiguredName);
|
|
132
|
-
contactService.updateCharacteristic(this.hap.Characteristic.ConfiguredName, contactName);
|
|
133
|
-
this.accessory.addService(contactService);
|
|
134
|
-
this.log.info("Enabling alarm sound contact sensor.");
|
|
120
|
+
// Acquire the service.
|
|
121
|
+
const service = this.acquireService(this.hap.Service.ContactSensor, this.accessoryName + " Alarm Sound", ProtectReservedNames.CONTACT_SENSOR_ALARM_SOUND);
|
|
122
|
+
// Fail gracefully.
|
|
123
|
+
if (!service) {
|
|
124
|
+
this.log.error("Unable to add alarm sound contact sensor.");
|
|
125
|
+
return false;
|
|
135
126
|
}
|
|
136
127
|
// Retrieve the current contact sensor state when requested.
|
|
137
|
-
|
|
128
|
+
service.getCharacteristic(this.hap.Characteristic.ContactSensorState)?.onGet(() => {
|
|
138
129
|
return this.alarmDetected;
|
|
139
130
|
});
|
|
140
|
-
// Initialize our name.
|
|
141
|
-
contactService.displayName = contactName;
|
|
142
|
-
contactService.updateCharacteristic(this.hap.Characteristic.Name, contactName);
|
|
143
|
-
contactService.updateCharacteristic(this.hap.Characteristic.ConfiguredName, contactName);
|
|
144
131
|
// Update the sensor.
|
|
145
|
-
|
|
132
|
+
service.updateCharacteristic(this.hap.Characteristic.ContactSensorState, this.alarmDetected);
|
|
146
133
|
// Update the state characteristics.
|
|
147
|
-
this.configureStateCharacteristics(
|
|
134
|
+
this.configureStateCharacteristics(service);
|
|
135
|
+
// Publish the state.
|
|
136
|
+
this.publish("alarm", this.alarmDetected.toString());
|
|
148
137
|
return true;
|
|
149
138
|
}
|
|
150
139
|
// Configure the ambient light sensor for HomeKit.
|
|
151
140
|
configureAmbientLightSensor() {
|
|
152
|
-
//
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
this.accessory.removeService(lightService);
|
|
158
|
-
this.log.info("Disabling ambient light sensor.");
|
|
141
|
+
// Validate whether we should have this service enabled.
|
|
142
|
+
if (!this.validService(this.hap.Service.LightSensor, () => {
|
|
143
|
+
// Have we disabled the sensor?
|
|
144
|
+
if (!this.ufp.lightSettings?.isEnabled) {
|
|
145
|
+
return false;
|
|
159
146
|
}
|
|
147
|
+
return true;
|
|
148
|
+
})) {
|
|
160
149
|
return false;
|
|
161
150
|
}
|
|
162
|
-
//
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
}
|
|
169
|
-
this.accessory.addService(lightService);
|
|
170
|
-
this.log.info("Enabling ambient light sensor.");
|
|
151
|
+
// Acquire the service.
|
|
152
|
+
const service = this.acquireService(this.hap.Service.LightSensor);
|
|
153
|
+
// Fail gracefully.
|
|
154
|
+
if (!service) {
|
|
155
|
+
this.log.error("Unable to add ambient light sensor.");
|
|
156
|
+
return false;
|
|
171
157
|
}
|
|
172
158
|
// Retrieve the current light level when requested.
|
|
173
|
-
|
|
159
|
+
service.getCharacteristic(this.hap.Characteristic.CurrentAmbientLightLevel)?.onGet(() => {
|
|
174
160
|
// The minimum value for ambient light in HomeKit is 0.0001. I have no idea why...but it is. Honor it.
|
|
175
161
|
return this.ambientLight >= 0.0001 ? this.ambientLight : 0.0001;
|
|
176
162
|
});
|
|
177
|
-
// Initialize our name.
|
|
178
|
-
lightService.displayName = this.accessoryName;
|
|
179
|
-
lightService.updateCharacteristic(this.hap.Characteristic.Name, this.accessoryName);
|
|
180
163
|
// Update the sensor. The minimum value for ambient light in HomeKit is 0.0001. I have no idea why...but it is. Honor it.
|
|
181
|
-
|
|
164
|
+
service.updateCharacteristic(this.hap.Characteristic.CurrentAmbientLightLevel, this.ambientLight >= 0.0001 ? this.ambientLight : 0.0001);
|
|
182
165
|
// Update the state characteristics.
|
|
183
|
-
this.configureStateCharacteristics(
|
|
166
|
+
this.configureStateCharacteristics(service);
|
|
167
|
+
// Publish the state.
|
|
168
|
+
this.publish("ambientlight", this.ambientLight.toString());
|
|
184
169
|
return true;
|
|
185
170
|
}
|
|
186
171
|
// Configure the contact sensor for HomeKit.
|
|
187
172
|
configureContactSensor() {
|
|
188
|
-
//
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
this.accessory.removeService(contactService);
|
|
194
|
-
this.log.info("Disabling contact sensor.");
|
|
173
|
+
// Validate whether we should have this service enabled.
|
|
174
|
+
if (!this.validService(this.hap.Service.ContactSensor, () => {
|
|
175
|
+
// Have we disabled the sensor or are we configured as a leak sensor?
|
|
176
|
+
if (!this.ufp.mountType || (this.ufp.mountType === "leak") || (this.ufp.mountType === "none")) {
|
|
177
|
+
return false;
|
|
195
178
|
}
|
|
179
|
+
return true;
|
|
180
|
+
}, ProtectReservedNames.CONTACT_SENSOR)) {
|
|
196
181
|
return false;
|
|
197
182
|
}
|
|
198
|
-
//
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
}
|
|
205
|
-
this.accessory.addService(contactService);
|
|
206
|
-
this.log.info("Enabling contact sensor.");
|
|
183
|
+
// Acquire the service.
|
|
184
|
+
const service = this.acquireService(this.hap.Service.ContactSensor, undefined, ProtectReservedNames.CONTACT_SENSOR);
|
|
185
|
+
// Fail gracefully.
|
|
186
|
+
if (!service) {
|
|
187
|
+
this.log.error("Unable to add contact sensor.");
|
|
188
|
+
return false;
|
|
207
189
|
}
|
|
208
190
|
// Retrieve the current contact sensor state when requested.
|
|
209
|
-
|
|
191
|
+
service.getCharacteristic(this.hap.Characteristic.ContactSensorState)?.onGet(() => {
|
|
210
192
|
return this.contact;
|
|
211
193
|
});
|
|
212
|
-
// Initialize our name.
|
|
213
|
-
contactService.displayName = this.accessoryName;
|
|
214
|
-
contactService.updateCharacteristic(this.hap.Characteristic.Name, this.accessoryName);
|
|
215
194
|
// Update the sensor.
|
|
216
|
-
|
|
195
|
+
service.updateCharacteristic(this.hap.Characteristic.ContactSensorState, this.contact);
|
|
217
196
|
// Update the state characteristics.
|
|
218
|
-
this.configureStateCharacteristics(
|
|
197
|
+
this.configureStateCharacteristics(service);
|
|
198
|
+
// Publish the state.
|
|
199
|
+
this.publish("contact", this.contact.toString());
|
|
219
200
|
return true;
|
|
220
201
|
}
|
|
221
202
|
// Configure the humidity sensor for HomeKit.
|
|
222
203
|
configureHumiditySensor() {
|
|
223
|
-
//
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
this.accessory.removeService(humidityService);
|
|
229
|
-
this.log.info("Disabling humidity sensor.");
|
|
204
|
+
// Validate whether we should have this service enabled.
|
|
205
|
+
if (!this.validService(this.hap.Service.HumiditySensor, () => {
|
|
206
|
+
// Have we disabled the sensor?
|
|
207
|
+
if (!this.ufp.humiditySettings?.isEnabled) {
|
|
208
|
+
return false;
|
|
230
209
|
}
|
|
210
|
+
return true;
|
|
211
|
+
})) {
|
|
231
212
|
return false;
|
|
232
213
|
}
|
|
233
|
-
//
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
}
|
|
240
|
-
this.accessory.addService(humidityService);
|
|
241
|
-
this.log.info("Enabling humidity sensor.");
|
|
214
|
+
// Acquire the service.
|
|
215
|
+
const service = this.acquireService(this.hap.Service.HumiditySensor);
|
|
216
|
+
// Fail gracefully.
|
|
217
|
+
if (!service) {
|
|
218
|
+
this.log.error("Unable to add humidity sensor.");
|
|
219
|
+
return false;
|
|
242
220
|
}
|
|
243
221
|
// Retrieve the current humidity when requested.
|
|
244
|
-
|
|
222
|
+
service.getCharacteristic(this.hap.Characteristic.CurrentRelativeHumidity)?.onGet(() => {
|
|
245
223
|
return this.humidity < 0 ? 0 : this.humidity;
|
|
246
224
|
});
|
|
247
|
-
// Initialize our name.
|
|
248
|
-
humidityService.displayName = this.accessoryName;
|
|
249
|
-
humidityService.updateCharacteristic(this.hap.Characteristic.Name, this.accessoryName);
|
|
250
225
|
// Update the sensor.
|
|
251
|
-
|
|
226
|
+
service.updateCharacteristic(this.hap.Characteristic.CurrentRelativeHumidity, this.humidity < 0 ? 0 : this.humidity);
|
|
252
227
|
// Update the state characteristics.
|
|
253
|
-
this.configureStateCharacteristics(
|
|
228
|
+
this.configureStateCharacteristics(service);
|
|
229
|
+
// Publish the state.
|
|
230
|
+
this.publish("humidity", this.humidity.toString());
|
|
254
231
|
return true;
|
|
255
232
|
}
|
|
256
233
|
// Configure the leak sensor for HomeKit.
|
|
257
234
|
configureLeakSensor() {
|
|
258
|
-
//
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
this.accessory.removeService(leakService);
|
|
264
|
-
this.log.info("Disabling leak sensor.");
|
|
235
|
+
// Validate whether we should have this service enabled.
|
|
236
|
+
if (!this.validService(this.hap.Service.LeakSensor, () => {
|
|
237
|
+
// Have we disabled the leak sensor?
|
|
238
|
+
if (this.ufp.mountType !== "leak") {
|
|
239
|
+
return false;
|
|
265
240
|
}
|
|
241
|
+
return true;
|
|
242
|
+
})) {
|
|
266
243
|
return false;
|
|
267
244
|
}
|
|
268
|
-
//
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
}
|
|
275
|
-
this.accessory.addService(leakService);
|
|
276
|
-
this.log.info("Enabling leak sensor.");
|
|
245
|
+
// Acquire the service.
|
|
246
|
+
const service = this.acquireService(this.hap.Service.LeakSensor);
|
|
247
|
+
// Fail gracefully.
|
|
248
|
+
if (!service) {
|
|
249
|
+
this.log.error("Unable to add leak sensor.");
|
|
250
|
+
return false;
|
|
277
251
|
}
|
|
278
252
|
// Retrieve the current contact sensor state when requested.
|
|
279
|
-
|
|
253
|
+
service.getCharacteristic(this.hap.Characteristic.LeakDetected)?.onGet(() => {
|
|
280
254
|
return this.leakDetected;
|
|
281
255
|
});
|
|
282
|
-
// Initialize our name.
|
|
283
|
-
leakService.displayName = this.accessoryName;
|
|
284
|
-
leakService.updateCharacteristic(this.hap.Characteristic.Name, this.accessoryName);
|
|
285
256
|
// Update the sensor.
|
|
286
|
-
|
|
257
|
+
service.updateCharacteristic(this.hap.Characteristic.LeakDetected, this.leakDetected);
|
|
287
258
|
// Update the state characteristics.
|
|
288
|
-
this.configureStateCharacteristics(
|
|
259
|
+
this.configureStateCharacteristics(service);
|
|
260
|
+
// Publish the state.
|
|
261
|
+
this.publish("leak", this.leakDetected.toString());
|
|
289
262
|
return true;
|
|
290
263
|
}
|
|
291
264
|
// Configure the temperature sensor for HomeKit.
|
|
292
265
|
configureTemperatureSensor() {
|
|
293
|
-
//
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
this.accessory.removeService(temperatureService);
|
|
299
|
-
this.log.info("Disabling temperature sensor.");
|
|
266
|
+
// Validate whether we should have this service enabled.
|
|
267
|
+
if (!this.validService(this.hap.Service.TemperatureSensor, () => {
|
|
268
|
+
// Have we disabled the sensor?
|
|
269
|
+
if (!this.ufp.temperatureSettings?.isEnabled) {
|
|
270
|
+
return false;
|
|
300
271
|
}
|
|
272
|
+
return true;
|
|
273
|
+
})) {
|
|
301
274
|
return false;
|
|
302
275
|
}
|
|
303
|
-
//
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
}
|
|
310
|
-
this.accessory.addService(temperatureService);
|
|
311
|
-
this.log.info("Enabling temperature sensor.");
|
|
276
|
+
// Acquire the service.
|
|
277
|
+
const service = this.acquireService(this.hap.Service.TemperatureSensor);
|
|
278
|
+
// Fail gracefully.
|
|
279
|
+
if (!service) {
|
|
280
|
+
this.log.error("Unable to add humidity sensor.");
|
|
281
|
+
return false;
|
|
312
282
|
}
|
|
313
283
|
// Retrieve the current temperature when requested.
|
|
314
|
-
|
|
284
|
+
service.getCharacteristic(this.hap.Characteristic.CurrentTemperature)?.onGet(() => {
|
|
315
285
|
return this.temperature < 0 ? 0 : this.temperature;
|
|
316
286
|
});
|
|
317
|
-
// Initialize our name.
|
|
318
|
-
temperatureService.displayName = this.accessoryName;
|
|
319
|
-
temperatureService.updateCharacteristic(this.hap.Characteristic.Name, this.accessoryName);
|
|
320
287
|
// Update the sensor.
|
|
321
|
-
|
|
288
|
+
service.updateCharacteristic(this.hap.Characteristic.CurrentTemperature, this.temperature < 0 ? 0 : this.temperature);
|
|
322
289
|
// Update the state characteristics.
|
|
323
|
-
this.configureStateCharacteristics(
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
// Configure the active connection status in HomeKit.
|
|
327
|
-
configureActiveStatus(service) {
|
|
328
|
-
// Retrieve the current connection status when requested.
|
|
329
|
-
service.getCharacteristic(this.hap.Characteristic.StatusActive)?.onGet(() => {
|
|
330
|
-
return this.isOnline;
|
|
331
|
-
});
|
|
332
|
-
// Update the current connection status.
|
|
333
|
-
service.updateCharacteristic(this.hap.Characteristic.StatusActive, this.isOnline);
|
|
290
|
+
this.configureStateCharacteristics(service);
|
|
291
|
+
// Publish the state.
|
|
292
|
+
this.publish("temperature", this.temperature.toString());
|
|
334
293
|
return true;
|
|
335
294
|
}
|
|
336
295
|
// Update the battery status in HomeKit.
|
|
337
296
|
updateBatteryStatus() {
|
|
338
297
|
// Find the battery service, if it exists.
|
|
339
298
|
const batteryService = this.accessory.getService(this.hap.Service.Battery);
|
|
340
|
-
// We don't have the battery service, we're done.
|
|
341
|
-
if (!batteryService) {
|
|
342
|
-
return false;
|
|
343
|
-
}
|
|
344
299
|
// Update the battery status.
|
|
345
|
-
batteryService
|
|
346
|
-
batteryService
|
|
300
|
+
batteryService?.updateCharacteristic(this.hap.Characteristic.BatteryLevel, this.ufp.batteryStatus?.percentage ?? 0);
|
|
301
|
+
batteryService?.updateCharacteristic(this.hap.Characteristic.StatusLowBattery, this.ufp.batteryStatus?.isLow);
|
|
347
302
|
return true;
|
|
348
303
|
}
|
|
349
|
-
// Configure the
|
|
350
|
-
|
|
304
|
+
// Configure the additional state characteristics in HomeKit.
|
|
305
|
+
configureStateCharacteristics(service) {
|
|
306
|
+
// Retrieve the current connection status when requested.
|
|
307
|
+
service.getCharacteristic(this.hap.Characteristic.StatusActive)?.onGet(() => {
|
|
308
|
+
return this.isOnline;
|
|
309
|
+
});
|
|
310
|
+
// Update the current connection status.
|
|
311
|
+
service.updateCharacteristic(this.hap.Characteristic.StatusActive, this.isOnline);
|
|
351
312
|
// Retrieve the current tamper status when requested.
|
|
352
313
|
service.getCharacteristic(this.hap.Characteristic.StatusTampered)?.onGet(() => {
|
|
353
314
|
return this.ufp.tamperingDetectedAt !== null;
|
|
@@ -356,14 +317,6 @@ export class ProtectSensor extends ProtectDevice {
|
|
|
356
317
|
service.updateCharacteristic(this.hap.Characteristic.StatusTampered, this.ufp.tamperingDetectedAt !== null);
|
|
357
318
|
return true;
|
|
358
319
|
}
|
|
359
|
-
// Configure the additional state characteristics in HomeKit.
|
|
360
|
-
configureStateCharacteristics(service) {
|
|
361
|
-
// Update the active connection status.
|
|
362
|
-
this.configureActiveStatus(service);
|
|
363
|
-
// Update the tamper status.
|
|
364
|
-
this.configureTamperedStatus(service);
|
|
365
|
-
return true;
|
|
366
|
-
}
|
|
367
320
|
// Get the current alarm alert detection information.
|
|
368
321
|
get alarmDetected() {
|
|
369
322
|
// Return true if we are not null, meaning the alarm has sounded.
|
|
@@ -371,7 +324,6 @@ export class ProtectSensor extends ProtectDevice {
|
|
|
371
324
|
// Save the state change and publish to MQTT.
|
|
372
325
|
if (value !== this.lastAlarm) {
|
|
373
326
|
this.lastAlarm = value;
|
|
374
|
-
this.nvr.mqtt?.publish(this.accessory, "alarm", value.toString());
|
|
375
327
|
this.log.info("Alarm %sdetected.", value ? "" : "no longer ");
|
|
376
328
|
}
|
|
377
329
|
return value;
|
|
@@ -385,7 +337,6 @@ export class ProtectSensor extends ProtectDevice {
|
|
|
385
337
|
// Save the state change and publish to MQTT.
|
|
386
338
|
if (this.ufp.isOpened !== this.lastContact) {
|
|
387
339
|
this.lastContact = this.ufp.isOpened;
|
|
388
|
-
this.nvr.mqtt?.publish(this.accessory, "contact", this.ufp.isOpened.toString());
|
|
389
340
|
}
|
|
390
341
|
return this.ufp.isOpened;
|
|
391
342
|
}
|
|
@@ -405,7 +356,6 @@ export class ProtectSensor extends ProtectDevice {
|
|
|
405
356
|
// Save the state change and publish to MQTT.
|
|
406
357
|
if (value !== this.lastLeak) {
|
|
407
358
|
this.lastLeak = value;
|
|
408
|
-
this.nvr.mqtt?.publish(this.accessory, "leak", value.toString());
|
|
409
359
|
this.log.info("Leak %sdetected.", value ? "" : "no longer ");
|
|
410
360
|
}
|
|
411
361
|
return value;
|
|
@@ -416,22 +366,22 @@ export class ProtectSensor extends ProtectDevice {
|
|
|
416
366
|
}
|
|
417
367
|
// Configure MQTT capabilities for sensors.
|
|
418
368
|
configureMqtt() {
|
|
419
|
-
this.
|
|
369
|
+
this.subscribeGet("alarm", "alarm detected", () => {
|
|
420
370
|
return this.alarmDetected.toString();
|
|
421
371
|
});
|
|
422
|
-
this.
|
|
372
|
+
this.subscribeGet("ambientlight", "ambient light", () => {
|
|
423
373
|
return this.ambientLight.toString();
|
|
424
374
|
});
|
|
425
|
-
this.
|
|
375
|
+
this.subscribeGet("contact", "contact sensor", () => {
|
|
426
376
|
return this.contact.toString();
|
|
427
377
|
});
|
|
428
|
-
this.
|
|
378
|
+
this.subscribeGet("humidity", "humidity", () => {
|
|
429
379
|
return this.humidity.toString();
|
|
430
380
|
});
|
|
431
|
-
this.
|
|
381
|
+
this.subscribeGet("leak", "leak detected", () => {
|
|
432
382
|
return this.leakDetected.toString();
|
|
433
383
|
});
|
|
434
|
-
this.
|
|
384
|
+
this.subscribeGet("temperature", "temperature", () => {
|
|
435
385
|
return this.temperature.toString();
|
|
436
386
|
});
|
|
437
387
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protect-sensor.js","sourceRoot":"","sources":["../../src/devices/protect-sensor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"protect-sensor.js","sourceRoot":"","sources":["../../src/devices/protect-sensor.ts"],"names":[],"mappings":"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"}
|