@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
package/LICENSE CHANGED
@@ -1,3 +1,17 @@
1
+ Copyright 2022 Jeroen Van den Berghe
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
14
+
1
15
  Apache License
2
16
  Version 2.0, January 2004
3
17
  http://www.apache.org/licenses/
@@ -173,4 +187,28 @@
173
187
  incurred by, or claims asserted against, such Contributor by reason
174
188
  of your accepting any such warranty or additional liability.
175
189
 
176
- END OF TERMS AND CONDITIONS
190
+ END OF TERMS AND CONDITIONS
191
+
192
+ ==============================================================================
193
+
194
+ MIT License for Modifications
195
+
196
+ Copyright (c) 2025 Mickael Palma / MP Consulting
197
+
198
+ Permission is hereby granted, free of charge, to any person obtaining a copy
199
+ of this software and associated documentation files (the "Software"), to deal
200
+ in the Software without restriction, including without limitation the rights
201
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
202
+ copies of the Software, and to permit persons to whom the Software is
203
+ furnished to do so, subject to the following conditions:
204
+
205
+ The above copyright notice and this permission notice shall be included in all
206
+ copies or substantial portions of the Software.
207
+
208
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
209
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
210
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
211
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
212
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
213
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
214
+ SOFTWARE.
package/README.md CHANGED
@@ -6,6 +6,8 @@
6
6
 
