Home › Gebruikershandleiding › Domotica › Dashboard
Home Assistant · stap voor stap

Bouw dit Home Assistant-dashboard in ongeveer een uur

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.

Het voltooide dashboard: een held met wat nu speelt, volume met dB-presets, een bronnenraster, surroundmodi, ruimtecorrectie, scènes en een volumegrafiek
Wat je gaat bouwen
Heb je haast? Spring naar stap 10, download de complete weergave, pas twee teksten aan en plak hem. De stappen ertussen leggen uit wat elk onderdeel doet, zodat je het kunt aanpassen.

Voordat je begint

Twee bronnen voeden dit dashboard, en het verschil doet er bij elke stap hieronder toe.

Komt vanLevert
De gesynchroniseerde scripts van AVR MaestroElke bediening. Ingangen, surroundmodi, Audyssey, Dirac, Smart Selects, presets, dimmer, eco, je Scènes.
De mediaspeler-entiteit van de Denon AVR-integratieLive status. Aan/uit, gekozen bron, surroundmodus, volume, demping.
Stap 1

Installeer vier kaarten vanuit HACS

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 naarGebruikt voorAls je het overslaat
MushroomElke bedieningstegel en de volumeschuifGebruik een gewone button-kaart. Werkt, ziet er hoekiger uit.
button-cardSectiekoppen met een live labelGebruik een markdown-kaart, of gewone koppen.
card-modDe kleuren en de verlichte status van de actieve tegelAlles werkt nog steeds. Er licht alleen niets op.
apexcharts-cardDe geschiedenisgrafiekenGebruik de ingebouwde history-graph-kaart.
Geen enkele is nodig om het werkend te krijgen. Elke bediening hieronder werkt met een standaard knopkaart van Home Assistant die naar hetzelfde script wijst. De aangepaste kaarten zijn make-up, geen leidingwerk.
Stap 2

Zoek je twee entiteits-ID's

Elk fragment op deze pagina gebruikt twee plaatshouders. Zoek de jouwe één keer op en de rest is kopiëren en plakken.

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.

Negeer alles waar 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.
Stap 3

Maak de weergave

  1. 1. Instellingen › Dashboards › Dashboard toevoegen › Nieuw dashboard vanaf nul. Noem het wat je wilt.
  2. 2. Open het en kies rechtsboven het potloodpictogram om te bewerken.
  3. 3. Voeg een weergave toe en kies de lay-out Secties. Niet Masonry. Secties zorgt ervoor dat het op een telefoon goed meeschuift.
  4. 4. Zet in de weergave-instellingen Maximaal aantal kolommen op 3 en schakel Dichte sectieplaatsing in.

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

Voeg een bediening toe

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.

Stap 5

Laat hem oplichten als hij de actieve is

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.

Het bronnenraster met Nvidia Shield oranje verlicht en de andere twaalf ingangen donker
Eén verlichte tegel, twaalf donkere
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:

Surroundmodi zijn dezelfde kaart met sound_mode in plaats van source.

Stap 6

Geef elke sectie een live kop

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.

Stap 7

Toon volume in dB

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.

De volumesectie: een schuif, harder, zachter, dempen en vier dB-presets
Nacht, Dialoog, Film en Luid, elk met het aantal dB dat het instelt
De omrekening. Home Assistant publiceert 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
Kies je luidste preset bewust. De set hierboven stopt bij −10 dB. Een dashboard raak je veel makkelijker per ongeluk aan dan een afstandsbediening, en referentieniveau op een grote receiver is echt hard.
Stap 8

Voeg je Scènes toe

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.

Vier scènetegels, elk met de instellingen die die scène herstelt
Elke tegel zegt wat zijn scène echt herstelt
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.

Stap 9

Voeg geschiedenis toe

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.

Vijf geschiedenisgrafieken: aan/uit en activiteit, hoofdvolume in dB, volume per dag, gebruikte bron en surroundmodus
Vijf grafieken, één entiteit, zeven dagen

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.

Waarom deze van 0 tot 80 plot en naar dB opmaakt, in plaats van dB te plotten. Balken groeien vanaf de bodem van de as. Plot je dB direct, dan hangt elke balk omlaag vanaf 0, waardoor een lange balk stil betekent en dat leest achterstevoren. Plot het ruwe hoofdvolumegetal en trek 80 af in de opmaak van de as en de tooltip, dan groeien de balken omhoog terwijl alles wat de lezer ziet nog steeds dB is. 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.

