@mp-consulting/homebridge-daikin-cloud 1.0.2 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/.claude/settings.local.json +3 -1
  2. package/CHANGELOG.md +37 -0
  3. package/README.md +49 -10
  4. package/config.schema.json +75 -15
  5. package/dist/src/api/daikin-api.d.ts +2 -3
  6. package/dist/src/api/daikin-api.d.ts.map +1 -1
  7. package/dist/src/api/daikin-api.js +20 -19
  8. package/dist/src/api/daikin-api.js.map +1 -1
  9. package/dist/src/api/daikin-controller.d.ts +49 -5
  10. package/dist/src/api/daikin-controller.d.ts.map +1 -1
  11. package/dist/src/api/daikin-controller.js +136 -7
  12. package/dist/src/api/daikin-controller.js.map +1 -1
  13. package/dist/src/api/daikin-device.d.ts +6 -1
  14. package/dist/src/api/daikin-device.d.ts.map +1 -1
  15. package/dist/src/api/daikin-device.js +43 -0
  16. package/dist/src/api/daikin-device.js.map +1 -1
  17. package/dist/src/api/daikin-mobile-oauth.d.ts +62 -0
  18. package/dist/src/api/daikin-mobile-oauth.d.ts.map +1 -0
  19. package/dist/src/api/daikin-mobile-oauth.js +409 -0
  20. package/dist/src/api/daikin-mobile-oauth.js.map +1 -0
  21. package/dist/src/api/daikin-types.d.ts +49 -1
  22. package/dist/src/api/daikin-types.d.ts.map +1 -1
  23. package/dist/src/api/daikin-types.js +14 -2
  24. package/dist/src/api/daikin-types.js.map +1 -1
  25. package/dist/src/api/daikin-websocket.d.ts +140 -0
  26. package/dist/src/api/daikin-websocket.d.ts.map +1 -0
  27. package/dist/src/api/daikin-websocket.js +261 -0
  28. package/dist/src/api/daikin-websocket.js.map +1 -0
  29. package/dist/src/api/index.d.ts +2 -0
  30. package/dist/src/api/index.d.ts.map +1 -1
  31. package/dist/src/api/index.js +2 -0
  32. package/dist/src/api/index.js.map +1 -1
  33. package/dist/src/constants.d.ts +52 -0
  34. package/dist/src/constants.d.ts.map +1 -0
  35. package/dist/src/constants.js +73 -0
  36. package/dist/src/constants.js.map +1 -0
  37. package/dist/src/platform.d.ts +6 -0
  38. package/dist/src/platform.d.ts.map +1 -1
  39. package/dist/src/platform.js +202 -21
  40. package/dist/src/platform.js.map +1 -1
  41. package/dist/src/services/climate-control.service.d.ts.map +1 -1
  42. package/dist/src/services/climate-control.service.js +7 -5
  43. package/dist/src/services/climate-control.service.js.map +1 -1
  44. package/dist/src/services/hot-water-tank.service.d.ts.map +1 -1
  45. package/dist/src/services/hot-water-tank.service.js +6 -3
  46. package/dist/src/services/hot-water-tank.service.js.map +1 -1
  47. package/homebridge-ui/public/index.html +105 -12
  48. package/homebridge-ui/public/script.js +385 -4
  49. package/homebridge-ui/public/styles.css +42 -0
  50. package/homebridge-ui/server.js +170 -18
  51. package/package.json +4 -2
  52. package/test/hbConfig/.daikin-mobile-tokenset +8 -0
  53. package/test/hbConfig/accessories/.cachedAccessories.bak +1 -1
  54. package/test/hbConfig/accessories/cachedAccessories +1 -1
  55. package/test/hbConfig/backups/config-backups/config.json.1767965217715 +44 -0
  56. package/test/hbConfig/backups/config-backups/config.json.1767965419624 +25 -0
  57. package/test/hbConfig/backups/config-backups/config.json.1767965870934 +32 -0
  58. package/test/hbConfig/backups/config-backups/config.json.1767977675045 +32 -0
  59. package/test/hbConfig/backups/config-backups/config.json.1767977677222 +33 -0
  60. package/test/hbConfig/backups/config-backups/config.json.1767977710226 +33 -0
  61. package/test/hbConfig/backups/config-backups/config.json.1767977741397 +33 -0
  62. package/test/hbConfig/backups/config-backups/config.json.1767977977093 +35 -0
  63. package/test/hbConfig/backups/config-backups/config.json.1767977981773 +35 -0
  64. package/test/hbConfig/backups/config-backups/config.json.1767977986514 +35 -0
  65. package/test/hbConfig/backups/config-backups/config.json.1767977991174 +35 -0
  66. package/test/hbConfig/backups/config-backups/config.json.1767979424487 +35 -0
  67. package/test/hbConfig/backups/config-backups/config.json.1767979424987 +35 -0
  68. package/test/hbConfig/backups/config-backups/config.json.1767979432646 +47 -0
  69. package/test/hbConfig/backups/config-backups/config.json.1767979433150 +47 -0
  70. package/test/hbConfig/backups/config-backups/config.json.1767979436933 +47 -0
  71. package/test/hbConfig/backups/config-backups/config.json.1767979437438 +47 -0
  72. package/test/hbConfig/backups/config-backups/config.json.1767979441676 +47 -0
  73. package/test/hbConfig/backups/config-backups/config.json.1767979442180 +47 -0
  74. package/test/hbConfig/backups/config-backups/config.json.1767979466735 +47 -0
  75. package/test/hbConfig/backups/config-backups/config.json.1767979903636 +47 -0
  76. package/test/hbConfig/backups/config-backups/config.json.1767979904135 +47 -0
  77. package/test/hbConfig/backups/config-backups/config.json.1767979906606 +47 -0
  78. package/test/hbConfig/backups/config-backups/config.json.1767979907108 +47 -0
  79. package/test/hbConfig/config.json +6 -3
  80. package/test/hbConfig/persist/AccessoryInfo.1E4A432551BA.json +1 -1
  81. package/test/hbConfig/tmp/daikin_request/api.onecta.daikineurope.com_01-09-2026-16-09-04/request_12214 +1 -0
  82. package/test/hbConfig/tmp/daikin_request/api.onecta.daikineurope.com_01-09-2026-16-09-04/request_12215 +1 -0
  83. package/test/hbConfig/tmp/daikin_request/api.onecta.daikineurope.com_01-09-2026-16-09-04/request_12216 +1 -0
  84. package/test/hbConfig/tmp/daikin_request/cdc.daikin.eu_01-09-2026-16-08-45/request_12195 +1 -0
  85. package/test/hbConfig/tmp/daikin_request/cdc.daikin.eu_01-09-2026-16-08-45/request_12196 +1 -0
  86. package/test/hbConfig/tmp/daikin_request/cdc.daikin.eu_01-09-2026-16-08-45/request_12197 +1 -0
  87. package/test/hbConfig/tmp/daikin_request/cdc.daikin.eu_01-09-2026-16-08-45/request_12198 +1 -0
  88. package/test/hbConfig/tmp/daikin_request/cdc.daikin.eu_01-09-2026-16-08-45/request_12200 +1 -0
  89. package/test/hbConfig/tmp/daikin_request/cdc.daikin.eu_01-09-2026-16-08-45/request_12201 +1 -0
  90. package/test/hbConfig/tmp/daikin_request/cdc.daikin.eu_01-09-2026-16-08-45/request_12202 +1 -0
  91. package/test/hbConfig/tmp/daikin_request/cdc.daikin.eu_01-09-2026-16-08-45/request_12203 +1 -0
  92. package/test/hbConfig/tmp/daikin_request/cdc.daikin.eu_01-09-2026-16-08-45/request_12204 +1 -0
  93. package/test/hbConfig/tmp/daikin_request/cdc.daikin.eu_01-09-2026-16-08-45/request_12205 +1 -0
  94. package/test/hbConfig/tmp/daikin_request/cdc.daikin.eu_01-09-2026-16-08-45/request_12206 +1 -0
  95. package/test/hbConfig/tmp/daikin_request/cdc.daikin.eu_01-09-2026-16-08-45/request_12207 +1 -0
  96. package/test/hbConfig/tmp/daikin_request/cdc.daikin.eu_01-09-2026-16-08-45/request_12208 +1 -0
  97. package/test/hbConfig/tmp/daikin_request/cdc.daikin.eu_01-09-2026-16-08-45/request_12209 +1 -0
  98. package/test/hbConfig/tmp/daikin_request/cdc.daikin.eu_01-09-2026-16-08-45/request_12210 +1 -0
  99. package/test/hbConfig/tmp/daikin_request/idp.onecta.daikineurope.com_01-09-2026-16-08-54/request_12211 +1 -0
  100. package/test/hbConfig/tmp/daikin_request/idp.onecta.daikineurope.com_01-09-2026-16-08-54/request_12212 +1 -0
  101. package/test/hbConfig/tmp/daikin_request/idp.onecta.daikineurope.com_01-09-2026-16-08-54/request_12213 +1 -0
  102. package/test/hbConfig/tmp/daikin_request/request_12217 +1 -0
  103. package/test/mobile-tokens.json +8 -0
  104. package/test/test-gigya-auth.js +443 -0
  105. package/test/test-mobile-oauth.js +175 -0
  106. package/test/test-websocket-mobile.js +123 -0
  107. package/test/test-websocket.js +116 -0
  108. package/test/hbConfig/.daikin-controller-cloud-tokenset +0 -8
