Home Assistant · pas cu pas

Construiți acest panou de control Home Assistant în aproximativ o oră

Zece pași, YAML-ul fiecărui card și o vizualizare completă pe care o puteți lipi dintr-o dată. Construit și fotografiat pe un Marantz CINEMA 30 real. Schimbați două șiruri de text și devine al dumneavoastră.

Panoul de control terminat: un card central pentru ce rulează acum, volum cu presetări în dB, o grilă de surse, moduri surround, corecția camerei, scene și un grafic de volum
Ce construiți
Vă grăbiți? Săriți la pasul 10, descărcați vizualizarea completă, schimbați două șiruri de text și lipiți-o. Pașii dintre ele explică ce face fiecare element, ca să îl puteți modifica.

Înainte de a începe

Două surse alimentează acest panou de control, iar diferența contează la fiecare pas de mai jos.

Provine dinVă oferă
Scripturile sincronizate de AVR MaestroFiecare control. Intrări, moduri surround, Audyssey, Dirac, Smart Select, presetări, dimmer, eco, Scenele dumneavoastră.
Entitatea media player a integrării Denon AVRStarea în timp real. Alimentare, sursa selectată, mod surround, volum, mute.
Pasul 1

Instalați patru carduri din HACS

Toate patru se află în magazinul HACS implicit. În Home Assistant: HACS › Frontend › Explore & Download Repositories, căutați numele, apăsați Download, apoi reîncărcați browserul.

CăutațiFolosit pentruDacă îl omiteți
MushroomFiecare tilă de control și glisorul de volumFolosiți un card simplu button. Funcționează, dar arată mai pătrățos.
button-cardAntete de secțiune cu o etichetă în timp realFolosiți un card markdown sau titluri simple.
card-modCulorile și starea aprinsă a tilei activeTotul funcționează în continuare. Nimic nu se aprinde.
apexcharts-cardGraficele de istoricFolosiți cardul history-graph încorporat.
Niciunul dintre ele nu este obligatoriu pentru ca totul să funcționeze. Fiecare control de mai jos rulează dintr-un card de buton standard Home Assistant îndreptat spre același script. Cardurile personalizate sunt machiaj, nu instalații.
Pasul 2

Aflați cele două ID-uri de entitate

Fiecare fragment de pe această pagină folosește două substituenți. Aflați-le pe ale dumneavoastră o singură dată, iar restul înseamnă copiere și lipire.

Partea din mijloc a fiecărui ID de script este adresa MAC a receiverului dumneavoastră, douăsprezece caractere minuscule, aceeași la toate. Copiați-o o singură dată. Oriunde această pagină scrie MAC, puneți-o pe a dumneavoastră.

Ignorați orice intrare care conține unavailable. Versiunile mai vechi denumeau scripturile după numele receiverului, nu după MAC. Dacă ați sincronizat atunci, cele vechi sunt încă listate și nu mai funcționează. Cele active sunt cele denumite după MAC.
Pasul 3

Creați vizualizarea

  1. 1. Settings › Dashboards › Add Dashboard › New dashboard from scratch. Dați-i orice nume doriți.
  2. 2. Deschideți-l, apoi apăsați pe pictograma creion din dreapta sus pentru a edita.
  3. 3. Adăugați o vizualizare și alegeți aspectul Sections. Nu Masonry. Sections este cel care îl face să se reorganizeze corect pe telefon.
  4. 4. În setările vizualizării, setați Max columns la 3 și activați Dense section placement.

De aici înainte, fiecare pas este: adăugați o secțiune, apoi lipiți carduri în ea. Pentru a lipi YAML, folosiți meniul cu trei puncte de pe un card și alegeți Edit in YAML sau meniul cu trei puncte al panoului pentru Raw configuration editor, ca să lipiți totul odată.

# The view's own settings, if you prefer to type them
type: sections
title: AVR Maestro
icon: mdi:audio-video
max_columns: 3
dense_section_placement: true
Pasul 4

Adăugați un control

Începeți cu cel mai simplu element de pe panou, ca să știți că ID-urile de entitate sunt corecte înainte de a construi ceva complicat. Adăugați o secțiune, adăugați un card, Edit in YAML, lipiți:

type: button
name: Pure Direct
icon: mdi:speaker
tap_action:
  action: perform-action
  perform_action: script.turn_on
  target:
    entity_id: script.avr_maestro_MAC_mode_pure_direct

Home Assistant standard. Nu este nevoie de HACS.

Atingeți-l. Dacă receiverul se schimbă, ID-urile sunt corecte și tot ce urmează va funcționa. Dacă nu se întâmplă nimic, reveniți la pasul 2.

