@mp-consulting/homebridge-daikin-cloud 1.3.21 → 1.3.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +5 -0
  2. package/dist/src/accessories/base-accessory.d.ts.map +1 -1
  3. package/dist/src/accessories/base-accessory.js +7 -2
  4. package/dist/src/accessories/base-accessory.js.map +1 -1
  5. package/dist/src/api/daikin-device.d.ts +7 -0
  6. package/dist/src/api/daikin-device.d.ts.map +1 -1
  7. package/dist/src/api/daikin-device.js +27 -1
  8. package/dist/src/api/daikin-device.js.map +1 -1
  9. package/dist/src/api/daikin-schemas.d.ts +71 -59
  10. package/dist/src/api/daikin-schemas.d.ts.map +1 -1
  11. package/dist/src/api/daikin-schemas.js +51 -32
  12. package/dist/src/api/daikin-schemas.js.map +1 -1
  13. package/dist/src/features/base-feature.d.ts +7 -0
  14. package/dist/src/features/base-feature.d.ts.map +1 -1
  15. package/dist/src/features/base-feature.js +17 -0
  16. package/dist/src/features/base-feature.js.map +1 -1
  17. package/dist/src/features/feature-manager.d.ts +6 -0
  18. package/dist/src/features/feature-manager.d.ts.map +1 -1
  19. package/dist/src/features/feature-manager.js +10 -0
  20. package/dist/src/features/feature-manager.js.map +1 -1
  21. package/dist/src/features/modes/econo-mode.feature.d.ts.map +1 -1
  22. package/dist/src/features/modes/econo-mode.feature.js +5 -2
  23. package/dist/src/features/modes/econo-mode.feature.js.map +1 -1
  24. package/dist/src/features/modes/outdoor-silent-mode.feature.d.ts.map +1 -1
  25. package/dist/src/features/modes/outdoor-silent-mode.feature.js +5 -2
  26. package/dist/src/features/modes/outdoor-silent-mode.feature.js.map +1 -1
  27. package/dist/src/features/modes/powerful-mode.feature.d.ts.map +1 -1
  28. package/dist/src/features/modes/powerful-mode.feature.js +5 -2
  29. package/dist/src/features/modes/powerful-mode.feature.js.map +1 -1
  30. package/dist/src/features/modes/streamer-mode.feature.d.ts.map +1 -1
  31. package/dist/src/features/modes/streamer-mode.feature.js +5 -2
  32. package/dist/src/features/modes/streamer-mode.feature.js.map +1 -1
  33. package/dist/src/platform.d.ts.map +1 -1
  34. package/dist/src/platform.js +7 -6
  35. package/dist/src/platform.js.map +1 -1
  36. package/dist/src/services/climate-control.service.d.ts +13 -0
  37. package/dist/src/services/climate-control.service.d.ts.map +1 -1
  38. package/dist/src/services/climate-control.service.js +134 -23
  39. package/dist/src/services/climate-control.service.js.map +1 -1
  40. package/dist/src/services/hot-water-tank.service.d.ts.map +1 -1
  41. package/dist/src/services/hot-water-tank.service.js +3 -2
  42. package/dist/src/services/hot-water-tank.service.js.map +1 -1
  43. package/dist/src/utils/update-mapper.d.ts.map +1 -1
  44. package/dist/src/utils/update-mapper.js +4 -1
  45. package/dist/src/utils/update-mapper.js.map +1 -1
  46. package/package.json +10 -8
