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ă.
Două surse alimentează acest panou de control, iar diferența contează la fiecare pas de mai jos.
| Provine din | Vă oferă |
|---|---|
| Scripturile sincronizate de AVR Maestro | Fiecare control. Intrări, moduri surround, Audyssey, Dirac, Smart Select, presetări, dimmer, eco, Scenele dumneavoastră. |
| Entitatea media player a integrării Denon AVR | Starea în timp real. Alimentare, sursa selectată, mod surround, volum, mute. |
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ți | Folosit pentru | Dacă îl omiteți |
|---|---|---|
| Mushroom | Fiecare tilă de control și glisorul de volum | Folosiți un card simplu button. Funcționează, dar arată mai pătrățos. |
| button-card | Antete de secțiune cu o etichetă în timp real | Folosiți un card markdown sau titluri simple. |
| card-mod | Culorile și starea aprinsă a tilei active | Totul funcționează în continuare. Nimic nu se aprinde. |
| apexcharts-card | Graficele de istoric | Folosiți cardul history-graph încorporat. |
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.
media_player.your_receiver → Setări › Dispozitive & servicii › receiverul dumneavoastră › entitatea media player. Ceva de genul media_player.marantz_cinema_30.script.avr_maestro_MAC_... → Instrumente pentru dezvoltatori › Stări, apoi scrieți avr_maestro în filtrul de entități. Apare întreaga listă de comenzi.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ă.
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.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
Î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.
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.

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ă:
source_list și sound_mode_list. Acestea sunt șirurile exacte. Comparați cu litere mici, ca mai sus.Xbox, în timp ce controlul AVR Maestro se numește în continuare input_game1. Potriviți după ce raportează receiverul, nu după numele scriptului.Modurile surround sunt același card, cu sound_mode în locul lui source.
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.
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.

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
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.

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.
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.

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.
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ă.
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.state_class: measurement, pe care Home Assistant îl păstrează ca statistici pe termen lung timp de ani.Vizualizarea completă, fiecare secțiune și fiecare card, cu substituenți în loc de ID-uri de entitate.
YOUR_RECEIVER cu numele entității media player și YOURMAC cu cele douăsprezece caractere ale receiverului dumneavoastră de la pasul 2.Î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 player | Pe senzorul Status Bridge |
|---|---|
| Alimentare | Curba Audyssey MultEQ |
| Sursa selectată | Dynamic Volume și nivelul de referință |
| Mod surround | Care slot Dirac este încărcat |
| Volum și mute | Dimmerul panoului frontal, modul Eco |
| Dynamic EQ, uneori | Presetarea 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.
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ă.
grid_options: {columns: 9}. Pentru șase pe un rând, 6.media_controls cu on_off în el. Setați media_controls: [].multiline_secondary: true.experimental.color_threshold. Acesta desenează linia ca un gradient vertical, iar un segment perfect orizontal are înălțime zero pentru gradient, deci se afișează invizibil. O sesiune de 43 de ore la un singur volum a dispărut complet. Folosiți un color uniform.
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
Automatizare Locuință este singura deblocare plătită din AVR Maestro. Tot restul, inclusiv asistentul AI de pe dispozitiv, este inclus.
Înapoi la Automatizare Locuință → · Ghidul complet de utilizare →