Pasul 5

Faceți-l să se aprindă când este cel activ

Acesta este modelul care merită învățat, iar fiecare tilă de sursă și de surround de pe panou este o copie a lui. Cardul trimite un script și se colorează după entitatea receiverului, astfel încât intrarea pe care vă aflați efectiv este aprinsă, iar celelalte nu.

Grila de surse cu Nvidia Shield aprins în portocaliu și celelalte douăsprezece intrări stinse
O tilă aprinsă, douăsprezece stinse
type: custom:mushroom-template-card
entity: script.avr_maestro_MAC_input_cd
icon: mdi:disc
primary: CD
icon_color: >-
  {{ 'orange' if (state_attr('media_player.your_receiver','source') or '')|lower
     == 'cd' else 'grey' }}
layout: vertical
fill_container: true
tap_action:
  action: perform-action
  perform_action: script.turn_on
  target:
    entity_id: script.avr_maestro_MAC_input_cd
card_mod:
  style: |
    ha-card {
      border-radius: 14px;
    {% if (state_attr('media_player.your_receiver','source') or '')|lower == 'cd' %}
      background: linear-gradient(160deg, rgba(226,86,10,0.34), rgba(15,15,17,0.88));
      border: 1px solid rgba(255,122,24,0.80);
    {% else %}
      background: rgba(15,15,17,0.72);
      border: 1px solid rgba(255,122,24,0.14);
    {% endif %}
    }

Schimbați trei lucruri la fiecare intrare: scriptul, pictograma și șirul cu care se compară.

Două lucruri trebuie făcute corect, altfel o tilă nu se va aprinde niciodată:

Modurile surround sunt același card, cu sound_mode în locul lui source.

Pasul 6

Dați fiecărei secțiuni un antet în timp real

Un titlu simplu este spațiu irosit. Puneți valoarea în timp real sub el, iar „Surse” devine „Surse / Acum pe Nvidia Shield”.

type: custom:button-card
name: Sources
icon: mdi:video-input-hdmi
color_type: label-card
entity: media_player.your_receiver
show_label: true
label: >-
  [[[ var v = states["media_player.your_receiver"].attributes.source;
      return v ? ("Now on " + v) : "Receiver in standby"; ]]]
tap_action:
  action: none
styles:
  grid:
    - grid-template-areas: '"i n" "i l"'
    - grid-template-columns: min-content auto
  name:
    - font-size: 13px
    - letter-spacing: 3px
    - text-transform: uppercase
    - justify-self: start
  label:
    - font-size: 11px
    - justify-self: start

Grila pe două rânduri este cea care pune eticheta sub titlu, nu lângă el.

Înlocuiți attributes.source cu attributes.sound_mode în antetul Surround și așa mai departe.

Pasul 7

Afișați volumul în dB

Home Assistant raportează volumul ca fracție. Nimeni nu setează un receiver la „0.67”. O singură linie de matematică rezolvă asta, iar întreaga secțiune începe să arate ca un receiver.

Secțiunea de volum: un glisor, sus, jos, mute și patru presetări în dB
Night, Dialog, Movie și Loud, fiecare etichetată cu dB-ul pe care îl setează
Conversia. Home Assistant publică volume_level ca volumul principal împărțit la 100, iar la receivere Denon și Marantz MV 80 este referința de 0 dB. Deci dB = volume_level × 100 − 80. Un volume_level de 0.67 înseamnă volum principal 67, adică −13.0 dB.
# The readout
type: custom:mushroom-template-card
entity: media_player.your_receiver
icon: mdi:volume-high
primary: >-
  {% set v = state_attr('media_player.your_receiver','volume_level') %}
  {% if v is not none %}{{ (v * 100 - 80) | round(1) }} dB{% else %}Standby{% endif %}
secondary: Master volume
layout: vertical
# The slider. media_controls must be empty or the bar becomes a power button
type: custom:mushroom-media-player-card
entity: media_player.your_receiver
volume_controls:
  - volume_set
media_controls: []
show_volume_level: true
# A preset. 0.50 is master volume 50, which is -30 dB
type: custom:mushroom-template-card
entity: media_player.your_receiver
icon: mdi:weather-night
primary: Night
secondary: "-30 dB"
tap_action:
  action: perform-action
  perform_action: media_player.volume_set
  target:
    entity_id: media_player.your_receiver
  data:
    volume_level: 0.50
Alegeți deliberat presetarea cea mai tare. Setul de mai sus se oprește la −10 dB. Un panou de control se atinge mult mai ușor din greșeală decât o telecomandă, iar nivelul de referință pe un receiver mare este cu adevărat puternic.
Pasul 8

