If you're using the excellent Predbat integration in Home Assistant, this custom table card for the Predbat plan maybe for you.
More of my Predbat related enhancements here.
This is a custom Predbat table card that allows flexible column management and styling - meaning you can set which columns you want to see, in which order, and with what styling. The card also supports Predbat's HTML debug mode, collapsing import/export prices into a single column, and local weather information. The card can switch between light modes or you can force the mode you want through the YAML configuration. The card also supports flexible styling, so you can use a mix of this card's style as well as some of the original Predbat HTML plan style in different columns.
![]() |
![]() |
|---|
- Installation
- Card Configuration
- Default Card Setup Example
- Custom Card Setup Example
- Managing table width for different devices
- Friendly States
- Showing the weather forecast
- PV prediction card visual
- Creating a mini Predbat card
- Using the Options columns
- Goto HACS (if you dont have that installed, install HACS)
- Add a custom repository
- Add the URL to this repo:
https://github.com/pacemaker82/PredBat-Table-Cardusing the categoryDashboard(used to beLovelacepre HACS 2.0.0) - Go back to HACS and search for "Predbat table card" in the HACS store
- Download and refresh
- Goto dashboard, edit dashboard, select 'add card' button, and add the new custom Predbat Table Card. Default YAML setup below should be there to help get started.
The following YAML config items can or should be set on the card
| Configuration Item | Required | Value |
|---|---|---|
type |
YES | predbat-table-card |
entity |
YES | predbat.plan_html or name of the entity holding the Predbat plan HTML |
columns |
YES | See Column Options section for breakdown Provide in any order you want At least 1 column needs to be used |
row_limit |
NO | Limit the number of rows the plan returns. |
show_predbat_version |
NO | Set to true if you want the card to show you the Predbat version. Click to upgrade when new version available! Appears at bottom of table |
show_tablecard_version |
NO | Set to true if you want the card to show you the card version. Click to upgrade when new version available! Appears at bottom of table |
hide_last_update |
NO | true or false. Will determine if the last update time is shown at the top of the table, with plan generation duration |
fill_empty_cells |
NO | true or false. Will add a "-" symbol where data isnt available to clear out empty space |
light_mode |
NO | Use light, dark, or auto - default is auto if you dont set it. Use this to force the mode you want |
debug_prices_only |
NO | true or false. If you have enabled Predbat's HTML Plan debug, set to true to only show the adjusted prices, rather than the default (actual and adjusted prices). Important: Only works if HTML Plan debug is enabled |
stack_pills |
NO | true or false. Set to false if you want the price pills to only display on one line, true for on top of each other. Default is true |
old_skool |
NO | Set to true if you want to override the styling of the entire table to follow the original Predbat card. This setting still allows for the flexibility of custom columns etc. Overrides any styling settings like light mode, row colours |
old_skool_columns |
NO | Like columns, use this setting to override specific columns to use the original Predbat card style. old_skool setting is ignored if these are set. Supports all the same columns. Column order is still set in columns not here, this setting just affects the style/appearance. Works in dark and light mode. See Custom Setup Example below for details on how to use |
hide_empty_columns |
NO | Set to true to automatically hide ANY column where there is no data for them in the plan, i.e. the column is empty of data. The columns will re-appear when Predbat has a plan for them (like when you plug your car back in) |
font_size |
NO | Set the font size of all columns (except pills). Useful if you want to squeeze more data or columns into a single view Use integer (14) or float values (13.5). Default is 14 if you dont use this setting |
table_width |
NO | From 0 to 100 representing percentage width. If not set default will be used. Card will use the percentage based on the container the card is in. E.g. if you put the card in a single card template and set to 100 it will display on the entire screen |
odd_row_colour |
NO | Override Dark Mode Odd Row Colour - HEX value e.g. #FFFFFF otherwise default colour will be used |
even_row_colour |
NO | Override Dark Mode Even Row Colour - HEX value e.g. #FFFFFF otherwise default colour will be used |
odd_row_colour_light |
NO | Override Light Mode Odd Row Colour HEX value e.g. #FFFFFF otherwise default colour will be used |
even_row_colour_light |
NO | Override Light Mode Even Row Colour HEX value e.g. #FFFFFF otherwise default colour will be used |
use_friendly_states |
NO | Set to true if you want the Predbat state-column description to be more user friendly in terms of describing what is actually happening. See here for more |
show_table_meta |
NO | Set to true to show the metadata that appears at the top of the original Predbat table card on this card too Note: No longer works since Predbat v 8.18.1+ |
debug_columns |
NO | Like columns, use this setting to override specific columns to show the 10% values in HTML Debug mode. Only works for import-column, export-column, load-column, limit-column and pv-column Default is OFF for these 10% values |
show_day_totals |
NO | Displays a day "Totals" row at midnight of the plan for any columns that can be calculated |
show_plan_totals |
NO | Displays a "Totals" row at the bottom of the plan for any columns that can be calculated |
weather_entity |
NO | Add a weather forecast entity to see the weather for each time slot. Must add weather-column or temp-column to columns to see weather |
path_for_click |
NO | Add a dashboard path like /my-dashboard/predbat-plan to be navigated to when you click the plan |
battery_capacity |
NO | Set a float value e.g. 9.523 for your total battery capacity in kWh. Setting this will display the soc-column in kWh rather than a % |
| Column Name | Column YAML | Description |
|---|---|---|
| Time | time-column |
Displays the time in the Predbat plan |
| Import | import-column |
Displays the import price for the given time |
| Export | export-column |
Displays the export price for the given time |
| Import/Export | import-export-column |
Displays both the import AND export price for the given time |
| State | state-column |
Displays the state of the battery |
| Limit | limit-column |
Displays the limit set by Predbat on the battery for energy import or export |
| PV | pv-column |
Displays the predicted PV generation for the given time |
| Load | load-column |
Displays the predicted house load for the given time |
| SoC | soc-column |
Displays the predicted battery percentage for the given time |
| Cost | cost-column |
Displays the cost or gain for the given time |
| Total Cost | total-column |
Displays the overall cost/gain incurred up to that point in time |
| Car | car-column |
Displays the predicted car energy charging for that time period ** |
| iBoost | iboost-column |
Displays the predicted iBoost energy usage for that time period ** |
| CO2 kWh | co2kwh-column |
Displays the predicted carbon intensity CO2/KwH for that time period ** |
| CO2 kg | co2kg-column |
Displays the predicted carbon intensity CO2/kg for that time period ** |
| XLoad | xload-column |
Displays the predicted load if also using Predheat ** *** |
| Clipping | clip-column |
Displays the predicted PV clipping for that time period ** *** |
| Net Power | net-power-column |
Displays the predicted net power when calculating available PV, minus house load, car and iBoost loads for that time period |
| Weather | weather-column |
Displays a weather icon based on the forecast for that timeslot |
| Temperature | temp-column |
Displays the temperature based on the forecast for that timeslot |
| Chance Of Rain | rain-column |
Displays the chance of rain percentage based on the forecast for that timeslot |
| Overrides | options-column |
Displays buttons to force demand, charge or export for that timeslot. See more |
| Overrides (PopUp) | options-popup-column |
Displays a popup of buttons to force demand, charge or export for that timeslot. See more |
You can use import-export-column to see both import and export prices in a single column
** Column only works if feature configured in Predbat
*** Column only appears when Predbat set to HTML Debug Mode
Arrows indicate if the predicted value is increasing or decreasing
This default card config YAML should be there by default to help you get started. If not, paste the below into the card YAML after you have added the card to your dashboard:
type: custom:predbat-table-card
entity: predbat.plan_html
columns:
- time-column
- import-column
- export-column
- state-column
- limit-column
- pv-column
- load-column
- soc-column
- cost-column
- total-column
table_width: 100
fill_empty_cells: true
Below example shows how you can use any column in any order, just put them in the columns list how you want them. This example is also showing the state and soc columns in the style of the original Predbat card.
type: custom:predbat-table-card
entity: predbat.plan_html
columns:
- time-column
- state-column
- soc-column
- load-column
- limit-column
- total-column
light_mode: light
fill_empty_cells: true
old_skool_columns:
- state-column
- soc-column
![]() |
![]() |
|---|
The card has built in logic to reduce column widths the best it can, it will dynamically truncate some labels and column headers too to maximise the real estate. However there is only so much you can do if you choose to show a lot of the Predbat data.
As an alternative, you can use the built in conditional card in Home Assistant to make two versions of the Predbat card, one for mobile screen and one for full computer screen (or any size wider than mobile). In the example below, the first version of the card is for mobile phone screen size, limiting the number of columns to see, the second is the full size version showing all the columns. Of course as this card is very flexible you can have different columns in different orders depending on the screen size. Check out the conditional card for even more options (like a tablet version etc).
An additional nice part of this is that using the example below, your phone will show the slimmed down card in portrait mode, but rotating the phone to landscape will show the bigger card with more columns.
type: vertical-stack
cards:
- type: conditional
conditions:
- condition: screen
media_query: '(min-width: 0px) and (max-width: 767px)'
card:
type: custom:predbat-table-card
entity: predbat.plan_html
columns:
- time-column
- soc-column
- state-column
- limit-column
- total-column
odd_row_colour: '#181f2a'
even_row_colour: '#2a3240'
fill_empty_cells: true
stack_pills: false
old_skool_columns:
- soc-column
- state-column
- type: conditional
conditions:
- condition: screen
media_query: '(min-width: 768px)'
card:
type: custom:predbat-table-card
entity: predbat.plan_html
columns:
- time-column
- import-column
- state-column
- limit-column
- soc-column
- pv-column
- load-column
- cost-column
- total-column
odd_row_colour: '#181f2a'
even_row_colour: '#2a3240'
fill_empty_cells: true
stack_pills: false
old_skool_columns:
- soc-column
- state-column
This custom card can "translate" the states in the existing Predbat card, and make them more user friendly by using the use_friendly_states config item (see table above). I hesitate to say "dumb them down" but it at least attempts to describe in plainer english what is happening. Here is the spec of those friendly states:
Full explanations of the Predbat status's can be found here
| State | Friendly Name |
|---|---|
| ⅎ | Manually Forced (Idle/Charge/Export) |
| ↗ | Charging |
| ↘ | Discharging |
| → | Idle |
| FrzExp | Charging Paused |
| FrzChrg | Maintaining SoC |
| HoldChrg | Maintain SoC to Limit |
| NoChrg | Charge to Limit |
| Chrg | Planned Charge |
| Exp | Planned Export |
Please note: "Discharging" is describing the battery discharging to the house. "Planned Export" describes the battery exporting to the grid. This was changed to include "Export" terminology when Predbat updated to 8.7.0.
The image below demonstrates the friendly states in action:

By adding a weather forecast entity to your YAML using weather_entity, and adding weather-column to your columns, you can view the weather forecast for the specific time.
You can also add temp-column to display the temperature for the timeframe.
- Weather data shows RED if temperature is higher than 25C (77F), indicating solar panel efficiency impact
- Weather data shows BLUE if temperature is below than 0C (32F), indicating battery efficiency impact
Read more about the weather integration in my blog.
IMPORTANT: Only works with valid weather forecast entities designed per the Home Assistant latest spec. See here for some examples Tested with Met Office, met.no and WeatherFlow Forecast integrations.
IMPORTANT: Sometimes your weather forecast might not cover the Predbat plan. In this case no weather icon will show.
weather_entity: weather.forecast_home
columns:
- time-column
- weather-column
- temp-column
- rain-column
- import-column
- state-column
Mouse over the weather icon to see a description and temperature.
If you'd like to visualise your 5 day PV prediction from Predbat, take a look at this card configuration I created
Using a combination of columns and row_limit you can show a mini Predbat plan on dashboards with other cards, giving you a quick look of the plan.
Use font_size to customise the size of the plan even more on your dashboard.
Use path_to_click to enable your mini plan card to click through to another dashboard showing the full plan.
Example YAML:
type: custom:predbat-table-card
entity: predbat.plan_html
columns:
- time-column
- state-column
- pv-column
- load-column
- soc-column
table_width: 100
fill_empty_cells: true
row_limit: 5
font_size: 13
old_skool_columns:
- state-column
hide_last_update: true
path_to_click: /my-dashboard/predbat-plan
Overrides allow you to force Predbat to behave in the way you want, rather than the way it wants, like force a charge for a time slot, or export.
The card now supports the following Predbat overrides:
- Manual Force Demand
- Manual Force Charge
- Manual Force Export
- Manual Freeze Charge
- Manual Freeze Export
There are a number of ways you can use these manual override settings, choose your favoured option below:
- By default, the
time-columnis now clickable. On click/tap, a pop up will appear allowing you to manage the override settings for that timeslot. - Add
options-columnto thecolumnsYAML settings to show a new column on the plan, giving you all the options in line. - Add
options-popup-columnto thecolumnsYAML settings, this will display a single icon that you can click to show the same pop up in option (1). Useful if you dont want thetime-columnto be clickable, and want the placement of that column to be somewhere else in your plan.
Icons (or the time-column) will turn GREEN when a timeslot has had a manual override set on it.
REMEMBER: You need to wait for the plan to do a re-run before your settings take hold. Selecting multiple settings at once may not necessarily get planned in by Predbat straight away. Be patient... this is the nature of Predbat and how it handles the manual override changes.



