Home Assistant · lépésről lépésre

Építsd meg ezt a Home Assistant irányítópultot nagyjából egy óra alatt

Tíz lépés, minden kártya YAML-kódja, és egy teljes nézet, amelyet egyben beilleszthetsz. Valódi Marantz CINEMA 30 készüléken épült és fotózva. Cserélj ki két szöveget, és a tiéd.

A kész irányítópult: lejátszott tartalom kiemelt kártyája, hangerő dB-előbeállításokkal, forrásrács, térhatású módok, térkorrekció, jelenetek és hangerőgrafikon
Mit építesz meg
Sietsz? Ugorj a 10. lépésre, töltsd le a teljes nézetet, cserélj ki két szöveget, és illeszd be. A köztes lépések azt magyarázzák, hogy az egyes elemek mit csinálnak, hogy tudd módosítani őket.

Mielőtt elkezdenéd

Két forrás táplálja ezt az irányítópultot, és a különbség minden alábbi lépésnél számít.

Innen jönEzt adja
Az AVR Maestro szinkronizált szkriptjeiMinden vezérlő. Bemenetek, térhatású módok, Audyssey, Dirac, Smart Selectek, előbeállítások, fényerőszabályzó, eco, a Jeleneteid.
A Denon AVR integráció médialejátszó entitásaÉlő állapot. Tápellátás, kiválasztott forrás, térhatású mód, hangerő, némítás.
1. lépés

Telepíts négy kártyát a HACS-ből

Mind a négy megtalálható az alapértelmezett HACS-tárolóban. A Home Assistantban: HACS › Frontend › Explore & Download Repositories, keress rá a névre, Download, majd töltsd újra a böngészőt.

Keresett névEhhez kellHa kihagyod
MushroomMinden vezérlőcsempe és a hangerőcsúszkaHasználj sima button kártyát. Működik, csak szögletesebb.
button-cardSzakaszfejlécek élő felirattalHasználj markdown kártyát, vagy sima címsorokat.
card-modA színek és az aktív csempe kivilágított állapotaMinden továbbra is működik. Semmi sem világít.
apexcharts-cardAz előzménygrafikonokHasználd a beépített history-graph kártyát.
Egyik sem szükséges a működéshez. Alább minden vezérlő egy alap Home Assistant gombkártyából fut, amely ugyanarra a szkriptre mutat. Az egyedi kártyák sminkek, nem vízvezeték.
2. lépés

Keresd meg a két entitásazonosítódat

Az oldal minden kódrészlete két helyőrzőt használ. Keresd meg a sajátjaidat egyszer, a többi már csak másolás és beillesztés.

Minden szkriptazonosító közepe a készülék MAC-címe, tizenkét kisbetűs karakter, mindegyiken ugyanaz. Másold ki egyszer. Ahol az oldal ezt írja: MAC, ott told be a sajátodat.

Hagyd figyelmen kívül azokat, amelyekben ez szerepel: unavailable. A régebbi verziók a szkripteket a készülék nevéről nevezték el, nem a MAC-címéről. Ha akkor szinkronizáltál, ezek a régiek még mindig listázva vannak, de halottak. Az élők a MAC-cím alapján elnevezettek.
3. lépés

Hozd létre a nézetet

  1. 1. Beállítások › Irányítópultok › Irányítópult hozzáadása › Új irányítópult a semmiből. Nevezd el, ahogy akarod.
  2. 2. Nyisd meg, majd kattints a jobb felső sarokban lévő ceruza ikonra a szerkesztéshez.
  3. 3. Adj hozzá egy nézetet, és válaszd a Sections elrendezést. Ne a Masonryt. A Sections miatt töltődik át rendesen a nézet telefonon.
  4. 4. A nézet beállításaiban állítsd a Max columns értékét 3-ra, és kapcsold be a Dense section placement opciót.

Innentől minden lépés ugyanaz: adj hozzá egy szakaszt, majd illessz be kártyákat. A YAML beillesztéséhez használd a kártya hárompontos menüjét és válaszd az Edit in YAML lehetőséget, vagy az irányítópult hárompontos menüjében a Raw configuration editor menüpontot, hogy az egészet egyszerre illeszd be.

# 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
4. lépés

Adj hozzá egy vezérlőt

Kezdd a tábla legegyszerűbb elemével, hogy még a bonyolult dolgok megépítése előtt tudd, jók-e az entitásazonosítóid. Adj hozzá egy szakaszt, egy kártyát, Edit in YAML, és illeszd be:

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

Alap Home Assistant. Nincs szükség HACS-re.