Adăugați Scenele dumneavoastră

Citiți numele din script în loc să îl tastați, iar redenumirea unei Scene în AVR Maestro redenumește tila fără nicio editare a panoului.

Patru tile de scenă, fiecare listând setările pe care le restabilește scena respectivă
Fiecare tilă spune ce restabilește de fapt scena ei
type: custom:mushroom-template-card
entity: script.avr_maestro_MAC_scene_1234567890123
icon: mdi:theater
primary: >-
  {{ state_attr('script.avr_maestro_MAC_scene_1234567890123','friendly_name')
     | replace('AVR Maestro - ', '') | replace(' (Your Receiver)', '') }}
secondary: >-
  {% set t = states.script['avr_maestro_MAC_scene_1234567890123'].attributes.last_triggered %}
  {{ 'recalled ' ~ relative_time(t) ~ ' ago' if t else 'not run yet' }}
multiline_secondary: true
tap_action:
  action: perform-action
  perform_action: script.turn_on
  target:
    entity_id: script.avr_maestro_MAC_scene_1234567890123

Cele două apeluri replace() elimină prefixul și numele receiverului din numele prietenos.

Merită un minut în plus pentru un al doilea rând. Un perete de butoane cu nume sugestive nu vă spune nimic la 11 seara; un rând care spune ce restabilește fiecare vă spune pe care să îl apăsați.

Pasul 9

Adăugați istoric

Entitatea media player a receiverului este înregistrată de Home Assistant ca oricare alta, deci obțineți gratis un istoric de ascultare. Tot ce este mai jos provine din acea entitate: fără senzori suplimentari, fără helperi, nimic de configurat în prealabil.

Cinci grafice de istoric: alimentare și activitate, volum principal în dB, volum pe zile, sursa folosită și modul surround
Cinci grafice, o entitate, șapte zile

Cronologia de stare simplă nu necesită deloc carduri personalizate și este cea mai utilă:

type: history-graph
hours_to_show: 168
entities:
  - entity: media_player.your_receiver
    name: Receiver

Pornit, oprit și ce făcea, pe parcursul unei săptămâni.

Volumul în dB folosește aceeași conversie ca la pasul 7:

type: custom:apexcharts-card
graph_span: 7d
header:
  show: true
  title: Master volume, last 7 days
series:
  - entity: media_player.your_receiver
    attribute: volume_level
    name: Master volume
    type: line
    curve: smooth
    unit: dB
    float_precision: 1
    transform: "return x == null ? null : Number(x) * 100 - 80;"
    extend_to: now
    group_by:
      duration: 1h
      func: last
      fill: last
apex_config:
  chart:
    height: 240
  yaxis:
    min: -60
    max: 0

group_by cu fill: last transformă evenimentele rare într-o linie continuă. Axa y trebuie pusă în apex_config pentru a avea efect.

O medie zilnică și un vârf transformă o linie în zigzag în ceva cu o formă:

type: custom:apexcharts-card
graph_span: 7d
span:
  end: day
header:
  show: true
  title: Master volume by day in dB, average and peak
series:
  - entity: media_player.your_receiver
    attribute: volume_level
    name: Day average
    type: column
    float_precision: 1
    transform: "return x == null ? null : Number(x) * 100;"
    group_by: {duration: 1d, func: avg, fill: 'null'}
  - entity: media_player.your_receiver
    attribute: volume_level
    name: Day peak
    type: line
    curve: smooth
    float_precision: 1
    transform: "return x == null ? null : Number(x) * 100;"
    group_by: {duration: 1d, func: max, fill: 'null'}
apex_config:
  yaxis:
    min: 0
    max: 80
    labels:
      formatter: "EVAL:function (v) { return (v - 80).toFixed(0); }"
  tooltip:
    y:
      formatter: "EVAL:function (v) { return v == null ? '' : (v - 80).toFixed(1) + ' dB'; }"

Două serii din același atribut, grupate pe zile.

De ce acesta trasează de la 0 la 80 și formatează în dB, în loc să traseze dB. Barele cresc de la baza axei. Dacă trasați direct dB, fiecare bară atârnă de la 0, deci o bară lungă înseamnă liniște, ceea ce se citește invers. Trasați numărul brut al volumului principal și scădeți 80 în formatatoarele axei și ale tooltipului, iar barele cresc în sus, în timp ce tot ce vede cititorul rămâne în dB. fill: 'null' înseamnă că o zi fără citiri nu primește nicio bară, în loc să primească valoarea reportată de ieri.