Houd 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.
Controleer eerst hoe lang je recorder gegevens bewaart. Home Assistant bewaart standaard tien dagen, dus zeven dagen is ongeveer het meeste wat je zinvol kunt vragen. Om verder terug te gaan heb je een state_class: measurement-sjabloonsensor nodig, die Home Assistant jarenlang als langetermijnstatistiek bewaart.
Een ontbrekende dag is meestal juist. Home Assistant legt wijzigingen vast, geen steekproeven. Laat je de receiver twee dagen op één ingang en één volume staan, dan schrijft hij helemaal niets weg, dus die dag heeft geen balk. Het lijkt op gegevensverlies en het is het tegenovergestelde: er is niets gebeurd.
Stap 10

Of neem het geheel

De complete weergave, elke sectie en elke kaart, met plaatshouders in plaats van entiteits-ID's.

  1. 1. Download de view-YAML.
  2. 2. Open het in een willekeurige teksteditor en vervang twee teksten, overal waar ze voorkomen: YOUR_RECEIVER door de naam van je mediaspeler-entiteit, en YOURMAC door de twaalf tekens van je receiver uit stap 2.
  3. 3. Open in Home Assistant je dashboard, het potloodpictogram, het menu met drie puntjes, Ruwe configuratie-editor, en plak het als weergave.
Je Scène-ID's komen niet overeen. Scènescripts zijn genoemd naar het moment waarop de Scène is gemaakt, dus de vier in het bestand bestaan niet op jouw systeem: die kaarten worden getoond maar doen niets. Vervang hun entiteits-ID's door je eigen ID's uit stap 2, of verwijder de Scènesectie en bouw hem opnieuw op met stap 8.
Nog twee dingen om op te letten. De bron- en surroundgrafieken bevatten de bronnamen van de receiver waarop dit is gebouwd, dus pas die arrays aan zoals stap 9 beschrijft. En de tegellabels zijn Engels; er is niets in het bestand vertaald.

Als een tegel nooit oplicht

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-entiteitOp de Status Bridge-sensor
Aan/uitAudyssey MultEQ-curve
Gekozen bronDynamic Volume en referentieniveau
SurroundmodusWelk Dirac-slot is geladen
Volume en dempingDimmer voorpaneel, Eco-modus
Dynamic EQ, somsSpeaker 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.

Als een waarde twee dingen kan betekenen, zeg dat dan. Dynamic EQ komt binnen als 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.

Andere dingen die het weten waard zijn

Hetzelfde dashboard op telefoonbreedte, herschikt tot één kolom
Hetzelfde dashboard op telefoonbreedte: de drie kolommen worden één, en er is niets geconfigureerd om dat te laten gebeuren
Veelgestelde vragen

Het dashboard, beantwoord

Heb ik aangepaste kaarten van HACS nodig om dit te bouwen?
Niet om het werkend te krijgen. Elke bediening op deze pagina draait op een gewone Home Assistant-knopkaart. Mushroom, button-card, card-mod en apexcharts-card zorgen ervoor dat het eruitziet zoals op de schermafbeeldingen, en bij elke sectie hieronder staat welke ervan wordt gebruikt en wat je zonder mist.
Waarom lichten sommige knoppen op en andere niet?
Een knop licht op wanneer Home Assistant de bijbehorende status van je receiver kan lezen. Bron, surroundmodus, volume en demping komen terug van de eigen mediaspeler-entiteit van de receiver, dus die lichten op. Audyssey-curve, Dirac-slot, dimmer, eco-modus en speaker preset worden niet door de Denon-integratie gepubliceerd, dus Home Assistant kan niet weten welke actief is en de knoppen blijven donker tot je er een aantikt.
Kan ik het echte dB-volume tonen in plaats van een percentage?
Ja. Home Assistant publiceert volume_level als het hoofdvolume van de receiver gedeeld door 100, en op Denon- en Marantz-receivers is MV 80 de referentie van 0 dB. Dus dB is gelijk aan volume_level maal 100, min 80. Een volume_level van 0.67 is hoofdvolume 67, en dat is -13.0 dB.
Komen mijn entiteits-ID's overeen met die in deze handleiding?
Het patroon wel, het middenstuk niet. AVR Maestro geeft zijn scripts een naam op basis van het MAC-adres van de receiver, zodat een hernoeming hetzelfde script bijwerkt in plaats van er een kopie van te maken. Bij jou staat er script.avr_maestro_, dan jouw eigen twaalf tekens en daarna de naam van de bediening. Open in Home Assistant Ontwikkelaarsgereedschap en dan Statussen, en filter op avr_maestro om je eigen lijst te zien.
Meer uit de handleiding

Andere AVR Maestro-handleidingen

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

Je hele receiver, op één muur

Domotica is de enige betaalde ontgrendeling in AVR Maestro. Al het andere, inclusief de AI-assistent op het apparaat, is inbegrepen.

Download via Google Play Download in de App Store Download in de Mac App Store Download via de Microsoft Store

Terug naar Domotica → · Volledige gebruikershandleiding →