7
7
  A [Homebridge](https://homebridge.io) plugin that integrates Daikin air conditioning units via the Daikin Cloud (Onecta) API, allowing you to control your devices through Apple HomeKit.
8
8
 
9
+ > Originally based on [homebridge-daikin-cloud](https://github.com/JeroenVdb/homebridge-daikin-cloud) by [Jeroen Van den Berghe](https://github.com/JeroenVdb), licensed under the Apache License 2.0. This fork has been substantially rewritten by [MP Consulting](https://github.com/mp-consulting).
10
+
9
11
  ![HomeKit Controls](images/homekit-controls.jpeg) ![HomeKit Settings](images/homekit-settings.jpeg)
10
12
 
11
13
  ## Features
@@ -32,7 +34,7 @@ This plugin supports two authentication methods:
32
34
 
33
35
  | Method | API Calls/Day | WebSocket | Setup |
34
36
  |--------|--------------|-----------|-------|
35
- | **Mobile App** | 5000 | Yes | Email/password (same as Onecta app) |
37
+ | **Mobile App** | 3000 | Yes | Email/password (same as Onecta app) |
36
38
  | **Developer Portal** | 200 | No | OAuth with developer credentials |
37
39
 
38
40
  **Recommended**: Mobile App authentication provides more API calls and real-time WebSocket updates.
@@ -132,7 +134,7 @@ Add the platform to your Homebridge `config.json`:
132
134
  | Mode | Daily Limit | Recommended Polling |
133
135
  |------|-------------|---------------------|
134
136
  | Developer Portal | 200 calls/day | 15+ minutes |
135
- | Mobile App | 5000 calls/day | 1-5 minutes |
137
+ | Mobile App | 3000 calls/day | 1-5 minutes |
136
138
 
137
139
  The plugin manages rate limits by:
138
140
  - Polling at configurable intervals
@@ -237,4 +239,4 @@ For development workflows and coding conventions, see [CLAUDE.md](CLAUDE.md).
237
239
 
238
240
  ## License
239
241
 
240
- [Apache-2.0](LICENSE)
242
+ The original work by [Jeroen Van den Berghe](https://github.com/JeroenVdb) is licensed under the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). Modifications and new code by [MP Consulting](https://github.com/mp-consulting) are licensed under the [MIT License](https://opensource.org/licenses/MIT). See the [LICENSE](LICENSE) file for full details.
@@ -1,5 +1,5 @@
1
- import { PlatformAccessory } from 'homebridge';
2
- import { DaikinCloudAccessoryContext, DaikinCloudPlatform } from '../platform';
1
+ import type { PlatformAccessory } from 'homebridge';
2
+ import type { DaikinCloudAccessoryContext, DaikinCloudPlatform } from '../platform';
3
3
  import { BaseAccessory } from './base-accessory';
4
4
  import { ClimateControlService } from '../services';
5
5
  export declare class AirConditioningAccessory extends BaseAccessory {
@@ -1 +1 @@
1
- {"version":3,"file":"air-conditioning-accessory.d.ts","sourceRoot":"","sources":["../../../src/accessories/air-conditioning-accessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAC,2BAA2B,EAAE,mBAAmB,EAAC,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAC,qBAAqB,EAAC,MAAM,aAAa,CAAC;AAElD,qBAAa,wBAAyB,SAAQ,aAAa;IACvD,OAAO,EAAE,qBAAqB,CAAC;gBAG3B,QAAQ,EAAE,mBAAmB,EAC7B,SAAS,EAAE,iBAAiB,CAAC,2BAA2B,CAAC;CAYhE"}
1
+ {"version":3,"file":"air-conditioning-accessory.d.ts","sourceRoot":"","sources":["../../../src/accessories/air-conditioning-accessory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD,qBAAa,wBAAyB,SAAQ,aAAa;IACzD,OAAO,EAAE,qBAAqB,CAAC;gBAG7B,QAAQ,EAAE,mBAAmB,EAC7B,SAAS,EAAE,iBAAiB,CAAC,2BAA2B,CAAC;CAY5D"}
@@ -1 +1 @@
1
- {"version":3,"file":"air-conditioning-accessory.js","sourceRoot":"","sources":["../../../src/accessories/air-conditioning-accessory.ts"],"names":[],"mappings":";;;AAEA,qDAA+C;AAC/C,0CAAkD;AAElD,MAAa,wBAAyB,SAAQ,8BAAa;IACvD,OAAO,CAAwB;IAE/B,YACI,QAA6B,EAC7B,SAAyD;QAEzD,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC3B,MAAM,wBAAwB,GAAG,IAAI,CAAC,kCAAkC,CAAC,gBAAgB,CAAC,CAAC;QAE3F,IAAI,wBAAwB,KAAK,IAAI,EAAE;YACnC,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;SAChE;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,gCAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC;QAClG,IAAI,CAAC,eAAe,CAAC,wBAAwB,CAAC,CAAC;IACnD,CAAC;CACJ;AAjBD,4DAiBC"}
1
+ {"version":3,"file":"air-conditioning-accessory.js","sourceRoot":"","sources":["../../../src/accessories/air-conditioning-accessory.ts"],"names":[],"mappings":";;;AAEA,qDAAiD;AACjD,0CAAoD;AAEpD,MAAa,wBAAyB,SAAQ,8BAAa;IACzD,OAAO,CAAwB;IAE/B,YACE,QAA6B,EAC7B,SAAyD;QAEzD,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC3B,MAAM,wBAAwB,GAAG,IAAI,CAAC,kCAAkC,CAAC,gBAAgB,CAAC,CAAC;QAE3F,IAAI,wBAAwB,KAAK,IAAI,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,gCAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC;QAClG,IAAI,CAAC,eAAe,CAAC,wBAAwB,CAAC,CAAC;IACjD,CAAC;CACF;AAjBD,4DAiBC"}
@@ -1,5 +1,5 @@
1
- import { PlatformAccessory } from 'homebridge';
2
- import { DaikinCloudAccessoryContext, DaikinCloudPlatform } from '../platform';
1
+ import type { PlatformAccessory } from 'homebridge';
2
+ import type { DaikinCloudAccessoryContext, DaikinCloudPlatform } from '../platform';
3
3
  import { BaseAccessory } from './base-accessory';
4
4
  import { ClimateControlService, HotWaterTankService } from '../services';
5
5
  export declare class AlthermaAccessory extends BaseAccessory {
@@ -1 +1 @@
1
- {"version":3,"file":"altherma-accessory.d.ts","sourceRoot":"","sources":["../../../src/accessories/altherma-accessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAC,2BAA2B,EAAE,mBAAmB,EAAC,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAC,qBAAqB,EAAE,mBAAmB,EAAC,MAAM,aAAa,CAAC;AAEvE,qBAAa,iBAAkB,SAAQ,aAAa;IAChD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;gBAGtC,QAAQ,EAAE,mBAAmB,EAC7B,SAAS,EAAE,iBAAiB,CAAC,2BAA2B,CAAC;CAsBhE"}
1
+ {"version":3,"file":"altherma-accessory.d.ts","sourceRoot":"","sources":["../../../src/accessories/altherma-accessory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEzE,qBAAa,iBAAkB,SAAQ,aAAa;IAClD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;gBAGxC,QAAQ,EAAE,mBAAmB,EAC7B,SAAS,EAAE,iBAAiB,CAAC,2BAA2B,CAAC;CAsB5D"}
@@ -1 +1 @@
1
- {"version":3,"file":"altherma-accessory.js","sourceRoot":"","sources":["../../../src/accessories/altherma-accessory.ts"],"names":[],"mappings":";;;AAEA,qDAA+C;AAC/C,0CAAuE;AAEvE,MAAa,iBAAkB,SAAQ,8BAAa;IAC/B,IAAI,CAAS;IAC9B,OAAO,CAAyB;IAChC,mBAAmB,CAAuB;IAE1C,YACI,QAA6B,EAC7B,SAAyD;QAEzD,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAE3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;QAEvC,MAAM,wBAAwB,GAAG,IAAI,CAAC,kCAAkC,CAAC,gBAAgB,CAAC,CAAC;QAC3F,MAAM,8BAA8B,GAAG,IAAI,CAAC,kCAAkC,CAAC,sBAAsB,CAAC,CAAC;QAEvG,IAAI,wBAAwB,KAAK,IAAI,EAAE;YACnC,IAAI,CAAC,OAAO,GAAG,IAAI,gCAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC;YAClG,IAAI,CAAC,eAAe,CAAC,wBAAwB,CAAC,CAAC;SAClD;aAAM;YACH,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,6CAA6C,CAAC,CAAC;SACtF;QAED,IAAI,8BAA8B,KAAK,IAAI,EAAE;YACzC,IAAI,CAAC,mBAAmB,GAAG,IAAI,8BAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,8BAA8B,CAAC,CAAC;SACrH;aAAM;YACH,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,qDAAqD,CAAC,CAAC;SAC9F;IACL,CAAC;CACJ;AA7BD,8CA6BC"}
1
+ {"version":3,"file":"altherma-accessory.js","sourceRoot":"","sources":["../../../src/accessories/altherma-accessory.ts"],"names":[],"mappings":";;;AAEA,qDAAiD;AACjD,0CAAyE;AAEzE,MAAa,iBAAkB,SAAQ,8BAAa;IACjC,IAAI,CAAS;IAC9B,OAAO,CAAyB;IAChC,mBAAmB,CAAuB;IAE1C,YACE,QAA6B,EAC7B,SAAyD;QAEzD,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAE3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;QAEvC,MAAM,wBAAwB,GAAG,IAAI,CAAC,kCAAkC,CAAC,gBAAgB,CAAC,CAAC;QAC3F,MAAM,8BAA8B,GAAG,IAAI,CAAC,kCAAkC,CAAC,sBAAsB,CAAC,CAAC;QAEvG,IAAI,wBAAwB,KAAK,IAAI,EAAE,CAAC;YACtC,IAAI,CAAC,OAAO,GAAG,IAAI,gCAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC;YAClG,IAAI,CAAC,eAAe,CAAC,wBAAwB,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,6CAA6C,CAAC,CAAC;QACrF,CAAC;QAED,IAAI,8BAA8B,KAAK,IAAI,EAAE,CAAC;YAC5C,IAAI,CAAC,mBAAmB,GAAG,IAAI,8BAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,8BAA8B,CAAC,CAAC;QACpH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,qDAAqD,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;CACF;AA7BD,8CA6BC"}
@@ -1,15 +1,15 @@
1
- import { PlatformAccessory } from 'homebridge';
2
- import { DaikinCloudAccessoryContext, DaikinCloudPlatform } from '../platform';
1
+ import type { PlatformAccessory } from 'homebridge';
2
+ import type { DaikinCloudAccessoryContext, DaikinCloudPlatform } from '../platform';
3
3
  export declare class BaseAccessory {
4
4
  readonly platform: DaikinCloudPlatform;
5
5
  readonly accessory: PlatformAccessory<DaikinCloudAccessoryContext>;
6
6
  readonly gatewayManagementPointId: string | null;
7
7
  constructor(platform: DaikinCloudPlatform, accessory: PlatformAccessory<DaikinCloudAccessoryContext>);
8
- printDeviceInfo(): void;
8
+ private printDeviceInfo;
9
9
  /**
10
- * Log device capabilities for the given management point.
11
- * Call this from subclasses after determining the management point ID.
12
- */
10
+ * Log device capabilities for the given management point.
11
+ * Call this from subclasses after determining the management point ID.
12
+ */
13
13
  protected logCapabilities(managementPointId: string): void;
14
14
  getEmbeddedIdByManagementPointType(managementPointType: string): string | null;
15
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base-accessory.d.ts","sourceRoot":"","sources":["../../../src/accessories/base-accessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAC,2BAA2B,EAAE,mBAAmB,EAAC,MAAM,aAAa,CAAC;AAI7E,qBAAa,aAAa;IACtB,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC,2BAA2B,CAAC,CAAC;IACnE,SAAgB,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;gBAEpD,QAAQ,EAAE,mBAAmB,EAC7B,SAAS,EAAE,iBAAiB,CAAC,2BAA2B,CAAC;IA0B7D,eAAe;IAYf;;;OAGG;IACH,SAAS,CAAC,eAAe,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI;IAY1D,kCAAkC,CAAC,mBAAmB,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAejF"}
1
+ {"version":3,"file":"base-accessory.d.ts","sourceRoot":"","sources":["../../../src/accessories/base-accessory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGpF,qBAAa,aAAa;IACxB,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC,2BAA2B,CAAC,CAAC;IACnE,SAAgB,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;gBAEtD,QAAQ,EAAE,mBAAmB,EAC7B,SAAS,EAAE,iBAAiB,CAAC,2BAA2B,CAAC;IAiC3D,OAAO,CAAC,eAAe;IASvB;;;SAGK;IACL,SAAS,CAAC,eAAe,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI;IAY1D,kCAAkC,CAAC,mBAAmB,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAgB/E"}
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BaseAccessory = void 0;
4
4
  const device_1 = require("../device");
5
- const device_2 = require("../device");
6
5
  class BaseAccessory {
7
6
  platform;
8
7
  accessory;
@@ -11,7 +10,6 @@ class BaseAccessory {
11
10
  this.platform = platform;
12
11
  this.accessory = accessory;
13
12
  this.gatewayManagementPointId = this.getEmbeddedIdByManagementPointType('gateway');
14
- this.printDeviceInfo();
15
13
  const modelInfo = this.gatewayManagementPointId
16
14
  ? accessory.context.device.getData(this.gatewayManagementPointId, 'modelInfo', undefined).value || 'Unknown'
17
15
  : 'Unknown';
@@ -19,33 +17,36 @@ class BaseAccessory {
19
17
  ? accessory.context.device.getData(this.gatewayManagementPointId, 'serialNumber', undefined)
20
18
  : null;
21
19
  const serialNumber = serialData ? serialData.value || 'NOT_AVAILABLE' : 'NOT_AVAILABLE';
20
+ this.printDeviceInfo(modelInfo);
22
21
  this.accessory.getService(this.platform.Service.AccessoryInformation)
23
22
  .setCharacteristic(this.platform.Characteristic.Manufacturer, 'Daikin')
24
23
  .setCharacteristic(this.platform.Characteristic.Model, modelInfo)
25
24
  .setCharacteristic(this.platform.Characteristic.SerialNumber, serialNumber);
26
- this.accessory.context.device.on('updated', () => {
27
- this.platform.log.debug(`[API Syncing] Updated ${this.accessory.displayName} (${this.accessory.UUID}), LastUpdated: ${this.accessory.context.device.getLastUpdated()}`);
28
- });
25
+ const updateListener = () => {
26
+ const name = this.accessory.displayName;
27
+ const uuid = this.accessory.UUID;
28
+ const lastUpdated = this.accessory.context.device.getLastUpdated();
29
+ this.platform.log.debug(`[API Syncing] Updated ${name} (${uuid}), LastUpdated: ${lastUpdated}`);
30
+ };
31
+ this.accessory.context.device.on('updated', updateListener);
32
+ this.platform.registerDeviceListener(this.accessory, updateListener);
29
33
  }
30
- printDeviceInfo() {
34
+ printDeviceInfo(modelInfo) {
31
35
  this.platform.log.info('[Platform] Device found with id: ' + this.accessory.UUID);
32
36
  this.platform.log.info('[Platform] id: ' + this.accessory.UUID);
33
37
  this.platform.log.info('[Platform] name: ' + this.accessory.displayName);
34
38
  this.platform.log.info('[Platform] last updated: ' + this.accessory.context.device.getLastUpdated());
35
- const modelInfo = this.gatewayManagementPointId
36
- ? this.accessory.context.device.getData(this.gatewayManagementPointId, 'modelInfo', undefined).value
37
- : 'Unknown';
38
39
  this.platform.log.info('[Platform] modelInfo: ' + modelInfo);
39
40
  this.platform.log.info('[Platform] deviceModel: ' + this.accessory.context.device.getDescription().deviceModel);
40
41
  }
41
42
  /**
42
- * Log device capabilities for the given management point.
43
- * Call this from subclasses after determining the management point ID.
44
- */
43
+ * Log device capabilities for the given management point.
44
+ * Call this from subclasses after determining the management point ID.
45
+ */
45
46
  logCapabilities(managementPointId) {
46
47
  const detector = new device_1.DeviceCapabilityDetector(this.accessory.context.device, managementPointId);
47
48
  const capabilities = detector.getCapabilities();
48
- const summary = (0, device_2.getCapabilitySummary)(capabilities);
49
+ const summary = (0, device_1.getCapabilitySummary)(capabilities);
49
50
  this.platform.log.info(`[Platform] capabilities: ${summary}`);
50
51
  this.platform.log.debug(`[Platform] operation modes: ${capabilities.supportedOperationModes.join(', ')}`);
51
52
  }
@@ -56,8 +57,7 @@ class BaseAccessory {
56
57
  return null;
57
58
  }
58
59
  if (managementPoints.length >= 2) {
59
- this.platform.log.warn(`[Platform] Found more then one management point for managementPointType ${managementPointType}, we don't expect this, please open an issue on https://github.com/mp-consulting/homebridge-daikin-cloud/issues`);
60
- return null;
60
+ this.platform.log.warn(`[Platform] Found more than one management point for managementPointType ${managementPointType}, using first one. Please open an issue on https://github.com/mp-consulting/homebridge-daikin-cloud/issues`);
61
61
  }
62
62
  return managementPoints[0].embeddedId;
63
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base-accessory.js","sourceRoot":"","sources":["../../../src/accessories/base-accessory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-accessory.js","sourceRoot":"","sources":["../../../src/accessories/base-accessory.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Handles REST API calls to the Daikin Cloud.
5
5
  */
6
- import { RateLimitStatus, GatewayDevice, OAuthProvider } from './daikin-types';
6
+ import type { RateLimitStatus, GatewayDevice, OAuthProvider } from './daikin-types';
7
7
  export declare class RateLimitedError extends Error {
8
8
  readonly retryAfter: number;
9
9
  constructor(message: string, retryAfter: number);
@@ -17,11 +17,11 @@ export declare class DaikinApi {
17
17
  private readonly oauth;
18
18
  private readonly onRateLimitStatus?;
19
19
  private blockedUntil;
20
- private isRefreshing;
20
+ private refreshPromise;
21
21
  constructor(oauth: OAuthProvider, onRateLimitStatus?: ((status: RateLimitStatus) => void) | undefined);
22
22
  /**
23
- * Make a static GET request with access token (for UI)
24
- */
23
+ * Make a static GET request with access token (for UI)
24
+ */
25
25
  static requestStatic(path: string, accessToken: string): Promise<{
26
26
  data: unknown;
27
27
  headers: Record<string, string | string[] | undefined>;
@@ -30,42 +30,42 @@ export declare class DaikinApi {
30
30
  private static parseHeaderStatic;
31
31
  private static makeStaticRequest;
32
32
  /**
33
- * Get all gateway devices
34
- */
33
+ * Get all gateway devices with runtime validation
34
+ */
35
35
  getDevices(): Promise<GatewayDevice[]>;
36
36
  /**
37
- * Update device data (PATCH request)
38
- *
39
- * @param deviceId - The device ID
40
- * @param embeddedId - The management point embedded ID (e.g., 'climateControl')
41
- * @param dataPoint - The data point/characteristic name (e.g., 'temperatureControl')
42
- * @param value - The value to set
43
- * @param dataPath - Optional path within the data point (e.g., '/operationModes/heating/setpoints/roomTemperature')
44
- */
37
+ * Update device data (PATCH request)
38
+ *
39
+ * @param deviceId - The device ID
40
+ * @param embeddedId - The management point embedded ID (e.g., 'climateControl')
41
+ * @param dataPoint - The data point/characteristic name (e.g., 'temperatureControl')
42
+ * @param value - The value to set
43
+ * @param dataPath - Optional path within the data point (e.g., '/operationModes/heating/setpoints/roomTemperature')
44
+ */
45
45
  updateDevice(deviceId: string, embeddedId: string, dataPoint: string, value: unknown, dataPath?: string): Promise<void>;
46
46
  /**
47
- * Check if we're rate limited
48
- */
47
+ * Check if we're rate limited
48
+ */
49
49
  isRateLimited(): boolean;
50
50
  /**
51
- * Get time until rate limit is lifted
52
- */
51
+ * Get time until rate limit is lifted
52
+ */
53
53
  getRateLimitRetryAfter(): number;
54
54
  /**
55
- * Calculate delay for exponential backoff with jitter
56
- */
55
+ * Calculate delay for exponential backoff with jitter
56
+ */
57
57
  private getRetryDelay;
58
58
  /**
59
- * Sleep for a specified duration
60
- */
59
+ * Sleep for a specified duration
60
+ */
61
61
  private sleep;
62
62
  /**
63
- * Get human-readable name for gateway error status codes
64
- */
63
+ * Get human-readable name for gateway error status codes
64
+ */
65
65
  private getGatewayErrorName;
66
66
  /**
67
- * Make an authenticated API request
68
- */
67
+ * Make an authenticated API request
68
+ */
69
69
  private request;
70
70
  private parseHeader;
71
71
  private makeRequest;
@@ -1 +1 @@
1
- {"version":3,"file":"daikin-api.d.ts","sourceRoot":"","sources":["../../../src/api/daikin-api.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAqB,eAAe,EAAE,aAAa,EAAE,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAWjG,qBAAa,gBAAiB,SAAQ,KAAK;aAGnB,UAAU,EAAE,MAAM;gBADlC,OAAO,EAAE,MAAM,EACC,UAAU,EAAE,MAAM;CAKzC;AAED,qBAAa,eAAgB,SAAQ,KAAK;aAGlB,UAAU,EAAE,MAAM;aAClB,YAAY,EAAE,MAAM;gBAFpC,OAAO,EAAE,MAAM,EACC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM;CAK3C;AAED,qBAAa,SAAS;IAKd,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IALvC,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,YAAY,CAAS;gBAGR,KAAK,EAAE,aAAa,EACpB,iBAAiB,CAAC,YAAW,eAAe,KAAK,IAAI,aAAA;IAO1E;;OAEG;WACU,aAAa,CACtB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;QAAC,SAAS,EAAE,eAAe,CAAA;KAAE,CAAC;IA6BjH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAOhC,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAqChC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAI5C;;;;;;;;OAQG;IACG,YAAY,CACd,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,OAAO,EACd,QAAQ,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAOhB;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,sBAAsB,IAAI,MAAM;IAIhC;;OAEG;IACH,OAAO,CAAC,aAAa;IAMrB;;OAEG;IACH,OAAO,CAAC,KAAK;IAIb;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAa3B;;OAEG;YACW,OAAO;IAsGrB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,WAAW;CA4CtB"}
1
+ {"version":3,"file":"daikin-api.d.ts","sourceRoot":"","sources":["../../../src/api/daikin-api.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAcpF,qBAAa,gBAAiB,SAAQ,KAAK;aAGnB,UAAU,EAAE,MAAM;gBADtC,OAAO,EAAE,MAAM,EACK,UAAU,EAAE,MAAM;CAKzC;AAED,qBAAa,eAAgB,SAAQ,KAAK;aAGlB,UAAU,EAAE,MAAM;aAClB,YAAY,EAAE,MAAM;gBAFxC,OAAO,EAAE,MAAM,EACK,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM;CAK3C;AAED,qBAAa,SAAS;IAKd,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IALzC,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,cAAc,CAA8B;gBAG7B,KAAK,EAAE,aAAa,EACpB,iBAAiB,CAAC,GAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,aAAA;IAO5E;;SAEK;WACQ,aAAa,CACxB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;QAAC,SAAS,EAAE,eAAe,CAAA;KAAE,CAAC;IA6BjH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAShC,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAyChC;;SAEK;IACC,UAAU,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAK5C;;;;;;;;SAQK;IACC,YAAY,CAChB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,OAAO,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;IAOhB;;SAEK;IACL,aAAa,IAAI,OAAO;IAIxB;;SAEK;IACL,sBAAsB,IAAI,MAAM;IAIhC;;SAEK;IACL,OAAO,CAAC,aAAa;IAMrB;;SAEK;IACL,OAAO,CAAC,KAAK;IAIb;;SAEK;IACL,OAAO,CAAC,mBAAmB;IAa3B;;SAEK;YACS,OAAO;IA8GrB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,WAAW;CAgDpB"}
@@ -20,17 +20,29 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
20
20
  }) : function(o, v) {
21
21
  o["default"] = v;
22
22
  });
23
- var __importStar = (this && this.__importStar) || function (mod) {
24
- if (mod && mod.__esModule) return mod;
25
- var result = {};
26
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
27
- __setModuleDefault(result, mod);
28
- return result;
29
- };
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
30
40
  Object.defineProperty(exports, "__esModule", { value: true });
31
41
  exports.DaikinApi = exports.ApiTimeoutError = exports.RateLimitedError = void 0;
32
42
  const https = __importStar(require("node:https"));
43
+ const zod_1 = require("zod");
33
44
  const daikin_types_1 = require("./daikin-types");
45
+ const daikin_schemas_1 = require("./daikin-schemas");
34
46
  const constants_1 = require("../constants");
35
47
  class RateLimitedError extends Error {
36
48
  retryAfter;
@@ -56,7 +68,7 @@ class DaikinApi {
56
68
  oauth;
57
69
  onRateLimitStatus;
58
70
  blockedUntil = 0;
59
- isRefreshing = false;
71
+ refreshPromise = null;
60
72
  constructor(oauth, onRateLimitStatus) {
61
73
  this.oauth = oauth;
62
74
  this.onRateLimitStatus = onRateLimitStatus;
@@ -65,8 +77,8 @@ class DaikinApi {
65
77
  // Static utility methods (for use by homebridge-ui)
66
78
  // =========================================================================
67
79
  /**
68
- * Make a static GET request with access token (for UI)
69
- */
80
+ * Make a static GET request with access token (for UI)
81
+ */
70
82
  static async requestStatic(path, accessToken) {
71
83
  const url = `${daikin_types_1.DAIKIN_OIDC_CONFIG.apiBaseUrl}${path}`;
72
84
  const response = await DaikinApi.makeStaticRequest(url, accessToken);
@@ -92,8 +104,9 @@ class DaikinApi {
92
104
  };
93
105
  }
94
106
  static parseHeaderStatic(value) {
95
- if (!value)
107
+ if (!value) {
96
108
  return undefined;
109
+ }
97
110
  const str = Array.isArray(value) ? value[0] : value;
98
111
  const num = parseInt(str, 10);
99
112
  return isNaN(num) ? undefined : num;
@@ -120,6 +133,9 @@ class DaikinApi {
120
133
  headers: res.headers,
121
134
  }));
122
135
  });
136
+ req.setTimeout(constants_1.HTTP_REQUEST_TIMEOUT_MS, () => {
137
+ req.destroy(new Error(`Request timed out after ${constants_1.HTTP_REQUEST_TIMEOUT_MS}ms`));
138
+ });
123
139
  req.on('error', reject);
124
140
  req.end();
125
141
  });
@@ -128,20 +144,21 @@ class DaikinApi {
128
144
  // Instance methods
129
145
  // =========================================================================
130
146
  /**
131
- * Get all gateway devices
132
- */
147
+ * Get all gateway devices with runtime validation
148
+ */
133
149
  async getDevices() {
134
- return this.request('/v1/gateway-devices');
150
+ const rawDevices = await this.request('/v1/gateway-devices');
151
+ return zod_1.z.array(daikin_schemas_1.GatewayDeviceSchema).parse(rawDevices);
135
152
  }
136
153
  /**
137
- * Update device data (PATCH request)
138
- *
139
- * @param deviceId - The device ID
140
- * @param embeddedId - The management point embedded ID (e.g., 'climateControl')
141
- * @param dataPoint - The data point/characteristic name (e.g., 'temperatureControl')
142
- * @param value - The value to set
143
- * @param dataPath - Optional path within the data point (e.g., '/operationModes/heating/setpoints/roomTemperature')
144
- */
154
+ * Update device data (PATCH request)
155
+ *
156
+ * @param deviceId - The device ID
157
+ * @param embeddedId - The management point embedded ID (e.g., 'climateControl')
158
+ * @param dataPoint - The data point/characteristic name (e.g., 'temperatureControl')
159
+ * @param value - The value to set
160
+ * @param dataPath - Optional path within the data point (e.g., '/operationModes/heating/setpoints/roomTemperature')
161
+ */
145
162
  async updateDevice(deviceId, embeddedId, dataPoint, value, dataPath) {
146
163
  const urlPath = `/v1/gateway-devices/${deviceId}/management-points/${embeddedId}/characteristics/${dataPoint}`;
147
164
  // Include path in body if provided (matches mobile app format)
@@ -149,34 +166,34 @@ class DaikinApi {
149
166
  await this.request(urlPath, 'PATCH', body);
150
167
  }
151
168
  /**
152
- * Check if we're rate limited
153
- */
169
+ * Check if we're rate limited
170
+ */
154
171
  isRateLimited() {
155
172
  return this.blockedUntil > Date.now();
156
173
  }
157
174
  /**
158
- * Get time until rate limit is lifted
159
- */
175
+ * Get time until rate limit is lifted
176
+ */
160
177
  getRateLimitRetryAfter() {
161
178
  return Math.max(0, Math.ceil((this.blockedUntil - Date.now()) / constants_1.MS_PER_SECOND));
162
179
  }
163
180
  /**
164
- * Calculate delay for exponential backoff with jitter
165
- */
181
+ * Calculate delay for exponential backoff with jitter
182
+ */
166
183
  getRetryDelay(attempt) {
167
184
  const exponentialDelay = constants_1.RETRY_BASE_DELAY_MS * Math.pow(2, attempt);
168
185
  const jitter = Math.random() * constants_1.RETRY_BASE_DELAY_MS;
169
186
  return Math.min(exponentialDelay + jitter, constants_1.RETRY_MAX_DELAY_MS);
170
187
  }
171
188
  /**
172
- * Sleep for a specified duration
173
- */
189
+ * Sleep for a specified duration
190
+ */
174
191
  sleep(ms) {
175
192
  return new Promise(resolve => setTimeout(resolve, ms));
176
193
  }
177
194
  /**
178
- * Get human-readable name for gateway error status codes
179
- */
195
+ * Get human-readable name for gateway error status codes
196
+ */
180
197
  getGatewayErrorName(statusCode) {
181
198
  switch (statusCode) {
182
199
  case constants_1.HTTP_STATUS.BAD_GATEWAY:
@@ -190,8 +207,8 @@ class DaikinApi {
190
207
  }
191
208
  }
192
209
  /**
193
- * Make an authenticated API request
194
- */
210
+ * Make an authenticated API request
211
+ */
195
212
  async request(path, method = 'GET', body, retryCount = 0) {
196
213
  // Check rate limit
197
214
  if (this.isRateLimited()) {
@@ -219,22 +236,27 @@ class DaikinApi {
219
236
  case constants_1.HTTP_STATUS.BAD_REQUEST:
220
237
  throw new Error(`Bad Request (${constants_1.HTTP_STATUS.BAD_REQUEST}): ${response.body || 'No response body'}`);
221
238
  case constants_1.HTTP_STATUS.UNAUTHORIZED:
222
- // If we've exhausted retries or already refreshing, give up
223
- if (retryCount >= constants_1.MAX_RETRY_ATTEMPTS || this.isRefreshing) {
239
+ // If we've exhausted retries, give up
240
+ if (retryCount >= constants_1.MAX_RETRY_ATTEMPTS) {
224
241
  throw new Error(`Unauthorized (${constants_1.HTTP_STATUS.UNAUTHORIZED}): Token expired or invalid`);
225
242
  }
226
- // Try to refresh the token and retry the request with exponential backoff
243
+ // Deduplicate concurrent refresh requests using a shared promise
227
244
  try {
228
- this.isRefreshing = true;
229
- await this.oauth.refreshToken();
230
- this.isRefreshing = false;
245
+ if (!this.refreshPromise) {
246
+ this.refreshPromise = this.oauth.refreshToken().then(() => {
247
+ this.refreshPromise = null;
248
+ }, (err) => {
249
+ this.refreshPromise = null;
250
+ throw err;
251
+ });
252
+ }
253
+ await this.refreshPromise;
231
254
  // Apply exponential backoff delay before retry
232
255
  const delay = this.getRetryDelay(retryCount);
233
256
  await this.sleep(delay);
234
257
  return this.request(path, method, body, retryCount + 1);
235
258
  }
236
259
  catch {
237
- this.isRefreshing = false;
238
260
  throw new Error(`Unauthorized (${constants_1.HTTP_STATUS.UNAUTHORIZED}): Token refresh failed. Please re-authenticate.`);
239
261
  }
240
262
  case constants_1.HTTP_STATUS.NOT_FOUND:
@@ -267,8 +289,9 @@ class DaikinApi {
267
289
  }
268
290
  }
269
291
  parseHeader(value) {
270
- if (!value)
292
+ if (!value) {
271
293
  return undefined;
294
+ }
272
295
  const str = Array.isArray(value) ? value[0] : value;
273
296
  const num = parseInt(str, 10);
274
297
  return isNaN(num) ? undefined : num;
@@ -300,6 +323,9 @@ class DaikinApi {
300
323
  headers: res.headers,
301
324
  }));
302
325
  });
326
+ req.setTimeout(constants_1.HTTP_REQUEST_TIMEOUT_MS, () => {
327
+ req.destroy(new Error(`Request timed out after ${constants_1.HTTP_REQUEST_TIMEOUT_MS}ms`));
328
+ });
303
329
  req.on('error', reject);
304
330
  if (bodyStr) {
305
331
  req.write(bodyStr);
@@ -1 +1 @@
1
- {"version":3,"file":"daikin-api.js","sourceRoot":"","sources":["../../../src/api/daikin-api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daikin-api.js","sourceRoot":"","sources":["../../../src/api/daikin-api.ts"],"names":[],"mappings":"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"}