@@ -4,7 +4,9 @@
4
4
  "Bash(npm test)",
5
5
  "Bash(npm run lint)",
6
6
  "Bash(curl:*)",
7
- "Bash(npm run build:*)"
7
+ "Bash(npm run build:*)",
8
+ "Bash(grep:*)",
9
+ "Bash(python3:*)"
8
10
  ]
9
11
  }
10
12
  }
package/CHANGELOG.md CHANGED
@@ -4,6 +4,43 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/) and this project adheres to [Semantic Versioning](https://semver.org/).
6
6
 
7
+ ## [1.1.0] - 2026-01-09
8
+
9
+ ### Added
10
+ - **Mobile App Authentication**: New authentication method using Daikin Onecta mobile app credentials
11
+ - 5000 API calls/day (vs 200 for Developer Portal)
12
+ - No developer portal account required
13
+ - Uses same credentials as Daikin Onecta mobile app
14
+ - **WebSocket Real-time Updates**: Instant device state changes without polling (Mobile App mode)
15
+ - Temperature updates pushed to HomeKit immediately
16
+ - Operation mode changes reflected instantly
17
+ - On/off state synchronization in real-time
18
+ - **Dynamic Settings UI**: Settings automatically adjust based on authentication mode
19
+ - Recommended values shown for each mode
20
+ - WebSocket toggle (Mobile App only)
21
+ - Settings subtabs for better organization (Features, Polling, Network, Devices)
22
+ - **Constants Module**: Centralized configuration constants for better maintainability
23
+
24
+ ### Changed
25
+ - Settings page now uses tabbed layout for better organization
26
+ - Update interval can now be as low as 1 minute (Mobile App mode)
27
+ - Force update delay can now be as low as 5 seconds
28
+ - Improved rate limit display in UI shows auth mode limits
29
+
30
+ ### Fixed
31
+ - Temperature validation to prevent undefined value warnings
32
+ - Default temperature values when sensors are unavailable
33
+
34
+ ## [1.0.3] - 2026-01-09
35
+
36
+ ### Added
37
+ - Auto-detection of server IP address for OAuth callback configuration
38
+ - Server info endpoint (`/server/info`) to retrieve Homebridge server IP
39
+
40
+ ### Changed
41
+ - Improved OAuth callback response page with modern styling
42
+ - Callback server address field now auto-populates with detected IP
43
+
7
44
  ## [1.0.2] - 2026-01-09
8
45
 
9
46
  ### Added
package/README.md CHANGED
@@ -10,6 +10,7 @@ A [Homebridge](https://homebridge.io) plugin that integrates Daikin air conditio
10
10
  - **Operation Modes**: Cooling, heating, and auto modes
11
11
  - **Fan Control**: Adjust fan speed from the accessory settings
12
12
  - **Swing Mode**: Enable/disable swing (if supported by your device)
13
+ - **Real-time Updates**: WebSocket support for instant device state changes (Mobile App mode)
13
14
  - **Extra Features** (individually configurable):
14
15
  - Powerful mode (`showPowerfulMode`)
15
16
  - Econo mode (`showEconoMode`)
@@ -21,12 +22,22 @@ A [Homebridge](https://homebridge.io) plugin that integrates Daikin air conditio
21
22
 
22
23
  > **Note**: HomeKit doesn't natively support all Daikin operation modes. Extra features appear as switches in the Home app. Enable them individually in the plugin settings UI.
23
24
 
25
+ ## Authentication Methods
26
+
27
+ This plugin supports two authentication methods:
28
+
29
+ | Method | API Calls/Day | WebSocket | Setup |
30
+ |--------|--------------|-----------|-------|
31
+ | **Mobile App** | 5000 | Yes | Email/password (same as Onecta app) |
32
+ | **Developer Portal** | 200 | No | OAuth with developer credentials |
33
+
34
+ **Recommended**: Mobile App authentication provides more API calls and real-time WebSocket updates.
35
+
24
36
  ## Requirements
25
37
 
26
38
  - Node.js >= 18.15.0
27
39
  - Homebridge >= 1.5.0
28
40
  - A Daikin account with devices registered in the Onecta app
29
- - Daikin Developer Portal credentials (see [Setup](#setup))
30
41
 
31
42
  ## Installation
32
43
 
@@ -38,7 +49,19 @@ npm install -g @mp-consulting/homebridge-daikin-cloud
38
49
 
39
50
  ## Setup
40
51
 
41
- ### 1. Create a Daikin Developer App
52
+ ### Option 1: Mobile App Authentication (Recommended)
53
+
54
+ 1. Open the Homebridge UI and go to the plugin settings
55
+ 2. Go to the **Authentication** tab
56
+ 3. Select **Mobile App** from the authentication method dropdown
57
+ 4. Click **Configure Credentials**
58
+ 5. Enter your Daikin Onecta account email and password
59
+ 6. Click **Test & Save Credentials**
60
+ 7. Restart Homebridge
61
+
62
+ ### Option 2: Developer Portal Authentication
63
+
64
+ #### 1. Create a Daikin Developer App
42
65
 
43
66
  1. Go to the [Daikin Developer Portal](https://developer.cloud.daikineurope.com/)
44
67
  2. Sign in and navigate to **My Apps** (top-right menu)
@@ -49,7 +72,7 @@ npm install -g @mp-consulting/homebridge-daikin-cloud
49
72
  - **Redirect URI**: `https://<your-homebridge-ip>:<callback-port>` (e.g., `https://192.168.1.100:8582`)
50
73
  5. Save and note your **Client ID** and **Client Secret**
51
74
 
52
- ### 2. Configure the Plugin
75
+ #### 2. Configure the Plugin
53
76
 
54
77
  Add the platform to your Homebridge `config.json`:
55
78
 
@@ -58,6 +81,7 @@ Add the platform to your Homebridge `config.json`:
58
81
  "platforms": [
59
82
  {
60
83
  "platform": "DaikinCloud",
84
+ "authMode": "developer_portal",
61
85
  "clientId": "<your-client-id>",
62
86
  "clientSecret": "<your-client-secret>",
63
87
  "oidcCallbackServerBindAddr": "0.0.0.0",
@@ -68,7 +92,7 @@ Add the platform to your Homebridge `config.json`:
68
92
  }
69
93
  ```
70
94
 
71
- ### 3. Authenticate
95
+ #### 3. Authenticate
72
96
 
73
97
  1. Restart Homebridge
74
98
  2. Open the Homebridge UI and go to the plugin settings
@@ -79,13 +103,17 @@ Add the platform to your Homebridge `config.json`:
79
103
 
80
104
  | Option | Type | Default | Description |
81
105
  |--------|------|---------|-------------|
82
- | `clientId` | string | *required* | Your Daikin Developer App Client ID |
83
- | `clientSecret` | string | *required* | Your Daikin Developer App Client Secret |
84
- | `callbackServerExternalAddress` | string | *required* | External IP/hostname for OAuth callback |
106
+ | `authMode` | string | `developer_portal` | Authentication method: `developer_portal` or `mobile_app` |
107
+ | `email` | string | - | Daikin account email (Mobile App mode) |
108
+ | `password` | string | - | Daikin account password (Mobile App mode) |
109
+ | `clientId` | string | - | Daikin Developer App Client ID (Developer Portal mode) |
110
+ | `clientSecret` | string | - | Daikin Developer App Client Secret (Developer Portal mode) |
111
+ | `callbackServerExternalAddress` | string | auto-detected | External IP/hostname for OAuth callback |
85
112
  | `callbackServerPort` | number | `8582` | Port for OAuth callback server (1-65535) |
86
113
  | `oidcCallbackServerBindAddr` | string | `0.0.0.0` | Address to bind callback server (valid IPv4) |
87
- | `updateIntervalInMinutes` | number | `15` | Polling interval for device updates (1-60) |
114
+ | `updateIntervalInMinutes` | number | `15` | Polling interval (Developer Portal: 15+ min, Mobile App: 1-5 min) |
88
115
  | `forceUpdateDelay` | number | `60000` | Delay (ms) before refreshing after a change |
116
+ | `enableWebSocket` | boolean | `true` | Enable real-time updates (Mobile App mode only) |
89
117
  | `excludedDevicesByDeviceId` | string[] | `[]` | Device IDs to exclude from HomeKit |
90
118
  | `showPowerfulMode` | boolean | `false` | Show Powerful mode switch |
91
119
  | `showEconoMode` | boolean | `false` | Show Econo mode switch |
@@ -97,11 +125,16 @@ Add the platform to your Homebridge `config.json`:
97
125
 
98
126
  ## API Rate Limits
99
127
 
100
- The Daikin API limits you to **200 requests per day**. The plugin manages this by:
128
+ | Mode | Daily Limit | Recommended Polling |
129
+ |------|-------------|---------------------|
130
+ | Developer Portal | 200 calls/day | 15+ minutes |
131
+ | Mobile App | 5000 calls/day | 1-5 minutes |
101
132
 
102
- - Polling at configurable intervals (default: 15 minutes)
133
+ The plugin manages rate limits by:
134
+ - Polling at configurable intervals
103
135
  - Triggering immediate updates after changes
104
136
  - Blocking requests when the rate limit is reached
137
+ - Using WebSocket for real-time updates (Mobile App mode)
105
138
 
106
139
  ## Fan Speed
107
140
 
@@ -142,6 +175,12 @@ rm ~/.homebridge/.daikin-controller-cloud-tokenset
142
175
  - Verify the device is registered in the Daikin Onecta app
143
176
  - Check if the device ID is in `excludedDevicesByDeviceId`
144
177
 
178
+ ### WebSocket Not Connecting (Mobile App Mode)
179
+
180
+ - Ensure `enableWebSocket` is set to `true`
181
+ - Check Homebridge logs for WebSocket connection errors
182
+ - Verify your credentials are valid by testing the connection in the UI
183
+
145
184
  ## Supported Devices
146
185
 
147
186
  Any device compatible with the [Daikin Onecta app](https://www.daikin.eu/en_us/product-group/control-systems/onecta/connectable-units.html), including:
@@ -3,37 +3,47 @@
3
3
  "pluginType": "platform",
4
4
  "singular": true,
5
5
  "customUi": true,
6
- "headerDisplay": "Use the **Custom UI** tab above to authenticate with Daikin Cloud. The setup wizard will guide you through the OAuth process.",
7
- "footerDisplay": "For help, visit the [GitHub repository](https://github.com/mp-consulting/homebridge-daikin-cloud). API credentials can be obtained from the [Daikin Developer Portal](https://developer.cloud.daikineurope.com/).",
6
+ "headerDisplay": "Use the **Custom UI** tab above to authenticate with Daikin Cloud. Choose your authentication method below.",
7
+ "footerDisplay": "For help, visit the [GitHub repository](https://github.com/mp-consulting/homebridge-daikin-cloud).",
8
8
  "schema": {
9
9
  "type": "object",
10
10
  "properties": {
11
+ "authMode": {
12
+ "title": "Authentication Method",
13
+ "description": "Choose how to authenticate with Daikin Cloud",
14
+ "type": "string",
15
+ "default": "developer_portal",
16
+ "oneOf": [
17
+ {"title": "Developer Portal (200 API calls/day)", "enum": ["developer_portal"]},
18
+ {"title": "Mobile App (5000 API calls/day + WebSocket)", "enum": ["mobile_app"]}
19
+ ]
20
+ },
11
21
  "clientId": {
12
22
  "title": "Client ID",
13
23
  "description": "From your Daikin Developer Portal application",
14
24
  "type": "string",
15
- "required": true,
16
25
  "x-schema-form": {
17
- "placeholder": "Enter your Client ID"
26
+ "placeholder": "Enter your Client ID",
27
+ "condition": "model.authMode !== 'mobile_app'"
18
28
  }
19
29
  },
20
30
  "clientSecret": {
21
31
  "title": "Client Secret",
22
32
  "description": "Keep this secret and never share it",
23
33
  "type": "string",
24
- "required": true,
25
34
  "x-schema-form": {
26
35
  "type": "password",
27
- "placeholder": "Enter your Client Secret"
36
+ "placeholder": "Enter your Client Secret",
37
+ "condition": "model.authMode !== 'mobile_app'"
28
38
  }
29
39
  },
30
40
  "callbackServerExternalAddress": {
31
41
  "title": "Callback Server Address",
32
42
  "description": "Your Homebridge server's external IP or domain (not localhost)",
33
43
  "type": "string",
34
- "required": true,
35
44
  "x-schema-form": {
36
- "placeholder": "e.g., 192.168.1.100"
45
+ "placeholder": "e.g., 192.168.1.100",
46
+ "condition": "model.authMode !== 'mobile_app'"
37
47
  }
38
48
  },
39
49
  "callbackServerPort": {
@@ -43,7 +53,8 @@
43
53
  "required": false,
44
54
  "default": "8582",
45
55
  "x-schema-form": {
46
- "placeholder": "8582"
56
+ "placeholder": "8582",
57
+ "condition": "model.authMode !== 'mobile_app'"
47
58
  }
48
59
  },
49
60
  "oidcCallbackServerBindAddr": {
@@ -57,7 +68,27 @@
57
68
  "titleMap": {
58
69
  "127.0.0.1": "127.0.0.1 (localhost only - recommended)",
59
70
  "0.0.0.0": "0.0.0.0 (all network interfaces)"
60
- }
71
+ },
72
+ "condition": "model.authMode !== 'mobile_app'"
73
+ }
74
+ },
75
+ "daikinEmail": {
76
+ "title": "Daikin Account Email",
77
+ "description": "Your Daikin Onecta account email address",
78
+ "type": "string",
79
+ "x-schema-form": {
80
+ "placeholder": "your@email.com",
81
+ "condition": "model.authMode === 'mobile_app'"
82
+ }
83
+ },
84
+ "daikinPassword": {
85
+ "title": "Daikin Account Password",
86
+ "description": "Your Daikin Onecta account password",
87
+ "type": "string",
88
+ "x-schema-form": {
89
+ "type": "password",
90
+ "placeholder": "Enter your password",
91
+ "condition": "model.authMode === 'mobile_app'"
61
92
  }
62
93
  },
63
94
  "showExtraFeatures": {
@@ -83,26 +114,53 @@
83
114
  "title": "Update Interval (minutes)",
84
115
  "type": "integer",
85
116
  "default": 15,
86
- "minimum": 5,
117
+ "minimum": 1,
87
118
  "maximum": 60,
88
- "description": "How often to poll the Daikin API. Recommended: 15 minutes (96 API calls/day). Rate limit: 200 calls/day."
119
+ "description": "How often to poll the Daikin API. Developer Portal: 15+ min recommended (200 calls/day limit). Mobile App: 1-5 min recommended (5000 calls/day)."
89
120
  },
90
121
  "forceUpdateDelay": {
91
122
  "title": "Force Update Delay (ms)",
92
123
  "type": "integer",
93
- "minimum": 10000,
124
+ "minimum": 5000,
94
125
  "maximum": 300000,
95
126
  "default": 60000,
96
- "description": "Delay after a change before refreshing data from API. The Daikin API may not reflect changes immediately."
127
+ "description": "Delay after a change before refreshing data from API. Developer Portal: 60s recommended. Mobile App: 10s recommended."
128
+ },
129
+ "enableWebSocket": {
130
+ "title": "Enable WebSocket (Mobile App only)",
131
+ "type": "boolean",
132
+ "default": true,
133
+ "description": "Enable real-time updates via WebSocket. Only available with Mobile App authentication. Provides instant device state updates."
97
134
  }
98
135
  }
99
136
  },
100
137
  "layout": [
101
138
  {
102
139
  "type": "fieldset",
103
- "title": "Authentication",
140
+ "title": "Authentication Method",
141
+ "description": "Choose your authentication method",
142
+ "expandable": false,
143
+ "items": [
144
+ "authMode"
145
+ ]
146
+ },
147
+ {
148
+ "type": "fieldset",
149
+ "title": "Mobile App Authentication",
150
+ "description": "Use your Daikin Onecta account credentials (same as the mobile app). Benefits: 5000 API calls/day + real-time WebSocket updates.",
151
+ "expandable": false,
152
+ "condition": "model.authMode === 'mobile_app'",
153
+ "items": [
154
+ "daikinEmail",
155
+ "daikinPassword"
156
+ ]
157
+ },
158
+ {
159
+ "type": "fieldset",
160
+ "title": "Developer Portal Authentication",
104
161
  "description": "Daikin Developer Portal credentials",
105
162
  "expandable": false,
163
+ "condition": "model.authMode !== 'mobile_app'",
106
164
  "items": [
107
165
  "clientId",
108
166
  "clientSecret"
@@ -114,6 +172,7 @@
114
172
  "description": "OAuth callback server configuration",
115
173
  "expandable": true,
116
174
  "expanded": true,
175
+ "condition": "model.authMode !== 'mobile_app'",
117
176
  "items": [
118
177
  "callbackServerExternalAddress",
119
178
  "callbackServerPort",
@@ -137,6 +196,7 @@
137
196
  "expandable": true,
138
197
  "expanded": false,
139
198
  "items": [
199
+ "enableWebSocket",
140
200
  "updateIntervalInMinutes",
141
201
  "forceUpdateDelay",
142
202
  "excludedDevicesByDeviceId"
@@ -3,8 +3,7 @@
3
3
  *
4
4
  * Handles REST API calls to the Daikin Cloud.
5
5
  */
6
- import { RateLimitStatus, GatewayDevice } from './daikin-types';
7
- import { DaikinOAuth } from './daikin-oauth';
6
+ import { RateLimitStatus, GatewayDevice, OAuthProvider } from './daikin-types';
8
7
  export declare class RateLimitedError extends Error {
9
8
  readonly retryAfter: number;
10
9
  constructor(message: string, retryAfter: number);
@@ -13,7 +12,7 @@ export declare class DaikinApi {
13
12
  private readonly oauth;
14
13
  private readonly onRateLimitStatus?;
15
14
  private blockedUntil;
16
- constructor(oauth: DaikinOAuth, onRateLimitStatus?: ((status: RateLimitStatus) => void) | undefined);
15
+ constructor(oauth: OAuthProvider, onRateLimitStatus?: ((status: RateLimitStatus) => void) | undefined);
17
16
  /**
18
17
  * Make a static GET request with access token (for UI)
19
18
  */
@@ -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,EAAC,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAE3C,qBAAa,gBAAiB,SAAQ,KAAK;aAGnB,UAAU,EAAE,MAAM;gBADlC,OAAO,EAAE,MAAM,EACC,UAAU,EAAE,MAAM;CAKzC;AAED,qBAAa,SAAS;IAId,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAJvC,OAAO,CAAC,YAAY,CAAK;gBAGJ,KAAK,EAAE,WAAW,EAClB,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;;OAEG;IACG,YAAY,CACd,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC;IAKhB;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,sBAAsB,IAAI,MAAM;IAIhC;;OAEG;YACW,OAAO;IAmErB,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;AAGH,OAAO,EAAqB,eAAe,EAAE,aAAa,EAAE,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAGjG,qBAAa,gBAAiB,SAAQ,KAAK;aAGnB,UAAU,EAAE,MAAM;gBADlC,OAAO,EAAE,MAAM,EACC,UAAU,EAAE,MAAM;CAKzC;AAED,qBAAa,SAAS;IAId,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAJvC,OAAO,CAAC,YAAY,CAAK;gBAGJ,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;;OAEG;IACG,YAAY,CACd,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC;IAKhB;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,sBAAsB,IAAI,MAAM;IAIhC;;OAEG;YACW,OAAO;IAmErB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,WAAW;CA4CtB"}
@@ -31,6 +31,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
31
31
  exports.DaikinApi = exports.RateLimitedError = void 0;
32
32
  const https = __importStar(require("node:https"));
33
33
  const daikin_types_1 = require("./daikin-types");
34
+ const constants_1 = require("../constants");
34
35
  class RateLimitedError extends Error {
35
36
  retryAfter;
36
37
  constructor(message, retryAfter) {
@@ -63,10 +64,10 @@ class DaikinApi {
63
64
  limitDay: DaikinApi.parseHeaderStatic(response.headers['x-ratelimit-limit-day']),
64
65
  remainingDay: DaikinApi.parseHeaderStatic(response.headers['x-ratelimit-remaining-day']),
65
66
  };
66
- if (response.statusCode === 401) {
67
+ if (response.statusCode === constants_1.HTTP_STATUS.UNAUTHORIZED) {
67
68
  throw new Error('Token expired or invalid');
68
69
  }
69
- if (response.statusCode === 429) {
70
+ if (response.statusCode === constants_1.HTTP_STATUS.TOO_MANY_REQUESTS) {
70
71
  throw new Error('Rate limit exceeded');
71
72
  }
72
73
  if (response.statusCode >= 400) {
@@ -137,7 +138,7 @@ class DaikinApi {
137
138
  * Get time until rate limit is lifted
138
139
  */
139
140
  getRateLimitRetryAfter() {
140
- return Math.max(0, Math.ceil((this.blockedUntil - Date.now()) / 1000));
141
+ return Math.max(0, Math.ceil((this.blockedUntil - Date.now()) / constants_1.MS_PER_SECOND));
141
142
  }
142
143
  /**
143
144
  * Make an authenticated API request
@@ -163,23 +164,23 @@ class DaikinApi {
163
164
  }
164
165
  // Handle response codes
165
166
  switch (response.statusCode) {
166
- case 200:
167
- case 204:
167
+ case constants_1.HTTP_STATUS.OK:
168
+ case constants_1.HTTP_STATUS.NO_CONTENT:
168
169
  return response.body ? JSON.parse(response.body) : null;
169
- case 400:
170
- throw new Error(`Bad Request (400): ${response.body || 'No response body'}`);
171
- case 401:
172
- throw new Error('Unauthorized (401): Token expired or invalid');
173
- case 404:
174
- throw new Error(`Not Found (404): ${response.body || 'Resource not found'}`);
175
- case 409:
176
- throw new Error(`Conflict (409): ${response.body || 'Request conflict'}`);
177
- case 422:
178
- throw new Error(`Unprocessable Entity (422): ${response.body || 'Invalid request'}`);
179
- case 429: {
180
- const retryAfter = this.parseHeader(response.headers['retry-after']) || 60;
181
- const blockedFor = Math.min(retryAfter, 86400); // Max 24 hours
182
- this.blockedUntil = Date.now() + blockedFor * 1000;
170
+ case constants_1.HTTP_STATUS.BAD_REQUEST:
171
+ throw new Error(`Bad Request (${constants_1.HTTP_STATUS.BAD_REQUEST}): ${response.body || 'No response body'}`);
172
+ case constants_1.HTTP_STATUS.UNAUTHORIZED:
173
+ throw new Error(`Unauthorized (${constants_1.HTTP_STATUS.UNAUTHORIZED}): Token expired or invalid`);
174
+ case constants_1.HTTP_STATUS.NOT_FOUND:
175
+ throw new Error(`Not Found (${constants_1.HTTP_STATUS.NOT_FOUND}): ${response.body || 'Resource not found'}`);
176
+ case constants_1.HTTP_STATUS.CONFLICT:
177
+ throw new Error(`Conflict (${constants_1.HTTP_STATUS.CONFLICT}): ${response.body || 'Request conflict'}`);
178
+ case constants_1.HTTP_STATUS.UNPROCESSABLE_ENTITY:
179
+ throw new Error(`Unprocessable Entity (${constants_1.HTTP_STATUS.UNPROCESSABLE_ENTITY}): ${response.body || 'Invalid request'}`);
180
+ case constants_1.HTTP_STATUS.TOO_MANY_REQUESTS: {
181
+ const retryAfter = this.parseHeader(response.headers['retry-after']) || constants_1.DEFAULT_RETRY_AFTER_SECONDS;
182
+ const blockedFor = Math.min(retryAfter, constants_1.MAX_RATE_LIMIT_BLOCK_SECONDS);
183
+ this.blockedUntil = Date.now() + blockedFor * constants_1.MS_PER_SECOND;
183
184
  throw new RateLimitedError(`Rate limited. Retry after ${retryAfter} seconds.`, blockedFor);
184
185
  }
185
186
  default:
@@ -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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"}
@@ -1,17 +1,41 @@
1
1
  /**
2
2
  * Daikin Cloud Controller
3
3
  *
4
- * Main controller that ties together OAuth, API, and device management.
4
+ * Main controller that ties together OAuth, API, WebSocket, and device management.
5
+ * Supports both Developer Portal and Mobile App authentication methods.
5
6
  */
6
7
  /// <reference types="node" />
7
8
  import { EventEmitter } from 'node:events';
8
- import { DaikinClientConfig, TokenSet } from './daikin-types';
9
+ import { DaikinClientConfig, DaikinControllerConfig, TokenSet } from './daikin-types';
9
10
  import { DaikinCloudDevice } from './daikin-device';
11
+ import { WebSocketState } from './daikin-websocket';
10
12
  export declare class DaikinCloudController extends EventEmitter {
11
13
  private readonly oauth;
14
+ private readonly mobileOAuth?;
15
+ private readonly devPortalOAuth?;
12
16
  private readonly api;
17
+ private readonly websocket;
18
+ private readonly authMode;
13
19
  private devices;
14
- constructor(config: DaikinClientConfig);
20
+ private websocketEnabled;
21
+ constructor(config: DaikinControllerConfig | DaikinClientConfig);
22
+ /**
23
+ * Get the authentication mode
24
+ */
25
+ getAuthMode(): 'developer_portal' | 'mobile_app';
26
+ /**
27
+ * Authenticate with mobile app credentials (only for mobile_app mode)
28
+ * Must be called before using the API when using mobile_app mode without existing tokens.
29
+ */
30
+ authenticateMobile(): Promise<TokenSet>;
31
+ /**
32
+ * Set up WebSocket event handlers
33
+ */
34
+ private setupWebSocketHandlers;
35
+ /**
36
+ * Handle device updates from WebSocket
37
+ */
38
+ private handleWebSocketDeviceUpdate;
15
39
  /**
16
40
  * Check if authenticated
17
41
  */
@@ -25,14 +49,14 @@ export declare class DaikinCloudController extends EventEmitter {
25
49
  */
26
50
  getTokenSet(): TokenSet | null;
27
51
  /**
28
- * Build authorization URL
52
+ * Build authorization URL (Developer Portal mode only)
29
53
  */
30
54
  buildAuthUrl(state?: string): {
31
55
  url: string;
32
56
  state: string;
33
57
  };
34
58
  /**
35
- * Exchange authorization code for tokens
59
+ * Exchange authorization code for tokens (Developer Portal mode only)
36
60
  */
37
61
  exchangeCode(code: string): Promise<TokenSet>;
38
62
  /**
@@ -55,6 +79,26 @@ export declare class DaikinCloudController extends EventEmitter {
55
79
  * Get rate limit retry time
56
80
  */
57
81
  getRateLimitRetryAfter(): number;
82
+ /**
83
+ * Enable and connect WebSocket for real-time updates
84
+ */
85
+ enableWebSocket(): Promise<void>;
86
+ /**
87
+ * Disable and disconnect WebSocket
88
+ */
89
+ disableWebSocket(): void;
90
+ /**
91
+ * Check if WebSocket is enabled
92
+ */
93
+ isWebSocketEnabled(): boolean;
94
+ /**
95
+ * Check if WebSocket is connected
96
+ */
97
+ isWebSocketConnected(): boolean;
98
+ /**
99
+ * Get WebSocket connection state
100
+ */
101
+ getWebSocketState(): WebSocketState;
58
102
  }
59
103
  export { DaikinCloudDevice } from './daikin-device';
60
104
  export { RateLimitedError } from './daikin-api';
@@ -1 +1 @@
1
- {"version":3,"file":"daikin-controller.d.ts","sourceRoot":"","sources":["../../../src/api/daikin-controller.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AACzC,OAAO,EAAC,kBAAkB,EAAmB,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAG7E,OAAO,EAAC,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAElD,qBAAa,qBAAsB,SAAQ,YAAY;IACnD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;IACpC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAY;IAChC,OAAO,CAAC,OAAO,CAA2B;gBAE9B,MAAM,EAAE,kBAAkB;IAetC;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACH,kBAAkB,IAAI,IAAI,GAAG,IAAI;IAIjC;;OAEG;IACH,WAAW,IAAI,QAAQ,GAAG,IAAI;IAI9B;;OAEG;IACH,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAI5D;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAInD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAoBrD;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1C;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,sBAAsB,IAAI,MAAM;CAGnC;AAGD,OAAO,EAAC,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAC,gBAAgB,EAAC,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AACvC,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"daikin-controller.d.ts","sourceRoot":"","sources":["../../../src/api/daikin-controller.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;;AAEH,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AACzC,OAAO,EACH,kBAAkB,EAClB,sBAAsB,EAGtB,QAAQ,EAEX,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EAAC,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAkB,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAEnE,qBAAa,qBAAsB,SAAQ,YAAY;IACnD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwF;IAC9G,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAoB;IACjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAc;IAC9C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAY;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoC;IAC7D,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,gBAAgB,CAAS;gBAErB,MAAM,EAAE,sBAAsB,GAAG,kBAAkB;IAoD/D;;OAEG;IACH,WAAW,IAAI,kBAAkB,GAAG,YAAY;IAIhD;;;OAGG;IACG,kBAAkB,IAAI,OAAO,CAAC,QAAQ,CAAC;IAO7C;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkB9B;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAYnC;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACH,kBAAkB,IAAI,IAAI,GAAG,IAAI;IAIjC;;OAEG;IACH,WAAW,IAAI,QAAQ,GAAG,IAAI;IAI9B;;OAEG;IACH,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAO5D;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAOnD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAQjC;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAoBrD;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1C;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,sBAAsB,IAAI,MAAM;IAQhC;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAStC;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAKxB;;OAEG;IACH,kBAAkB,IAAI,OAAO;IAI7B;;OAEG;IACH,oBAAoB,IAAI,OAAO;IAI/B;;OAEG;IACH,iBAAiB,IAAI,cAAc;CAGtC;AAGD,OAAO,EAAC,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAC,gBAAgB,EAAC,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AACvC,cAAc,gBAAgB,CAAC"}