Tien stappen, de YAML van elke kaart en een complete weergave die je in één keer plakt. Gebouwd en gefotografeerd op een echte Marantz CINEMA 30. Pas twee teksten aan en het is van jou.
Twee bronnen voeden dit dashboard, en het verschil doet er bij elke stap hieronder toe.
| Komt van | Levert |
|---|---|
| De gesynchroniseerde scripts van AVR Maestro | Elke bediening. Ingangen, surroundmodi, Audyssey, Dirac, Smart Selects, presets, dimmer, eco, je Scènes. |
| De mediaspeler-entiteit van de Denon AVR-integratie | Live status. Aan/uit, gekozen bron, surroundmodus, volume, demping. |
Alle vier staan in de standaard HACS-winkel. In Home Assistant: HACS › Frontend › Verkennen & repositories downloaden, zoek de naam, kies Downloaden en laad daarna je browser opnieuw.
| Zoek naar | Gebruikt voor | Als je het overslaat |
|---|---|---|
| Mushroom | Elke bedieningstegel en de volumeschuif | Gebruik een gewone button-kaart. Werkt, ziet er hoekiger uit. |
| button-card | Sectiekoppen met een live label | Gebruik een markdown-kaart, of gewone koppen. |
| card-mod | De kleuren en de verlichte status van de actieve tegel | Alles werkt nog steeds. Er licht alleen niets op. |
| apexcharts-card | De geschiedenisgrafieken | Gebruik de ingebouwde history-graph-kaart. |
Elk fragment op deze pagina gebruikt twee plaatshouders. Zoek de jouwe één keer op en de rest is kopiëren en plakken.
media_player.your_receiver → Instellingen › Apparaten & services › je receiver › de mediaspeler-entiteit. Zoiets als media_player.marantz_cinema_30.script.avr_maestro_MAC_... → Ontwikkelaarstools › Statussen, en typ avr_maestro in het entiteitsfilter. Je hele bedieningslijst verschijnt.Het middenstuk van elke script-ID is het MAC-adres van je receiver, twaalf kleine letters, bij alle scripts hetzelfde. Kopieer het één keer. Overal waar deze pagina MAC schrijft, vul je het jouwe in.
unavailable in staat. Oudere builds gaven scripts een naam naar de naam van de receiver in plaats van het MAC-adres. Als je toen hebt gesynchroniseerd, staan die oudere nog in de lijst en zijn ze dood. De werkende zijn die met het MAC-adres in de naam.Vanaf hier is elke stap: een sectie toevoegen en er kaarten in plakken. Om YAML te plakken, gebruik je het menu met drie puntjes op een kaart en kies je Bewerken in YAML, of het menu met drie puntjes van het dashboard voor de Ruwe configuratie-editor om alles in één keer te plakken.
# 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
Begin met het eenvoudigste ding op het bord, zodat je weet dat je entiteits-ID's kloppen voordat je iets ingewikkelds bouwt. Voeg een sectie toe, voeg een kaart toe, kies Bewerken in YAML en plak:
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
Standaard Home Assistant. Geen HACS nodig.
Tik erop. Als de receiver reageert, kloppen je ID's en werkt alles hieronder. Gebeurt er niets, ga dan terug naar stap 2.
Dit is het patroon dat het leren waard is, en elke bron- en surroundtegel op het bord is er een kopie van. De kaart verstuurt een script en kleurt zichzelf op basis van de receiver-entiteit, zodat de ingang waarop je echt zit oplicht en de andere niet.

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 %}
}
Pas per ingang drie dingen aan: het script, het pictogram en de tekst waarmee wordt vergeleken.
Let op twee dingen, anders licht een tegel nooit op:
source_list en sound_mode_list. Dat zijn de exacte teksten. Vergelijk in kleine letters, zoals hierboven.Xbox, terwijl de AVR Maestro-bediening nog steeds input_game1 heet. Vergelijk met wat de receiver meldt, niet met de scriptnaam.Surroundmodi zijn dezelfde kaart met sound_mode in plaats van source.
Een kale titel is verspilde ruimte. Zet de live waarde eronder en “Bronnen” wordt “Bronnen / Nu op 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
Het raster met twee regels zorgt ervoor dat het label onder de titel staat in plaats van ernaast.
Vervang attributes.source door attributes.sound_mode in de Surround-kop, enzovoort.
Home Assistant meldt volume als een breuk. Niemand zet een receiver op “0.67”. Eén regel rekenwerk lost het op en de hele sectie begint als een receiver te lezen.

volume_level als hoofdvolume gedeeld door 100, en op Denon- en Marantz-receivers is MV 80 de referentie van 0 dB. Dus dB = volume_level × 100 − 80. Een volume_level van 0.67 is hoofdvolume 67, en dat is −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
Lees de naam uit het script in plaats van hem te typen, en als je een Scène in AVR Maestro hernoemt, krijgt de tegel meteen die naam zonder dat je het dashboard hoeft aan te passen.

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 twee replace()-aanroepen halen het voorvoegsel en de naam van de receiver uit de beschrijvende naam.
Een tweede regel is die extra minuut waard. Een muur van fraai benoemde knoppen zegt je niets om 11 uur in de avond; een regel die zegt wat elke knop herstelt, vertelt je welke je moet indrukken.
De mediaspeler-entiteit van de receiver wordt door Home Assistant vastgelegd zoals elke andere, dus je krijgt gratis een luistergeschiedenis. Alles hieronder komt van die ene entiteit: geen extra sensoren, geen hulpmiddelen, niets om eerst te configureren.

