🌐 اللغة
تقويم العائلة الذكي المنزلي DIY (نسخة Skylight)

📖 مقدمة
في الآونة الأخيرة، تعرضت زوجتي لسيل من الإعلانات على وسائل التواصل الاجتماعي حول تقاويم المنازل الذكية (Skylight، Cozyla، Hearth) وكانت على استعداد لإنفاق أكثر من 300 دولار على واحد منها. قبل أن أعطيها الموافقة، طلبت فرصة للبحث عنها.
لاحظت أن معظم الخيارات تقدم وظائف متشابهة ولكنها تختلف بشكل كبير في السعر. والأهم من ذلك، لم أجد أي ميزة بارزة لا يمكنني تنفيذها في Home Assistant.
الهدف: تقويم بشاشة لمس يوضع على سطح الطاولة، مقبول وفق معيار WAF (عامل قبول الزوجة)، ويتكامل بعمق مع منزلنا الذكي بدون رسوم شهرية.
💡 لماذا التصنيع الذاتي؟
اختيار طريق التصنيع الذاتي باستخدام Home Assistant قدم عدة فوائد مقارنة بشراء شاشة Skylight/Hearth:
- لا رسوم شهرية: تجنب الاشتراكات للحصول على ميزات "مميزة".
- تكامل سلس: يتواصل مع أضوائنا، المهام المنزلية (Grocy)، وأجهزة استشعار التواجد.
- إعادة استخدام الأجهزة القديمة: تم إعادة توظيف Mini PC وشاشة قياسية.
- الخصوصية: لا يوجد ارتباط بمورد أو خطر إيقاف الشركة لخدماتها.
🛠 اختيار الأجهزة
حالياً تم بناء النظام ليعرض لوحة التحكم على أي شاشة HD (1920x1080).
بالنسبة لي، كان الشرط أن "يشبه" skylight، يكون بشاشة لمس، يوضع على سطح الطاولة، وإمكانية نقله إلى أماكن مختلفة. لذلك اخترت الأجهزة الموضحة أدناه. ومع ذلك، قد يكون وضعك مختلفاً وقد تحتاج إلى تعديل ذلك حسب الحاجة، على سبيل المثال إذا كنت تريد عرضه على جهاز لوحي أو شيء آخر.
الأجهزة التي استخدمتها في البداية اخترتها بناءً على ما ذكرت أعلاه بالإضافة إلى أمل توسيع الوظائف باستخدام الكاميرا، السماعة والميكروفون. حالياً ربما كنت سأبنيه بطريقة مختلفة الآن بعد التجربة، لأنني لم أجد وقتاً لمعالجة أفكار الأجهزة الإضافية تلك.
- الشاشة: شاشة HP Engage لمس 15 بوصة. اخترتها على الشاشات المحمولة العادية لأنها تحتوي على سماعة، كاميرا ويب، وميكروفون مدمجين، مما يسمح بإضافة تحكم صوتي أو مكالمات فيديو مستقبلاً.
- الحاسوب: جهاز Mini PC قديم (NUC/Tiny PC) يعمل بنظام Windows/Linux بوضع Kiosk، أو Raspberry Pi 4.~~
✨ الميزات
- عرض عائلي وفردي: تبديل عرض تقاويم أفراد العائلة حسب الرغبة.
- مزامنة ثنائية الاتجاه: تعديل الأحداث على الشاشة أو على هواتفنا (تقويم Google).
- نافذة "إضافة حدث": واجهة مستخدم مخصصة لإضافة الأحداث مباشرة إلى تقاويم محددة من الشاشة.
- الطقس والتاريخ: رأس جميل وسهل القراءة.
- استجابة تلقائية: يعدل عدد الأيام تلقائياً حسب عرض الشاشة (جوال مقابل سطح المكتب).
⚙️ دليل التثبيت
ملاحظة: هذا الإعداد يستخدم حزمة YAML لإنشاء جميع المساعدين والبرمجيات النصية والمتغيرات الضرورية تلقائياً. لا تحتاج إلى إنشائها يدوياً.
1. المتطلبات الأساسية (HACS)
يجب أن يكون لديك HACS مثبتًا. يرجى تثبيت تكاملات الواجهة الأمامية التالية:
week-planner-cardbubble-cardconfig-template-cardcard-modbetter-moment-cardweather-cardbrowser_mod(مطلوب لعمل النوافذ المنبثقة)layout-card(مطلوب لعرض الأقسام)button-card(مطلوب للنافذة المنبثقة لإضافة الحدث)
2. الواجهة الخلفية (العقل المدبر)
- افتح ملف
configuration.yamlفي Home Assistant. - تأكد من إضافة هذا السطر تحت
homeassistant:لتمكين الحزم:
homeassistant:
packages: !include_dir_named packages
``- أنشئ مجلدًا باسم
packages في دليل إعدادات HA الخاص بك (إذا لم يكن لديك واحد).
حمّل packages/family_calendar.yaml من هذا المستودع.
ضع الملف داخل مجلد packages/ الخاص بك.
أعد تشغيل Home Assistant. 3. التقويمات
يمكنك استخدام تقويمات Google أو التقويمات المحلية.
#### الخيار أ: التقويم المحلي (الأسهل)
لاحظ أن هذا غير مُختبَر لأنني أستخدم تقويمات Google حصريًا
- اذهب إلى الإعدادات > الأجهزة والخدمات.
- أضف تكامل التقويم المحلي.
- أنشئ تقويمات بأسماء دقيقة:
Alice, Bob, Charlie, Daisy, Family.
إذا استخدمت هذه الأسماء، سيعمل الكود مباشرة!*#### الخيار ب: تقويم Google
- افتح
packages/family_calendar.yaml.
انتقل إلى البرنامج النصي add_google_calendar_event.
حدّث calendar_map ليشير إلى كيانات Google الحقيقية الخاصة بك:
`yaml
calendar_map:
"Alice": "calendar.alice_gmail_com"
"Bob": "calendar.bob_work_account"
`#### إعداد العطلات
نظرًا لتحديثات Home Assistant، تتم إضافة العطلات الآن عبر واجهة المستخدم:
- انتقل إلى الإعدادات > الأجهزة والخدمات > إضافة تكامل > العطلات.
- اختر بلدك.
- تحقق من معرف الكيان (مثلًا،
calendar.holidays). إذا كان مختلفًا عن الافتراضي، حدثه في لوحة التحكم YAML.4. لوحة التحكم (المظهر)
- أنشئ عرض لوحة تحكم جديد (عيّن نوع العرض إلى أقسام).
- انسخ الكود من dashboard.yaml.
- تخصيص:
- بحث واستبدال: استبدل
person.alice بكيانات أفراد عائلتك الفعلية.
الطقس: استبدل weather.home بمزود الطقس الخاص بك.
الخلفية: حدث رابط الصورة أسفل ملف yaml. الخطوة 5: السمة (اختياري)
للحصول على مظهر الخط المحدد (Ovo):
- تأكد من أن ملف
configuration.yaml يحتوي على هذا السطر تحت frontend:
`yaml
frontend:
themes: !include_dir_merge_named themes
`
- أنشئ مجلدًا باسم
themes في دليل الإعدادات الخاص بك.
قم بتنزيل themes/skylight.yaml وضعه في ذلك المجلد.
أعد تشغيل Home Assistant.
انتقل إلى ملفك الشخصي (رمز المستخدم أسفل اليسار) وغيّر السمة إلى Skylight.
ملاحظة: السمة ليست شاملة، لذا يرجى مراعاة ذلك
📐 كيف يعمل (تحت الغطاء)
منطق التصفية
لا تدعم بطاقة
week-planner-card إخفاء تقاويم محددة بشكل مباشر. لحل هذه المشكلة، استخدمت نصوص الإدخال التي تعمل كمرشحات Regex. عند النقر على زر شخص ما، يبدل مرشحهم بين
. (إظهار كل شيء) و ^$ (إخفاء كل شيء).
- تقوم بطاقة
config-template-card بحقن هذه المتغيرات في بطاقة التقويم بشكل ديناميكي.نص إنشاء الحدث
تستخدم نافذة "إضافة حدث" المنبثقة نصًا واحدًا يتعامل مع المنطق لعدة أشخاص وأنواع أحداث (طوال اليوم مقابل محددة الوقت).
yaml
Simplified Logic Example
target_calendar: "{{ calendar_map.get(states('input_select.calendar_select')) }}"choose:
- conditions: "All Day Event is ON"
- conditions: "All Day Event is OFF"
ملاحظات
كان منشوري الأصلي مجرد إعطاء نظرة عامة عالية المستوى حول كيفية القيام بذلك والسماح للناس بتعديل الكود ليعمل في سيناريوهاتهم الخاصة.
فعلت ذلك بشكل خاص لأن كل شاشة واحتياج مختلفان. لا يمكنني التطوير لجميع أحجام الشاشات، ولوحات المعلومات، وما إلى ذلك. لذا تم بناؤه ليعمل على الشاشة التي ذكرتها أو أي شاشة (1920x1080) ولكن يجب أن يكون قابلاً للتعديل للآخرين.
وبالحديث عن الشاشة، لقد اقترحت تلك في الأصل لأنها كانت معروضة للبيع في Woot وكانت طريقة اقتصادية جدًا للحصول على شاشة تعمل باللمس في ذلك الوقت. قد لا يكون هذا هو الحال الآن، لذا استخدم أي شاشة تناسبك. جهاز لوحي، شاشة لمس، هاتف، أي شيء. الشيء الرئيسي الذي ستحتاج إلى تعديله هو لوحة المعلومات.
--- Tranlated By Open Ai Tx | Last indexed: 2026-01-14 ---