Ti steg, YAML for hvert eneste kort og en komplett visning du kan lime inn i én omgang. Bygget og fotografert på en ekte Marantz CINEMA 30. Bytt ut to tekststrenger, så er det ditt.
To ting mater dette dashbordet, og forskjellen har betydning i hvert eneste steg nedenfor.
| Kommer fra | Gir deg |
|---|---|
| AVR Maestros synkroniserte skript | Hver eneste kontroll. Innganger, surroundmoduser, Audyssey, Dirac, Smart Selects, presets, dimmer, eco og scenene dine. |
| Mediespiller-entiteten til Denon AVR-integrasjonen | Live-status. Strøm, valgt kilde, surroundmodus, volum, demping. |
Alle fire finnes i standard HACS-butikken. I Home Assistant: HACS › Frontend › Explore & Download Repositories, søk etter navnet, trykk Download, og last deretter nettleseren på nytt.
| Søk etter | Brukes til | Hvis du hopper over det |
|---|---|---|
| Mushroom | Alle kontrollfliser og volumglidebryteren | Bruk et vanlig button-kort. Fungerer, men ser mer kantete ut. |
| button-card | Seksjonsoverskrifter med en live-etikett | Bruk et markdown-kort, eller vanlige overskrifter. |
| card-mod | Fargene og den opplyste tilstanden på den aktive flisen | Alt fungerer fortsatt. Ingenting lyser. |
| apexcharts-card | Historikkgrafene | Bruk det innebygde history-graph-kortet. |
Hvert utdrag på denne siden bruker to plassholdere. Finn dine én gang, så er resten kopier og lim inn.
media_player.your_receiver → Innstillinger › Enheter & tjenester › mottakeren din › medieavspillerenheten. Noe slikt som media_player.marantz_cinema_30.script.avr_maestro_MAC_... → Utviklerverktøy › Tilstander, og skriv avr_maestro i enhetsfilteret. Hele kontrolllisten din vises.Midtdelen av hver skript-ID er mottakerens MAC-adresse, tolv små bokstaver, lik på alle. Kopier den én gang. Overalt der denne siden skriver MAC, setter du inn din.
unavailable. Eldre versjoner ga skriptene navn etter mottakerens navn i stedet for MAC-adressen. Hvis du synkroniserte den gangen, står de eldre fortsatt i listen og er døde. De levende er de som er oppkalt etter MAC-adressen.Fra nå av er hvert steg slik: legg til en seksjon, og lim deretter kort inn i den. For å lime inn YAML bruker du trepunktsmenyen på et kort og velger Edit in YAML, eller trepunktsmenyen på dashbordet for Raw configuration editor for å lime inn alt på én gang.
# 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
Begynn med det enkleste på brettet, slik at du vet at entitets-ID-ene dine er riktige før du bygger noe komplisert. Legg til en seksjon, legg til et kort, Edit in YAML, lim inn:
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
Standard Home Assistant. Ingen HACS nødvendig.
Trykk på den. Hvis mottakeren endrer seg, er ID-ene dine riktige og alt nedenfor kommer til å fungere. Hvis ingenting skjer, gå tilbake til steg 2.
Dette er mønsteret det er verdt å lære, og hver kilde- og surroundflis på brettet er en kopi av det. Kortet sender et skript og farger seg selv ut fra mottakerentiteten, slik at inngangen du faktisk står på lyser, og de andre ikke gjør det.

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 %}
}
Endre tre ting per inngang: skriptet, ikonet og tekststrengen den sammenlignes med.
To ting må være riktige, ellers lyser aldri flisen:
source_list og sound_mode_list. Det er de nøyaktige tekststrengene. Sammenlign med små bokstaver, som ovenfor.Xbox, mens AVR Maestro-kontrollen fortsatt heter input_game1. Match på det mottakeren rapporterer, ikke på skriptnavnet.Surroundmoduser er det samme kortet med sound_mode i stedet for source.
En vanlig tittel er bortkastet plass. Sett den levende verdien under den, så blir «Kilder» til «Kilder / Nå på 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
Totrinnsrutenettet er det som plasserer etiketten under tittelen i stedet for ved siden av.
Bytt attributes.source med attributes.sound_mode i Surround-overskriften, og så videre.
Home Assistant rapporterer volum som en brøk. Ingen setter en mottaker til «0.67». Én linje med matte fikser det, og hele seksjonen begynner å se ut som en mottaker.

volume_level som hovedvolum delt på 100, og på Denon- og Marantz-mottakere er MV 80 referansen for 0 dB. Altså er dB = volume_level × 100 − 80. Et volume_level på 0.67 er hovedvolum 67, som er −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
Les navnet fra skriptet i stedet for å skrive det inn, så endrer flisen navn automatisk når du gir en scene nytt navn i AVR Maestro, uten at dashbordet må redigeres.

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
De to replace()-kallene fjerner prefikset og mottakernavnet fra det vennlige navnet.
En andre linje er verdt det ekstra minuttet. En vegg av knapper med fargerike navn sier deg ingenting klokken 11 om kvelden; en linje som sier hva hver enkelt gjenoppretter, forteller deg hvilken du skal trykke på.
Mottakerens mediespiller-entitet registreres av Home Assistant som alle andre, så du får en lyttehistorikk gratis. Alt nedenfor kommer fra den ene entiteten: ingen ekstra sensorer, ingen hjelpere, ingenting som må konfigureres først.