Koppints rá. Ha a készülék reagál, jók az azonosítóid, és minden alábbi működni fog. Ha nem történik semmi, térj vissza a 2. lépéshez.

5. lépés

Világítson, amikor ez az aktív

Ez az a minta, amelyet érdemes megtanulni, és a tábla minden forrás- és térhatású csempéje ennek a másolata. A kártya egy szkriptet küld, és a színét a készülék entitásából veszi, így az éppen használt bemenet világít, a többi nem.

A forrásrács, amelyen az Nvidia Shield narancssárgán világít, a másik tizenkét bemenet pedig sötét
Egy kivilágított csempe, tizenkét sötét
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 %}
    }

Bemenetenként három dolgot kell módosítani: a szkriptet, az ikont és a szöveget, amellyel összehasonlít.

Két dologra figyelj, különben a csempe soha nem fog világítani:

A térhatású módok ugyanezt a kártyát használják, sound_mode helyett source értékkel.

6. lépés

Adj minden szakasznak élő fejlécet

Egy sima cím holt tér. Tedd alá az élő értéket, és a „Sources” így lesz: „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

A kétsoros rács teszi a feliratot a cím alá a mellé helyett.

A Surround fejlécben cseréld a(z) attributes.source értéket attributes.sound_mode értékre, és így tovább.

7. lépés

Mutasd a hangerőt dB-ben

A Home Assistant törtként közli a hangerőt. Senki sem állít be egy készüléket „0.67”-re. Egyetlen sor matek megoldja, és a teljes szakasz végre úgy olvasódik, mint egy készülék.

A hangerőszakasz: csúszka, fel, le, némítás és négy dB-előbeállítás
Night, Dialog, Movie és Loud, mindegyiken a beállított dB-érték látható
Az átváltás. A Home Assistant a(z) volume_level értéket a fő hangerő századrészeként teszi közzé, a Denon és Marantz készülékeken pedig az MV 80 a 0 dB referencia. Tehát dB = volume_level × 100 − 80. A 0.67-es volume_level fő hangerő 67, vagyis −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
A leghangosabb előbeállítást tudatosan válaszd meg. A fenti készlet −10 dB-nél megáll. Egy irányítópultot sokkal könnyebb véletlenül megnyomni, mint egy távirányítót, a referenciaszint pedig egy nagy készüléken tényleg hangos.
8. lépés

Add hozzá a Jeleneteidet

A nevet olvasd ki a szkriptből, ne gépeld be, így ha az AVR Maestro-ban átnevezel egy Jelenetet, a csempe neve is változik, az irányítópult szerkesztése nélkül.

Négy jelenetcsempe, mindegyiken a jelenet által visszaállított beállítások listájával
Minden csempe megmondja, mit állít vissza a jelenete
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

A két replace() hívás levágja az előtagot és a készülék nevét a barátságos névről.

A második sor megér egy plusz percet. Egy csomó hangzatos nevű gomb este 11-kor semmit sem mond; egy sor arról, hogy mit állít vissza, megmondja, melyiket nyomd meg.

9. lépés

Add hozzá az előzményeket

A készülék médialejátszó entitását a Home Assistant úgy rögzíti, mint bármelyik másikat, így hallgatási előzményt kapsz ingyen. Minden alábbi ebből az egy entitásból származik: nincs extra szenzor, nincs segédelem, nincs mit előzetesen beállítani.

Öt előzménygrafikon: tápellátás és tevékenység, fő hangerő dB-ben, hangerő napok szerint, használt forrás és térhatású mód
Öt grafikon, egy entitás, hét nap

Az egyszerű állapot-idővonalhoz egyáltalán nem kellenek egyedi kártyák, és ezt érdemes a legjobban megtartani:

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

Be, ki, és mit csinált, egy héten át.

A dB-ben mutatott hangerő ugyanazt az átváltást használja, mint a 7. lépés:

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

A group_by és a fill: last a ritka eseményeket folytonos vonallá alakítja. Az y tengelyt az apex_config részben kell megadni, hogy érvényesüljön.

A napi átlag és csúcs a tüskés vonalból formát csinál:

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'; }"

Két adatsor ugyanabból az attribútumból, napok szerint csoportosítva.