De gewone statustijdlijn heeft helemaal geen aangepaste kaarten nodig en is degene die het meest de moeite waard is:
type: history-graph
hours_to_show: 168
entities:
- entity: media_player.your_receiver
name: Receiver
Aan, uit en wat hij deed, over een week.
Volume in dB gebruikt dezelfde omrekening als stap 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 met fill: last maakt van losse gebeurtenissen een doorlopende lijn. De y-as moet in apex_config staan om effect te hebben.
Een daggemiddelde en piek maakt van een grillige lijn iets met een vorm:
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'; }"
Twee reeksen van hetzelfde attribuut, per dag gegroepeerd.
fill: 'null' betekent dat een dag zonder metingen geen balk krijgt, in plaats van de waarde van gisteren over te nemen.En de twee die antwoord geven op “waarop kijk ik eigenlijk, en in welke modus”: bron en surroundmodus, geplot als tijdlijn van wat er gekozen was.
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'; }
Zet je eigen bronnen in de transform-array en in beide formatter-arrays. Houd index 0 als “Overig”.
Een grafiekas heeft getallen nodig, dus de transform koppelt elke bronnaam aan een positie en de formatters koppelen die terug voor de labels en de tooltip. Maak de koppeling totaal: null (receiver uit) blijft een gat, en alles wat niet in je lijst staat valt onder “Overig”, zodat de twee nooit door elkaar kunnen worden gehaald. Dezelfde kaart met sound_mode geeft je de surroundmodus, met de teksten in hoofdletters precies zoals je receiver ze meldt.
stepline aan bij die laatste twee. Een bron of een surroundmodus is een categorie, geen getal. Maak de curve glad en de lijn zwiept tussen Shield en Xbox door alles wat er op de as tussen zit, en tekent zo een ingang die nooit gekozen was. Volume is een echte grootheid en kan eerlijk worden afgevlakt; een categorie niet.state_class: measurement-sjabloonsensor nodig, die Home Assistant jarenlang als langetermijnstatistiek bewaart.De complete weergave, elke sectie en elke kaart, met plaatshouders in plaats van entiteits-ID's.
YOUR_RECEIVER door de naam van je mediaspeler-entiteit, en YOURMAC door de twaalf tekens van je receiver uit stap 2.Voordat je denkt dat je het verkeerd hebt gebouwd: sommige kunnen niet oplichten, en het is goed om te weten welke.
Een tegel kan alleen zijn status tonen als Home Assistant die kan lezen, en je receiver wordt op twee plaatsen uitgelezen. De Denon AVR-integratie publiceert de basis op de mediaspeler-entiteit. AVR Maestro publiceert de rest: het maakt een Status Bridge-sensor, sensor.avr_maestro_your_receiver, en schrijft de metingen die het al heeft als attributen daarop weg.
| Op de mediaspeler-entiteit | Op de Status Bridge-sensor |
|---|---|
| Aan/uit | Audyssey MultEQ-curve |
| Gekozen bron | Dynamic Volume en referentieniveau |
| Surroundmodus | Welk Dirac-slot is geladen |
| Volume en demping | Dimmer voorpaneel, Eco-modus |
| Dynamic EQ, soms | Speaker Preset, toon en tientallen meer |
Beide kolommen zijn nu leesbaar. Haal een mediaspelerwaarde op met states['media_player.your_receiver'].attributes, en een Status Bridge-waarde met state_attr('sensor.avr_maestro_your_receiver','dirac_slot'), zodat een tegel oplicht voor de instelling die echt actief is in plaats van alleen het script te starten dat hem wijzigt.
Gemeten op de receiver waarop dit is gebouwd: de mediaspeler-entiteit bevat ongeveer twintig van de zestig bedieningen, en de Status Bridge-sensor publiceert er ruwweg veertig meer. Samen kan een dashboard bijna alles lezen wat het kan wijzigen - het verschil tussen een muur van knoppen en een bedieningspaneel.
true, false, of helemaal niet. “Helemaal niet” behandelen als “uit” zet een stellig fout antwoord op je muur.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 %}
Drie toestanden, niet twee.
grid_options: {columns: 9} in. Voor zes naast elkaar 6.media_controls met on_off erin. Stel media_controls: [] in.multiline_secondary: true toe.experimental.color_threshold. Het tekent de lijn als een verticaal verloop, en een volkomen horizontaal segment heeft geen hoogte om een verloop over te leggen, dus het wordt onzichtbaar. Een sessie van 43 uur op één volume verdween helemaal. Gebruik een effen color.
Aan de slag · Startscherm · Scènes · Aangepaste pictogrammen · Geluid · Grafische EQ · Luidsprekers · Waarom een bediening vergrendeld is · De assistent · Domotica · Zones · Afstandsbediening · Radio (FM/AM) · Schermweergave · Instellingen · Talen · Volumebediening · Back-up & herstel · Nu aan het spelen & HEOS
Domotica is de enige betaalde ontgrendeling in AVR Maestro. Al het andere, inclusief de AI-assistent op het apparaat, is inbegrepen.