@mp-consulting/homebridge-daikin-cloud 1.5.2 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (211) hide show
  1. package/README.md +40 -27
  2. package/config.schema.json +66 -12
  3. package/dist/src/accessories/air-conditioning-accessory.js +1 -1
  4. package/dist/src/accessories/air-conditioning-accessory.js.map +1 -1
  5. package/dist/src/accessories/altherma-accessory.js +1 -1
  6. package/dist/src/accessories/altherma-accessory.js.map +1 -1
  7. package/dist/src/accessories/base-accessory.d.ts +5 -4
  8. package/dist/src/accessories/base-accessory.d.ts.map +1 -1
  9. package/dist/src/accessories/base-accessory.js +9 -10
  10. package/dist/src/accessories/base-accessory.js.map +1 -1
  11. package/dist/src/api/daikin-api.d.ts +22 -6
  12. package/dist/src/api/daikin-api.d.ts.map +1 -1
  13. package/dist/src/api/daikin-api.js +49 -23
  14. package/dist/src/api/daikin-api.js.map +1 -1
  15. package/dist/src/api/daikin-controller.d.ts +4 -48
  16. package/dist/src/api/daikin-controller.d.ts.map +1 -1
  17. package/dist/src/api/daikin-controller.js +14 -84
  18. package/dist/src/api/daikin-controller.js.map +1 -1
  19. package/dist/src/api/daikin-mobile-oauth.d.ts +11 -40
  20. package/dist/src/api/daikin-mobile-oauth.d.ts.map +1 -1
  21. package/dist/src/api/daikin-mobile-oauth.js +36 -160
  22. package/dist/src/api/daikin-mobile-oauth.js.map +1 -1
  23. package/dist/src/api/daikin-oauth.d.ts +10 -37
  24. package/dist/src/api/daikin-oauth.d.ts.map +1 -1
  25. package/dist/src/api/daikin-oauth.js +36 -166
  26. package/dist/src/api/daikin-oauth.js.map +1 -1
  27. package/dist/src/api/daikin-schemas.d.ts +20 -22
  28. package/dist/src/api/daikin-schemas.d.ts.map +1 -1
  29. package/dist/src/api/daikin-schemas.js +17 -49
  30. package/dist/src/api/daikin-schemas.js.map +1 -1
  31. package/dist/src/api/daikin-types.d.ts +11 -23
  32. package/dist/src/api/daikin-types.d.ts.map +1 -1
  33. package/dist/src/api/daikin-types.js.map +1 -1
  34. package/dist/src/api/daikin-websocket.d.ts +4 -5
  35. package/dist/src/api/daikin-websocket.d.ts.map +1 -1
  36. package/dist/src/api/daikin-websocket.js +62 -34
  37. package/dist/src/api/daikin-websocket.js.map +1 -1
  38. package/dist/src/api/http-defaults.d.ts +3 -2
  39. package/dist/src/api/http-defaults.d.ts.map +1 -1
  40. package/dist/src/api/http-defaults.js.map +1 -1
  41. package/dist/src/api/http-transport.d.ts +14 -2
  42. package/dist/src/api/http-transport.d.ts.map +1 -1
  43. package/dist/src/api/http-transport.js +32 -9
  44. package/dist/src/api/http-transport.js.map +1 -1
  45. package/dist/src/api/token-client.d.ts +82 -0
  46. package/dist/src/api/token-client.d.ts.map +1 -0
  47. package/dist/src/api/token-client.js +188 -0
  48. package/dist/src/api/token-client.js.map +1 -0
  49. package/dist/src/api/token-storage.d.ts +6 -0
  50. package/dist/src/api/token-storage.d.ts.map +1 -1
  51. package/dist/src/api/token-storage.js +27 -1
  52. package/dist/src/api/token-storage.js.map +1 -1
  53. package/dist/src/config/config-manager.d.ts +69 -125
  54. package/dist/src/config/config-manager.d.ts.map +1 -1
  55. package/dist/src/config/config-manager.js +288 -225
  56. package/dist/src/config/config-manager.js.map +1 -1
  57. package/dist/src/constants/api.constants.d.ts +6 -0
  58. package/dist/src/constants/api.constants.d.ts.map +1 -1
  59. package/dist/src/constants/api.constants.js +7 -1
  60. package/dist/src/constants/api.constants.js.map +1 -1
  61. package/dist/src/constants/auth.constants.d.ts +11 -0
  62. package/dist/src/constants/auth.constants.d.ts.map +1 -1
  63. package/dist/src/constants/auth.constants.js +12 -1
  64. package/dist/src/constants/auth.constants.js.map +1 -1
  65. package/dist/src/constants/device.constants.d.ts +1 -7
  66. package/dist/src/constants/device.constants.d.ts.map +1 -1
  67. package/dist/src/constants/device.constants.js +2 -11
  68. package/dist/src/constants/device.constants.js.map +1 -1
  69. package/dist/src/constants/time.constants.d.ts +0 -2
  70. package/dist/src/constants/time.constants.d.ts.map +1 -1
  71. package/dist/src/constants/time.constants.js +1 -3
  72. package/dist/src/constants/time.constants.js.map +1 -1
  73. package/dist/src/device/accessory-factory.d.ts +0 -5
  74. package/dist/src/device/accessory-factory.d.ts.map +1 -1
  75. package/dist/src/device/accessory-factory.js +0 -7
  76. package/dist/src/device/accessory-factory.js.map +1 -1
  77. package/dist/src/device/capability-detector.d.ts +9 -1
  78. package/dist/src/device/capability-detector.d.ts.map +1 -1
  79. package/dist/src/device/capability-detector.js +32 -28
  80. package/dist/src/device/capability-detector.js.map +1 -1
  81. package/dist/src/device/capability-docs.d.ts.map +1 -1
  82. package/dist/src/device/capability-docs.js +3 -0
  83. package/dist/src/device/capability-docs.js.map +1 -1
  84. package/dist/src/device/data-paths.d.ts +18 -0
  85. package/dist/src/device/data-paths.d.ts.map +1 -0
  86. package/dist/src/device/data-paths.js +20 -0
  87. package/dist/src/device/data-paths.js.map +1 -0
  88. package/dist/src/device/profiles/device-profile.d.ts +0 -5
  89. package/dist/src/device/profiles/device-profile.d.ts.map +1 -1
  90. package/dist/src/device/profiles/device-profile.js +0 -21
  91. package/dist/src/device/profiles/device-profile.js.map +1 -1
  92. package/dist/src/features/base-feature.d.ts +53 -9
  93. package/dist/src/features/base-feature.d.ts.map +1 -1
  94. package/dist/src/features/base-feature.js +93 -40
  95. package/dist/src/features/base-feature.js.map +1 -1
  96. package/dist/src/features/feature-manager.d.ts +27 -15
  97. package/dist/src/features/feature-manager.d.ts.map +1 -1
  98. package/dist/src/features/feature-manager.js +27 -24
  99. package/dist/src/features/feature-manager.js.map +1 -1
  100. package/dist/src/features/index.d.ts +1 -0
  101. package/dist/src/features/index.d.ts.map +1 -1
  102. package/dist/src/features/index.js +1 -0
  103. package/dist/src/features/index.js.map +1 -1
  104. package/dist/src/features/modes/auto-fan-mode.feature.d.ts +16 -10
  105. package/dist/src/features/modes/auto-fan-mode.feature.d.ts.map +1 -1
  106. package/dist/src/features/modes/auto-fan-mode.feature.js +16 -40
  107. package/dist/src/features/modes/auto-fan-mode.feature.js.map +1 -1
  108. package/dist/src/features/modes/dry-operation-mode.feature.d.ts +12 -9
  109. package/dist/src/features/modes/dry-operation-mode.feature.d.ts.map +1 -1
  110. package/dist/src/features/modes/dry-operation-mode.feature.js +11 -30
  111. package/dist/src/features/modes/dry-operation-mode.feature.js.map +1 -1
  112. package/dist/src/features/modes/econo-mode.feature.d.ts +12 -9
  113. package/dist/src/features/modes/econo-mode.feature.d.ts.map +1 -1
  114. package/dist/src/features/modes/econo-mode.feature.js +11 -31
  115. package/dist/src/features/modes/econo-mode.feature.js.map +1 -1
  116. package/dist/src/features/modes/fan-only-operation-mode.feature.d.ts +12 -9
  117. package/dist/src/features/modes/fan-only-operation-mode.feature.d.ts.map +1 -1
  118. package/dist/src/features/modes/fan-only-operation-mode.feature.js +11 -30
  119. package/dist/src/features/modes/fan-only-operation-mode.feature.js.map +1 -1
  120. package/dist/src/features/modes/firmware-update.feature.d.ts +7 -6
  121. package/dist/src/features/modes/firmware-update.feature.d.ts.map +1 -1
  122. package/dist/src/features/modes/firmware-update.feature.js +15 -22
  123. package/dist/src/features/modes/firmware-update.feature.js.map +1 -1
  124. package/dist/src/features/modes/holiday-mode.feature.d.ts +2 -1
  125. package/dist/src/features/modes/holiday-mode.feature.d.ts.map +1 -1
  126. package/dist/src/features/modes/holiday-mode.feature.js +5 -15
  127. package/dist/src/features/modes/holiday-mode.feature.js.map +1 -1
  128. package/dist/src/features/modes/indoor-silent-mode.feature.d.ts +15 -12
  129. package/dist/src/features/modes/indoor-silent-mode.feature.d.ts.map +1 -1
  130. package/dist/src/features/modes/indoor-silent-mode.feature.js +15 -39
  131. package/dist/src/features/modes/indoor-silent-mode.feature.js.map +1 -1
  132. package/dist/src/features/modes/oscillation-mode.feature.d.ts +5 -6
  133. package/dist/src/features/modes/oscillation-mode.feature.d.ts.map +1 -1
  134. package/dist/src/features/modes/oscillation-mode.feature.js +14 -36
  135. package/dist/src/features/modes/oscillation-mode.feature.js.map +1 -1
  136. package/dist/src/features/modes/outdoor-silent-mode.feature.d.ts +12 -9
  137. package/dist/src/features/modes/outdoor-silent-mode.feature.d.ts.map +1 -1
  138. package/dist/src/features/modes/outdoor-silent-mode.feature.js +11 -31
  139. package/dist/src/features/modes/outdoor-silent-mode.feature.js.map +1 -1
  140. package/dist/src/features/modes/powerful-mode.feature.d.ts +14 -10
  141. package/dist/src/features/modes/powerful-mode.feature.d.ts.map +1 -1
  142. package/dist/src/features/modes/powerful-mode.feature.js +13 -32
  143. package/dist/src/features/modes/powerful-mode.feature.js.map +1 -1
  144. package/dist/src/features/modes/streamer-mode.feature.d.ts +12 -9
  145. package/dist/src/features/modes/streamer-mode.feature.d.ts.map +1 -1
  146. package/dist/src/features/modes/streamer-mode.feature.js +11 -31
  147. package/dist/src/features/modes/streamer-mode.feature.js.map +1 -1
  148. package/dist/src/features/on-off-data-point-feature.d.ts +43 -0
  149. package/dist/src/features/on-off-data-point-feature.d.ts.map +1 -0
  150. package/dist/src/features/on-off-data-point-feature.js +49 -0
  151. package/dist/src/features/on-off-data-point-feature.js.map +1 -0
  152. package/dist/src/platform.d.ts +56 -9
  153. package/dist/src/platform.d.ts.map +1 -1
  154. package/dist/src/platform.js +248 -128
  155. package/dist/src/platform.js.map +1 -1
  156. package/dist/src/services/climate-control/fan-speed.d.ts +45 -0
  157. package/dist/src/services/climate-control/fan-speed.d.ts.map +1 -0
  158. package/dist/src/services/climate-control/fan-speed.js +104 -0
  159. package/dist/src/services/climate-control/fan-speed.js.map +1 -0
  160. package/dist/src/services/climate-control/separate-fan.service.d.ts +45 -0
  161. package/dist/src/services/climate-control/separate-fan.service.d.ts.map +1 -0
  162. package/dist/src/services/climate-control/separate-fan.service.js +82 -0
  163. package/dist/src/services/climate-control/separate-fan.service.js.map +1 -0
  164. package/dist/src/services/climate-control/setpoint-resolver.d.ts +68 -0
  165. package/dist/src/services/climate-control/setpoint-resolver.d.ts.map +1 -0
  166. package/dist/src/services/climate-control/setpoint-resolver.js +170 -0
  167. package/dist/src/services/climate-control/setpoint-resolver.js.map +1 -0
  168. package/dist/src/services/climate-control/swing-controller.d.ts +28 -0
  169. package/dist/src/services/climate-control/swing-controller.d.ts.map +1 -0
  170. package/dist/src/services/climate-control/swing-controller.js +65 -0
  171. package/dist/src/services/climate-control/swing-controller.js.map +1 -0
  172. package/dist/src/services/climate-control.service.d.ts +39 -48
  173. package/dist/src/services/climate-control.service.d.ts.map +1 -1
  174. package/dist/src/services/climate-control.service.js +223 -554
  175. package/dist/src/services/climate-control.service.js.map +1 -1
  176. package/dist/src/services/hot-water-tank.service.d.ts +17 -8
  177. package/dist/src/services/hot-water-tank.service.d.ts.map +1 -1
  178. package/dist/src/services/hot-water-tank.service.js +102 -157
  179. package/dist/src/services/hot-water-tank.service.js.map +1 -1
  180. package/dist/src/types/daikin-enums.d.ts +0 -5
  181. package/dist/src/types/daikin-enums.d.ts.map +1 -1
  182. package/dist/src/types/daikin-enums.js +1 -7
  183. package/dist/src/types/daikin-enums.js.map +1 -1
  184. package/dist/src/types/device-capabilities.d.ts +1 -0
  185. package/dist/src/types/device-capabilities.d.ts.map +1 -1
  186. package/dist/src/utils/errors.d.ts +9 -0
  187. package/dist/src/utils/errors.d.ts.map +1 -0
  188. package/dist/src/utils/errors.js +25 -0
  189. package/dist/src/utils/errors.js.map +1 -0
  190. package/dist/src/utils/hap-write.d.ts +22 -0
  191. package/dist/src/utils/hap-write.d.ts.map +1 -0
  192. package/dist/src/utils/hap-write.js +33 -0
  193. package/dist/src/utils/hap-write.js.map +1 -0
  194. package/dist/src/utils/sleep.d.ts +5 -0
  195. package/dist/src/utils/sleep.d.ts.map +1 -0
  196. package/dist/src/utils/sleep.js +10 -0
  197. package/dist/src/utils/sleep.js.map +1 -0
  198. package/homebridge-ui/README.md +25 -2
  199. package/homebridge-ui/public/index.html +19 -17
  200. package/homebridge-ui/public/script.js +95 -32
  201. package/homebridge-ui/public/styles.css +109 -0
  202. package/homebridge-ui/server.js +321 -125
  203. package/package.json +2 -3
  204. package/dist/src/utils/log-context.d.ts +0 -105
  205. package/dist/src/utils/log-context.d.ts.map +0 -1
  206. package/dist/src/utils/log-context.js +0 -206
  207. package/dist/src/utils/log-context.js.map +0 -1
  208. package/dist/src/utils/update-mapper.d.ts +0 -59
  209. package/dist/src/utils/update-mapper.d.ts.map +0 -1
  210. package/dist/src/utils/update-mapper.js +0 -192
  211. package/dist/src/utils/update-mapper.js.map +0 -1
