power-flow-card-plus is a free, open source internet of things (iot) project written in several languages and released under MIT. It has 1,209 GitHub stars, 190 forks and 12 open issues, and was last pushed 21 hours ago. On this registry it ranks #77 of 104 tracked projects in Internet of Things (IoT), with 5 head-to-head comparisons available.

What is power-flow-card-plus?

Power Flow Card Plus is a custom Home Assistant dashboard card that renders an animated diagram of where a home's electrical power is coming from and going to at this moment — solar, grid, home battery and individual devices — and it is aimed at Home Assistant users who want a configurable live power display rather than an accumulated-energy chart.

What it is

Power Flow Card Plus is a card for Home Assistant dashboards, distributed as a HACS default repository in the Dashboard category. It draws the current power distribution of a home as circles for sources and consumers connected by animated flow lines, and its stated goal is to provide an easy-to-understand and easily visualised display of the power flowing from and to sources such as solar, the grid and home batteries. The card is explicitly modelled on the official Energy Distribution card, and it also aims to expose a great deal of customizability and control of its behaviour to the configuration, so that users can tailor it to their specific requirements.

The concrete problem it addresses is the display of instantaneous power rather than energy totals. The README sets out a narrow scope: the card does not aim to display energy values, meaning accumulated power over a day, and users who want that are directed to the sibling Energy Flow Card Plus. In practice it fills the distribution-diagram role on a Home Assistant dashboard but applies it to live power flows. One structural detail matters for anyone filing bugs or reading code: the card is distributed through the flixlix/power-flow-card-plus repository, but the source lives in the flixlix/flixlix-cards monorepo, where issues and feature requests are tracked going forward.

Key capabilities

  • A built-in UI editor for configuring the card without hand-writing YAML, alongside an interactive configurator on the documentation site that produces copy-pasteable YAML.
  • Animated flow lines driven by an improved Flow Rate Model, with curved lines that connect to the circles and a fix for crooked lines.
  • Bidirectional individual entities and secondary information for all circles, so a configured entity can report flow in both directions.
  • Display of a Grid Power Outage, plus a Grid Tolerance setting that suppresses small grid values so a correcting battery does not show spurious grid draw.
  • Low Carbon Energy from the grid, with a customisable label, icon, circle colour, icon colour and state type.
  • Template functionality, clickable entities including the home circle, and per-entity customisation of label, icon and colour, including hiding an individual entity when its state is 0 or unavailable.
  • Interface localisation in fourteen languages: English, German, Portuguese, Spanish, Brazilian Portuguese, Dutch, Italian, French, Russian, Finnish, Polish, Danish, Slovak and Czech.

Who uses it and how

  • Households running Home Assistant with solar, a home battery and a grid connection, using the card as the live power view of their dashboard.
  • Users who monitor individual devices or circuits as individual entities, each with its own label, icon and colour, and optionally hidden when idle or unavailable.
  • Multilingual homes, since the card's interface is translated into fourteen languages rather than English only.
  • HACS users, who receive it through HACS as a default repository in the Dashboard category rather than by copying files manually.
  • New users who prefer video walkthroughs: the README links a German tutorial from Smartzeug that is current with version 0.2.2 and a Speak to the Geek video covering changes in individual configuration.

Getting started

Installation is recommended through HACS, where the project is a default repository listed under the Dashboard category, and the card is then added to a dashboard and configured through the UI editor or in YAML. The full configuration reference, ready-made examples and interactive configurator are published at cards.flixlix.com/power-flow-card-plus.

How it compares

Among the tools its own documentation names, Power Flow Card Plus sits between the official Energy Distribution card that inspired it and its sibling Energy Flow Card Plus: the official card and Power Flow Card Plus both present a distribution diagram, but Power Flow Card Plus targets current power, while Energy Flow Card Plus covers accumulated energy values. The card is MIT-licensed and distributed free through HACS, with its documentation hosted on its own site.

When to use it — and when not to

There is no backend service to operate here: the card is a front-end addition to an existing Home Assistant installation, so the work is installing it through HACS or as a manual resource and keeping it updated. It is the wrong choice if the goal is accumulated energy over a day, which the README explicitly excludes and points to Energy Flow Card Plus for. Two further caveats are worth knowing: the README is long and defers most configuration detail to the external documentation site, and because the source and issue tracking have moved to the flixlix-cards monorepo, bug reports and feature requests belong there rather than in the distribution repository.

