On adım, her kartın YAML'ı ve tek seferde yapıştırabileceğiniz eksiksiz bir görünüm. Gerçek bir Marantz CINEMA 30 üzerinde kuruldu ve fotoğraflandı. İki metni değiştirin, sizin olsun.
Bu gösterge panelini iki şey besler ve aşağıdaki her adımda aradaki fark önemlidir.
| Kaynağı | Sağladığı |
|---|---|
| AVR Maestro ile eşitlenen betikler | Her kontrol. Girişler, surround modları, Audyssey, Dirac, Smart Select'ler, ön ayarlar, kararma, eco, Sahneleriniz. |
| Denon AVR entegrasyonunun medya oynatıcı varlığı | Canlı durum. Güç, seçili kaynak, surround modu, ses, sessize alma. |
Dördü de varsayılan HACS mağazasında. Home Assistant'ta: HACS › Ön Yüz › Depoları Keşfet & İndir, adı aratın, İndir'e basın, ardından tarayıcınızı yenileyin.
| Aranacak ad | Kullanım amacı | Atlarsanız |
|---|---|---|
| Mushroom | Her kontrol karosu ve ses kaydırıcısı | Sade bir button kartı kullanın. Çalışır, ama daha köşeli görünür. |
| button-card | Canlı etiketli bölüm başlıkları | Bir markdown kartı ya da sade başlıklar kullanın. |
| card-mod | Renkler ve etkin karodaki yanık durum | Her şey yine çalışır. Hiçbir şey yanmaz. |
| apexcharts-card | Geçmiş grafikleri | Yerleşik history-graph kartını kullanın. |
Bu sayfadaki her kod parçası iki yer tutucu kullanır. Kendinizinkileri bir kez bulun, gerisi kopyala yapıştır.
media_player.your_receiver → Ayarlar › Cihazlar & Hizmetler › alıcınız › medya oynatıcı varlığı. Şuna benzer bir şey: media_player.marantz_cinema_30.script.avr_maestro_MAC_... → Geliştirici Araçları › Durumlar, ardından varlık filtresine avr_maestro yazın. Tüm kontrol listeniz görünür.Her betik kimliğinin ortası alıcınızın MAC adresidir: on iki küçük harfli karakter, hepsinde aynı. Bir kez kopyalayın. Bu sayfada MAC yazan her yere kendinizinkini koyun.
unavailable yazan olanları yok sayın. Eski sürümler betikleri MAC yerine alıcının adına göre adlandırıyordu. O zamanlar eşitlediyseniz bu eski betikler hâlâ listelenir ve ölüdür. Canlı olanlar MAC adıyla adlandırılmış olanlardır.Bundan sonra her adım şöyle: bir bölüm ekleyin, ardından kartları içine yapıştırın. YAML yapıştırmak için kartın üç nokta menüsünden YAML'da düzenle seçeneğini kullanın; ya da her şeyi bir seferde yapıştırmak için gösterge panelinin üç nokta menüsünden Ham yapılandırma düzenleyicisi seçeneğine gidin.
# 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
Tahtadaki en basit şeyle başlayın; böylece karmaşık bir şey kurmadan önce varlık kimliklerinizin doğru olduğunu görürsünüz. Bir bölüm ekleyin, bir kart ekleyin, YAML'da düzenle deyin ve yapıştırın:
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
Standart Home Assistant. HACS gerekmez.
Dokunun. Alıcı değişirse kimlikleriniz doğrudur ve aşağıdaki her şey çalışır. Hiçbir şey olmazsa 2. adıma dönün.
Öğrenmeye değer kalıp budur; panodaki her kaynak ve surround karosu bunun bir kopyasıdır. Kart bir betik gönderir ve rengini alıcı varlığından alır; böylece gerçekten açık olan giriş yanar, diğerleri yanmaz.

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 %}
}
Her giriş için üç şeyi değiştirin: betiği, simgeyi ve karşılaştırılan metni.
İki şeyi doğru yapın, yoksa bir karo hiç yanmaz:
source_list ve sound_mode_list özniteliklerini okuyun. Kesin metinler bunlardır. Yukarıdaki gibi küçük harfle karşılaştırın.Xbox bildirir, AVR Maestro kontrolü ise hâlâ input_game1 adını taşır. Betiğin adına değil, alıcının bildirdiğine göre eşleştirin.Surround modları aynı karttır; source yerine sound_mode kullanılır.
Sade bir başlık boşa giden alandır. Canlı değeri altına koyun, “Kaynaklar” da “Kaynaklar / Şu an Nvidia Shield” olsun.
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
Etiketi başlığın yanına değil altına koyan, iki satırlı ızgaradır.
Surround başlığında attributes.source yerine attributes.sound_mode yazın, diğerlerinde de böyle.
Home Assistant sesi kesir olarak bildirir. Kimse alıcıyı “0.67” değerine ayarlamaz. Tek satırlık bir hesap bunu düzeltir ve bölümün tamamı bir alıcı gibi okunmaya başlar.

