-
-
Notifications
You must be signed in to change notification settings - Fork 16
Battery System Setup
| System | Connection | Key Limitations |
|---|---|---|
| Tesla Powerwall | PowerSync.cc (recommended), Fleet API, or Teslemetry | — |
| FoxESS (H1, H3, H3-Pro, H3 Smart, KH) | Modbus TCP or RS485 | — |
| Sigenergy | Cloud API + local Modbus TCP | Requires installer-enabled local Modbus access |
| GoodWe hybrid (ET/EH/BT/BH/ES/EM/BP) | UDP or TCP (local), or Modbus TCP gateway | Grid-only models (DT/MS/XS) not supported |
| Sungrow SH-series | Local Modbus TCP | SG-series: AC curtailment only (no battery control) |
| AlphaESS (SMILE/Storion) | Local Modbus TCP + optional Cloud API | One active local connection at a time |
| Solax Hybrid (X1/X3 Gen4–Gen6, AC Retro-Fit) | Via Solax Modbus integration (HACS) | Gen2/Gen3 not supported |
| ESY Sunhome (HM series) | Via ESY Sunhome integration (HACS) | No W-level power setpoints; no backup reserve control |
| SAJ H2 / HS2 | Via SAJ H2 Modbus integration (HACS) | No backup reserve control |
Don't want to run Home Assistant? PowerSync Cloud is a fully hosted alternative ($4.99/month) for Tesla Powerwall users on Amber, GloBird, or Energy Locals. No local server needed — sign in with Tesla, pick your retailer, and PowerSync handles negative-price protection and AEMO spike export automatically. Includes iOS/Android apps and a real-time web dashboard.
PowerSync supports three methods for accessing your Tesla Powerwall via the Home Assistant integration. Choose one — you don't need all three.
The easiest option. PowerSync is a registered Tesla Fleet API partner — when you sign in, Tesla authorizes PowerSync.cc to read your Powerwall data and send commands on your behalf. We never see your Tesla password.
| Pros | |
|---|---|
| Free | Tesla doesn't charge for energy product reads or commands |
| 30-second setup | Click a link, sign in with Tesla, paste a token |
| No Tesla developer account | We're already a registered Fleet API partner |
| No HA integration prerequisite | Works without tesla_fleet installed |
| Works in any region | NA, EU, APAC, MEA — region detected automatically |
Setup:
- In Home Assistant, add the PowerSync integration. When asked which Tesla provider to use, choose PowerSync (recommended).
- Open this URL in any browser: https://api.powersync.cc/auth/start
- Sign in with your Tesla account (Tesla shows a consent screen — approve the energy product scopes)
- You'll get a token starting with
psync_— copy it - Paste it back into the PowerSync setup form
That's it. Tesla never sees Home Assistant; PowerSync.cc never sees your Tesla password. The token is the only thing that links your HA install to your Powerwall, and you can revoke it any time at https://accounts.tesla.com/account-settings/security or by removing the integration.
If your token gets invalidated for any reason (revoked, expired, etc.), Home Assistant will automatically prompt you to re-authenticate via the same flow.
Direct access via your own Tesla developer app. Free but requires you to do the developer registration and OAuth setup yourself.
Setup:
- Install the official Tesla Fleet integration in Home Assistant
- Settings > Devices & Services > Add Integration > "Tesla Fleet"
- Follow the login flow (requires your own Tesla developer app)
- PowerSync automatically detects your Tesla Fleet credentials
- When PowerSync asks which provider to use, select Tesla Fleet API
Third-party paid proxy. Use this if you prefer a managed service or already have a Teslemetry subscription.
Setup:
- Sign up at https://teslemetry.com
- Connect your Tesla account
- Copy your API key
- Choose Teslemetry in the PowerSync setup and paste your API key
Supports H1, H3, H3-Pro, H3 Smart, and KH model families. All control is done locally — no cloud API required for battery control.
OEM rebrands using identical hardware are also supported — the model family is detected automatically during setup.
| Model Family | Type | OEM Rebrands |
|---|---|---|
| H1 | Single Phase | AIO-H1, a-TroniX AX |
| H3 | Three Phase | AIO-H3, Kuara H3, Sonnenkraft SK-HWR, 1KOMMA5 |
| H3-Pro | Three Phase (Higher Power) | — |
| H3 Smart | Three Phase (Native WiFi) | — |
| KH | Single Phase Hybrid | — |
Rebrands: If your inverter is an OEM rebrand (e.g., Kuara, Sonnenkraft, 1KOMMA5), just connect it like any other FoxESS unit. PowerSync identifies the model family automatically — no special configuration needed.
Modbus TCP (Recommended for H3 Smart)
- Port: 502 (default)
- Slave ID: 247 (default)
- For H3 Smart: Connect directly to the inverter's IP address — no external adapter needed
RS485 Serial
- Baud rate: 9600 (default)
- Slave ID: 247 (default)
- Requires an RS485 adapter (USB or network gateway like Elfin EW11)
The H3 Smart has a built-in WiFi connection. No external adapter is needed.
- Find the inverter's IP address — it appears as "espressif" on your network
- Ensure firmware is up to date — required for a stable connection
- Use default settings — Port 502, Slave ID 247
- PowerSync will auto-detect the model as H3 Smart during setup
Troubleshooting: If the connection test fails:
- Check your router for a device named "espressif" to find the correct IP
- Update inverter firmware to the latest version
- Verify port 502 is not blocked by your network
A FoxESS Cloud API key allows PowerSync to sync electricity prices as time-based schedules on your inverter (up to 8 periods per day). This is not required for battery control.
Getting your API key:
- Log in to foxesscloud.com
- Go to User Profile > API Management
- Generate a new API key
- Enter the API key and your device serial number during PowerSync setup
Note: When Smart Optimization is enabled, cloud schedule sync is automatically skipped — the optimizer controls the inverter directly, and uploading schedules to the cloud would conflict.
| Mode | Description |
|---|---|
| Self Use | Normal self-consumption — battery powers home, charges from solar |
| Feed-in First | Prioritises exporting to grid |
| Backup | Reserves battery for backup power |
| Peak Shaving | Reduces grid import during peak periods (H3-Pro/Smart only) |
Precise power control for charging or discharging the battery on demand. The power level is read from the inverter's own configured maximum — not a fixed cap.
| Feature | Description |
|---|---|
| Force Charge | Charges battery from grid at a configurable power level |
| Force Discharge | Discharges battery to grid |
| Max power | Read automatically from the inverter |
Full support for Sigenergy hybrid inverters with integrated battery storage.
- Tariff Sync via Cloud API — Uploads pricing to Sigenergy Cloud using 30-minute time-of-use format
- Real-Time Energy Data — Reads solar, battery, grid power and state of charge locally
- DC Solar Curtailment — Stops grid export during negative prices while still powering your home
| Connection | Purpose | Required |
|---|---|---|
| Cloud API | Tariff sync to Sigenergy | Yes |
| Local (Modbus TCP) | Real-time energy data + DC curtailment | Yes |
Important: Local Modbus access must be enabled on your Sigenergy inverter before PowerSync can connect. This is typically configured by your installer via the SigenStor app or installer portal.
Device ID Note: If you have an AC Charger installed, it uses Device ID 1 by default. The inverter must be set to a higher ID (e.g., 2).
| Credential | Description | Where to Find |
|---|---|---|
| Your Sigenergy account email | Your login email | |
| Password | Your Sigenergy account password | Your normal password |
| Device ID | Optional — usually not needed | Leave blank |
| Station ID | Your Sigenergy station identifier | SigenAI app or browser dev tools |
Device ID (optional):
Leave this field blank — Sigenergy no longer requires a Device ID for authentication. If authentication fails without it, you can find it by:
- Go to https://web-aus.sigencloud.com/ in your browser (don't log in yet)
- Open Developer Tools (F12) > Network tab > filter by Fetch/XHR > check "Preserve log"
- Log in normally
- Find the
tokenPOST request > Payload tab > look for userDeviceId (13 digits)
Getting Station ID:
- Ask SigenAI in the app: "Tell me my StationID"
- Or find it in the browser dev tools network requests
| Feature | Description |
|---|---|
| Force Charge | Charges battery from grid at a configurable power level |
| Force Discharge | Discharges battery to grid |
| Restore Normal | Returns to normal self-consumption and restores backup reserve |
| Backup Reserve | Saved before force modes and restored automatically |
- Select Sigenergy as your battery system
- Enter Cloud credentials (email, password)
- Select your station from the list
- Enter your inverter's IP address
- Optionally enable DC solar curtailment
Full support for GoodWe hybrid inverters. Local connection only — no cloud API required.
- Auto-Detection — Model family is automatically identified during setup
- Force Charge/Discharge — Charges or discharges the battery on demand
- Backup Reserve — Set minimum state of charge
- Grid Export Limit — Configurable export power limit
- Battery Health — State of health read from inverter
| Series | Type | Battery Control |
|---|---|---|
| ET | Three Phase Hybrid | Full support |
| EH | Three Phase Hybrid | Full support |
| BT | Three Phase Hybrid | Full support |
| BH | Three Phase Hybrid | Full support |
| ES | Single Phase Hybrid | Full support |
| EM | Single Phase Hybrid | Full support |
| BP | Single Phase Hybrid | Full support |
| DT/MS/XS | Grid-only (no battery) | Not supported |
UDP via WiFi Dongle (Default)
- Port: 8899
- Works with most GoodWe inverters out of the box
TCP via LAN Dongle
- Port: 502
- Requires a GoodWe LAN dongle (WLA0000-01-00P V2.0)
- More reliable for installations with poor WiFi
TCP via Modbus Gateway (EMS Mode)
- Some installations connect GoodWe through a third-party Modbus TCP gateway
- In this setup the inverter's UDP port 8899 is unreachable, so operation mode registers cannot be written directly
- PowerSync works around this by relaying force charge/discharge commands through the GoodWe Home Assistant integration's EMS entities, which use registers that accept TCP writes
- See Modbus TCP Gateway Setup below
- Find the inverter's IP address — check your router's device list for the WiFi or LAN dongle
- Select GoodWe as your battery system during PowerSync setup
- Enter the inverter's IP address
- Select the protocol (UDP or TCP) matching your dongle type
- The port defaults automatically (8899 for UDP, 502 for TCP)
- PowerSync tests the connection and auto-detects your inverter model
Note: If setup reports "no battery support", your inverter is a grid-only model (DT/MS/XS series) which does not have battery control capabilities.
If your GoodWe inverter is connected via a Modbus TCP gateway (rather than a direct WiFi/LAN dongle), force charge and force discharge require an extra configuration step. GoodWe's operation mode registers only accept writes over the proprietary UDP protocol on port 8899 — TCP writes are silently ignored.
Prerequisites:
- The GoodWe Home Assistant integration must be installed and working
- This integration must be providing
select.<prefix>_ems_modeandnumber.<prefix>_ems_power_limitentities (where<prefix>is typicallygoodwe)
Steps:
- Go to Settings → Devices & Services → PowerSync → Configure
- Open GoodWe Connection Settings
- Set EMS Entity Prefix to the entity prefix used by the GoodWe integration — typically
goodwe - Save
PowerSync will now route force charge, force discharge, and normal operation commands through the EMS mode entities instead of writing directly to operation mode registers. EMS mode options used: buy_power (force charge), sell_power (force discharge), auto (normal/idle).
| Mode | Description |
|---|---|
| General / Auto | Normal self-consumption operation |
| ECO Charge / Buy Power | Force charge from grid |
| ECO Discharge / Sell Power | Force discharge to grid |
GoodWe controls backup reserve using depth of discharge (how deeply the battery is allowed to deplete). PowerSync converts automatically:
- Setting backup reserve to 20% → battery allowed to deplete to 20%
- Setting backup reserve to 100% → battery kept fully charged (full backup)
- Maximum depletion is capped at 89% (minimum 11% always reserved)
Full support for Sungrow SH-series hybrid inverters via direct local connection. No cloud API required.
- Direct Local Control — All control via your local network
- Force Charge/Discharge — Manual or automatic battery control
- Rate Limiting — Set maximum charge and discharge rates (kW)
- Export Limit Control — Limit grid export power
- Backup Reserve — Configure minimum state of charge for backup power
- Battery Health Monitoring — Read state of health directly from the battery
- AEMO Spike Auto-Discharge — Automatic VPP participation for Globird users
| Series | Type | Battery Control |
|---|---|---|
| SH-series | Hybrid Inverter | Full support |
| SG-series | String Inverter | AC curtailment only (no battery) |
| Setting | Default |
|---|---|
| Port | 502 |
| Slave ID | 1 |
If you have two Sungrow SH inverters — for example, a grid-facing primary and a secondary on the primary's backup port — PowerSync can manage both as a single combined system.
How it works:
- During initial setup, after configuring the primary inverter you'll be prompted to optionally add a second inverter's IP address
- Both inverters are polled independently and their data is combined into a single view
- Solar, battery power, and load are summed across both inverters
- Grid power uses the primary inverter only (it's the grid-facing unit)
- State of charge is capacity-weighted across both inverters
- Commands (force charge, force discharge, restore) are sent to both inverters simultaneously
- Charge/discharge power is split proportionally — the emptier battery gets more charging power, the fuller battery gets more discharging power, and larger batteries get a proportionally larger share
Battery capacity weights:
If your two inverters have different-sized battery stacks, configure the capacity of each so that state-of-charge averaging and power splitting are accurate. For example, if your primary has 51.2 kWh and your secondary has 102.4 kWh:
| Setting | Value |
|---|---|
| Primary Battery Capacity | 51.2 |
| Secondary Battery Capacity | 102.4 |
With these settings:
- SOC averaging is capacity-weighted. If the 51.2 kWh stack is at 80% and the 102.4 kWh stack is at 40%, the combined SOC is 53.3% — not the naive 60% average
- Power splitting accounts for both SOC and capacity — the larger stack receives a proportionally larger share
The default capacity is 25.6 kWh for both inverters. If your battery stacks are identical, you can leave the defaults — the ratio is what matters, not the absolute values.
Setup:
- Configure your primary (grid-facing) Sungrow inverter as normal
- On the "Secondary Sungrow Inverter" step, enter the IP of your second inverter
- PowerSync tests the connection and stores both configurations
- To add/remove a secondary later, go to Settings > Devices & Services > PowerSync > Configure
Grid-forming inverter SOC cap:
In an off-grid scenario, the primary inverter needs headroom in its battery to absorb excess output from the secondary. The Primary Inverter Max SOC (%) setting caps the primary inverter's maximum charge level — for example, setting it to 90% reserves 10% buffer capacity. Set to 100% (default) to disable.
Safety features:
- If the secondary inverter fails to connect on startup, PowerSync falls back to single-inverter mode automatically
- Each inverter is polled independently — a temporary connection failure on one doesn't block the other
- Removing the secondary IP in the options flow cleanly removes all secondary config
Full battery system support for Solax Hybrid inverters. PowerSync connects via the wills106/homeassistant-solax-modbus integration as a companion — that integration handles all direct Modbus communication, and PowerSync bridges through its HA entities for real-time telemetry and battery control. No direct Modbus connection is opened by PowerSync, so your existing solax_modbus setup keeps running untouched.
All models supported by the wills106 solax_modbus integration are supported:
| Family | Type |
|---|---|
| X1-Hybrid Gen4 | Single phase hybrid |
| X1-Hybrid Gen5 | Single phase hybrid |
| X1-Hybrid Gen6 | Single phase hybrid |
| X3-Hybrid Gen4/5/6 | Three phase hybrid |
| X1/X3 AC Retro-Fit | AC-coupled battery |
Gen2/Gen3: These generations use a different control model (Force Time Use schedule windows) and do not expose the Manual Mode select entity. They will show a "missing entity" error at setup. Use the AC-coupled curtailment path instead if you have a Gen2/Gen3 inverter without battery control needs.
- The Solax Modbus integration installed in Home Assistant via HACS. This integration manages the Modbus connection and creates the HA entities PowerSync reads.
- Your Solax inverter paired and online in the solax_modbus integration before adding PowerSync.
No extra credentials needed in PowerSync. All authentication and Modbus communication is handled by the solax_modbus integration. PowerSync reads and writes its entities.
- Smart Optimization — PowerSync's built-in LP optimizer runs full charge/discharge scheduling based on price forecasts, solar generation, and home load.
- Force Charge/Discharge — Charges or discharges the battery on demand via Manual Mode. An HA-side timer automatically restores Self Use mode when the window expires.
- Backup Reserve — Configurable minimum state of charge (clamped to 15–100%).
-
Grid Export Limit — Configurable export power cap via the
export_control_user_limitentity. - Operation Mode Control — Supports Self Use, Feed-in Priority, Back Up, and Smart Schedule modes.
- AEMO Spike Export — Automatically forces discharge during AEMO price spikes. Supported for all Australian retailers via the generic spike manager.
- Live Telemetry — Solar (PV1 + PV2), grid, battery, and load power; battery state of charge and temperature; daily energy totals.
- Install the Solax Modbus integration from HACS and confirm your inverter entities are appearing (e.g.
sensor.solax_battery_capacity). - Add (or reconfigure) the PowerSync integration and select Solax Hybrid as your battery system.
- Enter the entity prefix used by your solax_modbus installation — this is the prefix in front of all entity names. The default is
solax. - Enter your battery's nominal voltage (default 51.2 V for LFP T-BAT packs; use 102.4 V for HV packs).
- Enter your battery capacity (kWh) and maximum charge/discharge current limits (A).
- PowerSync validates that all required entities exist and then saves the configuration.
Finding your entity prefix: In Home Assistant, go to Settings > Devices & Services > Solax Modbus. Click on your device and look at the entity IDs — the part before
_battery_capacityis your prefix (e.g. if the entity issensor.solax_x1_battery_capacity, the prefix issolax_x1).
PowerSync reads and writes the following solax_modbus entities (shown with default prefix solax):
| Entity | Role |
|---|---|
sensor.solax_battery_capacity |
State of charge (%) |
sensor.solax_battery_power_charge |
Battery power (W) — positive = charging |
sensor.solax_measured_power |
Grid power (W) — positive = importing |
sensor.solax_pv_power_1 + sensor.solax_pv_power_2
|
Solar generation (W) |
sensor.solax_inverter_power |
Home load (W) |
sensor.solax_battery_temperature |
Battery temperature (°C) |
select.solax_charger_use_mode |
Operating mode |
select.solax_manual_mode |
Manual mode command (Stop / Force Charge / Force Discharge) |
number.solax_battery_charge_max_current |
Maximum charge current (A) |
number.solax_battery_discharge_max_current |
Maximum discharge current (A) |
number.solax_battery_minimum_capacity |
Backup reserve (%) |
number.solax_export_control_user_limit |
Grid export limit (W) |
Go to Settings > Devices & Services > PowerSync > Configure > Solax connection to update the entity prefix, battery voltage, capacity, or current limits.
Solax Hybrid battery system support was introduced in PowerSync 2.12.113. Report issues on Discord.
For installations where a Solax inverter is used as an AC-coupled solar inverter (not for battery control), PowerSync supports export curtailment — limiting grid export during negative prices while still powering the home.
This path does not require the solax_modbus HACS integration. It connects directly via Modbus TCP and writes the export_control_user_limit register (0x42).
See AC-Coupled Inverter Curtailment for setup instructions.
Support for AlphaESS SMILE and Storion hybrid inverter-battery systems via local connection, with optional Cloud API fallback when the local connection is unreachable.
- SMILE5, SMILE-Hi5, SMILE-Hi10 (residential)
- SMILE-B3, SMILE-T10, SMILE-G3
- Storion-T30
Single-phase and three-phase variants are both supported.
- Ethernet cable between your AlphaESS inverter and your local network. The inverter accepts only one active local connection at a time.
- Local control enabled on the inverter (usually default; check with your installer if unsure).
- Optional: an AlphaESS Open API App ID + App Secret from open.alphaess.com for cloud fallback.
| Setting | Value |
|---|---|
| Port | 502 |
| Slave ID | 85 — AlphaESS factory default. Not 1 or 247 like other brands. |
- Smart Optimization — PowerSync's built-in optimizer writes charge/discharge plans every 5 minutes based on price forecasts.
-
Force charge / discharge / release — Standard
power_sync.force_charge,force_discharge, andrestore_normalservices work for AlphaESS. - DC Solar Curtailment — When feed-in price drops below 1 c/kWh, PowerSync blocks grid export. Solar keeps powering the house and charging the battery.
- Battery Health — State of charge, state of health, rated capacity, and current limits are exposed as sensors.
- Cloud Fallback — If the local connection goes unreachable, PowerSync polls AlphaESS's cloud API for data. Cloud-based control is coarser than local.
- Select AlphaESS as your battery system during PowerSync setup.
- Enter the inverter's host/IP, port (default 502), and slave ID (default 85).
- Optionally configure an export safety cap (kW) to limit grid export during force-discharge operations.
- On the next step, optionally enter Open API App ID + App Secret + serial number for cloud fallback. Leave blank to use local connection only.
Single connection limit: AlphaESS firmware allows only one active local connection at a time. Don't run other AlphaESS integrations on the same inverter in parallel.
AlphaESS support was introduced in PowerSync 2.12.47 and validated end-to-end against a live SMILE system. Report any issues on Discord.
Full support for ESY Sunhome HM-series hybrid inverter-battery systems. PowerSync connects via the ESY Sunhome integration as a companion — that integration handles the cloud connection, and PowerSync bridges through it for real-time telemetry and battery control.
- The ESY Sunhome integration installed in Home Assistant via HACS (search "ESY Sunhome"). This integration manages the ESY cloud connection and creates the HA entities PowerSync reads.
- Your ESY Sunhome device paired and online in the ESY Sunhome integration before adding PowerSync.
No extra credentials needed in PowerSync. All authentication is handled by the ESY Sunhome integration. PowerSync just reads its entities.
- Smart Optimization — PowerSync's built-in LP optimizer runs full charge/discharge scheduling based on price forecasts, solar generation, and home load.
- AEMO Spike Export — Automatically forces discharge during AEMO price spikes ($3000/MWh+). Supported for all Australian retailers via the generic spike manager.
- Saving Sessions — Participates in grid demand-response events.
- Live Telemetry — Solar, grid, battery, and load power; battery state of charge; daily energy totals.
- Mode Control — LP optimizer commands map to ESY's native operating modes:
| PowerSync Action | ESY Mode |
|---|---|
| Force charge | Emergency Mode |
| Force discharge | Electricity Sell Mode |
| Restore normal / Idle / Self-consumption | Regular Mode |
Mode-only control: ESY Sunhome does not expose W-level charge/discharge setpoints. The optimizer issues charge/discharge commands, but the actual power level is determined by the battery firmware.
set_backup_reserveis a no-op (logged, not sent).
- Install the ESY Sunhome integration from HACS and complete device pairing.
- Add the PowerSync integration and select ESY Sunhome as your battery system.
- PowerSync will auto-select the ESY entry if only one exists, or show a picker if you have multiple.
- Setup completes automatically — no IP address or API key required in PowerSync.
In addition to the standard PowerSync energy sensors, ESY Sunhome users get:
| Sensor | Description |
|---|---|
| Inverter Temperature | Inverter heat sink temperature (°C) |
| Battery Status | Operating state text from firmware (e.g. "Charging", "Discharging") |
| Battery Health (SOH) | State of health percentage reported by the BMS |
If you re-add or replace your ESY Sunhome integration entry, go to Settings > Devices & Services > PowerSync > Configure > ESY Sunhome connection to re-bind PowerSync to the new entry.
- No W-level power setpoints — charge/discharge rate is firmware-managed.
- No backup reserve control (
set_backup_reserveis a logged no-op). - No DC solar curtailment support.
- Requires the ESY Sunhome integration to be installed, running, and connected to the ESY cloud. If the ESY cloud goes offline, entities become unavailable and PowerSync falls back to last-known data.
ESY Sunhome support was introduced in PowerSync 2.12.112. Report issues on Discord.
Full support for SAJ H2 and HS2 hybrid inverter-battery systems. PowerSync connects via the SAJ H2 Modbus integration as a companion — that integration handles the Modbus connection, and PowerSync bridges through it for real-time telemetry and battery control.
- The SAJ H2 Modbus integration installed in Home Assistant via HACS (search "SAJ H2"). This integration creates the HA entities PowerSync reads and writes.
- Your SAJ H2/HS2 inverter paired and online in the SAJ H2 Modbus integration before adding PowerSync.
No extra credentials needed in PowerSync. All Modbus authentication is handled by the SAJ H2 Modbus integration. PowerSync reads and controls its entities.
SAJ H2 and HS2 series hybrid inverters are supported. Both single-phase and three-phase variants work, subject to the entities the upstream SAJ H2 Modbus integration provides.
- Smart Optimization — PowerSync's built-in LP optimizer runs full charge/discharge scheduling based on price forecasts, solar generation, and home load.
- Force Charge / Discharge — Charges from grid or discharges to grid on demand. Power level is set proportionally using the inverter's own rated maximum.
- AEMO Spike Export — Automatically forces discharge during AEMO price spikes ($3000/MWh+). Supported for all Australian retailers via the generic spike manager.
- Live Telemetry — Solar, grid, battery, and load power; battery state of charge; battery temperature; daily energy totals.
- Install the SAJ H2 Modbus integration from HACS and complete device pairing.
- Add the PowerSync integration and select SAJ H2/HS2 as your battery system.
- PowerSync will auto-select the SAJ entry if only one exists, or show a picker if you have multiple.
- Enter your battery capacity (kWh) — used by the LP optimizer for scheduling accuracy. Default is 10 kWh.
- PowerSync validates that all required entities exist and setup completes.
Setting the correct battery capacity helps the LP optimizer make accurate scheduling decisions. Find the rated capacity in your inverter's datasheet or the SAJ app. If you're unsure, leave the default (10 kWh) — the optimizer will still work, just with a less precise model.
PowerSync controls the SAJ H2 in passive mode using the number and switch entities exposed by the SAJ H2 Modbus integration:
| Action | Entities used |
|---|---|
| Force charge |
passive_bat_charge_power (number) + passive_charge_control (switch on) |
| Force discharge |
passive_bat_discharge_power (number) + passive_discharge_control (switch on) |
| Restore normal | Both passive_charge_control and passive_discharge_control switched off |
Power is specified as a percentage of the inverter's rated maximum (0–1000 scale internally). PowerSync converts the requested watts proportionally using BatChargePower / BatDischargePower entities.
- No W-level power setpoints in absolute terms — power is set as a fraction of inverter-rated maximum.
- No backup reserve control (
set_backup_reserveis a no-op). - No DC solar curtailment support.
- Requires the SAJ H2 Modbus integration to be installed, running, and connected to the inverter. If the Modbus connection drops, entities become unavailable and PowerSync falls back to last-known data.
SAJ H2 support is available in the current release. Report issues on Discord.
Globird's VPP program pays premium rates during AEMO price spikes ($3000/MWh or above). PowerSync can automatically participate:
- Enable AEMO Spike Auto-Discharge in the mobile app Controls screen
- Select your NEM region (NSW1, VIC1, QLD1, SA1, TAS1)
- When AEMO prices hit $3000/MWh, PowerSync automatically forces battery discharge
- When the spike ends, battery returns to normal operation
- Push notifications are sent for both spike start and end
Tip: If you also have a separate AC-coupled solar inverter, configure it in the AC Inverter Curtailment section. PowerSync will warn you if your Sungrow battery and AC inverter are configured with conflicting settings.