Home Assistant · trin for trin

Byg dette Home Assistant-dashboard på cirka en time

Ti trin, YAML til hvert kort og en komplet visning, du kan indsætte i ét hug. Bygget og fotograferet på en rigtig Marantz CINEMA 30. Ret to strenge, og den er din.

Det færdige dashboard: en hero med det, der afspilles nu, lydstyrke med dB-forudindstillinger, et kildegitter, surroundtilstande, rumkorrektion, scener og en lydstyrkegraf
Det her bygger du
Har du travlt? Spring til trin 10, download den komplette visning, ret to strenge og indsæt den. Trinene derimellem forklarer, hvad hver enkelt del gør, så du kan ændre den.

Før du går i gang

To ting fodrer dette dashboard, og forskellen har betydning i hvert eneste trin nedenfor.

Kommer fraGiver dig
AVR Maestros synkroniserede scriptsAlle kontroller. Indgange, surroundtilstande, Audyssey, Dirac, Smart Selects, forudindstillinger, dæmper, eco, dine scener.
Medieafspillerentiteten fra Denon AVR-integrationenLive-status. Strøm, valgt kilde, surroundtilstand, lydstyrke, lydløs.
Trin 1

Installer fire kort fra HACS

Alle fire findes i den almindelige HACS-butik. I Home Assistant: HACS › Frontend › Explore & Download Repositories, søg på navnet, tryk Download, og genindlæs derefter din browser.

Søg efterBruges tilHvis du springer det over
MushroomAlle kontrolfliser og lydstyrkeskyderenBrug et almindeligt button-kort. Det virker, men ser mere kantet ud.
button-cardSektionsoverskrifter med en live-etiketBrug et markdown-kort eller almindelige overskrifter.
card-modFarverne og den oplyste tilstand på den aktive fliseAlt virker stadig. Intet lyser op.
apexcharts-cardHistorikgraferneBrug det indbyggede history-graph-kort.
Ingen af dem er nødvendige for at få det til at virke. Hver kontrol nedenfor kører fra et almindeligt Home Assistant-knapkort, der peger på det samme script. De tilpassede kort er makeup, ikke rørføring.
Trin 2

Find dine to enheds-id'er

Hvert eksempel på denne side bruger to pladsholdere. Find dine én gang, så er resten copy-paste.

Midterdelen af hvert script-id er din receivers MAC-adresse, tolv små bogstaver eller tal, den samme på dem alle. Kopiér den én gang. Overalt hvor denne side skriver MAC, skal du indsætte din egen.

Ignorer alle, der siger unavailable. Ældre versioner opkaldte scripts efter receiverens navn i stedet for dens MAC-adresse. Hvis du synkroniserede dengang, står de gamle stadig på listen og er døde. De levende er dem, der er opkaldt efter MAC-adressen.
Trin 3

Opret visningen

  1. 1. Settings › Dashboards › Add Dashboard › New dashboard from scratch. Kald det, hvad du vil.
  2. 2. Åbn det, og tryk derefter på blyantsikonet øverst til højre for at redigere.
  3. 3. Tilføj en visning, og vælg layoutet Sections. Ikke Masonry. Det er Sections, der får det til at omorganisere sig ordentligt på en telefon.
  4. 4. I visningsindstillingerne skal du sætte Max columns til 3 og slå Dense section placement til.

Herfra og ud er hvert trin det samme: tilføj en sektion, og indsæt derefter kort i den. For at indsætte YAML skal du bruge tre-prikkers-menuen på et kort og vælge Edit in YAML, eller tre-prikkers-menuen på dashboardet for Raw configuration editor, så du kan indsætte det hele 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
Trin 4

Tilføj en kontrol

Start med det enkleste på tavlen, så du ved, at dine enheds-id'er er rigtige, før du bygger noget kompliceret. Tilføj en sektion, tilføj et kort, vælg Edit in YAML, og indsæt:

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.

Tryk på den. Hvis receiveren reagerer, er dine id'er rigtige, og alt nedenfor vil virke. Sker der ingenting, så gå tilbage til trin 2.

