homebridge-ac-freedom 2.2.1 → 2.2.3

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.
package/README.md CHANGED
@@ -1,82 +1,85 @@
1
1
  <p align="center">
2
- <a href="https://homebridge.io"><img src="https://raw.githubusercontent.com/homebridge/branding/master/logos/homebridge-wordmark-logo-horizontal.png" height="60"></a>
2
+ <img src="https://raw.githubusercontent.com/azadaydinli/homebridge-ac-freedom/main/banner.svg" width="800">
3
3
  </p>
4
4
 
5
- # homebridge-ac-freedom
5
+ <span align="center">
6
+
7
+ # Homebridge AC Freedom
8
+
9
+ A [Homebridge](https://homebridge.io) plugin for controlling **AUX-based air conditioners** via **Apple HomeKit**. Works with any AC that uses the **AC Freedom** app. Supports **Cloud** (AUX API) and **Local** (Broadlink UDP) connections — no extra hub required.
6
10
 
7
11
  [![verified-by-homebridge](https://img.shields.io/badge/homebridge-verified-blueviolet?color=%23491F59&style=flat&logoColor=%23FFFFFF&logo=homebridge)](https://github.com/homebridge/homebridge/wiki/Verified-Plugins)
8
12
  [![npm](https://img.shields.io/npm/v/homebridge-ac-freedom)](https://www.npmjs.com/package/homebridge-ac-freedom)
13
+ [![npm](https://img.shields.io/npm/dw/homebridge-ac-freedom)](https://www.npmjs.com/package/homebridge-ac-freedom)
9
14
  [![npm](https://img.shields.io/npm/dt/homebridge-ac-freedom)](https://www.npmjs.com/package/homebridge-ac-freedom)
10
- [![GitHub](https://img.shields.io/github/license/azadaydinli/homebridge-ac-freedom)](https://github.com/azadaydinli/homebridge-ac-freedom/blob/main/LICENSE)
15
+ [![Ko-fi](https://img.shields.io/badge/Support%20on-Ko--fi-FF5E5B?logo=ko-fi&logoColor=white)](https://ko-fi.com/azadaydinli)
16
+ [![GitHub Sponsors](https://img.shields.io/badge/Sponsor-%E2%9D%A4-ea4aaa?logo=github)](https://github.com/sponsors/azadaydinli)
11
17
 
12
- A [Homebridge](https://homebridge.io) plugin for controlling **AUX-based air conditioners** (AUX, Ballu, Centek, Dunham Bush, Kenwood, Rinnai, Rcool, Tornado, and other brands using the **AC Freedom** app) via **Apple HomeKit**.
18
+ </span>
13
19
 
14
- Supports both **Cloud** (AUX Cloud API) and **Local** (Broadlink UDP) connections.
20
+ ---
15
21
 
16
22
  ## Features
17
23
 
18
- - **HeaterCooler** service with Auto, Cool, and Heat modes
19
- - **Fan speed** control (Auto, Mute, Low, Medium, High, Turbo) via linked Fanv2 service
20
- - **Swing** mode (vertical + horizontal)
24
+ - **HeaterCooler** tile Auto, Heat, Cool modes
25
+ - **Fan speed** control Auto / Low / Medium / High / Turbo (25% steps)
26
+ - **Swing** mode vertical + horizontal
21
27
  - **Preset switches** inside the climate card:
22
28
  - Sleep Mode
23
29
  - Health / Ionizer
24
30
  - Eco / Mildew Prevention
25
31
  - Self Clean
26
32
  - Comfortable Wind
27
- - **Display** switch (LED display on/off)
28
- - **Dual connection modes:**
29
- - **Cloud** -- AUX Cloud API (AC Freedom app account), no local network access needed
30
- - **Local** -- Direct Broadlink UDP control, no internet required
31
- - **Auto-discovery** of cloud devices (or specify a Device ID)
32
- - **Temperature step** selection (0.5 or 1 degree)
33
- - **Configurable poll interval** (5--300 seconds)
33
+ - **Display** switch LED display on/off
34
+ - **Auto-reset** fan and sleep reset to default when AC turns on or off
35
+ - **Cloud** AUX Cloud API via AC Freedom app credentials
36
+ - **Local** Direct Broadlink UDP, no internet required
37
+ - **Multi-device** configure as many ACs as needed
38
+ - Homebridge v1 & v2 compatible
39
+
40
+ ---
34
41
 
35
42
  ## Supported Brands
36
43
 
37
- Any air conditioner that works with the **AC Freedom** app is supported. Known brands include:
44
+ Any air conditioner compatible with the **AC Freedom** app is supported:
38
45
 
39
- | Brand | Brand | Brand |
40
- |-------|-------|-------|
41
- | AUX | Ballu | Centek |
42
- | Dunham Bush | Kenwood | Rinnai |
43
- | Rcool | Tornado | Akai |
44
- | Hyundai | Hisense | Royal Clima |
46
+ | | | | |
47
+ |---|---|---|---|
48
+ | AUX | Ballu | Centek | Dunham Bush |
49
+ | Kenwood | Rinnai | Rcool | Tornado |
50
+ | Akai | Hyundai | Hisense | Royal Clima |
51
+
52
+ ---
45
53
 
46
54
  ## Requirements
47
55
 
48
- - [Homebridge](https://homebridge.io) v1.6.0 or later
56
+ - [Homebridge](https://homebridge.io) v1.6.0 or later (v2 supported)
49
57
  - Node.js v18.0.0 or later
50
58
  - An AUX-compatible AC with Wi-Fi (Broadlink module)
51
- - **Cloud mode:** AC Freedom app account (email registration)
52
- - **Local mode:** AC's IP and MAC address on your local network
59
+ - **Cloud:** AC Freedom app account (email registration)
60
+ - **Local:** AC's IP and MAC address on your local network
61
+
62
+ ---
53
63
 
54
64
  ## Installation
55
65
 
56
- ### Via Homebridge UI (Recommended)
66
+ **Via Homebridge UI (recommended):**
57
67
 
58
- 1. Open the Homebridge UI
59
- 2. Go to **Plugins**
60
- 3. Search for `homebridge-ac-freedom`
61
- 4. Click **Install**
68
+ 1. Open the Homebridge UI → **Plugins**
69
+ 2. Search for `homebridge-ac-freedom`
70
+ 3. Click **Install**
62
71
 
63
- ### Via Command Line
72
+ **Via terminal:**
64
73
 
65
74
  ```bash
66
75
  npm install -g homebridge-ac-freedom
67
76
  ```
68
77
 
69
- ## Configuration
78
+ ---
70
79
 
71
- ### Using Homebridge UI
72
-
73
- The easiest way to configure the plugin is through the Homebridge UI settings page. All options are available with descriptions.
74
-
75
- ### Manual Configuration
76
-
77
- Add the following to your Homebridge `config.json`:
80
+ ## Configuration
78
81
 
79
- #### Cloud Mode
82
+ ### Cloud Mode
80
83
 
81
84
  ```json
82
85
  {
@@ -84,15 +87,12 @@ Add the following to your Homebridge `config.json`:
84
87
  {
85
88
  "platform": "AcFreedom",
86
89
  "name": "AC Freedom",
87
- "devices": [
90
+ "cloudDevices": [
88
91
  {
89
92
  "name": "Living Room AC",
90
- "connection": "cloud",
91
- "cloud": {
92
- "email": "your-email@example.com",
93
- "password": "your-password",
94
- "region": "eu"
95
- }
93
+ "email": "your-email@example.com",
94
+ "password": "your-password",
95
+ "region": "eu"
96
96
  }
97
97
  ]
98
98
  }
@@ -100,7 +100,7 @@ Add the following to your Homebridge `config.json`:
100
100
  }
101
101
  ```
102
102
 
103
- #### Local Mode
103
+ ### Local Mode
104
104
 
105
105
  ```json
106
106
  {
@@ -108,14 +108,11 @@ Add the following to your Homebridge `config.json`:
108
108
  {
109
109
  "platform": "AcFreedom",
110
110
  "name": "AC Freedom",
111
- "devices": [
111
+ "localDevices": [
112
112
  {
113
113
  "name": "Bedroom AC",
114
- "connection": "local",
115
- "local": {
116
- "ip": "192.168.1.100",
117
- "mac": "AA:BB:CC:DD:EE:FF"
118
- }
114
+ "ip": "192.168.1.100",
115
+ "mac": "AA:BB:CC:DD:EE:FF"
119
116
  }
120
117
  ]
121
118
  }
@@ -123,91 +120,109 @@ Add the following to your Homebridge `config.json`:
123
120
  }
124
121
  ```
125
122
 
126
- ### Configuration Options
127
-
128
- #### Device Options
123
+ ---
129
124
 
130
- | Option | Type | Default | Description |
131
- |--------|------|---------|-------------|
132
- | `name` | string | `"AC Freedom"` | Device name shown in HomeKit |
133
- | `connection` | string | `"cloud"` | Connection mode: `"cloud"` or `"local"` |
134
- | `pollInterval` | integer | `30` | State polling interval in seconds (5--300) |
135
- | `tempStep` | number | `0.5` | Temperature adjustment step: `0.5` or `1` |
125
+ ## Configuration Options
136
126
 
137
- #### Cloud Options
127
+ ### Cloud Device Options
138
128
 
139
- | Option | Type | Required | Description |
140
- |--------|------|----------|-------------|
141
- | `email` | string | Yes | AC Freedom app email |
142
- | `password` | string | Yes | AC Freedom app password |
143
- | `region` | string | No | Server region: `"eu"`, `"usa"`, `"cn"`, `"rus"` (default: `"eu"`) |
144
- | `deviceId` | string | No | Specific device endpoint ID (leave empty for auto-detect) |
129
+ | Option | Type | Required | Default | Description |
130
+ |--------|------|----------|---------|-------------|
131
+ | `name` | string | Yes | | Device name in HomeKit |
132
+ | `email` | string | Yes | — | AC Freedom app email |
133
+ | `password` | string | Yes | | AC Freedom app password |
134
+ | `region` | string | No | `"eu"` | Server region: `eu`, `usa`, `cn`, `rus` |
135
+ | `deviceId` | string | No | — | Specific device ID (leave empty to auto-detect) |
136
+ | `showExtras` | boolean | No | `false` | Show fan, sleep, and extra switches |
137
+ | `pollInterval` | integer | No | `30` | Polling interval in seconds (5–300) |
145
138
 
146
- #### Local Options
139
+ ### Local Device Options
147
140
 
148
- | Option | Type | Required | Description |
149
- |--------|------|----------|-------------|
150
- | `ip` | string | Yes | AC unit's IP address on your local network |
151
- | `mac` | string | Yes | AC unit's MAC address (`AA:BB:CC:DD:EE:FF` format) |
141
+ | Option | Type | Required | Default | Description |
142
+ |--------|------|----------|---------|-------------|
143
+ | `name` | string | Yes | | Device name in HomeKit |
144
+ | `ip` | string | Yes | — | AC unit's local IP address |
145
+ | `mac` | string | Yes | — | AC unit's MAC address (`AA:BB:CC:DD:EE:FF`) |
146
+ | `showExtras` | boolean | No | `false` | Show fan, sleep, and extra switches |
147
+ | `pollInterval` | integer | No | `30` | Polling interval in seconds (5–300) |
152
148
 
153
- #### Feature Switches
149
+ ### Feature Switches
154
150
 
155
151
  | Option | Type | Default | Description |
156
152
  |--------|------|---------|-------------|
157
- | `presets.sleep` | boolean | `true` | Show Sleep Mode switch |
158
- | `presets.health` | boolean | `true` | Show Health / Ionizer switch |
159
- | `presets.eco` | boolean | `true` | Show Eco / Mildew Prevention switch |
160
- | `presets.clean` | boolean | `true` | Show Self Clean switch |
161
- | `showComfWind` | boolean | `true` | Show Comfortable Wind switch |
162
- | `showDisplay` | boolean | `true` | Show Display (LED) switch |
153
+ | `presets.sleep` | boolean | `true` | Sleep Mode switch |
154
+ | `presets.health` | boolean | `true` | Health / Ionizer switch |
155
+ | `presets.eco` | boolean | `true` | Eco / Mildew Prevention switch |
156
+ | `presets.clean` | boolean | `true` | Self Clean switch |
157
+ | `showComfWind` | boolean | `true` | Comfortable Wind switch |
158
+ | `showDisplay` | boolean | `true` | Display (LED) switch |
159
+ | `showFan` | boolean | `true` | Fan speed slider |
160
+
161
+ ---
163
162
 
164
163
  ## HomeKit Climate Card
165
164
 
166
- Once configured, the AC appears as a **HeaterCooler** tile in the Home app. Tapping on it reveals:
165
+ Once configured, the AC appears as a **HeaterCooler** tile. Tapping it reveals:
167
166
 
168
- - **Temperature control** with heating/cooling thresholds
169
- - **Mode selector** (Auto / Heat / Cool)
170
- - **Fan speed** slider
171
- - **Swing** toggle
172
- - **Preset switches** (Sleep, Health, Eco, Clean, Comfortable Wind, Display)
167
+ - Temperature control with heating/cooling thresholds
168
+ - Mode selector Auto / Heat / Cool
169
+ - Fan speed slider — 0% Auto · 25% Low · 50% Medium · 75% High · 100% Turbo
170
+ - Swing toggle
171
+ - Preset switches Sleep, Health, Eco, Clean, Comfortable Wind, Display
173
172
 
174
- All linked services appear as tiles inside the climate card for quick access.
173
+ All linked services appear as tiles inside the climate card.
174
+
175
+ ---
175
176
 
176
177
  ## Cloud vs Local
177
178
 
178
- | Feature | Cloud | Local |
179
- |---------|-------|-------|
179
+ | | Cloud | Local |
180
+ |---|---|---|
180
181
  | Internet required | Yes | No |
181
- | Setup complexity | Easy (email + password) | Moderate (IP + MAC) |
182
- | Response speed | ~1-2 seconds | ~0.5 seconds |
183
- | Works outside home | Yes | No |
184
- | Firmware updates | Via AC Freedom app | N/A |
182
+ | Setup | Easy (email + password) | Moderate (IP + MAC) |
183
+ | Response time | ~12 s | ~0.5 s |
184
+ | Works remotely | Yes | No |
185
+
186
+ ---
185
187
 
186
188
  ## Troubleshooting
187
189
 
188
- ### Cloud login fails
189
- - Verify your credentials work in the **AC Freedom** app
190
- - Make sure you registered with an **email** (phone number login is not supported)
191
- - Check the **region** setting matches your account
192
- - Logging in via the AC Freedom app may invalidate the plugin session -- restart Homebridge after using the app
190
+ **Cloud login fails**
191
+ - Verify credentials work in the AC Freedom app
192
+ - Phone number login is not supported — use email registration
193
+ - Check the `region` matches your account region
194
+ - Logging into the AC Freedom app may invalidate the plugin session restart Homebridge after using the app
193
195
 
194
- ### Device not found
195
- - For cloud: leave `deviceId` empty to auto-detect, or find it in Homebridge logs
196
- - For local: ensure the AC is connected to your Wi-Fi and the IP/MAC are correct
196
+ **Device not found**
197
+ - Cloud: leave `deviceId` empty for auto-detect, or find it in Homebridge logs
198
+ - Local: confirm the AC is on your Wi-Fi and the IP/MAC are correct
197
199
 
198
- ### Poll errors ("server busy")
199
- - Transient cloud server errors are automatically suppressed
200
- - If persistent, try increasing `pollInterval` to 60 or higher
200
+ **"Server busy" errors**
201
+ - These are transient and automatically suppressed
202
+ - If persistent, increase `pollInterval` to 60 or higher
201
203
 
202
- ### AC not responding to commands
203
- - Check if the AC is powered on and connected to Wi-Fi
204
- - For local mode: ensure Homebridge and the AC are on the same network
204
+ **AC not responding**
205
+ - Check the AC is powered on and connected to Wi-Fi
206
+ - Local mode: Homebridge and AC must be on the same network
205
207
  - Try restarting Homebridge
206
208
 
209
+ ---
210
+
211
+ ## Support
212
+
213
+ If this plugin is useful to you, consider supporting its development:
214
+
215
+ [![Ko-fi](https://img.shields.io/badge/Support%20on-Ko--fi-FF5E5B?logo=ko-fi&logoColor=white)](https://ko-fi.com/azadaydinli)
216
+ [![GitHub Sponsors](https://img.shields.io/badge/Sponsor-%E2%9D%A4-ea4aaa?logo=github)](https://github.com/sponsors/azadaydinli)
217
+
218
+ ---
219
+
207
220
  ## Contributing
208
221
 
209
222
  Contributions are welcome! Please open an [issue](https://github.com/azadaydinli/homebridge-ac-freedom/issues) or submit a pull request.
210
223
 
224
+ ---
225
+
211
226
  ## License
212
227
 
213
- MIT -- see [LICENSE](LICENSE) for details.
228
+ MIT © [Azad Aydınlı](https://github.com/azadaydinli)
package/banner.svg ADDED
@@ -0,0 +1,161 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 360">
2
+ <defs>
3
+ <linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
4
+ <stop offset="0%" stop-color="#1e1433"/>
5
+ <stop offset="100%" stop-color="#0d1b3e"/>
6
+ </linearGradient>
7
+ <linearGradient id="panelGrad" x1="0%" y1="0%" x2="100%" y2="100%">
8
+ <stop offset="0%" stop-color="rgba(255,255,255,0.05)"/>
9
+ <stop offset="100%" stop-color="rgba(255,255,255,0.02)"/>
10
+ </linearGradient>
11
+ <pattern id="dots" x="0" y="0" width="32" height="32" patternUnits="userSpaceOnUse">
12
+ <circle cx="16" cy="16" r="1" fill="rgba(255,255,255,0.04)"/>
13
+ </pattern>
14
+ <!-- Glow for active arc — wide region to avoid clipping -->
15
+ <filter id="gC" x="-50%" y="-50%" width="200%" height="200%">
16
+ <feGaussianBlur stdDeviation="11" result="b"/>
17
+ <feMerge><feMergeNode in="b"/><feMergeNode in="SourceGraphic"/></feMerge>
18
+ </filter>
19
+ </defs>
20
+
21
+ <!-- Background -->
22
+ <rect width="1200" height="360" rx="24" fill="url(#bg)"/>
23
+ <rect width="1200" height="360" rx="24" fill="url(#dots)"/>
24
+
25
+ <!-- Atmospheric rings centred on thermostat -->
26
+ <circle cx="918" cy="180" r="310" fill="none" stroke="rgba(0,180,216,0.03)" stroke-width="1.5"/>
27
+ <circle cx="918" cy="180" r="210" fill="none" stroke="rgba(0,180,216,0.04)" stroke-width="1"/>
28
+
29
+ <!-- ═══════════════ LEFT: Typography ═══════════════ -->
30
+
31
+ <!-- Homebridge badge pill -->
32
+ <rect x="60" y="62" width="210" height="30" rx="15"
33
+ fill="rgba(73,31,89,0.55)" stroke="rgba(200,130,255,0.35)" stroke-width="1"/>
34
+ <circle cx="82" cy="77" r="5" fill="#c084e8"/>
35
+ <text x="152" y="82"
36
+ font-family="-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif"
37
+ font-size="13" fill="#c084e8" text-anchor="middle" font-weight="600" letter-spacing="0.4">
38
+ homebridge plugin
39
+ </text>
40
+
41
+ <!-- Plugin name -->
42
+ <text x="60" y="172"
43
+ font-family="-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif"
44
+ font-size="64" fill="white" font-weight="800" letter-spacing="-1.5">AC</text>
45
+ <text x="60" y="245"
46
+ font-family="-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif"
47
+ font-size="64" fill="white" font-weight="800" letter-spacing="-1.5">Freedom</text>
48
+
49
+ <!-- Subtitle -->
50
+ <text x="60" y="283"
51
+ font-family="-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif"
52
+ font-size="18" fill="rgba(255,255,255,0.45)">
53
+ AUX air conditioner control for HomeKit
54
+ </text>
55
+
56
+ <!-- Feature pills -->
57
+ <rect x="60" y="305" width="118" height="26" rx="13"
58
+ fill="rgba(255,255,255,0.07)" stroke="rgba(255,255,255,0.11)" stroke-width="1"/>
59
+ <text x="119" y="322"
60
+ font-family="-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif"
61
+ font-size="12" fill="rgba(255,255,255,0.65)" text-anchor="middle">Cloud + Local</text>
62
+
63
+ <rect x="188" y="305" width="112" height="26" rx="13"
64
+ fill="rgba(255,255,255,0.07)" stroke="rgba(255,255,255,0.11)" stroke-width="1"/>
65
+ <text x="244" y="322"
66
+ font-family="-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif"
67
+ font-size="12" fill="rgba(255,255,255,0.65)" text-anchor="middle">Fan Control</text>
68
+
69
+ <rect x="310" y="305" width="130" height="26" rx="13"
70
+ fill="rgba(255,255,255,0.07)" stroke="rgba(255,255,255,0.11)" stroke-width="1"/>
71
+ <text x="375" y="322"
72
+ font-family="-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif"
73
+ font-size="12" fill="rgba(255,255,255,0.65)" text-anchor="middle">Homebridge v2</text>
74
+
75
+ <!-- ═══════════════ RIGHT: Climate panel ═══════════════ -->
76
+
77
+ <!-- Glass panel -->
78
+ <rect x="690" y="38" width="456" height="284" rx="20"
79
+ fill="url(#panelGrad)" stroke="rgba(255,255,255,0.07)" stroke-width="1"/>
80
+
81
+ <!-- ── Thermostat dial ──
82
+ r=110, circumference=691.15
83
+ 270° track = 518.4 ≈ 518 | 90° gap = 172.8 ≈ 173
84
+ rotate(135°) → gap centred at 6-o'clock (bottom) -->
85
+
86
+ <!-- Outer track (dim) -->
87
+ <circle cx="918" cy="180" r="110"
88
+ fill="none" stroke="rgba(255,255,255,0.08)" stroke-width="14"
89
+ stroke-linecap="round" stroke-dasharray="518 173"
90
+ transform="rotate(135, 918, 180)"/>
91
+
92
+ <!-- Active arc glow (22 °C in 16–32 range → 37.5 % → 194 units) -->
93
+ <g filter="url(#gC)">
94
+ <circle cx="918" cy="180" r="110"
95
+ fill="none" stroke="#00b4d8" stroke-width="10" stroke-linecap="round"
96
+ stroke-dasharray="194 497" opacity="0.55"
97
+ transform="rotate(135, 918, 180)"/>
98
+ </g>
99
+
100
+ <!-- Active arc (solid, on top of glow) -->
101
+ <circle cx="918" cy="180" r="110"
102
+ fill="none" stroke="#00b4d8" stroke-width="14" stroke-linecap="round"
103
+ stroke-dasharray="194 497"
104
+ transform="rotate(135, 918, 180)"/>
105
+
106
+ <!-- Inner circle (frosted glass) -->
107
+ <circle cx="918" cy="180" r="88"
108
+ fill="rgba(13,27,62,0.55)" stroke="rgba(255,255,255,0.06)" stroke-width="1"/>
109
+
110
+ <!-- Temperature value -->
111
+ <text x="918" y="163"
112
+ font-family="-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif"
113
+ font-size="52" fill="white" font-weight="700" text-anchor="middle">22°</text>
114
+
115
+ <!-- Mode label -->
116
+ <text x="918" y="192"
117
+ font-family="-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif"
118
+ font-size="11" fill="#00b4d8" text-anchor="middle" font-weight="700" letter-spacing="3">COOL</text>
119
+
120
+ <!-- Current ambient temp -->
121
+ <text x="918" y="214"
122
+ font-family="-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif"
123
+ font-size="11" fill="rgba(255,255,255,0.28)" text-anchor="middle">Current 24°</text>
124
+
125
+ <!-- Fan speed label -->
126
+ <text x="918" y="269"
127
+ font-family="-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif"
128
+ font-size="9" fill="rgba(255,255,255,0.22)" text-anchor="middle" letter-spacing="2.5">FAN SPEED</text>
129
+
130
+ <!-- Fan speed dots: 5 dots centred at x=918, 22 px apart → start x=874 -->
131
+ <circle cx="874" cy="288" r="5" fill="#00b4d8"/>
132
+ <circle cx="896" cy="288" r="5" fill="#00b4d8" opacity="0.65"/>
133
+ <circle cx="918" cy="288" r="5" fill="#00b4d8" opacity="0.38"/>
134
+ <circle cx="940" cy="288" r="5" fill="rgba(255,255,255,0.12)"/>
135
+ <circle cx="962" cy="288" r="5" fill="rgba(255,255,255,0.12)"/>
136
+
137
+ <!-- ── Snowflake (upper-left of panel, x=730 y=85) ── -->
138
+ <!-- Arms -->
139
+ <line x1="730" y1="72" x2="730" y2="98" stroke="rgba(0,180,216,0.42)" stroke-width="2" stroke-linecap="round"/>
140
+ <line x1="717" y1="85" x2="743" y2="85" stroke="rgba(0,180,216,0.42)" stroke-width="2" stroke-linecap="round"/>
141
+ <line x1="721" y1="76" x2="739" y2="94" stroke="rgba(0,180,216,0.42)" stroke-width="2" stroke-linecap="round"/>
142
+ <line x1="739" y1="76" x2="721" y2="94" stroke="rgba(0,180,216,0.42)" stroke-width="2" stroke-linecap="round"/>
143
+ <!-- Branch tips — top -->
144
+ <line x1="730" y1="72" x2="726" y2="76" stroke="rgba(0,180,216,0.32)" stroke-width="1.5" stroke-linecap="round"/>
145
+ <line x1="730" y1="72" x2="734" y2="76" stroke="rgba(0,180,216,0.32)" stroke-width="1.5" stroke-linecap="round"/>
146
+ <!-- Branch tips — bottom -->
147
+ <line x1="730" y1="98" x2="726" y2="94" stroke="rgba(0,180,216,0.32)" stroke-width="1.5" stroke-linecap="round"/>
148
+ <line x1="730" y1="98" x2="734" y2="94" stroke="rgba(0,180,216,0.32)" stroke-width="1.5" stroke-linecap="round"/>
149
+ <!-- Branch tips — left -->
150
+ <line x1="717" y1="85" x2="721" y2="81" stroke="rgba(0,180,216,0.32)" stroke-width="1.5" stroke-linecap="round"/>
151
+ <line x1="717" y1="85" x2="721" y2="89" stroke="rgba(0,180,216,0.32)" stroke-width="1.5" stroke-linecap="round"/>
152
+ <!-- Branch tips — right -->
153
+ <line x1="743" y1="85" x2="739" y2="81" stroke="rgba(0,180,216,0.32)" stroke-width="1.5" stroke-linecap="round"/>
154
+ <line x1="743" y1="85" x2="739" y2="89" stroke="rgba(0,180,216,0.32)" stroke-width="1.5" stroke-linecap="round"/>
155
+
156
+ <!-- ── Wind lines (right of panel) ── -->
157
+ <line x1="1082" y1="152" x2="1128" y2="152" stroke="rgba(0,180,216,0.28)" stroke-width="2.5" stroke-linecap="round"/>
158
+ <line x1="1088" y1="170" x2="1134" y2="170" stroke="rgba(0,180,216,0.20)" stroke-width="2" stroke-linecap="round"/>
159
+ <line x1="1078" y1="188" x2="1124" y2="188" stroke="rgba(0,180,216,0.13)" stroke-width="1.5" stroke-linecap="round"/>
160
+ <line x1="1085" y1="206" x2="1128" y2="206" stroke="rgba(0,180,216,0.07)" stroke-width="1" stroke-linecap="round"/>
161
+ </svg>
@@ -2,6 +2,7 @@
2
2
  "pluginAlias": "AcFreedom",
3
3
  "pluginType": "platform",
4
4
  "singular": true,
5
+ "customUi": true,
5
6
  "headerDisplay": "AUX Air Conditioner control via Broadlink (local) or AUX Cloud API.",
6
7
  "schema": {
7
8
  "type": "object",
@@ -0,0 +1,42 @@
1
+ {
2
+ "devices": "الأجهزة",
3
+ "deviceName": "اسم الجهاز",
4
+ "connection": "الاتصال",
5
+ "cloud": "السحابة",
6
+ "local": "محلي",
7
+ "cloudSettings": "إعدادات السحابة",
8
+ "email": "البريد الإلكتروني",
9
+ "emailHint": "بريد حساب تطبيق AC Freedom",
10
+ "password": "كلمة المرور",
11
+ "passwordHint": "كلمة مرور تطبيق AC Freedom",
12
+ "region": "المنطقة",
13
+ "regionHint": "منطقة الخادم لحسابك",
14
+ "regionEu": "أوروبا",
15
+ "regionUsa": "الولايات المتحدة",
16
+ "regionCn": "الصين",
17
+ "regionRus": "روسيا",
18
+ "deviceId": "معرّف الجهاز",
19
+ "deviceIdOptional": "اختياري",
20
+ "deviceIdHint": "اتركه فارغاً للكشف التلقائي عن الجهاز الأول",
21
+ "localSettings": "الإعدادات المحلية",
22
+ "ip": "عنوان IP",
23
+ "ipHint": "عنوان IP المحلي للمكيف (مثال: 192.168.1.100)",
24
+ "mac": "عنوان MAC",
25
+ "macHint": "الصيغة: AA:BB:CC:DD:EE:FF",
26
+ "features": "الميزات",
27
+ "fan": "مروحة",
28
+ "sleep": "نوم",
29
+ "display": "شاشة",
30
+ "health": "صحة",
31
+ "clean": "تنظيف",
32
+ "eco": "اقتصادي",
33
+ "comfWind": "رياح مريحة",
34
+ "settings": "الإعدادات",
35
+ "tempStep": "خطوة الحرارة",
36
+ "tempStepHint": "أدنى تعديل لدرجة الحرارة",
37
+ "pollInterval": "فترة الاستطلاع (ثانية)",
38
+ "pollIntervalHint": "تكرار جلب حالة المكيف (5–300)",
39
+ "addDevice": "إضافة جهاز",
40
+ "remove": "إزالة",
41
+ "featuresHint": "للحصول على مظهر HomeKit أنيق، يُوصى بتفعيل المروحة ووضع إعداد مسبق واحد فقط — يُقترح اختيار النوم."
42
+ }
@@ -0,0 +1,42 @@
1
+ {
2
+ "devices": "Geräte",
3
+ "deviceName": "Gerätename",
4
+ "connection": "Verbindung",
5
+ "cloud": "Cloud",
6
+ "local": "Lokal",
7
+ "cloudSettings": "Cloud-Einstellungen",
8
+ "email": "E-Mail",
9
+ "emailHint": "E-Mail des AC Freedom App-Kontos",
10
+ "password": "Passwort",
11
+ "passwordHint": "Passwort der AC Freedom App",
12
+ "region": "Region",
13
+ "regionHint": "Server-Region Ihres Kontos",
14
+ "regionEu": "Europa",
15
+ "regionUsa": "USA",
16
+ "regionCn": "China",
17
+ "regionRus": "Russland",
18
+ "deviceId": "Geräte-ID",
19
+ "deviceIdOptional": "optional",
20
+ "deviceIdHint": "Leer lassen für automatische Erkennung",
21
+ "localSettings": "Lokale Einstellungen",
22
+ "ip": "IP-Adresse",
23
+ "ipHint": "Lokale IP des Klimageräts (z.B. 192.168.1.100)",
24
+ "mac": "MAC-Adresse",
25
+ "macHint": "Format: AA:BB:CC:DD:EE:FF",
26
+ "features": "Funktionen",
27
+ "fan": "Lüfter",
28
+ "sleep": "Schlaf",
29
+ "display": "Display",
30
+ "health": "Gesundheit",
31
+ "clean": "Reinigung",
32
+ "eco": "Eco",
33
+ "comfWind": "Komfortwind",
34
+ "settings": "Einstellungen",
35
+ "tempStep": "Temperaturschritt",
36
+ "tempStepHint": "Minimale Temperaturanpassung",
37
+ "pollInterval": "Abfrageintervall (Sekunden)",
38
+ "pollIntervalHint": "Wie oft der AC-Status abgerufen wird (5–300)",
39
+ "addDevice": "Gerät hinzufügen",
40
+ "remove": "Entfernen",
41
+ "featuresHint": "Für ein übersichtliches HomeKit-Layout wird empfohlen, nur den Lüfter und einen einzigen Voreinstellungsmodus zu aktivieren — empfohlen wird Schlaf."
42
+ }
@@ -0,0 +1,42 @@
1
+ {
2
+ "devices": "Devices",
3
+ "deviceName": "Device Name",
4
+ "connection": "Connection",
5
+ "cloud": "Cloud",
6
+ "local": "Local",
7
+ "cloudSettings": "Cloud Settings",
8
+ "email": "Email",
9
+ "emailHint": "AC Freedom app account email",
10
+ "password": "Password",
11
+ "passwordHint": "AC Freedom app password",
12
+ "region": "Region",
13
+ "regionHint": "Server region for your account",
14
+ "regionEu": "Europe",
15
+ "regionUsa": "USA",
16
+ "regionCn": "China",
17
+ "regionRus": "Russia",
18
+ "deviceId": "Device ID",
19
+ "deviceIdOptional": "optional",
20
+ "deviceIdHint": "Leave empty to auto-detect first device",
21
+ "localSettings": "Local Settings",
22
+ "ip": "IP Address",
23
+ "ipHint": "AC unit's local IP (e.g. 192.168.1.100)",
24
+ "mac": "MAC Address",
25
+ "macHint": "Format: AA:BB:CC:DD:EE:FF",
26
+ "features": "Features",
27
+ "fan": "Fan",
28
+ "sleep": "Sleep",
29
+ "display": "Display",
30
+ "health": "Health",
31
+ "clean": "Clean",
32
+ "eco": "Eco",
33
+ "comfWind": "Comf. Wind",
34
+ "settings": "Settings",
35
+ "tempStep": "Temperature Step",
36
+ "tempStepHint": "Minimum temperature adjustment increment",
37
+ "pollInterval": "Poll Interval (seconds)",
38
+ "pollIntervalHint": "How often to fetch the AC state (5–300)",
39
+ "addDevice": "Add Device",
40
+ "remove": "Remove",
41
+ "featuresHint": "For a clean HomeKit appearance, it is recommended to enable Fan and only one preset mode — Sleep is the suggested choice."
42
+ }