Miért 0 és 80 között ábrázol ez, és formáz dB-re, ahelyett, hogy dB-t ábrázolna. Az oszlopok a tengely aljától nőnek. Ha közvetlenül dB-t ábrázolsz, minden oszlop 0-tól lefelé lóg, így a hosszú oszlop halkat jelent, ami fordítva olvasódik. Ha a nyers fő hangerő értéket ábrázolod, és a tengely- meg a tooltip-formázóban vonsz ki belőle 80-at, az oszlopok felfelé nőnek, miközben az olvasó mindent dB-ben lát. A(z) fill: 'null' azt jelenti, hogy a mérés nélküli napnak nincs oszlopa, ahelyett hogy az előző napé öröklődne tovább.

És a két grafikon, amely megválaszolja: „min nézek valójában, és milyen módban”: a forrás és a térhatású mód, idővonalként ábrázolva, hogy melyik volt kiválasztva.

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'; }

Írd be a saját forrásaidat a transform tömbbe és mindkét formázó tömbbe. A 0. index maradjon „Other”.

A diagram tengelyének számok kellenek, ezért a(z) transform minden forrásnevet egy pozícióhoz rendel, a formázók pedig visszafordítják a feliratokhoz és a tooltiphez. Tedd a hozzárendelést teljessé: a(z) null (kikapcsolt készülék) rés marad, és ami nincs a listádban, az „Other”-be kerül, így a kettő sosem keveredhet össze. Ugyanez a kártya sound_mode értékkel a térhatású módot adja, a szövegek nagybetűsen, pontosan ahogy a készülék jelenti.

Tartsd meg a(z) stepline beállítást ennél az utolsó kettőnél. A forrás vagy a térhatású mód kategória, nem szám. Ha simítod a görbét, a vonal a Shield és az Xbox között átível mindenen, ami a tengelyen köztük van, és olyan bemenetet rajzol, amelyet soha nem választottak ki. A hangerő valódi mennyiség, és őszintén simítható; a kategória nem.
Először ellenőrizd a recorder megőrzési idejét. A Home Assistant alapból tíz napot őriz, így a hét nap nagyjából a legtöbb, amit észszerűen kérhetsz. Ha messzebbre akarsz visszamenni, kell egy state_class: measurement template szenzor, amelyet a Home Assistant évekig hosszú távú statisztikaként tárol.
A hiányzó nap általában helyes. A Home Assistant változásokat rögzít, nem mintákat. Ha a készüléket két napig egy bemeneten, egy hangerőn hagyod, egyáltalán nem ír semmit, így arra a napra nincs oszlop. Adatvesztésnek látszik, pedig az ellenkezője: nem történt semmi.
10. lépés

Vagy vidd az egészet

A teljes nézet, minden szakasszal és kártyával, entitásazonosítók helyett helyőrzőkkel.

  1. 1. Töltsd le a nézet YAML-fájlját.
  2. 2. Nyisd meg bármilyen szövegszerkesztőben, és cserélj ki két szöveget mindenhol, ahol előfordulnak: a(z) YOUR_RECEIVER szöveget a médialejátszó entitásod nevére, a(z) YOURMAC szöveget pedig a készüléked tizenkét karakterére a 2. lépésből.
  3. 3. A Home Assistantban nyisd meg az irányítópultodat, ceruza ikon, hárompontos menü, Raw configuration editor, és illeszd be nézetként.
A Jelenet-azonosítóid nem fognak egyezni. A Jelenet-szkriptek neve a Jelenet létrehozásának idejét tükrözi, így a fájlban lévő négy nem létezik a te rendszereden: ezek a kártyák megjelennek, de nem csinálnak semmit. Cseréld le az entitásazonosítóikat a sajátjaidra a 2. lépésből, vagy töröld a Jelenetek szakaszt, és építsd újra a 8. lépéssel.
Még két dologra számíts. A forrás- és térhatású grafikonok annak a készüléknek a forrásneveit tartalmazzák, amelyen ez készült, ezért szerkeszd ezeket a tömböket a 9. lépés szerint. A csempefeliratok pedig angolul vannak; a fájlban semmi sincs lefordítva.

Ha egy csempe soha nem világít

Mielőtt azt hinnéd, hogy rosszul építetted: némelyik nem is tud világítani, és érdemes tudni, melyik.

Egy csempe csak akkor mutathatja az állapotát, ha a Home Assistant el tudja olvasni, a készülékedet pedig két helyről olvassa. A Denon AVR integráció az alapokat a médialejátszó entitáson teszi közzé. A többit az AVR Maestro: létrehoz egy Status Bridge szenzort, sensor.avr_maestro_your_receiver, és a már birtokában lévő értékeket attribútumként ráírja.