volume_level değerini ana ses seviyesinin 100'e bölünmüş hali olarak yayınlar; Denon ve Marantz alıcılarda MV 80, 0 dB referansıdır. Yani dB = volume_level × 100 − 80. 0.67 değerindeki bir volume_level, ana ses seviyesi 67 demektir; bu da −13.0 dB eder.# 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
Adı yazmak yerine betikten okuyun; AVR Maestro'da bir Sahneyi yeniden adlandırdığınızda gösterge paneline dokunmadan karo da yeni adı alır.

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
İki replace() çağrısı, ön eki ve alıcı adını kolay addan ayıklar.
İkinci satır fazladan bir dakikaya değer. Havalı adlı düğmelerden oluşan bir duvar akşam 11'de size hiçbir şey söylemez; her birinin neyi geri yüklediğini söyleyen bir satır ise hangisine basacağınızı söyler.
Alıcının medya oynatıcı varlığı Home Assistant tarafından diğerleri gibi kaydedilir; yani dinleme geçmişi bedavadır. Aşağıdaki her şey o tek varlıktan gelir: ek sensör yok, yardımcı yok, önce yapılandırılacak hiçbir şey yok.

Sade durum zaman çizelgesi hiç özel kart gerektirmez ve sahip olmaya en değer olanıdır:
type: history-graph
hours_to_show: 168
entities:
- entity: media_player.your_receiver
name: Receiver
Bir hafta boyunca açık, kapalı ve ne yaptığı.
dB cinsinden ses, 7. adımdaki dönüşümün aynısını kullanır:
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
fill: last ile group_by, seyrek olayları kesintisiz bir çizgiye çevirir. Y ekseninin etkili olması için apex_config içine konması gerekir.
Günlük ortalama ve tepe değeri, sivri bir çizgiyi şekli olan bir şeye dönüştürür:
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'; }"
Aynı öznitelikten iki seri, güne göre gruplanmış.
fill: 'null', okuması olmayan bir güne dünden devralınan bir çubuk yerine çubuk verilmemesi demektir.Ve “asıl ne üzerinde, neyle izliyorum” sorusunu yanıtlayan ikisi: kaynak ve surround modu, hangisinin seçili olduğunu gösteren bir zaman çizelgesi olarak çizilir.
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'; }
Kendi kaynaklarınızı transform dizisine ve her iki biçimlendirici dizisine koyun. 0 numaralı dizini “Diğer” olarak bırakın.
Grafik ekseni sayı ister; bu yüzden transform her kaynak adını bir konuma eşler, biçimlendiriciler de etiket ve ipucu için geri çevirir. Eşlemeyi tam yapın: null (alıcı kapalı) boşluk olarak kalır ve listenizde olmayan her şey “Diğer”e düşer; böylece ikisi asla karışmaz. sound_mode ile aynı kartı kullanırsanız surround modunu elde edersiniz; metinler alıcınızın bildirdiği gibi büyük harfle olmalıdır.
stepline değerini koruyun. Kaynak ya da surround modu bir kategoridir, sayı değil. Eğriyi yumuşatırsanız çizgi, eksende aralarında kalan her şeyin üzerinden Shield ile Xbox arasında savrulur ve hiç seçilmemiş bir girişi çizer. Ses gerçek bir niceliktir ve dürüstçe yumuşar; kategori yumuşamaz.state_class: measurement şablon sensörüne ihtiyacınız var; Home Assistant bunu yıllarca uzun vadeli istatistik olarak tutar.Eksiksiz görünüm, her bölüm ve her kart; varlık kimlikleri yerine yer tutucularla.
YOUR_RECEIVER yerine medya oynatıcı varlığınızın adını, YOURMAC yerine 2. adımdaki alıcınıza ait on iki karakteri yazın.Yanlış kurduğunuzu düşünmeden önce: bazıları yanamaz ve hangileri olduğunu bilmeye değer.
Bir karo, ancak Home Assistant durumu okuyabiliyorsa gösterebilir ve alıcınızı iki yerden okur. Denon AVR entegrasyonu temel bilgileri medya oynatıcı varlığında yayınlar. Gerisini AVR Maestro yayınlar: bir Status Bridge sensörü, sensor.avr_maestro_your_receiver, oluşturur ve zaten elinde olan okumaları öznitelik olarak üzerine yazar.
| Medya oynatıcı varlığında | Status Bridge sensöründe |
|---|---|
| Güç | Audyssey MultEQ eğrisi |
| Seçili kaynak | Dynamic Volume ve referans seviyesi |
| Surround modu | Hangi Dirac yuvası yüklü |
| Ses ve sessize alma | Ön panel kararma, Eco modu |
| Dynamic EQ, bazen | Hoparlör ön ayarı, ton ve düzinelercesi |
Artık her iki sütun da okunabilir. Medya oynatıcı değerini states['media_player.your_receiver'].attributes ile, Status Bridge değerini state_attr('sensor.avr_maestro_your_receiver','dirac_slot') ile alın; böylece bir karo yalnızca ayarı değiştiren betiği çalıştırmakla kalmaz, gerçekten etkin olan ayar için yanar.
Bunun kurulduğu alıcıda ölçülen: medya oynatıcı varlığı altmış kontrolün yaklaşık yirmisini taşıyor, Status Bridge sensörü ise kabaca kırk tanesini daha yayınlıyor. İkisi birlikte, bir gösterge paneli değiştirebildiği hemen her şeyi okuyabiliyor - bir düğme duvarı ile bir kontrol yüzeyi arasındaki fark bu.
true, false olarak gelir ya da hiç gelmez. “Hiç gelmemesini” “kapalı” saymak, duvarınıza kendinden emin yanlış bir cevap koyar.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 %}
İki durum değil, üç durum.
grid_options: {columns: 9} yapın. Altı karo için 6.on_off bulunan media_controls kartıdır. media_controls: [] yapın.multiline_secondary: true ekleyin.experimental.color_threshold. Çizgiyi dikey bir renk geçişiyle çizer ve tam yatay bir parçanın geçiş uygulanacak yüksekliği sıfırdır, bu yüzden görünmez olur. Tek ses seviyesinde geçen 43 saatlik bir oturum tamamen kayboldu. Düz bir color kullanın.
Başlarken · Ana Ekran · Sahneler · Özel Simgeler · Ses · Graphic EQ · Hoparlörler · Bir kontrol neden kilitli · Asistan · Ev Otomasyonu · Bölgeler · Uzaktan Kumanda · Radyo (FM/AM) · Ekran Menüsü · Ayarlar · Diller · Ses Kontrolleri · Yedekleme & Geri Yükleme · Şimdi Çalıyor & HEOS
Ev Otomasyonu, AVR Maestro'daki tek ücretli kilittir. Cihaz üzerindeki yapay zeka asistanı dahil geri kalan her şey ücretsizdir.
Ev Otomasyonu sayfasına dön → · Kullanım Kılavuzunun tamamı →