iobroker.anker-solix 0.9.7 → 0.9.9
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/LICENSE +21 -21
- package/README.md +361 -357
- package/admin/jsonConfig.json +97 -28
- package/io-package.json +27 -1
- package/package.json +2 -1
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 MatthiasUlrich1 <info@my-smart-home-support.de>
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 MatthiasUlrich1 <info@my-smart-home-support.de>
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,357 +1,361 @@
|
|
|
1
|
-
# ioBroker.anker-solix
|
|
2
|
-
|
|
3
|
-
[](https://www.npmjs.com/package/iobroker.anker-solix)
|
|
4
|
-
|
|
5
|
-
ioBroker adapter for **Anker Solix** power systems (Solarbank, Smart Meter, PPS, EV charger, and more). It is based on the Home Assistant integration [thomluther/ha-anker-solix](https://github.com/thomluther/ha-anker-solix) and uses the same unofficial **solixapi** Python library.
|
|
6
|
-
|
|
7
|
-
A small **Python bridge** (persistent daemon, like HA) polls the Anker cloud and optional MQTT, then exposes values as ioBroker states. Optional entity groups (since v0.9.0) mirror HA’s scope: only **Core** is on by default to limit API load.
|
|
8
|
-
|
|
9
|
-
## Table of contents
|
|
10
|
-
|
|
11
|
-
1. [Disclaimer & usage terms](#disclaimer--usage-terms)
|
|
12
|
-
2. [How this adapter works in ioBroker](#how-this-adapter-works-in-iobroker)
|
|
13
|
-
3. [Requirements & installation](#requirements--installation)
|
|
14
|
-
4. [Configuration](#configuration)
|
|
15
|
-
5. [Anker account & login cache](#anker-account--login-cache)
|
|
16
|
-
6. [Limitations](#limitations)
|
|
17
|
-
7. [Supported devices](#supported-devices)
|
|
18
|
-
8. [State structure & entity groups](#state-structure--entity-groups)
|
|
19
|
-
9. [MQTT](#mqtt-managed-devices)
|
|
20
|
-
10. [Special device notes](#special-device-notes)
|
|
21
|
-
11. [Troubleshooting login / poll](#troubleshooting-login--poll)
|
|
22
|
-
12. [Services](#services)
|
|
23
|
-
13. [Credits & further reading](#credits--further-reading)
|
|
24
|
-
14. [Changelog](#changelog)
|
|
25
|
-
15. [Publishing](#publishing-npm--iobroker-catalog)
|
|
26
|
-
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
## Disclaimer & usage terms
|
|
30
|
-
|
|
31
|
-
This adapter is **not** affiliated with Anker. Trademarks and product names belong to their respective owners.
|
|
32
|
-
|
|
33
|
-
The adapter uses an **unofficial** Python library to talk to the Anker Power **cloud API** (same as the mobile app). That API can change or break at any time. Improper settings may affect devices; the user accepts these risks when enabling the instance (**Terms** tab). Future adapter updates may extend monitoring or controls.
|
|
34
|
-
|
|
35
|
-
---
|
|
36
|
-
|
|
37
|
-
## How this adapter works in ioBroker
|
|
38
|
-
|
|
39
|
-
| Layer | Role |
|
|
40
|
-
|-------|------|
|
|
41
|
-
| **Node.js adapter** | Instance config, scheduling, ioBroker states, control queue |
|
|
42
|
-
| **Python bridge** (`python/bridge.py`) | Long-lived session: API + optional MQTT (HA-style) |
|
|
43
|
-
| **solixapi** | Cloud login, sites/devices, energy stats, MQTT map |
|
|
44
|
-
| **authcache** | `iobroker-data/<instance>/authcache/<email>.json` — reused after successful API login |
|
|
45
|
-
|
|
46
|
-
Poll interval should be **60–180 s** (same recommendation as HA). Site list is updated every cycle; device/site details and energy data run on a slower interval (`deviceDetailMultiplier`, default every 10th poll).
|
|
47
|
-
|
|
48
|
-
> **Important:** The cloud API is **mandatory**. MQTT alone is not enough for full system data. This adapter does **not** replace local BLE or Modbus integrations — see [Additional resources](#credits--further-reading).
|
|
49
|
-
|
|
50
|
-
---
|
|
51
|
-
|
|
52
|
-
## Requirements & installation
|
|
53
|
-
|
|
54
|
-
- ioBroker **js-controller >= 6**, **admin >= 7.6**
|
|
55
|
-
- **Node.js >= 22**
|
|
56
|
-
- **Python 3.12+** on the ioBroker host (`python3-venv` + `python3-pip` recommended on Debian/Ubuntu)
|
|
57
|
-
|
|
58
|
-
Python dependencies install into the adapter folder (`python/.venv` or `python/site-packages`). Since v0.2.0: automatic on start (**Options** → `autoInstallPython`) or button **Install Python dependencies**.
|
|
59
|
-
|
|
60
|
-
Install via ioBroker (recommended):
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
iobroker install anker-solix
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
After changing the adapter files locally, upload the instance:
|
|
67
|
-
|
|
68
|
-
```bash
|
|
69
|
-
iobroker upload anker-solix
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
**Multihost:** use `--host "PC(SmartHome)"` with quotes if the name contains special characters.
|
|
73
|
-
|
|
74
|
-
Remove legacy symlink if present: `rm -f /opt/iobroker/node_modules/iobroker.AnkerSolix`
|
|
75
|
-
|
|
76
|
-
Manual Python setup (if needed):
|
|
77
|
-
|
|
78
|
-
```bash
|
|
79
|
-
cd node_modules/iobroker.anker-solix
|
|
80
|
-
python3 -m venv python/.venv && python/.venv/bin/pip install -r python/requirements.txt
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
---
|
|
84
|
-
|
|
85
|
-
## Configuration
|
|
86
|
-
|
|
87
|
-
1. Create instance: `iobroker add anker-solix`
|
|
88
|
-
2. **Account:** Anker e-mail, password, country code (e.g. `DE`) — **save after entering password**
|
|
89
|
-
3. **Terms:** accept unofficial API usage
|
|
90
|
-
4. **Options:** poll interval 60–180 s, **MQTT** if needed, `deviceDetailMultiplier` (HA default: 10)
|
|
91
|
-
5. **Devices:** **Load devices**, optional site ID / device SN filter
|
|
92
|
-
6. **Entities** (v0.9.0+): enable optional groups; only **Core** on by default → **restart adapter** after changes
|
|
93
|
-
|
|
94
|
-
Do **not** use **Clear Anker login cache** unless you need a deliberate re-login (wrong account, corrupted file). Clearing forces a new cloud login and often triggers captcha on server hosts — see [Troubleshooting](#troubleshooting-login--poll).
|
|
95
|
-
|
|
96
|
-
---
|
|
97
|
-
|
|
98
|
-
## Anker account & login cache
|
|
99
|
-
|
|
100
|
-
After the **first successful API login**, the adapter stores tokens in:
|
|
101
|
-
|
|
102
|
-
`iobroker-data/anker-solix.0/authcache/<your-email>.json`
|
|
103
|
-
|
|
104
|
-
(Filename must match the e-mail in **Account** exactly.)
|
|
105
|
-
|
|
106
|
-
Since Anker app **3.10** (mid-2025), one account can often be used on **multiple clients in parallel** (app + ioBroker + HA). Older docs about “only one token” are less critical today, but a **failed re-login** from ioBroker still cannot refresh the file if Anker returns captcha.
|
|
107
|
-
|
|
108
|
-
**Shared / member accounts:** A family-shared account may see fewer API details than the owner account (same as HA).
|
|
109
|
-
|
|
110
|
-
More account notes: [HA INFO.md – accounts](https://github.com/thomluther/ha-anker-solix/blob/main/INFO.md).
|
|
111
|
-
|
|
112
|
-
---
|
|
113
|
-
|
|
114
|
-
## Limitations
|
|
115
|
-
|
|
116
|
-
- **Unofficial API** — no documentation; endpoints can change anytime.
|
|
117
|
-
- **EU vs COM cloud** — wrong **country** in config → login works but **no systems/devices**. Do not switch countries after pairing devices.
|
|
118
|
-
- **Stale cloud data** if device Wi‑Fi is offline; use cloud/MQTT connection indicators when enabled.
|
|
119
|
-
- **MQTT** updates depend on device publish cycle; some values only with **real-time trigger** (high traffic if 24/7).
|
|
120
|
-
- **Standalone devices** (PPS, charger, cooler not in a power system) have **little or no API energy data** — MQTT may be required ([HA limitations](https://github.com/thomluther/ha-anker-solix#limitations)).
|
|
121
|
-
- **Dynamic tariff** beyond Nordpool: forecast/price entities may be wrong or read-only.
|
|
122
|
-
- **Captcha (100032)** on direct API login from VPS/VPN/datacenter — see [Troubleshooting](#troubleshooting-login--poll). Copy `authcache` from HA or another working setup if ioBroker cannot log in once.
|
|
123
|
-
|
|
124
|
-
To help add devices: export anonymized data via HA [export systems](https://github.com/thomluther/ha-anker-solix/blob/main/INFO.md#export-systems-action) or [anker-solix-api export_system.py](https://github.com/thomluther/anker-solix-api#export_systempy).
|
|
125
|
-
|
|
126
|
-
---
|
|
127
|
-
|
|
128
|
-
## Supported devices
|
|
129
|
-
|
|
130
|
-
Same device coverage as [ha-anker-solix](https://github.com/thomluther/ha-anker-solix#supported-sensors-and-devices) (via solixapi). In ioBroker, data appears under state IDs by device type (`solarbank`, `smartmeter`, `combiner_box`, `system`, …).
|
|
131
|
-
|
|
132
|
-
| Device type | Examples / notes |
|
|
133
|
-
|-------------|------------------|
|
|
134
|
-
| **system / site** | Power system from the Anker app (= API “site”) |
|
|
135
|
-
| **solarbank** | E1600 (Gen1), SB2 Pro/Plus/AC, SB3 E2700 — API + MQTT |
|
|
136
|
-
| **combiner_box** | Power Dock (multisystem) — merged controls in ioBroker when applicable |
|
|
137
|
-
| **smartmeter** | Anker 3-phase, US meter, Shelly 3EM / 3EM Pro |
|
|
138
|
-
| **inverter** | MI80 standalone (virtual site in API) |
|
|
139
|
-
| **smartplug** | Smart Plug 2500 W |
|
|
140
|
-
| **pps** / **solarbank_pps** | Portable power stations — mostly MQTT |
|
|
141
|
-
| **ev_charger** | V1 Smart EV Charger — mostly MQTT |
|
|
142
|
-
| **vehicle** | Virtual EVs for charger accounts — read-oriented in ioBroker |
|
|
143
|
-
| **powerpanel** / **hes** | US Power Panel, X1 HES — limited API, heavy stats polling |
|
|
144
|
-
| **charger** | Prime / charging stations — MQTT |
|
|
145
|
-
| **home_backup** | E10, AX170 — very limited API |
|
|
146
|
-
|
|
147
|
-
Device hierarchy (how HA structures entities): [discussion #239](https://github.com/thomluther/ha-anker-solix/discussions/239).
|
|
148
|
-
|
|
149
|
-
---
|
|
150
|
-
|
|
151
|
-
## State structure & entity groups
|
|
152
|
-
|
|
153
|
-
Typical paths (instance `anker-solix.0`):
|
|
154
|
-
|
|
155
|
-
- `anker-solix.0.solarbank.<deviceId>.sensors.*` — power, SOC, etc.
|
|
156
|
-
- `anker-solix.0.solarbank.<deviceId>.control.*` — writable controls where supported
|
|
157
|
-
- `anker-solix.0.<device>.<id>.statistics.*` — daily kWh (enable **Entities** → energy statistics)
|
|
158
|
-
- `anker-solix.0.smartmeter.<deviceId>.sensors.*`
|
|
159
|
-
- `anker-solix.0.services.*` — export, schedule, refresh (button states)
|
|
160
|
-
- `anker-solix.0.info.connection`, `anker-solix.0.info.pythonReady`
|
|
161
|
-
|
|
162
|
-
**Entity groups** (Admin → **Entities**): map to HA feature sets — power flows, diagnostics, PPS, EV charger, HES, site price, account info, etc. Disabled groups are excluded from API polls to reduce load.
|
|
163
|
-
|
|
164
|
-
---
|
|
165
|
-
|
|
166
|
-
## MQTT managed devices
|
|
167
|
-
|
|
168
|
-
Enable **MQTT** in **Options** when you need live data or controls that the cloud API does not provide (many PPS/EV/charger functions).
|
|
169
|
-
|
|
170
|
-
- Extra sensors/controls come from MQTT maps in solixapi (community-decoded per model).
|
|
171
|
-
- **Real-time trigger** and **status request** behave like HA buttons — automating them 24/7 increases traffic and keeps devices awake ([HA MQTT section](https://github.com/thomluther/ha-anker-solix#mqtt-managed-devices)).
|
|
172
|
-
- **Hybrid controls** (station SOC reserve, AC limits, grid export on multisystem) need MQTT + API like HA.
|
|
173
|
-
- Devices in **MQTT local mode** (e.g. E10 behind Power Dock) are proxied via the hub device — see [HA INFO – MQTT local mode](https://github.com/thomluther/ha-anker-solix/blob/main/INFO.md#devices-in-mqtt-local-mode).
|
|
174
|
-
|
|
175
|
-
Decoding new models: [MQTT guidelines](https://github.com/thomluther/anker-solix-api/discussions/222), tool `mqtt_monitor.py` in [anker-solix-api](https://github.com/thomluther/anker-solix-api).
|
|
176
|
-
|
|
177
|
-
---
|
|
178
|
-
|
|
179
|
-
## Special device notes
|
|
180
|
-
|
|
181
|
-
Condensed from the [HA integration README](https://github.com/thomluther/ha-anker-solix); behavior is the same via solixapi.
|
|
182
|
-
|
|
183
|
-
### Standalone inverters (MI80)
|
|
184
|
-
|
|
185
|
-
Not a full app “power system”, but cloud tracks yields. API creates a **virtual site**. Inverter Wi‑Fi state in API is often wrong; cloud connection state is more reliable. **Do not** change inverter limits permanently (hardware write cycles).
|
|
186
|
-
|
|
187
|
-
### Solarbank 1 (E1600)
|
|
188
|
-
|
|
189
|
-
Cloud updates ~every **60 s** while producing/discharging; ~hourly in standby. **Schedule bug:** a single all-day API slot can set export to **0 W** — use ≥2 slots in the app if using output preset. Daily discharge statistic since mid-2024 includes bypassed PV (also wrong in app). MQTT monitoring/control from HA v3.4+/3.5+.
|
|
190
|
-
|
|
191
|
-
### Solarbank 2 + smart meters
|
|
192
|
-
|
|
193
|
-
Cloud interval often **~5 minutes**; control changes may take up to **~6 minutes** to appear in sensors. Shared accounts historically had unavailable entities (Anker-side fix). Some **output limit** API paths still unknown.
|
|
194
|
-
|
|
195
|
-
### Solarbank 2 AC
|
|
196
|
-
|
|
197
|
-
Time-of-use plans via controls where supported; cloud updates can stall after heavy app use ([HA #211](https://github.com/thomluther/ha-anker-solix/issues/211)).
|
|
198
|
-
|
|
199
|
-
### Combined SB2 + cascaded SB1
|
|
200
|
-
|
|
201
|
-
Totals/statistics in Anker cloud reflect **SB2 only**; SB1 is partly a “black box”. Enforced minimal schedule on SB1 when SB2 is manual — some ioBroker/HA controls show **unavailable** intentionally. For correct charge/discharge energy, sum **per-device** battery power, not only system NET power ([HA details](https://github.com/thomluther/ha-anker-solix#combined-solarbank-2-systems-containing-cascaded-solarbank-1-devices)).
|
|
202
|
-
|
|
203
|
-
### Solarbank 3
|
|
204
|
-
|
|
205
|
-
Smart mode, dynamic price, time-slot modes — often **toggle only** via API (configure in app first). Dynamic price VAT/fees may be **cache-only** customizations. Nordpool forecast most reliable.
|
|
206
|
-
|
|
207
|
-
### Multisystem with Power Dock
|
|
208
|
-
|
|
209
|
-
Up to 4 SB3 units; shared station settings (usage mode, SOC reserve, grid export). Controls consolidated on **combiner / Power Dock** in integration logic. Cloud data can lag in early deployments. Multisystem **AC output limit** may not be changeable via API.
|
|
210
|
-
|
|
211
|
-
### Station controls
|
|
212
|
-
|
|
213
|
-
SOC reserve, PV/AC limits, grid export often need **API + MQTT** (hybrid). Third-party PV / EV-enable switches are usually one-time app setup — not exposed for automation.
|
|
214
|
-
|
|
215
|
-
### PPS / Solarbank PPS (F3000 + US meter)
|
|
216
|
-
|
|
217
|
-
Automation-style home backup in US; control mainly via MQTT.
|
|
218
|
-
|
|
219
|
-
### EV charger (V1)
|
|
220
|
-
|
|
221
|
-
Most metrics/controls via MQTT; member accounts supported. Operational modes map to HA-style state machine — in ioBroker, check available control options before scripts. Session history statistics not implemented (use state history).
|
|
222
|
-
|
|
223
|
-
### Vehicles
|
|
224
|
-
|
|
225
|
-
Virtual devices per account EV; no creation via adapter — discovered on refresh.
|
|
226
|
-
|
|
227
|
-
### Power Panel & HES (X1)
|
|
228
|
-
|
|
229
|
-
Limited API power; workaround uses **~5 min averages** from energy stats (**~80 MB/day** extra traffic per system if enabled). Disable heavy categories in **Entities** if needed. X1: consider local **Modbus** ([Anker spec](https://support.ankersolix.com/de/s/download-preview?urlname=Anker-SOLIX-X1-Series-Modbus-Protocol)) — not part of this adapter.
|
|
230
|
-
|
|
231
|
-
### Home Backup (E10, AX170)
|
|
232
|
-
|
|
233
|
-
Almost **no** cloud API for system energy; E10 often **MQTT local mode** via dock.
|
|
234
|
-
|
|
235
|
-
### Other / standalone devices
|
|
236
|
-
|
|
237
|
-
Only in a **power system** for full API; otherwise MQTT + community decoding required.
|
|
238
|
-
|
|
239
|
-
---
|
|
240
|
-
|
|
241
|
-
## Troubleshooting login / poll
|
|
242
|
-
|
|
243
|
-
### No `authcache/<email>.json`
|
|
244
|
-
|
|
245
|
-
The file is created only after a **successful** API login. If every login returns captcha, copy a working file from [ha-anker-solix](https://github.com/thomluther/ha-anker-solix) (`custom_components/anker_solix/solixapi/authcache/`) into `iobroker-data/anker-solix.0/authcache/`, same filename as in **Account**.
|
|
246
|
-
|
|
247
|
-
### `(100032) Captcha id empty`
|
|
248
|
-
|
|
249
|
-
Anker blocks some **server/VPN** API logins. The library cannot solve captcha.
|
|
250
|
-
|
|
251
|
-
1. Confirm app login on same LAN; correct **country**; no VPN on ioBroker host.
|
|
252
|
-
2. **Do not** clear login cache to “fix” captcha.
|
|
253
|
-
3. Copy `authcache` from HA or re-login when cloud allows.
|
|
254
|
-
4. Wait 15–30 min after many failed attempts.
|
|
255
|
-
5. Use adapter **≥ 0.9.3** so a valid cache is not discarded on restart.
|
|
256
|
-
|
|
257
|
-
Log shows exact cache path from **0.9.4+**.
|
|
258
|
-
|
|
259
|
-
### Rate limits (26161 / 429)
|
|
260
|
-
|
|
261
|
-
Increase poll interval; reduce enabled **Entities** groups; adapter retries and may fall back to one-shot bridge briefly.
|
|
262
|
-
|
|
263
|
-
---
|
|
264
|
-
|
|
265
|
-
## Services
|
|
266
|
-
|
|
267
|
-
States under `anker-solix.0.services.*` (set to `true` to trigger):
|
|
268
|
-
|
|
269
|
-
- `get_schedule`, `clear_schedule`, `export_systems`, `get_system_info`, `refresh_devices`
|
|
270
|
-
|
|
271
|
-
Uses `selectedDeviceId` / `selectedSiteId` from config. See Admin **Services** tab.
|
|
272
|
-
|
|
273
|
-
---
|
|
274
|
-
|
|
275
|
-
## Credits & further reading
|
|
276
|
-
|
|
277
|
-
| Resource | Content |
|
|
278
|
-
|----------|---------|
|
|
279
|
-
| [thomluther/ha-anker-solix](https://github.com/thomluther/ha-anker-solix) | Full README, **INFO.md** (config, MQTT, export, tariffs) |
|
|
280
|
-
| [thomluther/anker-solix-api](https://github.com/thomluther/anker-solix-api) | Python API, export, mqtt_monitor |
|
|
281
|
-
| [HA discussions](https://github.com/thomluther/ha-anker-solix/discussions) | Energy dashboard, zero export, efficiency |
|
|
282
|
-
| [SolixBLE](https://github.com/flip-dots/SolixBLE) | Local BLE (not cloud) |
|
|
283
|
-
| [ha-anker-solix-official](https://github.com/anker-charging/ha-anker-solix-official) | Official Modbus (local devices) |
|
|
284
|
-
|
|
285
|
-
German guides/videos linked from the [HA README](https://github.com/thomluther/ha-anker-solix#additional-resources) apply conceptually to data and limits; wiring is via ioBroker states instead of HA entities.
|
|
286
|
-
|
|
287
|
-
---
|
|
288
|
-
|
|
289
|
-
## Changelog
|
|
290
|
-
|
|
291
|
-
### 0.9.
|
|
292
|
-
|
|
293
|
-
-
|
|
294
|
-
|
|
295
|
-
### 0.9.
|
|
296
|
-
|
|
297
|
-
- Adapter-check
|
|
298
|
-
|
|
299
|
-
### 0.9.
|
|
300
|
-
|
|
301
|
-
-
|
|
302
|
-
|
|
303
|
-
### 0.9.
|
|
304
|
-
|
|
305
|
-
-
|
|
306
|
-
|
|
307
|
-
### 0.9.
|
|
308
|
-
|
|
309
|
-
-
|
|
310
|
-
|
|
311
|
-
### 0.9.
|
|
312
|
-
|
|
313
|
-
-
|
|
314
|
-
|
|
315
|
-
### 0.9.
|
|
316
|
-
|
|
317
|
-
-
|
|
318
|
-
|
|
319
|
-
### 0.9.
|
|
320
|
-
|
|
321
|
-
-
|
|
322
|
-
|
|
323
|
-
### 0.
|
|
324
|
-
|
|
325
|
-
-
|
|
326
|
-
|
|
327
|
-
### 0.8.
|
|
328
|
-
|
|
329
|
-
-
|
|
330
|
-
|
|
331
|
-
### 0.
|
|
332
|
-
|
|
333
|
-
-
|
|
334
|
-
|
|
335
|
-
### 0.
|
|
336
|
-
|
|
337
|
-
-
|
|
338
|
-
|
|
339
|
-
### 0.
|
|
340
|
-
|
|
341
|
-
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
1
|
+
# ioBroker.anker-solix
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/iobroker.anker-solix)
|
|
4
|
+
|
|
5
|
+
ioBroker adapter for **Anker Solix** power systems (Solarbank, Smart Meter, PPS, EV charger, and more). It is based on the Home Assistant integration [thomluther/ha-anker-solix](https://github.com/thomluther/ha-anker-solix) and uses the same unofficial **solixapi** Python library.
|
|
6
|
+
|
|
7
|
+
A small **Python bridge** (persistent daemon, like HA) polls the Anker cloud and optional MQTT, then exposes values as ioBroker states. Optional entity groups (since v0.9.0) mirror HA’s scope: only **Core** is on by default to limit API load.
|
|
8
|
+
|
|
9
|
+
## Table of contents
|
|
10
|
+
|
|
11
|
+
1. [Disclaimer & usage terms](#disclaimer--usage-terms)
|
|
12
|
+
2. [How this adapter works in ioBroker](#how-this-adapter-works-in-iobroker)
|
|
13
|
+
3. [Requirements & installation](#requirements--installation)
|
|
14
|
+
4. [Configuration](#configuration)
|
|
15
|
+
5. [Anker account & login cache](#anker-account--login-cache)
|
|
16
|
+
6. [Limitations](#limitations)
|
|
17
|
+
7. [Supported devices](#supported-devices)
|
|
18
|
+
8. [State structure & entity groups](#state-structure--entity-groups)
|
|
19
|
+
9. [MQTT](#mqtt-managed-devices)
|
|
20
|
+
10. [Special device notes](#special-device-notes)
|
|
21
|
+
11. [Troubleshooting login / poll](#troubleshooting-login--poll)
|
|
22
|
+
12. [Services](#services)
|
|
23
|
+
13. [Credits & further reading](#credits--further-reading)
|
|
24
|
+
14. [Changelog](#changelog)
|
|
25
|
+
15. [Publishing](#publishing-npm--iobroker-catalog)
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Disclaimer & usage terms
|
|
30
|
+
|
|
31
|
+
This adapter is **not** affiliated with Anker. Trademarks and product names belong to their respective owners.
|
|
32
|
+
|
|
33
|
+
The adapter uses an **unofficial** Python library to talk to the Anker Power **cloud API** (same as the mobile app). That API can change or break at any time. Improper settings may affect devices; the user accepts these risks when enabling the instance (**Terms** tab). Future adapter updates may extend monitoring or controls.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## How this adapter works in ioBroker
|
|
38
|
+
|
|
39
|
+
| Layer | Role |
|
|
40
|
+
|-------|------|
|
|
41
|
+
| **Node.js adapter** | Instance config, scheduling, ioBroker states, control queue |
|
|
42
|
+
| **Python bridge** (`python/bridge.py`) | Long-lived session: API + optional MQTT (HA-style) |
|
|
43
|
+
| **solixapi** | Cloud login, sites/devices, energy stats, MQTT map |
|
|
44
|
+
| **authcache** | `iobroker-data/<instance>/authcache/<email>.json` — reused after successful API login |
|
|
45
|
+
|
|
46
|
+
Poll interval should be **60–180 s** (same recommendation as HA). Site list is updated every cycle; device/site details and energy data run on a slower interval (`deviceDetailMultiplier`, default every 10th poll).
|
|
47
|
+
|
|
48
|
+
> **Important:** The cloud API is **mandatory**. MQTT alone is not enough for full system data. This adapter does **not** replace local BLE or Modbus integrations — see [Additional resources](#credits--further-reading).
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Requirements & installation
|
|
53
|
+
|
|
54
|
+
- ioBroker **js-controller >= 6**, **admin >= 7.6**
|
|
55
|
+
- **Node.js >= 22**
|
|
56
|
+
- **Python 3.12+** on the ioBroker host (`python3-venv` + `python3-pip` recommended on Debian/Ubuntu)
|
|
57
|
+
|
|
58
|
+
Python dependencies install into the adapter folder (`python/.venv` or `python/site-packages`). Since v0.2.0: automatic on start (**Options** → `autoInstallPython`) or button **Install Python dependencies**.
|
|
59
|
+
|
|
60
|
+
Install via ioBroker (recommended):
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
iobroker install anker-solix
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
After changing the adapter files locally, upload the instance:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
iobroker upload anker-solix
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Multihost:** use `--host "PC(SmartHome)"` with quotes if the name contains special characters.
|
|
73
|
+
|
|
74
|
+
Remove legacy symlink if present: `rm -f /opt/iobroker/node_modules/iobroker.AnkerSolix`
|
|
75
|
+
|
|
76
|
+
Manual Python setup (if needed):
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
cd node_modules/iobroker.anker-solix
|
|
80
|
+
python3 -m venv python/.venv && python/.venv/bin/pip install -r python/requirements.txt
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Configuration
|
|
86
|
+
|
|
87
|
+
1. Create instance: `iobroker add anker-solix`
|
|
88
|
+
2. **Account:** Anker e-mail, password, country code (e.g. `DE`) — **save after entering password**
|
|
89
|
+
3. **Terms:** accept unofficial API usage
|
|
90
|
+
4. **Options:** poll interval 60–180 s, **MQTT** if needed, `deviceDetailMultiplier` (HA default: 10)
|
|
91
|
+
5. **Devices:** **Load devices**, optional site ID / device SN filter
|
|
92
|
+
6. **Entities** (v0.9.0+): enable optional groups; only **Core** on by default → **restart adapter** after changes
|
|
93
|
+
|
|
94
|
+
Do **not** use **Clear Anker login cache** unless you need a deliberate re-login (wrong account, corrupted file). Clearing forces a new cloud login and often triggers captcha on server hosts — see [Troubleshooting](#troubleshooting-login--poll).
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Anker account & login cache
|
|
99
|
+
|
|
100
|
+
After the **first successful API login**, the adapter stores tokens in:
|
|
101
|
+
|
|
102
|
+
`iobroker-data/anker-solix.0/authcache/<your-email>.json`
|
|
103
|
+
|
|
104
|
+
(Filename must match the e-mail in **Account** exactly.)
|
|
105
|
+
|
|
106
|
+
Since Anker app **3.10** (mid-2025), one account can often be used on **multiple clients in parallel** (app + ioBroker + HA). Older docs about “only one token” are less critical today, but a **failed re-login** from ioBroker still cannot refresh the file if Anker returns captcha.
|
|
107
|
+
|
|
108
|
+
**Shared / member accounts:** A family-shared account may see fewer API details than the owner account (same as HA).
|
|
109
|
+
|
|
110
|
+
More account notes: [HA INFO.md – accounts](https://github.com/thomluther/ha-anker-solix/blob/main/INFO.md).
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## Limitations
|
|
115
|
+
|
|
116
|
+
- **Unofficial API** — no documentation; endpoints can change anytime.
|
|
117
|
+
- **EU vs COM cloud** — wrong **country** in config → login works but **no systems/devices**. Do not switch countries after pairing devices.
|
|
118
|
+
- **Stale cloud data** if device Wi‑Fi is offline; use cloud/MQTT connection indicators when enabled.
|
|
119
|
+
- **MQTT** updates depend on device publish cycle; some values only with **real-time trigger** (high traffic if 24/7).
|
|
120
|
+
- **Standalone devices** (PPS, charger, cooler not in a power system) have **little or no API energy data** — MQTT may be required ([HA limitations](https://github.com/thomluther/ha-anker-solix#limitations)).
|
|
121
|
+
- **Dynamic tariff** beyond Nordpool: forecast/price entities may be wrong or read-only.
|
|
122
|
+
- **Captcha (100032)** on direct API login from VPS/VPN/datacenter — see [Troubleshooting](#troubleshooting-login--poll). Copy `authcache` from HA or another working setup if ioBroker cannot log in once.
|
|
123
|
+
|
|
124
|
+
To help add devices: export anonymized data via HA [export systems](https://github.com/thomluther/ha-anker-solix/blob/main/INFO.md#export-systems-action) or [anker-solix-api export_system.py](https://github.com/thomluther/anker-solix-api#export_systempy).
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Supported devices
|
|
129
|
+
|
|
130
|
+
Same device coverage as [ha-anker-solix](https://github.com/thomluther/ha-anker-solix#supported-sensors-and-devices) (via solixapi). In ioBroker, data appears under state IDs by device type (`solarbank`, `smartmeter`, `combiner_box`, `system`, …).
|
|
131
|
+
|
|
132
|
+
| Device type | Examples / notes |
|
|
133
|
+
|-------------|------------------|
|
|
134
|
+
| **system / site** | Power system from the Anker app (= API “site”) |
|
|
135
|
+
| **solarbank** | E1600 (Gen1), SB2 Pro/Plus/AC, SB3 E2700 — API + MQTT |
|
|
136
|
+
| **combiner_box** | Power Dock (multisystem) — merged controls in ioBroker when applicable |
|
|
137
|
+
| **smartmeter** | Anker 3-phase, US meter, Shelly 3EM / 3EM Pro |
|
|
138
|
+
| **inverter** | MI80 standalone (virtual site in API) |
|
|
139
|
+
| **smartplug** | Smart Plug 2500 W |
|
|
140
|
+
| **pps** / **solarbank_pps** | Portable power stations — mostly MQTT |
|
|
141
|
+
| **ev_charger** | V1 Smart EV Charger — mostly MQTT |
|
|
142
|
+
| **vehicle** | Virtual EVs for charger accounts — read-oriented in ioBroker |
|
|
143
|
+
| **powerpanel** / **hes** | US Power Panel, X1 HES — limited API, heavy stats polling |
|
|
144
|
+
| **charger** | Prime / charging stations — MQTT |
|
|
145
|
+
| **home_backup** | E10, AX170 — very limited API |
|
|
146
|
+
|
|
147
|
+
Device hierarchy (how HA structures entities): [discussion #239](https://github.com/thomluther/ha-anker-solix/discussions/239).
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## State structure & entity groups
|
|
152
|
+
|
|
153
|
+
Typical paths (instance `anker-solix.0`):
|
|
154
|
+
|
|
155
|
+
- `anker-solix.0.solarbank.<deviceId>.sensors.*` — power, SOC, etc.
|
|
156
|
+
- `anker-solix.0.solarbank.<deviceId>.control.*` — writable controls where supported
|
|
157
|
+
- `anker-solix.0.<device>.<id>.statistics.*` — daily kWh (enable **Entities** → energy statistics)
|
|
158
|
+
- `anker-solix.0.smartmeter.<deviceId>.sensors.*`
|
|
159
|
+
- `anker-solix.0.services.*` — export, schedule, refresh (button states)
|
|
160
|
+
- `anker-solix.0.info.connection`, `anker-solix.0.info.pythonReady`
|
|
161
|
+
|
|
162
|
+
**Entity groups** (Admin → **Entities**): map to HA feature sets — power flows, diagnostics, PPS, EV charger, HES, site price, account info, etc. Disabled groups are excluded from API polls to reduce load.
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## MQTT managed devices
|
|
167
|
+
|
|
168
|
+
Enable **MQTT** in **Options** when you need live data or controls that the cloud API does not provide (many PPS/EV/charger functions).
|
|
169
|
+
|
|
170
|
+
- Extra sensors/controls come from MQTT maps in solixapi (community-decoded per model).
|
|
171
|
+
- **Real-time trigger** and **status request** behave like HA buttons — automating them 24/7 increases traffic and keeps devices awake ([HA MQTT section](https://github.com/thomluther/ha-anker-solix#mqtt-managed-devices)).
|
|
172
|
+
- **Hybrid controls** (station SOC reserve, AC limits, grid export on multisystem) need MQTT + API like HA.
|
|
173
|
+
- Devices in **MQTT local mode** (e.g. E10 behind Power Dock) are proxied via the hub device — see [HA INFO – MQTT local mode](https://github.com/thomluther/ha-anker-solix/blob/main/INFO.md#devices-in-mqtt-local-mode).
|
|
174
|
+
|
|
175
|
+
Decoding new models: [MQTT guidelines](https://github.com/thomluther/anker-solix-api/discussions/222), tool `mqtt_monitor.py` in [anker-solix-api](https://github.com/thomluther/anker-solix-api).
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## Special device notes
|
|
180
|
+
|
|
181
|
+
Condensed from the [HA integration README](https://github.com/thomluther/ha-anker-solix); behavior is the same via solixapi.
|
|
182
|
+
|
|
183
|
+
### Standalone inverters (MI80)
|
|
184
|
+
|
|
185
|
+
Not a full app “power system”, but cloud tracks yields. API creates a **virtual site**. Inverter Wi‑Fi state in API is often wrong; cloud connection state is more reliable. **Do not** change inverter limits permanently (hardware write cycles).
|
|
186
|
+
|
|
187
|
+
### Solarbank 1 (E1600)
|
|
188
|
+
|
|
189
|
+
Cloud updates ~every **60 s** while producing/discharging; ~hourly in standby. **Schedule bug:** a single all-day API slot can set export to **0 W** — use ≥2 slots in the app if using output preset. Daily discharge statistic since mid-2024 includes bypassed PV (also wrong in app). MQTT monitoring/control from HA v3.4+/3.5+.
|
|
190
|
+
|
|
191
|
+
### Solarbank 2 + smart meters
|
|
192
|
+
|
|
193
|
+
Cloud interval often **~5 minutes**; control changes may take up to **~6 minutes** to appear in sensors. Shared accounts historically had unavailable entities (Anker-side fix). Some **output limit** API paths still unknown.
|
|
194
|
+
|
|
195
|
+
### Solarbank 2 AC
|
|
196
|
+
|
|
197
|
+
Time-of-use plans via controls where supported; cloud updates can stall after heavy app use ([HA #211](https://github.com/thomluther/ha-anker-solix/issues/211)).
|
|
198
|
+
|
|
199
|
+
### Combined SB2 + cascaded SB1
|
|
200
|
+
|
|
201
|
+
Totals/statistics in Anker cloud reflect **SB2 only**; SB1 is partly a “black box”. Enforced minimal schedule on SB1 when SB2 is manual — some ioBroker/HA controls show **unavailable** intentionally. For correct charge/discharge energy, sum **per-device** battery power, not only system NET power ([HA details](https://github.com/thomluther/ha-anker-solix#combined-solarbank-2-systems-containing-cascaded-solarbank-1-devices)).
|
|
202
|
+
|
|
203
|
+
### Solarbank 3
|
|
204
|
+
|
|
205
|
+
Smart mode, dynamic price, time-slot modes — often **toggle only** via API (configure in app first). Dynamic price VAT/fees may be **cache-only** customizations. Nordpool forecast most reliable.
|
|
206
|
+
|
|
207
|
+
### Multisystem with Power Dock
|
|
208
|
+
|
|
209
|
+
Up to 4 SB3 units; shared station settings (usage mode, SOC reserve, grid export). Controls consolidated on **combiner / Power Dock** in integration logic. Cloud data can lag in early deployments. Multisystem **AC output limit** may not be changeable via API.
|
|
210
|
+
|
|
211
|
+
### Station controls
|
|
212
|
+
|
|
213
|
+
SOC reserve, PV/AC limits, grid export often need **API + MQTT** (hybrid). Third-party PV / EV-enable switches are usually one-time app setup — not exposed for automation.
|
|
214
|
+
|
|
215
|
+
### PPS / Solarbank PPS (F3000 + US meter)
|
|
216
|
+
|
|
217
|
+
Automation-style home backup in US; control mainly via MQTT.
|
|
218
|
+
|
|
219
|
+
### EV charger (V1)
|
|
220
|
+
|
|
221
|
+
Most metrics/controls via MQTT; member accounts supported. Operational modes map to HA-style state machine — in ioBroker, check available control options before scripts. Session history statistics not implemented (use state history).
|
|
222
|
+
|
|
223
|
+
### Vehicles
|
|
224
|
+
|
|
225
|
+
Virtual devices per account EV; no creation via adapter — discovered on refresh.
|
|
226
|
+
|
|
227
|
+
### Power Panel & HES (X1)
|
|
228
|
+
|
|
229
|
+
Limited API power; workaround uses **~5 min averages** from energy stats (**~80 MB/day** extra traffic per system if enabled). Disable heavy categories in **Entities** if needed. X1: consider local **Modbus** ([Anker spec](https://support.ankersolix.com/de/s/download-preview?urlname=Anker-SOLIX-X1-Series-Modbus-Protocol)) — not part of this adapter.
|
|
230
|
+
|
|
231
|
+
### Home Backup (E10, AX170)
|
|
232
|
+
|
|
233
|
+
Almost **no** cloud API for system energy; E10 often **MQTT local mode** via dock.
|
|
234
|
+
|
|
235
|
+
### Other / standalone devices
|
|
236
|
+
|
|
237
|
+
Only in a **power system** for full API; otherwise MQTT + community decoding required.
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## Troubleshooting login / poll
|
|
242
|
+
|
|
243
|
+
### No `authcache/<email>.json`
|
|
244
|
+
|
|
245
|
+
The file is created only after a **successful** API login. If every login returns captcha, copy a working file from [ha-anker-solix](https://github.com/thomluther/ha-anker-solix) (`custom_components/anker_solix/solixapi/authcache/`) into `iobroker-data/anker-solix.0/authcache/`, same filename as in **Account**.
|
|
246
|
+
|
|
247
|
+
### `(100032) Captcha id empty`
|
|
248
|
+
|
|
249
|
+
Anker blocks some **server/VPN** API logins. The library cannot solve captcha.
|
|
250
|
+
|
|
251
|
+
1. Confirm app login on same LAN; correct **country**; no VPN on ioBroker host.
|
|
252
|
+
2. **Do not** clear login cache to “fix” captcha.
|
|
253
|
+
3. Copy `authcache` from HA or re-login when cloud allows.
|
|
254
|
+
4. Wait 15–30 min after many failed attempts.
|
|
255
|
+
5. Use adapter **≥ 0.9.3** so a valid cache is not discarded on restart.
|
|
256
|
+
|
|
257
|
+
Log shows exact cache path from **0.9.4+**.
|
|
258
|
+
|
|
259
|
+
### Rate limits (26161 / 429)
|
|
260
|
+
|
|
261
|
+
Increase poll interval; reduce enabled **Entities** groups; adapter retries and may fall back to one-shot bridge briefly.
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
## Services
|
|
266
|
+
|
|
267
|
+
States under `anker-solix.0.services.*` (set to `true` to trigger):
|
|
268
|
+
|
|
269
|
+
- `get_schedule`, `clear_schedule`, `export_systems`, `get_system_info`, `refresh_devices`
|
|
270
|
+
|
|
271
|
+
Uses `selectedDeviceId` / `selectedSiteId` from config. See Admin **Services** tab.
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
## Credits & further reading
|
|
276
|
+
|
|
277
|
+
| Resource | Content |
|
|
278
|
+
|----------|---------|
|
|
279
|
+
| [thomluther/ha-anker-solix](https://github.com/thomluther/ha-anker-solix) | Full README, **INFO.md** (config, MQTT, export, tariffs) |
|
|
280
|
+
| [thomluther/anker-solix-api](https://github.com/thomluther/anker-solix-api) | Python API, export, mqtt_monitor |
|
|
281
|
+
| [HA discussions](https://github.com/thomluther/ha-anker-solix/discussions) | Energy dashboard, zero export, efficiency |
|
|
282
|
+
| [SolixBLE](https://github.com/flip-dots/SolixBLE) | Local BLE (not cloud) |
|
|
283
|
+
| [ha-anker-solix-official](https://github.com/anker-charging/ha-anker-solix-official) | Official Modbus (local devices) |
|
|
284
|
+
|
|
285
|
+
German guides/videos linked from the [HA README](https://github.com/thomluther/ha-anker-solix#additional-resources) apply conceptually to data and limits; wiring is via ioBroker states instead of HA entities.
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
## Changelog
|
|
290
|
+
|
|
291
|
+
### 0.9.8
|
|
292
|
+
|
|
293
|
+
- Admin UI: all option/entity fields with lg/xl breakpoints; CI release fix
|
|
294
|
+
|
|
295
|
+
### 0.9.7
|
|
296
|
+
|
|
297
|
+
- Adapter-check: npm news sync, admin responsive layout, README copyright, npm package excludes Python cache
|
|
298
|
+
|
|
299
|
+
### 0.9.6
|
|
300
|
+
|
|
301
|
+
- Adapter-check compliance: Node 22+, admin UI sizes, compact-mode Python install, dependabot
|
|
302
|
+
|
|
303
|
+
### 0.9.5
|
|
304
|
+
|
|
305
|
+
- Admin warning before **Clear Anker login cache**; log after clear
|
|
306
|
+
|
|
307
|
+
### 0.9.4
|
|
308
|
+
|
|
309
|
+
- Log exact `authcache` path when login cache file is missing
|
|
310
|
+
|
|
311
|
+
### 0.9.3
|
|
312
|
+
|
|
313
|
+
- **Fix:** Valid `authcache` no longer treated as failed login after restart (captcha 100032)
|
|
314
|
+
|
|
315
|
+
### 0.9.2
|
|
316
|
+
|
|
317
|
+
- Keep `authcache` on re-auth; reload token on 401 before forced login
|
|
318
|
+
|
|
319
|
+
### 0.9.1
|
|
320
|
+
|
|
321
|
+
- Captcha error 100032 mapping and README troubleshooting
|
|
322
|
+
|
|
323
|
+
### 0.9.0
|
|
324
|
+
|
|
325
|
+
- Configurable **entity groups** (HA-style); API scope follows enabled groups
|
|
326
|
+
|
|
327
|
+
### 0.8.1
|
|
328
|
+
|
|
329
|
+
- Fix Python bridge `ApiCategories.device_parm` crash
|
|
330
|
+
|
|
331
|
+
### 0.8.0
|
|
332
|
+
|
|
333
|
+
- Daily energy statistics under `statistics.*`
|
|
334
|
+
|
|
335
|
+
### 0.7.0
|
|
336
|
+
|
|
337
|
+
- Usage mode `preset_usage_mode`, AC fast charge switch
|
|
338
|
+
|
|
339
|
+
### 0.6.x
|
|
340
|
+
|
|
341
|
+
- Persistent bridge daemon, HA-aligned poll, multisystem controls, rate-limit fixes
|
|
342
|
+
|
|
343
|
+
### 0.2.x – 0.5.x
|
|
344
|
+
|
|
345
|
+
- Python auto-install, device selection, staggered polling, repository rename
|
|
346
|
+
|
|
347
|
+
Older release notes: [CHANGELOG_OLD.md](CHANGELOG_OLD.md) and git history.
|
|
348
|
+
|
|
349
|
+
---
|
|
350
|
+
|
|
351
|
+
## Publishing (npm & ioBroker catalog)
|
|
352
|
+
|
|
353
|
+
**npm:** Release via git tag (`v*`) and CI deploy after [adapter check](https://adaptercheck.iobroker.in/) is green. Register in [ioBroker.repositories](https://github.com/ioBroker/ioBroker.repositories) once the package is on npm.
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
## License
|
|
358
|
+
|
|
359
|
+
Copyright (c) 2026 MatthiasUlrich1 info@my-smart-home-support.de
|
|
360
|
+
|
|
361
|
+
MIT — see [LICENSE](LICENSE)
|
package/admin/jsonConfig.json
CHANGED
|
@@ -176,7 +176,9 @@
|
|
|
176
176
|
"default": 0.3,
|
|
177
177
|
"xs": 12,
|
|
178
178
|
"sm": 6,
|
|
179
|
-
"md": 4
|
|
179
|
+
"md": 4,
|
|
180
|
+
"lg": 4,
|
|
181
|
+
"xl": 4
|
|
180
182
|
},
|
|
181
183
|
"endpointLimit": {
|
|
182
184
|
"type": "number",
|
|
@@ -186,7 +188,9 @@
|
|
|
186
188
|
"default": 10,
|
|
187
189
|
"xs": 12,
|
|
188
190
|
"sm": 6,
|
|
189
|
-
"md": 4
|
|
191
|
+
"md": 4,
|
|
192
|
+
"lg": 4,
|
|
193
|
+
"xl": 4
|
|
190
194
|
},
|
|
191
195
|
"mqttUsage": {
|
|
192
196
|
"type": "checkbox",
|
|
@@ -194,7 +198,9 @@
|
|
|
194
198
|
"default": true,
|
|
195
199
|
"xs": 12,
|
|
196
200
|
"sm": 6,
|
|
197
|
-
"md": 4
|
|
201
|
+
"md": 4,
|
|
202
|
+
"lg": 4,
|
|
203
|
+
"xl": 4
|
|
198
204
|
},
|
|
199
205
|
"autoInstallPython": {
|
|
200
206
|
"type": "checkbox",
|
|
@@ -202,14 +208,18 @@
|
|
|
202
208
|
"default": true,
|
|
203
209
|
"xs": 12,
|
|
204
210
|
"sm": 6,
|
|
205
|
-
"md": 4
|
|
211
|
+
"md": 4,
|
|
212
|
+
"lg": 4,
|
|
213
|
+
"xl": 4
|
|
206
214
|
},
|
|
207
215
|
"pythonPath": {
|
|
208
216
|
"type": "text",
|
|
209
217
|
"label": "pythonPath",
|
|
210
218
|
"xs": 12,
|
|
211
219
|
"sm": 6,
|
|
212
|
-
"md": 4
|
|
220
|
+
"md": 4,
|
|
221
|
+
"lg": 4,
|
|
222
|
+
"xl": 4
|
|
213
223
|
}
|
|
214
224
|
}
|
|
215
225
|
},
|
|
@@ -220,7 +230,11 @@
|
|
|
220
230
|
"_entities_hint": {
|
|
221
231
|
"type": "staticText",
|
|
222
232
|
"text": "entities_hint",
|
|
223
|
-
"xs": 12
|
|
233
|
+
"xs": 12,
|
|
234
|
+
"sm": 12,
|
|
235
|
+
"md": 12,
|
|
236
|
+
"lg": 12,
|
|
237
|
+
"xl": 12
|
|
224
238
|
},
|
|
225
239
|
"enableCoreEntities": {
|
|
226
240
|
"type": "checkbox",
|
|
@@ -228,11 +242,14 @@
|
|
|
228
242
|
"default": true,
|
|
229
243
|
"xs": 12,
|
|
230
244
|
"sm": 6,
|
|
231
|
-
"md": 4
|
|
245
|
+
"md": 4,
|
|
246
|
+
"lg": 4,
|
|
247
|
+
"xl": 4
|
|
232
248
|
},
|
|
233
249
|
"_grp_energy": {
|
|
234
250
|
"type": "header",
|
|
235
251
|
"text": "grp_energy",
|
|
252
|
+
"size": 5,
|
|
236
253
|
"xs": 12,
|
|
237
254
|
"sm": 12,
|
|
238
255
|
"md": 12,
|
|
@@ -245,7 +262,9 @@
|
|
|
245
262
|
"default": false,
|
|
246
263
|
"xs": 12,
|
|
247
264
|
"sm": 6,
|
|
248
|
-
"md": 4
|
|
265
|
+
"md": 4,
|
|
266
|
+
"lg": 4,
|
|
267
|
+
"xl": 4
|
|
249
268
|
},
|
|
250
269
|
"enableEnergyDetail": {
|
|
251
270
|
"type": "checkbox",
|
|
@@ -253,11 +272,14 @@
|
|
|
253
272
|
"default": false,
|
|
254
273
|
"xs": 12,
|
|
255
274
|
"sm": 6,
|
|
256
|
-
"md": 4
|
|
275
|
+
"md": 4,
|
|
276
|
+
"lg": 4,
|
|
277
|
+
"xl": 4
|
|
257
278
|
},
|
|
258
279
|
"_grp_solarbank": {
|
|
259
280
|
"type": "header",
|
|
260
281
|
"text": "grp_solarbank",
|
|
282
|
+
"size": 5,
|
|
261
283
|
"xs": 12,
|
|
262
284
|
"sm": 12,
|
|
263
285
|
"md": 12,
|
|
@@ -270,7 +292,9 @@
|
|
|
270
292
|
"default": false,
|
|
271
293
|
"xs": 12,
|
|
272
294
|
"sm": 6,
|
|
273
|
-
"md": 4
|
|
295
|
+
"md": 4,
|
|
296
|
+
"lg": 4,
|
|
297
|
+
"xl": 4
|
|
274
298
|
},
|
|
275
299
|
"enableDiagnostics": {
|
|
276
300
|
"type": "checkbox",
|
|
@@ -278,7 +302,9 @@
|
|
|
278
302
|
"default": false,
|
|
279
303
|
"xs": 12,
|
|
280
304
|
"sm": 6,
|
|
281
|
-
"md": 4
|
|
305
|
+
"md": 4,
|
|
306
|
+
"lg": 4,
|
|
307
|
+
"xl": 4
|
|
282
308
|
},
|
|
283
309
|
"enableBinaryIndicators": {
|
|
284
310
|
"type": "checkbox",
|
|
@@ -286,7 +312,9 @@
|
|
|
286
312
|
"default": false,
|
|
287
313
|
"xs": 12,
|
|
288
314
|
"sm": 6,
|
|
289
|
-
"md": 4
|
|
315
|
+
"md": 4,
|
|
316
|
+
"lg": 4,
|
|
317
|
+
"xl": 4
|
|
290
318
|
},
|
|
291
319
|
"enableAdvancedControls": {
|
|
292
320
|
"type": "checkbox",
|
|
@@ -294,7 +322,9 @@
|
|
|
294
322
|
"default": false,
|
|
295
323
|
"xs": 12,
|
|
296
324
|
"sm": 6,
|
|
297
|
-
"md": 4
|
|
325
|
+
"md": 4,
|
|
326
|
+
"lg": 4,
|
|
327
|
+
"xl": 4
|
|
298
328
|
},
|
|
299
329
|
"enableSolarbankMeta": {
|
|
300
330
|
"type": "checkbox",
|
|
@@ -302,7 +332,9 @@
|
|
|
302
332
|
"default": false,
|
|
303
333
|
"xs": 12,
|
|
304
334
|
"sm": 6,
|
|
305
|
-
"md": 4
|
|
335
|
+
"md": 4,
|
|
336
|
+
"lg": 4,
|
|
337
|
+
"xl": 4
|
|
306
338
|
},
|
|
307
339
|
"enableSystemOverview": {
|
|
308
340
|
"type": "checkbox",
|
|
@@ -310,7 +342,9 @@
|
|
|
310
342
|
"default": false,
|
|
311
343
|
"xs": 12,
|
|
312
344
|
"sm": 6,
|
|
313
|
-
"md": 4
|
|
345
|
+
"md": 4,
|
|
346
|
+
"lg": 4,
|
|
347
|
+
"xl": 4
|
|
314
348
|
},
|
|
315
349
|
"enableSitePrice": {
|
|
316
350
|
"type": "checkbox",
|
|
@@ -318,7 +352,9 @@
|
|
|
318
352
|
"default": false,
|
|
319
353
|
"xs": 12,
|
|
320
354
|
"sm": 6,
|
|
321
|
-
"md": 4
|
|
355
|
+
"md": 4,
|
|
356
|
+
"lg": 4,
|
|
357
|
+
"xl": 4
|
|
322
358
|
},
|
|
323
359
|
"enableAccountInfo": {
|
|
324
360
|
"type": "checkbox",
|
|
@@ -326,11 +362,14 @@
|
|
|
326
362
|
"default": false,
|
|
327
363
|
"xs": 12,
|
|
328
364
|
"sm": 6,
|
|
329
|
-
"md": 4
|
|
365
|
+
"md": 4,
|
|
366
|
+
"lg": 4,
|
|
367
|
+
"xl": 4
|
|
330
368
|
},
|
|
331
369
|
"_grp_devices": {
|
|
332
370
|
"type": "header",
|
|
333
371
|
"text": "grp_devices",
|
|
372
|
+
"size": 5,
|
|
334
373
|
"xs": 12,
|
|
335
374
|
"sm": 12,
|
|
336
375
|
"md": 12,
|
|
@@ -343,7 +382,9 @@
|
|
|
343
382
|
"default": false,
|
|
344
383
|
"xs": 12,
|
|
345
384
|
"sm": 6,
|
|
346
|
-
"md": 4
|
|
385
|
+
"md": 4,
|
|
386
|
+
"lg": 4,
|
|
387
|
+
"xl": 4
|
|
347
388
|
},
|
|
348
389
|
"enablePps": {
|
|
349
390
|
"type": "checkbox",
|
|
@@ -351,7 +392,9 @@
|
|
|
351
392
|
"default": false,
|
|
352
393
|
"xs": 12,
|
|
353
394
|
"sm": 6,
|
|
354
|
-
"md": 4
|
|
395
|
+
"md": 4,
|
|
396
|
+
"lg": 4,
|
|
397
|
+
"xl": 4
|
|
355
398
|
},
|
|
356
399
|
"enableEvCharger": {
|
|
357
400
|
"type": "checkbox",
|
|
@@ -359,7 +402,9 @@
|
|
|
359
402
|
"default": false,
|
|
360
403
|
"xs": 12,
|
|
361
404
|
"sm": 6,
|
|
362
|
-
"md": 4
|
|
405
|
+
"md": 4,
|
|
406
|
+
"lg": 4,
|
|
407
|
+
"xl": 4
|
|
363
408
|
},
|
|
364
409
|
"enableVehicle": {
|
|
365
410
|
"type": "checkbox",
|
|
@@ -367,7 +412,9 @@
|
|
|
367
412
|
"default": false,
|
|
368
413
|
"xs": 12,
|
|
369
414
|
"sm": 6,
|
|
370
|
-
"md": 4
|
|
415
|
+
"md": 4,
|
|
416
|
+
"lg": 4,
|
|
417
|
+
"xl": 4
|
|
371
418
|
},
|
|
372
419
|
"enableHes": {
|
|
373
420
|
"type": "checkbox",
|
|
@@ -375,7 +422,9 @@
|
|
|
375
422
|
"default": false,
|
|
376
423
|
"xs": 12,
|
|
377
424
|
"sm": 6,
|
|
378
|
-
"md": 4
|
|
425
|
+
"md": 4,
|
|
426
|
+
"lg": 4,
|
|
427
|
+
"xl": 4
|
|
379
428
|
},
|
|
380
429
|
"enablePowerPanel": {
|
|
381
430
|
"type": "checkbox",
|
|
@@ -383,7 +432,9 @@
|
|
|
383
432
|
"default": false,
|
|
384
433
|
"xs": 12,
|
|
385
434
|
"sm": 6,
|
|
386
|
-
"md": 4
|
|
435
|
+
"md": 4,
|
|
436
|
+
"lg": 4,
|
|
437
|
+
"xl": 4
|
|
387
438
|
},
|
|
388
439
|
"enableInverter": {
|
|
389
440
|
"type": "checkbox",
|
|
@@ -391,7 +442,9 @@
|
|
|
391
442
|
"default": false,
|
|
392
443
|
"xs": 12,
|
|
393
444
|
"sm": 6,
|
|
394
|
-
"md": 4
|
|
445
|
+
"md": 4,
|
|
446
|
+
"lg": 4,
|
|
447
|
+
"xl": 4
|
|
395
448
|
}
|
|
396
449
|
}
|
|
397
450
|
},
|
|
@@ -402,12 +455,20 @@
|
|
|
402
455
|
"_services_hint": {
|
|
403
456
|
"type": "staticText",
|
|
404
457
|
"text": "services_hint",
|
|
405
|
-
"xs": 12
|
|
458
|
+
"xs": 12,
|
|
459
|
+
"sm": 12,
|
|
460
|
+
"md": 12,
|
|
461
|
+
"lg": 12,
|
|
462
|
+
"xl": 12
|
|
406
463
|
},
|
|
407
464
|
"_service_note": {
|
|
408
465
|
"type": "staticText",
|
|
409
466
|
"text": "services_note",
|
|
410
|
-
"xs": 12
|
|
467
|
+
"xs": 12,
|
|
468
|
+
"sm": 12,
|
|
469
|
+
"md": 12,
|
|
470
|
+
"lg": 12,
|
|
471
|
+
"xl": 12
|
|
411
472
|
}
|
|
412
473
|
}
|
|
413
474
|
},
|
|
@@ -418,12 +479,20 @@
|
|
|
418
479
|
"acceptTerms": {
|
|
419
480
|
"type": "checkbox",
|
|
420
481
|
"label": "acceptTerms",
|
|
421
|
-
"xs": 12
|
|
482
|
+
"xs": 12,
|
|
483
|
+
"sm": 12,
|
|
484
|
+
"md": 12,
|
|
485
|
+
"lg": 12,
|
|
486
|
+
"xl": 12
|
|
422
487
|
},
|
|
423
488
|
"_terms_hint": {
|
|
424
489
|
"type": "staticText",
|
|
425
490
|
"text": "terms_hint",
|
|
426
|
-
"xs": 12
|
|
491
|
+
"xs": 12,
|
|
492
|
+
"sm": 12,
|
|
493
|
+
"md": 12,
|
|
494
|
+
"lg": 12,
|
|
495
|
+
"xl": 12
|
|
427
496
|
}
|
|
428
497
|
}
|
|
429
498
|
}
|
package/io-package.json
CHANGED
|
@@ -1,9 +1,35 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "anker-solix",
|
|
4
|
-
"version": "0.9.
|
|
4
|
+
"version": "0.9.9",
|
|
5
5
|
"messagebox": true,
|
|
6
6
|
"news": {
|
|
7
|
+
"0.9.9": {
|
|
8
|
+
"en": "package.json keyword ioBroker; entity group headers with size (schema)",
|
|
9
|
+
"de": "Keyword ioBroker in package.json; Entitäts-Header mit size (Schema)",
|
|
10
|
+
"ru": "Ключевое слово ioBroker; заголовки с size",
|
|
11
|
+
"pt": "Keyword ioBroker; cabeçalhos com size",
|
|
12
|
+
"nl": "Keyword ioBroker; headers met size",
|
|
13
|
+
"fr": "Mot-clé ioBroker; en-têtes avec size",
|
|
14
|
+
"it": "Keyword ioBroker; header con size",
|
|
15
|
+
"es": "Keyword ioBroker; encabezados con size",
|
|
16
|
+
"pl": "Słowo kluczowe ioBroker; nagłówki z size",
|
|
17
|
+
"uk": "Ключове слово ioBroker",
|
|
18
|
+
"zh-cn": "ioBroker 关键词与 header size"
|
|
19
|
+
},
|
|
20
|
+
"0.9.8": {
|
|
21
|
+
"en": "Complete admin responsive layout (lg/xl); green CI release",
|
|
22
|
+
"de": "Admin-Layout lg/xl vervollständigt; grüner CI-Release",
|
|
23
|
+
"ru": "Полная адаптивная вёрстка Admin",
|
|
24
|
+
"pt": "Layout responsivo Admin completo",
|
|
25
|
+
"nl": "Volledig responsief Admin-layout",
|
|
26
|
+
"fr": "Mise en page Admin responsive complète",
|
|
27
|
+
"it": "Layout Admin responsive completo",
|
|
28
|
+
"es": "Diseño Admin responsive completo",
|
|
29
|
+
"pl": "Pełny responsywny layout Admin",
|
|
30
|
+
"uk": "Повна адаптивна вёрстка Admin",
|
|
31
|
+
"zh-cn": "完善 Admin 响应式布局"
|
|
32
|
+
},
|
|
7
33
|
"0.9.7": {
|
|
8
34
|
"en": "Adapter-check: news/npm sync, admin layout, README copyright, exclude Python cache from npm package",
|
|
9
35
|
"de": "Adapter-Check: News/npm abgeglichen, Admin-Layout, README Copyright, Python-Cache nicht im npm-Paket",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.anker-solix",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.9",
|
|
4
4
|
"description": "ioBroker adapter for Anker Solix (based on ha-anker-solix)",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "MatthiasUlrich1",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"homepage": "https://github.com/MatthiasUlrich1/ioBroker.anker-solix",
|
|
11
11
|
"license": "MIT",
|
|
12
12
|
"keywords": [
|
|
13
|
+
"ioBroker",
|
|
13
14
|
"iobroker",
|
|
14
15
|
"iobroker-adapter",
|
|
15
16
|
"anker",
|