From e4c17bc96565ea5e4d617754222941c00da768ef Mon Sep 17 00:00:00 2001 From: Philip Allgaier Date: Fri, 8 Jan 2021 13:26:08 +0100 Subject: [PATCH] Entities card: Tweaks, buttons screenshot + attribute example (#16126) --- source/_lovelace/entities.markdown | 65 +++++++++++++----- .../lovelace/lovelace_entity_row_buttons.jpg | Bin 0 -> 15980 bytes 2 files changed, 48 insertions(+), 17 deletions(-) create mode 100644 source/images/lovelace/lovelace_entity_row_buttons.jpg diff --git a/source/_lovelace/entities.markdown b/source/_lovelace/entities.markdown index 9f273dde59c..2c7d8fdd550 100644 --- a/source/_lovelace/entities.markdown +++ b/source/_lovelace/entities.markdown @@ -4,9 +4,9 @@ sidebar_label: Entities description: "The Entities card is the most common type of card. It groups items together into lists." --- -The Entities card is the most common type of card. It groups items together into lists. +The Entities card is the most common type of card. It groups items together into lists. It can be used to display an entity's state or attribute, but also contain buttons, web links, etc. -To add the Entities card to your user interface, click the Lovelace menu (three dots at the top right of the screen) and then **Edit Dashboard**. Click the plus button in the bottom right corner and select **Entities** from the card picker. +To add the Entities 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 **Entities** from the card picker. {% configuration %} type: @@ -15,7 +15,7 @@ type: type: string entities: required: true - description: "A list of entity IDs or `entity` objects, see below." + description: "A list of entity IDs or `entity` objects or special row objects (see below)." type: list title: required: false @@ -56,7 +56,7 @@ If you define entities as objects instead of strings (by adding `entity:` before {% configuration %} entity: required: true - description: Home Assistant entity ID. + description: Entity ID. type: string type: required: false @@ -115,12 +115,14 @@ double_tap_action: ## Special Row Elements +Rather than only displaying an entity's state as a text output, the Entities card supports multiple special rows for buttons, attributes, web links, dividers and sections, etc. + ### Button {% configuration %} type: required: true - description: button + description: "`button`" type: string name: required: true @@ -156,7 +158,7 @@ Special row to start Home Assistant Cast. {% configuration %} type: required: true - description: cast + description: "`cast`" type: string dashboard: required: false @@ -190,7 +192,7 @@ Special row that displays based on entity states. {% configuration %} type: required: true - description: conditional + description: "`conditional`" type: string conditions: required: true @@ -199,7 +201,7 @@ conditions: keys: entity: required: true - description: HA entity ID. + description: Entity ID. type: string state: required: false @@ -224,7 +226,7 @@ Note: Conditions with more than one entity are treated as an 'and' condition. Th {% configuration %} type: required: true - description: divider + description: "`divider`" type: string style: required: false @@ -238,7 +240,7 @@ style: {% configuration %} type: required: true - description: section + description: "`section`" type: string label: required: false @@ -251,7 +253,7 @@ label: {% configuration %} type: required: true - description: weblink + description: "`weblink`" type: string url: required: true @@ -271,10 +273,12 @@ icon: ### Buttons +Multiple buttons displayed in a single row next to each other. See examples further below. + {% configuration %} type: required: true - description: buttons + description: "`buttons`" type: string entities: required: true @@ -283,7 +287,7 @@ entities: keys: entity: required: true - description: The entity to render. + description: Entity ID type: string icon: required: false @@ -304,11 +308,11 @@ entities: {% configuration %} type: required: true - description: attribute + description: "`attribute`" type: string entity: required: true - description: Home Assistant entity ID. + description: Entity ID type: string attribute: required: true @@ -328,7 +332,7 @@ name: type: string {% endconfiguration %} -## Example +## Examples Entity rows: @@ -348,7 +352,30 @@ entities: - group.all_locks ``` -Special rows: +Buttons row: + +Above the divider are regular entity rows, below one of type `buttons`. Note that regular entity rows automatically show the entity name, whereas for buttons you have to explicitely specify a label / name. + +

+Screenshot of buttons row +Screenshot of buttons row. +

+ +```yaml +type: entities +entities: + - entity: light.office_ceiling + - entity: light.dining_ceiling + - type: divider + - type: buttons + entities: + - entity: light.office_ceiling + name: Office Ceiling + - entity: light.dining_ceiling + name: Dining Ceiling +``` + +Other special rows: ```yaml type: entities @@ -363,6 +390,10 @@ entities: service_data: entity_id: light.bed_light - type: divider + - type: attribute + entity: sun.sun + attribute: elevation + name: Elevation - type: weblink name: Home Assistant url: https://www.home-assistant.io/ diff --git a/source/images/lovelace/lovelace_entity_row_buttons.jpg b/source/images/lovelace/lovelace_entity_row_buttons.jpg new file mode 100644 index 0000000000000000000000000000000000000000..638c9e702995dae4b4895b4a83a012ff7e306426 GIT binary patch literal 15980 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