A Home Assistant integration for Flow Power electricity pricing sensors, compatible with EMHASS and HAEO.
- Price Sources: Supports AEMO (direct wholesale) and the official Flow Power Web Data API
- Flow Power API: Uses an API key to fetch KWatch prices and account values such as PEA, LWAP, and TWAP
- Network Tariff (TOU): Select your electricity distributor and tariff code — network charges are applied to both current prices and forecasts
- PEA Calculation: Implements Flow Power's Price Efficiency Adjustment formula
- Current Flow Power Plans: Plan-aware import/export pricing for Flow Home, Happy Hour, and 4Free
- Optimizer Compatible: Price forecast sensor with attributes for EMHASS and HAEO
- Dynamic TWAP: Auto-calculated 30-day rolling wholesale average for accurate PEA
- ApexCharts Ready: Pre-built data series for charting actual vs forecast prices
- Configurable: Base rates, PEA settings, and network tariff configuration
- Add this repository as a custom repository in HACS
- Search for "Flow Power HA" and install
- Restart Home Assistant
- Add the integration via Settings > Devices & Services > Add Integration
- Copy the
custom_components/flow_power_hafolder to your Home Assistantcustom_componentsdirectory - Restart Home Assistant
- Add the integration via Settings > Devices & Services > Add Integration
Choose between:
- AEMO (Direct wholesale): Fetches prices directly from AEMO NEMWeb
- Flow Power API (KWatch): Uses the API key from Flow Power App > More > Web Data Access for current prices, forecasts, and available account-summary data. AEMO remains the fallback if a transient API price request fails.
Select the plan shown on your current Flow Power agreement:
| Plan | Import benefit | Export benefit |
|---|---|---|
| Flow Home | Base rate plus PEA | 2 c/kWh all day |
| Happy Hour | Base rate plus PEA | 5:30pm-9:30pm; first 15 kWh at 35 c/kWh in NSW/QLD/SA or 30 c/kWh in VIC, then 10 c/kWh |
| 4Free | First 8 kWh in each separate hour from 11am-3pm is credited back | 5:30pm-9:30pm; first 15 kWh at 20 c/kWh in NSW/QLD/SA or 17 c/kWh in VIC, then 5 c/kWh or 2 c/kWh respectively |
The Web Data API does not currently provide the interval import/export totals needed to know how much of a capped benefit remains. The integration therefore does not invent a counter: during 4Free import hours it reports the gross import price as the safe state, and during capped export windows it reports the guaranteed lower tier. The rate_min_*, rate_max_*, rate_is_exact, cap_status, and uncertainty_reason attributes expose the full range and why it is uncertain. Forecasts provide the same information in forecast_rate_ranges.
Entries created before plan selection was added are migrated to Legacy Happy Hour so their previous 5:30pm-7:30pm uncapped export behaviour remains unchanged. Choose a current plan from the integration options when ready.
Select your electricity distributor (DNSP) and tariff code to include time-of-use network charges in both current prices and forecasts.
Supported distributors:
| Region | Distributors |
|---|---|
| NSW | Ausgrid, Endeavour, Essential |
| QLD | Energex, Ergon |
| VIC | Powercor, CitiPower, AusNet, Jemena, United |
| SA | SAPN |
| TAS | TasNetworks |
Your tariff code is listed on your electricity bill under "tariff" or "network tariff". The integration shows a link to your distributor's tariff lookup page during configuration.
The customer-portal login workaround has been removed. The integration no longer stores a Flow Power email/password, performs SMS MFA, or sends automated requests to the customer portal.
To connect the supported API:
- Open the Flow Power app and go to More > Web Data Access.
- Copy the API key.
- Select Flow Power API (KWatch) during setup, or open Settings > Devices & Services > Flow Power HA > Configure.
- Enter the API key and select a residential site if one is returned.
- If automatic site discovery is unavailable, enter the NMI from your electricity bill to enable account-summary sensors, or leave it blank to continue with price-only sensors.
Some valid keys provide prices even when residential-site discovery is temporarily unavailable. The options form retains an existing NMI during API-key changes and allows a manual NMI to be validated against the account-summary endpoint. Import price and forecast PEA calculations use the manual TWAP override first, then the integration's rolling raw wholesale TWAP, then the fallback constant. API BPEA and GST values are used when available.
| Option | Default | Description |
|---|---|---|
| Electricity Plan | Flow Home | Flow Home, Happy Hour, or 4Free |
| Base Rate | 34.0 c/kWh | Your Flow Power base energy rate (GST inclusive, as per PDS) |
| PEA Enabled | Yes | Apply Price Efficiency Adjustment |
| PEA Custom Value | - | Override calculated PEA with fixed value (c/kWh) |
| Electricity Distributor | - | Your DNSP for network tariff TOU rates |
| Tariff Code | - | Your network tariff code |
| Sensor | Unit | Description |
|---|---|---|
sensor.flow_power_<region>_import_price |
$/kWh | Current import price with PEA and network tariff |
sensor.flow_power_<region>_export_price |
$/kWh | Conservative current export price for the selected plan |
sensor.flow_power_<region>_wholesale_price |
c/kWh | Raw wholesale spot price |
sensor.flow_power_<region>_price_forecast |
$/kWh | Price forecast for EMHASS and HAEO |
sensor.flow_power_<region>_twap |
c/kWh | 30-day rolling average wholesale price (TWAP) |
sensor.flow_power_<region>_network_tariff |
c/kWh | Current network tariff rate |
sensor.flow_power_<region>_account_pea_actual |
c/kWh | Actual PEA from the Flow Power API when account-summary access is available |
When the Flow Power API provides account-summary data, the Account PEA sensor exposes these attributes:
| Attribute | Description |
|---|---|
lwap |
Load-Weighted Average Price (c/kWh) |
lwap_import |
LWAP for imports only (c/kWh) |
twap |
Time-Weighted Average Price (c/kWh) |
twap_import |
TWAP for imports only (c/kWh) |
avg_rrp |
Average spot price (c/kWh) |
pea_30_days |
30-day PEA net (c/kWh) |
pea_30_import |
30-day PEA import only (c/kWh) |
pea_actual |
Current PEA (c/kWh) |
pea_target |
PEA target / BPEA (c/kWh) |
bpea |
Benchmark PEA — average customer performance (c/kWh) |
bpea_import |
BPEA for imports only (c/kWh) |
cpea |
Customer PEA — your usage pattern vs average price, LWAP - TWAP (c/kWh) |
cpea_import |
CPEA for imports only (c/kWh) |
site_losses_dlf |
Distribution Loss Factor |
gst_multiplier |
GST multiplier |
avg_usage_kw |
30-day average demand (kW) |
avg_import_usage_kw |
30-day average import demand (kW) |
max_usage_kw |
Maximum demand (kW) |
Compare actual import prices against the forecast using ApexCharts Card from HACS.
type: custom:apexcharts-card
header:
title: Actual vs Forecast Price
show: true
graph_span: 24h
span:
start: day
series:
- entity: sensor.flow_power_qld1_import_price
data_generator: |
return entity.attributes.apex_import_history;
name: Actual Import
unit: c/kWh
color: "#4CAF50"
- entity: sensor.flow_power_qld1_price_forecast
data_generator: |
return entity.attributes.apex_forecast_import;
name: Forecast Import
unit: c/kWh
color: orange
- entity: sensor.flow_power_qld1_price_forecast
data_generator: |
return entity.attributes.apex_forecast_wholesale;
name: Wholesale
unit: c/kWh
color: cyantype: custom:apexcharts-card
header:
title: Price Forecast
show: true
graph_span: 24h
span:
start: minute
series:
- entity: sensor.flow_power_qld1_price_forecast
data_generator: |
return entity.attributes.apex_forecast_import;
name: Import
unit: c/kWh
color: orange
- entity: sensor.flow_power_qld1_price_forecast
data_generator: |
return entity.attributes.apex_forecast_wholesale;
name: Wholesale
unit: c/kWh
color: cyanReplace qld1 with your region (nsw1, vic1, sa1, tas1).
| Sensor | Attribute | Description |
|---|---|---|
| Import Price | apex_import_history |
Historical import prices (up to 48h, [[epoch_ms, cents], ...]) |
| Price Forecast | apex_forecast_import |
Forward curve of import prices inc. network tariff (c/kWh) |
| Price Forecast | apex_forecast_wholesale |
Forward curve of raw wholesale prices (c/kWh) |
The sensor.flow_power_<region>_price_forecast sensor provides forecast attributes compatible with EMHASS and HAEO:
state: 0.32 # Current price in $/kWh
attributes:
forecast: [0.32, 0.28, 0.25, ...] # 48 periods (24h at 30-min)
timestamps: ["2024-01-01T00:00:00+10:00", ...]
unit: "$/kWh"# configuration.yaml
emhass:
...
load_cost_forecast_method: sensor
sensor_power_load_no_var_loads: sensor.home_load
# Use the forecast sensor for price optimizationV2 formula (with network tariff configured):
PEA = GST × Wholesale + Network Tariff Rate - GST × TWAP - Avg Daily Tariff - BPEA
Final Rate = Base Rate + PEA
Legacy formula (without network tariff):
PEA = Wholesale - TWAP - BPEA
Final Rate = Base Rate + PEA
Where:
- TWAP = 30-day rolling average of raw wholesale spot prices (dynamic)
- BPEA = 1.7 c/kWh (Benchmark Price Efficiency Adjustment)
- Network Tariff Rate = Time-of-use network charge for the current half-hour period
- Avg Daily Tariff = 24-hour average of network tariff (nets to zero over a full day)
- Default Base Rate = 34.0 c/kWh
- When insufficient data (<1 hour), TWAP defaults to 8.0 c/kWh
Use Base Rate for the fixed Flow Power energy component from your plan/PDS. When network tariff support is enabled, the current TOU network swing is applied separately through Network Tariff Rate - Avg Daily Tariff, so that swing should not be baked into Base Rate.
The import price sensor includes the current network time-of-use swing used by the PEA formula:
Network TOU adjustment = Network Tariff Rate - Avg Daily Tariff
If the Flow Power app's Price of energy differs by roughly this amount, compare it with the sensor attributes network_tou_adjustment_cents and price_without_network_tou_adjustment_cents. The app display can omit or smooth the current network TOU adjustment, while the import price sensor is the current complete import estimate used for automation.
price_without_network_tou_adjustment_cents removes only the current network tariff swing. It still includes the same BPEA and GST inputs as the full import price, so it will not necessarily match the plain regional sensor.flow_power_<region>_import_price unless those account inputs happen to align.
Both live price sensors expose the selected plan, the conservative numeric state, rate_min_dollars, rate_max_dollars, rate_is_exact, and cap metadata. Automations that require a guaranteed cost or credit can use the sensor state. Display cards can show the range when rate_is_exact is false.
For issues and feature requests, please open an issue on GitHub.
MIT License