يبني لك التطبيق لوحة تحكم تعمل عند المزامنة - وهذه الصفحة هي النسخة الفاخرة المبنية يدويًا. عشر خطوات، وشيفرة YAML لكل بطاقة، وعرض كامل يمكنك لصقه دفعة واحدة. بلاط من الزجاج الأخضر، وقراءة مباشرة للصورة، ومشاهدك، ورسم بياني لساعات الليزر، كلها من مستشعر واحد لجهاز العرض. غيّر نصّين وتصبح لوحتك.
configuration.yaml وإعادة تشغيل Home Assistant. هذا ما ينشئ النصوص البرمجية التي يستدعيها كل زر تحكم أدناه.هناك مصدران يغذّيان لوحة التحكم هذه، والفرق بينهما مهم في كل خطوة أدناه.
| المصدر | ما يوفّره لك |
|---|---|
مستشعر جهاز العرض، sensor.YOUR_PROJECTOR | كل قراءة. التشغيل والمدخل ووضع الألوان وكل أرقام الصورة وHDR والإشارة والعدسة والهندسة وساعات المصباح. مباشرة بمجرد تسجيل الدخول والمزامنة، دون الحاجة إلى كتلة النسخ. |
النصوص البرمجية المزامنة من التطبيق، script.projpilot_YOURSERIAL_... | كل عنصر تحكم. التشغيل والمداخل وأوضاع الألوان وذاكرات العدسة ومشاهدك. لا توجد هذه إلا بعد لصق كتلة النسخ وإعادة تشغيل Home Assistant ولمس المزامنة مع HA. |
الأربع كلها موجودة في متجر HACS الافتراضي. في Home Assistant: HACS › الواجهة الأمامية › استكشاف & تنزيل المستودعات، ابحث عن الاسم، ثم نزّل، ثم أعد تحميل المتصفح.
| ابحث عن | يُستخدم من أجل | إن تخطيته |
|---|---|---|
| Mushroom | كل بلاطة معلومات وزر تحكم وبلاطة مشهد | استخدم بطاقة button عادية. تعمل، لكن شكلها أكثر تربيعًا. |
| button-card | البطاقة الرئيسية، مع تسميتها المباشرة | استخدم بطاقة entity، أو بطاقة قالب Mushroom بتفاصيل أقل. |
| card-mod | خلفية الزجاج الأخضر والحدود والتدرجات | كل شيء يعمل رغم ذلك. لكن لا شيء يحصل على توهجه. |
| mini-graph-card | سجل ساعات الليزر تحت قسم الصيانة | استخدم بطاقة history-graph المدمجة. |
كل مقطع في هذه الصفحة يستخدم عنصرَين نائبَين. اعثر على قيمتيك مرة واحدة، والباقي نسخ ولصق.
sensor.YOUR_PROJECTOR → أدوات المطوّر › الحالات في Home Assistant، وصفِّ بحسب projector_pilot. ستجد شيئًا مثل sensor.projector_pilot_epson_qb1000b_qb1000w.YOURSERIAL → افتح التطبيق، الإعدادات › أتمتة المنزل › Home Assistant. يظهر المعرّف المشتق من الرقم التسلسلي هناك، وهو الجزء الأوسط من اسم كل نص برمجي مزامن: script.projpilot_YOURSERIAL_power_on وscript.projpilot_YOURSERIAL_input_hdmi1 وهكذا.يمكنك أيضًا تصفية أدوات المطوّر › الحالات بحسب projpilot لترى قائمة عناصر التحكم المزامنة كلها دفعة واحدة، بعد إتمام كتلة النسخ والمزامنة في الخطوة 1.
إعدادات العرض نفسه، إن فضّلت كتابتها:
title: Projector Pilot views: - title: Projector Pilot path: projector-pilot icon: mdi:projector cards: []
ابدأ بشيء يقرأ فقط، لتتأكد من صحة معرّف الكيان قبل أن تلمس أي شيء يرسل أمرًا. هذه البلاطة تعمل مباشرة بمجرد وجود مستشعر جهاز العرض، دون كتلة نسخ ودون مزامنة. أضف بطاقة، ثم التحرير بصيغة YAML، ثم الصق:
type: custom:mushroom-template-card
primary: Brightness
secondary: '{{ state_attr(''sensor.YOUR_PROJECTOR'',''brightness'') }}'
icon: mdi:brightness-6
icon_color: green
layout: vertical
fill_container: true
card_mod:
style: 'ha-card { background: rgba(18,26,20,0.60); border: 1px solid rgba(61,220,107,0.20);
border-radius: 16px; box-shadow: 0 6px 22px rgba(0,0,0,0.32); backdrop-filter: blur(8px);
min-height: 104px; }'
الشكل نفسه يقرأ أيًّا من الخصائص الثمانين تقريبًا (~80) التي يحملها المستشعر: بدّل brightness بـ contrast أو gamma أو color_temp أو hdr_pq أو lamp_hours، أو أي شيء تريده على البلاطة.
احفظها. إن ظهر رقم أو كلمة حقيقية فمعرّف الكيان صحيح وكل ما يلي سيعمل. وإن ظهرت فارغة فعُد إلى الخطوة 2.
العنوان العادي مساحة ميتة. هذه بطاقة markdown بخلفية متدرجة من card-mod، وهي ما يحوّل كومة البلاط إلى أقسام لها أسماء. كل قسم في اللوحة يبدأ بواحدة منها، بتسمية ورمز تعبيري مختلفين فقط.
type: markdown
content: '🔌 **POWER & SOURCE**'
card_mod:
style: 'ha-card { background: linear-gradient(135deg, rgba(61,220,107,0.30), rgba(16,120,60,0.30));
border: 1px solid rgba(61,220,107,0.45); border-radius: 14px; box-shadow: 0 6px 20px rgba(0,0,0,0.3); }
ha-markdown { padding: 12px 20px !important; } ha-markdown p { margin: 0 !important;
letter-spacing: 3px; color: #eafff0; font-size: 14px; font-weight: 700; }'
غيّر رمز الإيموجي ونص التسمية؛ أما كتلة card-mod فهي نفسها في كل قسم.
هذا الزر يرسل أمرًا ولا يكتفي بقراءة قيمة، لذا يحتاج إلى وجود النصوص البرمجية أولًا. يستدعي script.projpilot_YOURSERIAL_power_on، الذي لا يكتبه التطبيق إلا بعد أن تلصق كتلة النسخ فيه في configuration.yaml، وتعيد تشغيل Home Assistant، وتلمس المزامنة مع HA.
type: custom:mushroom-template-card
primary: Power On
icon: mdi:power
icon_color: green
layout: vertical
fill_container: true
tap_action:
action: call-service
service: script.projpilot_YOURSERIAL_power_on
card_mod:
style: 'ha-card { background: linear-gradient(135deg, rgba(61,220,107,0.16), rgba(16,90,46,0.20));
border: 1px solid rgba(61,220,107,0.34); border-radius: 16px; box-shadow: 0 6px 22px rgba(0,0,0,0.32);
min-height: 92px; }'
البطاقة نفسها تصلح لإيقاف التشغيل وإخفاء الشاشة وHDMI 1 وHDMI 2 وكتم الصوت والصورة ووضع ألوان أو ذاكرة عدسة: يتغير فقط التسمية والأيقونة وservice.
البطاقة الرئيسية في أعلى اللوحة هي button-card: حالة تشغيل كبيرة، وملخص من سطر واحد مبني من عدة خصائص معًا، ومعالجة الزجاج الأخضر على البطاقة كلها لا على حدودها فقط.
type: custom:button-card entity: sensor.YOUR_PROJECTOR name: Epson QB1000 show_state: true show_label: true size: 48px state_display: '[[[ return entity.state==''on'' ? ''Powered on'' : ''Standby''; ]]]' label: '[[[ var a=entity.attributes; return (a.input||''-'')+'' • ''+(a.color_mode||''-'')+ '' • ''+(a.video_range||''-'')+'' • ''+(a.lamp_hours||0)+'' h''; ]]]' styles: card: - height: 176px - background: linear-gradient(135deg, rgba(61,220,107,0.32), rgba(11,64,34,0.6)) - border: 1px solid rgba(61,220,107,0.5) - border-radius: 22px - box-shadow: 0 12px 36px rgba(0,0,0,0.42) - padding: 20px state: - color: '[[[ return entity.state==''on'' ? ''#3ddc6b'' : ''#8a9'' ]]]'
مختصرة إلى الأجزاء التي تتغير من تثبيت إلى آخر. تحدد البطاقة الكاملة أيضًا مواضع الأيقونة والاسم والتسمية في الشبكة؛ انظر التنزيل في الخطوة 10 لكل التفاصيل.
تفضّل شريطًا أنحف؟ تؤدي mushroom-chips-card المهمة نفسها في صف واحد من الرقائق الصغيرة: حالة التشغيل والمدخل ووضع الألوان ونطاق الفيديو وساعات المصباح، وكل منها قالب يقرأ state_attr('sensor.YOUR_PROJECTOR', ...). استخدم أحدهما، لا الاثنين، في أعلى اللوحة.
كل مشهد تحفظه في التطبيق يصبح نصًا برمجيًا باسم script.projpilot_YOURSERIAL_scene_<id> بعد المزامنة، وبلاطته هي بطاقة زر التحكم نفسها من الخطوة 6 مع اسم مشهد وأيقونة.
type: custom:mushroom-template-card
primary: Movie Night
icon: mdi:movie-open
icon_color: green
layout: vertical
fill_container: true
tap_action:
action: call-service
service: script.projpilot_YOURSERIAL_scene_YOURSCENE1
card_mod:
style: 'ha-card { background: linear-gradient(135deg, rgba(61,220,107,0.16), rgba(16,90,46,0.20));
border: 1px solid rgba(61,220,107,0.34); border-radius: 16px; box-shadow: 0 6px 22px rgba(0,0,0,0.32);
min-height: 92px; }'
استبدل YOURSCENE1 بالمعرّف الظاهر لذلك المشهد في قائمة عناصر التحكم المزامنة بالتطبيق. بلاطة واحدة لكل مشهد، في horizontal-stack.
يسجّل Home Assistant مستشعر جهاز العرض كأي مستشعر آخر، لذا فإن lamp_hours لديه سجل مجانًا. دون مستشعرات إضافية ودون مساعدات ودون إعداد مسبق، ضمن قسم الصيانة.
type: custom:mini-graph-card
entities:
- entity: sensor.YOUR_PROJECTOR
attribute: lamp_hours
name: Laser hours
name: Laser hours
icon: mdi:lightbulb-on-outline
line_color: '#3ddc6b'
line_width: 4
hours_to_show: 336
points_per_hour: 0.5
height: 96
animate: true
card_mod:
style: 'ha-card { background: rgba(18,26,20,0.60); border: 1px solid rgba(61,220,107,0.20);
border-radius: 16px; box-shadow: 0 6px 22px rgba(0,0,0,0.32); backdrop-filter: blur(8px); }'
336 ساعة تعادل أسبوعين. تتزايد ساعات الليزر والمصباح بثبات بدلًا من القفز، لذا تكفي نافذة أسبوعين عادةً لرؤية الاتجاه دون أن يبدو الرسم البياني مسطحًا.
العرض الكامل، بكل قسم وكل بطاقة من لقطة الشاشة في أعلى هذه الصفحة، مع عناصر نائبة بدلًا من معرّفات الكيانات.
YOUR_PROJECTOR بمعرّف كيان مستشعر جهاز العرض من الخطوة 2، وYOURSERIAL بالمعرّف المشتق من رقمك التسلسلي من الخطوة 2.YOURSCENE1 وYOURSCENE2 وYOURSCENE3 بمعرّفات مشاهدك الثلاثة، أو أضف بلاطًا واحذف منها لتطابق عدد المشاهد لديك فعلًا.configuration.yaml، وتعيد تشغيل Home Assistant، وتلمس المزامنة مع HA.قارن اسم الخاصية بما يحمله المستشعر فعلًا: أدوات المطوّر › الحالات، ثم كيان sensor.YOUR_PROJECTOR لديك، واقرأ قائمة خصائصه. بعض القراءات، مثل HDR PQ أو HDR HLG، لا تمتلئ إلا حين يستقبل جهاز العرض هذا النوع من الإشارة فعلًا، لذا قد يكون «غير معروف» في هاتين القراءتين صحيحًا لا عطلًا. وإن بدا المستشعر كله خاليًا فأيقظ جهاز العرض: فالجهاز في وضع الاستعداد ينشر القليل جدًا.
إما أنك لم تلصق كتلة النسخ بعد، أو لم يُعد تشغيل Home Assistant منذ لصقها. تستدعي أزرار التحكم والمشاهد نصوصًا برمجية يكتبها التطبيق، ولا توجد هذه النصوص حتى تلصق كتلة النسخ في configuration.yaml من الإعدادات › أتمتة المنزل › Home Assistant في التطبيق، وتعيد تشغيل Home Assistant مرة واحدة، وتلمس المزامنة مع HA. شغّل اختبار الاتصال في التطبيق أولًا - فهو يخبرك ما إذا كانت الكتلة موجودة قبل أن تبحث عن خطأ في اللوحة.
صفِّ بحسب projpilot بدلًا من الرقم التسلسلي الكامل - فمن الأسهل رؤية القائمة كلها. وإن كان عنصر تحكم أو مشهد أضفته مؤخرًا مفقودًا، فالمس المزامنة مع HA مرة أخرى؛ فهي تحدّث في مكانها ولا تتطلب إعدادًا جديدًا. وإن كانت نصوص برمجية قديمة ميتة تزدحم بها القائمة بعد حذف مشهد، فاستخدم إزالة النصوص البرمجية اليتيمة في التطبيق.
النمط ثابت، أما الجزء الأوسط فلا. يُسمّى مستشعرك باسم طراز جهاز العرض الخاص بك، ويحمل كل نص برمجي الرقم التسلسلي لجهازك أنت، لا العناصر النائبة في هذه الصفحة. احصل على كليهما من أدوات المطوّر › الحالات ومن شاشة Home Assistant في التطبيق، كما في الخطوة 2، واستخدمهما بدلًا من كتابة نص المثال.
أتمتة المنزل إضافة لمرة واحدة. دون اشتراك ودون حساب ودون سحابة. عملية شراء واحدة تفتحها على كل منصة تملكها.
لا. عندما تلمس المزامنة مع HA في التطبيق، يبني لك لوحة Projector Pilot جاهزة مباشرة داخل Home Assistant - مستشعر جهاز العرض المباشر مع زر لكل عنصر تحكم ولكل مشهد - وتظهر في الشريط الجانبي باسم Projector Pilot. هذه الصفحة مخصصة لبناء النسخة الأغنى بالزجاج الأخضر يدويًا، أو لتخصيص ما أنشأته المزامنة.
للحصول على المظهر نفسه في لقطة الشاشة، نعم: Mushroom وbutton-card وcard-mod وmini-graph-card. لا يلزم أي منها لتعمل عناصر التحكم الأساسية - فكل زر مجرد استدعاء نص برمجي عادي، والبطاقات المخصصة هي التنسيق فوقه.
ينشر مستشعر جهاز العرض قراءاته بمجرد تسجيل الدخول والمزامنة في التطبيق، لذا تكون بلاط المعلومات مباشرة فورًا. أما أزرار التحكم والمشاهد فتستدعي نصوصًا برمجية لا توجد في Home Assistant إلا بعد أن تلصق كتلة النسخ من التطبيق في configuration.yaml، وتعيد تشغيل Home Assistant، وتلمس المزامنة مع HA مرة واحدة.
النمط سينطبق، أما الأحرف نفسها فلا. يُسمّى مستشعر جهاز العرض باسم طراز جهازك، ويُسمّى كل نص برمجي باسم الرقم التسلسلي لجهازك. أينما تكتب هذه الصفحة YOUR_PROJECTOR فضع معرّف كيان مستشعرك أنت، وأينما تكتب YOURSERIAL فضع المعرّف المشتق من الرقم التسلسلي والظاهر في شاشة Home Assistant بالتطبيق.