homebridge-unifi-protect 5.5.2 → 6.0.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.
Files changed (79) hide show
  1. package/README.md +3 -3
  2. package/config.schema.json +17 -16
  3. package/dist/index.d.ts +3 -0
  4. package/dist/index.js +6 -6
  5. package/dist/index.js.map +1 -1
  6. package/dist/protect-camera.d.ts +58 -0
  7. package/dist/protect-camera.js +367 -246
  8. package/dist/protect-camera.js.map +1 -1
  9. package/dist/protect-device.d.ts +48 -0
  10. package/dist/protect-device.js +189 -0
  11. package/dist/protect-device.js.map +1 -0
  12. package/dist/protect-doorbell.d.ts +22 -0
  13. package/dist/protect-doorbell.js +75 -64
  14. package/dist/protect-doorbell.js.map +1 -1
  15. package/dist/protect-ffmpeg-record.d.ts +15 -0
  16. package/dist/protect-ffmpeg-record.js +48 -34
  17. package/dist/protect-ffmpeg-record.js.map +1 -1
  18. package/dist/protect-ffmpeg-stream.d.ts +15 -0
  19. package/dist/protect-ffmpeg-stream.js +22 -12
  20. package/dist/protect-ffmpeg-stream.js.map +1 -1
  21. package/dist/protect-ffmpeg.d.ts +42 -0
  22. package/dist/protect-ffmpeg.js +49 -58
  23. package/dist/protect-ffmpeg.js.map +1 -1
  24. package/dist/protect-light.d.ts +13 -0
  25. package/dist/protect-light.js +63 -40
  26. package/dist/protect-light.js.map +1 -1
  27. package/dist/protect-liveviews.d.ts +17 -0
  28. package/dist/protect-liveviews.js +117 -101
  29. package/dist/protect-liveviews.js.map +1 -1
  30. package/dist/protect-mqtt.d.ts +19 -0
  31. package/dist/protect-mqtt.js +26 -35
  32. package/dist/protect-mqtt.js.map +1 -1
  33. package/dist/protect-nvr-events.d.ts +30 -0
  34. package/dist/protect-nvr-events.js +168 -431
  35. package/dist/protect-nvr-events.js.map +1 -1
  36. package/dist/protect-nvr-systeminfo.d.ts +15 -0
  37. package/dist/protect-nvr-systeminfo.js +43 -49
  38. package/dist/protect-nvr-systeminfo.js.map +1 -1
  39. package/dist/protect-nvr.d.ts +48 -0
  40. package/dist/protect-nvr.js +327 -359
  41. package/dist/protect-nvr.js.map +1 -1
  42. package/dist/protect-options.d.ts +39 -0
  43. package/dist/protect-options.js +172 -6
  44. package/dist/protect-options.js.map +1 -1
  45. package/dist/protect-platform.d.ts +17 -0
  46. package/dist/protect-platform.js +17 -30
  47. package/dist/protect-platform.js.map +1 -1
  48. package/dist/protect-record.d.ts +33 -0
  49. package/dist/protect-record.js +130 -126
  50. package/dist/protect-record.js.map +1 -1
  51. package/dist/protect-rtp.d.ts +29 -0
  52. package/dist/protect-rtp.js +133 -16
  53. package/dist/protect-rtp.js.map +1 -1
  54. package/dist/protect-securitysystem.d.ts +18 -0
  55. package/dist/protect-securitysystem.js +105 -109
  56. package/dist/protect-securitysystem.js.map +1 -1
  57. package/dist/protect-sensor.d.ts +28 -0
  58. package/dist/protect-sensor.js +79 -97
  59. package/dist/protect-sensor.js.map +1 -1
  60. package/dist/protect-stream.d.ts +41 -0
  61. package/dist/protect-stream.js +298 -156
  62. package/dist/protect-stream.js.map +1 -1
  63. package/dist/protect-timeshift.d.ts +30 -0
  64. package/dist/protect-timeshift.js +65 -48
  65. package/dist/protect-timeshift.js.map +1 -1
  66. package/dist/protect-types.d.ts +50 -0
  67. package/dist/protect-types.js +22 -0
  68. package/dist/protect-types.js.map +1 -0
  69. package/dist/protect-viewer.d.ts +17 -0
  70. package/dist/protect-viewer.js +41 -47
  71. package/dist/protect-viewer.js.map +1 -1
  72. package/dist/settings.d.ts +22 -0
  73. package/dist/settings.js +30 -35
  74. package/dist/settings.js.map +1 -1
  75. package/homebridge-ui/public/index.html +715 -0
  76. package/homebridge-ui/server.js +156 -0
  77. package/package.json +15 -16
  78. package/dist/protect-accessory.js +0 -184
  79. package/dist/protect-accessory.js.map +0 -1
