Repository navigation
Battery Anker Solix
Battery connections · Connection methods and sensors · Configuration index
Choose the battery during initial setup. Later, use Settings > Devices & Services > PowerSync > Configure > Battery connection method & sensors to choose its telemetry/control route. Edit connection details under Configure > Anker Solix connection.
| Connection method | What this route provides |
|---|---|
| PowerSync direct X1 Modbus | Direct device connection. Operations depend on the supported model, firmware and enabled write permissions. |
| Official Anker SOLIX Home Assistant integration | Uses the selected companion integration. Required control entities must be present and writable; telemetry alone is insufficient. |
| Unofficial Anker SOLIX cloud integration | Uses the selected companion integration. Required control entities must be present and writable; telemetry alone is insufficient. |
Select one route for PowerSync. A second integration using the same device connection can cause conflicts; the companion-integration route is appropriate when that integration should own communications. See source discovery and switching.
PowerSync supports Anker Solix through three paths. Use Direct X1 Modbus when you have a supported Anker SOLIX X1 system and third-party control is enabled. Use the official local HA integration when another integration should own Modbus. Use the unofficial cloud bridge only when local control is not available.
This path talks directly to the Anker X1 Modbus TCP server using the official Anker X1 register map.
Requirements:
- Anker SOLIX X1 system with Modbus TCP enabled.
- Third-party control enabled in the Anker app or installer configuration.
- Home Assistant can reach the inverter/battery controller on TCP port
502. - Slave ID is usually
1. - Do not use this path for Anker X1 parallel systems; the current Anker PDF does not cover parallel-system control.
Setup:
- Add or reconfigure PowerSync.
- Select Anker Solix as the battery system.
- Choose Direct local Modbus.
- Enter the X1 IP address, port
502, and slave ID. - Enter usable battery capacity and max charge/discharge power if PowerSync cannot read them from Modbus.
This path bridges through Anker's official Home Assistant integration: anker-charging/ha-anker-solix-official. That integration uses local Modbus TCP and exposes HA entities for supported Solarbank/Anker devices.
Use this when:
- The official Anker integration is already installed and working.
- You want the Anker integration to own the local Modbus session.
- PowerSync should read the Anker entities and use writable control entities when exposed.
Setup:
- Install and configure the official Anker integration.
- Confirm Home Assistant has Anker entities for SOC, PV power, load/grid power, operating mode, battery power direction, and battery power setpoint.
- Add or reconfigure PowerSync.
- Select Anker Solix and choose Official local HA integration.
- Pick the Anker config entry if PowerSync shows more than one.
This path bridges through TheRealSimon42/hacs-anker-solix or upstream thomluther/ha-anker-solix.
Use this only when local Modbus or the official local integration is not available. It uses the unofficial Anker cloud API, so PowerSync treats it as lower trust:
- Anker can change the cloud API without notice.
- Tokens/sessions can expire or conflict with the Anker app account.
- Cloud telemetry can be delayed or stale.
- Member accounts may not expose write controls; owner account permissions are often required.
If required write entities are missing, PowerSync still uses the telemetry for dashboard, battery health, live flow, and Smart Optimization planning, but force charge/discharge and restore controls are disabled.
| Capability | Direct X1 Modbus | Official local HA bridge | Unofficial cloud HA bridge |
|---|---|---|---|
| Battery SOC / power telemetry | Yes | Yes, when entities exist | Yes, when cloud data is fresh |
| Solar / grid / load telemetry | Yes | Yes, when entities exist | Partial; depends on exposed cloud entities |
| Force charge | Yes, via third-party control setpoint | Yes, when operating mode, direction, and setpoint entities are writable | Best-effort only when writable preset entities exist; otherwise no |
| Force discharge | Yes, via third-party control setpoint | Yes, when operating mode, direction, and setpoint entities are writable | Best-effort only when writable preset entities exist; otherwise no |
| Restore normal | Yes, returns to self-consumption | Yes, returns to self-consumption | Best-effort; resets cloud preset controls where available |
| Backup reserve write | Not exposed by the current X1 map | Not currently exposed by PowerSync | Uses charge-priority only when the cloud bridge exposes it; otherwise no |
| Smart Optimization | Full dispatch path | Full dispatch path when write entities exist; planner-only otherwise | Planner-only unless write entities are available and fresh |
Known limitations:
- X1 direct Modbus parallel systems are not supported by the current Anker PDF.
- Backup reserve is capability-gated because the validated X1 map does not expose a stable reserve register.
- The unofficial cloud bridge can break after Anker app/API changes.
- Cloud tokens can expire, and using the same Anker account in the app and integration can invalidate sessions.
- PowerSync does not add PowerSync.cc hosted Anker cloud accounts; this support is for Home Assistant-backed Anker systems only.
After saving connection changes, allow the integration reload to complete. Check fresh battery SOC, grid/solar/battery power and home-load readings for the selected site. Compare signs and totals with the vendor/upstream readings. Planning sensors can update on a monitoring route; that does not establish dispatch capability. Verify any permitted control separately using readback and measured power.
The tables use the current form labels and help text. They list the conditional field union: a field can be hidden for a different battery, provider, route or available integration. The instructions above explain those conditions. Existing saved/discovered values take precedence over fresh fallbacks. Rate units follow the provider; check the displayed currency/energy unit.
| Field | Meaning / input | Fallback / limits |
|---|---|---|
| Battery capacity | Usable battery capacity in kWh. Used by the LP optimizer when the Anker path does not expose rated energy. | 1–200 kWh; step 0.1 |
| Maximum charge power | Maximum charge power in kW. Used by dispatch commands and the LP optimizer. | 0.1–50 kW; step 0.1 |
| Maximum discharge power | Maximum discharge/export power in kW. Used by dispatch commands and the LP optimizer. | 0.1–50 kW; step 0.1 |
| Connection type | Direct X1 Modbus uses local TCP port 502. Official HA bridges through anker_solix_official. Cloud HA bridges through the unofficial anker_solix integration and may be telemetry-only. | Saved/detected value or the form’s shown fallback |
| X1 IP address | Local IP address of the Anker SOLIX X1 system. Third-party control and Modbus TCP must be enabled in Anker settings. | Saved/detected value or the form’s shown fallback |
| Modbus TCP port | Default: 502. | 1–65535; step 1 |
| Slave ID | Default: 1. | 1–247; step 1 |
| Entity prefix override | Optional. Used when Anker entities have a shared prefix and PowerSync needs help matching the right device. | Saved/detected value or the form’s shown fallback |
| Anker integration | Optional. Select the Anker HA integration entry PowerSync should read from when more than one is configured. | Saved/detected value or the form’s shown fallback |
| Field | Meaning / input | Fallback / limits |
|---|---|---|
| Battery capacity | Use the value or available choice shown in this form; existing saved/detected values take precedence. | 1–200 kWh; step 0.1 |
| Maximum charge power | Use the value or available choice shown in this form; existing saved/detected values take precedence. | 0.1–50 kW; step 0.1 |
| Maximum discharge power | Use the value or available choice shown in this form; existing saved/detected values take precedence. | 0.1–50 kW; step 0.1 |
| Connection type | Use the value or available choice shown in this form; existing saved/detected values take precedence. | Saved/detected value or the form’s shown fallback |
| X1 IP address | Use the value or available choice shown in this form; existing saved/detected values take precedence. | Saved/detected value or the form’s shown fallback |
| Modbus TCP port | Use the value or available choice shown in this form; existing saved/detected values take precedence. | 1–65535; step 1 |
| Slave ID | Use the value or available choice shown in this form; existing saved/detected values take precedence. | 1–247; step 1 |
| Entity prefix override | Use the value or available choice shown in this form; existing saved/detected values take precedence. | Saved/detected value or the form’s shown fallback |
| Anker integration | Use the value or available choice shown in this form; existing saved/detected values take precedence. | Saved/detected value or the form’s shown fallback |