@viguza/homebridge-ezviz 2.0.0 → 2.0.1

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/CHANGELOG.md CHANGED
@@ -19,6 +19,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
19
19
  ### Removed
20
20
  - Nothing yet
21
21
 
22
+ ## [2.0.1] - 2026-09-24
23
+
24
+ ### Fixed
25
+ - The "motion detected" log line's `(MQTT)` tag was sticky: once a sensor received one real-time MQTT push, every later trigger kept showing `(MQTT)` even when it actually came from the 30s poll fallback, making it impossible to tell which path detected a given event. The log now reflects the actual source (`(MQTT)` or `(poll)`) of each individual trigger (#49)
26
+
22
27
  ## [2.0.0] - 2026-09-20
23
28
 
24
29
  ### ⚠️ Upgrade notes — read before updating
@@ -16,7 +16,6 @@ export declare class CameraMotionSensor {
16
16
  private motionDetected;
17
17
  private lastSeenAlarmTime;
18
18
  private clearTimer;
19
- private usingMqtt;
20
19
  private pollInterval;
21
20
  constructor(api: EZVIZAPI, platform: EZVIZPlatform, service: Service, serial: string, displayName: string);
22
21
  onMqttAlarm(): void;
@@ -15,7 +15,6 @@ export class CameraMotionSensor {
15
15
  motionDetected = false;
16
16
  lastSeenAlarmTime = undefined;
17
17
  clearTimer = null;
18
- usingMqtt = false;
19
18
  pollInterval = null;
20
19
  constructor(api, platform, service, serial, displayName) {
21
20
  this.api = api;
@@ -31,8 +30,7 @@ export class CameraMotionSensor {
31
30
  }
32
31
  // Called by MQTT — real-time push, trigger immediately regardless of timestamp.
33
32
  onMqttAlarm() {
34
- this.usingMqtt = true;
35
- this.triggerMotion();
33
+ this.triggerMotion('mqtt');
36
34
  }
37
35
  stopPolling() {
38
36
  if (this.pollInterval) {
@@ -41,7 +39,7 @@ export class CameraMotionSensor {
41
39
  this.platform.log.debug(`${this.displayName}: polling stopped`);
42
40
  }
43
41
  }
44
- triggerMotion() {
42
+ triggerMotion(source) {
45
43
  // Reset the 60s auto-clear window from now
46
44
  if (this.clearTimer) {
47
45
  clearTimeout(this.clearTimer);
@@ -50,7 +48,7 @@ export class CameraMotionSensor {
50
48
  if (!this.motionDetected) {
51
49
  this.motionDetected = true;
52
50
  this.service.updateCharacteristic(this.platform.Characteristic.MotionDetected, true);
53
- this.platform.log.info(`${this.displayName}: motion detected${this.usingMqtt ? ' (MQTT)' : ''}`);
51
+ this.platform.log.info(`${this.displayName}: motion detected${source === 'mqtt' ? ' (MQTT)' : ' (poll)'}`);
54
52
  }
55
53
  }
56
54
  clearMotion() {
@@ -81,7 +79,7 @@ export class CameraMotionSensor {
81
79
  if (alarm.time !== this.lastSeenAlarmTime) {
82
80
  this.platform.log.debug(`${this.displayName}: new alarm via poll (${this.lastSeenAlarmTime} → ${alarm.time})`);
83
81
  this.lastSeenAlarmTime = alarm.time;
84
- this.triggerMotion();
82
+ this.triggerMotion('poll');
85
83
  }
86
84
  }
87
85
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"camera-motion-sensor.js","sourceRoot":"","sources":["../../src/accessories/camera-motion-sensor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"camera-motion-sensor.js","sourceRoot":"","sources":["../../src/accessories/camera-motion-sensor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@viguza/homebridge-ezviz",
3
3
  "displayName": "EZVIZ Homebridge Plugin",
4
4
  "type": "module",
5
- "version": "2.0.0",
5
+ "version": "2.0.1",
6
6
  "private": false,
7
7
  "description": "A short description about what your plugin does.",
8
8
  "author": "Victor Guzman",