Home Assistant · passo dopo passo

Crea questa dashboard di Home Assistant in circa un'ora

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.

La dashboard finita: un riquadro principale con la riproduzione in corso, il volume con preset in dB, una griglia di fonti, modalità surround, correzione ambientale, scene e un grafico del volume
Cosa stai costruendo
Hai fretta? Vai al passaggio 10, scarica la vista completa, cambia due stringhe e incollala. I passaggi intermedi spiegano cosa fa ogni elemento, così puoi modificarlo.

Prima di iniziare

Questa dashboard si alimenta da due fonti, e la differenza conta a ogni passaggio qui sotto.

Proviene daTi dà
Gli script sincronizzati di AVR MaestroOgni controllo. Ingressi, modalità surround, Audyssey, Dirac, Smart Select, preset, dimmer, eco, le tue Scene.
L'entità media player dell'integrazione Denon AVRStato in tempo reale. Accensione, fonte selezionata, modalità surround, volume, muto.
Passaggio 1

Installa quattro schede da HACS

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.

CercaServe perSe la salti
MushroomOgni riquadro di controllo e il cursore del volumeUsa una scheda button semplice. Funziona, ma ha un aspetto più squadrato.
button-cardIntestazioni di sezione con etichetta in tempo realeUsa una scheda markdown, oppure semplici titoli.
card-modI colori e lo stato acceso del riquadro attivoTutto funziona comunque. Niente si illumina.
apexcharts-cardI grafici della cronologiaUsa la scheda history-graph integrata.
Nessuna è obbligatoria per farlo funzionare. Ogni controllo qui sotto funziona con una normale scheda pulsante di Home Assistant che punta allo stesso script. Le schede personalizzate sono trucco, non impianto.
Passaggio 2

Trova i tuoi due ID entità

Ogni frammento di questa pagina usa due segnaposto. Trovali una volta sola e il resto è copia e incolla.

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.

Ignora quelli che riportano 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.
Passaggio 3

Crea la vista

  1. 1. Impostazioni › Dashboard › Aggiungi dashboard › Nuova dashboard da zero. Chiamala come vuoi.
  2. 2. Aprila, poi tocca l'icona della matita in alto a destra per modificare.
  3. 3. Aggiungi una vista e scegli il layout Sezioni. Non Masonry. Sezioni è ciò che le permette di adattarsi correttamente sul telefono.
  4. 4. Nelle impostazioni della vista, imposta Colonne massime su 3 e attiva Posizionamento denso delle sezioni.

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
Passaggio 4

Aggiungi un controllo

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.

Passaggio 5

Fai in modo che si illumini quando è quello attivo

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.

La griglia delle fonti con Nvidia Shield acceso in arancione e gli altri dodici ingressi spenti
Un riquadro acceso, dodici spenti
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:

Le modalità surround usano la stessa scheda con sound_mode al posto di source.

Passaggio 6

Dai a ogni sezione un'intestazione in tempo reale

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.

Passaggio 7

Mostra il volume in dB

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.

La sezione del volume: un cursore, su, giù, muto e quattro preset in dB
Notte, Dialogo, Film e Forte, ciascuno con l'indicazione dei dB che imposta
La conversione. Home Assistant pubblica 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
Scegli con attenzione il preset più alto. L'insieme qui sopra si ferma a −10 dB. Una dashboard si tocca per errore molto più facilmente di un telecomando, e il livello di riferimento su un ricevitore grande è davvero forte.
Passaggio 8

Aggiungi le tue Scene

Leggi il nome dallo script invece di scriverlo, e rinominare una Scena in AVR Maestro rinomina il riquadro senza modificare la dashboard.

Quattro riquadri di scena, ciascuno con l'elenco delle impostazioni che quella scena ripristina
Ogni riquadro dice cosa ripristina davvero la sua scena
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.

Passaggio 9

Aggiungi la cronologia

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.

Cinque grafici della cronologia: accensione e attività, volume principale in dB, volume per giorno, fonte in uso e modalità surround
Cinque grafici, un'entità, sette giorni

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.

Perché questo grafico traccia da 0 a 80 e formatta in dB, invece di tracciare i dB. Le barre crescono dalla base dell'asse. Se tracci direttamente i dB, ogni barra pende da 0, quindi una barra lunga significa silenzio, che si legge al contrario. Traccia il valore grezzo del volume principale e sottrai 80 nei formattatori dell'asse e del tooltip: le barre crescono verso l'alto e tutto ciò che vede chi legge è comunque in dB. 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.