project readme (upstream, from github) — read inline

Power Flow Card Plus

ko-fi support hacs_badge GitHub total downloads commit_activity GitHub release (latest by date)

2023-03-26-13-04-07

[!TIP] 📖 Full documentation: cards.flixlix.com/power-flow-card-plus

The docs site has the complete configuration reference, an interactive configurator with copy-pasteable YAML, and ready-made examples — much easier to navigate than this README.

[!NOTE] This card is distributed via flixlix/power-flow-card-plus, but the source code lives in the monorepo at flixlix/flixlix-cards. Issues and feature requests will be tracked there going forward.

Additional Features / Enhancements

  • UI Editor!!! 🥳
  • Multiple Language support (🇺🇸, 🇩🇪, 🇵🇹, 🇪🇸, 🇧🇷, 🇳🇱, 🇮🇹, 🇫🇷, 🇷🇺, 🇫🇮, 🇵🇱, 🇩🇰, 🇸🇰, 🇨🇿)
  • Bidirectional Individual Entities ↕️
  • Secondary Information for all circles ℹ️
  • Display Grid Power Outage ⚡️
  • Template functionality 📙
... and More:
  • Option for card full size
  • Add Grid Tolerance for small values, to not display the battery correcting grid values
  • New and improved Flow Rate Model
  • Choose whether or not to color icons, text, etc.
  • Display Individual power entities
  • Customize Individual entities' label, icon and color
  • Configure whether to hide Individual Entity when state is 0 or unavailable
  • Clickable entities (including home)
  • Fixed crooked lines
  • Have curved lines connect to the Circles
  • Keep color of battery to grid line, even when not returning
  • Display Low Carbon Energy from the grid
  • Customize Low Carbon Energy label, icon, circle color, icon color and state type
  • Customize Battery, Solar and Home's color, icon, color of icon and label

Goal

The Goal of this card is to provide an easy to understand and visualize way of displaying the current Power Distribution coming from and to different sources, such as solar, grid, home batteries etc. Furthermore, this card aims to expose a lot of customizability and control of its behavior to the configuration, allowing users to tailor it to their specific requirements.

Scope

This card does not aim to display Energy Values (Meaning accumulated power over 1 day, for example). If this is your goal, check out the Energy Flow Card Plus.

Guides

In case you want to watch a tutorial instead of reading through this very long readme 😅, I recommend the following videos:

Installation

Marketplace or HACS (recommended)

Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.

This card is in the default catalog. On Home Assistant 2026.11 and newer, go to Settings → Marketplace, search for "Power Flow Card Plus" and install it. Before 2026.11, search for it in HACS and download it 🙂

Manual install
  1. Download and copy power-flow-card-plus.js from the latest release into your config/www directory.

  2. Add the resource reference as decribed below.

Add resource reference

If you configure Dashboards via YAML, add a reference to power-flow-card-plus.js inside your configuration.yaml:

resources:
  - url: /local/power-flow-card-plus.js
    type: module

