@mp-consulting/homebridge-daikin-cloud 1.3.5 → 1.3.7

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 (234) hide show
  1. package/LICENSE +39 -1
  2. package/README.md +5 -3
  3. package/dist/src/accessories/air-conditioning-accessory.d.ts +2 -2
  4. package/dist/src/accessories/air-conditioning-accessory.d.ts.map +1 -1
  5. package/dist/src/accessories/air-conditioning-accessory.js.map +1 -1
  6. package/dist/src/accessories/altherma-accessory.d.ts +2 -2
  7. package/dist/src/accessories/altherma-accessory.d.ts.map +1 -1
  8. package/dist/src/accessories/altherma-accessory.js.map +1 -1
  9. package/dist/src/accessories/base-accessory.d.ts +6 -6
  10. package/dist/src/accessories/base-accessory.d.ts.map +1 -1
  11. package/dist/src/accessories/base-accessory.js +15 -15
  12. package/dist/src/accessories/base-accessory.js.map +1 -1
  13. package/dist/src/api/daikin-api.d.ts +26 -26
  14. package/dist/src/api/daikin-api.d.ts.map +1 -1
  15. package/dist/src/api/daikin-api.js +68 -42
  16. package/dist/src/api/daikin-api.js.map +1 -1
  17. package/dist/src/api/daikin-cloud.repository.d.ts.map +1 -1
  18. package/dist/src/api/daikin-cloud.repository.js +22 -14
  19. package/dist/src/api/daikin-cloud.repository.js.map +1 -1
  20. package/dist/src/api/daikin-controller.d.ts +41 -47
  21. package/dist/src/api/daikin-controller.d.ts.map +1 -1
  22. package/dist/src/api/daikin-controller.js +40 -64
  23. package/dist/src/api/daikin-controller.js.map +1 -1
  24. package/dist/src/api/daikin-device.d.ts +36 -31
  25. package/dist/src/api/daikin-device.d.ts.map +1 -1
  26. package/dist/src/api/daikin-device.js +45 -31
  27. package/dist/src/api/daikin-device.js.map +1 -1
  28. package/dist/src/api/daikin-mobile-oauth.d.ts +20 -20
  29. package/dist/src/api/daikin-mobile-oauth.d.ts.map +1 -1
  30. package/dist/src/api/daikin-mobile-oauth.js +49 -44
  31. package/dist/src/api/daikin-mobile-oauth.js.map +1 -1
  32. package/dist/src/api/daikin-oauth.d.ts +32 -32
  33. package/dist/src/api/daikin-oauth.d.ts.map +1 -1
  34. package/dist/src/api/daikin-oauth.js +64 -56
  35. package/dist/src/api/daikin-oauth.js.map +1 -1
  36. package/dist/src/api/daikin-schemas.d.ts +476 -351
  37. package/dist/src/api/daikin-schemas.d.ts.map +1 -1
  38. package/dist/src/api/daikin-schemas.js +11 -42
  39. package/dist/src/api/daikin-schemas.js.map +1 -1
  40. package/dist/src/api/daikin-types.d.ts +5 -1
  41. package/dist/src/api/daikin-types.d.ts.map +1 -1
  42. package/dist/src/api/daikin-types.js.map +1 -1
  43. package/dist/src/api/daikin-websocket.d.ts +31 -32
  44. package/dist/src/api/daikin-websocket.d.ts.map +1 -1
  45. package/dist/src/api/daikin-websocket.js +55 -35
  46. package/dist/src/api/daikin-websocket.js.map +1 -1
  47. package/dist/src/api/index.d.ts +2 -1
  48. package/dist/src/api/index.d.ts.map +1 -1
  49. package/dist/src/api/index.js +3 -1
  50. package/dist/src/api/index.js.map +1 -1
  51. package/dist/src/api/token-storage.d.ts +21 -0
  52. package/dist/src/api/token-storage.d.ts.map +1 -0
  53. package/dist/src/api/token-storage.js +90 -0
  54. package/dist/src/api/token-storage.js.map +1 -0
  55. package/dist/src/config/config-manager.d.ts +33 -33
  56. package/dist/src/config/config-manager.d.ts.map +1 -1
  57. package/dist/src/config/config-manager.js +33 -33
  58. package/dist/src/config/config-manager.js.map +1 -1
  59. package/dist/src/constants/api.constants.d.ts +4 -0
  60. package/dist/src/constants/api.constants.d.ts.map +1 -1
  61. package/dist/src/constants/api.constants.js +5 -1
  62. package/dist/src/constants/api.constants.js.map +1 -1
  63. package/dist/src/constants/device.constants.d.ts +4 -0
  64. package/dist/src/constants/device.constants.d.ts.map +1 -1
  65. package/dist/src/constants/device.constants.js +5 -1
  66. package/dist/src/constants/device.constants.js.map +1 -1
  67. package/dist/src/device/accessory-factory.d.ts +10 -10
  68. package/dist/src/device/accessory-factory.d.ts.map +1 -1
  69. package/dist/src/device/accessory-factory.js +7 -7
  70. package/dist/src/device/accessory-factory.js.map +1 -1
  71. package/dist/src/device/capability-detector.d.ts +8 -8
  72. package/dist/src/device/capability-detector.d.ts.map +1 -1
  73. package/dist/src/device/capability-detector.js +6 -6
  74. package/dist/src/device/capability-detector.js.map +1 -1
  75. package/dist/src/device/capability-docs.d.ts +1 -9
  76. package/dist/src/device/capability-docs.d.ts.map +1 -1
  77. package/dist/src/device/capability-docs.js +19 -73
  78. package/dist/src/device/capability-docs.js.map +1 -1
  79. package/dist/src/device/profiles/device-profile.d.ts +1 -1
  80. package/dist/src/device/profiles/device-profile.d.ts.map +1 -1
  81. package/dist/src/device/profiles/device-profile.js +4 -4
  82. package/dist/src/device/profiles/device-profile.js.map +1 -1
  83. package/dist/src/features/base-feature.d.ts +2 -2
  84. package/dist/src/features/base-feature.d.ts.map +1 -1
  85. package/dist/src/features/base-feature.js +2 -3
  86. package/dist/src/features/base-feature.js.map +1 -1
  87. package/dist/src/features/feature-manager.d.ts +8 -16
  88. package/dist/src/features/feature-manager.d.ts.map +1 -1
  89. package/dist/src/features/feature-manager.js +5 -17
  90. package/dist/src/features/feature-manager.js.map +1 -1
  91. package/dist/src/features/modes/dry-operation-mode.feature.d.ts +1 -1
  92. package/dist/src/features/modes/dry-operation-mode.feature.d.ts.map +1 -1
  93. package/dist/src/features/modes/dry-operation-mode.feature.js.map +1 -1
  94. package/dist/src/features/modes/econo-mode.feature.d.ts +1 -1
  95. package/dist/src/features/modes/econo-mode.feature.d.ts.map +1 -1
  96. package/dist/src/features/modes/econo-mode.feature.js.map +1 -1
  97. package/dist/src/features/modes/fan-only-operation-mode.feature.d.ts +1 -1
  98. package/dist/src/features/modes/fan-only-operation-mode.feature.d.ts.map +1 -1
  99. package/dist/src/features/modes/fan-only-operation-mode.feature.js.map +1 -1
  100. package/dist/src/features/modes/indoor-silent-mode.feature.d.ts +1 -1
  101. package/dist/src/features/modes/indoor-silent-mode.feature.d.ts.map +1 -1
  102. package/dist/src/features/modes/indoor-silent-mode.feature.js.map +1 -1
  103. package/dist/src/features/modes/outdoor-silent-mode.feature.d.ts +1 -1
  104. package/dist/src/features/modes/outdoor-silent-mode.feature.d.ts.map +1 -1
  105. package/dist/src/features/modes/outdoor-silent-mode.feature.js.map +1 -1
  106. package/dist/src/features/modes/powerful-mode.feature.d.ts +1 -1
  107. package/dist/src/features/modes/powerful-mode.feature.d.ts.map +1 -1
  108. package/dist/src/features/modes/powerful-mode.feature.js.map +1 -1
  109. package/dist/src/features/modes/streamer-mode.feature.d.ts +1 -1
  110. package/dist/src/features/modes/streamer-mode.feature.d.ts.map +1 -1
  111. package/dist/src/features/modes/streamer-mode.feature.js.map +1 -1
  112. package/dist/src/index.d.ts +1 -1
  113. package/dist/src/index.d.ts.map +1 -1
  114. package/dist/src/index.js.map +1 -1
  115. package/dist/src/platform.d.ts +11 -8
  116. package/dist/src/platform.d.ts.map +1 -1
  117. package/dist/src/platform.js +64 -15
  118. package/dist/src/platform.js.map +1 -1
  119. package/dist/src/services/climate-control.service.d.ts +8 -2
  120. package/dist/src/services/climate-control.service.d.ts.map +1 -1
  121. package/dist/src/services/climate-control.service.js +59 -58
  122. package/dist/src/services/climate-control.service.js.map +1 -1
  123. package/dist/src/services/hot-water-tank.service.d.ts +6 -2
  124. package/dist/src/services/hot-water-tank.service.d.ts.map +1 -1
  125. package/dist/src/services/hot-water-tank.service.js +33 -31
  126. package/dist/src/services/hot-water-tank.service.js.map +1 -1
  127. package/dist/src/types/daikin-enums.js +12 -12
  128. package/dist/src/types/daikin-enums.js.map +1 -1
  129. package/dist/src/types/device-capabilities.d.ts +1 -1
  130. package/dist/src/types/device-capabilities.d.ts.map +1 -1
  131. package/dist/src/utils/log-context.d.ts +23 -23
  132. package/dist/src/utils/log-context.d.ts.map +1 -1
  133. package/dist/src/utils/log-context.js +28 -28
  134. package/dist/src/utils/log-context.js.map +1 -1
  135. package/dist/src/utils/strings.d.ts.map +1 -1
  136. package/dist/src/utils/strings.js.map +1 -1
  137. package/dist/src/utils/update-mapper.d.ts +16 -16
  138. package/dist/src/utils/update-mapper.d.ts.map +1 -1
  139. package/dist/src/utils/update-mapper.js +14 -14
  140. package/dist/src/utils/update-mapper.js.map +1 -1
  141. package/homebridge-ui/public/index.html +2 -2
  142. package/homebridge-ui/public/script.js +957 -898
  143. package/homebridge-ui/server.js +746 -678
  144. package/package.json +29 -27
  145. package/.claude/settings.json +0 -3
  146. package/.claude/settings.local.json +0 -29
  147. package/CHANGELOG.md +0 -103
  148. package/CLAUDE.md +0 -269
  149. package/config.md +0 -2
  150. package/dist/src/api/daikin-device-tracker.d.ts +0 -97
  151. package/dist/src/api/daikin-device-tracker.d.ts.map +0 -1
  152. package/dist/src/api/daikin-device-tracker.js +0 -136
  153. package/dist/src/api/daikin-device-tracker.js.map +0 -1
  154. package/dist/src/api/http-interceptor.d.ts +0 -99
  155. package/dist/src/api/http-interceptor.d.ts.map +0 -1
  156. package/dist/src/api/http-interceptor.js +0 -177
  157. package/dist/src/api/http-interceptor.js.map +0 -1
  158. package/dist/src/di/service-container.d.ts +0 -92
  159. package/dist/src/di/service-container.d.ts.map +0 -1
  160. package/dist/src/di/service-container.js +0 -156
  161. package/dist/src/di/service-container.js.map +0 -1
  162. package/dist/src/features/feature-registry.d.ts +0 -100
  163. package/dist/src/features/feature-registry.d.ts.map +0 -1
  164. package/dist/src/features/feature-registry.js +0 -142
  165. package/dist/src/features/feature-registry.js.map +0 -1
  166. package/dist/src/services/service-factory.d.ts +0 -46
  167. package/dist/src/services/service-factory.d.ts.map +0 -1
  168. package/dist/src/services/service-factory.js +0 -72
  169. package/dist/src/services/service-factory.js.map +0 -1
  170. package/dist/src/utils/error-handler.d.ts +0 -101
  171. package/dist/src/utils/error-handler.d.ts.map +0 -1
  172. package/dist/src/utils/error-handler.js +0 -251
  173. package/dist/src/utils/error-handler.js.map +0 -1
  174. package/dist/src/utils/retry.d.ts +0 -42
  175. package/dist/src/utils/retry.d.ts.map +0 -1
  176. package/dist/src/utils/retry.js +0 -70
  177. package/dist/src/utils/retry.js.map +0 -1
  178. package/docs/ARCHITECTURE.md +0 -645
  179. package/docs/IMPLEMENTATION_GUIDE.md +0 -899
  180. package/docs/IMPROVEMENTS_SUMMARY.md +0 -415
  181. package/docs/NEXT_STEPS.md +0 -368
  182. package/docs/Screenshot 2024-07-04 at 18.41.28.png +0 -0
  183. package/docs/TROUBLESHOOTING.md +0 -475
  184. package/docs/api-response-for-BRP069A8x.json +0 -520
  185. package/docs/api-response-for-BRP069C4x-2.json +0 -881
  186. package/docs/api-response-for-BRP069C4x.json +0 -916
  187. package/docs/api-response-for-altherma.json +0 -759
  188. package/docs/api-response-for-altherma2.json +0 -2735
  189. package/docs/api-response-with-multiple-devices-incl-heatpump.json +0 -2544
  190. package/docs/cr-insance-altherma-id-0.json +0 -834
  191. package/docs/mock-air-to-air-dx23.json +0 -759
  192. package/docs/mock-air-to-air-dx4.json +0 -1134
  193. package/docs/mock-airpurifier-with-humidifier.json +0 -732
  194. package/docs/mock-airpurifier.json +0 -450
  195. package/docs/mock-altherma-air-to-water-lan.json +0 -845
  196. package/docs/mock-altherma-air-to-water-wlan.json +0 -845
  197. package/docs/mock-d2cnd-gas-boiler.json +0 -649
  198. package/docs/setpointmode-vs-controlmode-vs-setpoints-vs-sensorydata.txt +0 -6
  199. package/images/fan-speed.jpeg +0 -0
  200. package/images/homekit-controls.jpeg +0 -0
  201. package/images/homekit-settings.jpeg +0 -0
  202. package/images/swing-mode.png +0 -0
  203. package/jest.config.ts +0 -13
  204. package/test/fixtures/altherma-crSense-2.ts +0 -834
  205. package/test/fixtures/altherma-fraction.ts +0 -718
  206. package/test/fixtures/altherma-heat-pump-2.ts +0 -479
  207. package/test/fixtures/altherma-heat-pump.ts +0 -757
  208. package/test/fixtures/altherma-miladcerkic-off.ts +0 -524
  209. package/test/fixtures/altherma-miladcerkic.ts +0 -524
  210. package/test/fixtures/altherma-v1ckoeln.ts +0 -644
  211. package/test/fixtures/altherma-with-embedded-id-zero.ts +0 -834
  212. package/test/fixtures/dx23-airco-2.ts +0 -343
  213. package/test/fixtures/dx23-airco.ts +0 -518
  214. package/test/fixtures/dx4-airco.ts +0 -914
  215. package/test/fixtures/unknown-jan.ts +0 -488
  216. package/test/fixtures/unknown-kitchen-guests.ts +0 -488
  217. package/test/helpers/test-isolation.ts +0 -228
  218. package/test/integration/air-conditioning.test.ts +0 -410
  219. package/test/integration/altherma.test.ts +0 -289
  220. package/test/integration/platform.test.ts +0 -118
  221. package/test/mocks/index.ts +0 -27
  222. package/test/test-gigya-auth.js +0 -443
  223. package/test/test-mobile-oauth.js +0 -175
  224. package/test/test-websocket-mobile.js +0 -123
  225. package/test/test-websocket.js +0 -116
  226. package/test/unit/api/__snapshots__/daikinCloud.test.ts.snap +0 -1320
  227. package/test/unit/api/daikin-api.test.ts +0 -384
  228. package/test/unit/api/daikin-oauth.test.ts +0 -214
  229. package/test/unit/api/daikinCloud.test.ts +0 -12
  230. package/test/unit/config/config-manager.test.ts +0 -271
  231. package/test/unit/device/daikin-device.test.ts +0 -79
  232. package/test/unit/services/hot-water-tank.service.test.ts +0 -123
  233. package/test/unit/utils/error-handler.test.ts +0 -274
  234. package/test/unit/utils/log-context.test.ts +0 -271
