Dieci passaggi, il YAML di ogni scheda e una vista completa da incollare in un colpo solo. Realizzata e fotografata su un vero Marantz CINEMA 30. Cambia due stringhe e sarà tua.
Questa dashboard si alimenta da due fonti, e la differenza conta a ogni passaggio qui sotto.
| Proviene da | Ti dà |
|---|---|
| Gli script sincronizzati di AVR Maestro | Ogni controllo. Ingressi, modalità surround, Audyssey, Dirac, Smart Select, preset, dimmer, eco, le tue Scene. |
| L'entità media player dell'integrazione Denon AVR | Stato in tempo reale. Accensione, fonte selezionata, modalità surround, volume, muto. |
Tutte e quattro sono nello store HACS predefinito. In Home Assistant: HACS › Frontend › Esplora & scarica repository, cerca il nome, premi Scarica, poi ricarica il browser.
| Cerca | Serve per | Se la salti |
|---|---|---|
| Mushroom | Ogni riquadro di controllo e il cursore del volume | Usa una scheda button semplice. Funziona, ma ha un aspetto più squadrato. |
| button-card | Intestazioni di sezione con etichetta in tempo reale | Usa una scheda markdown, oppure semplici titoli. |
| card-mod | I colori e lo stato acceso del riquadro attivo | Tutto funziona comunque. Niente si illumina. |
| apexcharts-card | I grafici della cronologia | Usa la scheda history-graph integrata. |
Ogni frammento di questa pagina usa due segnaposto. Trovali una volta sola e il resto è copia e incolla.
media_player.your_receiver → Impostazioni › Dispositivi & servizi › il tuo ricevitore › l'entità media player. Qualcosa come media_player.marantz_cinema_30.script.avr_maestro_MAC_... → Strumenti per sviluppatori › Stati, e digita avr_maestro nel filtro delle entità. Compare l'intero elenco dei tuoi controlli.La parte centrale di ogni ID script è l'indirizzo MAC del tuo ricevitore, dodici caratteri minuscoli, uguali in tutti. Copialo una volta. Ovunque questa pagina scriva MAC, inserisci il tuo.
unavailable. Le versioni più vecchie davano agli script il nome del ricevitore invece del suo MAC. Se hai sincronizzato allora, quelli vecchi sono ancora in elenco e non funzionano più. Quelli attivi sono quelli con il nome basato sul MAC.Da qui in poi ogni passaggio è: aggiungi una sezione, poi incolla le schede al suo interno. Per incollare il YAML, usa il menu a tre puntini di una scheda e scegli Modifica in YAML, oppure il menu a tre puntini della dashboard per Editor di configurazione grezza e incolla tutto in una volta.
# 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
Parti dalla cosa più semplice della bacheca, così sai che i tuoi ID entità sono giusti prima di costruire qualcosa di complicato. Aggiungi una sezione, aggiungi una scheda, Modifica in YAML, incolla:
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. Nessun HACS necessario.
Toccalo. Se il ricevitore cambia, i tuoi ID sono giusti e tutto ciò che segue funzionerà. Se non succede nulla, torna al passaggio 2.
Questo è lo schema da imparare, e ogni riquadro di fonte e di surround della bacheca ne è una copia. La scheda invia uno script e si colora in base all'entità del ricevitore, così l'ingresso su cui sei davvero è acceso e gli altri no.

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 %}
}
Cambia tre cose per ogni ingresso: lo script, l'icona e la stringa con cui confronta.
Due cose da fare bene, altrimenti un riquadro non si accenderà mai:
source_list e sound_mode_list. Sono le stringhe esatte. Confronta in minuscolo, come sopra.Xbox, mentre il controllo di AVR Maestro si chiama ancora input_game1. Confronta con ciò che riporta il ricevitore, non con il nome dello script.Le modalità surround usano la stessa scheda con sound_mode al posto di source.
Un titolo semplice è spazio sprecato. Metti il valore in tempo reale sotto di esso e «Fonti» diventa «Fonti / Ora su 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
La griglia a due righe è ciò che mette l'etichetta sotto il titolo invece che accanto.
Sostituisci attributes.source con attributes.sound_mode nell'intestazione Surround, e così via.
Home Assistant riporta il volume come frazione. Nessuno imposta un ricevitore su «0.67». Una riga di matematica risolve il problema e l'intera sezione comincia a leggersi come un ricevitore.

volume_level come volume principale diviso per 100, e sui ricevitori Denon e Marantz MV 80 è il riferimento a 0 dB. Quindi dB = volume_level × 100 − 80. Un volume_level di 0.67 corrisponde a un volume principale di 67, cioè −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
Leggi il nome dallo script invece di scriverlo, e rinominare una Scena in AVR Maestro rinomina il riquadro senza modificare la dashboard.

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
Le due chiamate replace() tolgono il prefisso e il nome del ricevitore dal nome descrittivo.
Una seconda riga vale il minuto in più. Un muro di pulsanti dai nomi suggestivi non ti dice nulla alle 11 di sera; una riga che spiega cosa ripristina ciascuno ti dice quale premere.
L'entità media player del ricevitore viene registrata da Home Assistant come qualsiasi altra, quindi ottieni gratis una cronologia di ascolto. Tutto ciò che segue proviene da quella sola entità: nessun sensore aggiuntivo, nessun helper, nulla da configurare prima.