@@ -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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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Fan speed mapping and control
3
+ *
4
+ * Daikin units expose a small integer fan-speed scale (typically 1-5 or 1-3),
5
+ * while iOS Home renders RotationSpeed as a 0-100% slider regardless of
6
+ * setProps. These helpers map both directions: device 5/5 → 100%, 1/5 → 20%,
7
+ * and minStep = 100/maxValue gives discrete positions that round-trip cleanly.
8
+ */
9
+ import type { DaikinCloudDevice, DeviceDataPoint } from '../../api';
10
+ export declare const DEFAULT_FAN_MAX = 5;
11
+ /** Slider step (in %) matching one device speed step. */
12
+ export declare function percentStep(maxValue: number | undefined): number;
13
+ export declare function deviceSpeedToPercent(speed: number, maxValue: number | undefined): number;
14
+ export declare function percentToDeviceSpeed(percent: number, minValue: number | undefined, maxValue: number | undefined): number;
15
+ export type FanSpeedWritePlan = {
16
+ skip: string;
17
+ } | {
18
+ deviceSpeed: number;
19
+ writes: Array<{
20
+ path: string;
21
+ value: string | number;
22
+ }>;
23
+ };
24
+ /**
25
+ * Reads the fixed fan speed of the current operation mode as a HomeKit
26
+ * percentage and plans the fanControl writes for a RotationSpeed change.
27
+ */
28
+ export declare class FanSpeedController {
29
+ private readonly getDevice;
30
+ private readonly managementPointId;
31
+ private readonly operationMode;
32
+ constructor(getDevice: () => DaikinCloudDevice, managementPointId: string, operationMode: () => string);
33
+ /** fanControl fixed fan speed data point of an operation mode (default: the current one). */
34
+ fixed(operationMode?: string): DeviceDataPoint;
35
+ /** The fixed fan speed as a percentage, only while the device is in 'fixed' fan mode. */
36
+ percentIfFixed(operationMode?: string): number | undefined;
37
+ /** The stored fixed speed as a percentage (one step when unknown). */
38
+ read(): {
39
+ speed: unknown;
40
+ percent: number;
41
+ };
42
+ plan(percent: number): FanSpeedWritePlan;
43
+ private fanControl;
44
+ }
45
+ //# sourceMappingURL=fan-speed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fan-speed.d.ts","sourceRoot":"","sources":["../../../../src/services/climate-control/fan-speed.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAIpE,eAAO,MAAM,eAAe,IAAI,CAAC;AAMjC,yDAAyD;AACzD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAEhE;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAGxF;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,MAAM,CAKR;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC;AAErF;;;GAGG;AACH,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAFb,SAAS,EAAE,MAAM,iBAAiB,EAClC,iBAAiB,EAAE,MAAM,EACzB,aAAa,EAAE,MAAM,MAAM;IAG9C,6FAA6F;IAC7F,KAAK,CAAC,aAAa,SAAuB,GAAG,eAAe;IAI5D,yFAAyF;IACzF,cAAc,CAAC,aAAa,SAAuB,GAAG,MAAM,GAAG,SAAS;IAQxE,sEAAsE;IACtE,IAAI,IAAI;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAS3C,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB;IAmCxC,OAAO,CAAC,UAAU;CAGnB"}
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ /**
3
+ * Fan speed mapping and control
4
+ *
5
+ * Daikin units expose a small integer fan-speed scale (typically 1-5 or 1-3),
6
+ * while iOS Home renders RotationSpeed as a 0-100% slider regardless of
7
+ * setProps. These helpers map both directions: device 5/5 → 100%, 1/5 → 20%,
8
+ * and minStep = 100/maxValue gives discrete positions that round-trip cleanly.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.FanSpeedController = exports.DEFAULT_FAN_MAX = void 0;
12
+ exports.percentStep = percentStep;
13
+ exports.deviceSpeedToPercent = deviceSpeedToPercent;
14
+ exports.percentToDeviceSpeed = percentToDeviceSpeed;
15
+ const data_paths_1 = require("../../device/data-paths");
16
+ const types_1 = require("../../types");
17
+ exports.DEFAULT_FAN_MAX = 5;
18
+ function fanMax(maxValue) {
19
+ return maxValue && maxValue > 0 ? maxValue : exports.DEFAULT_FAN_MAX;
20
+ }
21
+ /** Slider step (in %) matching one device speed step. */
22
+ function percentStep(maxValue) {
23
+ return 100 / fanMax(maxValue);
24
+ }
25
+ function deviceSpeedToPercent(speed, maxValue) {
26
+ const percent = Math.round((speed / fanMax(maxValue)) * 100);
27
+ return Math.max(0, Math.min(100, percent));
28
+ }
29
+ function percentToDeviceSpeed(percent, minValue, maxValue) {
30
+ const min = minValue && minValue > 0 ? minValue : 1;
31
+ const max = fanMax(maxValue);
32
+ const raw = Math.round((percent / 100) * max);
33
+ return Math.max(min, Math.min(max, raw));
34
+ }
35
+ /**
36
+ * Reads the fixed fan speed of the current operation mode as a HomeKit
37
+ * percentage and plans the fanControl writes for a RotationSpeed change.
38
+ */
39
+ class FanSpeedController {
40
+ getDevice;
41
+ managementPointId;
42
+ operationMode;
43
+ constructor(getDevice, managementPointId, operationMode) {
44
+ this.getDevice = getDevice;
45
+ this.managementPointId = managementPointId;
46
+ this.operationMode = operationMode;
47
+ }
48
+ /** fanControl fixed fan speed data point of an operation mode (default: the current one). */
49
+ fixed(operationMode = this.operationMode()) {
50
+ return this.fanControl(data_paths_1.DataPaths.fanSpeedFixed(operationMode));
51
+ }
52
+ /** The fixed fan speed as a percentage, only while the device is in 'fixed' fan mode. */
53
+ percentIfFixed(operationMode = this.operationMode()) {
54
+ if (this.fanControl(data_paths_1.DataPaths.fanSpeedCurrentMode(operationMode)).value !== types_1.DaikinFanSpeedModes.FIXED) {
55
+ return undefined;
56
+ }
57
+ const fixed = this.fixed(operationMode);
58
+ return typeof fixed.value === 'number' ? deviceSpeedToPercent(fixed.value, fixed.maxValue) : undefined;
59
+ }
60
+ /** The stored fixed speed as a percentage (one step when unknown). */
61
+ read() {
62
+ const fixed = this.fixed();
63
+ const speed = fixed.value;
64
+ const percent = typeof speed === 'number' && isFinite(speed)
65
+ ? deviceSpeedToPercent(speed, fixed.maxValue)
66
+ : percentStep(fixed.maxValue);
67
+ return { speed, percent };
68
+ }
69
+ plan(percent) {
70
+ const operationMode = this.operationMode();
71
+ // The current operation mode has no fixed fan speed: PATCHing a
72
+ // non-existent path makes the API answer 422 ("No Response" in HomeKit).
73
+ const fixed = this.fixed(operationMode);
74
+ if (fixed.value === undefined) {
75
+ return { skip: `operationMode ${operationMode} does not support fixed fan speed` };
76
+ }
77
+ const deviceSpeed = percentToDeviceSpeed(percent, fixed.minValue, fixed.maxValue);
78
+ const currentModePath = data_paths_1.DataPaths.fanSpeedCurrentMode(operationMode);
79
+ const currentMode = this.fanControl(currentModePath);
80
+ // In auto/quiet fan mode a speed equal to the stored fixed value is the
81
+ // signature of a HomeKit cache replay (fired when another characteristic,
82
+ // e.g. the setpoint, changes on the same service) — not a user change.
83
+ // Writing it would flip the fan from auto/quiet to fixed at the stored speed.
84
+ if (currentMode.value !== undefined && currentMode.value !== types_1.DaikinFanSpeedModes.FIXED && deviceSpeed === fixed.value) {
85
+ return {
86
+ skip: `device is in "${currentMode.value}" mode and speed ${deviceSpeed} already matches the stored fixed value. ` +
87
+ 'This is likely a HomeKit cache replay, not a user fan-speed change.',
88
+ };
89
+ }
90
+ const writes = [];
91
+ // Only switch currentMode to 'fixed' when needed (and when supported). Some
92
+ // operation modes (e.g. dry on some units) restrict currentMode to 'auto' only.
93
+ if (currentMode.value !== types_1.DaikinFanSpeedModes.FIXED && (currentMode.values ?? []).includes(types_1.DaikinFanSpeedModes.FIXED)) {
94
+ writes.push({ path: currentModePath, value: types_1.DaikinFanSpeedModes.FIXED });
95
+ }
96
+ writes.push({ path: data_paths_1.DataPaths.fanSpeedFixed(operationMode), value: deviceSpeed });
97
+ return { deviceSpeed, writes };
98
+ }
99
+ fanControl(path) {
100
+ return this.getDevice().getData(this.managementPointId, 'fanControl', path);
101
+ }
102
+ }
103
+ exports.FanSpeedController = FanSpeedController;
104
+ //# sourceMappingURL=fan-speed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fan-speed.js","sourceRoot":"","sources":["../../../../src/services/climate-control/fan-speed.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAaH,kCAEC;AAED,oDAGC;AAED,oDASC;AA5BD,wDAAoD;AACpD,uCAAkD;AAErC,QAAA,eAAe,GAAG,CAAC,CAAC;AAEjC,SAAS,MAAM,CAAC,QAA4B;IAC1C,OAAO,QAAQ,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,uBAAe,CAAC;AAC/D,CAAC;AAED,yDAAyD;AACzD,SAAgB,WAAW,CAAC,QAA4B;IACtD,OAAO,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC;AAED,SAAgB,oBAAoB,CAAC,KAAa,EAAE,QAA4B;IAC9E,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;IAC7D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,SAAgB,oBAAoB,CAClC,OAAe,EACf,QAA4B,EAC5B,QAA4B;IAE5B,MAAM,GAAG,GAAG,QAAQ,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC3C,CAAC;AAMD;;;GAGG;AACH,MAAa,kBAAkB;IAEV;IACA;IACA;IAHnB,YACmB,SAAkC,EAClC,iBAAyB,EACzB,aAA2B;QAF3B,cAAS,GAAT,SAAS,CAAyB;QAClC,sBAAiB,GAAjB,iBAAiB,CAAQ;QACzB,kBAAa,GAAb,aAAa,CAAc;IAC3C,CAAC;IAEJ,6FAA6F;IAC7F,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;QACxC,OAAO,IAAI,CAAC,UAAU,CAAC,sBAAS,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,yFAAyF;IACzF,cAAc,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;QACjD,IAAI,IAAI,CAAC,UAAU,CAAC,sBAAS,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,2BAAmB,CAAC,KAAK,EAAE,CAAC;YACtG,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACxC,OAAO,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzG,CAAC;IAED,sEAAsE;IACtE,IAAI;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC1B,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC;YAC1D,CAAC,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC;YAC7C,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC5B,CAAC;IAED,IAAI,CAAC,OAAe;QAClB,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAE3C,gEAAgE;QAChE,yEAAyE;QACzE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACxC,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,EAAE,IAAI,EAAE,iBAAiB,aAAa,mCAAmC,EAAE,CAAC;QACrF,CAAC;QAED,MAAM,WAAW,GAAG,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAClF,MAAM,eAAe,GAAG,sBAAS,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;QACrE,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;QAErD,wEAAwE;QACxE,0EAA0E;QAC1E,uEAAuE;QACvE,8EAA8E;QAC9E,IAAI,WAAW,CAAC,KAAK,KAAK,SAAS,IAAI,WAAW,CAAC,KAAK,KAAK,2BAAmB,CAAC,KAAK,IAAI,WAAW,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;YACtH,OAAO;gBACL,IAAI,EAAE,iBAAiB,WAAW,CAAC,KAAK,oBAAoB,WAAW,2CAA2C;oBAChH,qEAAqE;aACxE,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAoD,EAAE,CAAC;QACnE,4EAA4E;QAC5E,gFAAgF;QAChF,IAAI,WAAW,CAAC,KAAK,KAAK,2BAAmB,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,2BAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;YACtH,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,2BAAmB,CAAC,KAAK,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,sBAAS,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QAClF,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;IACjC,CAAC;IAEO,UAAU,CAAC,IAAY;QAC7B,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;IAC9E,CAAC;CACF;AArED,gDAqEC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Separate Fan service
3
+ *
4
+ * HomeKit hides the HeaterCooler's RotationSpeed slider and SwingMode toggle
5
+ * when the accessory is grouped into a single tile in the Home app — they're
6
+ * only reachable by opening the device directly. Exposing a separate Fanv2
7
+ * service gives the fan speed slider and oscillation toggle their own tile that
8
+ * stays visible even when grouped.
9
+ *
10
+ * Gated behind the `showSeparateFanControl` config option, and only added when
11
+ * the device actually exposes a fixed fan speed and/or a swing mode. The fan's
12
+ * Active characteristic mirrors the unit on/off state, and its RotationSpeed /
13
+ * SwingMode reuse the HeaterCooler's handlers so both services stay in sync.
14
+ */
15
+ import type { CharacteristicValue, PlatformAccessory } from 'homebridge';
16
+ import type { DaikinCloudAccessoryContext, DaikinCloudPlatform } from '../../platform';
17
+ type Getter = () => Promise<CharacteristicValue>;
18
+ type Setter = (value: CharacteristicValue) => Promise<void>;
19
+ export interface SeparateFanHandlers {
20
+ getActive: Getter;
21
+ setActive: Setter;
22
+ getRotationSpeed: Getter;
23
+ setRotationSpeed: Setter;
24
+ getSwing: Getter;
25
+ setSwing: Setter;
26
+ }
27
+ export interface SeparateFanCapabilities {
28
+ /** Fixed fan speed maxValue, or undefined when the device has no fixed fan speed. */
29
+ fanSpeedMax?: number;
30
+ hasFanSpeed: boolean;
31
+ hasSwing: boolean;
32
+ }
33
+ export declare class SeparateFanService {
34
+ private readonly platform;
35
+ private readonly accessory;
36
+ private readonly name;
37
+ private service?;
38
+ constructor(platform: DaikinCloudPlatform, accessory: PlatformAccessory<DaikinCloudAccessoryContext>, name: string);
39
+ setup(capabilities: SeparateFanCapabilities, handlers: SeparateFanHandlers): void;
40
+ updateActive(isOn: boolean): void;
41
+ updateRotationSpeed(percent: number): void;
42
+ updateSwing(swingMode: number): void;
43
+ }
44
+ export {};
45
+ //# sourceMappingURL=separate-fan.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"separate-fan.service.d.ts","sourceRoot":"","sources":["../../../../src/services/climate-control/separate-fan.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAW,MAAM,YAAY,CAAC;AAClF,OAAO,KAAK,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAKvF,KAAK,MAAM,GAAG,MAAM,OAAO,CAAC,mBAAmB,CAAC,CAAC;AACjD,KAAK,MAAM,GAAG,CAAC,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5D,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,kBAAkB;IAI3B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI;IALvB,OAAO,CAAC,OAAO,CAAC,CAAU;gBAGP,QAAQ,EAAE,mBAAmB,EAC7B,SAAS,EAAE,iBAAiB,CAAC,2BAA2B,CAAC,EACzD,IAAI,EAAE,MAAM;IAG/B,KAAK,CAAC,YAAY,EAAE,uBAAuB,EAAE,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IA0CjF,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAKjC,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAO1C,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;CAGrC"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ /**
3
+ * Separate Fan service
4
+ *
5
+ * HomeKit hides the HeaterCooler's RotationSpeed slider and SwingMode toggle
6
+ * when the accessory is grouped into a single tile in the Home app — they're
7
+ * only reachable by opening the device directly. Exposing a separate Fanv2
8
+ * service gives the fan speed slider and oscillation toggle their own tile that
9
+ * stays visible even when grouped.
10
+ *
11
+ * Gated behind the `showSeparateFanControl` config option, and only added when
12
+ * the device actually exposes a fixed fan speed and/or a swing mode. The fan's
13
+ * Active characteristic mirrors the unit on/off state, and its RotationSpeed /
14
+ * SwingMode reuse the HeaterCooler's handlers so both services stay in sync.
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.SeparateFanService = void 0;
18
+ const fan_speed_1 = require("./fan-speed");
19
+ const SUBTYPE = 'separate_fan';
20
+ class SeparateFanService {
21
+ platform;
22
+ accessory;
23
+ name;
24
+ service;
25
+ constructor(platform, accessory, name) {
26
+ this.platform = platform;
27
+ this.accessory = accessory;
28
+ this.name = name;
29
+ }
30
+ setup(capabilities, handlers) {
31
+ const { Characteristic } = this.platform;
32
+ const existing = this.accessory.getServiceById(this.platform.Service.Fanv2, SUBTYPE);
33
+ const enabled = this.platform.configManager.isFeatureEnabled('showSeparateFanControl');
34
+ if (!enabled || (!capabilities.hasFanSpeed && !capabilities.hasSwing)) {
35
+ if (existing) {
36
+ this.platform.log.debug(`[${this.name}] Removing separate Fan service`);
37
+ this.accessory.removeService(existing);
38
+ }
39
+ this.service = undefined;
40
+ return;
41
+ }
42
+ const fanName = `${this.name} Fan`;
43
+ this.platform.log.debug(`[${this.name}] Adding separate Fan service`);
44
+ const service = existing || this.accessory.addService(this.platform.Service.Fanv2, fanName, SUBTYPE);
45
+ this.service = service;
46
+ service.setCharacteristic(Characteristic.Name, fanName);
47
+ service.addOptionalCharacteristic(Characteristic.ConfiguredName);
48
+ service.setCharacteristic(Characteristic.ConfiguredName, fanName);
49
+ service.getCharacteristic(Characteristic.Active)
50
+ .onGet(handlers.getActive)
51
+ .onSet(handlers.setActive);
52
+ if (capabilities.hasFanSpeed) {
53
+ service.getCharacteristic(Characteristic.RotationSpeed)
54
+ .setProps({ minStep: (0, fan_speed_1.percentStep)(capabilities.fanSpeedMax), minValue: 0, maxValue: 100 })
55
+ .onGet(handlers.getRotationSpeed)
56
+ .onSet(handlers.setRotationSpeed);
57
+ }
58
+ else {
59
+ service.removeCharacteristic(service.getCharacteristic(Characteristic.RotationSpeed));
60
+ }
61
+ if (capabilities.hasSwing) {
62
+ service.getCharacteristic(Characteristic.SwingMode)
63
+ .onGet(handlers.getSwing)
64
+ .onSet(handlers.setSwing);
65
+ }
66
+ }
67
+ updateActive(isOn) {
68
+ const { Active } = this.platform.Characteristic;
69
+ this.service?.getCharacteristic(Active).updateValue(isOn ? Active.ACTIVE : Active.INACTIVE);
70
+ }
71
+ updateRotationSpeed(percent) {
72
+ const { RotationSpeed } = this.platform.Characteristic;
73
+ if (this.service?.testCharacteristic(RotationSpeed)) {
74
+ this.service.getCharacteristic(RotationSpeed).updateValue(percent);
75
+ }
76
+ }
77
+ updateSwing(swingMode) {
78
+ this.service?.getCharacteristic(this.platform.Characteristic.SwingMode).updateValue(swingMode);
79
+ }
80
+ }
81
+ exports.SeparateFanService = SeparateFanService;
82
+ //# sourceMappingURL=separate-fan.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"separate-fan.service.js","sourceRoot":"","sources":["../../../../src/services/climate-control/separate-fan.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Setpoint Resolver
3
+ *
4
+ * Works out which temperatureControl setpoint (roomTemperature,
5
+ * leavingWaterOffset, leavingWaterTemperature) applies to an operation mode,
6
+ * and keeps Daikin's single AUTO setpoint in sync with HomeKit's
7
+ * heating/cooling threshold range.
8
+ */
9
+ import type { Logger } from 'homebridge';
10
+ import type { DaikinCloudDevice, DeviceDataPoint } from '../../api';
11
+ import { DaikinControlModes, DaikinOperationModes, DaikinSetpointModes, DaikinTemperatureControlSetpoints } from '../../types';
12
+ export type ThresholdKind = 'heating' | 'cooling';
13
+ export declare class SetpointResolver {
14
+ private readonly getDevice;
15
+ private readonly managementPointId;
16
+ private readonly deviceLabel;
17
+ constructor(getDevice: () => DaikinCloudDevice, managementPointId: string, deviceLabel: string);
18
+ getControlMode(): DaikinControlModes;
19
+ getSetpointMode(): DaikinSetpointModes | null;
20
+ /**
21
+ * Depending on the device settings the temperatureControl is set in different ways.
22
+ * Docs: https://developer.cloud.daikineurope.com/docs/b0dffcaa-7b51-428a-bdff-a7c8a64195c0/supported_features
23
+ * The setpointMode is the most important one, then the controlMode and, for
24
+ * weatherDependentHeatingFixedCooling, also the operation mode. Without a
25
+ * setpointMode (non-Althermas) the controlMode alone decides.
26
+ */
27
+ getSetpoint(operationMode: DaikinOperationModes): DaikinTemperatureControlSetpoints;
28
+ /** temperatureControl path of the setpoint used by an operation mode. */
29
+ path(operationMode: DaikinOperationModes): string;
30
+ /** temperatureControl data point of the setpoint used by an operation mode. */
31
+ read(operationMode: DaikinOperationModes): DeviceDataPoint;
32
+ }
33
+ /**
34
+ * Daikin's auto operationMode uses a SINGLE setpoint, not a range like
35
+ * HomeKit's HeaterCooler (heating threshold + cooling threshold). Without this
36
+ * sync the Daikin app keeps showing whatever auto setpoint was there when the
37
+ * device was last in auto mode. The midpoint of the heating/cooling thresholds
38
+ * is mirrored to /operationModes/auto/setpoints/<setpoint>.
39
+ *
40
+ * When HomeKit changes the range it writes both thresholds in one request and
41
+ * Homebridge runs both onSet handlers concurrently. Threshold writes are
42
+ * therefore tracked: the sync runs once, after the last in-flight threshold
43
+ * write settles, using the final values of both thresholds.
44
+ */
45
+ export declare class AutoSetpointSync {
46
+ private readonly getDevice;
47
+ private readonly managementPointId;
48
+ private readonly resolver;
49
+ private readonly log;
50
+ private readonly name;
51
+ private inFlight;
52
+ private pending;
53
+ constructor(getDevice: () => DaikinCloudDevice, managementPointId: string, resolver: SetpointResolver, log: Logger, name: string);
54
+ /**
55
+ * Run a threshold write, then sync the auto setpoint once no other threshold
56
+ * write is in flight. Rethrows the write's error after the sync bookkeeping.
57
+ */
58
+ writeThreshold(kind: ThresholdKind, value: number, write: () => Promise<void>): Promise<void>;
59
+ /**
60
+ * Best-effort: failures (e.g. getSetpoint throwing for Altherma's
61
+ * weatherDependentHeatingFixedCooling + leavingWaterTemperature combo, or any
62
+ * PATCH error) must not propagate — the threshold write already succeeded,
63
+ * and a missed sync only leaves the Daikin app with a stale auto setpoint.
64
+ * No-op when the device exposes no auto setpoint.
65
+ */
66
+ sync(overrides?: Partial<Record<ThresholdKind, number>>): Promise<void>;
67
+ }
68
+ //# sourceMappingURL=setpoint-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setpoint-resolver.d.ts","sourceRoot":"","sources":["../../../../src/services/climate-control/setpoint-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEpE,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,iCAAiC,EAClC,MAAM,aAAa,CAAC;AAGrB,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,SAAS,CAAC;AAElD,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAFX,SAAS,EAAE,MAAM,iBAAiB,EAClC,iBAAiB,EAAE,MAAM,EACzB,WAAW,EAAE,MAAM;IAGtC,cAAc,IAAI,kBAAkB;IAMpC,eAAe,IAAI,mBAAmB,GAAG,IAAI;IAK7C;;;;;;OAMG;IACH,WAAW,CAAC,aAAa,EAAE,oBAAoB,GAAG,iCAAiC;IAgCnF,yEAAyE;IACzE,IAAI,CAAC,aAAa,EAAE,oBAAoB,GAAG,MAAM;IAIjD,+EAA+E;IAC/E,IAAI,CAAC,aAAa,EAAE,oBAAoB,GAAG,eAAe;CAG3D;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,gBAAgB;IAKzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,IAAI;IARvB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,OAAO,CAA8C;gBAG1C,SAAS,EAAE,MAAM,iBAAiB,EAClC,iBAAiB,EAAE,MAAM,EACzB,QAAQ,EAAE,gBAAgB,EAC1B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM;IAG/B;;;OAGG;IACG,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBnG;;;;;;OAMG;IACG,IAAI,CAAC,SAAS,GAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAiClF"}
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ /**
3
+ * Setpoint Resolver
4
+ *
5
+ * Works out which temperatureControl setpoint (roomTemperature,
6
+ * leavingWaterOffset, leavingWaterTemperature) applies to an operation mode,
7
+ * and keeps Daikin's single AUTO setpoint in sync with HomeKit's
8
+ * heating/cooling threshold range.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.AutoSetpointSync = exports.SetpointResolver = void 0;
12
+ const data_paths_1 = require("../../device/data-paths");
13
+ const types_1 = require("../../types");
14
+ const errors_1 = require("../../utils/errors");
15
+ class SetpointResolver {
16
+ getDevice;
17
+ managementPointId;
18
+ deviceLabel;
19
+ constructor(getDevice, managementPointId, deviceLabel) {
20
+ this.getDevice = getDevice;
21
+ this.managementPointId = managementPointId;
22
+ this.deviceLabel = deviceLabel;
23
+ }
24
+ getControlMode() {
25
+ // Only Altherma devices have a controlMode, others have a fixed controlMode of ROOM_TEMPERATURE AFAIK
26
+ const controlMode = this.getDevice().getData(this.managementPointId, 'controlMode', undefined).value;
27
+ return (controlMode || types_1.DaikinControlModes.ROOM_TEMPERATURE);
28
+ }
29
+ getSetpointMode() {
30
+ const setpointMode = this.getDevice().getData(this.managementPointId, 'setpointMode', undefined).value;
31
+ return (setpointMode || null);
32
+ }
33
+ /**
34
+ * Depending on the device settings the temperatureControl is set in different ways.
35
+ * Docs: https://developer.cloud.daikineurope.com/docs/b0dffcaa-7b51-428a-bdff-a7c8a64195c0/supported_features
36
+ * The setpointMode is the most important one, then the controlMode and, for
37
+ * weatherDependentHeatingFixedCooling, also the operation mode. Without a
38
+ * setpointMode (non-Althermas) the controlMode alone decides.
39
+ */
40
+ getSetpoint(operationMode) {
41
+ const setpointMode = this.getSetpointMode();
42
+ const controlMode = this.getControlMode();
43
+ const leavingWater = controlMode === types_1.DaikinControlModes.LEAVING_WATER_TEMPERATURE;
44
+ if (!setpointMode) {
45
+ return leavingWater ? types_1.DaikinTemperatureControlSetpoints.LEAVING_WATER_OFFSET : types_1.DaikinTemperatureControlSetpoints.ROOM_TEMPERATURE;
46
+ }
47
+ switch (setpointMode) {
48
+ case types_1.DaikinSetpointModes.FIXED:
49
+ return leavingWater ? types_1.DaikinTemperatureControlSetpoints.LEAVING_WATER_TEMPERATURE : types_1.DaikinTemperatureControlSetpoints.ROOM_TEMPERATURE;
50
+ case types_1.DaikinSetpointModes.WEATHER_DEPENDENT:
51
+ return leavingWater ? types_1.DaikinTemperatureControlSetpoints.LEAVING_WATER_OFFSET : types_1.DaikinTemperatureControlSetpoints.ROOM_TEMPERATURE;
52
+ case types_1.DaikinSetpointModes.WEATHER_DEPENDENT_HEATING_FIXED_COOLING:
53
+ if (controlMode === types_1.DaikinControlModes.ROOM_TEMPERATURE) {
54
+ return types_1.DaikinTemperatureControlSetpoints.ROOM_TEMPERATURE;
55
+ }
56
+ if (leavingWater && operationMode === types_1.DaikinOperationModes.HEATING) {
57
+ return types_1.DaikinTemperatureControlSetpoints.LEAVING_WATER_OFFSET;
58
+ }
59
+ if (leavingWater && operationMode === types_1.DaikinOperationModes.COOLING) {
60
+ return types_1.DaikinTemperatureControlSetpoints.LEAVING_WATER_TEMPERATURE;
61
+ }
62
+ }
63
+ throw new Error(`Could not determine the TemperatureControlSetpoint for operationMode: ${operationMode}, `
64
+ + `setpointMode: ${setpointMode}, controlMode: ${controlMode}, deviceId: ${this.deviceLabel}`);
65
+ }
66
+ /** temperatureControl path of the setpoint used by an operation mode. */
67
+ path(operationMode) {
68
+ return data_paths_1.DataPaths.setpoint(operationMode, this.getSetpoint(operationMode));
69
+ }
70
+ /** temperatureControl data point of the setpoint used by an operation mode. */
71
+ read(operationMode) {
72
+ return this.getDevice().getData(this.managementPointId, 'temperatureControl', this.path(operationMode));
73
+ }
74
+ }
75
+ exports.SetpointResolver = SetpointResolver;
76
+ /**
77
+ * Daikin's auto operationMode uses a SINGLE setpoint, not a range like
78
+ * HomeKit's HeaterCooler (heating threshold + cooling threshold). Without this
79
+ * sync the Daikin app keeps showing whatever auto setpoint was there when the
80
+ * device was last in auto mode. The midpoint of the heating/cooling thresholds
81
+ * is mirrored to /operationModes/auto/setpoints/<setpoint>.
82
+ *
83
+ * When HomeKit changes the range it writes both thresholds in one request and
84
+ * Homebridge runs both onSet handlers concurrently. Threshold writes are
85
+ * therefore tracked: the sync runs once, after the last in-flight threshold
86
+ * write settles, using the final values of both thresholds.
87
+ */
88
+ class AutoSetpointSync {
89
+ getDevice;
90
+ managementPointId;
91
+ resolver;
92
+ log;
93
+ name;
94
+ inFlight = 0;
95
+ pending = {};
96
+ constructor(getDevice, managementPointId, resolver, log, name) {
97
+ this.getDevice = getDevice;
98
+ this.managementPointId = managementPointId;
99
+ this.resolver = resolver;
100
+ this.log = log;
101
+ this.name = name;
102
+ }
103
+ /**
104
+ * Run a threshold write, then sync the auto setpoint once no other threshold
105
+ * write is in flight. Rethrows the write's error after the sync bookkeeping.
106
+ */
107
+ async writeThreshold(kind, value, write) {
108
+ this.inFlight++;
109
+ this.pending[kind] = value;
110
+ let failure;
111
+ try {
112
+ await write();
113
+ }
114
+ catch (error) {
115
+ failure = { error };
116
+ if (this.pending[kind] === value) {
117
+ delete this.pending[kind];
118
+ }
119
+ }
120
+ this.inFlight--;
121
+ if (this.inFlight === 0 && Object.keys(this.pending).length > 0) {
122
+ const overrides = this.pending;
123
+ this.pending = {};
124
+ await this.sync(overrides);
125
+ }
126
+ if (failure) {
127
+ throw failure.error;
128
+ }
129
+ }
130
+ /**
131
+ * Best-effort: failures (e.g. getSetpoint throwing for Altherma's
132
+ * weatherDependentHeatingFixedCooling + leavingWaterTemperature combo, or any
133
+ * PATCH error) must not propagate — the threshold write already succeeded,
134
+ * and a missed sync only leaves the Daikin app with a stale auto setpoint.
135
+ * No-op when the device exposes no auto setpoint.
136
+ */
137
+ async sync(overrides = {}) {
138
+ try {
139
+ const autoPath = this.resolver.path(types_1.DaikinOperationModes.AUTO);
140
+ const autoData = this.getDevice().getData(this.managementPointId, 'temperatureControl', autoPath);
141
+ if (autoData.value === undefined) {
142
+ return;
143
+ }
144
+ const heating = overrides.heating ?? this.resolver.read(types_1.DaikinOperationModes.HEATING).value;
145
+ const cooling = overrides.cooling ?? this.resolver.read(types_1.DaikinOperationModes.COOLING).value;
146
+ if (typeof heating !== 'number' || typeof cooling !== 'number') {
147
+ return;
148
+ }
149
+ // Midpoint rounded to nearest 0.5° — matches the threshold setters' step
150
+ // and the stepValue Daikin returns.
151
+ let midpoint = Math.round(heating + cooling) / 2;
152
+ if (typeof autoData.minValue === 'number') {
153
+ midpoint = Math.max(autoData.minValue, midpoint);
154
+ }
155
+ if (typeof autoData.maxValue === 'number') {
156
+ midpoint = Math.min(autoData.maxValue, midpoint);
157
+ }
158
+ if (typeof autoData.value === 'number' && Math.abs(autoData.value - midpoint) < 0.01) {
159
+ return;
160
+ }
161
+ this.log.debug(`[${this.name}] SYNC AutoSetpoint, heating=${heating} cooling=${cooling} → auto=${midpoint}`);
162
+ await this.getDevice().setData(this.managementPointId, 'temperatureControl', autoPath, midpoint);
163
+ }
164
+ catch (e) {
165
+ this.log.debug(`[${this.name}] AutoSetpoint sync skipped: ${(0, errors_1.toMessage)(e)}`);
166
+ }
167
+ }
168
+ }
169
+ exports.AutoSetpointSync = AutoSetpointSync;
170
+ //# sourceMappingURL=setpoint-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setpoint-resolver.js","sourceRoot":"","sources":["../../../../src/services/climate-control/setpoint-resolver.ts"],"names":[],"mappings":"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"}