Jinja Magic Scripts
Jinja2 script to help you create/migrate the existing config/setup to lovelace automagically.
Code to auto-generate Lovelace Script
{# @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'] %}
- id: {{ item.entity_id.replace('.', '_') }}
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 -%}Last updated