From a94c776f05fa0920b66043c275379a2afe68c8ae Mon Sep 17 00:00:00 2001
From: Bram Kragten
Date: Mon, 2 Aug 2021 20:27:55 +0200
Subject: [PATCH] New Lovelace element 2021.8 (#18695)
---
.../_includes/asides/lovelace_navigation.html | 49 +++--
source/_lovelace/alarm-panel.markdown | 1 +
source/_lovelace/button.markdown | 1 +
source/_lovelace/calendar.markdown | 1 +
source/_lovelace/conditional.markdown | 1 +
source/_lovelace/energy.markdown | 127 ++++++++++++
source/_lovelace/entities.markdown | 1 +
source/_lovelace/entity-filter.markdown | 1 +
source/_lovelace/entity.markdown | 1 +
source/_lovelace/gauge.markdown | 11 +
source/_lovelace/glance.markdown | 1 +
source/_lovelace/grid.markdown | 1 +
source/_lovelace/history-graph.markdown | 1 +
source/_lovelace/horizontal-stack.markdown | 1 +
source/_lovelace/humidifier.markdown | 1 +
source/_lovelace/iframe.markdown | 1 +
source/_lovelace/light.markdown | 1 +
source/_lovelace/logbook.markdown | 1 +
source/_lovelace/map.markdown | 1 +
source/_lovelace/markdown.markdown | 1 +
source/_lovelace/masonary.markdown | 16 ++
source/_lovelace/media-control.markdown | 1 +
source/_lovelace/panel.markdown | 19 ++
source/_lovelace/picture-elements.markdown | 1 +
source/_lovelace/picture-entity.markdown | 1 +
source/_lovelace/picture-glance.markdown | 1 +
source/_lovelace/picture.markdown | 1 +
source/_lovelace/plant-status.markdown | 1 +
source/_lovelace/sensor.markdown | 1 +
source/_lovelace/shopping-list.markdown | 1 +
source/_lovelace/sidebar.markdown | 47 +++++
source/_lovelace/statistics-graph.markdown | 76 +++++++
source/_lovelace/thermostat.markdown | 1 +
source/_lovelace/vertical-stack.markdown | 1 +
source/_lovelace/weather-forecast.markdown | 1 +
.../lovelace/energy/carbon-consumed-gauge.png | Bin 0 -> 4506 bytes
.../images/lovelace/energy/devices-graph.png | Bin 0 -> 8209 bytes
.../images/lovelace/energy/distribution.png | Bin 0 -> 8288 bytes
.../lovelace/energy/grid-neutrality-gauge.png | Bin 0 -> 4247 bytes
.../lovelace/energy/solar-consumed-gauge.png | Bin 0 -> 3985 bytes
source/images/lovelace/energy/solar-graph.png | Bin 0 -> 7117 bytes
.../images/lovelace/energy/sources-table.png | Bin 0 -> 8700 bytes
source/images/lovelace/energy/usage-graph.png | Bin 0 -> 7071 bytes
.../lovelace/lovelace_gauge_needle_card.png | Bin 0 -> 3874 bytes
.../lovelace_statistics_graph_bar.png | Bin 0 -> 6405 bytes
.../lovelace_statistics_graph_line.png | Bin 0 -> 18628 bytes
source/lovelace/badges.markdown | 2 +-
source/lovelace/cards.markdown | 8 +
...and-views.markdown => dashboards.markdown} | 190 +-----------------
source/lovelace/views.markdown | 188 +++++++++++++++++
50 files changed, 560 insertions(+), 201 deletions(-)
create mode 100644 source/_lovelace/energy.markdown
create mode 100644 source/_lovelace/masonary.markdown
create mode 100644 source/_lovelace/panel.markdown
create mode 100644 source/_lovelace/sidebar.markdown
create mode 100644 source/_lovelace/statistics-graph.markdown
create mode 100644 source/images/lovelace/energy/carbon-consumed-gauge.png
create mode 100644 source/images/lovelace/energy/devices-graph.png
create mode 100644 source/images/lovelace/energy/distribution.png
create mode 100644 source/images/lovelace/energy/grid-neutrality-gauge.png
create mode 100644 source/images/lovelace/energy/solar-consumed-gauge.png
create mode 100644 source/images/lovelace/energy/solar-graph.png
create mode 100644 source/images/lovelace/energy/sources-table.png
create mode 100644 source/images/lovelace/energy/usage-graph.png
create mode 100644 source/images/lovelace/lovelace_gauge_needle_card.png
create mode 100644 source/images/lovelace/lovelace_statistics_graph_bar.png
create mode 100644 source/images/lovelace/lovelace_statistics_graph_line.png
create mode 100644 source/lovelace/cards.markdown
rename source/lovelace/{dashboards-and-views.markdown => dashboards.markdown} (58%)
create mode 100644 source/lovelace/views.markdown
diff --git a/source/_includes/asides/lovelace_navigation.html b/source/_includes/asides/lovelace_navigation.html
index 47f23ade87e..08cc065b9ef 100644
--- a/source/_includes/asides/lovelace_navigation.html
+++ b/source/_includes/asides/lovelace_navigation.html
@@ -1,10 +1,44 @@
- {% assign cards = site.lovelace | sort_natural: 'title' %}
+ {% assign elements = site.lovelace | sort_natural: 'title' %}
Lovelace UI
+
+
+
+
Views
+
+
+
+
+
Cards
+
@@ -12,10 +46,6 @@
Advanced
-
-
-
Cards
-
-
diff --git a/source/_lovelace/alarm-panel.markdown b/source/_lovelace/alarm-panel.markdown
index 1288e296f4f..f0c773dfdb7 100644
--- a/source/_lovelace/alarm-panel.markdown
+++ b/source/_lovelace/alarm-panel.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Alarm Panel Card"
sidebar_label: Alarm Panel
description: "The Alarm Panel card allows you to arm and disarm your alarm control panel integrations."
diff --git a/source/_lovelace/button.markdown b/source/_lovelace/button.markdown
index c7dca136f75..14ed2b2e819 100644
--- a/source/_lovelace/button.markdown
+++ b/source/_lovelace/button.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Button Card"
sidebar_label: Button
description: "The Button card allows you to add buttons to perform tasks."
diff --git a/source/_lovelace/calendar.markdown b/source/_lovelace/calendar.markdown
index 6b5d084212d..b5fb73da00b 100644
--- a/source/_lovelace/calendar.markdown
+++ b/source/_lovelace/calendar.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Calendar Card"
sidebar_label: Calendar
description: "The calendar card displays your calendar entities in a month, day and list view"
diff --git a/source/_lovelace/conditional.markdown b/source/_lovelace/conditional.markdown
index b8fe0369d86..df73887cdc3 100644
--- a/source/_lovelace/conditional.markdown
+++ b/source/_lovelace/conditional.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: Conditional Card
sidebar_label: Conditional
description: The Conditional card displays another card based on entity states.
diff --git a/source/_lovelace/energy.markdown b/source/_lovelace/energy.markdown
new file mode 100644
index 00000000000..4b91455242e
--- /dev/null
+++ b/source/_lovelace/energy.markdown
@@ -0,0 +1,127 @@
+---
+type: card
+title: "Energy Cards"
+sidebar_label: Energy Cards
+description: "An overview of the energy cards that are available."
+---
+
+This is a list of all the cards used in the energy dashboard, you can also place them anywhere you want in your Lovelace dashboard.
+
+At the moment there are no configuration options available for these cards, you can configure them on the energy {% my config_energy title="energy configuration page" %}.
+
+They will always show the data of today when used outside the energy dashboard.
+
+## Energy usage graph
+
+
+
+ Screenshot of the Energy usage graph card.
+
+
+The energy usage graph card shows the amount of energy your house has consumed, and from what source this energy came.
+It will also show the amount of energy your have returned to the grid.
+
+#### Example
+```yaml
+type: energy-usage-graph
+```
+
+## Solar production graph
+
+
+
+ Screenshot of the Solar production graph card.
+
+
+The solar production graph card shows the amount of energy your solar panels have produced per source, and if setup and available the forecast of the solar production.
+
+#### Example
+```yaml
+type: energy-solar-graph
+```
+
+## Energy distribution
+
+
+
+ Screenshot of the Energy distribution card.
+
+
+The energy distribution card shows how the energy flowed, from the grid to your house, from your solar panels to your house and/or back to the grid.
+If setup, it will also tell you how many kWh of the energy you got from the grid was produced without using fossil fuels.
+
+#### Example
+```yaml
+type: energy-distribution
+```
+
+## Energy sources table
+
+
+
+ Screenshot of the Energy sources table card.
+
+
+The energy sources table card shows all your energy sources, and the corresponding amount of energy.
+If setup, it will also show the costs and compensation per source and the total.
+
+#### Example
+```yaml
+type: energy-sources-table
+```
+
+## Grid neutrality gauge
+
+
+
+ Screenshot of the Grid neutrality gauge card.
+
+
+The grid neutrality gauge card represents your energy dependency. If it's green, it means you produced more energy than that you consumed from the grid. If it's in the red, it means that you relied on the grid for part of your home's energy consumption.
+
+#### Example
+```yaml
+type: energy-grid-neutrality-gauge
+```
+
+## Solar consumed gauge
+
+
+
+ Screenshot of the Solar consumed gauge card.
+
+
+The solar consumed gauge represents how much of the solar energy was not used by your home and was returned to the grid. If you frequently return a lot, try to conserve this energy by installing a battery or buying an electric car to charge.
+
+#### Example
+```yaml
+type: energy-solar-consumed-gauge
+```
+
+## Carbon consumed gauge
+
+
+
+ Screenshot of the Carbon consumed gauge card.
+
+
+The carbon consumed gauge card represents how much of the energy consumed by your home was generated using non-fossil fuels like solar, wind and nuclear. It includes the solar energy you generated your self.
+
+#### Example
+```yaml
+type: energy-carbon-consumed-gauge
+```
+
+## Devices energy graph
+
+
+
+ Screenshot of the devices energy graph card.
+
+
+The devices energy graph show the energy usage per device, it is sorted by usage.
+
+#### Example
+```yaml
+type: energy-devices-graph
+```
\ No newline at end of file
diff --git a/source/_lovelace/entities.markdown b/source/_lovelace/entities.markdown
index 8a6fc8db5d9..18c81656924 100644
--- a/source/_lovelace/entities.markdown
+++ b/source/_lovelace/entities.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Entities Card"
sidebar_label: Entities
description: "The Entities card is the most common type of card. It groups items together into lists."
diff --git a/source/_lovelace/entity-filter.markdown b/source/_lovelace/entity-filter.markdown
index 8605d34b89b..0e62325fe56 100644
--- a/source/_lovelace/entity-filter.markdown
+++ b/source/_lovelace/entity-filter.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Entity Filter Card"
sidebar_label: Entity Filter
description: "The Entity Filter card allows you to define a list of entities that you want to track only when in a certain state. Very useful for showing lights that you forgot to turn off or show a list of people only when they're at home. "
diff --git a/source/_lovelace/entity.markdown b/source/_lovelace/entity.markdown
index 132347a1f32..7c1009f09eb 100644
--- a/source/_lovelace/entity.markdown
+++ b/source/_lovelace/entity.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Entity Card"
sidebar_label: Entity
description: "The Entity card gives you a quick overview of your entity's state"
diff --git a/source/_lovelace/gauge.markdown b/source/_lovelace/gauge.markdown
index c82dc46e4b5..b55fe8c7093 100644
--- a/source/_lovelace/gauge.markdown
+++ b/source/_lovelace/gauge.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Gauge Card"
sidebar_label: Gauge
description: "The Gauge card is a basic card that allows visually seeing sensor data."
@@ -11,6 +12,11 @@ The Gauge card is a basic card that allows visually seeing sensor data.
Screenshot of the Gauge card.
+
+
+Screenshot of the Gauge card in needle mode.
+
+
To add the Gauge card to your user interface, click the Lovelace menu (three dots at the top right of the screen) and then **Edit Dashboard**. Click the "Add Card" button in the bottom right corner and select **Gauge** from the card picker. All options for this card can be configured via the user interface.
Alternatively, the card can be configured using YAML:
@@ -53,6 +59,11 @@ max:
description: Maximum value for graph.
type: integer
default: 100
+needle:
+ required: false
+ description: Show the gauge as a needle gauge.
+ type: boolean
+ default: false
severity:
required: false
description: Allows setting of colors for different numbers.
diff --git a/source/_lovelace/glance.markdown b/source/_lovelace/glance.markdown
index 812c9269ca7..b9a00165006 100644
--- a/source/_lovelace/glance.markdown
+++ b/source/_lovelace/glance.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Glance Card"
sidebar_label: Glance
description: "The Glance card is useful to group multiple sensors in a compact overview."
diff --git a/source/_lovelace/grid.markdown b/source/_lovelace/grid.markdown
index 3b31e81f53a..95a1fc4953b 100644
--- a/source/_lovelace/grid.markdown
+++ b/source/_lovelace/grid.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Grid Card"
sidebar_label: Grid
description: "The Grid card allows you to show multiple cards in a grid."
diff --git a/source/_lovelace/history-graph.markdown b/source/_lovelace/history-graph.markdown
index 9452a3e0969..d77a4dd437f 100644
--- a/source/_lovelace/history-graph.markdown
+++ b/source/_lovelace/history-graph.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "History Graph Card"
sidebar_label: History Graph
description: "The History Graph card allows you to display a graph for each of the entities listed."
diff --git a/source/_lovelace/horizontal-stack.markdown b/source/_lovelace/horizontal-stack.markdown
index eaf96be80f0..fa66b6d0b80 100644
--- a/source/_lovelace/horizontal-stack.markdown
+++ b/source/_lovelace/horizontal-stack.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Horizontal Stack Card"
sidebar_label: Horizontal Stack
description: "The Horizontal Stack card allows you to stack together multiple cards, so they always sit next to each other in the space of one column."
diff --git a/source/_lovelace/humidifier.markdown b/source/_lovelace/humidifier.markdown
index 935e42c2dad..25edb613984 100644
--- a/source/_lovelace/humidifier.markdown
+++ b/source/_lovelace/humidifier.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Humidifier Card"
sidebar_label: Humidifier
description: "The Humidifier card gives control of your humidifier entity, allowing you to change the target humidity and mode of the entity."
diff --git a/source/_lovelace/iframe.markdown b/source/_lovelace/iframe.markdown
index 9b2316e41c6..310029219b2 100644
--- a/source/_lovelace/iframe.markdown
+++ b/source/_lovelace/iframe.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Webpage Card"
sidebar_label: Webpage
description: "The Webpage card allows you to embed your favorite webpage right into Home Assistant."
diff --git a/source/_lovelace/light.markdown b/source/_lovelace/light.markdown
index 56e74ee880a..baf00451017 100644
--- a/source/_lovelace/light.markdown
+++ b/source/_lovelace/light.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Light Card"
sidebar_label: Light
description: "The Light card allows you to change the brightness of the light."
diff --git a/source/_lovelace/logbook.markdown b/source/_lovelace/logbook.markdown
index aed2f9af910..4ddb422ef86 100644
--- a/source/_lovelace/logbook.markdown
+++ b/source/_lovelace/logbook.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Logbook Card"
sidebar_label: Logbook
description: "The Logbook card displays entries from the logbook for specific entities."
diff --git a/source/_lovelace/map.markdown b/source/_lovelace/map.markdown
index 63815a9885c..65259d0d5da 100644
--- a/source/_lovelace/map.markdown
+++ b/source/_lovelace/map.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Map Card"
sidebar_label: Map
description: "The Map card that allows you to display entities on a map"
diff --git a/source/_lovelace/markdown.markdown b/source/_lovelace/markdown.markdown
index 417f9b4e3d9..f26e7d9bbd1 100644
--- a/source/_lovelace/markdown.markdown
+++ b/source/_lovelace/markdown.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Markdown Card"
sidebar_label: Markdown
description: "The Markdown card is used to render Markdown"
diff --git a/source/_lovelace/masonary.markdown b/source/_lovelace/masonary.markdown
new file mode 100644
index 00000000000..44c08960819
--- /dev/null
+++ b/source/_lovelace/masonary.markdown
@@ -0,0 +1,16 @@
+---
+type: view
+title: Masonary View
+sidebar_label: Masonary (default)
+description: "The default panel layout uses a masonary algorithme."
+---
+
+The masonary view is the default view type.
+It sorts cards in columns based on their `card size`. If you want to group some cards you have to use `stack` cards.
+
+{% configuration %}
+type:
+ required: false
+ description: "`masonary`"
+ type: string
+{% endconfiguration %}
\ No newline at end of file
diff --git a/source/_lovelace/media-control.markdown b/source/_lovelace/media-control.markdown
index fc6ad9bd9e8..ab292870643 100644
--- a/source/_lovelace/media-control.markdown
+++ b/source/_lovelace/media-control.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Media Control Card"
sidebar_label: Media Control
description: "The Media Control card is used to display media player entities on an interface with easy to use controls."
diff --git a/source/_lovelace/panel.markdown b/source/_lovelace/panel.markdown
new file mode 100644
index 00000000000..98972e1a44f
--- /dev/null
+++ b/source/_lovelace/panel.markdown
@@ -0,0 +1,19 @@
+---
+type: view
+title: Panel View
+sidebar_label: Panel
+description: "The panel view shows 1 card in the fullwidth of the screen."
+---
+
+In this view the first card is rendered full-width, other cards in the view will not be rendered.
+
+This view doesn't have support for badges.
+
+This mode is good when using cards like `map`, `stack` or `picture-elements`.
+
+{% configuration %}
+type:
+ required: true
+ description: "`panel`"
+ type: string
+{% endconfiguration %}
\ No newline at end of file
diff --git a/source/_lovelace/picture-elements.markdown b/source/_lovelace/picture-elements.markdown
index 0141895c8c7..59e2732b632 100644
--- a/source/_lovelace/picture-elements.markdown
+++ b/source/_lovelace/picture-elements.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Picture Elements Card"
sidebar_label: Picture Elements
description: "The Picture Elements card is one of the most versatile types of cards. The cards allow you to position icons or text and even services! On an image based on coordinates."
diff --git a/source/_lovelace/picture-entity.markdown b/source/_lovelace/picture-entity.markdown
index 372f85f09f7..b0e84aca0bd 100644
--- a/source/_lovelace/picture-entity.markdown
+++ b/source/_lovelace/picture-entity.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: Picture Entity Card
sidebar_label: Picture Entity
description: The Picture Entity card displays an entity in the form of an image. Instead of images from URL, it can also show the picture of camera entities.
diff --git a/source/_lovelace/picture-glance.markdown b/source/_lovelace/picture-glance.markdown
index 776853bf4e5..89972b57d70 100644
--- a/source/_lovelace/picture-glance.markdown
+++ b/source/_lovelace/picture-glance.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Picture Glance Card"
sidebar_label: Picture Glance
description: "The Picture Glance card shows an image and corresponding entity states as an icon. The entities on the right side allow toggle actions, others show the more information dialog."
diff --git a/source/_lovelace/picture.markdown b/source/_lovelace/picture.markdown
index 5dffca2b3e3..79cc23d89c5 100644
--- a/source/_lovelace/picture.markdown
+++ b/source/_lovelace/picture.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Picture Card"
sidebar_label: Picture
description: "The Picture card allows you to set an image to use for navigation to various paths in your interface or to call a service."
diff --git a/source/_lovelace/plant-status.markdown b/source/_lovelace/plant-status.markdown
index 24dc0b1cecb..753a58877b2 100644
--- a/source/_lovelace/plant-status.markdown
+++ b/source/_lovelace/plant-status.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Plant Status Card"
sidebar_label: Plant Status
description: "The Plant Status card is for all the lovely botanists out there."
diff --git a/source/_lovelace/sensor.markdown b/source/_lovelace/sensor.markdown
index bb268216df0..1d0b1f11d4e 100644
--- a/source/_lovelace/sensor.markdown
+++ b/source/_lovelace/sensor.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Sensor Card"
sidebar_label: Sensor
description: "The Sensor card gives you a quick overview of your sensors state with an optional graph to visualize change over time."
diff --git a/source/_lovelace/shopping-list.markdown b/source/_lovelace/shopping-list.markdown
index 360a4172448..9edd2e39aec 100644
--- a/source/_lovelace/shopping-list.markdown
+++ b/source/_lovelace/shopping-list.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Shopping List Card"
sidebar_label: Shopping List
description: "The Shopping List card allows you to add, edit, check-off, and clear items from your shopping list."
diff --git a/source/_lovelace/sidebar.markdown b/source/_lovelace/sidebar.markdown
new file mode 100644
index 00000000000..03e2176fcc4
--- /dev/null
+++ b/source/_lovelace/sidebar.markdown
@@ -0,0 +1,47 @@
+---
+type: view
+title: Sidebar View
+sidebar_label: Sidebar
+description: "The sidebar view has 2 columns, a wide one and a smaller one on the right."
+---
+
+The sidebar view has 2 columns, a wide one and a smaller one on the right.
+
+This view doesn't have support for badges.
+
+To change a view to edit mode, or to change the location of a card, enable edit mode:
+Click the Lovelace menu (three dots at the top right of the screen) and then **Edit Dashboard**.
+
+You can set if a card should be placed in the main (left) column of the sidebar column (right), by pressing the arrow right or left arrow in the bar underneath the card.
+
+On mobile all cards are rendered in 1 column and kept in the order of the cards in the config.
+
+## View config:
+
+{% configuration %}
+type:
+ required: true
+ description: "`sidebar`"
+ type: string
+{% endconfiguration %}
+
+#### Example
+
+Alternatively, the position of the card can be configured using YAML with the `view_layout` option:
+
+```yaml
+type: entities
+entities:
+ - media_player.lounge_room
+view_layout:
+ position: sidebar
+```
+
+## Cards config:
+
+{% configuration %}
+view_layout.position:
+ required: false
+ description: "The position of the card, `main` or `sidebar`"
+ type: string
+{% endconfiguration %}
diff --git a/source/_lovelace/statistics-graph.markdown b/source/_lovelace/statistics-graph.markdown
new file mode 100644
index 00000000000..0afd047ab8f
--- /dev/null
+++ b/source/_lovelace/statistics-graph.markdown
@@ -0,0 +1,76 @@
+---
+type: card
+title: "Statistics Graph Card"
+sidebar_label: Statistics Graph
+description: "The Statistics Graph card allows you to display a graph with statistics data for each of the entities listed."
+---
+
+The Statistics Graph card allows you to display a graph of statistics data for each of the entities listed. To learn more about statistics and what is supported, check out the [statistics](/integrations/statistics/) documentation.
+
+
+
+Screenshot of the Statistics Graph card with none metered entities and `chart_type` `line`.
+
+
+
+
+Screenshot of the Statistics Graph card with a metered entity and `chart_type` `bar`.
+
+
+To add the Statistics Graph card to your user interface, click the Lovelace menu (three dots at the top right of the screen) and then **Edit Dashboard**. Click the "Add Card" button in the bottom right corner and select **Statistics Graph** from the card picker. All options for this card can be configured via the user interface.
+
+{% configuration %}
+type:
+ required: true
+ description: statistics-graph
+ type: string
+entities:
+ required: true
+ description: "A list of entity IDs or `entity` objects, see below."
+ type: list
+days_to_show:
+ required: false
+ description: Days to show in graph. Minimum is 1 day.
+ type: integer
+ default: 30
+chart_type:
+ required: false
+ description: If the chart should be rendered as a `bar` or a `line` chart.
+ type: string
+state_types:
+ required: false
+ description: The stat types to render. `min`, `max`, `mean`, `sum`
+ type: list
+title:
+ required: false
+ description: The card title.
+ type: string
+{% endconfiguration %}
+
+## Options For Entities
+
+If you define entities as objects instead of strings, you can add more customization and configuration:
+
+{% configuration %}
+entity:
+ required: true
+ description: Entity ID.
+ type: string
+name:
+ required: false
+ description: Overwrites friendly name.
+ type: string
+{% endconfiguration %}
+
+## Example
+
+Alternatively, the card can be configured using YAML:
+
+```yaml
+type: statistics-graph
+title: 'My Graph'
+entities:
+ - sensor.outside_temperature
+ - entity: sensor.inside_temperature
+ name: Inside
+```
diff --git a/source/_lovelace/thermostat.markdown b/source/_lovelace/thermostat.markdown
index 4add4187272..5be392a7e67 100644
--- a/source/_lovelace/thermostat.markdown
+++ b/source/_lovelace/thermostat.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Thermostat Card"
sidebar_label: Thermostat
description: "The Thermostat card gives control of your climate entity, allowing you to change the temperature and mode of the entity."
diff --git a/source/_lovelace/vertical-stack.markdown b/source/_lovelace/vertical-stack.markdown
index fb3d0b05b43..2b5946bd9c5 100644
--- a/source/_lovelace/vertical-stack.markdown
+++ b/source/_lovelace/vertical-stack.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Vertical Stack Card"
sidebar_label: Vertical Stack
description: "The Vertical Stack card allows you to group multiple cards so they always sit in the same column."
diff --git a/source/_lovelace/weather-forecast.markdown b/source/_lovelace/weather-forecast.markdown
index 3925f8f4712..94cae354bdd 100644
--- a/source/_lovelace/weather-forecast.markdown
+++ b/source/_lovelace/weather-forecast.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Weather Forecast Card"
sidebar_label: Weather Forecast
description: "The Weather Forecast card displays the weather. Very useful to include on interfaces that people display on the wall."
diff --git a/source/images/lovelace/energy/carbon-consumed-gauge.png b/source/images/lovelace/energy/carbon-consumed-gauge.png
new file mode 100644
index 0000000000000000000000000000000000000000..6a422bc8b92133cd4b90f74804afd0b3e6aa16ad
GIT binary patch
literal 4506
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
JO2#z!zW~#wOlAN8
literal 0
HcmV?d00001
diff --git a/source/images/lovelace/energy/distribution.png b/source/images/lovelace/energy/distribution.png
new file mode 100644
index 0000000000000000000000000000000000000000..d89afabe75b0d0e84e8883beed65734b52042cf6
GIT binary patch
literal 8288
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
Re?JF6N^)wlHPU7w{|A$Kyomq+
literal 0
HcmV?d00001
diff --git a/source/images/lovelace/energy/grid-neutrality-gauge.png b/source/images/lovelace/energy/grid-neutrality-gauge.png
new file mode 100644
index 0000000000000000000000000000000000000000..88153c29c05f350268f6d3422306e224fc146129
GIT binary patch
literal 4247
zcmV;I5NPj-P)q006=W0{{R3WGSVp0004ZP)t-s|Ns9l
zpful19{KtC_4W1o`uZUuA@sBW=H}+6rl#xb>vD2(=;-ME{r!oFi88EC_V)IKgoNSq
z=C7}>w6wG)CMK4amiy`B?d|Qt=gjxg$FZ@otE;Pq&zjB6&1Pn1p`oFWkdWqiR^wti
z;o;%$rH<>5aw8)nB_$>E^Yhr)*fB9NEG#U_%F4L7xSX7vSXfx^@9#;tXUE6KXvBdy
zI5;#kG}6-2^SrC4r>AvwbzEFrjEsyaDJe}&O*=a~B!Dn{e0*VHVO3RCKtMp;+}ub=
zNci~paBy&IYimP8L*wJ)`PqO`QBkDZvu
zy&&m;5QWBi_{?Bsu|fLZ!~5f(qtcV@$A^NmJ05T?^ROi6a})8W1K!}Kp~-WDyjmGh
zC@!2#@vTUzu=ZjA01n$pL_t(|+U(j}OXENk!0|KFhQf9wX!i;EN@K4-HuQpl`ku
zUqYc!76jJ?yK23!i??O>!>^ah(WbV^B=npK^ZyDz=FChcU|Cja*KwS(i6F;uc1zY%
zU%`5oFcD@=AWR%G5KJgfHW37ORq!r6?O0N(lr)+_VEUWC4o*_!R
z8xEKVb2fHM&k)Wgm`K}nULkxik>*bzzJQ6eFRu_~1F^(#H5~qASkTH3JnB7+i{4x
zfgq?BA5Ap_K~N0hDFZ=JJr1#LAP5Q(!fe)*_2Lk113{1k08^A8@ABMcED5_u!AaHT8)9~9bPo-f`$EVW4&Ac
zZYzrti?X}>z&QR8UT{{ylpxTe4_spo;RRC4;~XH+g6WLn4B-VW`O+{C2((xQhVg~)
z0{PZiP7p|O0^H&XfeZ;}lStLU4_2|kXYu~By#LGB&awL>k`X8n}p^PbP#JY
zZNsHOh@$~4svrj7ueVhH`dJSBi&;~?cw8G`-aHVGg&?9+2+)BXMF>9}LtT1za1;N&nhn@-13
zG-`T)xo%^>|Jd#1C-DHEr8~r$%+hc|a2wrRK|BQM=cHke;FC0mKnLa7bQ+ByNrRJL
zhx**H7eFv`kS#<=l-pQ664|CWb9g&Fy#CUnk~4
zaB^7lAX9Fa`5|^L1e=3v;6dixRn{K>mj~gss2GrfvBX>m4hN=I02md;_rDNJSBO9=
zwGR2_{t@Z>u_L-Lou&{?wdK%++;eS_uAOf?LWuZ=ttZ5P>dol2X($TgXAe6lIEz)N
z#uZJ0PpW8@8VB_fk^m(~s{v_ny$+
zO2dJKb@kK95f9C0%erAhir7&S2k%hiY&;mIv;?AvKusJZ6mG4=rkDQneYu9!{!P9e5%-s%q(+?j@~cJk+f^@I-hQQ$W{3
zx4xAM4?;?dz=_C|dLU|7x02z=`u;sF04GAtsnvC44_Q3a?3~ajE0cCJjm`3M??p}
zLs`S;%RR`uIvf!mf#}d$7$@EyWaES*Li>P_R`T#5OIR2YvGQUHxy)heB0(YnBSQDd
zb(}1Fu-_Ba?>SIJWSWbqXeA*bqOR9pCQwB5G_RNv%Y!VPTq6M@BG6q-hn5G!v4aD-
z)M1E-^}Y)-^lcA@sn58^5aHZRv>w8XJh;#67K(^WcOXiqrk5lPoVy7`M6CQyEn`AF
zcts)w5urU0GA2SQF>voD1QD6~KonzQn*^^&Jb(}pUtu8jCX>kxGBo{dA|CuBF@O-!
zYaED8s^T^?-=)>K!_4;<#zdb4&q%Z&L^KP;03bH_ZIeQN(Z8eG`C)sKNUC<`Win
z58Om-J!j_o^8ARIpGlrJUor1KwL~<8@se_EQhwB1^E;*sUZxWAAhkk~7y*YiB5Ah{rRBi_1W
z0-f@C;k?`jN?AEa90Av1F8Ir70JMZGh;NdT&>zI^?WY_04seqcc9IQX+mHg00%pT4
z0x99849rV{kk|Fnq=1N0^%`J#=l)?0IFM_Pk_Aek^$D``iOmC#VcNc19uVF
zc?6t@Fo?=0Lsi#v+JjJNB9`~|0?qCw&>ICJ(XcG*H0ds$viBjtP7T@tp6vh#W2V=E
zQfoaC`+ZZHeE*_3h?jS^Gq()Pj{srxfMUV(^Qy0ey3v4+dwc_Ad=Qm=+_VZx*QO=S
zLG0eyj!+xO#DlO;HYKM@O`1@5@f6{S$N+Bb+X9{rK^*iM=FCv3n|^2xVnco2=l2x-
zL_COjV6hr#p0mRW>ba=oV9hDMOz8NtCdi#`6?QTfz@CaEUQGmuUGcY6`;J=UK&%7i
zb?|9NF9%>&gy_QRu&ZbUK$w@#!f9gzip)>BvPp9gZ&Y_8jKN@VojSttZybnncst=7
zxbUt-+YYBv!fW=H10ZIElS&czpm1%P(;S4dB9gc{{3>EW%mAzfdh(oGqds<<>H$#o
z#vfT9L_1XS9*fAxN#dE-Amm*AS^`8am5c?E$@x8oujGmlVgV?)&YpE2YmxgAZQxu*
z5=&Zxc&qH{WV6`>JN4@r5G#wojR@w(J*_?H3p+h$(svB>B0
z=Nn-YC|m;Nae?@vF^Cr`UrtG+)9JkM(*+(yfavD!q6iLyns@}Xw*v35y}ecju10}S
zvGuci4$I>r{RpBj{mn9e%i`CSuz*q?`!;Lcp{!v2U+AXIFDl>4S1V#Vw
zA<&JTHC;7GyX>qyGqro1#E>j{V!rch~G7_2RRcqL$Yr|YHT3B
zO)Q8MQ1q_x*%IV7V?nr@s0c4v>=cdg&MT~p1ff#Dex6tm#x_tY=WPe1N=~mF58~mO
zUz^&g1N6eLg=S)GAbx5L;;mXg_qdLoTFZHCB}Rb|g|H@0@&D%E;IuDp0YbaG2u(5t
zp-HA7G|3c%CYgfx#m?EaCJuyA_`o(V8lBQoCkTp(AS5PfV<;xnPqdmgF49sdf_u~c
z|39&ls3dXAE?z9_ws|hb;Y`j&e3%)pJP~pcC&GU(;#xj(@ng(6j^vYysD)v;a@sf=
zUO#>@p)vi2m}v<|^C?9P>}IoMdF3Qoyd5LLU&u(<1%DRdm!w=oRzw$oY`iD`5Tsur
z4P)_$Ez<6T?Z4}5DkKa0KrCh&$uv7*EEkaxfqNC$^tq?7qDA%+$`Zi43g2qlE8nWj
z4AlhKU~F_+fU9zQuoY3V$+`qPpXtFhl7J8HjpYr1+DMa?c8lgC#UiQ|YPdM}
zw8FVDPXcaL%%^8yJ=Es!ynqPRi&}S3NPR0`5uovNQ=weM{*F+Tm9>=7>@q;@$4662
z#0Fw80mp;HHNdBaOb)<|?GryQ-=NvqKRrY=;^#pZekv{py;0Abm$P;-ELm+!2uJmf0iG@K)RW2Y{gv
zF-9zc8BTs#XOAXRuK>%DCaC{L#G0C#z`Uh-R>YcGAB%XPr>L<8;(c`}qL_=wia>8B
zq31COwjzoa14;)X3Zx;TOhtgDM3m!&@#Gf~n1#s;lNPlS5mgumcB~w2sSaOlkbQRs7i=9YXe|ae1Nn|-EXN@G?&~=kicZNpTT`F=>;h+T>NuR
zQN-V6)s#2WZW|}Y*Avm|a2okIHNKt*h_}V*@fAg!B)Nza;b%K_hyyVU15q@R*V1kk
zV6ecb$Rx0*2q>%6`(LGvk~?_7yeoX^GXw~R0KpI-7y<-CfM5s^3;}{6KrjRdh5)fb
zm}{X#y4echg%Y{15JzxMiMBXqh~CaUq)-Zp{cL@NP_Y)*|3@kAE1HRp5Tk_GFQuqH
tI?NC%-ON6ez|6Yn4Dk|5q$>m=s1H_LaA9Nm!4Lod002ovPDHLkV1frs@P)+9=sa&r6o`{?NC{r&wVB_;Ou_Tk~-TU%RLSXg&=
zckb@)&d$#9@$o1qC^IuN%F4?1y&&D)-L$l{`{SQ}ettJMH~HCsOiWBdLPGxb-@m`V
z($dnz#KbNxF8u7jD=RCjtE-ijl{-5-IXOA6udk7jk@NHOxVX4xW@g&j+Sb2M@L6LKR3_t$;-@!R;=e)!;=fioP*000h9Nklhn=OI|Ql9#|>+C2+`$i5aI&C4gp%_V+Yfk9p@a@=
zeJ%~`Fmu$w#t!q>QHLcv%wKJ+9+>T!^atpHg_QQJhkLvVUTK
z?PQhGd%m{O2PLO7B&Z(M=t>>$d+%23ZD!g@8r49=i2ZY*c5eyJ)$&-B7}d&tF50gn
z{9Lp>6A%Zd@GNYxIqdZ=BmIIc&)3?7p~0zQzJMw1+J7bx39=a2z(7S9WntXCzP@+N~#pU0l-{2@r=S
zGxACTe5W%K2o5?UIWDg0j6`^c{Vs!W@EnQM9LO-tx46E;C@-qZTA11raR6ed53P8qLV+($(+)TcwJrq7UjiE9o&(1HjVL@X0Ss}+0b*6EwIID9
z0eeK;aX@&-`Xx*N5)>j%hy8QIun{H*3HoG;(qZ=ugBGU{Am~8E=+J-+!$krQ;x{*U
zj9M`a1OasGWiDXY%8ifU!j12LsvyG8Cny2!hqY!jS9r`=QsMs`rmxcPGR%kQ&P;+1
z7f~5r5@dxKaG0=4m-Sg2;sJ-9YLkBARLhiis9&YS9*Hv*qTV6MJ`L}H=n_%xuxA-y
zj|EP%OgV@8Rl4oTz*&~5+94*qC#4`rmZ{odBRj8lagIV1I|Ms}!6^#SJIt%YW-|h3
zC`7G8@G~?BfLnuCJWyV*T(p>D}08Wp0EU3$4D68QiZduatd#Hhvn^6!SuYul=Y_?wo
zUdx16zs#YkK}bynEJyO?EZmw<=Ya3zuC9k@uzJzMAC;2~C7dbI})@q4I1Ln66^itnyVaXE%-iRK25
zC)+G7C2~PEy}}+o#%iXIVJHC)HgrVYEQkN=12FSmWSej>t7~^6#m<(5Pmh$jX_l0CeO6AyK;@&OO31_y^Gn3dyK5-6!K)k~->__we@lF`YFr
z%fEOiX<%eUl%o;hj_#HTT1h<8O~^fb^~M0KwnU;k_nL-fb{>_RU!_Yfk}1S8l$V0QB&nM)1E
z5@H0W;u2nIM|ISSC>fsJ-nNtZ)KSoh=J<1ZM0pCR(p^f`32fLVnjcal|)PTL}1P7Y;
zmvY1{icD$yTIA<~DzVtBC5sJ|Lfs{glO&0F~PaNbVP0}%T9^Mr$F(^`m0VEaNFmeWfjDu
z1f(U%Y`%Bptz~e!iXPs@I(!J{!@jSy4H{u7M!Qr>?as?UFvt<|!M1X15KYB#?R(bUm);g!frdiV?Ia3?Fq
z5_%}Weo3&gOg!WH%>uontFbc!)*XVMC{O$lTOiE}#B5tsPHej^I-8gNgnft$+;a7p`
z(9FrCsT1FW8g;F8;FCr>d1R&e`0{GJs^
zgybI+0GN+}RcGo{_jG*`Eq6+n5myX73<88q0P9JHp|e=4PyxP!lC;Zq*acl`$d$)cscJ+QG4
zi0eLU)J_A+nAz*Vaa08;464ZLdL3$A>GDb3gnf*YlcH_uaEAQhN-Q>
zJbLu(KXx5d*zWtBP2fK8p*q^MvN{jlm1PcG2=#_+hWE%13{y5v4#7%m_xFe|afe)Y
zR_v$_!0ewgfMii7qb(a{VBLST>VbG1*z2$UGZji~2-Nq;?rI(2tw>*209O})@rpa(
z2j#%a(JN3gtPaV5MhG@LHN!g`4G{w
z1pwg_dVK)1CB!}3I11i5e8*vvPfT0Ur3O`8TS&jBCv3a;o?be9{uQTes0P3s@RG&D
z&YVPx>d^}{JPfqCAR>o(Yc#j>$m)t6q#S^%TE^CxL^)>;9V&vi9^l*o@YkU#XFKfd
z2~Tl#qz))fwyeM}B@PvJ{L5>m4#{Hd(4jSd?wuUGqeHbj+&7Wk^*YqIh*~YtR0Twx
zITXnOs%~vgK2W1?iGy4KMB^E+wg{9j9ERk9HzzOom#Qoz;7Lb(i90w<0bWvvWHELq
z(geK2K#4yQBL|dM-3~IlVuv@{`IQ3o;Imn+((Ii%U>umzyRk|9S6qY
zugX0YfDWkwvb$afm07
zJ|Oq08~<*V1L}^`OWXmy0U0yO#}4sg>Y$Vv4TdMEQiIrx6#zlMM|Rij08~dfCf(tW
z@)8b>ayU;C!4o88lsla)iAYlNe_Rr!jK#Ri^CG0YPbQGFWqi~%J6uUkx8!g15tP|h
zM0PiaPpH;lWLT)tz{3aK96qId4uGJE_^6x1f7#99Yjkt?8r>Xzw{OQb3<5zAMYZzC
zMmlK-j!Q_1(RD%pB^e*|uwyi@g#FrZG`NEXchKMt8r(sHJ7{nR4ep@99W-1W=nlyy
zjt`zBFjLL|nPeNDx&6|xMn3t0+9mKpoLX2~-4oiNrJ`!3496dA-YL$V7o
z_8}^i8Nc~_|NouqI_F&P{aok1pZ9t0=X(D*@kRz(AUZG|1qB62`!U3rg5nZDK|%TK
zDis+~R+od50Zt=5Q;my@3({EX%F4>$zkg3pPk;aZeV$9XySt0W<0~pEczJmT2L}(j
zLy1j#q>(sclL6^-=*1R>*r-E7zq$B#Lc*kxCbBM02tR-RB=ve->`sxe2vUzLsoU*h
z_bX{IoP^6Kk%**`SZ{A{bbr^MKYwa#YmbkQ)6&w`*482;Be%A;2n52?($dBDIH}ho
zFfg#JtZa66mNbz)JUo1Uex8w$F+DvU9Ua}$(h?C75fTz2DJdBi7Ut*Y*U{0@-`}5`
zo9pZATU1meC@6?TB0qfikdTm|sHi9+9=dV`D=@L)qEcVq#(!XGdLKT~$?8#0DKlN5{j%L((U|<907y
zUER;0Ka;wkuNo@UK-
zfge6a$8Jt`CM6~P>->b8)!5x-`2skG)vyGcwdC)~Pp!$`Vnc7jyN5j|qgnxSh5D
zQrk-|F0QpE4|JwMnU`3p3;V_I&8dt>>)!@`_J(cO+F%goJ+B3KKfnE6q;pUtvysj>
z5pnHkXJrnDMt|y@>@CeoPb^ROkA^{BJ?7Js=ctfd?4h7wch!cdng-7AP2Z>MS7B7a
zy(vr+pM6Fz+sZxs?}geW-UQW_vN?Q@^y^a`EA7y{7})m)sB(^Z^G}xLQ|5ECr+GX$
z`=?zr=hHRbiHRLtZhsN(W!VTWuv7PN}yCC96<3A+{dgK0r20kOeiDh
z1!N!)r3&oD!GA)cptDS%AMrG}CVnuQ8HBRc0+NIgw?dr0X3Da_SLKXRAtzVb-LCRQ
z((+41Hi<5Hy+Qg&b9Kr{=e7eCZ|u7Atx68_>2Ovv4{C#qJ%i?FAk}1lEjxQ$P9MA
zRk&wy&CpP_ZymIxNcWIMT-BLBAk1u&hULCu0WiFjh7UB)95g`$ofdedbr*iF4Ar7C
z;%kfG%a558&sI9^Mq1>vBzHu2Uu~@#*PZ$?v=GYt1ST7Z91zAdxbn(zOvUiQuVm3|
z5S2$dyQPB0?e590#D15I-gumzpPMaoji+bC*#dH7xtYgRL0Dfiu53}xZ38tKsQ5AZ
z&iu%|-w~lAc7gIRfqe|++{h)#VwJTcKM{S@U*gj?m!rTpz*aL8YkD-u=5883i>3ln
zhSTR(HFgrzBdSp)uyI>}Rl*lg9GnIMG6cQyvwI~=QuOaE5a1Wl8Uo1SLh4CH+f8?v
z+3=XJr@3~E#9Dc}V)-y?NK9bHby3GeYG0F5#pfL`(@mH7xSu!iTG^b#fji82U5wGx
zO%QVf|<#x^E3p%)9ON&kP~ndzp}fhws`lX$Pu#Xd)<6)nPiEOLstU#ldJ6
z4K?kS%WLJIs9lhkp3hc3fltUKZ0~G8m@T>2sSC~vfK6~R^U>Z+;CwxA433Sx`puRa
z>PHx%H(4*8w9tE{7Ii%f7`<(Su+9esY0Z=(`E8rbXubt678tArAcVc6caJB1rBrGL
z4CH(I1l#w@B6#3g6~ke??E#y8ukFJ@*vVfMNkKPtd;~r}h}iG!sV%dl`#HJNK90=!
zqlXZrSl|cWt!Jt~O!4g1SlGtZ9edhAqFE!vVnPBJ7#gVy5yGcn9mEFXU69#iXg=T~-2A{xzi$?IFPla%_I=^#{jTFl
zQ$^J-bGk~ojN1cT`Tay&shf2JA`irk!C8%Pdl#z+!*9F~r^03lwBAh&w-}H_tOa~0Zu-SdQ
z^7CEXWuDt2?$ln$6~6XERh7%(5f`S?^iS9{#@c#?EDbg@u5D@5*HN{+&*9gD~I9(9a)8^W$<$f$&lEhg9{I3$908xo+
zpy|t2sD+uS2@%BV4y0p@JLCD5rir-OIZbg|SByJAYIq#<6cQ#-{PDcdNpYdaV}c8F
z!BGo{wF&T;a-T6RC;oho%Hv@Q|1v7a8iy7&6b5^|)ZFnIv=h_-41)g3^?#q@gZ#*<
zys3W~Cy!?WapP8)Kt(bCdyyZOTmK(4$Dywj$1O`Nyn$=q*p?h6Uia>BPKFj7`Q~h#
zyD?4hgDVx6+@fEM#{BGq_!Q^3?Z>=t_MezLh8|I=y0n*l=+J9+Md#2Po49h;uu$8Iw4wQdhx1)*=Fk)Z0)ycRlL0zg!x!<
z+KkUm*IFlE`2$Pg>z?i53;4rN9i$Vwl5yd73OWYF@ea3W*iO9Q~o;cHkf>Jo~pJupZzr@)V1Kw
zco7Mxpx<%ycXS-$=odE68TB=Ai)?cUWvP4JpJX>9nijPyhSD#4>hD9poPd9b-$EUG3ilcS&P3z-dnr#F;K>2
zL15lS1&Bl6Kp==dJ3YpCWJih8gq@Bv$MHfSCF40hefKjor_0b_TuzEi-3>fN`KXtFfnD*u0*VN6a&^MWCnndQ3hxb#nV$cik0yC|>R
zb&ipsi6nfsgC%+QLN8b|^YI~$aO=Z|#t{`aBJI@{$aNXPJjN?YQ>{<)0K^QM?P%C+
z_)XkxL|xhkyl@Yq?vl|;qlo$V)NrL2SxHEx^q0xTcdswU6SU;zQR$hgpTflsjD`Hg
zYbbiekSE`Dgo{Umtae3TQLR_M*YH^CNHGD*sLzUkCefzktSEN4iweW+M1&v^?!XXyFa9dck~PLGcXqvmrWYx&YXIw==AwvsK>X4z2D
z_>Nc=2(?Qe!tIG;P#RQEHCeA`fKK;d362WkQz@N}8ux&xyL=NqcyhZ+&Q=*7eMyDK
zrwC0+R7yqgFHox=D>F?LUTx-I+rjU=LLbt6mfcQF}P!}eL}F|oKlGsE2q&4Fv%qoz`T_VQah(cv#uebxcWv(Rh&TnhJmZIfn)J)s70>MJsI#~
z2<2UB?F0_U`!bVWp=}QI9K0;uga~=Q=PRF{|UXh=T
z2sNAwHPm>mZ6R?q4huEh+v>JILTxY7HwC2fHv;(fi+8~Zf~fJ%$*-*hg07Iq_sp*=
zH87=JSD@jQrqu?7nagi>U;EhbT+mj}tZm;HnT*nU91gKHfK3y9^n0^1mV>VS(vjRaCAF2_xu4;+<8lupsy9zbfH_&1O
zz#vET9nNYgX{)DZ!1rzUhFv>K{d(P|D{mzjU*>u3-ZIUzYEWpzs&`rz5T
z+HXGOlW`X#c3@8};^%WRXyxPo;e)KsKgak;^kWUIN+b7sb!)msriO>JowT?tE)0Eq
zjck=JFVxC2D5iF2HFix*bqv+%Jt8(;+t~5
z#8q5|u6%w&^I_AdO_u`Dd&Iz5V%t4E2nPF5PcO`iQ6NehJR^h_C!Sj;sF?g%o@&u|
z_f`f!`b~8ODzLL!EBOt_*|X(xfOWo{J0%hvK4@;JX}_~tEvZq0`!lU3Hl3n1@H&YB
zSSbxl*)jgQUme0j;p_K+8^rJrV3*;XDQ5&eB*gcz1X#EAqy3V>RC9QarSoh|VFpNP3n{-TLXIG}31dL1+jFg6P#
zUf+MduF`vX<={hT%c6U*L!_5*Oa5|$L7V0HT2AzDn-WZRqmw=iYyWIrv850@iurZB
znAx^svZ>!%DN#MsJ^i5(!x8sPN>P-*){jzfF_fZP75!i6)%#&~jQ7&N{QL#Sd9LK|
zsk#KI(h;}x+IlpXEhOq-QT!HSU=W3iq%-tW1^nA5p`8t0rneweyd+%N*Lz_*@larA
zlSkiJKesrT4^cAi8bQ--x=~ToUrPIAgr=?1-V`zbLa2PCsTCgI5q$uT4|Zz`UaKoY
zm8M4>ny0XPktbi;mTi4~gz>EKT^A>c_U9ABRouGc>hP=-Kh@BPI00K_x{4}_6M85<
zZ1MB~RojebtR_-fk}TcaBDt&H?Umm*otY}8`1SZ!NC0*o!Z=8I&ZU#Jc`I;+k3FCQ
z)mkCoHsk(K$yX$64e6or3cxi+)Kl5hoG5v1Rge|0+xJY8)Kxov!le
zU#aEwQA~=4fvS%oQV0M{wJ#C(QXLf}%wG%5e;!j}PYHx(Y&nGkqqZG#=7~{CdH_;L
zLz)vIDbe=t+@h7$Jg%d1u5mwn`JeI`4xJWefSyn)$4zYW$8N|H$M?lg7pE=)5Wn!i
z$n+Gca}Zpxe`CZ`;4xrrK^VglhWN>xU{NJi)ONo&$Ixb?+i4T$4Y0RF
z8kBT>)J;X%a{QqM@b;P!u=0Z6Lh>cfh>Hco235Sax5WI^l?8JMjaDM$!M8q(Ay#oL
zuIacmnu|UytaagH3fGL!jq%YBc)W)9XH92w+W!cb7~_!`e$N{xk6r0hZMJ
z@lIt>O|>7os%lgCqKZw!7iM^BI}1YV#{ut|?o^hyE<;mWdX$K64d0zN;4{
zQ~3$PJhy(>$n@jHrw|J`*!X}oq*Z*9MwpW0P`G%{3A*I}3R1gLMJ~t$ohnWQQFODz
z2&lDm8qF02JAcVTS&lpyk~Ig6!=3`-mgce@HbrqYE*dQfe(>6#xGf0VHGQsTrK{qI
zoAoVLB4CXv59@QgV@>HtSzmF!wjJA;wO?YP0Bj6q7FZF#XRI|9vtjVZzwJ*wian%~
zcj&$s*#qOWxD7pAQqNRc^lexvY`{A}CiFxVckXyVZ)6`|N;j1gyeCJlAv1a4zlzGD8;8xFoD{7!
zbMkidw+QYB_EUiN%xH_2#&ugcWy6_5z{t{y(R-}F??ADLIKHm4WzsXLG6
zLV?Vx6qImLAXF9I`y5+R>HM)MUOS2l(JpcFx`T1&zBBY_j5f5<`NHZvD+c{`V?3n2
z{{m~TAA_!b1;^hYCN)_KnZSjj{3}H7&!|ZYe$Unh8#}tNf=f$q#Xz*j-$k|3n}}a0
zW@St7?`x|cg}p@LXhAVZW0*+^uizsOWZqcL-J^8u-UsOb4=q&QpYHou#x5oO9r1sq
z$Zg-XY_LS${izb=$_@c+;22krlB%>#Uaa4%478dwvT;lif)&UC1l^HOPVUI6ZaL90
z0r7n^(xHI}ao7P8$(zKr4}0HZML2Lpas7WRwSGZ$j-)w|uiz>HacgrxQ5#W=D+X
zNZVDpYAkDcAs7s;p;h6prfrYW9GrK8Fgik=D;dc6nIPev507V%C0+Tp`d)gMX
z)zpWg9knC)NIFW0Sk1IEj(gG<{+fQ5R>kLs1XNi>
zAXye#)}0+3^YpR6%*c-jA$OIa0n&7m=?=W6+eVofeD_=9YQk5U>~c^?^Zkm0^hm>4
z9fr?ZZT}o4LfjG9VHy_rCpY)&n3B_+!Y&tmj)WibBnRzxlX5HjtBlM%bYNDV8+N`Z
zwdrTn@0g!$4VLt
z%AS1z4JKUKzZ$%APjb<3a6e0A58JZ8dkSu*J^Y|z?6hnq>?Cq4Rf*e6`XGtAiTw~w
z&cWPR_DtJZ$!U6fT1HE=XD6zy;5cg{bQO;G^>(V~$I2(XYB83{7NgP%x0MTG{>a^e=q6=DzH<`rORVWv)1*W&R_0WEl{58
z&^dK9{HofI&{X>HYWi-Tr{~X0+SWlaRgzhWL)-xvQHjK_OHZ$fXf|56>X>9~oOoaS
zqExQyNW&yD99^H?1G#T#hS-1Y_8+g3!35-dJS47w4MMT)3DVbVX0Y9wsG{+;57li5841H-NxEG#1&5-c@Ik5v`bF?q(r&P=~!e`Vr$n)9&SLgv^Ie5rc2a
z16o95uusXv*TUCb-N?j!cIf@_INf8kLoM*oviEARzZIA_78@#>ER*JNcjOVKtzT=U
z_xL=`;)QB?!gyi$y&~o39n*KPB3qmvkUp)UkM~SrW?>x0U7KTQ=Qm~Ja|4H(9f1-<
zCbP*Bz1f-_drDIUUp8MiZ=`ivG2766n<)Rud1e!C|MkwL1yQ4&pnG1UOnO}PwI`Q>
zN1_2e)X%{WHm6mhf0r37efFxoT;^{lTCzaS*!LG5)WZ
z?naO2vn-b{-b%q|d3Zeolt||cCwu5#;Sn2)jycV-G%LvE`~AU}^xz?TLs9vS8t$&H
zWl_01^~}d~|F~!iJL3b8)MWv_6&744D{Isl51b^r_l^IvkZFoaHo7N#zu6T0#EtEv
zlVxg|E8Hc?y;d<(@TEZUk#>On`|r7@JV9x)ng`f%H>
zzuX@bTNMfU?FiYNoU8ABO*tMPPnB;Ed{gEweL_q}S}FbseDKNk6Jci3^{!1vU5~-B
zOa;hu>OH+Mqi9M}LdNO5%5%kVUh(vSzn^FyBGrEY+Pkhu*2f!TJcYNPW{ob2_cunwVF{?1m#l+kZlRLq9P9h(nC~+k!z*Z_$1rT8b{pANUg6JSoq&ON#)FoU=A7?TO
zq>`_>0bQebpL}1drJkP7Z3?D~3(WoA!k{w!w;+lKm+LbB;zZo&xP3o!F$FqybIqI5
y`7PV}Th#pkZKoAEZNgjBnRf}s82DJMtY0g&z+3RGko=pDLR-TC(xCP-^8Wze@biTL
literal 0
HcmV?d00001
diff --git a/source/images/lovelace/energy/sources-table.png b/source/images/lovelace/energy/sources-table.png
new file mode 100644
index 0000000000000000000000000000000000000000..5b7316d1fdc231705a9ba926e56635c7c12ffbf7
GIT binary patch
literal 8700
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