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 + 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 graph card + 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 + 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 + 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 + 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 + 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 + 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 + 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 +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 for power entities +Screenshot of the Statistics Graph card with none metered entities and `chart_type` `line`. +

+ +

+Screenshot of the statistics graph card for energy entities +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 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
K8Fgik=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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 literal 0 HcmV?d00001 diff --git a/source/images/lovelace/lovelace_gauge_needle_card.png b/source/images/lovelace/lovelace_gauge_needle_card.png new file mode 100644 index 0000000000000000000000000000000000000000..4011c0ea7f86cc4629f4d8ae99d0c8474c8253e1 GIT binary patch literal 3874 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 MjLZx_890Xj4~Ck6_y7O^ literal 0 HcmV?d00001 diff --git a/source/images/lovelace/lovelace_statistics_graph_bar.png b/source/images/lovelace/lovelace_statistics_graph_bar.png new file mode 100644 index 0000000000000000000000000000000000000000..bd5db706253878378138b7e9a14613a0744c3a3d GIT binary patch literal 6405 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 ARsaA1 literal 0 HcmV?d00001 diff --git a/source/images/lovelace/lovelace_statistics_graph_line.png b/source/images/lovelace/lovelace_statistics_graph_line.png new file mode 100644 index 0000000000000000000000000000000000000000..b3a90185405cc36c5b7e3b57522a024ef0a2e643 GIT binary patch literal 18628 zcmZ5{Ra9I}(>3ny?oNONCkzri5FA3#;2I?8;O-FI0u1i%Hn_XH4TA*;FoOh7KAv~2 z|K`7$i$1$|SM9D-RlQD6w1%1@E*2FQ0s;c=M+_2J-6&-qh*p>%fb~ zCms2J|NhPFUVwYH4;M}zA0J^b*u%ra&CLx20y#T7J32ZVT!NOCmcG2aG_@@0Bo4T` zx^9eat#@yGd3i<1Cmbytiv+ZvteyS%@#D{*KiR!o!^6XEW2^BkD?UCx)z#ITI~OxE zGh16*Q)Tl%fBsBrUvqbN2ZO;^S6AWT;r;#n4>u1@O--imMd#<|X=h9>vu}WdQ?=@)b@E$P*6rjMovynCwMESX(b>apnMckIJnc=+FIYd784UQIyzdA zGSbu2(^(HrOG}&ST4--?4=I}NUp-l0UoR>u^7Hd68QvWqAMfn!OiD_s9*5S}*52RW z53QfpP435(&1Ql(3knKaTh@O4`jyweU6elBxp>^su`xM0*)n&uySux(x>{dfUjdp5 z2?^1N?TaX$Nl8f=**sfWSqZIM6c6fbpFhe^90D)>8ZVe_o;k?s*<4;;F3p}892`8j zxLsUatSOyqm_A6ZoUg2&f}Gv#?Cg}4l`TMF#hGK%yB8G|6@dojmzS3%B_(%{FB#Q~ zOG`_z+sB@jlbvB`RpE?sR8M{T1{@BbuUq~FyBo@yC~sa<2=C6)D1LhWyEk>1Q@i9` zICXRX)Y`QbkUyzo{PXwK{nh}asbOUlG;NhVE*;vnd;srD8Evdt>Q5gtP9NF)byZif zFu8U*I)8jHdmL$7-!}w#>s+{YbTu&q$**6oZe36D>nv_uiELO(aBU4UtA-z64@~U) zRLsRVHGNGQTxwlUPEO7U>&cGk4>78&uUd?*pI@3h=;_<(iXGUS|J57-uJ>%$GtZqH z+jq~I*qk|&B8T4_xMGgWbefl7%ERfrJ?2=XBxD zH-0ZS;10gUk<%pO$0VnM2)i6QHvi+|#F14a6|zQv_EJh-R2$PM&GW7VeF}>VgxV*a zi38}9k$`E%d$Ta3`A$T>GoAwhfL-h-&6G#2gPC9L@!P-#JA8m5MvoRa|a zL{9!K0A>IbuZO~5)O!VJ1A|xtvbbT9q+yX%82H>6_(BA9p9$#f835G`fF)@lz2|h9 zkmK7Q`@0`brT+9GcMRb&#SBrf*i#gmS;-S}ekm)IAStlrA*+zk?*whg*qLR_tMGOI zQN8KZYh^L~1~u?+ZJ4%t$T?kP|9j;hKu=7(KN!LXN)Uk!Uz_!l&yG^xLm%oPvB&$k zesI4pupA&g+WI()_5O^`U!%qXMX_x~E*xffNU^W0G2m&YL%(v1{Lh#$T!^?@~yy z3V*$MKY4;e0gD6D)3wqMZwA!&9uM1B{+yFb=M5WLo!8JBoF!NcGR06&{yiwqheNF! zXAX*0UsQybwvlravuIeJ+4Z8K0ho6n+t}!rXn$nb5K)G>@_Rn}NHZapi{%@hgy3jL zB2<*KV^a97eBv&COE6tBm9)5{zkK>Z?jr#MIieGn#{QK9Yh34T-6E_$jrrGV7*_Ow zsUBmRX>H{I6W{j{2QkolS-A(Lphr5H+j>`JgjB6e8`ryu{_QZaFzGlD~btv$kcy=#P!7yDUFR)z~RF%ThN*BObk$k}gl&epf7$`+D%CAgNw zyg#VJSQd}XaS-1V{Y1bBL<*h5t&It%wWBAPIOq9}yhbrRVHMJd#KQ5zdk?(TPS!ev z!w{$ZKAurqZB(=br%O2qtCM%xtWh7Wv$0HaNUhQ)8KwgfD7 z?&W|gB>BGoL~$$I*qFveBsh*@5#HHsZWT4LBJCL1njD<+ z^M)TnRCh#xKOFPA_QYyHiy6O~1pCe$S;C&qB*73t0%w#8_@^xREiNC%0A*ljYm(h~ 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

10Z2kmhC)4#eivd~j6^|M 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�^Hz-ghI-(A7=`45ZAJB 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 **Lovelace Dashboards**. Here you can see all defined dashboards and create new ones. -### Using YAML for the default dashboard +## Using YAML for the default dashboard To change the default dashboard, create a new file `ui-lovelace.yaml` in your configuration directory and add the following section to your `configuration.yaml` and restart Home Assistant: @@ -29,7 +29,7 @@ When you make changes to `ui-lovelace.yaml`, you don't have to restart Home Assi To revert back to using the UI to edit your Lovelace interface, remove the `lovelace` section from your `configuration.yaml` and copy the contents of your `ui-lovelace.yaml` into the raw configuration section of Home Assistant and restart. -### Adding more dashboards with YAML +## Adding more dashboards with YAML It is also possible to use YAML to define multiple dashboards. Each dashboard will be loaded from its own YAML file. @@ -191,186 +191,4 @@ views: title: Lovelace content: > Welcome to your **Lovelace UI**. -``` - -### Views - -To display cards on the UI you have to define them in views. Views sort cards in columns based on their `card size`. If you want to group some cards you have to use `stack` cards. - -

