homebridge-ac-freedom 2.2.1 → 2.2.2
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 +125 -110
- package/banner.svg +161 -0
- package/config.schema.json +1 -0
- package/homebridge-ui/public/i18n/ar.json +41 -0
- package/homebridge-ui/public/i18n/de.json +41 -0
- package/homebridge-ui/public/i18n/en.json +41 -0
- package/homebridge-ui/public/i18n/es.json +41 -0
- package/homebridge-ui/public/i18n/fr.json +41 -0
- package/homebridge-ui/public/i18n/it.json +41 -0
- package/homebridge-ui/public/i18n/ja.json +41 -0
- package/homebridge-ui/public/i18n/ko.json +41 -0
- package/homebridge-ui/public/i18n/nl.json +41 -0
- package/homebridge-ui/public/i18n/pl.json +41 -0
- package/homebridge-ui/public/i18n/pt.json +41 -0
- package/homebridge-ui/public/i18n/ru.json +41 -0
- package/homebridge-ui/public/i18n/tr.json +41 -0
- package/homebridge-ui/public/i18n/zh-CN.json +41 -0
- package/homebridge-ui/public/index.html +480 -0
- package/package.json +11 -1
package/README.md
CHANGED
|
@@ -1,82 +1,85 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<
|
|
2
|
+
<img src="https://raw.githubusercontent.com/azadaydinli/homebridge-ac-freedom/main/banner.svg" width="800">
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
|
-
|
|
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
|
[](https://github.com/homebridge/homebridge/wiki/Verified-Plugins)
|
|
8
12
|
[](https://www.npmjs.com/package/homebridge-ac-freedom)
|
|
13
|
+
[](https://www.npmjs.com/package/homebridge-ac-freedom)
|
|
9
14
|
[](https://www.npmjs.com/package/homebridge-ac-freedom)
|
|
10
|
-
[](https://ko-fi.com/azadaydinli)
|
|
16
|
+
[](https://github.com/sponsors/azadaydinli)
|
|
11
17
|
|
|
12
|
-
|
|
18
|
+
</span>
|
|
13
19
|
|
|
14
|
-
|
|
20
|
+
---
|
|
15
21
|
|
|
16
22
|
## Features
|
|
17
23
|
|
|
18
|
-
- **HeaterCooler**
|
|
19
|
-
- **Fan speed** control
|
|
20
|
-
- **Swing** mode
|
|
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
|
|
28
|
-
- **
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
- **
|
|
32
|
-
-
|
|
33
|
-
|
|
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
|
|
44
|
+
Any air conditioner compatible with the **AC Freedom** app is supported:
|
|
38
45
|
|
|
39
|
-
|
|
|
40
|
-
|
|
41
|
-
| AUX | Ballu | Centek |
|
|
42
|
-
|
|
|
43
|
-
|
|
|
44
|
-
|
|
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
|
|
52
|
-
- **Local
|
|
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
|
-
|
|
66
|
+
**Via Homebridge UI (recommended):**
|
|
57
67
|
|
|
58
|
-
1. Open the Homebridge UI
|
|
59
|
-
2.
|
|
60
|
-
3.
|
|
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
|
-
|
|
72
|
+
**Via terminal:**
|
|
64
73
|
|
|
65
74
|
```bash
|
|
66
75
|
npm install -g homebridge-ac-freedom
|
|
67
76
|
```
|
|
68
77
|
|
|
69
|
-
|
|
78
|
+
---
|
|
70
79
|
|
|
71
|
-
|
|
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
|
-
|
|
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
|
-
"
|
|
90
|
+
"cloudDevices": [
|
|
88
91
|
{
|
|
89
92
|
"name": "Living Room AC",
|
|
90
|
-
"
|
|
91
|
-
"
|
|
92
|
-
|
|
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
|
-
|
|
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
|
-
"
|
|
111
|
+
"localDevices": [
|
|
112
112
|
{
|
|
113
113
|
"name": "Bedroom AC",
|
|
114
|
-
"
|
|
115
|
-
"
|
|
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
|
-
|
|
127
|
-
|
|
128
|
-
#### Device Options
|
|
123
|
+
---
|
|
129
124
|
|
|
130
|
-
|
|
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
|
-
|
|
127
|
+
### Cloud Device Options
|
|
138
128
|
|
|
139
|
-
| Option | Type | Required | Description |
|
|
140
|
-
|
|
141
|
-
| `
|
|
142
|
-
| `
|
|
143
|
-
| `
|
|
144
|
-
| `
|
|
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
|
-
|
|
139
|
+
### Local Device Options
|
|
147
140
|
|
|
148
|
-
| Option | Type | Required | Description |
|
|
149
|
-
|
|
150
|
-
| `
|
|
151
|
-
| `
|
|
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
|
-
|
|
149
|
+
### Feature Switches
|
|
154
150
|
|
|
155
151
|
| Option | Type | Default | Description |
|
|
156
152
|
|--------|------|---------|-------------|
|
|
157
|
-
| `presets.sleep` | boolean | `true` |
|
|
158
|
-
| `presets.health` | boolean | `true` |
|
|
159
|
-
| `presets.eco` | boolean | `true` |
|
|
160
|
-
| `presets.clean` | boolean | `true` |
|
|
161
|
-
| `showComfWind` | boolean | `true` |
|
|
162
|
-
| `showDisplay` | boolean | `true` |
|
|
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
|
|
165
|
+
Once configured, the AC appears as a **HeaterCooler** tile. Tapping it reveals:
|
|
167
166
|
|
|
168
|
-
-
|
|
169
|
-
-
|
|
170
|
-
-
|
|
171
|
-
-
|
|
172
|
-
-
|
|
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
|
|
173
|
+
All linked services appear as tiles inside the climate card.
|
|
174
|
+
|
|
175
|
+
---
|
|
175
176
|
|
|
176
177
|
## Cloud vs Local
|
|
177
178
|
|
|
178
|
-
|
|
|
179
|
-
|
|
179
|
+
| | Cloud | Local |
|
|
180
|
+
|---|---|---|
|
|
180
181
|
| Internet required | Yes | No |
|
|
181
|
-
| Setup
|
|
182
|
-
| Response
|
|
183
|
-
| Works
|
|
184
|
-
|
|
182
|
+
| Setup | Easy (email + password) | Moderate (IP + MAC) |
|
|
183
|
+
| Response time | ~1–2 s | ~0.5 s |
|
|
184
|
+
| Works remotely | Yes | No |
|
|
185
|
+
|
|
186
|
+
---
|
|
185
187
|
|
|
186
188
|
## Troubleshooting
|
|
187
189
|
|
|
188
|
-
|
|
189
|
-
- Verify
|
|
190
|
-
-
|
|
191
|
-
- Check the
|
|
192
|
-
- Logging
|
|
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
|
-
|
|
195
|
-
-
|
|
196
|
-
-
|
|
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
|
-
|
|
199
|
-
-
|
|
200
|
-
- If persistent,
|
|
200
|
+
**"Server busy" errors**
|
|
201
|
+
- These are transient and automatically suppressed
|
|
202
|
+
- If persistent, increase `pollInterval` to 60 or higher
|
|
201
203
|
|
|
202
|
-
|
|
203
|
-
- Check
|
|
204
|
-
-
|
|
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
|
+
[](https://ko-fi.com/azadaydinli)
|
|
216
|
+
[](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
|
|
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>
|
package/config.schema.json
CHANGED
|
@@ -0,0 +1,41 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
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
|
+
}
|