A médialejátszó entitásonA Status Bridge szenzoron
TápellátásAudyssey MultEQ görbe
Kiválasztott forrásDynamic Volume és referenciaszint
Térhatású módMelyik Dirac foglalat van betöltve
Hangerő és némításElülső panel fényerőszabályzója, Eco mód
Dynamic EQ, néhaHangszóró-előbeállítás, hangszín és még tucatnyi más

Mindkét oszlop mostantól olvasható. A médialejátszó értékét innen vedd: states['media_player.your_receiver'].attributes, a Status Bridge értékét pedig így: state_attr('sensor.avr_maestro_your_receiver','dirac_slot'), hogy a csempe arra a beállításra világítson, amely ténylegesen aktív, ne csak azt a szkriptet indítsa, amely módosítja.

Azon a készüléken mérve, amelyen ez készült: a médialejátszó entitás a hatvan vezérlőből nagyjából húszat hordoz, a Status Bridge szenzor pedig körülbelül negyvenet tesz közzé. A kettő együtt lehetővé teszi, hogy az irányítópult szinte mindent kiolvasson, amit módosítani tud - ez a különbség a gombfal és a vezérlőfelület között.

Ha egy érték kétféle dolgot jelenthet, mondd ki. A Dynamic EQ így érkezik: true, false, vagy sehogy. Ha a „sehogy”-t „kikapcsolva”-nak veszed, magabiztos, de téves választ teszel a falra.
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 %}

Három állapot, nem kettő.

Egyéb tudnivalók

Ugyanaz az irányítópult telefonszélességen, egyetlen oszlopba rendeződve
Ugyanaz az irányítópult telefonszélességen: a három oszlopból egy lesz, és ehhez semmit sem kellett beállítani
Gyakori kérdések

Az irányítópult, megválaszolva

Kellenek hozzá egyéni HACS kártyák?
A működéshez nem. Az oldalon minden vezérlő sima Home Assistant gombkártyáról fut. A Mushroom, a button-card, a card-mod és az apexcharts-card adja a képernyőképeken látható kinézetet, és minden szakasz megmondja, melyiket használja, és mit veszítesz nélküle.
Miért világít néhány gomb, mások meg nem?
Egy gomb akkor világít, ha a Home Assistant el tudja olvasni a hozzá tartozó állapotot a készülékedről. A forrás, a térhatású mód, a hangerő és a némítás a készülék saját médialejátszó entitásából érkezik, ezért ezek kiemelődnek. Az Audyssey görbét, a Dirac foglalatot, a fényerőszabályzót, az eco módot és a hangszóró-előbeállítást a Denon integráció nem teszi közzé, így a Home Assistant nem tudhatja, melyik az aktív, és a gombok addig nem világítanak, amíg meg nem koppintasz egyet.
Megjeleníthetem a valódi dB hangerőt százalék helyett?
Igen. A Home Assistant a volume_level értéket a készülék fő hangerejének századrészeként teszi közzé, a Denon és Marantz készülékeken pedig az MV 80 a 0 dB referencia. Tehát a dB egyenlő a volume_level szorozva 100-zal, mínusz 80. A 0.67-es volume_level fő hangerő 67, vagyis -13.0 dB.
Megegyeznek majd az entitásazonosítóim az ebben az útmutatóban szereplőkkel?
A minta igen, a középső rész nem. Az AVR Maestro a szkriptjeit a készülék MAC-címéről nevezi el, így egy átnevezés ugyanazt a szkriptet frissíti, nem pedig másodpéldányt hoz létre. A tiéd így néz ki: script.avr_maestro_, majd a saját tizenkét karaktered, végül a vezérlő neve. Nyisd meg a Home Assistantban a Fejlesztői eszközök, majd az Állapotok oldalt, és szűrj az avr_maestro szóra, hogy lásd a saját listádat.
Az útmutató további részei

További AVR Maestro útmutatók

Első lépések · Kezdőképernyő · Jelenetek · Egyéni ikonok · Hang · Grafikus EQ · Hangszórók · Miért zárolt egy vezérlő · Az asszisztens · Otthonautomatizálás · Zónák · Távirányító · Rádió (FM/AM) · Képernyőkijelző · Beállítások · Nyelvek · Hangerő-szabályzók · Mentés & visszaállítás · Most szól & HEOS

A teljes készüléked, egy falon

Az Otthon-automatizálás az AVR Maestro egyetlen fizetős feloldása. Minden más, az eszközön futó AI-asszisztenssel együtt, benne van.

Töltse le a Google Playről Letöltés az App Store-ból Letöltés a Mac App Store-ból Töltse le a Microsoft Store-ból

Vissza az otthonautomatizáláshoz → · Teljes felhasználói útmutató →