Trin 5

Få den til at lyse op, når den er den aktive

Det her er mønsteret, der er værd at lære, og hver eneste kilde- og surroundflise på tavlen er en kopi af det. Kortet sender et script og farver sig selv ud fra receiverentiteten, så den indgang, du faktisk er på, lyser, og de andre ikke gør.

Kildegitteret med Nvidia Shield lyst op i orange og de tolv andre indgange mørke
Én oplyst flise, tolv mørke
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 %}
    }

Ret tre ting pr. indgang: scriptet, ikonet og den streng, den sammenlignes med.

To ting skal være rigtige, ellers lyser en flise aldrig:

Surroundtilstande er det samme kort med sound_mode i stedet for source.

Trin 6

Giv hver sektion en live-overskrift

En almindelig titel er spildt plads. Sæt den aktuelle værdi under den, så bliver „Sources“ til „Sources / Now on 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

Det todelte gitter er det, der placerer etiketten under titlen i stedet for ved siden af.

Byt attributes.source ud med attributes.sound_mode i Surround-overskriften, og så videre.

Trin 7

Vis lydstyrke i dB

Home Assistant rapporterer lydstyrke som en brøk. Ingen indstiller en receiver til „0.67“. Én linje matematik løser det, og hele sektionen begynder at læse som en receiver.

Lydstyrkesektionen: en skyder, op, ned, lydløs og fire dB-forudindstillinger
Night, Dialog, Movie og Loud, hver mærket med den dB, den indstiller
Omregningen. Home Assistant udgiver volume_level som hovedlydstyrke divideret med 100, og på Denon- og Marantz-receivere er MV 80 referencen på 0 dB. Så dB = volume_level × 100 − 80. Et volume_level på 0.67 er hovedlydstyrke 67, hvilket 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
Vælg din højeste forudindstilling med omtanke. Sættet ovenfor stopper ved −10 dB. Et dashboard er langt lettere at ramme ved et uheld end en fjernbetjening, og referenceniveau på en stor receiver er virkelig højt.
Trin 8

Tilføj dine scener

Læs navnet fra scriptet i stedet for at skrive det, så omdøber en omdøbning af en scene i AVR Maestro flisen uden at du skal redigere dashboardet.

Fire scenefliser, hver med en liste over de indstillinger, scenen gendanner
Hver flise fortæller, hvad dens scene faktisk gendanner
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()-kald fjerner præfikset og receiverens navn fra det viste navn.

En ekstra linje er de ekstra minutter værd. En væg af fantasifuldt navngivne knapper fortæller dig intet klokken 11 om aftenen; en linje, der siger, hvad hver enkelt gendanner, fortæller dig, hvilken du skal trykke på.

Trin 9

Tilføj historik

Receiverens medieafspillerentitet bliver optaget af Home Assistant som enhver anden, så du får en lyttehistorik gratis. Alt nedenfor kommer fra den ene entitet: ingen ekstra sensorer, ingen hjælpere, intet at konfigurere først.

Fem historikgrafer: strøm og aktivitet, hovedlydstyrke i dB, lydstyrke pr. dag, kilde i brug og surroundtilstand
Fem grafer, én entitet, syv dage

Den almindelige tilstandstidslinje kræver slet ingen tilpassede kort og er den, der er mest værd at have:

type: history-graph
hours_to_show: 168
entities:
  - entity: media_player.your_receiver
    name: Receiver

Tændt, slukket og hvad den lavede, over en uge.

Lydstyrke i dB bruger den samme omregning som i trin 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 gør spredte hændelser til en sammenhængende linje. Y-aksen skal stå i apex_config for at få effekt.

Et dagligt gennemsnit og en daglig top gør en takket linje til noget 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 den samme attribut, grupperet efter dag.

