homebridge-netatmo-security-mk 1.0.2 → 1.0.3

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.
@@ -1,11 +1,13 @@
1
1
  import { PlatformAccessory, CharacteristicValue } from 'homebridge';
2
- import { NetatmoSecurityPlatform } from '../platform';
3
- export declare class IndoorSirenAccessory {
2
+ import { NetatmoSecurityPlatform, NetatmoAccessory } from '../platform';
3
+ export declare class IndoorSirenAccessory implements NetatmoAccessory {
4
4
  private readonly platform;
5
5
  private readonly accessory;
6
6
  private service;
7
+ private device;
7
8
  private state;
8
9
  constructor(platform: NetatmoSecurityPlatform, accessory: PlatformAccessory);
10
+ update(device: any): void;
9
11
  isMuted(): Promise<CharacteristicValue>;
10
12
  }
11
13
  //# sourceMappingURL=indoorSirenAccessory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"indoorSirenAccessory.d.ts","sourceRoot":"","sources":["../../src/accessory/indoorSirenAccessory.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAEtD,qBAAa,oBAAoB;IAS7B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAT5B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAGX;gBAIiB,QAAQ,EAAE,uBAAuB,EACjC,SAAS,EAAE,iBAAiB;IA0DzC,OAAO,IAAI,OAAO,CAAC,mBAAmB,CAAC;CAM9C"}
1
+ {"version":3,"file":"indoorSirenAccessory.d.ts","sourceRoot":"","sources":["../../src/accessory/indoorSirenAccessory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAW,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAExE,qBAAa,oBAAqB,YAAW,gBAAgB;IAQzD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAR5B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,KAAK,CAEX;gBAGiB,QAAQ,EAAE,uBAAuB,EACjC,SAAS,EAAE,iBAAiB;IAmB/C,MAAM,CAAC,MAAM,EAAE,GAAG;IAcZ,OAAO,IAAI,OAAO,CAAC,mBAAmB,CAAC;CAI9C"}
@@ -2,64 +2,41 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.IndoorSirenAccessory = void 0;
4
4
  class IndoorSirenAccessory {
5
- // Load device
6
5
  constructor(platform, accessory) {
7
6
  this.platform = platform;
8
7
  this.accessory = accessory;
9
8
  this.state = {
10
9
  SoundStatus: 'no_sound',
11
- TamperStatus: 0,
12
10
  };
11
+ this.device = accessory.context.device;
13
12
  this.accessory.getService(this.platform.Service.AccessoryInformation)
14
13
  .setCharacteristic(this.platform.Characteristic.Manufacturer, 'Netatmo-Security')
15
14
  .setCharacteristic(this.platform.Characteristic.Model, 'Indoor-Siren')
16
- .setCharacteristic(this.platform.Characteristic.SerialNumber, this.accessory.context.device.id);
15
+ .setCharacteristic(this.platform.Characteristic.SerialNumber, this.device.id);
17
16
  this.service = this.accessory.getService(this.platform.Service.Speaker)
18
17
  || this.accessory.addService(this.platform.Service.Speaker);
19
- this.service.setCharacteristic(this.platform.Characteristic.Name, this.accessory.context.device.name);
18
+ this.service.setCharacteristic(this.platform.Characteristic.Name, this.device.name);
20
19
  this.service.getCharacteristic(this.platform.Characteristic.Mute)
21
- /*.onSet(this.setMuted.bind(this))*/
22
20
  .onGet(this.isMuted.bind(this));
23
- setInterval(() => {
24
- try {
25
- const soundDetected = this.accessory.context.device.status !== 'no_sound';
26
- if (this.accessory.context.device.status !== this.state.SoundStatus) {
27
- this.platform.log.info(accessory.displayName + ' Sound Status: ' + soundDetected + ' (' + this.state.SoundStatus + ' -> ' + this.accessory.context.device.status + ')');
28
- }
29
- this.state.SoundStatus = this.accessory.context.device.status;
30
- this.service.updateCharacteristic(this.platform.Characteristic.Mute, !soundDetected);
31
- }
32
- catch (error) {
33
- this.platform.log.error('Failed to update siren sound status', error);
34
- }
35
- try {
36
- const timeTampered = this.accessory.context.device.activity ? this.accessory.context.device.activity : 0;
37
- const minimumTime = (new Date().getTime() / 1000) - 90;
38
- const tamperingDetected = timeTampered > this.state.TamperStatus || timeTampered > minimumTime;
39
- if (this.accessory.context.device.activity !== this.state.TamperStatus) {
40
- this.platform.log.info(accessory.displayName + ' Tampered Status: ' + tamperingDetected + ' (' + this.state.TamperStatus + ' -> ' + this.accessory.context.device.activity + ')');
41
- }
42
- else if (tamperingDetected === true) {
43
- this.platform.log.debug(accessory.displayName + ' Tampered Status: ' + tamperingDetected + ' (' + this.state.TamperStatus + ' -> ' + this.accessory.context.device.activity + ')');
44
- }
45
- }
46
- catch (error) {
47
- this.platform.log.error('Failed to update tampered sensor status', error);
21
+ }
22
+ // Push fresh device data from the platform's single poll loop.
23
+ update(device) {
24
+ this.device = device;
25
+ try {
26
+ const soundDetected = device.status !== 'no_sound';
27
+ if (device.status !== this.state.SoundStatus) {
28
+ this.platform.log.info(`${this.accessory.displayName} Sound Status: ${soundDetected} (${this.state.SoundStatus} -> ${device.status})`);
48
29
  }
49
- }, 5000);
30
+ this.state.SoundStatus = device.status;
31
+ this.service.updateCharacteristic(this.platform.Characteristic.Mute, !soundDetected);
32
+ }
33
+ catch (error) {
34
+ this.platform.log.error('Failed to update siren sound status', error);
35
+ }
50
36
  }
51
- /*async setMuted(value: CharacteristicValue) {
52
- const sound = value ? 'no_sound' : 'warning';
53
- this.platform.log.info(this.accessory.displayName + ' Sound Characteristic: ' + sound + ' (' + this.state.SoundStatus + ' / ' + this.accessory.context.device.status + ')');
54
- this.platform.netatmoAPI.setState(this.accessory.context.device, sound).then(() => {
55
- this.state.SoundStatus = sound;
56
- this.service.updateCharacteristic(this.platform.Characteristic.Mute, value);
57
- });
58
- }*/
59
37
  async isMuted() {
60
- const playing = this.state.SoundStatus === 'no_sound' && this.accessory.context.device.status === 'no_sound';
61
- this.platform.log.debug(this.accessory.displayName + ' Sound Characteristic: ' + playing + ' (' + this.state.SoundStatus + ' / ' + this.accessory.context.device.status + ')');
62
- return playing;
38
+ var _a;
39
+ return ((_a = this.device) === null || _a === void 0 ? void 0 : _a.status) === 'no_sound';
63
40
  }
64
41
  }
65
42
  exports.IndoorSirenAccessory = IndoorSirenAccessory;
@@ -1 +1 @@
1
- {"version":3,"file":"indoorSirenAccessory.js","sourceRoot":"","sources":["../../src/accessory/indoorSirenAccessory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"indoorSirenAccessory.js","sourceRoot":"","sources":["../../src/accessory/indoorSirenAccessory.ts"],"names":[],"mappings":";;;AAKA,MAAa,oBAAoB;IAO/B,YACmB,QAAiC,EACjC,SAA4B;QAD5B,aAAQ,GAAR,QAAQ,CAAyB;QACjC,cAAS,GAAT,SAAS,CAAmB;QANvC,UAAK,GAAG;YACd,WAAW,EAAE,UAAU;SACxB,CAAC;QAMA,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;QAEvC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAE;aACnE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,kBAAkB,CAAC;aAChF,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC;aACrE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAEhF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;eACpE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE5D,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEpF,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC;aAC9D,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,+DAA+D;IAC/D,MAAM,CAAC,MAAW;QAChB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI;YACF,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC;YACnD,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;gBAC5C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,kBAAkB,aAAa,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;aACxI;YACD,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;YACvC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,CAAC;SACtF;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;SACvE;IACH,CAAC;IAED,KAAK,CAAC,OAAO;;QACX,OAAO,CAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,MAAM,MAAK,UAAU,CAAC;IAC5C,CAAC;CAEF;AA9CD,oDA8CC"}
@@ -1,11 +1,15 @@
1
1
  import { PlatformAccessory, CharacteristicValue } from 'homebridge';
2
- import { NetatmoSecurityPlatform } from '../platform';
3
- export declare class TagSensorAccessory {
2
+ import { NetatmoSecurityPlatform, NetatmoAccessory } from '../platform';
3
+ export declare class TagSensorAccessory implements NetatmoAccessory {
4
4
  private readonly platform;
5
5
  private readonly accessory;
6
6
  private service;
7
+ private device;
7
8
  private state;
8
9
  constructor(platform: NetatmoSecurityPlatform, accessory: PlatformAccessory);
10
+ update(device: any): void;
11
+ private contactState;
12
+ private isRecentActivity;
9
13
  isTampered(): Promise<CharacteristicValue>;
10
14
  isOpen(): Promise<CharacteristicValue>;
11
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tagSensorAccessory.d.ts","sourceRoot":"","sources":["../../src/accessory/tagSensorAccessory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAW,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAEtD,qBAAa,kBAAkB;IAS3B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAT5B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAGX;gBAIiB,QAAQ,EAAE,uBAAuB,EACjC,SAAS,EAAE,iBAAiB;IAqDzC,UAAU,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAO1C,MAAM,IAAI,OAAO,CAAC,mBAAmB,CAAC;CAM7C"}
1
+ {"version":3,"file":"tagSensorAccessory.d.ts","sourceRoot":"","sources":["../../src/accessory/tagSensorAccessory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAW,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAExE,qBAAa,kBAAmB,YAAW,gBAAgB;IASvD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAT5B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,KAAK,CAGX;gBAGiB,QAAQ,EAAE,uBAAuB,EACjC,SAAS,EAAE,iBAAiB;IAsB/C,MAAM,CAAC,MAAM,EAAE,GAAG;IA4BlB,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,gBAAgB;IAKlB,UAAU,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAI1C,MAAM,IAAI,OAAO,CAAC,mBAAmB,CAAC;CAI7C"}
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TagSensorAccessory = void 0;
4
4
  class TagSensorAccessory {
5
- // Load device
6
5
  constructor(platform, accessory) {
7
6
  this.platform = platform;
8
7
  this.accessory = accessory;
@@ -10,57 +9,62 @@ class TagSensorAccessory {
10
9
  SensorStatus: 'unknown',
11
10
  TamperStatus: 0,
12
11
  };
12
+ this.device = accessory.context.device;
13
13
  this.accessory.getService(this.platform.Service.AccessoryInformation)
14
14
  .setCharacteristic(this.platform.Characteristic.Manufacturer, 'Netatmo-Security')
15
15
  .setCharacteristic(this.platform.Characteristic.Model, 'Tag-Sensor')
16
- .setCharacteristic(this.platform.Characteristic.SerialNumber, this.accessory.context.device.id);
16
+ .setCharacteristic(this.platform.Characteristic.SerialNumber, this.device.id);
17
17
  this.service = this.accessory.getService(this.platform.Service.ContactSensor)
18
18
  || this.accessory.addService(this.platform.Service.ContactSensor);
19
- this.service.setCharacteristic(this.platform.Characteristic.Name, this.accessory.context.device.name);
19
+ this.service.setCharacteristic(this.platform.Characteristic.Name, this.device.name);
20
20
  this.service.getCharacteristic(this.platform.Characteristic.ContactSensorState)
21
21
  .onGet(this.isOpen.bind(this));
22
22
  this.service.getCharacteristic(this.platform.Characteristic.StatusTampered)
23
23
  .onGet(this.isTampered.bind(this));
24
- setInterval(() => {
25
- try {
26
- const contactDetected = this.accessory.context.device.status === 'open';
27
- if (this.accessory.context.device.status !== this.state.SensorStatus) {
28
- this.platform.log.info(accessory.displayName + ' Sensor Status: ' + contactDetected + ' (' + this.state.SensorStatus + ' -> ' + this.accessory.context.device.status + ')');
29
- }
30
- this.state.SensorStatus = this.accessory.context.device.status;
31
- this.service.updateCharacteristic(this.platform.Characteristic.ContactSensorState, contactDetected);
32
- }
33
- catch (error) {
34
- this.platform.log.error('Failed to update contact sensor status', error);
35
- }
36
- try {
37
- const timeTampered = this.accessory.context.device.activity ? this.accessory.context.device.activity : 0;
38
- const minimumTime = (new Date().getTime() / 1000) - 90;
39
- const tamperingDetected = timeTampered > this.state.TamperStatus || timeTampered > minimumTime;
40
- if (this.accessory.context.device.activity !== this.state.TamperStatus) {
41
- this.platform.log.info(accessory.displayName + ' Tampered Status: ' + tamperingDetected + ' (' + this.state.TamperStatus + ' -> ' + this.accessory.context.device.activity + ')');
42
- }
43
- else if (tamperingDetected === true) {
44
- this.platform.log.debug(accessory.displayName + ' Tampered Status: ' + tamperingDetected + ' (' + this.state.TamperStatus + ' -> ' + this.accessory.context.device.activity + ')');
45
- }
46
- this.state.TamperStatus = this.accessory.context.device.activity;
47
- this.service.updateCharacteristic(this.platform.Characteristic.StatusTampered, tamperingDetected);
24
+ }
25
+ // Push fresh device data from the platform's single poll loop.
26
+ update(device) {
27
+ this.device = device;
28
+ const C = this.platform.Characteristic;
29
+ try {
30
+ const open = device.status === 'open';
31
+ if (device.status !== this.state.SensorStatus) {
32
+ this.platform.log.info(`${this.accessory.displayName} Sensor Status: ${open} (${this.state.SensorStatus} -> ${device.status})`);
48
33
  }
49
- catch (error) {
50
- this.platform.log.error('Failed to update tampered sensor status', error);
34
+ this.state.SensorStatus = device.status;
35
+ this.service.updateCharacteristic(C.ContactSensorState, this.contactState());
36
+ }
37
+ catch (error) {
38
+ this.platform.log.error('Failed to update contact sensor status', error);
39
+ }
40
+ try {
41
+ const activity = device.activity || 0;
42
+ const tampered = this.isRecentActivity(activity);
43
+ if (activity !== this.state.TamperStatus) {
44
+ this.platform.log.info(`${this.accessory.displayName} Tampered Status: ${tampered} (${this.state.TamperStatus} -> ${activity})`);
51
45
  }
52
- }, 5000);
46
+ this.state.TamperStatus = activity;
47
+ this.service.updateCharacteristic(C.StatusTampered, tampered);
48
+ }
49
+ catch (error) {
50
+ this.platform.log.error('Failed to update tampered sensor status', error);
51
+ }
53
52
  }
54
- async isTampered() {
53
+ contactState() {
54
+ var _a;
55
+ const C = this.platform.Characteristic.ContactSensorState;
56
+ return ((_a = this.device) === null || _a === void 0 ? void 0 : _a.status) === 'open' ? C.CONTACT_NOT_DETECTED : C.CONTACT_DETECTED;
57
+ }
58
+ isRecentActivity(activity) {
55
59
  const minimumTime = (new Date().getTime() / 1000) - 90;
56
- const isTampered = this.state.TamperStatus > minimumTime || this.accessory.context.device.activity > minimumTime;
57
- this.platform.log.debug(this.accessory.displayName + ' Tampered Characteristic: ' + isTampered + ' (' + this.state.TamperStatus + ' / ' + this.accessory.context.device.activity + ')');
58
- return isTampered;
60
+ return activity > minimumTime;
61
+ }
62
+ async isTampered() {
63
+ var _a;
64
+ return this.isRecentActivity(((_a = this.device) === null || _a === void 0 ? void 0 : _a.activity) || 0);
59
65
  }
60
66
  async isOpen() {
61
- const isOpen = this.state.SensorStatus === 'open' || this.accessory.context.device.status === 'open';
62
- this.platform.log.debug(this.accessory.displayName + ' Sensor Characteristic: ' + isOpen + ' (' + this.state.SensorStatus + ' / ' + this.accessory.context.device.status + ')');
63
- return isOpen;
67
+ return this.contactState();
64
68
  }
65
69
  }
66
70
  exports.TagSensorAccessory = TagSensorAccessory;
@@ -1 +1 @@
1
- {"version":3,"file":"tagSensorAccessory.js","sourceRoot":"","sources":["../../src/accessory/tagSensorAccessory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tagSensorAccessory.js","sourceRoot":"","sources":["../../src/accessory/tagSensorAccessory.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,8 @@
1
1
  import { API, DynamicPlatformPlugin, PlatformAccessory, Logger, PlatformConfig, Service, Characteristic } from 'homebridge';
2
2
  import NetatmoAPI from './util/NetatmoAPI';
3
+ export interface NetatmoAccessory {
4
+ update(device: any): void;
5
+ }
3
6
  export declare class NetatmoSecurityPlatform implements DynamicPlatformPlugin {
4
7
  readonly log: Logger;
5
8
  readonly config: PlatformConfig;
@@ -7,11 +10,13 @@ export declare class NetatmoSecurityPlatform implements DynamicPlatformPlugin {
7
10
  readonly Service: typeof Service;
8
11
  readonly Characteristic: typeof Characteristic;
9
12
  readonly accessories: PlatformAccessory[];
13
+ private readonly handlers;
10
14
  netatmoAPI: NetatmoAPI;
11
15
  constructor(log: Logger, config: PlatformConfig, api: API);
12
16
  configureAccessory(accessory: PlatformAccessory): void;
13
- discoverDevices(): void;
17
+ private createHandler;
18
+ discoverDevices(): Promise<void>;
14
19
  startRefreshTask(): void;
15
- refreshStatus(): void;
20
+ pollDevices(): Promise<void>;
16
21
  }
17
22
  //# sourceMappingURL=platform.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG5H,OAAO,UAAU,MAAM,mBAAmB,CAAC;AAG3C,qBAAa,uBAAwB,YAAW,qBAAqB;aAQjD,GAAG,EAAE,MAAM;aACX,MAAM,EAAE,cAAc;aACtB,GAAG,EAAE,GAAG;IAT1B,SAAgB,OAAO,EAAE,OAAO,OAAO,CAAwB;IAC/D,SAAgB,cAAc,EAAE,OAAO,cAAc,CAA+B;IACpF,SAAgB,WAAW,EAAE,iBAAiB,EAAE,CAAM;IAC/C,UAAU,EAAE,UAAU,CAAC;gBAIZ,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,GAAG;IAoB1B,kBAAkB,CAAC,SAAS,EAAE,iBAAiB;IAe/C,eAAe;IA+Bf,gBAAgB;IAWhB,aAAa;CAmBd"}
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG5H,OAAO,UAAU,MAAM,mBAAmB,CAAC;AAM3C,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC;CAC3B;AASD,qBAAa,uBAAwB,YAAW,qBAAqB;aAQjD,GAAG,EAAE,MAAM;aACX,MAAM,EAAE,cAAc;aACtB,GAAG,EAAE,GAAG;IAT1B,SAAgB,OAAO,EAAE,OAAO,OAAO,CAAwB;IAC/D,SAAgB,cAAc,EAAE,OAAO,cAAc,CAA+B;IACpF,SAAgB,WAAW,EAAE,iBAAiB,EAAE,CAAM;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuC;IACzD,UAAU,EAAE,UAAU,CAAC;gBAGZ,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,GAAG;IAiB1B,kBAAkB,CAAC,SAAS,EAAE,iBAAiB;IAW/C,OAAO,CAAC,aAAa;IAYf,eAAe;IAkCrB,gBAAgB;IASV,WAAW;CAmBlB"}
package/dist/platform.js CHANGED
@@ -8,8 +8,13 @@ const settings_1 = require("./settings");
8
8
  const tagSensorAccessory_1 = require("./accessory/tagSensorAccessory");
9
9
  const NetatmoAPI_1 = __importDefault(require("./util/NetatmoAPI"));
10
10
  const indoorSirenAccessory_1 = require("./accessory/indoorSirenAccessory");
11
+ const SUPPORTED_TYPES = ['NACamDoorTag', 'NIS'];
12
+ // homesdata is cached after first fetch (see NetatmoAPI.getHomeData), so each
13
+ // poll costs 2 API calls (homestatus + getevents). At 15s that's ~480 req/h,
14
+ // just under Netatmo's ~500 req/h per-user limit. Don't go below 15s without
15
+ // also reducing calls per poll.
16
+ const POLL_INTERVAL_MS = 15000;
11
17
  class NetatmoSecurityPlatform {
12
- // Load platform
13
18
  constructor(log, config, api) {
14
19
  this.log = log;
15
20
  this.config = config;
@@ -17,91 +22,108 @@ class NetatmoSecurityPlatform {
17
22
  this.Service = this.api.hap.Service;
18
23
  this.Characteristic = this.api.hap.Characteristic;
19
24
  this.accessories = [];
25
+ this.handlers = new Map();
20
26
  log.debug('Finished loading platform:', this.config.name);
21
27
  this.netatmoAPI = new NetatmoAPI_1.default(log, this.api.user.storagePath());
22
- log.debug('Finished initializing platform:', this.config.name);
23
28
  this.api.on('didFinishLaunching', () => {
24
29
  log.debug('Executed didFinishLaunching callback');
25
- log.debug('Authenticating with provider:', this.config.name);
26
- this.netatmoAPI.init(config).then(() => {
30
+ this.netatmoAPI.init(config).then(async () => {
27
31
  log.debug('Authenticated with provider:', this.config.name);
28
- this.discoverDevices();
32
+ await this.discoverDevices();
29
33
  this.startRefreshTask();
30
- log.debug('Config loaded: ' + JSON.stringify({ ...config, refresh_token: '******', client_secret: '********' }));
31
34
  }).catch((error) => {
32
35
  var _a;
33
36
  log.error('Netatmo authentication failed, plugin disabled until restart: ' + ((_a = error === null || error === void 0 ? void 0 : error.message) !== null && _a !== void 0 ? _a : error));
34
37
  });
35
38
  });
36
39
  }
37
- // Configure device
40
+ // Restore a cached accessory: build its handler so the platform can push updates.
38
41
  configureAccessory(accessory) {
39
- if (accessory.context.device.type === 'NIS') {
42
+ var _a;
43
+ const handler = this.createHandler(accessory);
44
+ if (handler) {
40
45
  this.log.debug('Loading accessory from cache:', accessory.displayName);
41
- new indoorSirenAccessory_1.IndoorSirenAccessory(this, accessory);
42
- this.accessories.push(accessory);
43
- }
44
- else if (accessory.context.device.type === 'NACamDoorTag') {
45
- this.log.debug('Loading accessory from cache:', accessory.displayName);
46
- new tagSensorAccessory_1.TagSensorAccessory(this, accessory);
46
+ this.handlers.set(accessory.UUID, handler);
47
47
  this.accessories.push(accessory);
48
48
  }
49
49
  else {
50
- this.log.debug('Device type not supported: ' + accessory.context.device.type);
50
+ this.log.debug('Device type not supported: ' + ((_a = accessory.context.device) === null || _a === void 0 ? void 0 : _a.type));
51
51
  }
52
52
  }
53
- // Load devices
54
- discoverDevices() {
55
- this.netatmoAPI.getHomeDevices().then((devices) => {
56
- for (const device of devices) {
57
- if (device.type !== 'NACamDoorTag' && device.type !== 'NIS') {
58
- this.log.debug('Skipped unsupported accessory: ' + device.name);
53
+ createHandler(accessory) {
54
+ var _a;
55
+ switch ((_a = accessory.context.device) === null || _a === void 0 ? void 0 : _a.type) {
56
+ case 'NIS':
57
+ return new indoorSirenAccessory_1.IndoorSirenAccessory(this, accessory);
58
+ case 'NACamDoorTag':
59
+ return new tagSensorAccessory_1.TagSensorAccessory(this, accessory);
60
+ default:
61
+ return undefined;
62
+ }
63
+ }
64
+ // Discover devices once: register new accessories, build handlers, push initial state.
65
+ async discoverDevices() {
66
+ var _a, _b;
67
+ let devices;
68
+ try {
69
+ devices = await this.netatmoAPI.getHomeDevices();
70
+ }
71
+ catch (error) {
72
+ this.log.error('Failed to discover devices: ' + ((_a = error === null || error === void 0 ? void 0 : error.message) !== null && _a !== void 0 ? _a : error));
73
+ return;
74
+ }
75
+ for (const device of devices) {
76
+ if (!SUPPORTED_TYPES.includes(device.type)) {
77
+ this.log.debug('Skipped unsupported accessory: ' + device.name);
78
+ continue;
79
+ }
80
+ device.name = (device.name || '').trimEnd();
81
+ const uuid = this.api.hap.uuid.generate(device.id);
82
+ const existing = this.accessories.find(a => a.UUID === uuid);
83
+ if (existing) {
84
+ existing.context.device = device;
85
+ }
86
+ else {
87
+ this.log.info('Adding new accessory: ' + device.name);
88
+ const accessory = new this.api.platformAccessory(device.name, uuid);
89
+ accessory.context.device = device;
90
+ const handler = this.createHandler(accessory);
91
+ if (!handler) {
59
92
  continue;
60
93
  }
61
- device.name = device.name.trimEnd();
62
- const uuid = this.api.hap.uuid.generate(device.id);
63
- const existingAccessory = this.accessories.find(accessory => accessory.UUID === uuid);
64
- if (existingAccessory) {
65
- this.log.debug('Existing accessory discovered: ' + existingAccessory.displayName);
66
- this.configureAccessory(existingAccessory);
67
- existingAccessory.context.device = device;
68
- }
69
- else {
70
- this.log.debug('Adding newly discovered accessory: ' + device.name);
71
- const accessory = new this.api.platformAccessory(device.name, uuid);
72
- accessory.context.device = device;
73
- this.configureAccessory(accessory);
74
- this.api.registerPlatformAccessories(settings_1.PLUGIN_NAME, settings_1.PLATFORM_NAME, [accessory]);
75
- }
94
+ this.handlers.set(uuid, handler);
95
+ this.accessories.push(accessory);
96
+ this.api.registerPlatformAccessories(settings_1.PLUGIN_NAME, settings_1.PLATFORM_NAME, [accessory]);
76
97
  }
77
- });
98
+ (_b = this.handlers.get(uuid)) === null || _b === void 0 ? void 0 : _b.update(device);
99
+ }
78
100
  }
79
- // Refresh task
80
101
  startRefreshTask() {
81
102
  setInterval(() => {
82
- try {
83
- this.refreshStatus();
103
+ this.pollDevices().catch((error) => {
104
+ var _a;
105
+ this.log.error('Failed to refresh status: ' + ((_a = error === null || error === void 0 ? void 0 : error.message) !== null && _a !== void 0 ? _a : error));
106
+ });
107
+ }, POLL_INTERVAL_MS);
108
+ }
109
+ // Single poll loop: fetch all devices and push fresh data to each handler.
110
+ async pollDevices() {
111
+ const devices = await this.netatmoAPI.getHomeDevices();
112
+ for (const device of devices) {
113
+ if (!SUPPORTED_TYPES.includes(device.type)) {
114
+ continue;
84
115
  }
85
- catch (error) {
86
- this.log.error('Failed to refresh status: ' + this.config.name, error);
116
+ const uuid = this.api.hap.uuid.generate(device.id);
117
+ const handler = this.handlers.get(uuid);
118
+ if (!handler) {
119
+ continue;
87
120
  }
88
- }, 20000);
89
- }
90
- // Refresh status
91
- refreshStatus() {
92
- this.netatmoAPI.getHomeDevices().then((devices) => {
93
- for (const device of devices) {
94
- if (device.type !== 'NACamDoorTag' && device.type !== 'NIS') {
95
- continue;
96
- }
97
- const uuid = this.api.hap.uuid.generate(device.id);
98
- const existingAccessory = this.accessories.find(accessory => accessory.UUID === uuid);
99
- if (existingAccessory) {
100
- existingAccessory.context.device = device;
101
- this.accessories.push(existingAccessory);
102
- }
121
+ const accessory = this.accessories.find(a => a.UUID === uuid);
122
+ if (accessory) {
123
+ accessory.context.device = device;
103
124
  }
104
- });
125
+ handler.update(device);
126
+ }
105
127
  }
106
128
  }
107
129
  exports.NetatmoSecurityPlatform = NetatmoSecurityPlatform;
@@ -1 +1 @@
1
- {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ export default class NetatmoAPI {
7
7
  refreshToken: null;
8
8
  tokenExpire: number;
9
9
  _authPromise: null;
10
+ homeStructure: null;
10
11
  get tokenFile(): string;
11
12
  loadPersistedRefreshToken(): any;
12
13
  persistRefreshToken(): void;
@@ -16,7 +17,7 @@ export default class NetatmoAPI {
16
17
  client(): import("axios").AxiosInstance;
17
18
  setState(device: any, status: any): Promise<any>;
18
19
  getEvents(homeId: any): Promise<any>;
19
- getHomeData(): Promise<any>;
20
+ getHomeData(force?: boolean): Promise<any>;
20
21
  getHomeStatus(homeId: any): Promise<any>;
21
22
  getHomeDevices(): Promise<any[]>;
22
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NetatmoAPI.d.ts","sourceRoot":"","sources":["../../src/util/NetatmoAPI.js"],"names":[],"mappings":"AAWA;IASE,2CAIC;IAZD,UAAW;IACX,aAAc;IACd,kBAAmB;IACnB,kBAAmB;IACnB,mBAAoB;IACpB,oBAAgB;IAChB,mBAAoB;IAQpB,wBAEC;IAED,iCAaC;IAED,4BAQC;IAED,wCAWC;IAED,8BAgCC;IAID,wCAYC;IAED,wCAMC;IAED,iDAiBC;IAED,qCAMC;IAED,4BAMC;IAED,yCAMC;IAED,iCAqBC;CAEF"}
1
+ {"version":3,"file":"NetatmoAPI.d.ts","sourceRoot":"","sources":["../../src/util/NetatmoAPI.js"],"names":[],"mappings":"AAWA;IAUE,2CAIC;IAbD,UAAW;IACX,aAAc;IACd,kBAAmB;IACnB,kBAAmB;IACnB,mBAAoB;IACpB,oBAAgB;IAChB,mBAAoB;IACpB,oBAAqB;IAQrB,wBAEC;IAED,iCAaC;IAED,4BAQC;IAED,wCAWC;IAED,8BAgCC;IAID,wCAYC;IAED,wCAMC;IAED,iDAiBC;IAED,qCAeC;IAKD,2CAaC;IAED,yCAMC;IAED,iCAqBC;CAEF"}
@@ -22,6 +22,7 @@ class NetatmoAPI {
22
22
  this.refreshToken = null;
23
23
  this.tokenExpire = 0;
24
24
  this._authPromise = null;
25
+ this.homeStructure = null;
25
26
  this.log = logger;
26
27
  this.storagePath = storagePath;
27
28
  this.log.info('Netatmo API constructed.');
@@ -142,13 +143,32 @@ class NetatmoAPI {
142
143
  const response = await this.client().get('/getevents?home_id=' + homeId);
143
144
  const data = response.data.body.home;
144
145
  const events = data.events;
146
+ // TEMP diagnostic: log recent event types so we can map vibration vs open/close.
147
+ // Remove once the event-type mapping is implemented.
148
+ const recent = (new Date().getTime() / 1000) - 120;
149
+ const sample = (events || [])
150
+ .filter((e) => e.time > recent)
151
+ .map((e) => ({ type: e.type, module_id: e.module_id, time: e.time }));
152
+ if (sample.length > 0) {
153
+ this.log.info('[event-types] ' + JSON.stringify(sample));
154
+ }
145
155
  return events;
146
156
  }
147
- async getHomeData() {
157
+ // The home structure (device list, names, types) is essentially static, so we
158
+ // fetch /homesdata once and cache it. This keeps the poll loop down to 2 API
159
+ // calls (homestatus + getevents) instead of 3, leaving room for a faster poll.
160
+ async getHomeData(force = false) {
161
+ if (this.homeStructure && !force) {
162
+ return this.homeStructure;
163
+ }
148
164
  await this.ensureAuth();
149
165
  const response = await this.client().get('/homesdata');
150
166
  const data = response.data.body;
151
- const home = data.homes[0];
167
+ const home = data.homes && data.homes[0];
168
+ if (!home) {
169
+ throw new Error('No Netatmo home found for this account.');
170
+ }
171
+ this.homeStructure = home;
152
172
  return home;
153
173
  }
154
174
  async getHomeStatus(homeId) {
@@ -1 +1 @@
1
- {"version":3,"file":"NetatmoAPI.js","sourceRoot":"","sources":["../../src/util/NetatmoAPI.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NetatmoAPI.js","sourceRoot":"","sources":["../../src/util/NetatmoAPI.js"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "displayName": "Homebridge Netatmo Security MK",
3
3
  "name": "homebridge-netatmo-security-mk",
4
- "version": "1.0.2",
4
+ "version": "1.0.3",
5
5
  "description": "Extended HomeKit support for Netatmo Security products (door/window tags, siren). Fork of Anzure/homebridge-netatmo-security.",
6
6
  "author": "maximekduval",
7
7
  "license": "Apache-2.0",