@@ -1,20 +1,17 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.ProtectMqtt = void 0;
7
- const mqtt_1 = __importDefault(require("mqtt"));
8
- const settings_1 = require("./settings");
9
- class ProtectMqtt {
1
+ /* Copyright(C) 2017-2023, HJD (https://github.com/hjdhjd). All rights reserved.
2
+ *
3
+ * protect-mqtt.ts: MQTT connectivity class for UniFi Protect.
4
+ */
5
+ import mqtt from "mqtt";
6
+ import { PROTECT_MQTT_RECONNECT_INTERVAL } from "./settings.js";
7
+ export class ProtectMqtt {
10
8
  constructor(nvr) {
11
9
  this.config = nvr.config;
12
- this.debug = nvr.platform.debug.bind(nvr.platform);
13
10
  this.isConnected = false;
14
- this.log = nvr.platform.log;
11
+ this.log = nvr.log;
15
12
  this.mqtt = null;
16
13
  this.nvr = nvr;
17
- this.nvrApi = nvr.nvrApi;
14
+ this.ufpApi = nvr.ufpApi;
18
15
  this.subscriptions = {};
19
16
  if (!this.config.mqttUrl) {
20
17
  return;
@@ -25,16 +22,16 @@ class ProtectMqtt {
25
22
  configure() {
26
23
  // Try to connect to the MQTT broker and make sure we catch any URL errors.
27
24
  try {
28
- this.mqtt = mqtt_1.default.connect(this.config.mqttUrl, { reconnectPeriod: settings_1.PROTECT_MQTT_RECONNECT_INTERVAL * 1000, rejectUnauthorized: false });
25
+ this.mqtt = mqtt.connect(this.config.mqttUrl, { reconnectPeriod: PROTECT_MQTT_RECONNECT_INTERVAL * 1000, rejectUnauthorized: false });
29
26
  }
30
27
  catch (error) {
31
28
  if (error instanceof Error) {
32
29
  switch (error.message) {
33
30
  case "Missing protocol":
34
- this.log.error("%s MQTT Broker: Invalid URL provided: %s.", this.nvrApi.getNvrName(), this.config.mqttUrl);
31
+ this.log.error("MQTT Broker: Invalid URL provided: %s.", this.config.mqttUrl);
35
32
  break;
36
33
  default:
37
- this.log.error("%s MQTT Broker: Error: %s.", this.nvrApi.getNvrName(), error.message);
34
+ this.log.error("MQTT Broker: Error: %s.", error.message);
38
35
  break;
39
36
  }
40
37
  }
@@ -48,13 +45,13 @@ class ProtectMqtt {
48
45
  this.isConnected = true;
49
46
  // Magic incantation to redact passwords.
50
47
  const redact = /^(?<pre>.*:\/{0,2}.*:)(?<pass>.*)(?<post>@.*)/;
51
- this.log.info("%s: Connected to MQTT broker: %s (topic: %s).", this.nvrApi.getNvrName(), this.config.mqttUrl.replace(redact, "$<pre>REDACTED$<post>"), this.config.mqttTopic);
48
+ this.log.info("Connected to MQTT broker: %s (topic: %s).", this.config.mqttUrl.replace(redact, "$<pre>REDACTED$<post>"), this.config.mqttTopic);
52
49
  });
53
50
  // Notify the user when we've disconnected.
54
51
  this.mqtt.on("close", () => {
55
52
  if (this.isConnected) {
56
53
  this.isConnected = false;
57
- this.log.info("%s: Disconnected from MQTT broker: %s.", this.nvrApi.getNvrName(), this.config.mqttUrl);
54
+ this.log.info("Disconnected from MQTT broker: %s.", this.config.mqttUrl);
58
55
  }
59
56
  });
60
57
  // Process inbound messages and pass it to the right message handler.
@@ -65,63 +62,58 @@ class ProtectMqtt {
65
62
  });
66
63
  // Notify the user when there's a connectivity error.
67
64
  this.mqtt.on("error", (error) => {
68
- var _a;
69
65
  switch (error.code) {
70
66
  case "ECONNREFUSED":
71
- this.log.error("%s MQTT Broker: Connection refused (url: %s). Will retry again in %s minute%s.", this.nvrApi.getNvrName(), this.config.mqttUrl, settings_1.PROTECT_MQTT_RECONNECT_INTERVAL / 60, settings_1.PROTECT_MQTT_RECONNECT_INTERVAL / 60 > 1 ? "s" : "");
67
+ this.log.error("MQTT Broker: Connection refused (url: %s). Will retry again in %s minute%s.", this.config.mqttUrl, PROTECT_MQTT_RECONNECT_INTERVAL / 60, PROTECT_MQTT_RECONNECT_INTERVAL / 60 > 1 ? "s" : "");
72
68
  break;
73
69
  case "ECONNRESET":
74
- this.log.error("%s MQTT Broker: Connection reset (url: %s). Will retry again in %s minute%s.", this.nvrApi.getNvrName(), this.config.mqttUrl, settings_1.PROTECT_MQTT_RECONNECT_INTERVAL / 60, settings_1.PROTECT_MQTT_RECONNECT_INTERVAL / 60 > 1 ? "s" : "");
70
+ this.log.error("MQTT Broker: Connection reset (url: %s). Will retry again in %s minute%s.", this.config.mqttUrl, PROTECT_MQTT_RECONNECT_INTERVAL / 60, PROTECT_MQTT_RECONNECT_INTERVAL / 60 > 1 ? "s" : "");
75
71
  break;
76
72
  case "ENOTFOUND":
77
- (_a = this.mqtt) === null || _a === void 0 ? void 0 : _a.end(true);
78
- this.log.error("%s MQTT Broker: Hostname or IP address not found. (url: %s).", this.nvrApi.getNvrName(), this.config.mqttUrl);
73
+ this.mqtt?.end(true);
74
+ this.log.error("MQTT Broker: Hostname or IP address not found. (url: %s).", this.config.mqttUrl);
79
75
  break;
80
76
  default:
81
- this.log.error("%s MQTT Broker: %s (url: %s). Will retry again in %s minute%s.", this.nvrApi.getNvrName(), error, this.config.mqttUrl, settings_1.PROTECT_MQTT_RECONNECT_INTERVAL / 60, settings_1.PROTECT_MQTT_RECONNECT_INTERVAL / 60 > 1 ? "s" : "");
77
+ this.log.error("MQTT Broker: %s (url: %s). Will retry again in %s minute%s.", error, this.config.mqttUrl, PROTECT_MQTT_RECONNECT_INTERVAL / 60, PROTECT_MQTT_RECONNECT_INTERVAL / 60 > 1 ? "s" : "");
82
78
  break;
83
79
  }
84
80
  });
85
81
  }
86
82
  // Publish an MQTT event to a broker.
87
83
  publish(accessory, topic, message) {
88
- var _a;
89
84
  const expandedTopic = this.expandTopic(accessory, topic);
90
85
  // No valid topic returned, we're done.
91
86
  if (!expandedTopic) {
92
87
  return;
93
88
  }
94
- this.debug("%s: MQTT publish: %s Message: %s.", this.nvrApi.getNvrName(), expandedTopic, message);
89
+ this.log.debug("MQTT publish: %s Message: %s.", expandedTopic, message);
95
90
  // By default, we publish as: unifi/protect/mac/event/name
96
- (_a = this.mqtt) === null || _a === void 0 ? void 0 : _a.publish(expandedTopic, message);
91
+ this.mqtt?.publish(expandedTopic, message);
97
92
  }
98
93
  // Subscribe to an MQTT topic.
99
94
  subscribe(accessory, topic, callback) {
100
- var _a;
101
95
  const expandedTopic = this.expandTopic(accessory, topic);
102
96
  // No valid topic returned, we're done.
103
97
  if (!expandedTopic) {
104
98
  return;
105
99
  }
106
- this.debug("%s: MQTT subscribe: %s.", this.nvrApi.getNvrName(), expandedTopic);
100
+ this.log.debug("MQTT subscribe: %s.", expandedTopic);
107
101
  // Add to our callback list.
108
102
  this.subscriptions[expandedTopic] = callback;
109
103
  // Tell MQTT we're subscribing to this event.
110
104
  // By default, we subscribe as: unifi/protect/mac/event/name.
111
- (_a = this.mqtt) === null || _a === void 0 ? void 0 : _a.subscribe(expandedTopic);
105
+ this.mqtt?.subscribe(expandedTopic);
112
106
  }
113
107
  // Subscribe to a specific MQTT topic and publish a value on a get request.
114
108
  subscribeGet(accessory, name, topic, type, getValue) {
115
- var _a;
116
109
  // Return the current status of a given sensor.
117
- (_a = this.nvr.mqtt) === null || _a === void 0 ? void 0 : _a.subscribe(accessory, topic + "/get", (message) => {
118
- var _a;
110
+ this.nvr.mqtt?.subscribe(accessory, topic + "/get", (message) => {
119
111
  const value = message.toString().toLowerCase();
120
112
  // When we get the right message, we return the system information JSON.
121
113
  if (value !== "true") {
122
114
  return;
123
115
  }
124
- (_a = this.nvr.mqtt) === null || _a === void 0 ? void 0 : _a.publish(accessory, topic, getValue());
116
+ this.nvr.mqtt?.publish(accessory, topic, getValue());
125
117
  this.log.info("%s: %s information published via MQTT.", name, type);
126
118
  });
127
119
  }
@@ -144,11 +136,10 @@ class ProtectMqtt {
144
136
  let mac = (typeof accessory === "string") ? accessory : accessory.context.nvr;
145
137
  // Check to see if it's really a Protect device...if it is, use it's MAC address.
146
138
  if ((typeof accessory !== "string") && ("device" in accessory.context)) {
147
- mac = accessory.context.device.mac;
139
+ mac = this.nvr.configuredDevices[accessory.UUID]?.ufp.mac;
148
140
  }
149
141
  const expandedTopic = this.config.mqttTopic + "/" + mac + "/" + topic;
150
142
  return expandedTopic;
151
143
  }
152
144
  }
153
- exports.ProtectMqtt = ProtectMqtt;
154
145
  //# sourceMappingURL=protect-mqtt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"protect-mqtt.js","sourceRoot":"","sources":["../src/protect-mqtt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protect-mqtt.js","sourceRoot":"","sources":["../src/protect-mqtt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /// <reference types="node" />
2
+ import { EventEmitter } from "node:events";
3
+ import { ProtectCamera } from "./protect-camera.js";
4
+ import { ProtectDevice } from "./protect-device.js";
5
+ import { ProtectNvr } from "./protect-nvr.js";
6
+ export declare class ProtectNvrEvents extends EventEmitter {
7
+ private api;
8
+ private hap;
9
+ private lastMotion;
10
+ private lastRing;
11
+ private log;
12
+ private motionDuration;
13
+ private nvr;
14
+ private readonly eventTimers;
15
+ private ufpApi;
16
+ private ufpDeviceState;
17
+ private platform;
18
+ private ringDuration;
19
+ private unsupportedDevices;
20
+ private eventsHandler;
21
+ private ufpUpdatesHandler;
22
+ constructor(nvr: ProtectNvr);
23
+ private patchUfpConfigJson;
24
+ private ufpUpdates;
25
+ private manageDevices;
26
+ private configureEvents;
27
+ motionEventHandler(protectDevice: ProtectDevice, lastMotion: number, detectedObjects?: string[]): void;
28
+ private motionEventDelivery;
29
+ doorbellEventHandler(protectDevice: ProtectCamera, lastRing: number | null): void;
30
+ }