עשרה שלבים, ה-YAML של כל כרטיס, ותצוגה מלאה שאפשר להדביק בבת אחת. נבנה וצולם על Marantz CINEMA 30 אמיתי. מחליפים שתי מחרוזות והוא שלכם.
שני דברים מזינים את לוח הבקרה הזה, וההבדל ביניהם חשוב בכל שלב להלן.
| מגיע מ | נותן לכם |
|---|---|
| הסקריפטים המסונכרנים של AVR Maestro | כל פקד. קלטים, מצבי סראונד, Audyssey, Dirac, Smart Select, פריסטים, עמעום, אקו, והסצנות שלכם. |
| ישות נגן המדיה של האינטגרציה Denon AVR | מצב חי. הפעלה, מקור נבחר, מצב סראונד, עוצמת קול, השתקה. |
כולם נמצאים בחנות ברירת המחדל של HACS. ב-Home Assistant: HACS › Frontend › Explore & Download Repositories, חפשו את השם, לחצו Download, ואז רעננו את הדפדפן.
| מחפשים | משמש ל | אם מדלגים |
|---|---|---|
| Mushroom | כל אריחי הפקדים וסליידר עוצמת הקול | משתמשים בכרטיס button רגיל. עובד, אבל נראה יותר מרובע. |
| button-card | כותרות מדורים עם תווית חיה | משתמשים בכרטיס markdown, או בכותרות פשוטות. |
| card-mod | הצבעים והמצב הדלוק של האריח הפעיל | הכול עדיין עובד. פשוט שום דבר לא נדלק. |
| apexcharts-card | גרפי ההיסטוריה | משתמשים בכרטיס history-graph המובנה. |
כל קטע קוד בעמוד הזה משתמש בשני מציינים. מוצאים את שלכם פעם אחת, והשאר זה העתק-הדבק.
media_player.your_receiver → הגדרות › מכשירים & שירותים › המקלט שלכם › ישות נגן המדיה. משהו כמו media_player.marantz_cinema_30.script.avr_maestro_MAC_... → כלי פיתוח › מצבים, והקלידו avr_maestro במסנן הישויות. כל רשימת הפקדים שלכם תופיע.האמצע של כל מזהה סקריפט הוא כתובת ה-MAC של המקלט שלכם, שנים-עשר תווים באותיות קטנות, זהה בכולם. מעתיקים אותו פעם אחת. בכל מקום שבו העמוד הזה כותב MAC, שימו את שלכם.
unavailable. גרסאות ישנות נתנו לסקריפטים שמות לפי שם המקלט ולא לפי ה-MAC. אם סנכרנתם אז, הישנים עדיין ברשימה והם מתים. החיים הם אלה שנקראים לפי ה-MAC.מכאן והלאה כל שלב הוא: מוסיפים מדור, ואז מדביקים בו כרטיסים. כדי להדביק YAML, השתמשו בתפריט שלוש הנקודות של כרטיס ובחרו Edit in YAML, או בתפריט שלוש הנקודות של לוח הבקרה ובחרו Raw configuration editor כדי להדביק את הכול בבת אחת.
# 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
מתחילים עם הדבר הכי פשוט בלוח, כדי לוודא שמזהי הישויות נכונים לפני שבונים משהו מסובך. מוסיפים מדור, מוסיפים כרטיס, Edit in YAML, ומדביקים:
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 רגיל. בלי HACS.
לחצו עליו. אם המקלט משתנה, המזהים שלכם נכונים והכול להלן יעבוד. אם שום דבר לא קורה, חזרו לשלב 2.
זו התבנית שכדאי ללמוד, וכל אריח מקור וסראונד בלוח הוא עותק שלה. הכרטיס שולח סקריפט וצובע את עצמו לפי ישות המקלט, כך שהקלט שאתם באמת עליו דלוק והשאר לא.

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 %}
}
משנים שלושה דברים לכל קלט: הסקריפט, האייקון, והמחרוזת שמולה משווים.
שני דברים חייבים להיות נכונים, אחרת אריח לעולם לא ידלק:
source_list ו-sound_mode_list. אלה המחרוזות המדויקות. משווים באותיות קטנות, כמו למעלה.Xbox, בעוד שפקד AVR Maestro עדיין נקרא input_game1. התאימו למה שהמקלט מדווח, לא לשם הסקריפט.מצבי סראונד הם אותו כרטיס, עם sound_mode במקום source.
כותרת פשוטה היא שטח מת. שימו מתחתיה את הערך החי, ו"Sources" הופך ל"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
הרשת בת שתי השורות היא מה שמציב את התווית מתחת לכותרת ולא לצדה.
החליפו את attributes.source ב-attributes.sound_mode בכותרת הסראונד, וכן הלאה.
Home Assistant מדווח עוצמת קול כשבר. אף אחד לא מכוון מקלט ל"0.67". שורה אחת של חשבון מתקנת את זה, וכל המדור מתחיל להיראות כמו מקלט.

volume_level כעוצמה ראשית חלקי 100, ובמקלטי Denon ו-Marantz הערך MV 80 הוא נקודת הייחוס של 0 dB. לכן dB = volume_level × 100 − 80. ערך volume_level של 0.67 הוא עוצמה ראשית 67, שהם −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
קוראים את השם מהסקריפט במקום להקליד אותו, ושינוי שם של סצנה ב-AVR Maestro משנה את שם האריח בלי שום עריכה בלוח הבקרה.

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
שתי קריאות replace() מקצצות את הקידומת ואת שם המקלט משם הידידותי.
שורה שנייה שווה את הדקה הנוספת. קיר של כפתורים בשמות מליציים לא אומר לכם כלום ב-11 בלילה; שורה שאומרת מה כל אחד משחזר אומרת לכם על איזה ללחוץ.
ישות נגן המדיה של המקלט נרשמת ב-Home Assistant כמו כל ישות אחרת, ולכן אתם מקבלים היסטוריית האזנה בחינם. כל מה שלהלן מגיע מישות אחת: בלי חיישנים נוספים, בלי עוזרים, בלי שום הגדרה מוקדמת.