@@ -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,EAAC,mBAAmB,EAAC,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAG5C,qBAAa,mBAAoB,SAAQ,WAAW;IAChD,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;CAK7D"}
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 +1 @@
1
- {"version":3,"file":"powerful-mode.feature.js","sourceRoot":"","sources":["../../../../src/features/modes/powerful-mode.feature.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,kDAA4C;AAC5C,uCAAgD;AAEhD,MAAa,mBAAoB,SAAQ,0BAAW;IAChD,IAAI,WAAW;QACX,OAAO,eAAe,CAAC;IAC3B,CAAC;IAED,IAAI,cAAc;QACd,OAAO,eAAe,CAAC;IAC3B,CAAC;IAED,IAAI,SAAS;QACT,OAAO,kBAAkB,CAAC;IAC9B,CAAC;IAED,WAAW;QACP,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;IACjC,CAAC;IAED,KAAK,CAAC,SAAS;QACX,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,CACV,IAAI,IAAI,CAAC,IAAI,uBAAuB,IAAI,IAAI;YAC5C,gBAAgB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,CACnE,CAAC;QACF,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAA0B;QACtC,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;IAC7C,CAAC;CACJ;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,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"}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Enables/disables the streamer mode on the device.
5
5
  */
6
- import { CharacteristicValue } from 'homebridge';
6
+ import type { CharacteristicValue } from 'homebridge';
7
7
  import { BaseFeature } from '../base-feature';
8
8
  export declare class StreamerModeFeature extends BaseFeature {
9
9
  get featureName(): string;
@@ -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,EAAC,mBAAmB,EAAC,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAG5C,qBAAa,mBAAoB,SAAQ,WAAW;IAChD,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;CAK7D"}
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 +1 @@
1
- {"version":3,"file":"streamer-mode.feature.js","sourceRoot":"","sources":["../../../../src/features/modes/streamer-mode.feature.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,kDAA4C;AAC5C,uCAAgD;AAEhD,MAAa,mBAAoB,SAAQ,0BAAW;IAChD,IAAI,WAAW;QACX,OAAO,eAAe,CAAC;IAC3B,CAAC;IAED,IAAI,cAAc;QACd,OAAO,eAAe,CAAC;IAC3B,CAAC;IAED,IAAI,SAAS;QACT,OAAO,kBAAkB,CAAC;IAC9B,CAAC;IAED,WAAW;QACP,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;IACjC,CAAC;IAED,KAAK,CAAC,SAAS;QACX,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,CACV,IAAI,IAAI,CAAC,IAAI,uBAAuB,IAAI,IAAI;YAC5C,gBAAgB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,CACnE,CAAC;QACF,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAA0B;QACtC,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;IAC7C,CAAC;CACJ;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,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,4 +1,4 @@
1
- import { API } from 'homebridge';
1
+ import type { API } from 'homebridge';
2
2
  /**
3
3
  * This method registers the platform with Homebridge
4
4
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAKjC;;GAEG;8BACY,GAAG;AAAlB,kBAEE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAKtC;;GAEG;yBACO,KAAK,GAAG;AAAlB,kBAEE"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAEA,yCAA2C;AAC3C,yCAAiD;AAKjD,iBAAS,CAAC,GAAQ,EAAE,EAAE;IAClB,GAAG,CAAC,gBAAgB,CAAC,wBAAa,EAAE,8BAAmB,CAAC,CAAC;AAC7D,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAEA,yCAA2C;AAC3C,yCAAiD;AAKjD,iBAAS,CAAC,GAAQ,EAAE,EAAE;IACpB,GAAG,CAAC,gBAAgB,CAAC,wBAAa,EAAE,8BAAmB,CAAC,CAAC;AAC3D,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
- /// <reference types="node" />
2
- import { API, Characteristic, DynamicPlatformPlugin, Logger, PlatformAccessory, PlatformConfig, Service } from 'homebridge';
3
- import { DaikinCloudController, DaikinCloudDevice } from './api';
1
+ import type { API, Characteristic, DynamicPlatformPlugin, Logger, PlatformAccessory, PlatformConfig, Service } from 'homebridge';
2
+ import type { DaikinCloudDevice } from './api';
3
+ import { DaikinCloudController } from './api';
4
4
  export type DaikinCloudAccessoryContext = {
5
5
  device: DaikinCloudDevice;
6
6
  };
@@ -14,15 +14,18 @@ export declare class DaikinCloudPlatform implements DynamicPlatformPlugin {
14
14
  readonly storagePath: string;
15
15
  controller: DaikinCloudController | undefined;
16
16
  readonly updateIntervalDelay: number;
17
- updateInterval: NodeJS.Timeout | undefined;
18
- forceUpdateTimeout: NodeJS.Timeout | undefined;
17
+ private updateInterval;
18
+ private forceUpdateTimeout;
19
19
  private readonly accessoryFactory;
20
20
  private readonly updateMapper;
21
21
  private readonly authMode;
22
+ private readonly deviceListeners;
22
23
  constructor(log: Logger, config: PlatformConfig, api: API);
23
- configureAccessory(accessory: PlatformAccessory<DaikinCloudAccessoryContext>): void;
24
+ configureAccessory(accessory: PlatformAccessory): void;
24
25
  private discoverDevices;
25
26
  private createDevices;
27
+ private removeDeviceListener;
28
+ registerDeviceListener(accessory: PlatformAccessory<DaikinCloudAccessoryContext>, listener: () => void): void;
26
29
  private updateDevices;
27
30
  forceUpdateDevices(delay?: number): void;
28
31
  private startUpdateDevicesInterval;
@@ -31,8 +34,8 @@ export declare class DaikinCloudPlatform implements DynamicPlatformPlugin {
31
34
  private getPrivacyFriendlyConfig;
32
35
  private onInvalidGrantError;
33
36
  /**
34
- * Handle WebSocket device updates by pushing updated values to HomeKit
35
- */
37
+ * Handle WebSocket device updates by pushing updated values to HomeKit
38
+ */
36
39
  private handleWebSocketDeviceUpdate;
37
40
  }
38
41
  //# sourceMappingURL=platform.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/platform.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,GAAG,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE,OAAO,EAAC,MAAM,YAAY,CAAC;AAS1H,OAAO,EAAkB,qBAAqB,EAAE,iBAAiB,EAAyB,MAAM,OAAO,CAAC;AASxG,MAAM,MAAM,2BAA2B,GAAG;IACtC,MAAM,EAAE,iBAAiB,CAAC;CAC7B,CAAC;AAEF,qBAAa,mBAAoB,YAAW,qBAAqB;aAiBzC,GAAG,EAAE,MAAM;aACX,MAAM,EAAE,cAAc;aACtB,GAAG,EAAE,GAAG;IAlB5B,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,SAAmD;IAC/E,cAAc,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;IAC3C,kBAAkB,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;IACtD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoC;gBAGzC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,GAAG;IAgJrB,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,CAAC,2BAA2B,CAAC;YAKrE,eAAe;YAgBf,aAAa;YAiDb,aAAa;IAW3B,kBAAkB,CAAC,KAAK,GAAE,MAAsE;IAYhG,OAAO,CAAC,0BAA0B;YAOpB,eAAe;IAc7B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,wBAAwB;IAWhC,OAAO,CAAC,mBAAmB;IAU3B;;OAEG;IACH,OAAO,CAAC,2BAA2B;CAuBtC"}
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;IAsKvB,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"}
@@ -11,6 +11,7 @@ const strings_1 = require("./utils/strings");
11
11
  const node_fs_1 = __importDefault(require("node:fs"));
12
12
  const api_1 = require("./api");
13
13
  const update_mapper_1 = require("./utils/update-mapper");
14
+ const config_manager_1 = require("./config/config-manager");
14
15
  const constants_1 = require("./constants");
15
16
  class DaikinCloudPlatform {
16
17
  log;
@@ -21,12 +22,13 @@ class DaikinCloudPlatform {
21
22
  accessories = [];
22
23
  storagePath = '';
23
24
  controller;
24
- updateIntervalDelay = constants_1.ONE_MINUTE_MS * constants_1.DEFAULT_UPDATE_INTERVAL_MINUTES;
25
+ updateIntervalDelay;
25
26
  updateInterval;
26
27
  forceUpdateTimeout;
27
28
  accessoryFactory;
28
29
  updateMapper;
29
30
  authMode;
31
+ deviceListeners = new Map();
30
32
  constructor(log, config, api) {
31
33
  this.log = log;
32
34
  this.config = config;
@@ -42,6 +44,12 @@ class DaikinCloudPlatform {
42
44
  // Determine authentication mode
43
45
  this.authMode = this.config.authMode === 'mobile_app' ? 'mobile_app' : 'developer_portal';
44
46
  this.log.info(`[Config] Authentication mode: ${this.authMode}`);
47
+ // Validate configuration
48
+ const configManager = new config_manager_1.ConfigManager(this.config);
49
+ const validation = configManager.validate();
50
+ for (const warning of validation.warnings) {
51
+ this.log.warn(`[Config] ${warning}`);
52
+ }
45
53
  // Check if credentials are configured based on auth mode
46
54
  if (this.authMode === 'mobile_app') {
47
55
  if (!this.config.daikinEmail || !this.config.daikinPassword) {
@@ -147,7 +155,7 @@ class DaikinCloudPlatform {
147
155
  const onInvalidGrantError = () => this.onInvalidGrantError(tokenFilePath);
148
156
  const devices = await this.discoverDevices(this.controller, onInvalidGrantError);
149
157
  if (devices.length > 0) {
150
- await this.createDevices(devices);
158
+ this.createDevices(devices);
151
159
  this.startUpdateDevicesInterval();
152
160
  // Enable WebSocket for real-time updates (unless explicitly disabled)
153
161
  if (this.config.enableWebSocket !== false) {
@@ -156,6 +164,20 @@ class DaikinCloudPlatform {
156
164
  }
157
165
  this.log.info('--------------- End Daikin info for debugging reasons --------------------');
158
166
  });
167
+ // Shutdown handler: clean up timers, WebSocket, and device listeners on platform shutdown
168
+ this.api.on('shutdown', () => {
169
+ this.log.debug('[Platform] Shutting down, cleaning up resources...');
170
+ clearInterval(this.updateInterval);
171
+ clearTimeout(this.forceUpdateTimeout);
172
+ this.controller?.disableWebSocket();
173
+ for (const [uuid, listener] of this.deviceListeners) {
174
+ const accessory = this.accessories.find(a => a.UUID === uuid);
175
+ if (accessory?.context.device) {
176
+ accessory.context.device.removeListener('updated', listener);
177
+ }
178
+ }
179
+ this.deviceListeners.clear();
180
+ });
159
181
  }
160
182
  configureAccessory(accessory) {
161
183
  this.log.info('[Platform] Loading accessory from cache:', accessory.displayName);
@@ -167,8 +189,8 @@ class DaikinCloudPlatform {
167
189
  }
168
190
  catch (error) {
169
191
  if (error instanceof Error) {
170
- error.message = `[API Syncing] Failed to get cloud devices from Daikin Cloud: ${error.message}`;
171
- this.log.error(error.message);
192
+ const message = `[API Syncing] Failed to get cloud devices from Daikin Cloud: ${error.message}`;
193
+ this.log.error(message);
172
194
  if (error.message.includes('invalid_grant')) {
173
195
  onInvalidGrantError();
174
196
  }
@@ -176,8 +198,8 @@ class DaikinCloudPlatform {
176
198
  return [];
177
199
  }
178
200
  }
179
- async createDevices(devices) {
180
- devices.forEach(device => {
201
+ createDevices(devices) {
202
+ for (const device of devices) {
181
203
  try {
182
204
  const uuid = this.api.hap.uuid.generate(device.getId());
183
205
  const deviceModel = device.getDescription().deviceModel;
@@ -188,10 +210,12 @@ class DaikinCloudPlatform {
188
210
  if (existingAccessory) {
189
211
  this.api.unregisterPlatformAccessories(settings_1.PLUGIN_NAME, settings_1.PLATFORM_NAME, [existingAccessory]);
190
212
  }
191
- return;
213
+ continue;
192
214
  }
193
215
  if (existingAccessory) {
194
216
  this.log.info('[Platform] Restoring existing accessory from cache:', existingAccessory.displayName);
217
+ // Remove old event listener before reassigning device
218
+ this.removeDeviceListener(existingAccessory);
195
219
  existingAccessory.context.device = device;
196
220
  this.api.updatePlatformAccessories([existingAccessory]);
197
221
  const { profile } = this.accessoryFactory.createAccessory(existingAccessory);
@@ -216,7 +240,17 @@ class DaikinCloudPlatform {
216
240
  this.log.debug('[Platform] Device JSON:', JSON.stringify(api_1.DaikinCloudRepo.maskSensitiveCloudDeviceData(device.desc), null, 2));
217
241
  }
218
242
  }
219
- });
243
+ }
244
+ }
245
+ removeDeviceListener(accessory) {
246
+ const existingListener = this.deviceListeners.get(accessory.UUID);
247
+ if (existingListener && accessory.context.device) {
248
+ accessory.context.device.removeListener('updated', existingListener);
249
+ this.deviceListeners.delete(accessory.UUID);
250
+ }
251
+ }
252
+ registerDeviceListener(accessory, listener) {
253
+ this.deviceListeners.set(accessory.UUID, listener);
220
254
  }
221
255
  async updateDevices() {
222
256
  if (!this.controller) {
@@ -229,19 +263,34 @@ class DaikinCloudPlatform {
229
263
  this.log.error(`[API Syncing] Failed to update devices data: ${JSON.stringify(error)}`);
230
264
  }
231
265
  }
232
- forceUpdateDevices(delay = this.config.forceUpdateDelay || constants_1.DEFAULT_FORCE_UPDATE_DELAY_MS) {
233
- this.log.debug(`[API Syncing] Force update devices data (delayed by ${delay}, update pending: ${this.forceUpdateTimeout || 'no update pending'})`);
266
+ forceUpdateDevices(delay = Math.max(0, this.config.forceUpdateDelay || constants_1.DEFAULT_FORCE_UPDATE_DELAY_MS)) {
267
+ // Debounce: if a force update is already pending, don't restart timers
268
+ if (this.forceUpdateTimeout) {
269
+ this.log.debug('[API Syncing] Force update already pending, skipping duplicate request');
270
+ return;
271
+ }
272
+ this.log.debug(`[API Syncing] Force update devices data (delayed by ${delay}ms)`);
234
273
  clearInterval(this.updateInterval);
235
- clearTimeout(this.forceUpdateTimeout);
236
274
  this.forceUpdateTimeout = setTimeout(async () => {
237
- await this.updateDevices();
275
+ this.forceUpdateTimeout = undefined;
276
+ try {
277
+ await this.updateDevices();
278
+ }
279
+ catch (error) {
280
+ this.log.error(`[API Syncing] Force update failed: ${error.message}`);
281
+ }
238
282
  this.startUpdateDevicesInterval();
239
283
  }, delay);
240
284
  }
241
285
  startUpdateDevicesInterval() {
242
286
  this.log.debug(`[API Syncing] (Re)starting update devices interval every ${this.updateIntervalDelay / constants_1.ONE_MINUTE_MS} minutes`);
243
287
  this.updateInterval = setInterval(async () => {
244
- await this.updateDevices();
288
+ try {
289
+ await this.updateDevices();
290
+ }
291
+ catch (error) {
292
+ this.log.error(`[API Syncing] Periodic update failed: ${error.message}`);
293
+ }
245
294
  }, this.updateIntervalDelay);
246
295
  }
247
296
  async enableWebSocket() {
@@ -281,8 +330,8 @@ class DaikinCloudPlatform {
281
330
  }
282
331
  }
283
332
  /**
284
- * Handle WebSocket device updates by pushing updated values to HomeKit
285
- */
333
+ * Handle WebSocket device updates by pushing updated values to HomeKit
334
+ */
286
335
  handleWebSocketDeviceUpdate(update) {
287
336
  // Find the accessory for this device
288
337
  const accessory = this.accessories.find(a => a.context.device.getId() === update.deviceId);
@@ -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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"}
@@ -1,5 +1,5 @@
1
- import { CharacteristicValue, PlatformAccessory } from 'homebridge';
2
- import { DaikinCloudAccessoryContext, DaikinCloudPlatform } from '../platform';
1
+ import type { CharacteristicValue, PlatformAccessory } from 'homebridge';
2
+ import type { DaikinCloudAccessoryContext, DaikinCloudPlatform } from '../platform';
3
3
  import { DaikinControlModes, DaikinOperationModes, DaikinSetpointModes, DaikinTemperatureControlSetpoints } from '../types';
4
4
  import { FeatureManager } from '../features';
5
5
  export declare class ClimateControlService {
@@ -10,6 +10,12 @@ export declare class ClimateControlService {
10
10
  private readonly service?;
11
11
  readonly featureManager: FeatureManager;
12
12
  constructor(platform: DaikinCloudPlatform, accessory: PlatformAccessory<DaikinCloudAccessoryContext>, managementPointId: string);
13
+ /**
14
+ * Execute a device write operation with proper HAP error handling.
15
+ * Catches errors, logs a warning, and throws HapStatusError(SERVICE_COMMUNICATION_FAILURE)
16
+ * so HomeKit shows "No Response" instead of Homebridge logging "plugin threw an error".
17
+ */
18
+ private setDeviceData;
13
19
  addOrUpdateCharacteristicRotationSpeed(): void;
14
20
  handleActiveStateGet(): Promise<CharacteristicValue>;
15
21
  handleActiveStateSet(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,EAAC,mBAAmB,EAAE,iBAAiB,EAAU,MAAM,YAAY,CAAC;AAC3E,OAAO,EAAC,2BAA2B,EAAE,mBAAmB,EAAC,MAAM,aAAa,CAAC;AAE7E,OAAO,EACH,kBAAkB,EAKlB,oBAAoB,EACpB,mBAAmB,EACnB,iCAAiC,EACpC,MAAM,UAAU,CAAC;AAClB,OAAO,EAAC,cAAc,EAAC,MAAM,aAAa,CAAC;AAO3C,qBAAa,qBAAqB;IAC9B,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;gBAGpC,QAAQ,EAAE,mBAAmB,EAC7B,SAAS,EAAE,iBAAiB,CAAC,2BAA2B,CAAC,EACzD,iBAAiB,EAAE,MAAM;IAkF7B,sCAAsC;IAyBhC,oBAAoB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAMpD,oBAAoB,CAAC,KAAK,EAAE,mBAAmB;IAW/C,2BAA2B,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAO3D,oCAAoC,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAMpE,oCAAoC,CAAC,KAAK,EAAE,mBAAmB;IAa/D,sBAAsB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAMtD,sBAAsB,CAAC,KAAK,EAAE,mBAAmB;IAajD,oCAAoC,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAMpE,oCAAoC,CAAC,KAAK,EAAE,mBAAmB;IAY/D,gCAAgC,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAiBhE,gCAAgC,CAAC,KAAK,EAAE,mBAAmB;IA2B3D,kBAAkB,CAAC,KAAK,EAAE,mBAAmB;IAoB7C,kBAAkB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAaxD,uBAAuB,IAAI,oBAAoB;IAI/C,qBAAqB,IAAI,kBAAkB;IAW3C,eAAe,IAAI,mBAAmB,GAAG,IAAI;IAQ7C,WAAW,CAAC,aAAa,EAAE,oBAAoB,GAAG,iCAAiC;IAoDnF,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;CAGjC"}
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,sCAAsC;IA0BhC,oBAAoB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAMpD,oBAAoB,CAAC,KAAK,EAAE,mBAAmB;IAQ/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;IAwB3D,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,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ClimateControlService = void 0;
4
- const daikin_cloud_repository_1 = require("../api/daikin-cloud.repository");
5
4
  const types_1 = require("../types");
6
5
  const features_1 = require("../features");
7
6
  const constants_1 = require("../constants");
@@ -41,7 +40,8 @@ class ClimateControlService {
41
40
  if (roomTemperatureControlForCooling) {
42
41
  const coolingChar = this.service.getCharacteristic(this.platform.Characteristic.CoolingThresholdTemperature);
43
42
  // Set value within default HomeKit range first to avoid warning when setProps narrows the range
44
- const clampedCoolingValue = Math.max(constants_1.HOMEKIT_TEMP_MIN, Math.min(constants_1.COOLING_TEMP_CLAMP_MAX, roomTemperatureControlForCooling.value));
43
+ const coolingValue = typeof roomTemperatureControlForCooling.value === 'number' ? roomTemperatureControlForCooling.value : constants_1.COOLING_TEMP_CLAMP_MAX;
44
+ const clampedCoolingValue = Math.max(constants_1.HOMEKIT_TEMP_MIN, Math.min(constants_1.COOLING_TEMP_CLAMP_MAX, coolingValue));
45
45
  coolingChar.updateValue(clampedCoolingValue);
46
46
  coolingChar
47
47
  .setProps({
@@ -59,7 +59,8 @@ class ClimateControlService {
59
59
  if (roomTemperatureControlForHeating) {
60
60
  const heatingChar = this.service.getCharacteristic(this.platform.Characteristic.HeatingThresholdTemperature);
61
61
  // Set value within default HomeKit range first to avoid warning when setProps narrows the range
62
- const clampedHeatingValue = Math.max(0, Math.min(25, roomTemperatureControlForHeating.value));
62
+ const heatingValue = typeof roomTemperatureControlForHeating.value === 'number' ? roomTemperatureControlForHeating.value : constants_1.DEFAULT_ROOM_TEMPERATURE;
63
+ const clampedHeatingValue = Math.max(constants_1.HEATING_TEMP_CLAMP_MIN, Math.min(constants_1.HEATING_TEMP_CLAMP_MAX, heatingValue));
63
64
  heatingChar.updateValue(clampedHeatingValue);
64
65
  heatingChar
65
66
  .setProps({
@@ -83,6 +84,21 @@ class ClimateControlService {
83
84
  // Set up optional feature switches (PowerfulMode, EconoMode, etc.)
84
85
  this.featureManager.setupFeatures();
85
86
  }
87
+ /**
88
+ * Execute a device write operation with proper HAP error handling.
89
+ * Catches errors, logs a warning, and throws HapStatusError(SERVICE_COMMUNICATION_FAILURE)
90
+ * so HomeKit shows "No Response" instead of Homebridge logging "plugin threw an error".
91
+ */
92
+ async setDeviceData(characteristic, operation) {
93
+ try {
94
+ await operation();
95
+ this.platform.forceUpdateDevices();
96
+ }
97
+ catch (e) {
98
+ this.platform.log.warn(`[${this.name}] Failed to set ${characteristic}: ${e instanceof Error ? e.message : e}`);
99
+ throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
100
+ }
101
+ }
86
102
  addOrUpdateCharacteristicRotationSpeed() {
87
103
  if (!this.service) {
88
104
  throw Error('Service not initialized');
@@ -91,7 +107,8 @@ class ClimateControlService {
91
107
  if (fanControl) {
92
108
  const rotationChar = this.service.getCharacteristic(this.platform.Characteristic.RotationSpeed);
93
109
  // Set value within default HomeKit range first to avoid warning when setProps narrows the range
94
- const clampedRotationValue = Math.max(0, Math.min(100, fanControl.value));
110
+ const rotationValue = typeof fanControl.value === 'number' ? fanControl.value : 1;
111
+ const clampedRotationValue = Math.max(0, Math.min(100, rotationValue));
95
112
  rotationChar.updateValue(clampedRotationValue);
96
113
  rotationChar
97
114
  .setProps({
@@ -112,38 +129,33 @@ class ClimateControlService {
112
129
  return state === types_1.DaikinOnOffModes.ON;
113
130
  }
114
131
  async handleActiveStateSet(value) {
115
- this.platform.log.debug(`[${this.name}] SET ActiveState, state: ${value}`);
116
132
  const state = value;
117
- try {
133
+ this.platform.log.debug(`[${this.name}] SET ActiveState, state: ${value}`);
134
+ await this.setDeviceData('ActiveState', async () => {
118
135
  await this.accessory.context.device.setData(this.managementPointId, 'onOffMode', state ? types_1.DaikinOnOffModes.ON : types_1.DaikinOnOffModes.OFF, undefined);
119
- }
120
- catch (e) {
121
- this.platform.log.error('Failed to set', e, JSON.stringify(daikin_cloud_repository_1.DaikinCloudRepo.maskSensitiveCloudDeviceData(this.accessory.context.device.desc), null, 4));
122
- }
123
- this.platform.forceUpdateDevices();
136
+ });
124
137
  }
125
138
  async handleCurrentTemperatureGet() {
126
139
  const temperature = this.accessory.context.device.getData(this.managementPointId, 'sensoryData', '/' + this.getCurrentControlMode()).value;
127
- this.platform.log.debug(`[${this.name}] GET CurrentTemperature, temperature: ${temperature}, last update: ${this.accessory.context.device.getLastUpdated()}`);
140
+ const lastUpdate = this.accessory.context.device.getLastUpdated();
141
+ this.platform.log.debug(`[${this.name}] GET CurrentTemperature, temperature: ${temperature}, last update: ${lastUpdate}`);
128
142
  // Return a valid temperature value, defaulting to 20 if undefined
129
143
  return typeof temperature === 'number' && isFinite(temperature) ? temperature : constants_1.DEFAULT_ROOM_TEMPERATURE;
130
144
  }
131
145
  async handleCoolingThresholdTemperatureGet() {
132
- const temperature = this.accessory.context.device.getData(this.managementPointId, 'temperatureControl', `/operationModes/${types_1.DaikinOperationModes.COOLING}/setpoints/${this.getSetpoint(types_1.DaikinOperationModes.COOLING)}`).value;
133
- this.platform.log.debug(`[${this.name}] GET CoolingThresholdTemperature, temperature: ${temperature}, last update: ${this.accessory.context.device.getLastUpdated()}`);
146
+ const setpoint = this.getSetpoint(types_1.DaikinOperationModes.COOLING);
147
+ const path = `/operationModes/${types_1.DaikinOperationModes.COOLING}/setpoints/${setpoint}`;
148
+ const temperature = this.accessory.context.device.getData(this.managementPointId, 'temperatureControl', path).value;
149
+ const lastUpdate = this.accessory.context.device.getLastUpdated();
150
+ this.platform.log.debug(`[${this.name}] GET CoolingThresholdTemperature, temperature: ${temperature}, last update: ${lastUpdate}`);
134
151
  return typeof temperature === 'number' && isFinite(temperature) ? temperature : 25;
135
152
  }
136
153
  async handleCoolingThresholdTemperatureSet(value) {
137
154
  const temperature = Math.round(value * 2) / 2;
138
- // const temperature = value as number;
139
155
  this.platform.log.debug(`[${this.name}] SET CoolingThresholdTemperature, temperature to: ${temperature}`);
140
- try {
156
+ await this.setDeviceData('CoolingThresholdTemperature', async () => {
141
157
  await this.accessory.context.device.setData(this.managementPointId, 'temperatureControl', `/operationModes/${types_1.DaikinOperationModes.COOLING}/setpoints/${this.getSetpoint(types_1.DaikinOperationModes.COOLING)}`, temperature);
142
- }
143
- catch (e) {
144
- this.platform.log.error('Failed to set', e, JSON.stringify(daikin_cloud_repository_1.DaikinCloudRepo.maskSensitiveCloudDeviceData(this.accessory.context.device.desc), null, 4));
145
- }
146
- this.platform.forceUpdateDevices();
158
+ });
147
159
  }
148
160
  async handleRotationSpeedGet() {
149
161
  const speed = this.accessory.context.device.getData(this.managementPointId, 'fanControl', `/operationModes/${this.getCurrentOperationMode()}/fanSpeed/modes/fixed`).value;
@@ -153,35 +165,30 @@ class ClimateControlService {
153
165
  async handleRotationSpeedSet(value) {
154
166
  const speed = value;
155
167
  this.platform.log.debug(`[${this.name}] SET RotationSpeed, speed to: ${speed}`);
156
- try {
168
+ await this.setDeviceData('RotationSpeed', async () => {
157
169
  await this.accessory.context.device.setData(this.managementPointId, 'fanControl', `/operationModes/${this.getCurrentOperationMode()}/fanSpeed/currentMode`, 'fixed');
158
170
  await this.accessory.context.device.setData(this.managementPointId, 'fanControl', `/operationModes/${this.getCurrentOperationMode()}/fanSpeed/modes/fixed`, speed);
159
- }
160
- catch (e) {
161
- this.platform.log.error('Failed to set', e, JSON.stringify(daikin_cloud_repository_1.DaikinCloudRepo.maskSensitiveCloudDeviceData(this.accessory.context.device.desc), null, 4));
162
- }
163
- this.platform.forceUpdateDevices();
171
+ });
164
172
  }
165
173
  async handleHeatingThresholdTemperatureGet() {
166
- const temperature = this.accessory.context.device.getData(this.managementPointId, 'temperatureControl', `/operationModes/${types_1.DaikinOperationModes.HEATING}/setpoints/${this.getSetpoint(types_1.DaikinOperationModes.HEATING)}`).value;
167
- this.platform.log.debug(`[${this.name}] GET HeatingThresholdTemperature, temperature: ${temperature}, last update: ${this.accessory.context.device.getLastUpdated()}`);
174
+ const setpoint = this.getSetpoint(types_1.DaikinOperationModes.HEATING);
175
+ const path = `/operationModes/${types_1.DaikinOperationModes.HEATING}/setpoints/${setpoint}`;
176
+ const temperature = this.accessory.context.device.getData(this.managementPointId, 'temperatureControl', path).value;
177
+ const lastUpdate = this.accessory.context.device.getLastUpdated();
178
+ this.platform.log.debug(`[${this.name}] GET HeatingThresholdTemperature, temperature: ${temperature}, last update: ${lastUpdate}`);
168
179
  return typeof temperature === 'number' && isFinite(temperature) ? temperature : constants_1.DEFAULT_ROOM_TEMPERATURE;
169
180
  }
170
181
  async handleHeatingThresholdTemperatureSet(value) {
171
- try {
172
- const temperature = Math.round(value * 2) / 2;
173
- // const temperature = value as number;
174
- this.platform.log.debug(`[${this.name}] SET HeatingThresholdTemperature, temperature to: ${temperature}`);
182
+ const temperature = Math.round(value * 2) / 2;
183
+ this.platform.log.debug(`[${this.name}] SET HeatingThresholdTemperature, temperature to: ${temperature}`);
184
+ await this.setDeviceData('HeatingThresholdTemperature', async () => {
175
185
  await this.accessory.context.device.setData(this.managementPointId, 'temperatureControl', `/operationModes/${types_1.DaikinOperationModes.HEATING}/setpoints/${this.getSetpoint(types_1.DaikinOperationModes.HEATING)}`, temperature);
176
- this.platform.forceUpdateDevices();
177
- }
178
- catch (e) {
179
- this.platform.log.error('Failed to set', e, JSON.stringify(daikin_cloud_repository_1.DaikinCloudRepo.maskSensitiveCloudDeviceData(this.accessory.context.device.desc), null, 4));
180
- }
186
+ });
181
187
  }
182
188
  async handleTargetHeaterCoolerStateGet() {
183
189
  const operationMode = this.getCurrentOperationMode();
184
- this.platform.log.debug(`[${this.name}] GET TargetHeaterCoolerState, operationMode: ${operationMode}, last update: ${this.accessory.context.device.getLastUpdated()}`);
190
+ const lastUpdate = this.accessory.context.device.getLastUpdated();
191
+ this.platform.log.debug(`[${this.name}] GET TargetHeaterCoolerState, operationMode: ${operationMode}, last update: ${lastUpdate}`);
185
192
  switch (operationMode) {
186
193
  case types_1.DaikinOperationModes.COOLING:
187
194
  return this.platform.Characteristic.TargetHeaterCoolerState.COOL;
@@ -209,38 +216,31 @@ class ClimateControlService {
209
216
  daikinOperationMode = types_1.DaikinOperationModes.AUTO;
210
217
  break;
211
218
  }
212
- try {
213
- this.platform.log.debug(`[${this.name}] SET TargetHeaterCoolerState, daikinOperationMode to: ${daikinOperationMode}`);
219
+ this.platform.log.debug(`[${this.name}] SET TargetHeaterCoolerState, daikinOperationMode to: ${daikinOperationMode}`);
220
+ await this.setDeviceData('TargetHeaterCoolerState', async () => {
214
221
  await this.accessory.context.device.setData(this.managementPointId, 'operationMode', daikinOperationMode, undefined);
215
222
  await this.accessory.context.device.setData(this.managementPointId, 'onOffMode', types_1.DaikinOnOffModes.ON, undefined);
216
- this.platform.forceUpdateDevices();
217
- }
218
- catch (e) {
219
- this.platform.log.error('Failed to set', e, JSON.stringify(daikin_cloud_repository_1.DaikinCloudRepo.maskSensitiveCloudDeviceData(this.accessory.context.device.desc), null, 4));
220
- }
223
+ });
221
224
  }
222
225
  async handleSwingModeSet(value) {
223
- try {
224
- const swingMode = value;
225
- const daikinSwingMode = swingMode === 1 ? types_1.DaikinFanDirectionHorizontalModes.SWING : types_1.DaikinFanDirectionHorizontalModes.STOP;
226
- this.platform.log.debug(`[${this.name}] SET SwingMode, swingmode to: ${swingMode}/${daikinSwingMode}`);
226
+ const swingMode = value;
227
+ const daikinSwingMode = swingMode === 1 ? types_1.DaikinFanDirectionHorizontalModes.SWING : types_1.DaikinFanDirectionHorizontalModes.STOP;
228
+ this.platform.log.debug(`[${this.name}] SET SwingMode, swingmode to: ${swingMode}/${daikinSwingMode}`);
229
+ await this.setDeviceData('SwingMode', async () => {
227
230
  if (this.hasSwingModeHorizontalFeature()) {
228
231
  await this.accessory.context.device.setData(this.managementPointId, 'fanControl', `/operationModes/${this.getCurrentOperationMode()}/fanDirection/horizontal/currentMode`, daikinSwingMode);
229
232
  }
230
233
  if (this.hasSwingModeVerticalFeature()) {
231
234
  await this.accessory.context.device.setData(this.managementPointId, 'fanControl', `/operationModes/${this.getCurrentOperationMode()}/fanDirection/vertical/currentMode`, daikinSwingMode);
232
235
  }
233
- this.platform.forceUpdateDevices();
234
- }
235
- catch (e) {
236
- this.platform.log.error('Failed to set', e, JSON.stringify(daikin_cloud_repository_1.DaikinCloudRepo.maskSensitiveCloudDeviceData(this.accessory.context.device.desc), null, 4));
237
- }
236
+ });
238
237
  }
239
238
  async handleSwingModeGet() {
240
239
  const verticalSwingMode = this.hasSwingModeVerticalFeature() ? this.accessory.context.device.getData(this.managementPointId, 'fanControl', `/operationModes/${this.getCurrentOperationMode()}/fanDirection/vertical/currentMode`).value : null;
241
240
  const horizontalSwingMode = this.hasSwingModeHorizontalFeature() ? this.accessory.context.device.getData(this.managementPointId, 'fanControl', `/operationModes/${this.getCurrentOperationMode()}/fanDirection/horizontal/currentMode`).value : null;
242
- this.platform.log.debug(`[${this.name}] GET SwingMode, verticalSwingMode: ${verticalSwingMode}, last update: ${this.accessory.context.device.getLastUpdated()}`);
243
- this.platform.log.debug(`[${this.name}] GET SwingMode, horizontalSwingMode: ${horizontalSwingMode}, last update: ${this.accessory.context.device.getLastUpdated()}`);
241
+ const lastUpdate = this.accessory.context.device.getLastUpdated();
242
+ this.platform.log.debug(`[${this.name}] GET SwingMode, verticalSwingMode: ${verticalSwingMode}, last update: ${lastUpdate}`);
243
+ this.platform.log.debug(`[${this.name}] GET SwingMode, horizontalSwingMode: ${horizontalSwingMode}, last update: ${lastUpdate}`);
244
244
  if (horizontalSwingMode === types_1.DaikinFanDirectionHorizontalModes.STOP || verticalSwingMode === types_1.DaikinFanDirectionVerticalModes.STOP) {
245
245
  return this.platform.Characteristic.SwingMode.SWING_DISABLED;
246
246
  }
@@ -301,7 +301,8 @@ class ClimateControlService {
301
301
  }
302
302
  }
303
303
  }
304
- throw new Error(`Could not determine the TemperatureControlSetpoint for operationMode: ${operationMode}, setpointMode: ${setpointMode}, controlMode: ${controlMode}, for device: ${JSON.stringify(daikin_cloud_repository_1.DaikinCloudRepo.maskSensitiveCloudDeviceData(this.accessory.context.device.desc), null, 4)}`);
304
+ throw new Error(`Could not determine the TemperatureControlSetpoint for operationMode: ${operationMode}, `
305
+ + `setpointMode: ${setpointMode}, controlMode: ${controlMode}, deviceId: ${this.accessory.UUID}`);
305
306
  }
306
307
  switch (controlMode) {
307
308
  case types_1.DaikinControlModes.LEAVING_WATER_TEMPERATURE: