homebridge-freeathome-local-api 1.4.2 → 1.4.4

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
@@ -5,6 +5,20 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.4.4](https://github.com/pgerke/homebridge-freeathome-local-api/releases/tag/1.4.4) - 15.01.2023
9
+
10
+ ### Changed
11
+
12
+ - [#42](https://github.com/pgerke/homebridge-freeathome-local-api/issues/42):
13
+ Resolve correct data points for room temperature controller using the pairing ID.
14
+
15
+ ## [1.4.3](https://github.com/pgerke/homebridge-freeathome-local-api/releases/tag/1.4.3) - 04.01.2023
16
+
17
+ ### Changed
18
+
19
+ - [#31](https://github.com/pgerke/homebridge-freeathome-local-api/issues/31):
20
+ Added an option to automatically reset motion sensors after a predefined timeout.
21
+
8
22
  ## [1.4.2](https://github.com/pgerke/homebridge-freeathome-local-api/releases/tag/1.4.2) - 03.01.2023
9
23
 
10
24
  ### Fixed
@@ -48,6 +48,22 @@
48
48
  "required": false,
49
49
  "default": false
50
50
  },
51
+ "motionSensorAutoReset": {
52
+ "title": "Automatic Reset for Motion Sensors",
53
+ "description": "Determines whether motion sensors will be reset automatically.",
54
+ "type": "boolean",
55
+ "required": false,
56
+ "default": true
57
+ },
58
+ "motionSensorDefaultResetTimer": {
59
+ "title": "Motion Sensor Default Reset Timer",
60
+ "description": "Determines the default reset timer for motion sensors. Only relevant if the automatic reset is enabled.",
61
+ "type": "integer",
62
+ "required": false,
63
+ "default": 20000,
64
+ "minimum": 500,
65
+ "maximum": 60000
66
+ },
51
67
  "verboseErrors": {
52
68
  "title": "Verbose Errors",
53
69
  "description": "Determines whether verbose error messages shall be used, for example for message validation. This is a debug option that should only be enabled if needed.",
@@ -8,6 +8,7 @@ export declare class MotionSensorAccessory extends FreeAtHomeAccessory {
8
8
  readonly accessory: PlatformAccessory<FreeAtHomeContext>;
9
9
  private readonly service;
10
10
  private motionDetected;
11
+ private resetTimeout?;
11
12
  /**
12
13
  * Constructs a new motion sensor accessory instance.
13
14
  * @param platform The free&#64;home Homebridge platform controlling the accessory
@@ -15,5 +16,6 @@ export declare class MotionSensorAccessory extends FreeAtHomeAccessory {
15
16
  */
16
17
  constructor(platform: FreeAtHomeHomebridgePlatform, accessory: PlatformAccessory<FreeAtHomeContext>);
17
18
  updateDatapoint(datapoint: string, value: string): void;
19
+ private processAutoResetTimer;
18
20
  }
19
21
  //# sourceMappingURL=motionSensorAccessory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"motionSensorAccessory.d.ts","sourceRoot":"","sources":["../src/motionSensorAccessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAW,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAE1D,iCAAiC;AACjC,qBAAa,qBAAsB,SAAQ,mBAAmB;IAU1D,QAAQ,CAAC,QAAQ,EAAE,4BAA4B;IAC/C,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC,iBAAiB,CAAC;IAV1D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,cAAc,CAAU;IAEhC;;;;OAIG;gBAEQ,QAAQ,EAAE,4BAA4B,EACtC,SAAS,EAAE,iBAAiB,CAAC,iBAAiB,CAAC;IAoB1C,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;CAaxE"}
1
+ {"version":3,"file":"motionSensorAccessory.d.ts","sourceRoot":"","sources":["../src/motionSensorAccessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAW,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAE1D,iCAAiC;AACjC,qBAAa,qBAAsB,SAAQ,mBAAmB;IAW1D,QAAQ,CAAC,QAAQ,EAAE,4BAA4B;IAC/C,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC,iBAAiB,CAAC;IAX1D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,YAAY,CAAC,CAAiB;IAEtC;;;;OAIG;gBAEQ,QAAQ,EAAE,4BAA4B,EACtC,SAAS,EAAE,iBAAiB,CAAC,iBAAiB,CAAC;IAqB1C,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAgBvE,OAAO,CAAC,qBAAqB;CAkB9B"}
@@ -16,6 +16,7 @@ class MotionSensorAccessory extends freeAtHomeAccessory_1.FreeAtHomeAccessory {
16
16
  this.accessory = accessory;
17
17
  // set initial state
18
18
  this.motionDetected = !!parseInt((_b = (_a = this.accessory.context.channel.outputs) === null || _a === void 0 ? void 0 : _a.odp0000.value) !== null && _b !== void 0 ? _b : "0");
19
+ this.processAutoResetTimer();
19
20
  // get the MotionSensor service if it exists, otherwise create a new service instance
20
21
  this.service =
21
22
  this.accessory.getService(this.platform.Service.MotionSensor) ||
@@ -31,8 +32,23 @@ class MotionSensorAccessory extends freeAtHomeAccessory_1.FreeAtHomeAccessory {
31
32
  return;
32
33
  // do the update
33
34
  this.motionDetected = !!parseInt(value);
35
+ this.processAutoResetTimer();
34
36
  this.doUpdateDatapoint("Motion Sensor", this.service, this.platform.Characteristic.MotionDetected, this.motionDetected);
35
37
  }
38
+ processAutoResetTimer() {
39
+ // Set, reset or cancel a timer, if automatic reset is enabled
40
+ if (this.platform.config.motionSensorAutoReset) {
41
+ // If a timer is running, clear it
42
+ if (!!this.resetTimeout) {
43
+ clearTimeout(this.resetTimeout);
44
+ this.resetTimeout = undefined;
45
+ }
46
+ // Set a new reset timer, if motion was detected.
47
+ if (this.motionDetected) {
48
+ this.resetTimeout = setTimeout(() => this.updateDatapoint("odp0000", "0"), this.platform.config.motionSensorDefaultResetTimer);
49
+ }
50
+ }
51
+ }
36
52
  }
37
53
  exports.MotionSensorAccessory = MotionSensorAccessory;
38
54
  //# sourceMappingURL=motionSensorAccessory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"motionSensorAccessory.js","sourceRoot":"","sources":["../src/motionSensorAccessory.ts"],"names":[],"mappings":";;;AACA,+DAA4D;AAI5D,iCAAiC;AACjC,MAAa,qBAAsB,SAAQ,yCAAmB;IAI5D;;;;OAIG;IACH,YACW,QAAsC,EACtC,SAA+C;;QAExD,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAHlB,aAAQ,GAAR,QAAQ,CAA8B;QACtC,cAAS,GAAT,SAAS,CAAsC;QAIxD,oBAAoB;QACpB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,QAAQ,CAC9B,MAAA,MAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,0CAAE,OAAO,CAAC,KAAK,mCAAI,GAAG,CAC7D,CAAC;QAEF,qFAAqF;QACrF,IAAI,CAAC,OAAO;YACV,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC;gBAC7D,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAEhE,2DAA2D;QAC3D,IAAI,CAAC,OAAO;aACT,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC;aAC9D,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACtC,CAAC;IAEe,eAAe,CAAC,SAAiB,EAAE,KAAa;QAC9D,6BAA6B;QAC7B,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO;QAEpC,gBAAgB;QAChB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,iBAAiB,CACpB,eAAe,EACf,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,EAC3C,IAAI,CAAC,cAAc,CACpB,CAAC;IACJ,CAAC;CACF;AA5CD,sDA4CC"}
1
+ {"version":3,"file":"motionSensorAccessory.js","sourceRoot":"","sources":["../src/motionSensorAccessory.ts"],"names":[],"mappings":";;;AACA,+DAA4D;AAI5D,iCAAiC;AACjC,MAAa,qBAAsB,SAAQ,yCAAmB;IAK5D;;;;OAIG;IACH,YACW,QAAsC,EACtC,SAA+C;;QAExD,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAHlB,aAAQ,GAAR,QAAQ,CAA8B;QACtC,cAAS,GAAT,SAAS,CAAsC;QAIxD,oBAAoB;QACpB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,QAAQ,CAC9B,MAAA,MAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,0CAAE,OAAO,CAAC,KAAK,mCAAI,GAAG,CAC7D,CAAC;QACF,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,qFAAqF;QACrF,IAAI,CAAC,OAAO;YACV,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC;gBAC7D,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAEhE,2DAA2D;QAC3D,IAAI,CAAC,OAAO;aACT,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC;aAC9D,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACtC,CAAC;IAEe,eAAe,CAAC,SAAiB,EAAE,KAAa;QAC9D,6BAA6B;QAC7B,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO;QAEpC,gBAAgB;QAChB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,IAAI,CAAC,iBAAiB,CACpB,eAAe,EACf,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,EAC3C,IAAI,CAAC,cAAc,CACpB,CAAC;IACJ,CAAC;IAEO,qBAAqB;QAC3B,8DAA8D;QAC9D,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,qBAAgC,EAAE;YACzD,kCAAkC;YAClC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE;gBACvB,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAChC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;aAC/B;YAED,iDAAiD;YACjD,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,IAAI,CAAC,YAAY,GAAG,UAAU,CAC5B,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,GAAG,CAAC,EAC1C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,6BAAuC,CAC7D,CAAC;aACH;SACF;IACH,CAAC;CACF;AAnED,sDAmEC"}
package/dist/platform.js CHANGED
@@ -259,7 +259,7 @@ class FreeAtHomeHomebridgePlatform {
259
259
  datapoints.forEach((datapoint) => {
260
260
  var _a;
261
261
  // Ignore data points that have an unexpected format
262
- const match = datapoint.match(/^(ABB[a-z0-9]{9})\/(ch[\da-f]{4})\/(odp\d{4})$/i);
262
+ const match = datapoint.match(/^([a-z0-9]{12})\/(ch[\da-f]{4})\/(odp\d{4})$/i);
263
263
  if (!match) {
264
264
  this.log.debug(`Ignored datapoint ${datapoint}: Unexpected format`);
265
265
  return;
@@ -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":";;;AAUA,yCAAwD;AACxD,6EAMqC;AACrC,uEAAoE;AACpE,2DAA+E;AAC/E,6CAA8E;AAE9E,uDAAoD;AAEpD,6FAA0F;AAC1F,iCAAmC;AACnC,qEAAkE;AAClE,mEAAgE;AAChE,+DAA4D;AAC5D,yEAAsE;AACtE,iDAA4D;AAC5D,iCAAoC;AAEpC,MAAM,WAAW,GAAG,GAAG,CAAC;AAExB,6CAA6C;AAC7C,MAAa,4BAA4B;IAmBvC,IAAY,gBAAgB;QAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,YAAuB,CAAC;IAC7C,CAAC;IAED;;;;;OAKG;IACH,YACkB,GAAW,EACX,MAAsB,EACtB,GAAQ;;QAFR,QAAG,GAAH,GAAG,CAAQ;QACX,WAAM,GAAN,MAAM,CAAgB;QACtB,QAAG,GAAH,GAAG,CAAK;QA/B1B,4BAA4B;QACZ,YAAO,GAAmB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;QAC/D,mCAAmC;QACnB,mBAAc,GAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC;QAC9B,8CAA8C;QAC9B,gBAAW,GAAgD,EAAE,CAAC;QAC7D,uBAAkB,GAE/B,EAAE,CAAC;QAGU,mBAAc,GAAG,IAAI,GAAG,EAA+B,CAAC;QAGjE,wBAAmB,GAAG,CAAC,CAAC;QAkB9B,yCAAyC;QACzC,IAAI,CAAC,eAAe,GAAG,MAAC,IAAI,CAAC,MAAM,CAAC,eAA0B,mCAAI,EAAE,CAAC;QAErE,yDAAyD;QACzD,IAAI,CAAC,SAAS,GAAG;YACf,KAAK,EAAE,CAAC,OAAiB,EAAE,GAAG,cAAyB,EAAE,EAAE,CACzD,GAAG,CAAC,KAAK,CAAS,OAAO,EAAE,GAAG,cAAc,CAAC;YAC/C,KAAK,EAAE,CAAC,OAAiB,EAAE,GAAG,cAAyB,EAAE,EAAE,CACzD,GAAG,CAAC,KAAK,CAAS,OAAO,EAAE,GAAG,cAAc,CAAC;YAC/C,GAAG,EAAE,CAAC,OAAiB,EAAE,GAAG,cAAyB,EAAE,EAAE,CACvD,GAAG,CAAC,IAAI,CAAS,OAAO,EAAE,GAAG,cAAc,CAAC;YAC9C,IAAI,EAAE,CAAC,OAAiB,EAAE,GAAG,cAAyB,EAAE,EAAE,CACxD,GAAG,CAAC,IAAI,CAAS,OAAO,EAAE,GAAG,cAAc,CAAC;SAC/C,CAAC;QAEF,wCAAwC;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,+CAAiB,CAChC,IAAI,CAAC,MAAM,CAAC,IAAc,EAC1B,IAAI,CAAC,MAAM,CAAC,IAAc,EAC1B,IAAI,CAAC,MAAM,CAAC,QAAkB,EAC9B,IAAI,CAAC,MAAM,CAAC,UAAqB,EACjC,IAAI,CAAC,MAAM,CAAC,aAAwB,EACpC,IAAI,CAAC,SAAS,CACf,CAAC;QACF,mBAAW,CAAC,OAAO,CAAC,kBAAkB;YACpC,CAAC,IAAI,CAAC,MAAM,CAAC,8BAA8B,CAAC;QAE9C,6BAA6B;QAC7B,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,gBAAgB,EAAE,GAAG,EAAE;YACnC,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,IAAY,EAAE,MAAc,EAAE,EAAE;YAChE,IAAI,IAAI,KAAK,IAAI;gBAAE,OAAO;YAE1B,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,yDAAyD,IAAI,CAAC,QAAQ,EAAE,KAAK,MAAM,CAAC,QAAQ,EAAE,EAAE,CACjG,CAAC;YACF,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,eAAe,EAAE;gBACpD,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,6EAA6E,CAC9E,CAAC;gBACF,OAAO;aACR;YAED,MAAM,KAAK,GAAG,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC5D,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,8BAA8B,KAAK,OAAO,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,eAAe,GAAG,CAC9F,CAAC;YACF,UAAU,CACR,GAAG,EAAE,CACH,IAAI,CAAC,KAAK,CAAC,gBAAgB,CACzB,CAAC,IAAI,CAAC,MAAM,CAAC,8BAA8B,CAC5C,EACH,KAAK,CACN,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,mCAAmC;QACnC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,KAAK;aACpC,oBAAoB,EAAE;aACtB,SAAS,CAAC,CAAC,OAAyB,EAAE,EAAE,CACvC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CACrC,CAAC;QAEJ,oBAAoB;QACpB,IAAI,IAAI,CAAC,gBAAgB;YAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAEvE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,iCAAiC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEpE,2GAA2G;QAC3G,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;YACrC,GAAG,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;YAElD,iCAAiC;YACjC,IAAI,CAAC,GAAG,CAAC,6BAA6B,CACpC,sBAAW,EACX,wBAAa,EACb,IAAI,CAAC,kBAAkB,CACxB,CAAC;YAEF,gBAAgB;YAChB,IAAI,CAAC,eAAe,EAAE;iBACnB,IAAI,CAAC,GAAG,EAAE,CACT,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,wBAAwB,IAAI,CAAC,cAAc,CAAC,IAAI,uBAAuB,CACxE,CACF;iBACA,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC,CAAC;YAEtE,4CAA4C;YAC5C,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;YAC3B,GAAG,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;YACxC,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACI,kBAAkB,CAAC,SAA4B;QACpD,sCAAsC;QACtC,IAAI,CAAC,IAAA,yCAAqB,EAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE;YACrD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,sDAAsD,EACtD,SAAS,CAAC,WAAW,CACtB,CAAC;YACF,OAAO;SACR;QAED,gCAAgC;QAChC,IACE,IAAI,CAAC,gBAAgB,CACnB,SAAS,CAAC,OAAO,CAAC,YAAY,EAC9B,SAAS,CAAC,OAAO,CAAC,SAAS,CAC5B,EACD;YACA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,yDAAyD,EACzD,SAAS,CAAC,WAAW,CACtB,CAAC;YACF,OAAO;SACR;QAED,wGAAwG;QACxG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,+BAA+B,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;QACtE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAED,kFAAkF;IAC1E,KAAK,CAAC,eAAe;QAC3B,8BAA8B;QAC9B,MAAM,MAAM,GAAkB,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAElE,yBAAyB;QACzB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAS,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,MAAc,EAAE,EAAE;YAChE,6CAA6C;YAC7C,IACE,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,oBAAoB;gBACjD,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,iBAAiB;;gBAE3C,OAAO;YAET,kCAAkC;YAClC,MAAM,MAAM,GAAG,MAAM,CAAC,gBAAS,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,CAAC,MAAM,CAAC,QAAQ;gBAAE,OAAO;YAE7B,sEAAsE;YACtE,4DAA4D;YAC5D,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;YAExE,yBAAyB;YACzB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,SAAiB,EAAE,EAAE;;gBACzD,+HAA+H;gBAC/H,oEAAoE;gBACpE,MAAM,OAAO,GAAG,MAAM,CAAC,QAAS,CAAC,SAAS,CAAC,CAAC;gBAC5C,IACE,CAAC,IAAI,CAAC,eAAe,CACnB,MAAM,EACN,SAAS,EACT,OAAO,EACP,+BAA+B,CAChC;oBAED,OAAO;gBAET,kCAAkC;gBAClC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;gBAClE,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;gBAC9D,IAAI,SAAS,EAAE;oBACb,+BAA+B;oBAC/B,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,0CAA0C,EAC1C,SAAS,CAAC,WAAW,CACtB,CAAC;oBAEF,iBAAiB;oBACjB,SAAS,CAAC,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC;oBACxC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;oBAClC,SAAS,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;oBACpC,SAAS,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;oBACxC,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;oBAChD,4GAA4G;oBAC5G,qDAAqD;oBACrD,2FAA2F;oBAC3F,2FAA2F;iBAC5F;qBAAM;oBACL,4DAA4D;oBAC5D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;oBAC5D,yBAAyB;oBACzB,SAAS,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,CACxC,MAAA,OAAO,CAAC,WAAW,mCAAI,IAAI,EAC3B,IAAI,CACL,CAAC;oBACF,SAAS,CAAC,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC;oBACxC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;oBAClC,SAAS,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;oBACpC,SAAS,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;oBACxC,sCAAsC;oBACtC,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAAC,sBAAW,EAAE,wBAAa,EAAE;wBAC/D,SAAS;qBACV,CAAC,CAAC;iBACJ;gBAED,kHAAkH;gBAClH,sHAAsH;gBACtH,kFAAkF;gBAClF,0BAA0B;gBAC1B,IAAI,CAAC,IAAA,yCAAqB,EAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC;oBAAE,OAAO;gBAE9D,mBAAmB;gBACnB,oEAAoE;gBACpE,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,UAAW,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAC1E,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,eAAe,CACrB,MAAc,EACd,SAAiB,EACjB,OAAgB,EAChB,+BAAwC;;QAExC,8BAA8B;QAC9B,IACE,CAAC,CACC,OAAO,CAAC,UAAU;YAClB,MAAM,CAAC,MAAM,CAAS,uBAAU,CAAC,CAAC,QAAQ,CACxC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CACjC,CACF,EACD;YACA,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,WAAW,MAAM,KAAK,SAAS,kBAC7B,MAAA,OAAO,CAAC,UAAU,mCAAI,aACxB,qBAAqB,CACtB,CAAC;YACF,OAAO,KAAK,CAAC;SACd;QAED,8BAA8B;QAC9B,IAAI,CAAC,+BAA+B,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE;YACxE,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,WAAW,MAAM,KAAK,SAAS,uCAAuC,CACvE,CAAC;YACF,OAAO,KAAK,CAAC;SACd;QAED,yBAAyB;QACzB,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;YAC5C,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,WAAW,MAAM,KAAK,SAAS,0CAA0C,CAC1E,CAAC;YACF,OAAO,KAAK,CAAC;SACd;QAED,8BAA8B;QAC9B,IACE,CAAC,IAAI,CAAC,gBAAgB;YACtB,+CAAkC,CAAC,QAAQ,CACzC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAgB,CAC/C,EACD;YACA,OAAO,KAAK,CAAC;SACd;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IACO,eAAe,CACrB,MAAc,EACd,UAAkB,EAClB,SAAiB,EACjB,SAA+C;QAE/C,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAEnE,QAAQ,UAAU,CAAC,WAAW,EAAE,EAAE;YAChC,KAAK,uBAAU,CAAC,sCAAsC,CAAC;YACvD,KAAK,uBAAU,CAAC,mBAAmB;gBACjC,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,GAAG,MAAM,IAAI,SAAS,EAAE,EACxB,IAAI,iDAAuB,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC,CAC5D,CAAC;gBACF,OAAO;YACT,KAAK,uBAAU,CAAC,kDAAkD;gBAChE,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,GAAG,MAAM,IAAI,SAAS,EAAE,EACxB,IAAI,uEAAkC,CAAC,IAAI,EAAE,SAAS,CAAC,CACxD,CAAC;gBACF,OAAO;YACT,KAAK,uBAAU,CAAC,oBAAoB,CAAC;YACrC,KAAK,uBAAU,CAAC,gBAAgB,CAAC;YACjC,KAAK,uBAAU,CAAC,kBAAkB;gBAChC,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,GAAG,MAAM,IAAI,SAAS,EAAE,EACxB,IAAI,iCAAe,CAAC,IAAI,EAAE,SAAS,CAAC,CACrC,CAAC;gBACF,OAAO;YACT,KAAK,uBAAU,CAAC,kBAAkB;gBAChC,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,GAAG,MAAM,IAAI,SAAS,EAAE,EACxB,IAAI,+CAAsB,CAAC,IAAI,EAAE,SAAS,CAAC,CAC5C,CAAC;gBACF,OAAO;YACT,KAAK,uBAAU,CAAC,qBAAqB;gBACnC,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,GAAG,MAAM,IAAI,SAAS,EAAE,EACxB,IAAI,6CAAqB,CAAC,IAAI,EAAE,SAAS,CAAC,CAC3C,CAAC;gBACF,OAAO;YACT,KAAK,uBAAU,CAAC,4BAA4B;gBAC1C,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,GAAG,MAAM,IAAI,SAAS,EAAE,EACxB,IAAI,yCAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CACzC,CAAC;gBACF,OAAO;YACT,KAAK,uBAAU,CAAC,oBAAoB,CAAC;YACrC,KAAK,uBAAU,CAAC,kBAAkB,CAAC;YACnC,KAAK,uBAAU,CAAC,yBAAyB,CAAC;YAC1C,KAAK,uBAAU,CAAC,mBAAmB;gBACjC,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,GAAG,MAAM,IAAI,SAAS,EAAE,EACxB,IAAI,mDAAwB,CAAC,IAAI,EAAE,SAAS,CAAC,CAC9C,CAAC;gBACF,OAAO;YACT;gBACE,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,GAAG,MAAM,KAAK,SAAS,iDAAiD,UAAU,IAAI,CACvF,CAAC;SACL;IACH,CAAC;IAEO,gBAAgB,CAAC,MAAc,EAAE,OAAe;QACtD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe;YAAE,OAAO,KAAK,CAAC;QAE/C,OAAQ,IAAI,CAAC,MAAM,CAAC,eAAiC,CAAC,IAAI,CACxD,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,WAAW,EAAE,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,IAAI;YAC/C,CAAC,CAAC,WAAW,EAAE,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC,WAAW,EAAE,EAAE,CACzE,CAAC;IACJ,CAAC;IAEO,sBAAsB,CAAC,OAAyB;QACtD,6BAA6B;QAC7B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAS,CAAC,CAAC,UAAU,CAAC,CAAC;QAE9D,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;;YAC/B,oDAAoD;YACpD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAC3B,+CAA+C,CAChD,CAAC;YACF,IAAI,CAAC,KAAK,EAAE;gBACV,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,qBAAqB,SAAS,qBAAqB,CAAC,CAAC;gBACpE,OAAO;aACR;YAED,qFAAqF;YACrF,MAAA,IAAI,CAAC,cAAc;iBAChB,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,0CAC7B,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,gBAAS,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,oBAAoB,CAAC,MAAc,EAAE,OAAe;;QAC1D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY;YAAE,OAAO,4BAAa,CAAC,SAAS,CAAC;QAE9D,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;QAC/D,MAAM,QAAQ,GAAI,IAAI,CAAC,MAAM,CAAC,YAAmC,CAAC,MAAM,CACtE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,GAAG,CACvC,CAAC;QAEF,QAAQ,QAAQ,CAAC,MAAM,EAAE;YACvB,KAAK,CAAC;gBACJ,OAAO,4BAAa,CAAC,SAAS,CAAC;YACjC,KAAK,CAAC;gBACJ,MAAM;YACR;gBACE,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,mDAAmD,GAAG,+BAA+B,CACtF,CAAC;gBACF,MAAM;SACT;QAED,OAAO,MAAA,4BAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mCAAI,4BAAa,CAAC,SAAS,CAAC;IACpE,CAAC;CACF;AA1aD,oEA0aC"}
@@ -12,6 +12,13 @@ export declare class RoomTemperatureControllerAccessory extends FreeAtHomeAccess
12
12
  private coolingOn;
13
13
  private stateCurrentTemperature;
14
14
  private stateTargetTemperature;
15
+ private readonly pdControllerOnOff;
16
+ private readonly pdControllerOnOffRequest;
17
+ private readonly pdHeatingOn;
18
+ private readonly pdCoolingOn;
19
+ private readonly pdCurrentTemperature;
20
+ private readonly pdTargetTemperature;
21
+ private readonly pdTargetTemperatureRequest;
15
22
  private get stateCurrentHeatingCoolingState();
16
23
  private get stateTargetHeatingCoolingState();
17
24
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"roomTemperatureControllerAccessory.d.ts","sourceRoot":"","sources":["../src/roomTemperatureControllerAccessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,iBAAiB,EAAW,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAG1D,+CAA+C;AAC/C,qBAAa,kCAAmC,SAAQ,mBAAmB;IAmCvE,QAAQ,CAAC,QAAQ,EAAE,4BAA4B;IAC/C,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC,iBAAiB,CAAC;IAnC1D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,uBAAuB,CAAS;IACxC,OAAO,CAAC,sBAAsB,CAAS;IAEvC,OAAO,KAAK,+BAA+B,GAc1C;IACD,OAAO,KAAK,8BAA8B,GAIzC;IAED;;;;OAIG;gBAEQ,QAAQ,EAAE,4BAA4B,EACtC,SAAS,EAAE,iBAAiB,CAAC,iBAAiB,CAAC;YA8D5C,oBAAoB;YA6BpB,4BAA4B;IA0B1B,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;CAyDxE"}
1
+ {"version":3,"file":"roomTemperatureControllerAccessory.d.ts","sourceRoot":"","sources":["../src/roomTemperatureControllerAccessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,iBAAiB,EAAW,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAW1D,+CAA+C;AAC/C,qBAAa,kCAAmC,SAAQ,mBAAmB;IA0CvE,QAAQ,CAAC,QAAQ,EAAE,4BAA4B;IAC/C,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC,iBAAiB,CAAC;IA1C1D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,uBAAuB,CAAS;IACxC,OAAO,CAAC,sBAAsB,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAS;IAClD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAC7C,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAS;IAEpD,OAAO,KAAK,+BAA+B,GAc1C;IACD,OAAO,KAAK,8BAA8B,GAIzC;IAED;;;;OAIG;gBAEQ,QAAQ,EAAE,4BAA4B,EACtC,SAAS,EAAE,iBAAiB,CAAC,iBAAiB,CAAC;YAqG5C,oBAAoB;YA6BpB,4BAA4B;IA0B1B,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;CAyDxE"}
@@ -3,6 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RoomTemperatureControllerAccessory = void 0;
4
4
  const freeAtHomeAccessory_1 = require("./freeAtHomeAccessory");
5
5
  const util_1 = require("./util");
6
+ const pidControllerOnOff = 56;
7
+ const pidControllerOnOffRequest = 66;
8
+ const pidHeatingOn = 48;
9
+ const pidCoolingOn = 50;
10
+ const pidCurrentTemperature = 304;
11
+ const pidTargetTemperature = 51;
12
+ const pidTargetTemperatureRequest = 320;
6
13
  /** A room temperature controller accessory. */
7
14
  class RoomTemperatureControllerAccessory extends freeAtHomeAccessory_1.FreeAtHomeAccessory {
8
15
  get stateCurrentHeatingCoolingState() {
@@ -32,16 +39,27 @@ class RoomTemperatureControllerAccessory extends freeAtHomeAccessory_1.FreeAtHom
32
39
  * @param accessory The platform accessory.
33
40
  */
34
41
  constructor(platform, accessory) {
35
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
42
+ var _a, _b, _c, _d, _e;
36
43
  super(platform, accessory);
37
44
  this.platform = platform;
38
45
  this.accessory = accessory;
46
+ // Resolve data points
47
+ if (!this.accessory.context.channel.outputs ||
48
+ !this.accessory.context.channel.inputs)
49
+ throw new Error("Channel lacks expected input or output data points.");
50
+ this.pdControllerOnOff = (0, util_1.getDataPointByPairingID)(this.accessory.context.channel.outputs, pidControllerOnOff);
51
+ this.pdControllerOnOffRequest = (0, util_1.getDataPointByPairingID)(this.accessory.context.channel.inputs, pidControllerOnOffRequest);
52
+ this.pdHeatingOn = (0, util_1.getDataPointByPairingID)(this.accessory.context.channel.outputs, pidHeatingOn);
53
+ this.pdCoolingOn = (0, util_1.getDataPointByPairingID)(this.accessory.context.channel.outputs, pidCoolingOn);
54
+ this.pdCurrentTemperature = (0, util_1.getDataPointByPairingID)(this.accessory.context.channel.outputs, pidCurrentTemperature);
55
+ this.pdTargetTemperature = (0, util_1.getDataPointByPairingID)(this.accessory.context.channel.outputs, pidTargetTemperature);
56
+ this.pdTargetTemperatureRequest = (0, util_1.getDataPointByPairingID)(this.accessory.context.channel.inputs, pidTargetTemperatureRequest);
39
57
  // set initial state
40
- this.controllerOnOff = !!parseInt((_b = (_a = this.accessory.context.channel.outputs) === null || _a === void 0 ? void 0 : _a.odp0008.value) !== null && _b !== void 0 ? _b : "0");
41
- this.heatingOn = !!parseInt((_d = (_c = this.accessory.context.channel.outputs) === null || _c === void 0 ? void 0 : _c.odp0000.value) !== null && _d !== void 0 ? _d : "0");
42
- this.coolingOn = !!parseInt((_f = (_e = this.accessory.context.channel.outputs) === null || _e === void 0 ? void 0 : _e.odp0001.value) !== null && _f !== void 0 ? _f : "0");
43
- this.stateCurrentTemperature = parseFloat((_h = (_g = this.accessory.context.channel.outputs) === null || _g === void 0 ? void 0 : _g.odp0010.value) !== null && _h !== void 0 ? _h : "0.0");
44
- this.stateTargetTemperature = parseFloat((_k = (_j = this.accessory.context.channel.outputs) === null || _j === void 0 ? void 0 : _j.odp0006.value) !== null && _k !== void 0 ? _k : "0.0");
58
+ this.controllerOnOff = !!parseInt((_a = this.accessory.context.channel.outputs[this.pdControllerOnOff].value) !== null && _a !== void 0 ? _a : "0");
59
+ this.heatingOn = !!parseInt((_b = this.accessory.context.channel.outputs[this.pdHeatingOn].value) !== null && _b !== void 0 ? _b : "0");
60
+ this.coolingOn = !!parseInt((_c = this.accessory.context.channel.outputs[this.pdCoolingOn].value) !== null && _c !== void 0 ? _c : "0");
61
+ this.stateCurrentTemperature = parseFloat((_d = this.accessory.context.channel.outputs[this.pdCurrentTemperature].value) !== null && _d !== void 0 ? _d : "0.0");
62
+ this.stateTargetTemperature = parseFloat((_e = this.accessory.context.channel.outputs[this.pdTargetTemperature].value) !== null && _e !== void 0 ? _e : "0.0");
45
63
  // get the Thermostat service if it exists, otherwise create a new service instance
46
64
  this.service =
47
65
  this.accessory.getService(this.platform.Service.Thermostat) ||
@@ -88,7 +106,7 @@ class RoomTemperatureControllerAccessory extends freeAtHomeAccessory_1.FreeAtHom
88
106
  // Heating Cooling State must not be OFF to set the target temperature
89
107
  await this.setTargetHeatingCoolingState(this.platform.Characteristic.TargetHeatingCoolingState.AUTO);
90
108
  // set data point at SysAP
91
- await this.platform.sysap.setDatapoint(util_1.EmptyGuid, this.accessory.context.deviceSerial, this.accessory.context.channelId, "idp0016", this.stateTargetTemperature.toFixed(1));
109
+ await this.platform.sysap.setDatapoint(util_1.EmptyGuid, this.accessory.context.deviceSerial, this.accessory.context.channelId, this.pdTargetTemperatureRequest, this.stateTargetTemperature.toFixed(1));
92
110
  }
93
111
  async setTargetHeatingCoolingState(value) {
94
112
  // avoid unncessary updates or update cache
@@ -99,30 +117,30 @@ class RoomTemperatureControllerAccessory extends freeAtHomeAccessory_1.FreeAtHom
99
117
  // log event
100
118
  this.platform.log.info(`${this.accessory.displayName} (Room Temperature Controller ${this.serialNumber}) set characteristic TargetHeatingCoolingState -> ${value.toString()}`);
101
119
  // set data point at SysAP
102
- await this.platform.sysap.setDatapoint(util_1.EmptyGuid, this.accessory.context.deviceSerial, this.accessory.context.channelId, "idp0012", value === this.platform.Characteristic.TargetHeatingCoolingState.OFF
120
+ await this.platform.sysap.setDatapoint(util_1.EmptyGuid, this.accessory.context.deviceSerial, this.accessory.context.channelId, this.pdControllerOnOffRequest, value === this.platform.Characteristic.TargetHeatingCoolingState.OFF
103
121
  ? "0"
104
122
  : "1");
105
123
  }
106
124
  updateDatapoint(datapoint, value) {
107
125
  switch (datapoint) {
108
- case "odp0000":
126
+ case this.pdHeatingOn:
109
127
  this.heatingOn = !!parseInt(value);
110
128
  this.doUpdateDatapoint("Room Temperature Controller", this.service, this.platform.Characteristic.CurrentHeatingCoolingState, this.stateCurrentHeatingCoolingState);
111
129
  return;
112
- case "odp0001":
130
+ case this.pdCoolingOn:
113
131
  this.coolingOn = !!parseInt(value);
114
132
  this.doUpdateDatapoint("Room Temperature Controller", this.service, this.platform.Characteristic.CurrentHeatingCoolingState, this.stateCurrentHeatingCoolingState);
115
133
  return;
116
- case "odp0008":
134
+ case this.pdControllerOnOff:
117
135
  this.controllerOnOff = !!parseInt(value);
118
136
  this.doUpdateDatapoint("Room Temperature Controller", this.service, this.platform.Characteristic.CurrentHeatingCoolingState, this.stateCurrentHeatingCoolingState);
119
137
  this.doUpdateDatapoint("Room Temperature Controller", this.service, this.platform.Characteristic.TargetHeatingCoolingState, this.stateTargetHeatingCoolingState);
120
138
  return;
121
- case "odp0006":
139
+ case this.pdTargetTemperature:
122
140
  this.stateTargetTemperature = parseFloat(value);
123
141
  this.doUpdateDatapoint("Room Temperature Controller", this.service, this.platform.Characteristic.TargetTemperature, this.stateTargetTemperature);
124
142
  return;
125
- case "odp0010":
143
+ case this.pdCurrentTemperature:
126
144
  this.stateCurrentTemperature = parseFloat(value);
127
145
  this.doUpdateDatapoint("Room Temperature Controller", this.service, this.platform.Characteristic.CurrentTemperature, this.stateCurrentTemperature);
128
146
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"roomTemperatureControllerAccessory.js","sourceRoot":"","sources":["../src/roomTemperatureControllerAccessory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"roomTemperatureControllerAccessory.js","sourceRoot":"","sources":["../src/roomTemperatureControllerAccessory.ts"],"names":[],"mappings":"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"}
package/dist/util.d.ts CHANGED
@@ -1,2 +1,15 @@
1
+ import { InOutPut } from "freeathome-local-api-client";
2
+ /**
3
+ * In the local API the system access point UUID is always an empty UUID. Could be extended later to also support the cloud API.
4
+ */
1
5
  export declare const EmptyGuid = "00000000-0000-0000-0000-000000000000";
6
+ /**
7
+ * Gets the name of the data point with the specified pairing ID.
8
+ * @param datapoints The data points
9
+ * @param pairingID The pairing ID.
10
+ * @returns The data point name or null, if no data point was found for the specified pairing ID.
11
+ */
12
+ export declare function getDataPointByPairingID(datapoints: {
13
+ [key: string]: InOutPut;
14
+ } | undefined, pairingID: number): string;
2
15
  //# sourceMappingURL=util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,SAAS,yCAAyC,CAAC"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,SAAS,yCAAyC,CAAC;AAEhE;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAE,GAAG,SAAS,EACnD,SAAS,EAAE,MAAM,GAChB,MAAM,CAUR"}
package/dist/util.js CHANGED
@@ -1,6 +1,25 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EmptyGuid = void 0;
4
- // In the local API the system access point UUID is always an empty UUID. Could be extended later to also support the cloud API.
3
+ exports.getDataPointByPairingID = exports.EmptyGuid = void 0;
4
+ /**
5
+ * In the local API the system access point UUID is always an empty UUID. Could be extended later to also support the cloud API.
6
+ */
5
7
  exports.EmptyGuid = "00000000-0000-0000-0000-000000000000";
8
+ /**
9
+ * Gets the name of the data point with the specified pairing ID.
10
+ * @param datapoints The data points
11
+ * @param pairingID The pairing ID.
12
+ * @returns The data point name or null, if no data point was found for the specified pairing ID.
13
+ */
14
+ function getDataPointByPairingID(datapoints, pairingID) {
15
+ if (!datapoints)
16
+ throw new Error("Data point object is undefined");
17
+ for (const e of Object.keys(datapoints)) {
18
+ if (datapoints[e].pairingID === pairingID) {
19
+ return e;
20
+ }
21
+ }
22
+ throw new Error(`No data point found for pairing ID ${pairingID}`);
23
+ }
24
+ exports.getDataPointByPairingID = getDataPointByPairingID;
6
25
  //# sourceMappingURL=util.js.map
package/dist/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;;AAAA,gIAAgI;AACnH,QAAA,SAAS,GAAG,sCAAsC,CAAC"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACU,QAAA,SAAS,GAAG,sCAAsC,CAAC;AAEhE;;;;;GAKG;AACH,SAAgB,uBAAuB,CACrC,UAAmD,EACnD,SAAiB;IAEjB,IAAI,CAAC,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAEnE,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;QACvC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,EAAE;YACzC,OAAO,CAAC,CAAC;SACV;KACF;IAED,MAAM,IAAI,KAAK,CAAC,sCAAsC,SAAS,EAAE,CAAC,CAAC;AACrE,CAAC;AAbD,0DAaC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "displayName": "free@home Local API",
3
3
  "name": "homebridge-freeathome-local-api",
4
- "version": "1.4.2",
4
+ "version": "1.4.4",
5
5
  "preview": false,
6
6
  "description": "Control your free@home setup using the local API provided by your System Access Point",
7
7
  "license": "MIT",
@@ -45,8 +45,8 @@
45
45
  "smarthome"
46
46
  ],
47
47
  "dependencies": {
48
- "freeathome-local-api-client": "^1.3.5",
49
- "node-fetch": "^2.6.7",
48
+ "freeathome-local-api-client": "^1.3.6",
49
+ "node-fetch": "^2.6.8",
50
50
  "rxjs": "^7.8.0"
51
51
  },
52
52
  "devDependencies": {
@@ -55,12 +55,12 @@
55
55
  "@types/jasmine": "^4.3.1",
56
56
  "@types/node": "^18.11.18",
57
57
  "@types/node-fetch": "^2.6.2",
58
- "@typescript-eslint/eslint-plugin": "^5.47.1",
59
- "@typescript-eslint/parser": "^5.47.1",
60
- "eslint": "^8.31.0",
61
- "eslint-config-prettier": "^8.5.0",
62
- "eslint-plugin-import": "^2.26.0",
63
- "eslint-plugin-n": "^15.6.0",
58
+ "@typescript-eslint/eslint-plugin": "^5.48.1",
59
+ "@typescript-eslint/parser": "^5.48.1",
60
+ "eslint": "^8.32.0",
61
+ "eslint-config-prettier": "^8.6.0",
62
+ "eslint-plugin-import": "^2.27.4",
63
+ "eslint-plugin-n": "^15.6.1",
64
64
  "eslint-plugin-prettier": "^4.2.1",
65
65
  "eslint-plugin-promise": "^6.1.1",
66
66
  "homebridge": "^1.6.0",
@@ -68,8 +68,8 @@
68
68
  "jasmine-spec-reporter": "^7.0.0",
69
69
  "nodemon": "^2.0.20",
70
70
  "nyc": "^15.1.0",
71
- "prettier": "^2.8.1",
72
- "rimraf": "^3.0.2",
71
+ "prettier": "^2.8.3",
72
+ "rimraf": "^4.0.5",
73
73
  "ts-node": "^10.9.1",
74
74
  "typescript": "^4.9.4"
75
75
  }
@@ -3,7 +3,7 @@ sonar.projectKey=homebridge-freeathome-local-api
3
3
  # defaults to project key
4
4
  sonar.projectName=Homebridge free@home Local API Plugin
5
5
  # defaults to 'not provided'
6
- sonar.projectVersion=1.2.0
6
+ sonar.projectVersion=1.4.3
7
7
 
8
8
  # Path is relative to the sonar-project.properties file. Defaults to .
9
9
  sonar.sources=src
@@ -34,6 +34,7 @@ describe("Motion Sensor Accessory", () => {
34
34
  });
35
35
  afterEach(() => {
36
36
  platform.resetLoggerCalls();
37
+ jasmine.clock().uninstall();
37
38
  });
38
39
 
39
40
  it("should be created", async () => {
@@ -109,4 +110,105 @@ describe("Motion Sensor Accessory", () => {
109
110
  true
110
111
  );
111
112
  });
113
+
114
+ it("should not set a reset timer if the sensor is reset manually", async () => {
115
+ platform.config.motionSensorAutoReset = true;
116
+ const accessory = new MotionSensorAccessory(platform, platformAccessory);
117
+ const instance = accessory as unknown as {
118
+ resetTimeout?: NodeJS.Timeout;
119
+ service: Service;
120
+ doUpdateDatapoint: (
121
+ acccessoryDisplayType: string,
122
+ service: Service,
123
+ characteristic: WithUUID<new () => Characteristic>,
124
+ characteristicValue: CharacteristicValue
125
+ ) => void;
126
+ };
127
+ const spy = spyOn(instance, "doUpdateDatapoint");
128
+ const characteristic = instance.service.getCharacteristic(
129
+ accessory.platform.Characteristic.MotionDetected
130
+ );
131
+ expect(await characteristic.handleGetRequest()).toBeFalse();
132
+ expect(instance.resetTimeout).toBeUndefined();
133
+ accessory.updateDatapoint("odp0000", "0");
134
+ expect(spy).toHaveBeenCalledWith(
135
+ "Motion Sensor",
136
+ instance.service,
137
+ accessory.platform.Characteristic.MotionDetected,
138
+ false
139
+ );
140
+ expect(instance.resetTimeout).toBeUndefined();
141
+ });
142
+
143
+ it("should cancel a set reset timer if the sensor is reset manually", async () => {
144
+ jasmine.clock().install();
145
+ platform.config.motionSensorAutoReset = true;
146
+ const accessory = new MotionSensorAccessory(platform, platformAccessory);
147
+ const instance = accessory as unknown as {
148
+ resetTimeout?: NodeJS.Timeout;
149
+ service: Service;
150
+ doUpdateDatapoint: (
151
+ acccessoryDisplayType: string,
152
+ service: Service,
153
+ characteristic: WithUUID<new () => Characteristic>,
154
+ characteristicValue: CharacteristicValue
155
+ ) => void;
156
+ };
157
+ const spy = spyOn(instance, "doUpdateDatapoint");
158
+ const characteristic = instance.service.getCharacteristic(
159
+ accessory.platform.Characteristic.MotionDetected
160
+ );
161
+ expect(await characteristic.handleGetRequest()).toBeFalse();
162
+ instance.resetTimeout = setTimeout(
163
+ () => fail("Timer should be cancelled"),
164
+ 10000
165
+ );
166
+ accessory.updateDatapoint("odp0000", "0");
167
+ expect(spy).toHaveBeenCalledWith(
168
+ "Motion Sensor",
169
+ instance.service,
170
+ accessory.platform.Characteristic.MotionDetected,
171
+ false
172
+ );
173
+ expect(instance.resetTimeout).toBeUndefined();
174
+ jasmine.clock().tick(15000);
175
+ });
176
+
177
+ it("should reset the sensor automatically after the specified time", async () => {
178
+ jasmine.clock().install();
179
+ platform.config.motionSensorAutoReset = true;
180
+ const accessory = new MotionSensorAccessory(platform, platformAccessory);
181
+ const instance = accessory as unknown as {
182
+ resetTimeout?: NodeJS.Timeout;
183
+ service: Service;
184
+ doUpdateDatapoint: (
185
+ acccessoryDisplayType: string,
186
+ service: Service,
187
+ characteristic: WithUUID<new () => Characteristic>,
188
+ characteristicValue: CharacteristicValue
189
+ ) => void;
190
+ };
191
+ const spy = spyOn(instance, "doUpdateDatapoint");
192
+ const characteristic = instance.service.getCharacteristic(
193
+ accessory.platform.Characteristic.MotionDetected
194
+ );
195
+ expect(await characteristic.handleGetRequest()).toBeFalse();
196
+ expect(instance.resetTimeout).toBeUndefined();
197
+ accessory.updateDatapoint("odp0000", "1");
198
+ expect(spy).toHaveBeenCalledWith(
199
+ "Motion Sensor",
200
+ instance.service,
201
+ accessory.platform.Characteristic.MotionDetected,
202
+ true
203
+ );
204
+ expect(instance.resetTimeout).toBeDefined();
205
+ jasmine.clock().tick(20000);
206
+ expect(instance.resetTimeout).toBeUndefined();
207
+ expect(spy).toHaveBeenCalledWith(
208
+ "Motion Sensor",
209
+ instance.service,
210
+ accessory.platform.Characteristic.MotionDetected,
211
+ false
212
+ );
213
+ });
112
214
  });
@@ -3,10 +3,6 @@ import { HomebridgeAPI } from "homebridge/lib/api";
3
3
  import { FreeAtHomeHomebridgePlatform } from "./../src/platform";
4
4
 
5
5
  const api = new HomebridgeAPI();
6
- const config: PlatformConfig = {
7
- name: "Test Platform Configuration",
8
- platform: "free@home Unit Testing Platform",
9
- };
10
6
  const logger: Logger = {
11
7
  debug: jasmine.createSpy(),
12
8
  error: jasmine.createSpy(),
@@ -14,10 +10,18 @@ const logger: Logger = {
14
10
  warn: jasmine.createSpy(),
15
11
  log: jasmine.createSpy(),
16
12
  };
13
+ function config(): PlatformConfig {
14
+ return {
15
+ name: "Test Platform Configuration",
16
+ platform: "free@home Unit Testing Platform",
17
+ motionSensorAutoReset: false,
18
+ motionSensorDefaultResetTimer: 20000,
19
+ };
20
+ }
17
21
 
18
22
  export class MockFreeAtHomeHomebridgePlatform extends FreeAtHomeHomebridgePlatform {
19
23
  constructor() {
20
- super(logger, config, api);
24
+ super(logger, config(), api);
21
25
  }
22
26
 
23
27
  public resetLoggerCalls(): void {
@@ -62,6 +62,27 @@ const configuration: Configuration = {
62
62
  channels: {
63
63
  ch0000: {
64
64
  functionID: "23",
65
+ outputs: {
66
+ odp0000: {
67
+ pairingID: 48,
68
+ },
69
+ odp0001: {
70
+ pairingID: 50,
71
+ },
72
+ odp0006: {
73
+ pairingID: 51,
74
+ },
75
+ odp0008: {
76
+ pairingID: 56,
77
+ },
78
+ odp0010: {
79
+ pairingID: 304,
80
+ },
81
+ },
82
+ inputs: {
83
+ idp0012: { pairingID: 66 },
84
+ idp0016: { pairingID: 320 },
85
+ },
65
86
  },
66
87
  ch0001: {
67
88
  functionID: "20",
@@ -18,7 +18,29 @@ describe("Room Temperature Controller Accessory", () => {
18
18
  let platformAccessory: PlatformAccessory<FreeAtHomeContext>;
19
19
 
20
20
  beforeEach(() => {
21
- channel = {};
21
+ channel = {
22
+ outputs: {
23
+ odp0000: {
24
+ pairingID: 48,
25
+ },
26
+ odp0001: {
27
+ pairingID: 50,
28
+ },
29
+ odp0006: {
30
+ pairingID: 51,
31
+ },
32
+ odp0008: {
33
+ pairingID: 56,
34
+ },
35
+ odp0010: {
36
+ pairingID: 304,
37
+ },
38
+ },
39
+ inputs: {
40
+ idp0012: { pairingID: 66 },
41
+ idp0016: { pairingID: 320 },
42
+ },
43
+ };
22
44
  device = {};
23
45
  platform = new MockFreeAtHomeHomebridgePlatform();
24
46
  platformAccessory = new PlatformAccessory(
@@ -36,6 +58,14 @@ describe("Room Temperature Controller Accessory", () => {
36
58
  platform.resetLoggerCalls();
37
59
  });
38
60
 
61
+ it("should throw if expected data points are missing on channel", () => {
62
+ channel.inputs = undefined;
63
+
64
+ expect(
65
+ () => new RoomTemperatureControllerAccessory(platform, platformAccessory)
66
+ ).toThrowError("Channel lacks expected input or output data points.");
67
+ });
68
+
39
69
  it("should be created with default state", async () => {
40
70
  const accessory = new RoomTemperatureControllerAccessory(
41
71
  platform,
@@ -74,23 +104,14 @@ describe("Room Temperature Controller Accessory", () => {
74
104
  });
75
105
 
76
106
  it("should be created with heating state", async () => {
77
- channel.outputs = {
78
- odp0000: {
79
- value: "1",
80
- },
81
- odp0001: {
82
- value: "0",
83
- },
84
- odp0006: {
85
- value: "21.5",
86
- },
87
- odp0008: {
88
- value: "1",
89
- },
90
- odp0010: {
91
- value: "20",
92
- },
93
- };
107
+ /* eslint-disable @typescript-eslint/no-non-null-assertion */
108
+ channel.outputs!.odp0000.value = "1";
109
+ channel.outputs!.odp0001.value = "0";
110
+ channel.outputs!.odp0006.value = "21.5";
111
+ channel.outputs!.odp0008.value = "1";
112
+ channel.outputs!.odp0010.value = "20";
113
+ /* eslint-enable @typescript-eslint/no-non-null-assertion */
114
+
94
115
  const accessory = new RoomTemperatureControllerAccessory(
95
116
  platform,
96
117
  platformAccessory
@@ -122,23 +143,14 @@ describe("Room Temperature Controller Accessory", () => {
122
143
  });
123
144
 
124
145
  it("should be created with cooling state", async () => {
125
- channel.outputs = {
126
- odp0000: {
127
- value: "0",
128
- },
129
- odp0001: {
130
- value: "1",
131
- },
132
- odp0006: {
133
- value: "21.5",
134
- },
135
- odp0008: {
136
- value: "1",
137
- },
138
- odp0010: {
139
- value: "23",
140
- },
141
- };
146
+ /* eslint-disable @typescript-eslint/no-non-null-assertion */
147
+ channel.outputs!.odp0000.value = "0";
148
+ channel.outputs!.odp0001.value = "1";
149
+ channel.outputs!.odp0006.value = "21.5";
150
+ channel.outputs!.odp0008.value = "1";
151
+ channel.outputs!.odp0010.value = "23";
152
+ /* eslint-enable @typescript-eslint/no-non-null-assertion */
153
+
142
154
  const accessory = new RoomTemperatureControllerAccessory(
143
155
  platform,
144
156
  platformAccessory
@@ -170,23 +182,14 @@ describe("Room Temperature Controller Accessory", () => {
170
182
  });
171
183
 
172
184
  it("should be created with controller active but not heating or cooling", async () => {
173
- channel.outputs = {
174
- odp0000: {
175
- value: "0",
176
- },
177
- odp0001: {
178
- value: "0",
179
- },
180
- odp0006: {
181
- value: "21.5",
182
- },
183
- odp0008: {
184
- value: "1",
185
- },
186
- odp0010: {
187
- value: "23",
188
- },
189
- };
185
+ /* eslint-disable @typescript-eslint/no-non-null-assertion */
186
+ channel.outputs!.odp0000.value = "0";
187
+ channel.outputs!.odp0001.value = "0";
188
+ channel.outputs!.odp0006.value = "21.5";
189
+ channel.outputs!.odp0008.value = "1";
190
+ channel.outputs!.odp0010.value = "23";
191
+ /* eslint-enable @typescript-eslint/no-non-null-assertion */
192
+
190
193
  const accessory = new RoomTemperatureControllerAccessory(
191
194
  platform,
192
195
  platformAccessory
@@ -218,23 +221,14 @@ describe("Room Temperature Controller Accessory", () => {
218
221
  });
219
222
 
220
223
  it("should be created with invalid CurrentHeatingCooling state", async () => {
221
- channel.outputs = {
222
- odp0000: {
223
- value: "1",
224
- },
225
- odp0001: {
226
- value: "1",
227
- },
228
- odp0006: {
229
- value: "21.5",
230
- },
231
- odp0008: {
232
- value: "1",
233
- },
234
- odp0010: {
235
- value: "23",
236
- },
237
- };
224
+ /* eslint-disable @typescript-eslint/no-non-null-assertion */
225
+ channel.outputs!.odp0000.value = "1";
226
+ channel.outputs!.odp0001.value = "1";
227
+ channel.outputs!.odp0006.value = "21.5";
228
+ channel.outputs!.odp0008.value = "1";
229
+ channel.outputs!.odp0010.value = "23";
230
+ /* eslint-enable @typescript-eslint/no-non-null-assertion */
231
+
238
232
  const accessory = new RoomTemperatureControllerAccessory(
239
233
  platform,
240
234
  platformAccessory
@@ -270,23 +264,14 @@ describe("Room Temperature Controller Accessory", () => {
270
264
  });
271
265
 
272
266
  it("should not handle a request to set TargetTemperature characteristic if the value has not changed", async () => {
273
- channel.outputs = {
274
- odp0000: {
275
- value: "1",
276
- },
277
- odp0001: {
278
- value: "0",
279
- },
280
- odp0006: {
281
- value: "21.5",
282
- },
283
- odp0008: {
284
- value: "1",
285
- },
286
- odp0010: {
287
- value: "20",
288
- },
289
- };
267
+ /* eslint-disable @typescript-eslint/no-non-null-assertion */
268
+ channel.outputs!.odp0000.value = "1";
269
+ channel.outputs!.odp0001.value = "0";
270
+ channel.outputs!.odp0006.value = "21.5";
271
+ channel.outputs!.odp0008.value = "1";
272
+ channel.outputs!.odp0010.value = "20";
273
+ /* eslint-enable @typescript-eslint/no-non-null-assertion */
274
+
290
275
  const accessory = new RoomTemperatureControllerAccessory(
291
276
  platform,
292
277
  platformAccessory
@@ -305,23 +290,14 @@ describe("Room Temperature Controller Accessory", () => {
305
290
  });
306
291
 
307
292
  it("should handle request to set TargetTemperature characteristic if the value has changed", async () => {
308
- channel.outputs = {
309
- odp0000: {
310
- value: "1",
311
- },
312
- odp0001: {
313
- value: "0",
314
- },
315
- odp0006: {
316
- value: "21.5",
317
- },
318
- odp0008: {
319
- value: "1",
320
- },
321
- odp0010: {
322
- value: "20",
323
- },
324
- };
293
+ /* eslint-disable @typescript-eslint/no-non-null-assertion */
294
+ channel.outputs!.odp0000.value = "1";
295
+ channel.outputs!.odp0001.value = "0";
296
+ channel.outputs!.odp0006.value = "21.5";
297
+ channel.outputs!.odp0008.value = "1";
298
+ channel.outputs!.odp0010.value = "20";
299
+ /* eslint-enable @typescript-eslint/no-non-null-assertion */
300
+
325
301
  const accessory = new RoomTemperatureControllerAccessory(
326
302
  platform,
327
303
  platformAccessory
@@ -351,23 +327,14 @@ describe("Room Temperature Controller Accessory", () => {
351
327
  });
352
328
 
353
329
  it("should not handle a request to set TargetHeatingCoolingState characteristic if the value has not changed", async () => {
354
- channel.outputs = {
355
- odp0000: {
356
- value: "1",
357
- },
358
- odp0001: {
359
- value: "0",
360
- },
361
- odp0006: {
362
- value: "21.5",
363
- },
364
- odp0008: {
365
- value: "1",
366
- },
367
- odp0010: {
368
- value: "20",
369
- },
370
- };
330
+ /* eslint-disable @typescript-eslint/no-non-null-assertion */
331
+ channel.outputs!.odp0000.value = "1";
332
+ channel.outputs!.odp0001.value = "0";
333
+ channel.outputs!.odp0006.value = "21.5";
334
+ channel.outputs!.odp0008.value = "1";
335
+ channel.outputs!.odp0010.value = "20";
336
+ /* eslint-enable @typescript-eslint/no-non-null-assertion */
337
+
371
338
  const accessory = new RoomTemperatureControllerAccessory(
372
339
  platform,
373
340
  platformAccessory
@@ -390,23 +357,14 @@ describe("Room Temperature Controller Accessory", () => {
390
357
  });
391
358
 
392
359
  it("should handle request to set TargetHeatingCoolingState characteristic to off", async () => {
393
- channel.outputs = {
394
- odp0000: {
395
- value: "1",
396
- },
397
- odp0001: {
398
- value: "0",
399
- },
400
- odp0006: {
401
- value: "21.5",
402
- },
403
- odp0008: {
404
- value: "1",
405
- },
406
- odp0010: {
407
- value: "20",
408
- },
409
- };
360
+ /* eslint-disable @typescript-eslint/no-non-null-assertion */
361
+ channel.outputs!.odp0000.value = "1";
362
+ channel.outputs!.odp0001.value = "0";
363
+ channel.outputs!.odp0006.value = "21.5";
364
+ channel.outputs!.odp0008.value = "1";
365
+ channel.outputs!.odp0010.value = "20";
366
+ /* eslint-enable @typescript-eslint/no-non-null-assertion */
367
+
410
368
  const accessory = new RoomTemperatureControllerAccessory(
411
369
  platform,
412
370
  platformAccessory
@@ -443,23 +401,14 @@ describe("Room Temperature Controller Accessory", () => {
443
401
  });
444
402
 
445
403
  it("should handle request to set TargetHeatingCoolingState characteristic to off", async () => {
446
- channel.outputs = {
447
- odp0000: {
448
- value: "1",
449
- },
450
- odp0001: {
451
- value: "0",
452
- },
453
- odp0006: {
454
- value: "21.5",
455
- },
456
- odp0008: {
457
- value: "0",
458
- },
459
- odp0010: {
460
- value: "20",
461
- },
462
- };
404
+ /* eslint-disable @typescript-eslint/no-non-null-assertion */
405
+ channel.outputs!.odp0000.value = "1";
406
+ channel.outputs!.odp0001.value = "0";
407
+ channel.outputs!.odp0006.value = "21.5";
408
+ channel.outputs!.odp0008.value = "0";
409
+ channel.outputs!.odp0010.value = "20";
410
+ /* eslint-enable @typescript-eslint/no-non-null-assertion */
411
+
463
412
  const accessory = new RoomTemperatureControllerAccessory(
464
413
  platform,
465
414
  platformAccessory
@@ -535,23 +484,14 @@ describe("Room Temperature Controller Accessory", () => {
535
484
  });
536
485
 
537
486
  it("should process update to heating mode datapoint", async () => {
538
- channel.outputs = {
539
- odp0000: {
540
- value: "0",
541
- },
542
- odp0001: {
543
- value: "0",
544
- },
545
- odp0006: {
546
- value: "21.5",
547
- },
548
- odp0008: {
549
- value: "1",
550
- },
551
- odp0010: {
552
- value: "20",
553
- },
554
- };
487
+ /* eslint-disable @typescript-eslint/no-non-null-assertion */
488
+ channel.outputs!.odp0000.value = "0";
489
+ channel.outputs!.odp0001.value = "0";
490
+ channel.outputs!.odp0006.value = "21.5";
491
+ channel.outputs!.odp0008.value = "1";
492
+ channel.outputs!.odp0010.value = "20";
493
+ /* eslint-enable @typescript-eslint/no-non-null-assertion */
494
+
555
495
  const accessory = new RoomTemperatureControllerAccessory(
556
496
  platform,
557
497
  platformAccessory
@@ -596,23 +536,14 @@ describe("Room Temperature Controller Accessory", () => {
596
536
  });
597
537
 
598
538
  it("should process update to cooling mode datapoint", async () => {
599
- channel.outputs = {
600
- odp0000: {
601
- value: "0",
602
- },
603
- odp0001: {
604
- value: "0",
605
- },
606
- odp0006: {
607
- value: "21.5",
608
- },
609
- odp0008: {
610
- value: "1",
611
- },
612
- odp0010: {
613
- value: "23",
614
- },
615
- };
539
+ /* eslint-disable @typescript-eslint/no-non-null-assertion */
540
+ channel.outputs!.odp0000.value = "0";
541
+ channel.outputs!.odp0001.value = "0";
542
+ channel.outputs!.odp0006.value = "21.5";
543
+ channel.outputs!.odp0008.value = "1";
544
+ channel.outputs!.odp0010.value = "23";
545
+ /* eslint-enable @typescript-eslint/no-non-null-assertion */
546
+
616
547
  const accessory = new RoomTemperatureControllerAccessory(
617
548
  platform,
618
549
  platformAccessory
@@ -657,23 +588,14 @@ describe("Room Temperature Controller Accessory", () => {
657
588
  });
658
589
 
659
590
  it("should process update to controller on/off datapoint", async () => {
660
- channel.outputs = {
661
- odp0000: {
662
- value: "1",
663
- },
664
- odp0001: {
665
- value: "0",
666
- },
667
- odp0006: {
668
- value: "21.5",
669
- },
670
- odp0008: {
671
- value: "0",
672
- },
673
- odp0010: {
674
- value: "20",
675
- },
676
- };
591
+ /* eslint-disable @typescript-eslint/no-non-null-assertion */
592
+ channel.outputs!.odp0000.value = "1";
593
+ channel.outputs!.odp0001.value = "0";
594
+ channel.outputs!.odp0006.value = "21.5";
595
+ channel.outputs!.odp0008.value = "0";
596
+ channel.outputs!.odp0010.value = "20";
597
+ /* eslint-enable @typescript-eslint/no-non-null-assertion */
598
+
677
599
  const accessory = new RoomTemperatureControllerAccessory(
678
600
  platform,
679
601
  platformAccessory
@@ -724,23 +646,14 @@ describe("Room Temperature Controller Accessory", () => {
724
646
  });
725
647
 
726
648
  it("should process update to target temperature datapoint", async () => {
727
- channel.outputs = {
728
- odp0000: {
729
- value: "1",
730
- },
731
- odp0001: {
732
- value: "0",
733
- },
734
- odp0006: {
735
- value: "21.5",
736
- },
737
- odp0008: {
738
- value: "1",
739
- },
740
- odp0010: {
741
- value: "20",
742
- },
743
- };
649
+ /* eslint-disable @typescript-eslint/no-non-null-assertion */
650
+ channel.outputs!.odp0000.value = "1";
651
+ channel.outputs!.odp0001.value = "0";
652
+ channel.outputs!.odp0006.value = "21.5";
653
+ channel.outputs!.odp0008.value = "1";
654
+ channel.outputs!.odp0010.value = "20";
655
+ /* eslint-enable @typescript-eslint/no-non-null-assertion */
656
+
744
657
  const accessory = new RoomTemperatureControllerAccessory(
745
658
  platform,
746
659
  platformAccessory
@@ -785,23 +698,14 @@ describe("Room Temperature Controller Accessory", () => {
785
698
  });
786
699
 
787
700
  it("should process update to current temperature datapoint", async () => {
788
- channel.outputs = {
789
- odp0000: {
790
- value: "1",
791
- },
792
- odp0001: {
793
- value: "0",
794
- },
795
- odp0006: {
796
- value: "21.5",
797
- },
798
- odp0008: {
799
- value: "1",
800
- },
801
- odp0010: {
802
- value: "20",
803
- },
804
- };
701
+ /* eslint-disable @typescript-eslint/no-non-null-assertion */
702
+ channel.outputs!.odp0000.value = "1";
703
+ channel.outputs!.odp0001.value = "0";
704
+ channel.outputs!.odp0006.value = "21.5";
705
+ channel.outputs!.odp0008.value = "1";
706
+ channel.outputs!.odp0010.value = "20";
707
+ /* eslint-enable @typescript-eslint/no-non-null-assertion */
708
+
805
709
  const accessory = new RoomTemperatureControllerAccessory(
806
710
  platform,
807
711
  platformAccessory
@@ -0,0 +1,35 @@
1
+ import { InOutPut } from "freeathome-local-api-client";
2
+ import { getDataPointByPairingID } from "../src/util";
3
+
4
+ const datapoints: { [key: string]: InOutPut } = {
5
+ dp0: {
6
+ pairingID: 0,
7
+ value: "0",
8
+ },
9
+ dp1: {
10
+ pairingID: 1,
11
+ value: "1",
12
+ },
13
+ dp2: {
14
+ pairingID: 2,
15
+ value: "2",
16
+ },
17
+ };
18
+
19
+ describe("getDataPointByPairingID", () => {
20
+ it("should throw if datapoints are undefined", () => {
21
+ expect(() => getDataPointByPairingID(undefined, 1)).toThrowError(
22
+ "Data point object is undefined"
23
+ );
24
+ });
25
+
26
+ it("should throw no datapoint is found for the specified pairing ID", () => {
27
+ expect(() => getDataPointByPairingID(datapoints, 4)).toThrowError(
28
+ "No data point found for pairing ID 4"
29
+ );
30
+ });
31
+
32
+ it("should get data point for existing pairing ID", () => {
33
+ expect(getDataPointByPairingID(datapoints, 1)).toBe("dp1");
34
+ });
35
+ });