ציר הזמן הפשוט של המצבים לא צריך שום כרטיס מותאם, והוא זה ששווה הכי הרבה שיהיה לכם:
type: history-graph
hours_to_show: 168
entities:
- entity: media_player.your_receiver
name: Receiver
דלוק, כבוי, ומה עשה, לאורך שבוע.
עוצמת קול ב-dB משתמשת באותה המרה כמו בשלב 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 עם fill: last הופך אירועים דלילים לקו רציף. את ציר ה-y חייבים לשים ב-apex_config כדי שיתקבל.
ממוצע ושיא יומיים הופכים קו דוקרני למשהו עם צורה:
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'; }"
שתי סדרות מאותו מאפיין, מקובצות לפי יום.
fill: 'null' אומר שליום בלי קריאות אין עמודה, במקום שיועבר אליו הערך של אתמול.ושני אלה עונים על "על מה ובאיזה פורמט אני באמת צופה": מקור ומצב סראונד, משורטטים כציר זמן של מה שנבחר.
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'; }
שימו את המקורות שלכם במערך transform ובשני מערכי המעצבים. השאירו את אינדקס 0 כ-"Other".
ציר גרף צריך מספרים, ולכן transform ממפה כל שם מקור למיקום, והמעצבים ממפים בחזרה לתוויות ול-tooltip. עשו את המיפוי שלם: null (המקלט כבוי) נשאר רווח, וכל מה שלא ברשימה שלכם נופל ל-"Other", כך שאי אפשר לבלבל ביניהם. אותו כרטיס שוב עם sound_mode נותן לכם את מצב הסראונד, עם המחרוזות באותיות גדולות בדיוק כפי שהמקלט מדווח.
stepline על שני האחרונים. מקור או מצב סראונד הם קטגוריה, לא מספר. מחליקים את העקומה והקו מתנדנד בין Shield ל-Xbox דרך כל מה שיושב ביניהם על הציר, ומצייר קלט שמעולם לא נבחר. עוצמת קול היא כמות אמיתית ומחליקה ביושר; קטגוריה לא.state_class: measurement, ש-Home Assistant שומר כסטטיסטיקות לטווח ארוך במשך שנים.התצוגה המלאה, כל מדור וכל כרטיס, עם מציינים במקום מזהי ישויות.
YOUR_RECEIVER בשם ישות נגן המדיה שלכם, ו-YOURMAC בשנים-עשר התווים של המקלט שלכם משלב 2.לפני שאתם מניחים שבניתם לא נכון: חלקם לא יכולים להידלק, וכדאי לדעת אילו.
אריח יכול להציג מצב רק אם Home Assistant יכול לקרוא אותו, והוא קורא את המקלט שלכם משני מקומות. האינטגרציה Denon AVR מפרסמת את הבסיס בישות נגן המדיה. AVR Maestro מפרסם את השאר: הוא יוצר חיישן Status Bridge, sensor.avr_maestro_your_receiver, וכותב עליו כמאפיינים את הקריאות שכבר יש לו.
| בישות נגן המדיה | בחיישן Status Bridge |
|---|---|
| הפעלה | עקומת Audyssey MultEQ |
| מקור נבחר | Dynamic Volume ורמת הייחוס |
| מצב סראונד | איזה חריץ Dirac נטען |
| עוצמת קול והשתקה | עמעום הפאנל הקדמי, מצב אקו |
| Dynamic EQ, לפעמים | פריסט רמקולים, טון, ועוד עשרות |
שני העמודים קריאים עכשיו. קחו ערך של נגן מדיה מ-states['media_player.your_receiver'].attributes, וערך של Status Bridge עם state_attr('sensor.avr_maestro_your_receiver','dirac_slot'), כך שאריח נדלק עבור ההגדרה הפעילה בפועל ולא רק מפעיל את הסקריפט ששנה אותה.
נמדד במקלט שעליו זה נבנה: ישות נגן המדיה נושאת כעשרים מתוך שישים הפקדים, וחיישן Status Bridge מפרסם עוד בערך ארבעים. בין השניים, לוח בקרה יכול לקרוא כמעט כל מה שהוא יכול לשנות - ההבדל בין קיר של כפתורים לבין משטח בקרה.
true, כ-false, או בכלל לא. להתייחס ל"בכלל לא" כאל "כבוי" שם על הקיר שלכם תשובה בטוחה בעצמה וטועה.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 %}
שלושה מצבים, לא שניים.
grid_options: {columns: 9}. לשישה בשורה, 6.media_controls עם on_off בתוכו. הגדירו media_controls: [].multiline_secondary: true.experimental.color_threshold. הוא מצייר את הקו כגרדיאנט אנכי, ולקטע אופקי לחלוטין אין גובה להדרגה, ולכן הוא נעשה בלתי נראה. סשן של 43 שעות בעוצמה אחת נעלם לגמרי. השתמשו ב-color אחיד.
תחילת העבודה · מסך הבית · סצנות · אייקונים מותאמים אישית · צליל · אקולייזר גרפי · רמקולים · למה פקד נעול · העוזר · אוטומציה ביתית · אזורים · שלט · רדיו (FM/AM) · תצוגה על המסך · הגדרות · שפות · פקדי עוצמת קול · גיבוי & שחזור · מתנגן כעת & HEOS
אוטומציה ביתית היא הפתיחה בתשלום היחידה ב-AVR Maestro. כל השאר, כולל העוזר החכם שרץ במכשיר, כלול.