Și cele două care răspund la întrebarea „pe ce mă uit de fapt și în ce mod”: sursa și modul surround, trasate ca o cronologie a celei selectate.

type: custom:apexcharts-card
graph_span: 7d
span:
  end: day
header:
  show: true
  title: Source in use, last 7 days
series:
  - entity: media_player.your_receiver
    attribute: source
    name: Source
    type: line
    curve: stepline
    stroke_width: 3
    extend_to: now
    float_precision: 0
    transform: |
      if (x == null) return null;
      var m = ["Phono", "NET", "Xbox", "Nvidia Shield"];
      var i = m.indexOf(x);
      return i < 0 ? 0 : i + 1;
apex_config:
  yaxis:
    min: 0
    max: 4
    tickAmount: 4
    labels:
      formatter: >-
        EVAL:function (v) { return ["Other", "Phono", "HEOS Net", "Xbox",
        "Shield"][Math.round(v)] || ''; }
  tooltip:
    y:
      formatter: >-
        EVAL:function (v) { return v == null ? 'off' : ["Other", "Phono",
        "HEOS Net", "Xbox", "Shield"][Math.round(v)] || 'Other'; }

Puneți propriile surse în tabloul transform și în ambele tablouri de formatare. Păstrați indexul 0 ca „Altele”.

O axă de grafic are nevoie de numere, deci transform asociază fiecare nume de sursă cu o poziție, iar formatatoarele o asociază înapoi pentru etichete și tooltip. Faceți asocierea totală: null (receiver oprit) rămâne un gol, iar orice nu se află în lista dumneavoastră ajunge la „Altele”, astfel încât cele două nu pot fi confundate niciodată. Același card cu sound_mode vă oferă modul surround, cu șirurile cu majuscule exact cum le raportează receiverul dumneavoastră.

Păstrați stepline la ultimele două. O sursă sau un mod surround este o categorie, nu un număr. Dacă netezați curba, linia se unduiește între Shield și Xbox prin tot ce se află între ele pe axă, desenând o intrare care nu a fost niciodată selectată. Volumul este o mărime reală și se netezește onest; o categorie nu.
Verificați mai întâi retenția recorderului. Home Assistant păstrează implicit zece zile, deci șapte zile este cam maximul pe care îl puteți cere în mod util. Pentru a merge mai departe în timp aveți nevoie de un senzor șablon state_class: measurement, pe care Home Assistant îl păstrează ca statistici pe termen lung timp de ani.
O zi lipsă este de obicei corectă. Home Assistant înregistrează schimbări, nu eșantioane. Lăsați receiverul pe o singură intrare la un singur volum două zile și nu scrie absolut nimic, deci acea zi nu are bară. Pare o pierdere de date și este opusul: nu s-a întâmplat nimic.
Pasul 10

Sau luați-le pe toate

Vizualizarea completă, fiecare secțiune și fiecare card, cu substituenți în loc de ID-uri de entitate.

  1. 1. Descărcați YAML-ul vizualizării.
  2. 2. Deschideți-l în orice editor de text și înlocuiți două șiruri, peste tot unde apar: YOUR_RECEIVER cu numele entității media player și YOURMAC cu cele douăsprezece caractere ale receiverului dumneavoastră de la pasul 2.
  3. 3. În Home Assistant, deschideți panoul de control, pictograma creion, meniul cu trei puncte, Raw configuration editor, și lipiți-l ca vizualizare.
ID-urile Scenelor dumneavoastră nu se vor potrivi. Scripturile de scenă sunt denumite după momentul creării Scenei, deci cele patru din fișier nu există în sistemul dumneavoastră: acele carduri se vor afișa și nu vor face nimic. Înlocuiți ID-urile lor de entitate cu ale dumneavoastră de la pasul 2 sau ștergeți secțiunea Scene și reconstruiți-o cu pasul 8.
Alte două lucruri la care să vă așteptați. Graficele de surse și surround conțin numele surselor receiverului pe care a fost construit acest panou, așa că editați acele tablouri așa cum descrie pasul 9. Iar etichetele tilelor sunt în engleză; nimic din fișier nu este tradus.

Dacă o tilă nu se aprinde niciodată

Înainte să credeți că ați greșit ceva: unele nu se pot aprinde și merită să știți care.

O tilă își poate afișa starea doar dacă Home Assistant o poate citi, iar receiverul dumneavoastră este citit din două locuri. Integrarea Denon AVR publică elementele de bază pe entitatea media player. AVR Maestro le publică pe restul: creează un senzor Status Bridge, sensor.avr_maestro_your_receiver, și scrie pe el, ca atribute, citirile pe care le deține deja.

