Sepuluh langkah, YAML setiap kartu, dan satu tampilan lengkap yang bisa Anda tempel sekaligus. Dibuat dan difoto pada Marantz CINEMA 30 sungguhan. Ubah dua string dan dasbor ini jadi milik Anda.
Dua hal mengisi dasbor ini, dan perbedaannya penting di setiap langkah berikut.
| Berasal dari | Memberi Anda |
|---|---|
| Skrip tersinkronisasi dari AVR Maestro | Setiap kontrol. Input, mode surround, Audyssey, Dirac, Smart Select, preset, dimmer, eco, Skenario Anda. |
| Entity media player dari integrasi Denon AVR | Status langsung. Daya, sumber terpilih, mode surround, volume, bisu. |
Keempatnya ada di toko HACS bawaan. Di Home Assistant: HACS › Frontend › Explore & Download Repositories, cari namanya, Download, lalu muat ulang browser Anda.
| Cari | Dipakai untuk | Jika dilewati |
|---|---|---|
| Mushroom | Setiap tile kontrol, dan penggeser volume | Gunakan kartu button biasa. Tetap berfungsi, tampilannya lebih kaku. |
| button-card | Header bagian dengan label langsung | Gunakan kartu markdown, atau judul biasa. |
| card-mod | Warna, dan status menyala pada tile yang aktif | Semuanya tetap berfungsi. Hanya saja tidak ada yang menyala. |
| apexcharts-card | Grafik riwayat | Gunakan kartu history-graph bawaan. |
Setiap cuplikan di halaman ini memakai dua placeholder. Temukan milik Anda satu kali, sisanya tinggal salin dan tempel.
media_player.your_receiver → Pengaturan › Perangkat & Layanan › receiver Anda › entitas media player. Kurang lebih seperti media_player.marantz_cinema_30.script.avr_maestro_MAC_... → Developer Tools › States, lalu ketik avr_maestro di filter entitas. Seluruh daftar kontrol Anda akan muncul.Bagian tengah setiap ID skrip adalah alamat MAC receiver Anda, dua belas karakter huruf kecil, sama pada semuanya. Salin sekali saja. Di mana pun halaman ini menulis MAC, isi dengan milik Anda.
unavailable. Versi lama menamai skrip berdasarkan nama receiver, bukan MAC-nya. Jika Anda pernah menyinkronkan saat itu, skrip lama tersebut masih terdaftar dan sudah tidak aktif. Yang aktif adalah yang dinamai dengan MAC.Mulai sekarang, setiap langkahnya sama: tambahkan satu bagian, lalu tempel kartu ke dalamnya. Untuk menempel YAML, gunakan menu tiga titik pada kartu dan pilih Edit in YAML, atau menu tiga titik pada dasbor untuk Raw configuration editor agar semuanya bisa ditempel sekaligus.
# 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
Mulailah dari hal paling sederhana di papan, supaya Anda tahu entity ID Anda sudah benar sebelum membangun yang rumit. Tambahkan bagian, tambahkan kartu, Edit in YAML, tempel:
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
Home Assistant standar. Tidak perlu HACS.
Ketuk tombolnya. Jika receiver bereaksi, ID Anda sudah benar dan semua langkah di bawah akan berfungsi. Jika tidak ada yang terjadi, kembali ke langkah 2.
Inilah pola yang layak dipelajari, dan setiap tile sumber maupun surround di papan adalah salinannya. Kartu mengirim sebuah skrip, lalu mewarnai dirinya dari entity receiver, sehingga input yang sedang Anda pakai menyala dan yang lain tidak.

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 %}
}
Ubah tiga hal untuk setiap input: skripnya, ikonnya, dan string yang dibandingkan.
Dua hal yang harus benar, jika tidak tile tidak akan pernah menyala:
source_list dan sound_mode_list. Itulah string yang tepat. Bandingkan dengan huruf kecil, seperti di atas.Xbox, sementara kontrol AVR Maestro tetap bernama input_game1. Cocokkan dengan yang dilaporkan receiver, bukan nama skripnya.Mode surround memakai kartu yang sama dengan sound_mode sebagai pengganti source.
Judul biasa hanya membuang ruang. Taruh nilai langsungnya di bawah judul dan "Sumber" berubah menjadi "Sumber / Sekarang di 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
Kisi dua baris inilah yang menaruh label di bawah judul, bukan di sampingnya.
Ganti attributes.source dengan attributes.sound_mode pada header Surround, dan seterusnya.
Home Assistant melaporkan volume sebagai pecahan. Tidak ada yang mengatur receiver ke "0.67". Satu baris matematika memperbaikinya dan seluruh bagian ini mulai terbaca seperti receiver sungguhan.

volume_level sebagai volume utama dibagi 100, dan pada receiver Denon dan Marantz, MV 80 adalah acuan 0 dB. Jadi dB = volume_level × 100 − 80. Nilai volume_level 0.67 berarti volume utama 67, yaitu −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
Baca namanya dari skrip alih-alih mengetiknya, dan saat Skenario diganti namanya di AVR Maestro, tile ikut berganti nama tanpa perlu mengedit dasbor.

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
Dua pemanggilan replace() memangkas awalan dan nama receiver dari nama yang ditampilkan.
Baris kedua layak dibuat. Deretan tombol bernama puitis tidak memberi tahu apa pun pukul 11 malam; satu baris yang menyebutkan apa yang dipulihkan masing-masing memberi tahu mana yang harus ditekan.
Entity media player receiver dicatat oleh Home Assistant seperti entity lainnya, jadi Anda mendapatkan riwayat mendengarkan secara gratis. Semua di bawah ini berasal dari satu entity itu: tanpa sensor tambahan, tanpa helper, tanpa perlu mengonfigurasi apa pun lebih dulu.

