Home Flow Card
Configuration
Every option the card reads, by where it goes in the YAML. Required fields are marked with *.
type to custom:home-flow-card and move grid, solar, battery and home out of entities to the top level; their options stay the same. Options that only change Power Flow Card Plus' circles and lines (for example display_zero_lines) have no effect here.Card options
The card type, which nodes it draws, and how it moves.
type: custom:home-flow-card
grid:
entity: sensor.grid_power
solar:
entity: sensor.solar_power
battery:
entity: sensor.battery_power
state_of_charge: sensor.battery_soc
animate_numbers: truecustom:home-flow-cardpower for live power in W, or energy for energy in Wh over the period picked on the dashboard's energy date picker (today without one). In energy mode every node, the car and the heat pump read energy sensors, each wire carries its energy over the period and, without an expected range in Wh, the pulses share out what was supplied. A grid or battery that ran both ways gets a parallel line and a value each way. What only says what is happening now is left out: the grid's outage, the car's idle conditions and the heat pump's turning fan. See the energy example.mode: energy, the energy date picker to follow, as in Energy Flow Card Plus, for example energy_living_room. Without it, the dashboard's own.grid, solar, battery, home, generator, car and heat_pump, each written like the node's entity. With them, the card gets a selector in its top right corner between live power and today, and reads today itself instead of following a date picker. The house keeps its live size and place. A node without an energy sensor is left out of today; the home without one shows what flowed into it. Only with mode: power, the default. See the example.energy_entities, any of live, today, yesterday, week, month and year for the selector, always shown in that order. Two sit side by side; more open in Home Assistant's dropdown. A single one shows that view without a selector.home, the card works out what the home uses from the others.false turns that off. A node's own actions run either way.Numbers and pulses
How values are rounded and how fast the pulses run, shared with Power Flow Card Plus.
kilo_threshold: 1000
kilo_decimals: 2
max_expected_value: 5000min_expected_power and max_expected_power still work in power mode; the visual editor saves them under the new names.Grid
Under grid: the cable running off to the street.
grid:
entity:
consumption: sensor.grid_import_power
production: sensor.grid_export_power
power_outage:
entity: binary_sensor.grid_outage
label_alert: Blackoutconsumption (import) and production (export), one sensor per direction, each positive.power_outage.entity that means the grid is down.base_decimals and kilo_decimals.#rrggbb or [r, g, b].Solar
Under solar: the panels on the roof.
solar:
entity: sensor.solar_power
name: Roof
color: "#ff9800"base_decimals and kilo_decimals.#rrggbb or [r, g, b].Battery
Under battery: the battery on the wall, with its charge bar.
battery:
entity: sensor.battery_power
state_of_charge: sensor.battery_soc
state_of_charge_position: after_value
state_of_charge_severity:
red: 10
yellow: 25consumption (discharge) and production (charge), one sensor per direction, each positive.below_value, beside whether it is charging; above_value, swapped with the value as the large one; or on the value's line, after_value or before_value. Without a state of charge, the label shows the value either way. The older below_power, above_power, after_power and before_power still work; the visual editor saves them under the new names.mdi:battery, mdi:battery-high, mdi:battery-medium, mdi:battery-low or mdi:battery-outline. By default it follows the state of charge.base_decimals and kilo_decimals.#rrggbb or [r, g, b].Home
Under home: the outlet inside the house. Optional; without it the card works out what the home uses.
home:
entity: sensor.home_power
override_state: trueoverride_state.entity's reading instead of the consumption the card works out.Generator
Under generator: a generator the inverter switches to during a grid outage. It gets its own wire into the inverter and is never drawn on the grid cable. It needs grid.power_outage to know when the grid is down; while it runs, its label takes the grid's place. In energy mode it needs no power_outage: it shows beside the grid whenever it ran over the period.
grid:
entity: sensor.grid_power
power_outage:
entity: binary_sensor.grid_outage
generator:
entity: sensor.generator_powerCar
Under car: an electric car parked in front of the house, wired to the home's outlet.
car:
entity: sensor.wallbox_power
state_of_charge: sensor.car_battery_level
visibility:
- condition: state
entity: device_tracker.car
state: home
idle:
- condition: state
entity: binary_sensor.car_plugged_in
state: "off"home. While hidden it keeps its room, so the house does not move as the car comes and goes. Without conditions the car always shows.Heat pump
Under heat_pump: a heat pump on the front wall, wired to the home's outlet, its fan turning while it runs. With a car configured it hangs above where the car parks; without one, low and further along the wall, its label below it. Only the config decides, so it stays put while the car is away.
heat_pump:
entity: sensor.heat_pump_power
climate: climate.heat_pump
status: temperature_and_targetentity.climate: state (what it is doing, for example Heating), temperature, or temperature_and_target (38 °C → 45 °C).Conditions
car.visibility and car.idle take the conditions of a card's visibility tab. Since Home Assistant 2026.10 its editor writes state and numeric_state with entity_id, as automations do, and offers template, sun, zone and device conditions, which Home Assistant checks for the card. Before 2026.10 those are ignored.
entity, and state or state_not: a value or a list.entity, above, below.media_queryusers: user ids.after, before, weekdays.target: zones, by id, area, floor or label; match_mode: any_zone or active_zone; away. Or the older locations: home, not_home or zone names.conditions: all of them, or any of them.conditions: passes unless all of them hold.Actions
tap_action, hold_action and double_tap_action take Home Assistant's actions: more-info, toggle, navigate, url, perform-action, assist or none. Without any of them, tapping a label opens its entity's details, unless clickable_entities: false.