Hvorfor denne graf plotter 0 til 80 og formaterer til dB i stedet for at plotte dB. Søjler vokser fra aksens bund. Plot dB direkte, og hver søjle hænger ned fra 0, så en lang søjle betyder stille, hvilket læses omvendt. Plot det rå hovedlydstyrketal og træk 80 fra i akse- og tooltip-formaterne, så vokser søjlerne opad, mens alt, hvad læseren ser, stadig er dB. fill: 'null' betyder, at en dag uden målinger ikke får nogen søjle i stedet for gårsdagens værdi overført.

Og de to, der svarer på „hvad ser jeg egentlig på, og i hvad“: kilde og surroundtilstand, plottet som en tidslinje over, hvilken der 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'; }

Sæt dine egne kilder i transform-arrayet og i begge formatter-arrays. Behold indeks 0 som „Other“.

En grafakse kræver tal, så transform kobler hvert kildenavn til en position, og formaterne kobler det tilbage til etiketterne og tooltippet. Gør koblingen total: null (receiver slukket) forbliver et hul, og alt, der ikke står på din liste, falder til „Other“, så de to aldrig kan forveksles. Det samme kort igen med sound_mode giver dig surroundtilstand, med strengene med store bogstaver præcis som din receiver rapporterer dem.

Behold stepline på de to sidste. En kilde eller en surroundtilstand er en kategori, ikke et tal. Udglat kurven, og linjen svinger mellem Shield og Xbox gennem alt, hvad der ligger imellem dem på aksen, og tegner en indgang, der aldrig blev valgt. Lydstyrke er en reel størrelse og udglattes ærligt; en kategori gør ikke.
Tjek først din recorder-opbevaring. Home Assistant gemmer ti dage som standard, så syv dage er cirka det meste, du kan bede om med fornuft. For at gå længere tilbage skal du bruge en state_class: measurement-skabelonsensor, som Home Assistant gemmer som langtidsstatistik i årevis.
En manglende dag er som regel korrekt. Home Assistant registrerer ændringer, ikke stikprøver. Lad receiveren stå på én indgang ved én lydstyrke i to dage, og den skriver slet ingenting, så den dag har ingen søjle. Det ligner datatab, og det er det modsatte: der skete ingenting.
Trin 10

Eller tag det hele

Den komplette visning, hver sektion og hvert kort, med pladsholdere i stedet for enheds-id'er.

  1. 1. Download YAML-filen til visningen.
  2. 2. Åbn den i en vilkårlig teksteditor, og erstat to strenge overalt, hvor de forekommer: YOUR_RECEIVER med navnet på din medieafspillerentitet og YOURMAC med din receivers tolv tegn fra trin 2.
  3. 3. Åbn dit dashboard i Home Assistant, tryk på blyantsikonet og tre-prikkers-menuen, vælg Raw configuration editor, og indsæt den som en visning.
Dine scene-id'er vil ikke passe. Scenescripts er opkaldt efter tidspunktet, scenen blev oprettet, så de fire i filen findes ikke på dit system: de kort bliver vist og gør ingenting. Erstat deres enheds-id'er med dine egne fra trin 2, eller slet scenesektionen og genopbyg den med trin 8.
To andre ting at forvente. Kilde- og surroundgraferne bærer kildenavnene fra den receiver, den blev bygget på, så ret de arrays, som trin 9 beskriver. Og flisernes etiketter er på engelsk; intet i filen er oversat.

Hvis en flise aldrig lyser op

Før du antager, at du har bygget den forkert: nogle af dem kan ikke lyse op, og det er værd at vide hvilke.

En flise kan kun vise sin tilstand, hvis Home Assistant kan læse den, og den læser din receiver fra to steder. Denon AVR-integrationen udgiver det basale på medieafspillerentiteten. AVR Maestro udgiver resten: den opretter en Status Bridge-sensor, sensor.avr_maestro_your_receiver, og skriver de aflæsninger, den allerede har, på den som attributter.

På medieafspillerentitetenPå Status Bridge-sensoren
StrømAudyssey MultEQ-kurve
Valgt kildeDynamic Volume og referenceniveau
SurroundtilstandHvilken Dirac-slot der er indlæst
Lydstyrke og lydløsFrontpanel-dæmper, Eco-tilstand
Dynamic EQ, nogle gangeHøjttalerforudindstilling, tone og snesevis af andre