- Views toolbar - Use titles and icons to describe the content of views. -

- -{% configuration views %} -views: - required: true - description: A list of view configurations. - type: list - keys: - title: - required: true - description: The title or name. - type: string - badges: - required: false - description: List of entities IDs or `badge` objects to display as badges. Note that badges do not show when view is in panel mode. - type: list - cards: - required: false - description: Cards to display in this view. - type: list - path: - required: false - description: Paths are used in the URL, more info below. - type: string - default: view index - icon: - required: false - description: Icon-name from Material Design Icons. You can use any icon from [MaterialDesignIcons.com](http://materialdesignicons.com). Prefix the icon name with `mdi:`, ie `mdi:home`. - type: string - panel: - required: false - description: Renders the view in panel mode, more info below. - type: boolean - default: false - background: - required: false - description: Style the background using CSS, more info below. - type: string - theme: - required: false - description: Themes view and cards, more info below. - type: string - visible: - required: false - description: "Hide/show the view tab from all users or a list of individual `visible` objects." - type: [boolean, list] - default: true -{% endconfiguration %} - -#### Example - -View configuration: - -```yaml -- title: Living room - badges: - - device_tracker.demo_paulus - - entity: light.ceiling_lights - name: Ceiling Lights - icon: mdi:bulb - - entity: switch.decorative_lights - image: /local/lights.png -``` - -## Path - -You can link to one view from a card in another view when using cards that support navigation (`navigation_path`). The string supplied here will be appended to the string `/lovelace/` to create the path to the view. Do not use special characters in paths. Do not begin a path with a number. This will cause the parser to read your path as a view index. - -#### Example - -View configuration: - -```yaml -- title: Living room - # the final path is /lovelace/living_room - path: living_room -``` - -Picture card configuration: - -```yaml -- type: picture - image: /local/living_room.png - tap_action: - action: navigate - navigation_path: /lovelace/living_room -``` - -## View icon - -If you define a view icon, the icon instead of the title will be displayed, the title will then be used as a tool-tip. - -#### Example - -```yaml -- title: Garden - icon: mdi:flower -``` - -## Visible - -You can specify the visibility of views as a whole or per-user. (Note: This is only for the display of the tabs. The URL path is still accessible) - -#### Example - -```yaml -views: - - title: Ian - visible: - - user: 581fca7fdc014b8b894519cc531f9a04 - cards: - ... - - title: Chelsea - visible: - - user: 6e690cc4e40242d2ab14cf38f1882ee6 - cards: - ... - - title: Admin - visible: db34e025e5c84b70968f6530823b117f - cards: - ... -``` - -### Options For Visible - -If you define `visible` as objects instead of a boolean to specify conditions for displaying the view tab: - -{% configuration badges %} -user: - required: true - description: User ID that can see the view tab (unique hex value found on the Users configuration page). - type: string -{% endconfiguration %} - -## Panel - -Setting panel true sets the view to panel mode. In this mode the first card is rendered full-width, other cards in the view will not be rendered. This mode is good when using cards like `map`, `stack` or `picture-elements`. Note that badges will not appear in Panel Mode. - -#### Example - -```yaml -- title: Map - panel: true - cards: - - type: map - entities: - - device_tracker.demo_paulus - - zone.home -``` - -## Theme - -Set a separate [theme](/integrations/frontend/#themes) for the view and its cards. - -#### Example - -```yaml -- title: Home - theme: happy -``` - -## Background - -You can style the background of your views with a [theme](/integrations/frontend/#themes). You can use the CSS variable `lovelace-background`. For wallpapers you probably want to use the example below, more options can be found [here](https://developer.mozilla.org/en-US/docs/Web/CSS/background). - -#### Example - -```yaml -# Example configuration.yaml entry -frontend: - themes: - example: - lovelace-background: center / cover no-repeat url("/local/background.png") fixed -``` +``` \ No newline at end of file diff --git a/source/lovelace/views.markdown b/source/lovelace/views.markdown new file mode 100644 index 00000000000..c8fa471b74b --- /dev/null +++ b/source/lovelace/views.markdown @@ -0,0 +1,188 @@ +--- +title: "Views" +description: "A Lovelace view is a tab inside a Lovelace dashboard." +--- + +A View is a tab inside a Lovelace dashboard. +To display cards on the UI you have to define them in views. + +You can add a view to your user interface, by clicking the Lovelace menu (three dots at the top right of the screen) and then **Edit Dashboard**. +Click the `+` button in the top menu bar. + +

+ Views toolbar + Use titles and icons to describe the content of views. +

+ +## Path + +You can link to one view from a card in another view when using cards that support navigation (`navigation_path`). The string supplied here will be appended to the string `/lovelace/` to create the path to the view. Do not use special characters in paths. Do not begin a path with a number. This will cause the parser to read your path as a view index. + +#### Example + +View configuration: + +```yaml +- title: Living room + # the final path is /lovelace/living_room + path: living_room +``` + +Picture card configuration: + +```yaml +- type: picture + image: /local/living_room.png + tap_action: + action: navigate + navigation_path: /lovelace/living_room +``` + +## View icon + +If you define a view icon, the icon instead of the title will be displayed, the title will then be used as a tool-tip. + +#### Example + +```yaml +- title: Garden + icon: mdi:flower +``` + +## Visible + +You can specify the visibility of views as a whole or per-user. (Note: This is only for the display of the tabs. The URL path is still accessible) + +#### Example + +```yaml +views: + - title: Ian + visible: + - user: 581fca7fdc014b8b894519cc531f9a04 + cards: + ... + - title: Chelsea + visible: + - user: 6e690cc4e40242d2ab14cf38f1882ee6 + cards: + ... + - title: Admin + visible: db34e025e5c84b70968f6530823b117f + cards: + ... +``` + +### Options For Visible + +If you define `visible` as objects instead of a boolean to specify conditions for displaying the view tab: + +{% configuration badges %} +user: + required: true + description: User ID that can see the view tab (unique hex value found on the Users configuration page). + type: string +{% endconfiguration %} + +## Type + +You can change the layout of a view by using a different view type. The default is [`masonry`](/lovelace/masonry). + +#### Example + +```yaml +- title: Map + type: panel + cards: + - type: map + entities: + - device_tracker.demo_paulus + - zone.home +``` + +## Theme + +Set a separate [theme](/integrations/frontend/#themes) for the view and its cards. + +#### Example + +```yaml +- title: Home + theme: happy +``` + +## Background + +You can style the background of your views with a [theme](/integrations/frontend/#themes). You can use the CSS variable `lovelace-background`. For wallpapers you probably want to use the example below, more options can be found [here](https://developer.mozilla.org/en-US/docs/Web/CSS/background). + +#### Example + +```yaml +# Example configuration.yaml entry +frontend: + themes: + example: + lovelace-background: center / cover no-repeat url("/local/background.png") fixed +``` + +{% configuration views %} +views: + required: true + description: A list of view configurations. + type: list + keys: + type: + required: false + description: The type of the view. + type: string + default: masonry + title: + required: true + description: The title or name. + type: string + badges: + required: false + description: List of entities IDs or `badge` objects to display as badges. Note that badges do not show when view is in panel mode. + type: list + cards: + required: false + description: Cards to display in this view. + type: list + path: + required: false + description: Paths are used in the URL, more info below. + type: string + default: view index + icon: + required: false + description: Icon-name from Material Design Icons. You can use any icon from [MaterialDesignIcons.com](http://materialdesignicons.com). Prefix the icon name with `mdi:`, ie `mdi:home`. + type: string + background: + required: false + description: Style the background using CSS, more info below. + type: string + theme: + required: false + description: Themes view and cards, more info below. + type: string + visible: + required: false + description: "Hide/show the view tab from all users or a list of individual `visible` objects." + type: [boolean, list] + default: true +{% endconfiguration %} + +#### Example + +View configuration: + +```yaml +- title: Living room + badges: + - device_tracker.demo_paulus + - entity: light.ceiling_lights + name: Ceiling Lights + icon: mdi:bulb + - entity: switch.decorative_lights + image: /local/lights.png +``` \ No newline at end of file