Pe entitatea media playerPe senzorul Status Bridge
AlimentareCurba Audyssey MultEQ
Sursa selectatăDynamic Volume și nivelul de referință
Mod surroundCare slot Dirac este încărcat
Volum și muteDimmerul panoului frontal, modul Eco
Dynamic EQ, uneoriPresetarea difuzoarelor, ton și zeci de altele

Ambele coloane pot fi citite acum. Luați o valoare media player din states['media_player.your_receiver'].attributes și o valoare Status Bridge cu state_attr('sensor.avr_maestro_your_receiver','dirac_slot'), astfel încât o tilă să se aprindă pentru setarea care este de fapt activă, nu doar să declanșeze scriptul care o schimbă.

Măsurat pe receiverul pe care a fost construit acest panou: entitatea media player poartă aproximativ douăzeci din cele șaizeci de controale, iar senzorul Status Bridge publică cam alte patruzeci. Împreună, un panou de control poate citi aproape tot ce poate schimba - diferența dintre un perete de butoane și o suprafață de control.

Dacă o valoare poate însemna două lucruri, spuneți-o. Dynamic EQ ajunge ca true, false sau deloc. A trata „deloc” ca „oprit” pune un răspuns greșit, dar sigur de sine, pe peretele dumneavoastră.
icon_color: >-
  {% set d = state_attr('media_player.your_receiver','dynamic_eq') %}
  {{ 'orange' if d is true else 'grey' }}
secondary: >-
  {% set d = state_attr('media_player.your_receiver','dynamic_eq') %}
  {% if d is none %}state not published{% elif d %}on{% else %}off{% endif %}

Trei stări, nu două.

Alte lucruri bune de știut

Același panou de control pe lățimea unui telefon, reorganizat într-o singură coloană
Același panou de control pe lățimea unui telefon: cele trei coloane devin una și nu a fost configurat nimic pentru asta
Întrebări frecvente

Panoul de control, cu răspunsuri

Am nevoie de carduri personalizate din HACS pentru a-l construi?
Nu pentru ca să funcționeze. Fiecare control de pe această pagină rulează dintr-un simplu card buton Home Assistant. Mushroom, button-card, card-mod și apexcharts-card sunt cele care îi dau aspectul din capturile de ecran, iar fiecare secțiune de mai jos spune pe care îl folosește și ce pierdeți fără el.
De ce se aprind unele butoane, iar altele nu?
Un buton se aprinde când Home Assistant poate citi starea corespunzătoare de la receiverul dumneavoastră. Sursa, modul surround, volumul și mute vin de la entitatea media player a receiverului, deci acestea se evidențiază. Curba Audyssey, slotul Dirac, dimmerul, modul eco și presetarea difuzoarelor nu sunt publicate de integrarea Denon, deci Home Assistant nu are cum să știe care este activă, iar butoanele rămân stinse până apăsați unul.
Pot afișa volumul real în dB în loc de procent?
Da. Home Assistant publică volume_level ca volumul principal al receiverului împărțit la 100, iar la receivere Denon și Marantz MV 80 este referința de 0 dB. Deci dB este egal cu volume_level înmulțit cu 100, minus 80. Un volume_level de 0.67 înseamnă volum principal 67, adică -13.0 dB.
Se vor potrivi ID-urile mele de entitate cu cele din acest ghid?
Structura da, partea din mijloc nu. AVR Maestro denumește scripturile după adresa MAC a receiverului, astfel încât o redenumire actualizează același script în loc să creeze un duplicat. Al dumneavoastră va arăta ca script.avr_maestro_ urmat de cele douăsprezece caractere proprii, apoi de numele controlului. Deschideți Developer Tools, apoi States în Home Assistant și filtrați după avr_maestro pentru a vedea lista dumneavoastră.
Mai multe din ghid

Alte ghiduri AVR Maestro

Primii pași · Ecranul principal · Scene · Pictograme personalizate · Sunet · Graphic EQ · Difuzoare · De ce este blocat un control · Asistentul · Automatizare Locuință · Zone · Telecomandă · Radio (FM/AM) · Afișaj pe ecran · Setări · Limbi · Comenzi de volum · Copie de rezervă & restaurare · Se redă acum & HEOS

Întreg receiverul dumneavoastră, pe un singur perete

Automatizare Locuință este singura deblocare plătită din AVR Maestro. Tot restul, inclusiv asistentul AI de pe dispozitiv, este inclus.

Descărcați de pe Google Play Descărcați din App Store Descărcați din Mac App Store Descărcați din Microsoft Store

Înapoi la Automatizare Locuință → · Ghidul complet de utilizare →