Den vanlige tilstandstidslinjen trenger ingen egendefinerte kort i det hele tatt, og er den som er mest verdt å ha:
type: history-graph
hours_to_show: 168
entities:
- entity: media_player.your_receiver
name: Receiver
På, av og hva den holdt på med, over en uke.
Volum i dB bruker samme omregning som i steg 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 med fill: last gjør spredte hendelser om til en sammenhengende linje. Y-aksen må settes i apex_config for å få effekt.
Et daglig gjennomsnitt og en topp gjør en takkete linje om til noe med 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'; }"
To serier fra samme attributt, gruppert per dag.
fill: 'null' betyr at en dag uten målinger ikke får noen søyle, i stedet for gårsdagens verdi videreført.Og de to som svarer på «hva ser jeg faktisk på, og i hva»: kilde og surroundmodus, plottet som en tidslinje over hvilken som var valgt.
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'; }
Sett inn dine egne kilder i transform-arrayen og i begge formatter-arrayene. Behold indeks 0 som «Other».
En diagramakse trenger tall, så transform tilordner hvert kildenavn en posisjon, og formaterne tilordner det tilbake for etikettene og verktøytipset. Gjør tilordningen total: null (mottaker av) forblir et hull, og alt som ikke står i listen din havner i «Other», slik at de to aldri kan forveksles. Det samme kortet igjen med sound_mode gir deg surroundmodus, med tekststrengene i store bokstaver nøyaktig slik mottakeren din rapporterer dem.
stepline på de to siste. En kilde eller en surroundmodus er en kategori, ikke et tall. Glatt ut kurven, så svinger linjen mellom Shield og Xbox gjennom det som ligger mellom dem på aksen, og tegner en inngang som aldri ble valgt. Volum er en reell størrelse og kan glattes ærlig; en kategori kan ikke.state_class: measurement-malsensor, som Home Assistant beholder som langtidsstatistikk i årevis.Den komplette visningen, hver seksjon og hvert kort, med plassholdere i stedet for entitets-ID-er.
YOUR_RECEIVER med navnet på mediespiller-entiteten din, og YOURMAC med mottakerens tolv tegn fra steg 2.Før du antar at du har bygget feil: noen av dem kan ikke lyse, og det er verdt å vite hvilke.
En flis kan bare vise tilstanden sin hvis Home Assistant kan lese den, og den leser mottakeren din fra to steder. Denon AVR-integrasjonen publiserer grunnleggende ting på mediespiller-entiteten. AVR Maestro publiserer resten: den oppretter en Status Bridge-sensor, sensor.avr_maestro_your_receiver, og skriver målingene den allerede har til den som attributter.
| På mediespiller-entiteten | På Status Bridge-sensoren |
|---|---|
| Strøm | Audyssey MultEQ-kurve |
| Valgt kilde | Dynamic Volume og referansenivå |
| Surroundmodus | Hvilken Dirac-plass som er lastet |
| Volum og demping | Dimmer for frontpanel, Eco-modus |
| Dynamic EQ, noen ganger | Høyttalerpreset, tone og dusinvis til |
Begge kolonnene kan leses nå. Hent en mediespillerverdi fra states['media_player.your_receiver'].attributes, og en Status Bridge-verdi med state_attr('sensor.avr_maestro_your_receiver','dirac_slot'), slik at en flis lyser for innstillingen som faktisk er aktiv i stedet for bare å kjøre skriptet som endrer den.
Målt på mottakeren dette ble bygget på: mediespiller-entiteten har omtrent tjue av de seksti kontrollene, og Status Bridge-sensoren publiserer omtrent førti til. Mellom de to kan et dashbord lese nesten alt det kan endre - forskjellen mellom en vegg av knapper og en kontrollflate.
true, false, eller ikke i det hele tatt. Å behandle «ikke i det hele tatt» som «av» setter et selvsikkert, feil svar på veggen din.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 tilstander, ikke to.
grid_options: {columns: 9}. For seks på tvers, 6.media_controls med on_off i seg. Sett media_controls: [].multiline_secondary: true.experimental.color_threshold. Den tegner streken som en vertikal gradient, og et helt vannrett segment har null høyde å lage gradient over, så det blir usynlig. En økt på 43 timer med ett volum forsvant helt. Bruk en solid color.
Kom i gang · Startskjerm · Scener · Egendefinerte ikoner · Lyd · Grafisk EQ · Høyttalere · Hvorfor en kontroll er låst · Assistenten · Hjemmeautomatisering · Soner · Fjernkontroll · Radio (FM/AM) · Skjermmeny · Innstillinger · Språk · Volumkontroller · Sikkerhetskopi & gjenoppretting · Spilles nå & HEOS
Hjemmeautomatisering er den eneste betalte opplåsingen i AVR Maestro. Alt annet, inkludert AI-assistenten på enheten, er inkludert.
Tilbake til Hjemmeautomatisering → · Hele brukerveiledningen →