Mantieni 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.
Controlla prima la conservazione del recorder. Home Assistant conserva dieci giorni per impostazione predefinita, quindi sette giorni è il massimo che puoi chiedere con profitto. Per andare più indietro serve un sensore template state_class: measurement, che Home Assistant conserva come statistiche a lungo termine per anni.
Un giorno mancante di solito è corretto. Home Assistant registra i cambiamenti, non i campioni. Lascia il ricevitore su un ingresso a un volume per due giorni e non scrive nulla, quindi quel giorno non ha barra. Sembra una perdita di dati ed è l'opposto: non è successo niente.
Passaggio 10

Oppure prendi tutto quanto

La vista completa, ogni sezione e ogni scheda, con segnaposto al posto degli ID entità.

  1. 1. Scarica il YAML della vista.
  2. 2. Aprilo in un editor di testo qualsiasi e sostituisci due stringhe, ovunque compaiano: YOUR_RECEIVER con il nome della tua entità media player, e YOURMAC con i dodici caratteri del tuo ricevitore dal passaggio 2.
  3. 3. In Home Assistant apri la tua dashboard, icona della matita, menu a tre puntini, Editor di configurazione grezza, e incollalo come vista.
I tuoi ID delle Scene non corrisponderanno. Gli script delle scene prendono il nome dal momento in cui la Scena è stata creata, quindi le quattro del file non esistono nel tuo sistema: quelle schede verranno mostrate ma non faranno nulla. Sostituisci i loro ID entità con i tuoi dal passaggio 2, oppure elimina la sezione Scene e ricostruiscila con il passaggio 8.
Altre due cose da aspettarsi. I grafici di fonte e surround contengono i nomi delle fonti del ricevitore su cui è stato costruito, quindi modifica quegli array come descritto nel passaggio 9. Inoltre le etichette dei riquadri sono in inglese; nel file non è tradotto nulla.

Se un riquadro non si accende mai

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 playerSul sensore Status Bridge
AccensioneCurva Audyssey MultEQ
Fonte selezionataDynamic Volume e livello di riferimento
Modalità surroundQuale slot Dirac è caricato
Volume e mutoDimmer del pannello frontale, modalità Eco
Dynamic EQ, a voltePreset 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.

Se un valore può significare due cose, dillo. Dynamic EQ arriva come 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.

Altre cose da sapere

La stessa dashboard con la larghezza di un telefono, riorganizzata in una sola colonna
La stessa dashboard con la larghezza di un telefono: le tre colonne diventano una, e non è stato configurato nulla perché accada
Domande frequenti

La dashboard, in risposta alle domande

Mi servono schede personalizzate da HACS per crearla?
Non per farla funzionare. Ogni controllo di questa pagina funziona con una semplice scheda pulsante di Home Assistant. Mushroom, button-card, card-mod e apexcharts-card sono ciò che le dà l'aspetto visto negli screenshot, e ogni sezione qui sotto indica quale usa e cosa perdi senza.
Perché alcuni pulsanti si illuminano e altri no?
Un pulsante si accende quando Home Assistant riesce a leggere dal tuo ricevitore lo stato corrispondente. Fonte, modalità surround, volume e muto arrivano dall'entità media player del ricevitore stesso, quindi vengono evidenziati. Curva Audyssey, slot Dirac, dimmer, modalità eco e preset dei diffusori non sono pubblicati dall'integrazione Denon, quindi Home Assistant non ha modo di sapere quale sia attivo e i pulsanti restano spenti finché non ne tocchi uno.
Posso mostrare il volume reale in dB invece di una percentuale?
Sì. Home Assistant pubblica volume_level come volume principale del ricevitore diviso per 100, e sui ricevitori Denon e Marantz MV 80 è il riferimento a 0 dB. Quindi dB è uguale a volume_level per 100, meno 80. Un volume_level di 0.67 corrisponde a un volume principale di 67, cioè -13.0 dB.
I miei ID entità corrisponderanno a quelli di questa guida?
Lo schema sì, la parte centrale no. AVR Maestro assegna agli script il nome basato sull'indirizzo MAC del ricevitore, così una ridenominazione aggiorna lo stesso script invece di duplicarlo. Il tuo sarà script.avr_maestro_ seguito dai tuoi dodici caratteri, poi dal nome del controllo. Apri Strumenti per sviluppatori, poi Stati in Home Assistant, e filtra per avr_maestro per vedere il tuo elenco.
Altre parti della guida

Altre guide di AVR Maestro

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

Tutto il tuo ricevitore, su un'unica parete

Automazione domestica è l'unico sblocco a pagamento in AVR Maestro. Tutto il resto, compreso l'assistente AI sul dispositivo, è incluso.

Scaricalo su Google Play Scarica dall'App Store Scarica dal Mac App Store Scaricalo dal Microsoft Store

Torna ad Automazione domestica → · Guida utente completa →