Begge kolonner kan nu læses. Hent en medieafspillerværdi fra states['media_player.your_receiver'].attributes og en Status Bridge-værdi med state_attr('sensor.avr_maestro_your_receiver','dirac_slot'), så en flise lyser op for den indstilling, der faktisk er aktiv, i stedet for kun at udløse det script, der ændrer den.

Målt på den receiver, den er bygget på: medieafspillerentiteten bærer cirka tyve af de tres kontroller, og Status Bridge-sensoren udgiver omkring fyrre mere. Mellem de to kan et dashboard læse næsten alt, det kan ændre - forskellen mellem en væg af knapper og en rigtig betjeningsflade.

Hvis en værdi kan betyde to ting, så sig det. Dynamic EQ ankommer som true, false eller slet ikke. Behandler du „slet ikke“ som „fra“, sætter du et selvsikkert forkert svar på din væg.
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 tilstande, ikke to.

Andre ting, der er værd at vide

Det samme dashboard i telefonbredde, omorganiseret til én kolonne
Samme dashboard i telefonbredde: de tre kolonner bliver til én, og intet blev konfigureret for at få det til at ske
Ofte stillede spørgsmål

Dashboardet, besvaret

Skal jeg bruge brugerdefinerede kort fra HACS for at bygge dette?
Ikke for at få det til at virke. Hver kontrol på denne side kører fra et almindeligt Home Assistant-knapkort. Mushroom, button-card, card-mod og apexcharts-card er det, der får det til at se ud, som det gør på skærmbillederne, og hvert afsnit nedenfor fortæller, hvilket det bruger, og hvad du mister uden det.
Hvorfor lyser nogle knapper, og andre gør ikke?
En knap lyser op, når Home Assistant kan læse den tilsvarende tilstand fra din receiver. Kilde, surroundtilstand, lydstyrke og lydløs kommer tilbage fra receiver's egen medieafspillerentitet, så dem fremhæves. Audyssey-kurve, Dirac-slot, dæmper, eco-tilstand og højttalerforudindstilling udgives ikke af Denon-integrationen, så Home Assistant har ingen måde at vide, hvilken der er aktiv, og knapperne forbliver uoplyste, indtil du trykker på en.
Kan jeg vise den ægte dB-lydstyrke i stedet for en procentværdi?
Ja. Home Assistant udgiver volume_level som receiver's hovedlydstyrke divideret med 100, og på Denon- og Marantz-receivere er MV 80 referencen på 0 dB. Så dB er lig med volume_level gange 100 minus 80. Et volume_level på 0.67 er hovedlydstyrke 67, hvilket er -13.0 dB.
Vil mine enheds-id'er svare til dem i denne vejledning?
Mønsteret vil, midterdelen vil ikke. AVR Maestro opkalder sine scripts efter receiver's MAC-adresse, så en omdøbning opdaterer det samme script i stedet for at oprette et nyt. Dine kommer til at hedde script.avr_maestro_ efterfulgt af dine egne tolv tegn og derefter navnet på kontrollen. Åbn Developer Tools og derefter States i Home Assistant, og filtrer på avr_maestro for at se din egen liste.
Mere af vejledningen

Andre AVR Maestro-vejledninger

Kom i gang · Startskærm · Scener · Brugerdefinerede ikoner · Lyd · Graphic EQ · Højttalere · Hvorfor en kontrol er låst · Assistenten · Hjemmeautomatisering · Zoner · Fjernbetjening · Radio (FM/AM) · Skærmmenu · Indstillinger · Sprog · Lydstyrkekontrol · Backup & gendannelse · Afspiller nu & HEOS

Hele din receiver, på én væg

Hjemmeautomatisering er den ene betalte oplåsning i AVR Maestro. Alt andet, inklusive AI-assistenten på enheden, er inkluderet.

Hent på Google Play Download i App Store Download i Mac App Store Hent i Microsoft Store

Tilbage til Hjemmeautomatisering → · Hele brugervejledningen →