Det kraftigste kortet i HOme Assistant
Kort intro
Home Assistant er virkelig det ypperste av hva som kjennetegner et vellykket åpen kildekode-prosjekt. De ubegrensede mulighetene, det blomstrende fellesskapet og utviklerne som samarbeider og deler kunnskap, gjør det til en plattform som bare blir bedre og bedre for hver dag som går.
I dag vil jeg hedre en av disse bidragsyterne, Thomas Loven. Den 8. november 2019 lanserte han auto-enheter kortet for Home Assistant. Hvis du ikke vet hva auto-entities er, er det kanskje det kraftigste kortet du kan bruke når du bygger egendefinerte dashbord i Home Assistant.
Ved første øyekast virker det ganske enkelt. Et kort som automatisk kan liste opp alle enhetene dine basert på et filter, der filteret kan være domene, område, navn osv. Med auto-enheter har du mange valg, og i dette innlegget skal vi se nærmere på ett av disse valgene, og det vi skal se nærmere på, er templating.
Templating
Maler, for de av dere som ikke vet det, er et stykke kode som kan skrives i et kort for logiske uttrykk. Det er nesten som å programmere inne i et kort, men la oss ikke henge oss opp i detaljer. Ved å kombinere templating med auto-entiteter får kortet plutselig "superkrefter", og det mener jeg absolutt. La oss se på et eksempel med yaml.
Standard Atuo-enheter
Som nevnt er auto-entiteter et ganske enkelt kort til å begynne med, men det har mange hemmeligheter å avdekke. Før vi ser nærmere på nøyaktig hva det er å avdekke, la oss ta en titt på standardmåten å gjøre ting på når det gjelder auto-enheter:
Vanlige Auto-enheter
Det ser kjedelig ut, er ikke intuitivt og blir fort bare en lang liste med enheter med mindre du spesifiserer nøyaktig hva du vil ha!
Vis hele koden Skjul kode
type: custom:auto-entities
kort
type: entities
title: Alle lys
show_header_toggle: true
filter: filter:
include:
- domain: light
exclude: ekskluder
- state: utilgjengelig
sort:
method: name
ignore_case: true
show_empty: false
For konfigurasjonen ovenfor velger vi et domene (lys) som skal vises på kortet, og så sier vi at vi vil ekskludere de som ikke er tilgjengelige. Dette er greit, men det er veldig enkelt og veldig grunnleggende. Vi har ingen sortering, bortsett fra etter navn, vi viser ALLE lysene i Home Assistant-installasjonen (det betyr grupper av lys og lys i grupper), og du får en lang liste med en enkel veksling. Som nevnt er dette greit, men det trengs mer for å være skikkelig nyttig.
La oss si at du vil dimme et lys eller endre fargen på det, da må du utføre en "hold"-handling på lyset og vente på at popup-vinduet for lyset vises for å endre disse innstillingene. Det er heller ingen sortering annet enn etter navn, så det er lett å slå på/av feil lys.
La magien begynne!
Hvis vi i stedet introduserer litt templating i dette kortet, får vi noe som fungerer som magi:
Vi kan forvandle den kjedelige, flate, vanlige konfigurasjonen av automatiske enheter til noe som er sortert og listet opp etter områder, og som har all kontroll lett tilgjengelig med et enkelt fingertrykk.
Og det absolutt beste med den? Det oppdateres automatisknår du legger til, fjerner og endrer områder og lys. Det betyr at du ikke lenger trenger å oppdatere kortet hvis du legger til flere lys!
Siden vi gjengir lysene ved hjelp av mushroom-light-cards, kan vi også vise de individuelle kontrollene for hvert lys automatisk hvis de er til stede!
Og det beste av alt?
Skalering fungerer ut av boksen.
Kortet skaleres automatisk til nesten alle enheter! En nettleser i 4k, et nettbrett, en telefon osv.
Hvordan da?
Så hvordan fungerer dette egentlig?
Svaret er komplekst, men med templating har vi muligheten til det:
Legg til en tynn skillevegg for hvert område og en overskriftsrad med navnet på området.
Vi viser deretter områdets lys som Mushroom-lyskort med lysstyrke, fargetemperatur og fargekontroller (hvis de finnes for enheten, vil de bli gjengitt)
Hvis det ikke finnes noen områder, viser vi meldingen "Ingen områder funnet" og ber brukeren om å opprette områder og legge til lys.
Skjulte lys er ekskludert, lysene er sortert etter navn, og det overordnede enhetskortet viser en topptekstbryter som slår av ALLE lysene hvis du trykker på den.
Vis hele koden Skjul kode
type: custom:auto-entities
card:
show_header_toggle: true
type: entities
filter:
template: >-
{%- set areas = states.light | map(attribute='entity_id') | map('area_name') | unique | reject('none') | list | sort -%}
{% if areas | length == 0 %}
[
{
'type': 'custom:button-text-card',
'title': 'No Areas found in the Home Assistant installation',
'subtitle': 'Create some areas and populate them with soem lights',
'icon': 'mdi:chat-question',
'background_color': 'var(--primary-color)',
}
]
{% else %}
[
{%- for area in areas %}
{
'type': 'custom:button-card',
'styles': {
'card': [
{ 'height': '5px' },
{ 'max-height': '10px' },
{ 'padding': '0' },
{ 'margin': '0' },
{ 'background-color': 'var(--primary-color)' }
]
}
},
{
'type': 'custom:button-text-card',
'title': '{{ area }}',
'icon': 'mdi:lightbulb',
'background_color': 'var(--primary-color)',
},
{%- set lights = states.light | selectattr('entity_id', 'in', area_entities(area)) | sort(attribute='name') -%}
{%- for light in lights %}
{
'type': 'custom:mushroom-light-card',
'entity': '{{ light.entity_id }}',
'use_light_color': 'true',
'show_brightness_control': 'true',
'show_color_control': 'true',
'collapsible_controls': 'false',
'show_color_temp_control': 'true',
'styles': { 'card': [ { 'border-radius': '20px' } ] }
}
{%- if not loop.last %},{% endif %}
{%- endfor %}
{%- if not loop.last %},{% endif %}
{%- endfor %}
]
{% endif %}
exclude:
- hidden_by: "*"
Konklusjon
Etter å ha lest dette og testet det ut, forstår du kanskje nå HVORFOR Autoentiteter er et "superkort" i Home Assistant.
Autoenheter har muligheten til å replikere et hvilket som helst kort, med et hvilket som helst design, med NESTED-kortkonfigurasjoner basert på dine behov - automatisk befolket med spesifikke enheter / domener / enheter osv. Sier jeg nå at dette er lett og enkelt å gjøre? Nei, og det er det ikke. Jeg har brukt utallige timer på å prøve å feilsøke visse jinja-malfeil som rett og slett ikke gir mening for å få konfigurasjonen jeg ønsker å gjengi riktig i dashbordene mine. Moroa starter VIRKELIG når du prøver å hekke auto-entitetskort i et auto-entitetskort. Det vil virkelig sette deg i en løkke hvis du ikke er forsiktig med syntaksen, men jeg tror det er best tjent med et annet blogginnlegg.
Det jeg sier er at du i utgangspunktet (og med litt arbeid) kan lage automatiske kort for ALLE dine forskjellige typer enheter. Lys, temperatursensorer, fuktighetssensorer, aktive bevegelsessensorer og så videre.
Uansett, følg med på neste blogginnlegg om Home Assistant, så kan du kanskje lære en ting eller to.