La semplice timeline degli stati non richiede alcuna scheda personalizzata, ed è quella che vale di più:
type: history-graph
hours_to_show: 168
entities:
- entity: media_player.your_receiver
name: Receiver
Acceso, spento e cosa stava facendo, nell'arco di una settimana.
Il volume in dB usa la stessa conversione del passaggio 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 con fill: last trasforma eventi sparsi in una linea continua. L'asse y deve andare in apex_config per avere effetto.
Una media e un picco giornalieri trasformano una linea frastagliata in qualcosa con una forma:
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'; }"
Due serie dallo stesso attributo, raggruppate per giorno.
fill: 'null' significa che un giorno senza letture non ha alcuna barra, invece di riportare quella del giorno prima.E i due che rispondono a «su cosa guardo davvero, e in quale modalità»: fonte e modalità surround, tracciate come una timeline di quale era selezionata.
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'; }
Inserisci le tue fonti nell'array transform e in entrambi gli array dei formattatori. Mantieni l'indice 0 come «Altro».
L'asse di un grafico richiede numeri, quindi transform associa ogni nome di fonte a una posizione e i formattatori la riconvertono per le etichette e il tooltip. Rendi la mappatura totale: null (ricevitore spento) resta un vuoto, e tutto ciò che non è nel tuo elenco finisce in «Altro», così i due non possono mai essere confusi. La stessa scheda con sound_mode ti dà la modalità surround, con le stringhe in maiuscolo esattamente come le riporta il tuo ricevitore.
stepline su questi ultimi due. Una fonte o una modalità surround è una categoria, non un numero. Se smussi la curva, la linea oscilla tra Shield e Xbox attraverso tutto ciò che sta in mezzo sull'asse, disegnando un ingresso che non è mai stato selezionato. Il volume è una grandezza reale e si smussa onestamente; una categoria no.state_class: measurement, che Home Assistant conserva come statistiche a lungo termine per anni.La vista completa, ogni sezione e ogni scheda, con segnaposto al posto degli ID entità.
YOUR_RECEIVER con il nome della tua entità media player, e YOURMAC con i dodici caratteri del tuo ricevitore dal passaggio 2.Prima di pensare di aver sbagliato qualcosa: alcuni non possono accendersi, ed è utile sapere quali.
Un riquadro può mostrare il suo stato solo se Home Assistant riesce a leggerlo, e legge il tuo ricevitore da due posti. L'integrazione Denon AVR pubblica le informazioni di base sull'entità media player. AVR Maestro pubblica il resto: crea un sensore Status Bridge, sensor.avr_maestro_your_receiver, e vi scrive come attributi le letture che già possiede.
| Sull'entità media player | Sul sensore Status Bridge |
|---|---|
| Accensione | Curva Audyssey MultEQ |
| Fonte selezionata | Dynamic Volume e livello di riferimento |
| Modalità surround | Quale slot Dirac è caricato |
| Volume e muto | Dimmer del pannello frontale, modalità Eco |
| Dynamic EQ, a volte | Preset dei diffusori, tono e decine di altri |
Ora entrambe le colonne sono leggibili. Prendi un valore del media player da states['media_player.your_receiver'].attributes e un valore dello Status Bridge con state_attr('sensor.avr_maestro_your_receiver','dirac_slot'), così un riquadro si accende per l'impostazione davvero attiva invece di limitarsi a eseguire lo script che la cambia.
Misurato sul ricevitore su cui è stato costruito: l'entità media player porta circa venti dei sessanta controlli, e il sensore Status Bridge ne pubblica circa quaranta in più. Tra i due, una dashboard può leggere quasi tutto ciò che può cambiare - la differenza tra un muro di pulsanti e una superficie di controllo.
true, false oppure non arriva affatto. Trattare «non arriva affatto» come «off» mette sul tuo muro una risposta sbagliata e sicura di sé.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 %}
Tre stati, non due.
grid_options: {columns: 9}. Per sei in fila, 6.media_controls con on_off al suo interno. Imposta media_controls: [].multiline_secondary: true.experimental.color_threshold. Disegna il tratto come gradiente verticale, e un segmento perfettamente orizzontale ha altezza zero su cui sfumare, quindi risulta invisibile. Una sessione di 43 ore a un solo volume è sparita del tutto. Usa un color pieno.
Per iniziare · Schermata Home · Scene · Icone personalizzate · Audio · Graphic EQ · Diffusori · Perché un controllo è bloccato · L'assistente · Automazione domestica · Zone · Telecomando · Radio (FM/AM) · Display su schermo · Impostazioni · Lingue · Controlli del volume · Backup & ripristino · In riproduzione & HEOS
Automazione domestica è l'unico sblocco a pagamento in AVR Maestro. Tutto il resto, compreso l'assistente AI sul dispositivo, è incluso.