@@ -1 +1 @@
1
- {"version":3,"file":"base-feature.js","sourceRoot":"","sources":["../../../src/features/base-feature.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-feature.js","sourceRoot":"","sources":["../../../src/features/base-feature.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,12 @@ export declare class FeatureManager {
21
21
  * based on device support and configuration.
22
22
  */
23
23
  setupFeatures(): void;
24
+ /**
25
+ * Push current device state to every feature switch's On characteristic.
26
+ * Called from ClimateControlService.refreshValues after a poll/WebSocket
27
+ * update so HomeKit reflects mode changes initiated from the Daikin app.
28
+ */
29
+ refreshAll(): void;
24
30
  /**
25
31
  * Get a specific feature by class type.
26
32
  */
@@ -1 +1 @@
1
- {"version":3,"file":"feature-manager.d.ts","sourceRoot":"","sources":["../../../src/features/feature-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAmClD;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiD;IAC3E,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;gBAG5C,QAAQ,EAAE,mBAAmB,EAC7B,SAAS,EAAE,iBAAiB,CAAC,2BAA2B,CAAC,EACzD,iBAAiB,EAAE,MAAM;IAY3B;;;SAGK;IACL,aAAa,IAAI,IAAI;IAMrB;;SAEK;IACL,UAAU,CAAC,CAAC,SAAS,WAAW,EAC9B,YAAY,EAAE,QAAQ,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,GACjD,CAAC,GAAG,SAAS;CAGjB"}
1
+ {"version":3,"file":"feature-manager.d.ts","sourceRoot":"","sources":["../../../src/features/feature-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAmClD;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiD;IAC3E,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;gBAG5C,QAAQ,EAAE,mBAAmB,EAC7B,SAAS,EAAE,iBAAiB,CAAC,2BAA2B,CAAC,EACzD,iBAAiB,EAAE,MAAM;IAY3B;;;SAGK;IACL,aAAa,IAAI,IAAI;IAMrB;;;;SAIK;IACL,UAAU,IAAI,IAAI;IAMlB;;SAEK;IACL,UAAU,CAAC,CAAC,SAAS,WAAW,EAC9B,YAAY,EAAE,QAAQ,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,GACjD,CAAC,GAAG,SAAS;CAGjB"}
@@ -45,6 +45,16 @@ class FeatureManager {
45
45
  feature.setup();
46
46
  }
47
47
  }
48
+ /**
49
+ * Push current device state to every feature switch's On characteristic.
50
+ * Called from ClimateControlService.refreshValues after a poll/WebSocket
51
+ * update so HomeKit reflects mode changes initiated from the Daikin app.
52
+ */
53
+ refreshAll() {
54
+ for (const feature of this.features) {
55
+ feature.refresh();
56
+ }
57
+ }
48
58
  /**
49
59
  * Get a specific feature by class type.
50
60
  */
@@ -1 +1 @@
1
- {"version":3,"file":"feature-manager.js","sourceRoot":"","sources":["../../../src/features/feature-manager.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAMH,sBAAsB;AACtB,mCAQiB;AAWjB;;GAEG;AACH,MAAM,eAAe,GAAyB;IAC5C,2BAAmB;IACnB,wBAAgB;IAChB,2BAAmB;IACnB,gCAAwB;IACxB,+BAAuB;IACvB,+BAAuB;IACvB,mCAA2B;CAC5B,CAAC;AAEF;;GAEG;AACH,MAAa,cAAc;IACR,QAAQ,CAAsB;IAC9B,SAAS,CAAiD;IAC1D,iBAAiB,CAAS;IAC1B,QAAQ,GAAkB,EAAE,CAAC;IAE9C,YACE,QAA6B,EAC7B,SAAyD,EACzD,iBAAyB;QAEzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAE3C,+BAA+B;QAC/B,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,GAAG,CACjC,YAAY,CAAC,EAAE,CAAC,IAAI,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,iBAAiB,CAAC,CACzE,CAAC;IACJ,CAAC;IAED;;;SAGK;IACL,aAAa;QACX,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;SAEK;IACL,UAAU,CACR,YAAkD;QAElD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,YAAY,CAAkB,CAAC;IAC7E,CAAC;CACF;AAvCD,wCAuCC"}
1
+ {"version":3,"file":"feature-manager.js","sourceRoot":"","sources":["../../../src/features/feature-manager.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAMH,sBAAsB;AACtB,mCAQiB;AAWjB;;GAEG;AACH,MAAM,eAAe,GAAyB;IAC5C,2BAAmB;IACnB,wBAAgB;IAChB,2BAAmB;IACnB,gCAAwB;IACxB,+BAAuB;IACvB,+BAAuB;IACvB,mCAA2B;CAC5B,CAAC;AAEF;;GAEG;AACH,MAAa,cAAc;IACR,QAAQ,CAAsB;IAC9B,SAAS,CAAiD;IAC1D,iBAAiB,CAAS;IAC1B,QAAQ,GAAkB,EAAE,CAAC;IAE9C,YACE,QAA6B,EAC7B,SAAyD,EACzD,iBAAyB;QAEzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAE3C,+BAA+B;QAC/B,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,GAAG,CACjC,YAAY,CAAC,EAAE,CAAC,IAAI,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,iBAAiB,CAAC,CACzE,CAAC;IACJ,CAAC;IAED;;;SAGK;IACL,aAAa;QACX,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;;;SAIK;IACL,UAAU;QACR,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IAED;;SAEK;IACL,UAAU,CACR,YAAkD;QAElD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,YAAY,CAAkB,CAAC;IAC7E,CAAC;CACF;AAlDD,wCAkDC"}
@@ -1 +1 @@
1
- {"version":3,"file":"econo-mode.feature.d.ts","sourceRoot":"","sources":["../../../../src/features/modes/econo-mode.feature.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,WAAW,IAAI,OAAO;IAMhB,SAAS,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAUzC,SAAS,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CAK3D"}
1
+ {"version":3,"file":"econo-mode.feature.d.ts","sourceRoot":"","sources":["../../../../src/features/modes/econo-mode.feature.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,WAAW,IAAI,OAAO;IAShB,SAAS,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAUzC,SAAS,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CAK3D"}
@@ -19,9 +19,12 @@ class EconoModeFeature extends base_feature_1.BaseFeature {
19
19
  return 'showEconoMode';
20
20
  }
21
21
  isSupported() {
22
+ // device.getData() returns { value: undefined } when the characteristic is missing,
23
+ // so Boolean(data) is always true. Check the inner value to detect real support.
22
24
  const econoMode = this.getData('econoMode');
23
- this.log.debug(`[${this.name}] hasEconoModeFeature: ${Boolean(econoMode)}`);
24
- return Boolean(econoMode);
25
+ const supported = econoMode?.value !== undefined;
26
+ this.log.debug(`[${this.name}] hasEconoModeFeature: ${supported}`);
27
+ return supported;
25
28
  }
26
29
  async handleGet() {
27
30
  const data = this.getData('econoMode');
@@ -1 +1 @@
1
- {"version":3,"file":"econo-mode.feature.js","sourceRoot":"","sources":["../../../../src/features/modes/econo-mode.feature.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,kDAA8C;AAC9C,uCAA+C;AAE/C,MAAa,gBAAiB,SAAQ,0BAAW;IAC/C,IAAI,WAAW;QACb,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,WAAW;QACT,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,0BAA0B,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC5E,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAkC,CAAC;QACxE,MAAM,IAAI,GAAG,IAAI,EAAE,KAAK,KAAK,wBAAgB,CAAC,EAAE,CAAC;QACjD,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,IAAI,IAAI,CAAC,IAAI,oBAAoB,IAAI,IAAI;YACnC,gBAAgB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,CACvE,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAA0B;QACxC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,uBAAuB,KAAK,EAAE,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,wBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAgB,CAAC,GAAG,CAAC;QAChE,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;CACF;AAlCD,4CAkCC"}
1
+ {"version":3,"file":"econo-mode.feature.js","sourceRoot":"","sources":["../../../../src/features/modes/econo-mode.feature.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,kDAA8C;AAC9C,uCAA+C;AAE/C,MAAa,gBAAiB,SAAQ,0BAAW;IAC/C,IAAI,WAAW;QACb,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,WAAW;QACT,oFAAoF;QACpF,iFAAiF;QACjF,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAoC,CAAC;QAC/E,MAAM,SAAS,GAAG,SAAS,EAAE,KAAK,KAAK,SAAS,CAAC;QACjD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,0BAA0B,SAAS,EAAE,CAAC,CAAC;QACnE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAkC,CAAC;QACxE,MAAM,IAAI,GAAG,IAAI,EAAE,KAAK,KAAK,wBAAgB,CAAC,EAAE,CAAC;QACjD,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,IAAI,IAAI,CAAC,IAAI,oBAAoB,IAAI,IAAI;YACnC,gBAAgB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,CACvE,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAA0B;QACxC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,uBAAuB,KAAK,EAAE,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,wBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAgB,CAAC,GAAG,CAAC;QAChE,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;CACF;AArCD,4CAqCC"}
@@ -1 +1 @@
1
- {"version":3,"file":"outdoor-silent-mode.feature.d.ts","sourceRoot":"","sources":["../../../../src/features/modes/outdoor-silent-mode.feature.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,qBAAa,wBAAyB,SAAQ,WAAW;IACvD,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,WAAW,IAAI,OAAO;IAMhB,SAAS,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAUzC,SAAS,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CAK3D"}
1
+ {"version":3,"file":"outdoor-silent-mode.feature.d.ts","sourceRoot":"","sources":["../../../../src/features/modes/outdoor-silent-mode.feature.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,qBAAa,wBAAyB,SAAQ,WAAW;IACvD,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,WAAW,IAAI,OAAO;IAShB,SAAS,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAUzC,SAAS,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CAK3D"}
@@ -19,9 +19,12 @@ class OutdoorSilentModeFeature extends base_feature_1.BaseFeature {
19
19
  return 'showOutdoorSilentMode';
20
20
  }
21
21
  isSupported() {
22
+ // device.getData() returns { value: undefined } when the characteristic is missing,
23
+ // so Boolean(data) is always true. Check the inner value to detect real support.
22
24
  const outdoorSilentMode = this.getData('outdoorSilentMode');
23
- this.log.debug(`[${this.name}] hasOutdoorSilentModeFeature: ${Boolean(outdoorSilentMode)}`);
24
- return Boolean(outdoorSilentMode);
25
+ const supported = outdoorSilentMode?.value !== undefined;
26
+ this.log.debug(`[${this.name}] hasOutdoorSilentModeFeature: ${supported}`);
27
+ return supported;
25
28
  }
26
29
  async handleGet() {
27
30
  const data = this.getData('outdoorSilentMode');
@@ -1 +1 @@
1
- {"version":3,"file":"outdoor-silent-mode.feature.js","sourceRoot":"","sources":["../../../../src/features/modes/outdoor-silent-mode.feature.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,kDAA8C;AAC9C,uCAAuD;AAEvD,MAAa,wBAAyB,SAAQ,0BAAW;IACvD,IAAI,WAAW;QACb,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAED,WAAW;QACT,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAC5D,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,kCAAkC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QAC5F,OAAO,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAkC,CAAC;QAChF,MAAM,IAAI,GAAG,IAAI,EAAE,KAAK,KAAK,gCAAwB,CAAC,EAAE,CAAC;QACzD,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,IAAI,IAAI,CAAC,IAAI,4BAA4B,IAAI,IAAI;YAC3C,gBAAgB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,CACvE,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAA0B;QACxC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,+BAA+B,KAAK,EAAE,CAAC,CAAC;QACpE,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,gCAAwB,CAAC,EAAE,CAAC,CAAC,CAAC,gCAAwB,CAAC,GAAG,CAAC;QAChF,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;CACF;AAlCD,4DAkCC"}
1
+ {"version":3,"file":"outdoor-silent-mode.feature.js","sourceRoot":"","sources":["../../../../src/features/modes/outdoor-silent-mode.feature.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,kDAA8C;AAC9C,uCAAuD;AAEvD,MAAa,wBAAyB,SAAQ,0BAAW;IACvD,IAAI,WAAW;QACb,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAED,WAAW;QACT,oFAAoF;QACpF,iFAAiF;QACjF,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAoC,CAAC;QAC/F,MAAM,SAAS,GAAG,iBAAiB,EAAE,KAAK,KAAK,SAAS,CAAC;QACzD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,kCAAkC,SAAS,EAAE,CAAC,CAAC;QAC3E,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAkC,CAAC;QAChF,MAAM,IAAI,GAAG,IAAI,EAAE,KAAK,KAAK,gCAAwB,CAAC,EAAE,CAAC;QACzD,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,IAAI,IAAI,CAAC,IAAI,4BAA4B,IAAI,IAAI;YAC3C,gBAAgB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,CACvE,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAA0B;QACxC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,+BAA+B,KAAK,EAAE,CAAC,CAAC;QACpE,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,gCAAwB,CAAC,EAAE,CAAC,CAAC,CAAC,gCAAwB,CAAC,GAAG,CAAC;QAChF,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;CACF;AArCD,4DAqCC"}
@@ -1 +1 @@
1
- {"version":3,"file":"powerful-mode.feature.d.ts","sourceRoot":"","sources":["../../../../src/features/modes/powerful-mode.feature.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,qBAAa,mBAAoB,SAAQ,WAAW;IAClD,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,WAAW,IAAI,OAAO;IAMhB,SAAS,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAUzC,SAAS,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CAK3D"}
1
+ {"version":3,"file":"powerful-mode.feature.d.ts","sourceRoot":"","sources":["../../../../src/features/modes/powerful-mode.feature.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,qBAAa,mBAAoB,SAAQ,WAAW;IAClD,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,WAAW,IAAI,OAAO;IAShB,SAAS,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAUzC,SAAS,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CAK3D"}
@@ -19,9 +19,12 @@ class PowerfulModeFeature extends base_feature_1.BaseFeature {
19
19
  return 'showPowerfulMode';
20
20
  }
21
21
  isSupported() {
22
+ // device.getData() returns { value: undefined } when the characteristic is missing,
23
+ // so Boolean(data) is always true. Check the inner value to detect real support.
22
24
  const powerfulMode = this.getData('powerfulMode');
23
- this.log.debug(`[${this.name}] hasPowerfulModeFeature: ${Boolean(powerfulMode)}`);
24
- return Boolean(powerfulMode);
25
+ const supported = powerfulMode?.value !== undefined;
26
+ this.log.debug(`[${this.name}] hasPowerfulModeFeature: ${supported}`);
27
+ return supported;
25
28
  }
26
29
  async handleGet() {
27
30
  const data = this.getData('powerfulMode');
@@ -1 +1 @@
1
- {"version":3,"file":"powerful-mode.feature.js","sourceRoot":"","sources":["../../../../src/features/modes/powerful-mode.feature.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,kDAA8C;AAC9C,uCAAkD;AAElD,MAAa,mBAAoB,SAAQ,0BAAW;IAClD,IAAI,WAAW;QACb,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,WAAW;QACT,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAClD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,6BAA6B,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAClF,OAAO,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAkC,CAAC;QAC3E,MAAM,IAAI,GAAG,IAAI,EAAE,KAAK,KAAK,2BAAmB,CAAC,EAAE,CAAC;QACpD,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,IAAI,IAAI,CAAC,IAAI,uBAAuB,IAAI,IAAI;YACtC,gBAAgB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,CACvE,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAA0B;QACxC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,0BAA0B,KAAK,EAAE,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,2BAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,2BAAmB,CAAC,GAAG,CAAC;QACtE,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;CACF;AAlCD,kDAkCC"}
1
+ {"version":3,"file":"powerful-mode.feature.js","sourceRoot":"","sources":["../../../../src/features/modes/powerful-mode.feature.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,kDAA8C;AAC9C,uCAAkD;AAElD,MAAa,mBAAoB,SAAQ,0BAAW;IAClD,IAAI,WAAW;QACb,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,WAAW;QACT,oFAAoF;QACpF,iFAAiF;QACjF,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAoC,CAAC;QACrF,MAAM,SAAS,GAAG,YAAY,EAAE,KAAK,KAAK,SAAS,CAAC;QACpD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,6BAA6B,SAAS,EAAE,CAAC,CAAC;QACtE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAkC,CAAC;QAC3E,MAAM,IAAI,GAAG,IAAI,EAAE,KAAK,KAAK,2BAAmB,CAAC,EAAE,CAAC;QACpD,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,IAAI,IAAI,CAAC,IAAI,uBAAuB,IAAI,IAAI;YACtC,gBAAgB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,CACvE,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAA0B;QACxC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,0BAA0B,KAAK,EAAE,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,2BAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,2BAAmB,CAAC,GAAG,CAAC;QACtE,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;CACF;AArCD,kDAqCC"}
@@ -1 +1 @@
1
- {"version":3,"file":"streamer-mode.feature.d.ts","sourceRoot":"","sources":["../../../../src/features/modes/streamer-mode.feature.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,qBAAa,mBAAoB,SAAQ,WAAW;IAClD,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,WAAW,IAAI,OAAO;IAMhB,SAAS,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAUzC,SAAS,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CAK3D"}
1
+ {"version":3,"file":"streamer-mode.feature.d.ts","sourceRoot":"","sources":["../../../../src/features/modes/streamer-mode.feature.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,qBAAa,mBAAoB,SAAQ,WAAW;IAClD,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,WAAW,IAAI,OAAO;IAShB,SAAS,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAUzC,SAAS,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CAK3D"}
@@ -19,9 +19,12 @@ class StreamerModeFeature extends base_feature_1.BaseFeature {
19
19
  return 'showStreamerMode';
20
20
  }
21
21
  isSupported() {
22
+ // device.getData() returns { value: undefined } when the characteristic is missing,
23
+ // so Boolean(data) is always true. Check the inner value to detect real support.
22
24
  const streamerMode = this.getData('streamerMode');
23
- this.log.debug(`[${this.name}] hasStreamerModeFeature: ${Boolean(streamerMode)}`);
24
- return Boolean(streamerMode);
25
+ const supported = streamerMode?.value !== undefined;
26
+ this.log.debug(`[${this.name}] hasStreamerModeFeature: ${supported}`);
27
+ return supported;
25
28
  }
26
29
  async handleGet() {
27
30
  const data = this.getData('streamerMode');
@@ -1 +1 @@
1
- {"version":3,"file":"streamer-mode.feature.js","sourceRoot":"","sources":["../../../../src/features/modes/streamer-mode.feature.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,kDAA8C;AAC9C,uCAAkD;AAElD,MAAa,mBAAoB,SAAQ,0BAAW;IAClD,IAAI,WAAW;QACb,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,WAAW;QACT,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAClD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,6BAA6B,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAClF,OAAO,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAkC,CAAC;QAC3E,MAAM,IAAI,GAAG,IAAI,EAAE,KAAK,KAAK,2BAAmB,CAAC,EAAE,CAAC;QACpD,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,IAAI,IAAI,CAAC,IAAI,uBAAuB,IAAI,IAAI;YACtC,gBAAgB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,CACvE,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAA0B;QACxC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,0BAA0B,KAAK,EAAE,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,2BAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,2BAAmB,CAAC,GAAG,CAAC;QACtE,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;CACF;AAlCD,kDAkCC"}
1
+ {"version":3,"file":"streamer-mode.feature.js","sourceRoot":"","sources":["../../../../src/features/modes/streamer-mode.feature.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,kDAA8C;AAC9C,uCAAkD;AAElD,MAAa,mBAAoB,SAAQ,0BAAW;IAClD,IAAI,WAAW;QACb,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,WAAW;QACT,oFAAoF;QACpF,iFAAiF;QACjF,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAoC,CAAC;QACrF,MAAM,SAAS,GAAG,YAAY,EAAE,KAAK,KAAK,SAAS,CAAC;QACpD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,6BAA6B,SAAS,EAAE,CAAC,CAAC;QACtE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAkC,CAAC;QAC3E,MAAM,IAAI,GAAG,IAAI,EAAE,KAAK,KAAK,2BAAmB,CAAC,EAAE,CAAC;QACpD,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,IAAI,IAAI,CAAC,IAAI,uBAAuB,IAAI,IAAI;YACtC,gBAAgB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,CACvE,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAA0B;QACxC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,0BAA0B,KAAK,EAAE,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,2BAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,2BAAmB,CAAC,GAAG,CAAC;QACtE,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;CACF;AArCD,kDAqCC"}
@@ -1 +1 @@
1
- {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/platform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AASjI,OAAO,KAAK,EAAE,iBAAiB,EAA0B,MAAM,OAAO,CAAC;AACvE,OAAO,EAAmB,qBAAqB,EAAE,MAAM,OAAO,CAAC;AAW/D,MAAM,MAAM,2BAA2B,GAAG;IACtC,MAAM,EAAE,iBAAiB,CAAC;CAC7B,CAAC;AAEF,qBAAa,mBAAoB,YAAW,qBAAqB;aAkBzC,GAAG,EAAE,MAAM;aACX,MAAM,EAAE,cAAc;aACtB,GAAG,EAAE,GAAG;IAnB9B,SAAgB,OAAO,EAAE,OAAO,OAAO,CAAC;IACxC,SAAgB,cAAc,EAAE,OAAO,cAAc,CAAC;IAEtD,SAAgB,WAAW,EAAE,iBAAiB,CAAC,2BAA2B,CAAC,EAAE,CAAM;IAEnF,SAAgB,WAAW,EAAE,MAAM,CAAM;IAClC,UAAU,EAAE,qBAAqB,GAAG,SAAS,CAAC;IAErD,SAAgB,mBAAmB,EAAE,MAAM,CAAC;IAC5C,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,kBAAkB,CAA6B;IACvD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoC;IAC7D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiC;gBAG3C,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,GAAG;IA0KvB,kBAAkB,CAAC,SAAS,EAAE,iBAAiB;YAKxC,eAAe;IAgB7B,OAAO,CAAC,aAAa;IAqDrB,OAAO,CAAC,oBAAoB;IAQ5B,sBAAsB,CAAC,SAAS,EAAE,iBAAiB,CAAC,2BAA2B,CAAC,EAAE,QAAQ,EAAE,MAAM,IAAI;YAIxF,aAAa;IAW3B,kBAAkB,CAAC,KAAK,GAAE,MAAmF;IAsB7G,OAAO,CAAC,0BAA0B;YAWpB,eAAe;IAc7B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,wBAAwB;IAWhC,OAAO,CAAC,mBAAmB;IAU3B;;SAEK;IACL,OAAO,CAAC,2BAA2B;CAuBpC"}
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/platform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AASjI,OAAO,KAAK,EAAE,iBAAiB,EAA0B,MAAM,OAAO,CAAC;AACvE,OAAO,EAAmB,qBAAqB,EAAE,MAAM,OAAO,CAAC;AAW/D,MAAM,MAAM,2BAA2B,GAAG;IACtC,MAAM,EAAE,iBAAiB,CAAC;CAC7B,CAAC;AAEF,qBAAa,mBAAoB,YAAW,qBAAqB;aAkBzC,GAAG,EAAE,MAAM;aACX,MAAM,EAAE,cAAc;aACtB,GAAG,EAAE,GAAG;IAnB9B,SAAgB,OAAO,EAAE,OAAO,OAAO,CAAC;IACxC,SAAgB,cAAc,EAAE,OAAO,cAAc,CAAC;IAEtD,SAAgB,WAAW,EAAE,iBAAiB,CAAC,2BAA2B,CAAC,EAAE,CAAM;IAEnF,SAAgB,WAAW,EAAE,MAAM,CAAM;IAClC,UAAU,EAAE,qBAAqB,GAAG,SAAS,CAAC;IAErD,SAAgB,mBAAmB,EAAE,MAAM,CAAC;IAC5C,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,kBAAkB,CAA6B;IACvD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoC;IAC7D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiC;gBAG3C,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,GAAG;IA0KvB,kBAAkB,CAAC,SAAS,EAAE,iBAAiB;YAKxC,eAAe;IAgB7B,OAAO,CAAC,aAAa;IAsDrB,OAAO,CAAC,oBAAoB;IAQ5B,sBAAsB,CAAC,SAAS,EAAE,iBAAiB,CAAC,2BAA2B,CAAC,EAAE,QAAQ,EAAE,MAAM,IAAI;YAIxF,aAAa;IAW3B,kBAAkB,CAAC,KAAK,GAAE,MAAmF;IAsB7G,OAAO,CAAC,0BAA0B;YAWpB,eAAe;IAc7B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,wBAAwB;IAWhC,OAAO,CAAC,mBAAmB;IAU3B;;SAEK;IACL,OAAO,CAAC,2BAA2B;CAuBpC"}
@@ -204,19 +204,20 @@ class DaikinCloudPlatform {
204
204
  createDevices(devices) {
205
205
  for (const device of devices) {
206
206
  try {
207
- const uuid = this.api.hap.uuid.generate(device.getId());
207
+ const deviceId = device.getId();
208
+ const uuid = this.api.hap.uuid.generate(deviceId);
208
209
  const deviceModel = device.getDescription().deviceModel;
209
210
  const existingAccessory = this.accessories.find(accessory => accessory.UUID === uuid);
210
211
  this.log.debug('Create Device', deviceModel, JSON.stringify(api_1.DaikinCloudRepo.maskSensitiveCloudDeviceData(device.desc), null, 4));
211
- if (this.isExcludedDevice(this.config.excludedDevicesByDeviceId, uuid)) {
212
- this.log.info(`[Platform] Device with id ${uuid} is excluded, don't add accessory`);
212
+ if (this.isExcludedDevice(this.config.excludedDevicesByDeviceId, deviceId)) {
213
+ this.log.info(`[Platform] Device ${deviceModel} (id: ${deviceId}) is excluded, don't add accessory`);
213
214
  if (existingAccessory) {
214
215
  this.api.unregisterPlatformAccessories(settings_1.PLUGIN_NAME, settings_1.PLATFORM_NAME, [existingAccessory]);
215
216
  }
216
217
  continue;
217
218
  }
218
219
  if (existingAccessory) {
219
- this.log.info('[Platform] Restoring existing accessory from cache:', existingAccessory.displayName);
220
+ this.log.info(`[Platform] Restoring existing accessory from cache: ${existingAccessory.displayName} (id: ${deviceId})`);
220
221
  // Remove old event listener before reassigning device
221
222
  this.removeDeviceListener(existingAccessory);
222
223
  existingAccessory.context.device = device;
@@ -228,7 +229,7 @@ class DaikinCloudPlatform {
228
229
  const climateControlEmbeddedId = device.desc.managementPoints.find(mp => mp.managementPointType === 'climateControl')?.embeddedId || 'climateControl';
229
230
  const nameData = device.getData(climateControlEmbeddedId, 'name', undefined).value;
230
231
  const displayName = strings_1.StringUtils.isEmpty(nameData) ? deviceModel : nameData;
231
- this.log.info('[Platform] Adding new accessory, deviceModel:', displayName);
232
+ this.log.info(`[Platform] Adding new accessory: ${displayName} (id: ${deviceId})`);
232
233
  const accessory = new this.api.platformAccessory(displayName, uuid);
233
234
  accessory.context.device = device;
234
235
  const { profile } = this.accessoryFactory.createAccessory(accessory);
@@ -310,7 +311,7 @@ class DaikinCloudPlatform {
310
311
  }
311
312
  }
312
313
  isExcludedDevice(excludedDevicesByDeviceId, deviceId) {
313
- return typeof excludedDevicesByDeviceId !== 'undefined' && excludedDevicesByDeviceId.includes(deviceId);
314
+ return Array.isArray(excludedDevicesByDeviceId) && excludedDevicesByDeviceId.includes(deviceId);
314
315
  }
315
316
  getPrivacyFriendlyConfig(config) {
316
317
  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":"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"}
@@ -33,6 +33,19 @@ export declare class ClimateControlService {
33
33
  handleRotationSpeedSet(value: CharacteristicValue): Promise<void>;
34
34
  handleHeatingThresholdTemperatureGet(): Promise<CharacteristicValue>;
35
35
  handleHeatingThresholdTemperatureSet(value: CharacteristicValue): Promise<void>;
36
+ /**
37
+ * Daikin's auto operationMode uses a SINGLE setpoint, not a range like
38
+ * HomeKit's HeaterCooler (heating threshold + cooling threshold). Without
39
+ * this sync the Daikin app keeps showing whatever auto setpoint was there
40
+ * when the device was last in auto mode, regardless of what the user picks
41
+ * in HomeKit. Mirror the midpoint of the current heating/cooling thresholds
42
+ * to /operationModes/auto/setpoints/roomTemperature whenever either
43
+ * threshold is set, so the Daikin app and HomeKit stay in sync.
44
+ *
45
+ * No-op when the device doesn't expose an auto setpoint (e.g. devices
46
+ * without an auto operationMode at all).
47
+ */
48
+ private syncAutoSetpointIfSupported;
36
49
  handleTargetHeaterCoolerStateGet(): Promise<CharacteristicValue>;
37
50
  handleTargetHeaterCoolerStateSet(value: CharacteristicValue): Promise<void>;
38
51
  handleSwingModeSet(value: CharacteristicValue): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"climate-control.service.d.ts","sourceRoot":"","sources":["../../../src/services/climate-control.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAW,MAAM,YAAY,CAAC;AAClF,OAAO,KAAK,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EACL,kBAAkB,EAKlB,oBAAoB,EACpB,mBAAmB,EACnB,iCAAiC,EAClC,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAS7C,qBAAa,qBAAqB;IAChC,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC,2BAA2B,CAAC,CAAC;IACnE,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IAEnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAU;IACnC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;gBAGtC,QAAQ,EAAE,mBAAmB,EAC7B,SAAS,EAAE,iBAAiB,CAAC,2BAA2B,CAAC,EACzD,iBAAiB,EAAE,MAAM;IAoF3B;;;;OAIG;YACW,aAAa;IAU3B;;;;;OAKG;IACH,aAAa,IAAI,IAAI;IAuFrB,sCAAsC;IA0BhC,oBAAoB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAMpD,oBAAoB,CAAC,KAAK,EAAE,mBAAmB;IAc/C,2BAA2B,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAU3D,oCAAoC,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAapE,oCAAoC,CAAC,KAAK,EAAE,mBAAmB;IAQ/D,sBAAsB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAMtD,sBAAsB,CAAC,KAAK,EAAE,mBAAmB;IASjD,oCAAoC,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAapE,oCAAoC,CAAC,KAAK,EAAE,mBAAmB;IAQ/D,gCAAgC,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAoBhE,gCAAgC,CAAC,KAAK,EAAE,mBAAmB;IA2B3D,kBAAkB,CAAC,KAAK,EAAE,mBAAmB;IAe7C,kBAAkB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAkBxD,uBAAuB,IAAI,oBAAoB;IAI/C,qBAAqB,IAAI,kBAAkB;IAW3C,eAAe,IAAI,mBAAmB,GAAG,IAAI;IAQ7C,WAAW,CAAC,aAAa,EAAE,oBAAoB,GAAG,iCAAiC;IAuDnF,2BAA2B;IAM3B,6BAA6B;IAM7B,mBAAmB;IAInB,sBAAsB;IAMtB,mBAAmB;IAMnB,sBAAsB;IAMtB,2BAA2B;IAM3B,0BAA0B;IAU1B,gBAAgB,CAAC,aAAa,EAAE,oBAAoB;IAMpD,0BAA0B;IAI1B,8BAA8B;CAG/B"}
1
+ {"version":3,"file":"climate-control.service.d.ts","sourceRoot":"","sources":["../../../src/services/climate-control.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAW,MAAM,YAAY,CAAC;AAClF,OAAO,KAAK,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EACL,kBAAkB,EAKlB,oBAAoB,EACpB,mBAAmB,EACnB,iCAAiC,EAClC,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAS7C,qBAAa,qBAAqB;IAChC,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC,2BAA2B,CAAC,CAAC;IACnE,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IAEnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAU;IACnC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;gBAGtC,QAAQ,EAAE,mBAAmB,EAC7B,SAAS,EAAE,iBAAiB,CAAC,2BAA2B,CAAC,EACzD,iBAAiB,EAAE,MAAM;IAoF3B;;;;OAIG;YACW,aAAa;IAU3B;;;;;OAKG;IACH,aAAa,IAAI,IAAI;IA6FrB,sCAAsC;IAyChC,oBAAoB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAMpD,oBAAoB,CAAC,KAAK,EAAE,mBAAmB;IAc/C,2BAA2B,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAU3D,oCAAoC,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAapE,oCAAoC,CAAC,KAAK,EAAE,mBAAmB;IAS/D,sBAAsB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAatD,sBAAsB,CAAC,KAAK,EAAE,mBAAmB;IA4BjD,oCAAoC,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAapE,oCAAoC,CAAC,KAAK,EAAE,mBAAmB;IASrE;;;;;;;;;;;OAWG;YACW,2BAA2B;IAuDnC,gCAAgC,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAoBhE,gCAAgC,CAAC,KAAK,EAAE,mBAAmB;IA2B3D,kBAAkB,CAAC,KAAK,EAAE,mBAAmB;IAe7C,kBAAkB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAkBxD,uBAAuB,IAAI,oBAAoB;IAI/C,qBAAqB,IAAI,kBAAkB;IAW3C,eAAe,IAAI,mBAAmB,GAAG,IAAI;IAQ7C,WAAW,CAAC,aAAa,EAAE,oBAAoB,GAAG,iCAAiC;IAuDnF,2BAA2B;IAO3B,6BAA6B;IAK7B,mBAAmB;IAInB,sBAAsB;IAMtB,mBAAmB;IAMnB,sBAAsB;IAMtB,2BAA2B;IAM3B,0BAA0B;IAU1B,gBAAgB,CAAC,aAAa,EAAE,oBAAoB;IAMpD,0BAA0B;IAI1B,8BAA8B;CAG/B"}
@@ -156,10 +156,11 @@ class ClimateControlService {
156
156
  this.service.getCharacteristic(this.platform.Characteristic.HeatingThresholdTemperature)
157
157
  .updateValue(typeof heatingTemp === 'number' && isFinite(heatingTemp) ? heatingTemp : constants_1.DEFAULT_ROOM_TEMPERATURE);
158
158
  }
159
- const speed = this.accessory.context.device.getData(this.managementPointId, 'fanControl', `/operationModes/${operationMode}/fanSpeed/modes/fixed`).value;
160
- if (speed !== undefined) {
159
+ const fanSpeedData = this.accessory.context.device.getData(this.managementPointId, 'fanControl', `/operationModes/${operationMode}/fanSpeed/modes/fixed`);
160
+ if (fanSpeedData.value !== undefined) {
161
+ const percent = deviceSpeedToPercent(fanSpeedData.value, fanSpeedData.maxValue);
161
162
  this.service.getCharacteristic(this.platform.Characteristic.RotationSpeed)
162
- .updateValue(typeof speed === 'number' && isFinite(speed) ? speed : 1);
163
+ .updateValue(percent);
163
164
  }
164
165
  if (this.hasSwingModeFeature()) {
165
166
  const verticalSwingMode = this.hasSwingModeVerticalFeature()
@@ -173,6 +174,10 @@ class ClimateControlService {
173
174
  this.service.getCharacteristic(this.platform.Characteristic.SwingMode)
174
175
  .updateValue(swingEnabled ? this.platform.Characteristic.SwingMode.SWING_ENABLED : this.platform.Characteristic.SwingMode.SWING_DISABLED);
175
176
  }
177
+ // Push feature switches (PowerfulMode, EconoMode, etc.) so toggling
178
+ // these from the Daikin app reaches HomeKit on the next WebSocket update
179
+ // instead of waiting for the user to open the Home app.
180
+ this.featureManager.refreshAll();
176
181
  }
177
182
  catch (e) {
178
183
  this.platform.log.debug(`[${this.name}] refreshValues error: ${e instanceof Error ? e.message : e}`);
@@ -182,21 +187,36 @@ class ClimateControlService {
182
187
  if (!this.service) {
183
188
  throw Error('Service not initialized');
184
189
  }
190
+ // getData() returns { value: undefined } when the path is missing — checking the
191
+ // wrapper for truthiness always succeeds, so the characteristic was being added
192
+ // (with undefined min/max/step) even for devices that don't support a fixed fan
193
+ // speed in the current operation mode. Setting it would then fail at the API.
185
194
  const fanControl = this.accessory.context.device.getData(this.managementPointId, 'fanControl', `/operationModes/${this.getCurrentOperationMode()}/fanSpeed/modes/fixed`);
186
- if (fanControl) {
195
+ if (fanControl.value !== undefined) {
196
+ // Daikin units expose a small integer fan-speed scale (typically 1-5 or 1-3).
197
+ // iOS Home renders RotationSpeed as a 0-100% slider regardless of setProps,
198
+ // so we keep the characteristic in percentage space and map both directions:
199
+ // device 5/5 → HomeKit 100% (full bar), device 1/5 → 20%, etc.
200
+ // minStep = 100/maxValue gives the discrete positions that round-trip cleanly.
201
+ //
202
+ // Order matters: setProps FIRST to widen any narrow range left over from a
203
+ // prior session (e.g. an old build that capped at maxValue=5). Otherwise the
204
+ // updateValue below trips HAP's validateUserInput. minValue=0 (not stepPercent)
205
+ // keeps HAP happy when the cached value is below stepPercent — the slider's
206
+ // 0 position is harmless since percentToDeviceSpeed clamps writes up to the
207
+ // device minValue anyway.
187
208
  const rotationChar = this.service.getCharacteristic(this.platform.Characteristic.RotationSpeed);
188
- // Set value within default HomeKit range first to avoid warning when setProps narrows the range
189
- const rotationValue = typeof fanControl.value === 'number' ? fanControl.value : 1;
190
- const clampedRotationValue = Math.max(0, Math.min(100, rotationValue));
191
- rotationChar.updateValue(clampedRotationValue);
209
+ const stepPercent = percentStep(fanControl.maxValue);
210
+ const percent = deviceSpeedToPercent(fanControl.value, fanControl.maxValue);
192
211
  rotationChar
193
212
  .setProps({
194
- minStep: fanControl.stepValue,
195
- minValue: fanControl.minValue,
196
- maxValue: fanControl.maxValue,
213
+ minStep: stepPercent,
214
+ minValue: 0,
215
+ maxValue: 100,
197
216
  })
198
217
  .onGet(this.handleRotationSpeedGet.bind(this))
199
218
  .onSet(this.handleRotationSpeedSet.bind(this));
219
+ rotationChar.updateValue(percent);
200
220
  }
201
221
  else {
202
222
  this.service.removeCharacteristic(this.service.getCharacteristic(this.platform.Characteristic.RotationSpeed));
@@ -240,19 +260,40 @@ class ClimateControlService {
240
260
  this.platform.log.debug(`[${this.name}] SET CoolingThresholdTemperature, temperature to: ${temperature}`);
241
261
  await this.setDeviceData('CoolingThresholdTemperature', async () => {
242
262
  await this.accessory.context.device.setData(this.managementPointId, 'temperatureControl', `/operationModes/${types_1.DaikinOperationModes.COOLING}/setpoints/${this.getSetpoint(types_1.DaikinOperationModes.COOLING)}`, temperature);
263
+ await this.syncAutoSetpointIfSupported({ cooling: temperature });
243
264
  });
244
265
  }
245
266
  async handleRotationSpeedGet() {
246
- const speed = this.accessory.context.device.getData(this.managementPointId, 'fanControl', `/operationModes/${this.getCurrentOperationMode()}/fanSpeed/modes/fixed`).value;
247
- this.platform.log.debug(`[${this.name}] GET RotationSpeed, speed: ${speed}, last update: ${this.accessory.context.device.getLastUpdated()}`);
248
- return typeof speed === 'number' && isFinite(speed) ? speed : 1;
267
+ const fanSpeedData = this.accessory.context.device.getData(this.managementPointId, 'fanControl', `/operationModes/${this.getCurrentOperationMode()}/fanSpeed/modes/fixed`);
268
+ const speed = fanSpeedData.value;
269
+ const percent = typeof speed === 'number' && isFinite(speed)
270
+ ? deviceSpeedToPercent(speed, fanSpeedData.maxValue)
271
+ : percentStep(fanSpeedData.maxValue);
272
+ this.platform.log.debug(`[${this.name}] GET RotationSpeed, device speed: ${speed} → ${percent}%, ` +
273
+ `last update: ${this.accessory.context.device.getLastUpdated()}`);
274
+ return percent;
249
275
  }
250
276
  async handleRotationSpeedSet(value) {
251
- const speed = value;
252
- this.platform.log.debug(`[${this.name}] SET RotationSpeed, speed to: ${speed}`);
277
+ const operationMode = this.getCurrentOperationMode();
278
+ // Skip if the current operation mode doesn't support a fixed fan speed.
279
+ // Without this check, we'd PATCH a non-existent path and the Daikin API would
280
+ // respond with a 422 (visible to the user as "No Response" in HomeKit).
281
+ const fixedFanSpeed = this.accessory.context.device.getData(this.managementPointId, 'fanControl', `/operationModes/${operationMode}/fanSpeed/modes/fixed`);
282
+ if (fixedFanSpeed.value === undefined) {
283
+ this.platform.log.debug(`[${this.name}] SET RotationSpeed skipped — operationMode ${operationMode} does not support fixed fan speed`);
284
+ return;
285
+ }
286
+ const deviceSpeed = percentToDeviceSpeed(value, fixedFanSpeed.minValue, fixedFanSpeed.maxValue);
287
+ this.platform.log.debug(`[${this.name}] SET RotationSpeed, ${value}% → device speed ${deviceSpeed}`);
288
+ const currentMode = this.accessory.context.device.getData(this.managementPointId, 'fanControl', `/operationModes/${operationMode}/fanSpeed/currentMode`);
289
+ const allowedModes = (currentMode.values ?? []);
253
290
  await this.setDeviceData('RotationSpeed', async () => {
254
- await this.accessory.context.device.setData(this.managementPointId, 'fanControl', `/operationModes/${this.getCurrentOperationMode()}/fanSpeed/currentMode`, 'fixed');
255
- await this.accessory.context.device.setData(this.managementPointId, 'fanControl', `/operationModes/${this.getCurrentOperationMode()}/fanSpeed/modes/fixed`, speed);
291
+ // Only switch currentMode to 'fixed' when needed (and when supported). Some
292
+ // operation modes (e.g. dry on some units) restrict currentMode to 'auto' only.
293
+ if (currentMode.value !== types_1.DaikinFanSpeedModes.FIXED && allowedModes.includes(types_1.DaikinFanSpeedModes.FIXED)) {
294
+ await this.accessory.context.device.setData(this.managementPointId, 'fanControl', `/operationModes/${operationMode}/fanSpeed/currentMode`, types_1.DaikinFanSpeedModes.FIXED);
295
+ }
296
+ await this.accessory.context.device.setData(this.managementPointId, 'fanControl', `/operationModes/${operationMode}/fanSpeed/modes/fixed`, deviceSpeed);
256
297
  });
257
298
  }
258
299
  async handleHeatingThresholdTemperatureGet() {
@@ -268,8 +309,60 @@ class ClimateControlService {
268
309
  this.platform.log.debug(`[${this.name}] SET HeatingThresholdTemperature, temperature to: ${temperature}`);
269
310
  await this.setDeviceData('HeatingThresholdTemperature', async () => {
270
311
  await this.accessory.context.device.setData(this.managementPointId, 'temperatureControl', `/operationModes/${types_1.DaikinOperationModes.HEATING}/setpoints/${this.getSetpoint(types_1.DaikinOperationModes.HEATING)}`, temperature);
312
+ await this.syncAutoSetpointIfSupported({ heating: temperature });
271
313
  });
272
314
  }
315
+ /**
316
+ * Daikin's auto operationMode uses a SINGLE setpoint, not a range like
317
+ * HomeKit's HeaterCooler (heating threshold + cooling threshold). Without
318
+ * this sync the Daikin app keeps showing whatever auto setpoint was there
319
+ * when the device was last in auto mode, regardless of what the user picks
320
+ * in HomeKit. Mirror the midpoint of the current heating/cooling thresholds
321
+ * to /operationModes/auto/setpoints/roomTemperature whenever either
322
+ * threshold is set, so the Daikin app and HomeKit stay in sync.
323
+ *
324
+ * No-op when the device doesn't expose an auto setpoint (e.g. devices
325
+ * without an auto operationMode at all).
326
+ */
327
+ async syncAutoSetpointIfSupported(overrides = {}) {
328
+ // Best-effort. Failures here (e.g. getSetpoint throwing for Altherma's
329
+ // weatherDependentHeatingFixedCooling + leavingWaterTemperature combo, or
330
+ // any PATCH error) must not propagate — the primary heating/cooling write
331
+ // already succeeded by this point, and a missing auto-sync just leaves
332
+ // the Daikin app showing a slightly stale auto setpoint.
333
+ try {
334
+ const autoSetpointKey = this.getSetpoint(types_1.DaikinOperationModes.AUTO);
335
+ const autoPath = `/operationModes/${types_1.DaikinOperationModes.AUTO}/setpoints/${autoSetpointKey}`;
336
+ const autoData = this.accessory.context.device.getData(this.managementPointId, 'temperatureControl', autoPath);
337
+ if (autoData.value === undefined) {
338
+ return;
339
+ }
340
+ const heatingKey = this.getSetpoint(types_1.DaikinOperationModes.HEATING);
341
+ const coolingKey = this.getSetpoint(types_1.DaikinOperationModes.COOLING);
342
+ const heating = overrides.heating ?? this.accessory.context.device.getData(this.managementPointId, 'temperatureControl', `/operationModes/${types_1.DaikinOperationModes.HEATING}/setpoints/${heatingKey}`).value;
343
+ const cooling = overrides.cooling ?? this.accessory.context.device.getData(this.managementPointId, 'temperatureControl', `/operationModes/${types_1.DaikinOperationModes.COOLING}/setpoints/${coolingKey}`).value;
344
+ if (typeof heating !== 'number' || typeof cooling !== 'number') {
345
+ return;
346
+ }
347
+ // Midpoint rounded to nearest 0.5° — matches the step used by the
348
+ // heating/cooling setters above, and the stepValue Daikin returns.
349
+ let midpoint = Math.round(heating + cooling) / 2;
350
+ if (typeof autoData.minValue === 'number') {
351
+ midpoint = Math.max(autoData.minValue, midpoint);
352
+ }
353
+ if (typeof autoData.maxValue === 'number') {
354
+ midpoint = Math.min(autoData.maxValue, midpoint);
355
+ }
356
+ if (typeof autoData.value === 'number' && Math.abs(autoData.value - midpoint) < 0.01) {
357
+ return;
358
+ }
359
+ this.platform.log.debug(`[${this.name}] SYNC AutoSetpoint, heating=${heating} cooling=${cooling} → auto=${midpoint}`);
360
+ await this.accessory.context.device.setData(this.managementPointId, 'temperatureControl', autoPath, midpoint);
361
+ }
362
+ catch (e) {
363
+ this.platform.log.debug(`[${this.name}] AutoSetpoint sync skipped: ${e instanceof Error ? e.message : e}`);
364
+ }
365
+ }
273
366
  async handleTargetHeaterCoolerStateGet() {
274
367
  const operationMode = this.getCurrentOperationMode();
275
368
  const lastUpdate = this.accessory.context.device.getLastUpdated();
@@ -400,17 +493,17 @@ class ClimateControlService {
400
493
  }
401
494
  }
402
495
  hasSwingModeVerticalFeature() {
496
+ // getData() returns { value: undefined } when the path is missing — checking the
497
+ // wrapper for truthiness always succeeds. We need to confirm the value itself is set.
403
498
  const verticalSwing = this.accessory.context.device.getData(this.managementPointId, 'fanControl', `/operationModes/${this.getCurrentOperationMode()}/fanDirection/vertical/currentMode`);
404
- this.platform.log.debug(`[${this.name}] hasSwingModeFeature, verticalSwing: ${Boolean(verticalSwing)}`);
405
- return Boolean(verticalSwing);
499
+ return verticalSwing.value !== undefined;
406
500
  }
407
501
  hasSwingModeHorizontalFeature() {
408
502
  const horizontalSwing = this.accessory.context.device.getData(this.managementPointId, 'fanControl', `/operationModes/${this.getCurrentOperationMode()}/fanDirection/horizontal/currentMode`);
409
- this.platform.log.debug(`[${this.name}] hasSwingModeFeature, horizontalSwing: ${Boolean(horizontalSwing)}`);
410
- return Boolean(horizontalSwing);
503
+ return horizontalSwing.value !== undefined;
411
504
  }
412
505
  hasSwingModeFeature() {
413
- return Boolean(this.hasSwingModeVerticalFeature() || this.hasSwingModeHorizontalFeature());
506
+ return this.hasSwingModeVerticalFeature() || this.hasSwingModeHorizontalFeature();
414
507
  }
415
508
  hasPowerfulModeFeature() {
416
509
  const powerfulMode = this.accessory.context.device.getData(this.managementPointId, 'powerfulMode', undefined);
@@ -454,4 +547,22 @@ class ClimateControlService {
454
547
  }
455
548
  }
456
549
  exports.ClimateControlService = ClimateControlService;
550
+ // Daikin's fan speed scale (e.g. 1..5) → HomeKit's 0..100% percentage slider.
551
+ // Pulled to module scope so refreshValues / addOrUpdate / get / set use the
552
+ // same math and the same fallback for missing maxValue.
553
+ const DEFAULT_FAN_MAX = 5;
554
+ function percentStep(maxValue) {
555
+ return 100 / (maxValue && maxValue > 0 ? maxValue : DEFAULT_FAN_MAX);
556
+ }
557
+ function deviceSpeedToPercent(speed, maxValue) {
558
+ const max = maxValue && maxValue > 0 ? maxValue : DEFAULT_FAN_MAX;
559
+ const percent = Math.round((speed / max) * 100);
560
+ return Math.max(0, Math.min(100, percent));
561
+ }
562
+ function percentToDeviceSpeed(percent, minValue, maxValue) {
563
+ const min = minValue && minValue > 0 ? minValue : 1;
564
+ const max = maxValue && maxValue > 0 ? maxValue : DEFAULT_FAN_MAX;
565
+ const raw = Math.round((percent / 100) * max);
566
+ return Math.max(min, Math.min(max, raw));
567
+ }
457
568
  //# sourceMappingURL=climate-control.service.js.map