iobroker.anker-solix 0.9.6
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 -0
- package/README.md +351 -0
- package/admin/anker-solix.png +0 -0
- package/admin/i18n/de.json +76 -0
- package/admin/i18n/en.json +76 -0
- package/admin/i18n/es.json +3 -0
- package/admin/i18n/fr.json +3 -0
- package/admin/i18n/it.json +3 -0
- package/admin/i18n/nl.json +3 -0
- package/admin/i18n/pl.json +3 -0
- package/admin/i18n/pt.json +3 -0
- package/admin/i18n/ru.json +3 -0
- package/admin/i18n/uk.json +3 -0
- package/admin/i18n/zh-cn.json +3 -0
- package/admin/jsonConfig.json +421 -0
- package/build/lib/bridgeDaemon.js +204 -0
- package/build/lib/bridgeDaemon.js.map +7 -0
- package/build/lib/configHelpers.js +37 -0
- package/build/lib/configHelpers.js.map +7 -0
- package/build/lib/controlQueue.js +80 -0
- package/build/lib/controlQueue.js.map +7 -0
- package/build/lib/ensurePython.js +82 -0
- package/build/lib/ensurePython.js.map +7 -0
- package/build/lib/entities.js +238 -0
- package/build/lib/entities.js.map +7 -0
- package/build/lib/entityGroups.js +244 -0
- package/build/lib/entityGroups.js.map +7 -0
- package/build/lib/pythonBridge.js +165 -0
- package/build/lib/pythonBridge.js.map +7 -0
- package/build/lib/pythonPaths.js +93 -0
- package/build/lib/pythonPaths.js.map +7 -0
- package/build/lib/services.js +135 -0
- package/build/lib/services.js.map +7 -0
- package/build/lib/spawnEnv.js +48 -0
- package/build/lib/spawnEnv.js.map +7 -0
- package/build/lib/stateSync.js +213 -0
- package/build/lib/stateSync.js.map +7 -0
- package/build/lib/types.js +17 -0
- package/build/lib/types.js.map +7 -0
- package/build/main.js +458 -0
- package/build/main.js.map +7 -0
- package/io-package.json +232 -0
- package/package.json +80 -0
- package/python/__pycache__/bridge.cpython-314.pyc +0 -0
- package/python/__pycache__/entities.cpython-314.pyc +0 -0
- package/python/__pycache__/entity_groups.cpython-314.pyc +0 -0
- package/python/__pycache__/extended_entities.cpython-314.pyc +0 -0
- package/python/__pycache__/ha_api_client.cpython-314.pyc +0 -0
- package/python/auth_helpers.py +84 -0
- package/python/bridge.py +907 -0
- package/python/bridge_runtime.py +95 -0
- package/python/energy_entities.py +181 -0
- package/python/entities.py +580 -0
- package/python/entity_groups.py +172 -0
- package/python/extended_entities.py +545 -0
- package/python/ha_api_client.py +227 -0
- package/python/requirements.txt +4 -0
- package/python/solixapi/__init__.py +1 -0
- package/python/solixapi/__pycache__/__init__.cpython-314.pyc +0 -0
- package/python/solixapi/__pycache__/api.cpython-314.pyc +0 -0
- package/python/solixapi/__pycache__/apibase.cpython-314.pyc +0 -0
- package/python/solixapi/__pycache__/apitypes.cpython-314.pyc +0 -0
- package/python/solixapi/__pycache__/energy.cpython-314.pyc +0 -0
- package/python/solixapi/__pycache__/errors.cpython-314.pyc +0 -0
- package/python/solixapi/__pycache__/export.cpython-314.pyc +0 -0
- package/python/solixapi/__pycache__/helpers.cpython-314.pyc +0 -0
- package/python/solixapi/__pycache__/hesapi.cpython-314.pyc +0 -0
- package/python/solixapi/__pycache__/mqtt.cpython-314.pyc +0 -0
- package/python/solixapi/__pycache__/mqtt_charger.cpython-314.pyc +0 -0
- package/python/solixapi/__pycache__/mqtt_device.cpython-314.pyc +0 -0
- package/python/solixapi/__pycache__/mqtt_factory.cpython-314.pyc +0 -0
- package/python/solixapi/__pycache__/mqtt_generator.cpython-314.pyc +0 -0
- package/python/solixapi/__pycache__/mqtt_pps.cpython-314.pyc +0 -0
- package/python/solixapi/__pycache__/mqtt_solarbank.cpython-314.pyc +0 -0
- package/python/solixapi/__pycache__/mqtt_various.cpython-314.pyc +0 -0
- package/python/solixapi/__pycache__/mqttcmdmap.cpython-314.pyc +0 -0
- package/python/solixapi/__pycache__/mqttmap.cpython-314.pyc +0 -0
- package/python/solixapi/__pycache__/mqtttypes.cpython-314.pyc +0 -0
- package/python/solixapi/__pycache__/poller.cpython-314.pyc +0 -0
- package/python/solixapi/__pycache__/powerpanel.cpython-314.pyc +0 -0
- package/python/solixapi/__pycache__/schedule.cpython-314.pyc +0 -0
- package/python/solixapi/__pycache__/session.cpython-314.pyc +0 -0
- package/python/solixapi/__pycache__/vehicle.cpython-314.pyc +0 -0
- package/python/solixapi/api.py +2444 -0
- package/python/solixapi/apibase.py +2242 -0
- package/python/solixapi/apitypes.py +2149 -0
- package/python/solixapi/energy.py +1597 -0
- package/python/solixapi/errors.py +137 -0
- package/python/solixapi/export.py +2247 -0
- package/python/solixapi/helpers.py +147 -0
- package/python/solixapi/hesapi.py +1861 -0
- package/python/solixapi/mqtt.py +1125 -0
- package/python/solixapi/mqtt_charger.py +241 -0
- package/python/solixapi/mqtt_device.py +936 -0
- package/python/solixapi/mqtt_factory.py +83 -0
- package/python/solixapi/mqtt_generator.py +39 -0
- package/python/solixapi/mqtt_pps.py +556 -0
- package/python/solixapi/mqtt_solarbank.py +116 -0
- package/python/solixapi/mqtt_various.py +86 -0
- package/python/solixapi/mqttcmdmap.py +1418 -0
- package/python/solixapi/mqttmap.py +5944 -0
- package/python/solixapi/mqtttypes.py +1633 -0
- package/python/solixapi/poller.py +1662 -0
- package/python/solixapi/powerpanel.py +1574 -0
- package/python/solixapi/schedule.py +3021 -0
- package/python/solixapi/session.py +1108 -0
- package/python/solixapi/vehicle.py +846 -0
- package/tools/install-python.js +225 -0
package/LICENSE
ADDED
|
@@ -0,0 +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.
|
package/README.md
ADDED
|
@@ -0,0 +1,351 @@
|
|
|
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.6
|
|
292
|
+
|
|
293
|
+
- Adapter-check compliance: Node 22+, admin UI sizes, compact-mode Python install, dependabot
|
|
294
|
+
|
|
295
|
+
### 0.9.5
|
|
296
|
+
|
|
297
|
+
- Admin warning before **Clear Anker login cache**; log after clear
|
|
298
|
+
|
|
299
|
+
### 0.9.4
|
|
300
|
+
|
|
301
|
+
- Log exact `authcache` path when login cache file is missing
|
|
302
|
+
|
|
303
|
+
### 0.9.3
|
|
304
|
+
|
|
305
|
+
- **Fix:** Valid `authcache` no longer treated as failed login after restart (captcha 100032)
|
|
306
|
+
|
|
307
|
+
### 0.9.2
|
|
308
|
+
|
|
309
|
+
- Keep `authcache` on re-auth; reload token on 401 before forced login
|
|
310
|
+
|
|
311
|
+
### 0.9.1
|
|
312
|
+
|
|
313
|
+
- Captcha error 100032 mapping and README troubleshooting
|
|
314
|
+
|
|
315
|
+
### 0.9.0
|
|
316
|
+
|
|
317
|
+
- Configurable **entity groups** (HA-style); API scope follows enabled groups
|
|
318
|
+
|
|
319
|
+
### 0.8.1
|
|
320
|
+
|
|
321
|
+
- Fix Python bridge `ApiCategories.device_parm` crash
|
|
322
|
+
|
|
323
|
+
### 0.8.0
|
|
324
|
+
|
|
325
|
+
- Daily energy statistics under `statistics.*`
|
|
326
|
+
|
|
327
|
+
### 0.7.0
|
|
328
|
+
|
|
329
|
+
- Usage mode `preset_usage_mode`, AC fast charge switch
|
|
330
|
+
|
|
331
|
+
### 0.6.x
|
|
332
|
+
|
|
333
|
+
- Persistent bridge daemon, HA-aligned poll, multisystem controls, rate-limit fixes
|
|
334
|
+
|
|
335
|
+
### 0.2.x – 0.5.x
|
|
336
|
+
|
|
337
|
+
- Python auto-install, device selection, staggered polling, repository rename
|
|
338
|
+
|
|
339
|
+
Older release notes: [CHANGELOG_OLD.md](CHANGELOG_OLD.md) and git history.
|
|
340
|
+
|
|
341
|
+
---
|
|
342
|
+
|
|
343
|
+
## Publishing (npm & ioBroker catalog)
|
|
344
|
+
|
|
345
|
+
**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.
|
|
346
|
+
|
|
347
|
+
---
|
|
348
|
+
|
|
349
|
+
## License
|
|
350
|
+
|
|
351
|
+
MIT — see [LICENSE](LICENSE)
|
|
Binary file
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
{
|
|
2
|
+
"anker-solix adapter config": "Anker Solix – Adapter-Konfiguration",
|
|
3
|
+
"Account": "Konto",
|
|
4
|
+
"Devices": "Geräte",
|
|
5
|
+
"Services": "Dienste",
|
|
6
|
+
"Entities": "Entitäten",
|
|
7
|
+
"Options": "Optionen",
|
|
8
|
+
"entities_hint": "Optionale Entitätsgruppen (wie in Home Assistant). Standard: aus — nur Kern aktiv. Mehr Gruppen = mehr API-Last. Nach Änderung Adapter neu starten.",
|
|
9
|
+
"enableCoreEntities": "Kern (Solarbank, Combiner, Smart Meter, Steuerung)",
|
|
10
|
+
"grp_energy": "Energie & Statistik",
|
|
11
|
+
"grp_solarbank": "Solarbank / System",
|
|
12
|
+
"grp_devices": "Weitere Gerätetypen",
|
|
13
|
+
"enableEnergyDetail": "Erweiterte Tagesstatistik (PV-Strings, Anteile, …)",
|
|
14
|
+
"enablePowerFlows": "Leistungsflüsse (PV→Haus, Batterie→Netz, …)",
|
|
15
|
+
"enableDiagnostics": "Diagnose (Status, Firmware, Temperatur)",
|
|
16
|
+
"enableBinaryIndicators": "Binär-Indikatoren (WLAN, MQTT, OTA, …)",
|
|
17
|
+
"enableAdvancedControls": "Erweiterte Steuerung (lesen, Schreiben folgt)",
|
|
18
|
+
"enableSystemOverview": "Systemübersicht (Listen, CO₂, Lasten)",
|
|
19
|
+
"enableSitePrice": "Preis & dynamischer Tarif",
|
|
20
|
+
"enableAccountInfo": "Konto-Informationen",
|
|
21
|
+
"enableSolarbankMeta": "Solarbank-Metadaten (WR, Zubehör, Reserve)",
|
|
22
|
+
"enableSmartplug": "Smart Plug",
|
|
23
|
+
"enablePps": "Power Station (PPS)",
|
|
24
|
+
"enableEvCharger": "EV-Lader",
|
|
25
|
+
"enableVehicle": "Fahrzeug",
|
|
26
|
+
"enableHes": "Home Energy System (HES)",
|
|
27
|
+
"enablePowerPanel": "Power Panel",
|
|
28
|
+
"enableInverter": "Wechselrichter (MWR)",
|
|
29
|
+
"Terms": "Nutzungsbedingungen",
|
|
30
|
+
"devices_hint": "Zuerst „Geräte laden“ klicken. Dann optional Site-ID und Geräte-SNs (kommagetrennt) eintragen, wenn nicht alle Geräte überwacht werden sollen.",
|
|
31
|
+
"loadDevices": "Geräte von Anker laden",
|
|
32
|
+
"installPython": "Python-Abhängigkeiten installieren",
|
|
33
|
+
"clearAuthCache": "Anker-Login-Cache löschen",
|
|
34
|
+
"clearAuthCache_warn": "Nur bei falschem Konto, kaputter Cache-Datei oder bewusstem Neu-Login. Löschen erzwingt einen neuen API-Login bei Anker — auf vielen ioBroker-Hosts dann Captcha (100032) und der Adapter läuft nicht mehr, bis eine neue authcache/<E-Mail>.json existiert. Bei Captcha-Fehlern NICHT löschen.",
|
|
35
|
+
"enableAllDevices": "Alle gefundenen Geräte überwachen",
|
|
36
|
+
"selectedSiteId": "Site-ID (optional, leer = alle)",
|
|
37
|
+
"selectedDeviceIds": "Geräte-SNs (kommagetrennt, optional)",
|
|
38
|
+
"deviceListJson": "Geladene Geräteliste (nur Anzeige)",
|
|
39
|
+
"autoInstallPython": "Python-Abhängigkeiten beim Start automatisch installieren",
|
|
40
|
+
"services_hint": "Dienste werden als ioBroker-States unter anker-solix.0.services.* angelegt (Button auf true setzen).",
|
|
41
|
+
"services_note": "get_schedule, clear_schedule, export_systems, get_system_info, refresh_devices – nutzen die erste gewählte Geräte-SN bzw. selectedSiteId.",
|
|
42
|
+
"grid_to_home_power": "Netz → Haus (W)",
|
|
43
|
+
"grid_status_desc": "Netzstatus",
|
|
44
|
+
"grid_import_energy": "Netzbezug gesamt (kWh)",
|
|
45
|
+
"grid_export_energy": "Netzeinspeisung gesamt (kWh)",
|
|
46
|
+
"daily_grid_import": "Netzbezug heute (kWh)",
|
|
47
|
+
"daily_grid_export": "Netzeinspeisung heute (kWh)",
|
|
48
|
+
"phase": "Phase",
|
|
49
|
+
"smartmeter_list": "Smart-Meter-Liste",
|
|
50
|
+
"username": "Anker E-Mail",
|
|
51
|
+
"password": "Anker Passwort",
|
|
52
|
+
"country": "Ländercode (z.B. DE)",
|
|
53
|
+
"scanInterval": "Abfrageintervall (Sekunden)",
|
|
54
|
+
"deviceDetailMultiplier": "Gerätedetails alle N Abfragen (HA: 10)",
|
|
55
|
+
"requestDelay": "Pause zwischen API-Anfragen (s, HA: 0,3)",
|
|
56
|
+
"endpointLimit": "API-Limit pro Endpunkt/Minute (HA: 10, 0=aus)",
|
|
57
|
+
"mqttUsage": "MQTT-Verbindung nutzen (wie HA-Integration)",
|
|
58
|
+
"enableEnergyStatistics": "Tagesstatistiken (kWh) von der Cloud abrufen",
|
|
59
|
+
"pythonPath": "Python-Befehl (leer = py/python3)",
|
|
60
|
+
"acceptTerms": "Nutzungsbedingungen akzeptieren",
|
|
61
|
+
"terms_hint": "Dieser Adapter nutzt die inoffizielle Anker-Cloud-API (wie https://github.com/thomluther/ha-anker-solix). Nutzung auf eigenes Risiko. Python 3.12+ (unter Linux zusätzlich python3-venv). Pakete werden in python/.venv installiert.",
|
|
62
|
+
"input_power": "PV-Eingangsleistung (W)",
|
|
63
|
+
"dc_output_power": "DC-Ausgangsleistung (W)",
|
|
64
|
+
"output_power_total": "Gesamte Ausgangsleistung (W)",
|
|
65
|
+
"battery_power": "Batterieleistung (W)",
|
|
66
|
+
"grid_power": "Netzleistung (W)",
|
|
67
|
+
"home_power": "Hausverbrauch (W)",
|
|
68
|
+
"state_of_charge": "Ladezustand SOC (%)",
|
|
69
|
+
"set_output_power": "Ausgangs-Preset (W)",
|
|
70
|
+
"allow_grid_export": "Einspeisung ins Netz erlauben",
|
|
71
|
+
"preset_allow_export": "Export-Preset (Zeitplan)",
|
|
72
|
+
"min_soc": "Mindest-SOC Reserve (%)",
|
|
73
|
+
"grid_export_limit": "Einspeise-Limit (W)",
|
|
74
|
+
"cloud_state": "Cloud-Status",
|
|
75
|
+
"wifi_state": "WLAN-Status"
|
|
76
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
{
|
|
2
|
+
"anker-solix adapter config": "Anker Solix adapter configuration",
|
|
3
|
+
"Account": "Account",
|
|
4
|
+
"Devices": "Devices",
|
|
5
|
+
"Services": "Services",
|
|
6
|
+
"Entities": "Entities",
|
|
7
|
+
"Options": "Options",
|
|
8
|
+
"entities_hint": "Optional entity groups (like Home Assistant excludes). Default: off — only core enabled. More groups = more API load. Restart adapter after changes.",
|
|
9
|
+
"enableCoreEntities": "Core (Solarbank, combiner, smart meter, controls)",
|
|
10
|
+
"grp_energy": "Energy & statistics",
|
|
11
|
+
"grp_solarbank": "Solarbank / system",
|
|
12
|
+
"grp_devices": "Other device types",
|
|
13
|
+
"enableEnergyDetail": "Extended daily statistics (PV strings, shares, …)",
|
|
14
|
+
"enablePowerFlows": "Power flows (PV→home, battery→grid, …)",
|
|
15
|
+
"enableDiagnostics": "Diagnostics (status, firmware, temperature)",
|
|
16
|
+
"enableBinaryIndicators": "Binary indicators (Wi-Fi, MQTT, OTA, …)",
|
|
17
|
+
"enableAdvancedControls": "Advanced controls (read-only for now)",
|
|
18
|
+
"enableSystemOverview": "System overview (lists, CO₂, loads)",
|
|
19
|
+
"enableSitePrice": "Price & dynamic tariff",
|
|
20
|
+
"enableAccountInfo": "Account information",
|
|
21
|
+
"enableSolarbankMeta": "Solarbank metadata (inverter, fittings, reserve)",
|
|
22
|
+
"enableSmartplug": "Smart plug",
|
|
23
|
+
"enablePps": "Power station (PPS)",
|
|
24
|
+
"enableEvCharger": "EV charger",
|
|
25
|
+
"enableVehicle": "Vehicle",
|
|
26
|
+
"enableHes": "Home energy system (HES)",
|
|
27
|
+
"enablePowerPanel": "Power panel",
|
|
28
|
+
"enableInverter": "Inverter (micro)",
|
|
29
|
+
"Terms": "Terms",
|
|
30
|
+
"devices_hint": "Click “Load devices” first. Optionally set site ID and device serial numbers (comma-separated) to limit polling.",
|
|
31
|
+
"loadDevices": "Load devices from Anker",
|
|
32
|
+
"installPython": "Install Python dependencies",
|
|
33
|
+
"clearAuthCache": "Clear Anker login cache",
|
|
34
|
+
"clearAuthCache_warn": "Only if wrong account, corrupted cache, or you intentionally need a fresh API login. Clearing forces a new Anker cloud login — on many ioBroker hosts that triggers captcha (100032) and the adapter stops until authcache/<email>.json exists again. Do NOT clear when you only see captcha errors.",
|
|
35
|
+
"enableAllDevices": "Monitor all discovered devices",
|
|
36
|
+
"selectedSiteId": "Site ID (optional, empty = all)",
|
|
37
|
+
"selectedDeviceIds": "Device serial numbers (comma-separated, optional)",
|
|
38
|
+
"deviceListJson": "Loaded device list (read-only)",
|
|
39
|
+
"autoInstallPython": "Auto-install Python dependencies on adapter start",
|
|
40
|
+
"services_hint": "Services are exposed as ioBroker states under anker-solix.0.services.* (set button state to true).",
|
|
41
|
+
"services_note": "get_schedule, clear_schedule, export_systems, get_system_info, refresh_devices use the first selected device SN and selectedSiteId.",
|
|
42
|
+
"grid_to_home_power": "Grid to home (W)",
|
|
43
|
+
"grid_status_desc": "Grid status",
|
|
44
|
+
"grid_import_energy": "Grid import total (kWh)",
|
|
45
|
+
"grid_export_energy": "Grid export total (kWh)",
|
|
46
|
+
"daily_grid_import": "Daily grid import (kWh)",
|
|
47
|
+
"daily_grid_export": "Daily grid export (kWh)",
|
|
48
|
+
"phase": "Phase",
|
|
49
|
+
"smartmeter_list": "Smart meter list",
|
|
50
|
+
"username": "Anker e-mail",
|
|
51
|
+
"password": "Anker password",
|
|
52
|
+
"country": "Country code (e.g. DE)",
|
|
53
|
+
"scanInterval": "Poll interval (seconds)",
|
|
54
|
+
"deviceDetailMultiplier": "Device detail refresh every N polls (HA: 10)",
|
|
55
|
+
"requestDelay": "Delay between API requests (s, HA: 0.3)",
|
|
56
|
+
"endpointLimit": "API limit per endpoint/minute (HA: 10, 0=off)",
|
|
57
|
+
"mqttUsage": "Use MQTT connection (like HA integration)",
|
|
58
|
+
"enableEnergyStatistics": "Fetch daily energy statistics (kWh) from cloud",
|
|
59
|
+
"pythonPath": "Python command (empty = py/python3)",
|
|
60
|
+
"acceptTerms": "Accept terms of use",
|
|
61
|
+
"terms_hint": "This adapter uses the unofficial Anker cloud API (see https://github.com/thomluther/ha-anker-solix). Use at your own risk. Requires Python 3.12+ (on Linux also python3-venv). Packages install into python/.venv.",
|
|
62
|
+
"input_power": "PV input power (W)",
|
|
63
|
+
"dc_output_power": "DC output power (W)",
|
|
64
|
+
"output_power_total": "Total output power (W)",
|
|
65
|
+
"battery_power": "Battery power (W)",
|
|
66
|
+
"grid_power": "Grid power (W)",
|
|
67
|
+
"home_power": "Home load power (W)",
|
|
68
|
+
"state_of_charge": "State of charge (%)",
|
|
69
|
+
"set_output_power": "Output preset (W)",
|
|
70
|
+
"allow_grid_export": "Allow grid export",
|
|
71
|
+
"preset_allow_export": "Allow export (schedule preset)",
|
|
72
|
+
"min_soc": "Minimum SOC reserve (%)",
|
|
73
|
+
"grid_export_limit": "Grid export limit (W)",
|
|
74
|
+
"cloud_state": "Cloud state",
|
|
75
|
+
"wifi_state": "WiFi state"
|
|
76
|
+
}
|