Power Flow Card Plus Save Abandoned

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

Project README

Power Flow Card Plus

GitHub release (latest by date) GitHub all releases ko-fi support

2023-03-26-13-04-07

Additional Features / Enhancements

  • Display Individual power entities
  • Customize Individual entities's label, icon and color (Unit of measurement is on the To-Do List)
  • Configure wether to hide Individual Entity when state is 0 or unavailable
  • Clickable entities (including home)
  • Fixed crooked lines PR #4
  • 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/Scope

Display current power, gas, and water usage in a display that matches the the official Energy Distribution card included with Home Assistant as much as possible.

Install

This card is not direclty available in HACS (Home Assistant Community Store). HACS is a third party community store and is not included in Home Assistant out of the box. To install this:

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)

Using the card

⚠️ This card offers a LOT of configuration options. Don't worry, if you want your card's appearance to match the oficial 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

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.
inverted_entities string Comma seperated list of entities that should be inverted (negative for consumption and positive for production). See example usage.
kw_decimals number 1 Number of decimals rounded to when kilowatts are displayed.
w_decimals number 1 Number of decimals rounded to when watts are displayed.
min_flow_rate number .75 Represents the fastest amount of time in seconds for a flow dot to travel from one end to the other, see flow formula.
max_flow_rate number 6 Represents the slowest amount of time in seconds for a flow dot to travel from one end to the other, see flow formula.
watt_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.

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).

Name Type Description
grid object required Check Grid Configuration for more information.
solar object Check Solar Configuration for more information.
battery object Check Battery Configuration for more information.
individual1 object Check Individual Devices for more information.
individual2 object 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 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 boolean or "production" or "consumption" false If set to true, 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.

Solar Configuration

Name Type Default Description
entity string undefined required Entity ID providing a state with the value of solar production.
name string 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.

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).
name string 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 boolean or "production" or "consumption" false If set to true, 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.

Individual Configuration

Name Type Default Description
entity string or object undefined required Entity ID providing a state with the value of an individual consumption.
name string 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.
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.
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.
secondary_info object undefined Check Secondary Info Object

Home Configuration

Name Type Default Description
entity string or object 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 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.

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 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 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 non-fossil section will be hidden.
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.

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.
display_zero boolean Default is false. If set to true info will still be displayed if state of the entity is 0 or unavailable.
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.

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:
      consumption: sensor.grid_consumption

This should give you something like this:

minimal_config_only_grid

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

This should give you something like this:

minimal_config_grid_solar

Grid, Solar and Battery
type: custom:power-flow-card-plus
entities:
  grid:
    entity:
      consumption: sensor.grid_consumption
      production: sensor.grid_production
  solar:
    entity: sensor.solar_production
  battery:
    entity:
       consumption: sensor.battery_consumption
       production: sensor.battery_production
    state_of_charge: sensor.battery_state_of_charge

This should give you something like this:

minimal_config_grid_solar_battery

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
  individual1:
    entity: sensor.car_power
    icon: mdi:car-electric
    color: '#80b8ff'
    name: Denim Flash
    color_icon: false
  individual2:
    entity: sensor.motorbike_power
    name: Qivi
    color_icon: true
    display_zero: true
    color: '#ff8080'
    icon: mdi:motorbike-electric
w_decimals: 0
kw_decimals: 2
min_flow_rate: 0.9
max_flow_rate: 6
watt_threshold: 10000
clickable_entities: true
title: Power Flow Card Plus

This should give you something like this: minimal_config_full

Flow Formula

This formula is based on the offical formula used by the Energy Distribution card.

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

I'm not 100% happy with this. I'd prefer to see the dots travel slower when flow is low, but faster when flow is high. For example if the only flow is Grid to Home, I'd like to see the dot move faster if the flow is 15kW, but slower if it's only 2kW. Right now the speed would be the same. If you have a formula you'd like to propose please submit a PR.

Credits

Open Source Agenda is not affiliated with "Power Flow Card Plus" Project. README Source: flixlix/power-flow-card-plus
Stars
34
Open Issues
6
Last Commit
1 year ago

Open Source Agenda Badge

Open Source Agenda Rating