125 lines
2.8 KiB
Markdown
125 lines
2.8 KiB
Markdown
|
# Lovelace Cards Using Jinja2 Scripting
|
||
|
|
||
|
## 1. This script auto generates Lovelace Entity Cards
|
||
|
|
||
|
```
|
||
|
{# @Author: Mahasri Kalavala (a.k.a @skalavala #}
|
||
|
|
||
|
{%- macro plural(name) -%}
|
||
|
{%- if name[(name|length|int -1):] == "y" -%}
|
||
|
{{- name[:-1] -}}ies
|
||
|
{%- else -%}
|
||
|
{{- name -}}s
|
||
|
{%- endif -%}
|
||
|
{%- endmacro -%}
|
||
|
|
||
|
title: My Lovely Home Automation
|
||
|
views:
|
||
|
- title: Home
|
||
|
cards:
|
||
|
{%- set domains = states | map(attribute='domain') |list | unique | list %}
|
||
|
{%- for item in states['camera'] %}
|
||
|
- type: picture-entity
|
||
|
title: {{ item.name }}
|
||
|
entity: {{ item.entity_id }}
|
||
|
camera_image: {{ item.entity_id }}
|
||
|
show_info: true
|
||
|
tap_action: dialog
|
||
|
{% endfor %}
|
||
|
{%- for item in states['media_player'] %}
|
||
|
- type: media-control
|
||
|
entity: {{ item.entity_id }}
|
||
|
{% endfor %}
|
||
|
{%- for item in domains if item != "camera" and item != "media_player" %}
|
||
|
- type: {% if item == "device_tracker" -%}
|
||
|
entity-filter
|
||
|
{%- elif item == "camera" -%}
|
||
|
picture-entity
|
||
|
{%- else -%}
|
||
|
entities
|
||
|
{%- endif %}
|
||
|
{%- if states[item]|list |length|default(0)|int > 1 %}
|
||
|
title: {{ plural(item.replace('_', ' ') | title) }}
|
||
|
{%- else %}
|
||
|
title: {{ item.replace('_', ' ') | title }}
|
||
|
{%- endif %}
|
||
|
show_header_toggle: true
|
||
|
entities:
|
||
|
{%- for e in states[item] %}
|
||
|
- {{ e.entity_id }}
|
||
|
{%- endfor %}
|
||
|
{%- if item == "device_tracker" %}
|
||
|
state_filter:
|
||
|
- 'home'
|
||
|
card:
|
||
|
type: glance
|
||
|
title: My Device Trackers
|
||
|
{% endif %}
|
||
|
{% endfor -%}
|
||
|
```
|
||
|
|
||
|
The output of the above script would look like the following:
|
||
|
|
||
|
```
|
||
|
# This script auto generates Lovelace Entity Cards
|
||
|
|
||
|
- type: entities
|
||
|
title: Alarm Control Panel
|
||
|
show_header_toggle: true
|
||
|
entities:
|
||
|
- alarm_control_panel.simplisafe
|
||
|
name: Home Security System
|
||
|
|
||
|
- type: entities
|
||
|
title: Sun
|
||
|
show_header_toggle: true
|
||
|
entities:
|
||
|
- sun.sun
|
||
|
name: Sun
|
||
|
|
||
|
- type: entities
|
||
|
title: Proximity
|
||
|
show_header_toggle: true
|
||
|
entities:
|
||
|
- proximity.home
|
||
|
name: home
|
||
|
- proximity.work
|
||
|
name: work
|
||
|
|
||
|
...
|
||
|
```
|
||
|
|
||
|
## 2. This script auto generates Lovelace Entity-Filter Card for your Device Trackers
|
||
|
|
||
|
```
|
||
|
{% for item in states['device_tracker'] -%}
|
||
|
- type: entity-filter
|
||
|
state_filter:
|
||
|
- 'home'
|
||
|
card:
|
||
|
type: glance
|
||
|
title: My Device Trackers
|
||
|
entities:
|
||
|
{%- for e in states[item] %}
|
||
|
- {{ e.entity_id }}
|
||
|
{%- endfor %}
|
||
|
{% endfor %}
|
||
|
```
|
||
|
The output of above would look something like:
|
||
|
|
||
|
```
|
||
|
- type: entity-filter
|
||
|
state_filter:
|
||
|
- 'home'
|
||
|
card:
|
||
|
type: glance
|
||
|
title: My Device Trackers
|
||
|
entities:
|
||
|
- device_tracker.hasika_hasika
|
||
|
- device_tracker.ipad
|
||
|
- device_tracker.mallika_mallika
|
||
|
- device_tracker.srinika_srinika
|
||
|
- device_tracker.suresh_suresh
|
||
|
- device_tracker.tesla_model_3_5yj3e1ea8jf010610_location_tracker
|
||
|
```
|