Else, if you prefer the graphical editor, use the menu to add the resource:

  1. Make sure, advanced mode is enabled in your user profile (click on your user name to get there)
  2. Navigate to Settings -> Dashboards
  3. Click three dot icon
  4. Select Resources
  5. Hit (+ ADD RESOURCE) icon
  6. Enter URL /local/power-flow-card-plus.js and select type "JavaScript Module". (Use /hacsfiles/power-flow-card-plus/power-flow-card-plus.js and select "JavaScript Module" for HACS install if HACS didn't do it already)

Usage

[!IMPORTANT] The reference below is kept for offline reading. The canonical, easier-to-navigate version is at cards.flixlix.com/power-flow-card-plus/configuration — with grouped options, an interactive configurator, and copy-pasteable examples.

[!WARNING]
This card offers a LOT of configuration options. Don't worry, if you want your card's appearance to match the official Energy Flow Card, you will only need to setup the entities. The rest of the options only enable further customization. If this is your goal, please go to Minimal Configuration or the Examples page on the docs site.

Options

Card options
Name Type Default Description
type string required custom:power-flow-card-plus.
entities object required One or more sensor entities, see entities object for additional entity options.
title string Shows a title at the top of the card.
dashboard_link string Shows a link to an Energy Dashboard. Should be a url path to location of your choice. If you wanted to link to the built-in dashboard you would enter /energy for example.
dashboard_link_label string Go To Energy Dashboard (auto-translates) If set, overrides the default link label to go to a different dashboard.
second_dashboard_link string Shows another link to an Energy Dashboard. Should be a url path to location of your choice. If you wanted to link to the built-in dashboard you would enter /energy for example. (Only available in the YAML Editor)
second_dashboard_link_label string Go To Energy Dashboard (auto-translates) If set, overrides the second default link label to go to a different dashboard.
kilo_decimals number 1 Number of decimals rounded to when kilowatts are displayed.
base_decimals number 1 Number of decimals rounded to when watts are displayed.
min_flow_rate number .75 Represents how much time it takes for the quickest dot to travel from one end to the other in seconds.
max_flow_rate number 6 Represents how much time it takes for the slowest dot to travel from one end to the other in seconds.
kilo_threshold number 0 The number of watts to display before converting to and displaying kilowatts. Setting of 0 will always display in kilowatts.
clickable_entities boolean false If true, clicking on the entity will open the entity's more info dialog.
min_expected_power number 0.01 Represents the minimum amount of power (in Watts) expected to flow through the system at a given moment. Only used by the duration and speed flow rate models.
max_expected_power number 2000 Represents the maximum amount of power (in Watts) expected to flow through the system at a given moment. Only used by the duration and speed flow rate models.
display_zero_lines object {mode: "show"} Check Display Zero Lines
full_size boolean false Warning: This option is experimental. To use this option, you must set your view to panel mode. If set to true, the card will take up the full height of the screen. And the Card should go to the center of the screen.
style_ha_card css CSS Styling to apply to the container of the card (border and background of the card).
style_card_content css CSS Styling to apply to the content of the card (all circles and lines of the card).
flow_rate_model string duration How dot speed follows power: duration, speed or relative. See Flow Formula.
use_new_flow_rate_model boolean Older alias of flow_rate_model: false is relative, true is duration. Ignored when flow_rate_model is set.
sort_individual_devices boolean true (since v0.3.1) If true, sort devices in order of power consumption -> entity id -> alphabetically.
allow_layout_break boolean false Always allow up to 4 individual devices to show, even when there is not enough space, causing visual layout break.
Action Configuration

The card supports Home Assistant action configs on entity circles and other clickable entity surfaces.

Name Type Description
tap_action object Action triggered on tap/click.
hold_action object Action triggered on long press.
double_tap_action object Action triggered on double tap/click.

If none of these actions are configured for a clickable entity surface, the card falls back to opening more-info when clickable_entities: true.

Entities object

At least one of grid, battery, or solar is required. All entites (except battery_charge) should have a unit_of_measurement attribute of W(watts) or kW(kilowatts). Entities in other units, e.g. m³, are read as they are, without scaling.

Name Type Description
grid object Check Grid Configuration for more information.
solar object Check Solar Configuration for more information.
battery object Check Battery Configuration for more information.
individual array Check Individual Devices for more information.
home object Check Home Configuration for more information.
fossil_fuel_percentage object Check Fossil Fuel Percentage for more information.
Grid Configuration
Name Type Default Description
entity string or object undefined required Entity ID of a sensor supporting a single state with negative values for production and positive values for consumption or an object for split entites. Examples of both can be found below.
name string / list Grid If you don't populate this option, the label will continue to update based on the language selected.
icon string mdi:transmission-tower Icon path for the icon inside the Grid Circle.
color object Check Color Objects for more information.
color_icon "color_dynamically", "no_color", "production" or "consumption" no_color If set to color_dynamically, icon color will match the highest value. If set to production, icon color will match the production. If set to consumption, icon color will match the consumption.
display_state "two_way" or "one_way" or "one_way_no_zero" two_way If set to two_way the production will always be shown simultaneously, no matter the state. If set to one_way only the direction that is active will be shown (since this card only shows instantaneous power, there will be no overlaps ✅). If set to one_way_no_zero the behavior will be the same as one_way but you will still the consumption direction when every state is 0.
color_circle "color_dynamically", or "production" or "consumption" consumption If set to color_dynamically, the color of the grid circle changes depending on if you are consuming from the grid or returning to it. If set to production, circle color will match the production. If set to consumption, circle color will match the consumption.
secondary_info object undefined Check Secondary Info Object
display_zero_tolerance number 0 If the state of the entity is less than this number, it will be considered zero. This is to avoid having the grid circle show a small amount of consumption when the battery is trying to correct itself to the grid.
power_outage object undefined Configure how the card handles a power outage. Check Power Outage for more info.
color_value boolean Default is true. If set to false, the values of power will not be colored according to input and output.
invert_state boolean false If set to true the direction as well as the values will be inverted, meaning a positive value will be shown as production and a negative value will be shown as consumption.
unit_of_measurement string W, kW or MW (dynamic) Unit shown after the value. When set, the value is shown in that unit, e.g. kW shows 1500 W as 1.5 kW. Any other unit shows the value as read from the entity, e.g. L/min.
unit_white_space boolean true If set to false, no white space is added between the value and the unit.
decimals number base_decimals, kilo_decimals or mega_decimals Number of decimals to show. Without unit_of_measurement it overrides the card-wide decimals for the current scale, e.g. 1234 with decimals: 2 shows 1.23 kW.
Solar Configuration
Name Type Default Description
entity string undefined required Entity ID providing a state with the value of solar production.
name string / list Solar Label for the solar option. If you don't populate this option, the label will continue to update based on the language selected.
icon string mdi:solar-power Icon path for the icon inside the Solar Circle.
color string HEX value of the color for circles labels and lines of solar production.
color_icon boolean false If set to true, icon color will match the circle's color. If set to false, icon color will match the text's color.
color_value boolean false If set to true, text color of the state will match the circle's color. If set to false, text color of the state will be your primary text color.
secondary_info object undefined Check Secondary Info Object
display_zero boolean true If set to true, the device will be displayed even if the entity state is 0 or not a number (eg: unavailable). Otherwise, the solar circle will be hidden.
display_zero_state boolean true If set to true, the state will be shown even if it is 0. If set to false, the state will be hidden if it is 0.
invert_state boolean false If set to true the direction as well as the values will be inverted, meaning a negative value will be shown as production and a negative value will be shown as 0.
unit_of_measurement string W, kW or MW (dynamic) Unit shown after the value. When set, the value is shown in that unit, e.g. kW shows 1500 W as 1.5 kW. Any other unit shows the value as read from the entity, e.g. L/min.
unit_white_space boolean true If set to false, no white space is added between the value and the unit.
decimals number base_decimals, kilo_decimals or mega_decimals Number of decimals to show. Without unit_of_measurement it overrides the card-wide decimals for the current scale, e.g. 1234 with decimals: 2 shows 1.23 kW.
Battery Configuration
Name Type Default Description
entity string or object undefined required Entity ID of a sensor supporting a single state with negative values for production and positive values for consumption or an object for split entities. Examples of both can be found below.
state_of_charge string undefined required Entity ID providing a state with the state of charge of the battery in percent (state of 100 for a full battery).
state_of_charge_unit string % Unit of the state of charge.
state_of_charge_unit_white_space boolean true If set to false, the unit of the state of charge will not have a white space in front of it.
state_of_charge_decimals number 0 Number of decimals to show for the state of charge.
name string / list Battery Label for the battery option. If you don't populate this option, the label will continue to update based on the language selected.
icon string mdi:battery or dynamic based on state of the battery Icon path for the icon inside the Battery Circle.
color object Check Color Objects for more information.
color_icon "color_dynamically", "no_color", "production" or "consumption" no_color If set to color_dynamically, icon color will match the highest value. If set to production, icon color will match the production. If set to consumption, icon color will match the consumption.
display_state "two_way" or "one_way" or "one_way_no_zero" two_way If set to two_way the production will always be shown simultaneously, no matter the state. If set to one_way only the direction that is active will be shown (since this card only shows instantaneous power, there will be no overlaps ✅). If set to one_way_no_zero the behavior will be the same as one_way but you will still the consumption direction when every state is 0.
state_of_charge_unit_white_space boolean true If set to false, there will be no white space between the state of charge and the unit of the state of charge.
color_state_of_charge_value "color_dynamically", "no_color", "production" or "consumption" no_color If set to color_dynamically, state of charge text color will match the highest value. If set to production, state of charge text color will match the production. If set to consumption, state of charge text color will match the consumption.
color_circle "color_dynamically" or "production" or "consumption" consumption If set to color_dynamically, circle color will match the highest value. If set to production, circle color will match the production. If set to consumption, circle text color will match the consumption.
color_value boolean true If set to false, the values of power will not be colored according to input and output.
invert_state boolean false If set to true the direction as well as the values will be inverted, meaning a positive value will be shown as production and a negative value will be shown as consumption.
unit_of_measurement string W, kW or MW (dynamic) Unit shown after the value. When set, the value is shown in that unit, e.g. kW shows 1500 W as 1.5 kW. Any other unit shows the value as read from the entity, e.g. L/min.
unit_white_space boolean true If set to false, no white space is added between the value and the unit.
decimals number base_decimals, kilo_decimals or mega_decimals Number of decimals to show. Without unit_of_measurement it overrides the card-wide decimals for the current scale, e.g. 1234 with decimals: 2 shows 1.23 kW.
Individual Configuration

The Individual fields must be an array of objects. Each object must follow the following structure:

Name Type Default Description
entity string undefined required Entity ID providing a state with the value of an individual consumption.
name string / list Car or Motorcycle Label for the individual device option. If you don't populate this option, the label will continue to update based on the language selected.
icon string mdi:car-electric or mdi:motorbike-electric Icon path for the icon inside the Individual Device Circle.
color string #d0cc5b or #964cb5 HEX value of the color for circles labels and lines of the individual device.
color_icon boolean false If set to true, icon color will match the circle's color. If set to false, icon color will match the text's color.
unit_of_measurement string Wor kW (dynamic) Sets the unit of measurement to show in the corresponding circle
inverted_animation boolean false If set to true, the small dots will flow in the opposite direction.
accept_negative boolean false If set to true, a negative reading means the device feeds power to the home: the value keeps its minus sign and the dots and direction arrow flip. Otherwise the sign is dropped.
secondary_info object undefined Check Secondary Info Object. The secondary_info entity can provide a number or a string (eg: EV State charging and discharging).
display_zero boolean false If set to true, the device will be displayed even if the entity state is 0 or not a number (eg: unavailable). Otherwise, the non-fossil section will be hidden.
display_zero_tolerance number 0 If set, the device will be displayed if the state is greater than the tolerance set (This is also available for the secondary info). No need to set display_zero property to true.
display_zero_state boolean true If set to true, the state will be shown even if it is 0. If set to false, the state will be hidden if it is 0.
color_value boolean false If set to true, state text color will match the circle's color. If set to false, state text color will be the primary text color.
decimals number 0 Number of decimals to show in the corresponding state.
Home Configuration
Name Type Default Description
entity string undefined required Entity ID providing a state with the value of your home's consumption. Note that this entity will not be displayed and will only be used for the more info dialog when clicking the home section.
name string / list Home Label for the home option. If you don't populate this option, the label will continue to update based on the language selected.
icon string mdi:home Icon path for the icon inside the Home Circle.
color_icon boolean or "solar" or "grid" or "battery" false If set to true, icon color will match the highest value. If set to solar, icon color will match the color of solar. If set to grid, icon color will match the color of the grid consumption. If set to battery, icon color will match the color of the battery consumption.
color_value boolean or "solar" or "grid" or "battery" false If set to true, state text color will match the highest value. If set to solar, state text color will match the color of solar. If set to grid, state text color will match the color of the grid consumption. If set to battery, state text color will match the color of the battery consumption.
secondary_info object undefined Check Secondary Info Object
subtract_individual boolean false If set to true, the home consumption will be calculated by subtracting the sum of the individual devices from the home consumption.
override_state boolean false If set to true, the home consumption will be the state of the entity provided. By default the home consumption is calculated by adding up all sources. This is useful, when for example you are using an inverter and it has power losses.
Fossil Fuel Configuration
Name Type Default Description
entity string none required Entity ID providing a state with the value of the percentage of fossil fuel consumption. The state should be 100 when all the energy from the grid comes from high emission sources and 0 when all the energy from the grid comes from low emission sources. It is recommended to use the CO2 Signal integration, which provides this sensor out of the box without any additional templating. This will also be the entity used in the more-info dialogs.
name string / list Low-carbon Name to appear as a label on top of the circle.
icon string mdi:leaf Icon path (eg: mdi:home) to display inside the circle of the device.
color string #0f9d58 HEX Value of a color to display as the stroke of the circle and line connecting to the grid.
color_icon boolean false If true, the icon will be colored with the color property. Otherwise it will be the same color as all other icons.
display_zero boolean false If set to true, the device will be displayed even if the entity state is 0 or not a number (eg: unavailable). Otherwise, the non-fossil section will be hidden.
display_zero_state boolean true If set to true, the state will be shown even if it is 0. If set to false, the state will be hidden if it is 0.
state_type string power The type of state to use for the entity. Can be power or percentage. When set to power the state will be the amount of power from the grid that is low-carbon. When set to percentage the state will be the percentage of power from the grid that is low-carbon.
unit_white_space boolean true If set to false will not add any whitespace between unit and state. Otherwise, white space will be added.
calculate_flow_rate boolean or number true When unset or true, the flow rate is calculated with the flow rate formula (see flow_rate_model). If false, dots flow at a fixed pace. If set to a number, the flow rate will be set to that number. For example, defining the value 10 will ensure one dot will flow every 10 seconds.
Color Object
Name Type Description
production string HEX value of the color for circles labels and lines of production.
consumption string HEX value of the color for circles labels and lines of consumption.
Split entities

Can be use with either Grid or Battery configuration. The same unit_of_measurement rule as above applies.

Name Type Description
consumption string Entity ID providing a state value for consumption, this is required if using a split grid object.
production string Entity ID providing a state value for production
Secondary Info Configuration

This Feature allows you to configure an additional small text for each Individual Device. Here you can put , for example, the state of charge of an electric car.

Name Type Description
entity string required Entity ID providing a state value that is going to be displayed.
unit_of_measurement string A string to be used as the unit of measurement. (Important: don't forget surrounding string with quotes)
icon string An icon path to be displayed next to the state of the individual device. This is optional, meaning if you don't use this, no icon will be displayed.
unit_white_space boolean Default is true. If set to false will not add any whitespace between unit and state. Otherwise, white space will be added.
display_zero boolean Default is false. If set to true info will still be displayed if state of the entity is 0 or unavailable.
display_zero_tolerance number If set, the device will be displayed if the state is greater than the tolerance set. No need to set display_zero property to true.
decimals number The number of decimal places to round the value to.
template string Here you can enter a HA Template. The output of the template will be displayed. Space is limited inside the circle and too much text will result in overflow using ellipsis, so use with caution. Will update automatically in case one of the provided entities inside the template updates. Can only be used in case entity was not set.
accept_negative boolean Default is false. If set to true, negative values will be displayed as negative, otherwise they will be transformed to positive
sum_total boolean The secondary info field on the solar bubble can be used as a second string and be summed with the main entity to create a total of solar consumption. By default, these two values are completely decoupled.
tap_action object Action triggered on tap/click on the secondary info text.
hold_action object Action triggered on long press on the secondary info text.
double_tap_action object Action triggered on double tap/click on the secondary info text.
Power Outage

This feature allows you to configure how the card handles a Grid Power Outage scenario.

Name Type Description
entity string required Entity ID providing a state that changes when there is a Power Outage. (eg: binary_sensor.grid_connection_status). Doesn't need to be a binary_sensor.
entity_generator string Entity ID providing the power of a Generator. (eg: sensor.generator_power). This is optional, meaning if you don't use this, the card will assume the grid is the only source of power.
state_alert string The state the provided entity is at when there is a power outage. Default is on, meaning if the entity's state is on the card will assume there is a power outage.
icon_alert string An icon path to be override the grid icon when there is a power outage. Default is mdi:transmission-tower-off.
label_alert string A text that will be displayed below the icon when there is a power outage.
calculate_flow_rate boolean or number true
When unset or true, the flow rate is calculated with the flow rate formula (see flow_rate_model). If false, dots flow at a fixed pace. If set to a number, the flow rate will be set to that number. For example, defining the value 10 will ensure one dot will flow every 10 seconds.
Display Zero Lines

This object allows you to control the behavior of the flow lines that are inactive.

Name Type Description
mode string Valid Options are: show, hide, transparency, grey_out, custom
transparency number A number between 0 and 100. 100 means the line doesn't show at all. 0 means the line shows in full opacity. Default is 50. Will be used when the mode is either transparency or custom.
grey_color string or list of numbers Either a HEX Code or a List of three numbers between 0 and 255 in RGB order. Will be used when the mode is either grey_out or custom.

Minimal Configuration

Don't forget to change the entity ids

The following configurations will allow you to achieve your results with the least amount of lines of code / complexity. In these examples I decided to use the Split entities option, but feel free to use the combined entity option. More Info

Only Grid
type: custom:power-flow-card-plus
entities:
  grid:
    entity: sensor.grid_power
    power_outage:
      entity: sensor.power_outage
    display_state: one_way
    color_circle: true
kilo_threshold: 10000

This should give you something like this:

demo_only_grid-2

Grid and Solar
type: custom:power-flow-card-plus
entities:
  grid:
    entity:
      consumption: sensor.grid_consumption
      production: sensor.grid_production
      display_state: one_way
      color_circle: true
  solar:
    entity: sensor.solar_production

This should give you something like this:

demo_solar_and_grid

Grid, Solar and Battery
type: custom:power-flow-card-plus
entities:
  grid:
    entity:
      consumption: sensor.grid_consumption
      production: sensor.grid_production
    display_state: one_way
    color_circle: true
  solar:
    entity: sensor.solar_production
  battery:
    entity:
      consumption: sensor.battery_consumption
      production: sensor.battery_production
    state_of_charge: sensor.battery_state_of_charge
    display_state: one_way
    color_circle: true
  home:
    color_icon: true
kilo_threshold: 10000

This should give you something like this:

demo_grid_solar_bat-2

Mix & Match Config aka "Full Config"

This Configuration is a little bit random, it's just here to demonstrate the capabilities of this card.

type: custom:power-flow-card-plus
entities:
  home:
    entity: sensor.home_consumption
    color_icon: solar
  fossil_fuel_percentage:
    entity: sensor.fossil_fuel_percentage
    icon: mdi:pine-tree
    color_icon: true
    display_zero: true
    name: Non Fossil
    state_type: power
  grid:
    icon: mdi:ab-testing
    name: Provider
    entity:
      production: sensor.grid_production
      consumption: sensor.grid_consumption
  solar:
    icon: mdi:solar-panel-large
    entity: sensor.solar_production
  battery:
    name: Bateria
    icon: mdi:bat
    entity:
      consumption: sensor.battery_consumption
      production: sensor.battery_production
  individual:
    - entity: sensor.car_power
      icon: mdi:car-electric
      color: "#80b8ff"
      name: Denim Flash
      color_icon: false
    - entity: sensor.motorbike_power
      name: Qivi
      color_icon: true
      display_zero: true
      color: "#ff8080"
      icon: mdi:motorbike-electric
base_decimals: 0
kilo_decimals: 2
min_flow_rate: 0.9
max_flow_rate: 6
kilo_threshold: 10000
clickable_entities: true
title: Power Flow Card Plus

This should give you something like this: minimal_config_full

Random Configurations

2023-03-26-13-04-07 recording_multi_indiv demo demo_grid_solar_bat

UI Editor (available in version 0.2)

[!TIP] I've made a lot of improvements in version 0.2 for the UI-Editor. Now each field has its own subpage, meaning there is now much less scrolling. The biggest change in the editor is the fact that you can now add up to 4 individual devices, all through the UI! 🥳

ui-editor

Flow Formula

flow_rate_model picks how a line's value becomes the time one dot takes to travel it:

flow_rate_model What moves linearly with power Depends on other lines
duration (default) time per dot no
speed dot speed (1 / time per dot) no
relative time per dot, by the line's share of total yes

Seconds per dot with the default min_flow_rate: 0.75, max_flow_rate: 6, min_expected_power: 0.01 and max_expected_power: 2000 (for relative, the line's share of all lines):

Line value duration speed relative
0 W (0 %) 6.00 6.00 6.00
250 W (12.5 %) 5.34 3.20 5.34
500 W (25 %) 4.69 2.18 4.69
1000 W (50 %) 3.38 1.33 3.38
1500 W (75 %) 2.06 0.96 2.06
2000 W or more (100 %) 0.75 0.75 0.75

You may want to play around with max_expected_power, min_expected_power, max_flow_rate and min_flow_rate to get the speeds that you wish. use_new_flow_rate_model is the older way to choose: false means relative, true or unset means duration; flow_rate_model wins when both are set.

Duration model (default)

The time per dot shrinks linearly with the value, independently from other lines: a state of 10W always flows with the same velocity, no matter what other lines are doing. This is how the card behaved before 0.4.0-beta.0.

if (value > maxIn) return minOut; // above max_expected_power, use the fastest speed
return ((value - minIn) * (minOut - maxOut)) / (maxIn - minIn) + maxOut;

// value = value of the current line to calculate (eg: grid to home)
// minIn = min_expected_power, maxIn = max_expected_power
// maxOut = max_flow_rate (seconds per dot at min_expected_power)
// minOut = min_flow_rate (seconds per dot at max_expected_power)
// Below min_expected_power, dots move slower than max_flow_rate.
Speed model

Like duration it is independent from other lines, but the dot speed (one over the duration) grows linearly with the value, so twice the power looks about twice as fast. Mid-range values move noticeably faster than with duration. Values outside the expected range use the slowest or fastest speed.

progress = clamp((value - minIn) / (maxIn - minIn), 0, 1);
speed = 1 / maxOut + progress * (1 / minOut - 1 / maxOut);
return 1 / speed; // seconds for one dot to travel the line
Relative model

Based on the official formula used by the Energy Distribution card. Each line's flow rate is relative to all the other lines.

max - (value / totalLines) * (max - min);
// max = max_flow_rate
// min = min_flow_rate
// value = line value, solar to grid for example
// totalLines = gridConsumption + solarConsumption + solarToBattery +
//   solarToGrid + batteryConsumption + batteryFromGrid + batteryToGrid

The following video aims to show the difference between the relative and an absolute flow formula:

Notice that when the Power changes to only coming from the sun, the old formula accelerates to maintain a constant amount of dots/second. Using the new formula is more intuitive, since you can immediately see that the Solar Power is relatively low since the dots are flowing very slowly. On the old Flow Formula you might think that the sun is producing a lot of power, which in this case is not true.

At the end of the day these are two options and depending on what you're interested, one might suit you better than the other, that's why I kept the old formula, you have the choice. 🙂

To-Do List

Here is my to-do list containing a few enhancements I am planning in adding. The ones at the top are bigger priorities, so they’ll probably be available before the ones at the bottom.

  • Change Tap Action Behavior to be compatible with Browser Mod
  • Fill the circles #89
  • More than two Individual Devices #54
  • More than one solar source #23
  • Display Connected/Disconnected status #111
  • Grid Feed In Circle #119
  • Improve performance #144

I am still just one person working on this project and obviously have other things going on in my life, so feel free to contribute to the project. You can also feel free to create a PR with a new feature and I'll try my best to review it 😊

Structured names

Requires Home Assistant 2026.4 or later. On earlier versions a structured name falls back to the entity's friendly name.

Home Assistant composes an entity's display name out of its registry context (entity, device, area, floor) rather than one friendly_name string. Any name option in this card can be a list of those parts instead of a plain string, so labels keep following renames and match what the built-in cards show:

entities:
  grid:
    entity: sensor.grid_power
    name:
      - type: area
      - type: entity

Available part types are entity, device, area, floor, and text (a literal, written as {type: text, text: 'Grid'}). Parts that resolve to nothing are dropped. A plain string name keeps working exactly as before, as does use_metadata, which now takes the entity's composed name rather than its friendly_name.

See the Home Assistant developer documentation for details.

License

This card is released under the MIT License.

Frequently asked questions

Is power-flow-card-plus free to use?

power-flow-card-plus is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does power-flow-card-plus do?

A power distribution card inspired by the official Energy Distribution card for Home Assistant

What is power-flow-card-plus written in?

power-flow-card-plus's source is publicly available at https://github.com/flixlix/power-flow-card-plus, with 1,209 GitHub stars.