Timeline status biasa tidak memerlukan kartu kustom sama sekali, dan itulah yang paling layak dimiliki:
type: history-graph
hours_to_show: 168
entities:
- entity: media_player.your_receiver
name: Receiver
Menyala, mati, dan apa yang sedang dilakukan, selama seminggu.
Volume dalam dB memakai konversi yang sama seperti di langkah 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 dengan fill: last mengubah kejadian yang jarang menjadi garis yang kontinu. Sumbu y harus ditaruh di apex_config agar berlaku.
Rata-rata dan puncak harian mengubah garis yang naik turun menjadi sesuatu yang berbentuk:
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'; }"
Dua seri dari atribut yang sama, dikelompokkan per hari.
fill: 'null' berarti hari tanpa data tidak mendapat batang, alih-alih membawa nilai kemarin.Dan dua grafik yang menjawab "saya sebenarnya menonton lewat apa, dan dalam mode apa": sumber dan mode surround, diplot sebagai timeline mana yang terpilih.
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'; }
Masukkan sumber Anda sendiri ke array transform dan ke kedua array formatter. Biarkan indeks 0 sebagai "Other".
Sumbu grafik membutuhkan angka, jadi transform memetakan setiap nama sumber ke sebuah posisi dan formatter memetakannya kembali untuk label dan tooltip. Buat pemetaannya total: null (receiver mati) tetap menjadi celah, dan apa pun yang tidak ada dalam daftar Anda masuk ke "Other", sehingga keduanya tidak pernah tertukar. Kartu yang sama dengan sound_mode memberi Anda mode surround, dengan string dalam huruf besar persis seperti yang dilaporkan receiver Anda.
stepline pada dua yang terakhir itu. Sumber atau mode surround adalah kategori, bukan angka. Haluskan kurvanya dan garis akan meliuk antara Shield dan Xbox melewati apa pun yang ada di antaranya pada sumbu, menggambar input yang tidak pernah dipilih. Volume adalah besaran nyata dan boleh dihaluskan dengan jujur; kategori tidak.state_class: measurement, yang disimpan Home Assistant sebagai statistik jangka panjang selama bertahun-tahun.Tampilan lengkap, setiap bagian dan setiap kartu, dengan placeholder sebagai pengganti entity ID.
YOUR_RECEIVER dengan nama entity media player Anda, dan YOURMAC dengan dua belas karakter receiver Anda dari langkah 2.Sebelum menyimpulkan Anda salah membangunnya: sebagian memang tidak bisa menyala, dan ada baiknya tahu yang mana.
Sebuah tile hanya bisa menampilkan statusnya jika Home Assistant dapat membacanya, dan Home Assistant membaca receiver Anda dari dua tempat. Integrasi Denon AVR menampilkan hal-hal dasar pada entity media player. AVR Maestro menampilkan sisanya: aplikasi membuat sensor Status Bridge, sensor.avr_maestro_your_receiver, dan menuliskan pembacaan yang sudah dimilikinya ke sensor itu sebagai atribut.
| Pada entity media player | Pada sensor Status Bridge |
|---|---|
| Daya | Kurva Audyssey MultEQ |
| Sumber terpilih | Dynamic Volume dan level referensi |
| Mode surround | Slot Dirac mana yang dimuat |
| Volume dan bisu | Dimmer panel depan, mode Eco |
| Dynamic EQ, kadang-kadang | Preset speaker, nada, dan puluhan lainnya |
Kedua kolom kini bisa dibaca. Ambil nilai media player dari states['media_player.your_receiver'].attributes, dan nilai Status Bridge dengan state_attr('sensor.avr_maestro_your_receiver','dirac_slot'), sehingga sebuah tile menyala untuk pengaturan yang benar-benar aktif, bukan hanya menjalankan skrip yang mengubahnya.
Diukur pada receiver tempat ini dibuat: entity media player membawa sekitar dua puluh dari enam puluh kontrol, dan sensor Status Bridge menampilkan kira-kira empat puluh lagi. Dari keduanya, dasbor dapat membaca hampir semua yang bisa diubahnya - perbedaan antara deretan tombol dan panel kontrol sungguhan.
true, false, atau tidak datang sama sekali. Menganggap "tidak datang sama sekali" sebagai "mati" memajang jawaban salah yang meyakinkan di dinding Anda.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 %}
Tiga status, bukan dua.
grid_options: {columns: 9}. Untuk enam berjajar, 6.media_controls yang berisi on_off. Atur media_controls: [].multiline_secondary: true.experimental.color_threshold. Garis digambar sebagai gradien vertikal, dan segmen yang benar-benar horizontal memiliki tinggi nol untuk digradasi, sehingga tidak terlihat. Sesi 43 jam pada satu volume lenyap seluruhnya. Gunakan color solid.
Memulai · Layar Utama · Skenario · Ikon Kustom · Suara · Graphic EQ · Speaker · Mengapa kontrol terkunci · Asisten · Otomasi Rumah · Zona · Remote · Radio (FM/AM) · Tampilan Layar · Pengaturan · Bahasa · Kontrol Volume · Cadangkan & Pulihkan · Sedang Diputar & HEOS
Otomasi Rumah adalah satu-satunya fitur berbayar di AVR Maestro. Semua yang lain, termasuk asisten AI di perangkat, sudah termasuk.