
مساعد المنزل هو تطبيق مفتوح المصدر شعبي لتنظيم المنزل الذكي. تستند تجربة المؤلف الأولى مع Home Assistant إلى محاولة لدمج طباخ الأرز الذكي فيه. سيحاول المؤلف وصف المكونات والميزات الرئيسية لهذا التطبيق ، والتي أتيحت له الفرصة للتعرف عليها خطوة بخطوة. المقالة في بعض النواحي مراجعة ، في بعض النواحي دليل لأولئك الذين يرغبون في بدء التعرف على مساعد المنزل.
بالنسبة لأولئك الذين لديهم القليل من وقت الفراغ ، أنصحك بتخطي القول - الفصل الأول - والانتقال مباشرة إلى الفصل الثاني. ما عليك سوى معرفة أننا سنعمل مع طباخ الأرز الصيني الذكي من Xiaomi.
طنجرة الأرز الذكية
من الواضح أن طباخ الأرز هو طباخ الأرز. ويكي تبين لنا بخار الأرز من المتحف البريطاني الذي يعود تاريخه إلى 1250 قبل الميلاد في عام 1945 ، أصبحت شركة ميتسوبيشي أول شركة محلية الصنع تعمل في مجال طبخ الأرز في اليابان. نموذجنا - جهاز طبخ الأرز من Xiaomi - لا يمكنه طهي الأرز فقط. "إنه جهاز رائع لصنع ليس فقط الأرز ، ولكن أيضًا أنواع أخرى من الأطباق. يقول الإعلان "يمكن أن يطبخ الحساء والمعجنات وأكثر من ذلك بكثير". ولكن الشيء الأكثر أهمية هو وجود وحدة wi-fi ، برنامج مزود بقدرات التشغيل الآلي و 200+ وصفات مثبتة على البرامج. "إن الطريق إلى المنزل الذكي من خلال المعدة هو الصحيح ،" فكر المؤلف ، وقرر.
طباخ الأرز Xiaomi ، كما يلائم الجهاز الرقمي ، جذاب للغاية من الخارج ، يرضي بشكله المستدير وبساطته العامة. لتكوينه واستخدامه ، توفر الشركة المصنعة تطبيق Mi Home. بعد تسجيل حساب Mi ، يعثر البرنامج بسهولة على جهاز جديد ، وتقوم بتسجيله على شبكتك المحلية. ليست واجهة التطبيق هي الأسوأ ، وتوفر أدوات التشغيل الآلي الأساسية ، ويمكنها تلقي الإشعارات من الأجهزة. ومع ذلك ، هناك عيوب كبيرة. لن يكون الجميع سعداء بإرسال المعلومات إلى المطور حول كل نقرة للمستخدم. وغالبا ما يتم العثور على التعبير غير سارة اليوم اللون الوطني. بدلا من 200+ وصفات ، يتم ترجمة أربعة فقط ومتاحة باللغات الأجنبية. الباقي هو حصرا للشعب الصيني. عندما لا يتمكن طباخ الأرز "الذكي" من الوفاء بجميع واجبات الطهي الموعودة ، فحينها تصبح حزينًا. بعد التجول لبعض الوقت على الإنترنت ، صادف مؤلف حزين
المشروع التالي المثير للاهتمام (الفوائد الأبدية للمؤلف). التي تحولت إلى أن تكون مكرسة لتطوير وحدة لمساعد منزلي معين.
مساعد المنزل
أولا ، بعض المعلومات العامة. كما قيل لنا على
الصفحة الرئيسية لـ HA ، "هذا برنامج مفتوح المصدر لأتمتة المنزل الذكي التي تركز على الإدارة المحلية والخصوصية. تم تطويره بواسطة عمل مجتمع مفتوح من المتحمسين ، إنه رائع للعمل على Raspberry Pi أو خادم محلي. " عمر المشروع أكثر من خمس سنوات ، ويستخدم بيثون ورخصة أباتشي 2.0. إصدار الإصدار في وقت كتابة هذه السطور هو 0.99.3.
يستخدم HA وحدات منفصلة (تكاملات ، أو مكونات) لإدارة الأجهزة. إنشاء واحد بسيط جدا. على الموقع ، يمكنك العثور على كتالوج للوحدات
الرئيسية (المعتمدة والمدعومة من قبل المجتمع). من بين العدد الإجمالي (1485 قطعة) ، هناك مجموعة متنوعة تمامًا ، أسماء الأمازون ، google ، xiaomi ، وحتى يتم إدراج yandex في الكتالوج.
دعنا نحاول
تثبيت HA في بيئة افتراضية على سطح مكتب Linux. سنحتاج مدير حزمة python3 و pip.
python3 -m venv homeassistant
بعد ذلك ، ستصبح
واجهة المستخدم الرسومية HA متاحة على
http: // localhost: 8123 . عند تسجيل الدخول لأول مرة ، ستحتاج إلى إنشاء حساب مستخدم. واجهة الويب HA ضخمة للغاية. هناك عنصران مهمان يستحقان الإشارة في البداية هما علامة التبويب Configuration → General ، حيث يمكنك بسهولة إعادة تحميل ملفات التكوين أو الخادم نفسه. وكذلك صفحة المعلومات في قائمة أدوات المطورين ، حيث يمكنك رؤية سجلات الأخطاء.
تقوم HA بتخزين جميع بيانات المستخدم الضرورية ، في حالة نظام Linux ، في مجلد الإعدادات "~ / .homeassistant". تتم كتابة ملفات التكوين بتنسيق
YAML ،
وأهمها هو "config.yaml". فهو يجمع بين بيانات الوحدات ، والأتمتة ، وما إلى ذلك. تتيح لك ميزة الاستيراد تقسيم الإعدادات إلى ملفات منفصلة منظمة بشكل منطقي. يتم تخزين الوحدات النمطية في مجلدات فرعية "مكونات" (مدمجة) و "مكونات مخصصة".
يجب أن تكون هذه المعرفة كافية لنا لتثبيت وحدة نمطية جديدة. انسخ المجلد "xiaomi_cooker" من مستودعنا إلى "~ / .homeassistant / custom_components". حسب الوصف ، أضف إعدادات الوحدة النمطية إلى ملف "configuration.yaml":
القيام به. بعد إعادة تشغيل HA ، سيظهر إدخال وحدة جديدة في قسم General → Integrations بواجهة الويب.
أي وحدة هي مجموعة معينة من الكائنات (الكيانات) والخدمات (الخدمات ، في جوهرها - وظائف). الكائنات تخزين البيانات المختلفة الواردة من الأجهزة. على سبيل المثال ، sensor.xiaomi_cooker_temperature هي درجة حرارة طباخ الأرز ، و sun.sun هو موضع الشمس. يتم التعبير عن بيانات كائن ما بواسطة حالة واحدة أساسية (الحالة) ، ومجموعة عشوائية من السمات الإضافية (السمات). يتم استخدام الخدمات لنقل الأوامر والقيم إلى الأجهزة. على سبيل المثال ، xiaomi_cooker.start - الأمر لبدء تشغيل طباخ الأرز ، أو homeassistant.check_config - تهيئة البحث عن الأخطاء في ملفات إعدادات HA. تحتوي قائمة أدوات المطور بواجهة الويب على قسم الخدمات ، حيث يمكنك عرض قائمة الخدمات المتاحة لك واللعب مع مكالماتهم. في الجوار ، يوجد قسم الولايات ، حيث يمكنك عرض قيم الكائنات وتغييرها. تجدر الإشارة إلى أن التغييرات في قيم الكائنات في قسم الولايات هي من جانب واحد. أي على سبيل المثال ، إذا قمت بتغيير حالة light.state الكائن هنا من إيقاف إلى ، فإن هذا لن يؤثر على الحالة الحقيقية للجهاز ، وفي المرة التالية التي يتم فيها تحديث البيانات من الجهاز ، سيتم الكتابة فوق قيمة الكائن إلى حقيقي.
أتمتة
أداة الإدارة الرئيسية للمنزل الذكي هي
الأتمتة . يمكنك إضافتها وتحريرها باستخدام الواجهة الرسومية في قسم General → Automation أو مباشرة في ملف "automations.yaml". وتتمثل المهمة الرئيسية للأتمتة في الاتصال بالخدمات عند استيفاء شروط معينة. الأدوات الأساسية لتحديد شروط الاتصال بقيمة الكائنات ، بما في ذلك. بيانات الوقت. هناك حلول أكثر تحديدًا بقليل ، مثل الأحداث. كمثال بسيط للتشغيل الآلي ، سنقدم لك رمزًا يقوم بتحديث بيانات المؤلف الإضافية خلال فترة 15 دقيقة:
تجدر الإشارة إلى أنه حتى الآن لا يمكن تكوين جميع الأتمتة المتاحة (على سبيل المثال ، أعلاه) دون تحرير رمز yaml من خلال واجهة رسومية ، لكن المطورين يقولون إنهم يعملون بنشاط للقضاء على هذا العيب.
النموذجيه
بعد الأتمتة ، حان الوقت للحديث عن
القوالب (templating). تتيح لك عناصر الإعدادات المختلفة في ملفات yaml استخدام إدراجات
بلغة البرمجة النصية jinja2 . يتم توحيد العديد من هذه العناصر بالاسم الشائع "قوالب" ، مثل service_template أو trigger_template. باستخدام القوالب ، يمكننا الوصول إلى قيم
الكائنات في HA والقدرة على استخدام هذه البيانات في التعبيرات الرياضية والمنطقية المعقدة ، مما يوسع من إمكاناتنا إلى حد كبير. على سبيل المثال ، دعنا نأخذ رمزًا أكثر تعقيدًا قليلاً من أجهزة الاستشعار. ومقدار_charge مكتوبًا في "config.yaml". هذا هو
template_sensor ، أي "جهاز استشعار يقوم بتكوين البيانات بناءً على قيم الكائنات الأخرى". سيكون مستشعرنا بمثابة بعض التماثلية لبطارية مفرغة تدريجياً:
لقد تركنا الكيان _id فارغًا لأننا أضفنا بالفعل التشغيل الآلي الذي سيتسبب بشكل مستقل في تحديث بيانات الكائن.
مخطوطات بايثون
بدورها ، تعد برامج python النصية أداة بسيطة لإنشاء خدمات جديدة. بعد إضافة السطر: "python script:" إلى "configuration.yaml" ، ستصبح جميع الملفات ذات الملحق ".py" التي وضعناها في المجلد "~ / .homeassistant / python_scripts" متاحة كخدمات مع أسماء "python_scripts. < اسم الملف> ". يتم تنفيذ التعليمات البرمجية الخاصة بهم في بيئة محددة مسبقًا ، حيث تتيح لنا البيانات ومتغيراتها الوصول إلى الوسائط الخاصة بمكالمة الخدمة ، وكذلك كائنات وخدمات HA. على سبيل المثال ، نعطي رمز الملف "charge_set.py" للخدمة "python_scripts.charge_set". وظيفتها ستكون لتعيين شحن البطارية لدينا:
python_scripts / charge_set.py خلق التكامل
كل ما فعلناه بمساعدة القوالب ومخطوطات بايثون ، ربما سيكون من الأسهل القيام بذلك عن طريق كتابة وحدة منفصلة. كما ذكرنا سابقًا ، يتم تخزين الوحدات النمطية غير الرسمية في مجلد "custom_components". في المستقبل ، سنحتاج إلى كائن يقوم بتخزين معلومات حول الوصفة الحالية لمطبخ الأرز الخاص بنا ، وخدمة تتيح لك تغيير هذه البيانات. بناءً على
مثال من الوثائق ، سننشئ وحدة نمطية جديدة لهذا "overmind". الخطوة الأولى هي ملف custom_components / overmind / __ init__.py:
custom_components / overmind / __ init__.py بعد ذلك ، سنبلغ الوحدة النمطية الجديدة إلى ملف التكوين "configuration.yaml" ، مع إضافة سطر باسم الوحدة: "overmind:" إليه. تم حل المشكلة.
لوفليس ui
هذا هو اسم
الواجهة الأمامية HA المستخدمة. هذه الواجهة الرسومية ، والتي يتم من خلالها دعوة مستخدم عادي للتحكم في المنزل الذكي ، هي الصفحة الأولى لواجهة الويب HA. يتم تشكيل واجهة LUI من بطاقات من أنواع مختلفة ، والتي يمكن أن تعكس قيم الكائنات ، وتعمل على استدعاء وظائف وغيرها من المهام. يمكن توزيع البطاقات على الصفحات (العرض) ، عن طريق القياس باستخدام الإشارات المرجعية للمتصفح. يتم تنظيم الإعداد بسهولة من خلال نفس الواجهة الرسومية ، ولكن يمكن الوصول إليه أيضًا من خلال رمز yaml ، والذي يوجد أيضًا محرر نصوص مضمن به. أوصي بأن تنظر إلى صفحة
https://demo.home-assistant.io/ ، حيث توجد عدة أمثلة مختلفة لإعدادات LUI ، وحيث يمكنك رؤيتها والنقر عليها وتعديلها بسهولة.
مثال على إعداد واجهة المستخدم الرسوميةعند الحديث عن أوجه القصور في الواجهة ، للأسف ، يعترف المطورون بأن المشروع يحاول الجلوس في وقت واحد على كراسي سطح المكتب والهاتف الذكي. LUI ، بشكل افتراضي ، يحب تحديد موقع وحجم البطاقات بشكل مستقل ، والتي يمكن في بعض الأحيان تحويل صفحة تبدو عادية على الشاشة إلى فوضى على شاشة الهاتف الذكي ، والعكس بالعكس. هناك بعض الأدوات البسيطة لتبسيط الواجهة ، لكنها ، حسب تجربتي ، ليست فعالة دائمًا.
أعتقد أنه ليس من المنطقي وصف إنشاء الواجهة باستخدام أدوات رسومية ، لذلك سأقدم بعض الأمثلة في شكل رمز yaml الذي استخدمته. بعد أن قمت بإنشاء صفحة (عرض) منفصلة لطباخ الأرز الخاص بنا ، سنحاول ملؤه بأكثر العناصر اللازمة حتى لا تتسبب في الرفض عند استخدام شاشة الهاتف الذكي.
سنحاول هنا أدوات ترتيب الواجهة البسيطة جدًا ، وهي مكدس أفقي ومكدس رأسي. أولاً ، قم بإنشاء مكدس رأسي من بطاقات أنواع الكيانات زر وأجهزة الاستشعار. الأول سوف يعمل على إطلاق طباخ الأرز الخاص بنا ، الثاني - لعرض درجة الحرارة:
يشتمل مساعد الصفحة الرئيسية على أرشيف
لأيقونات تصميم المواد ، والتي ، من خلال الأسماء المناسبة (على سبيل المثال ، mdi: select) ، يمكن استخدامها في عناصر الإعدادات. يعد البرنامج النصي (في هذه الحالة ، وليس الثعبان ، ولكن yaml-) ، الذي اعتدنا أن نطلق عليه الخدمة ، أداة HA أخرى ملائمة.
الآن اجمع بين المكدس العمودي أعلاه مع البطاقة الشخصية الخاصة بنا في المكدس الأفقي الآن. كل شيء سيكون بهذه البساطة:
هنا تحتاج إلى تعليم السطر "صورة:". جميع الملفات التي نضعها في المجلد "~ / .homeassistant / www" تصبح متاحة على الرابط
http: // localhost / local / filename .
الخطوة التالية هي العمل قليلاً على زر الاتصال بالخدمة الذي أنشأناه. سيكون مناسبًا لنا إذا كان يعمل كمفتاح تبديل ، أي تشغيل / إيقاف ، وليس الطريقة التي يتم بها الآن. يمكن تحقيق ذلك من خلال استخدام بطاقة النوع الشرطي ، والتي يمكن ضبط عرضها على الشاشة عن طريق تحديد شروط معينة. يوجد أدناه رمز البطاقة ، وهو الزر لإيقاف طباخ الأرز ويكون مرئيًا فقط إذا كان طباخ الأرز في مرحلة إعداد الطبق:
عند إعادة كتابة رمز الزر الذي تم إنشاؤه مسبقًا لزر الطاقة بهذه الطريقة ، والجمع بينه وبين هذا ، نحصل على زر واحد يعمل بشكل متقطع.
نحن نكمل اهتمامنا ببطاقة أخرى - مع الوقت حتى نهاية الطهي (على غرار بطاقة درجة الحرارة) ، وواحدة أخرى مع تفاصيل الوصفة (مخصص: بطاقة وصفة) المعروضة. نتيجة لذلك ، حصلنا على شيء مثل هذا:
بطاقات مخصصة
مساعد المنزل ، بالإضافة إلى ثراء مجموعة أنواع البطاقات المضمنة ، بالطبع ، يوفر القدرة على إنشاء الخاصة بك. تسمى هذه البطاقات بطاقات مخصصة ، ويتم استخدام جافا سكريبت لإنشاءها.
فيما يلي مثالان رمز بسيط. من السهل العثور على بطاقات جاهزة تم إنشاؤها بواسطة العديد من
المتحمسين على الشبكة ، وإذا كنت ترغب في تجربة نفسك ، فسيكون من المفيد معرفة أن هناك
وحدات js خاصة تم إنشاؤها لتبسيط العمل على كتابة بطاقات جديدة. تجربتي مع javascript لا تزال أقل رغبة ، لذلك ، على سبيل المثال ، سأقدم فقط جزءًا صغيرًا من رمز البطاقة المستخدم لتحديد الوصفة الحالية وعرضها.
لاستخدام البطاقة الجديدة ، ستحتاج إلى إضافة الكود التالي في بداية ملف إعدادات LUI:
بطاقة وصفة resources:
وبين قائمة البطاقات:
- type: 'custom:recipe-card'
إخطارات
جزء ضروري من المنزل الذكي هو إرسال رسائل إلى المستخدم. في HA ، تسمى هذه الرسائل إعلامات وهناك نوعان أساسيان من الإعلامات. الأول هو الإخطارات المستمرة. لإرسالها ، يتم استخدام الخدمة المدمجة "persistent_notification.create". تتوفر قائمة بهذه الرسائل من خلال أيقونة الجرس في الواجهة الرسومية ، وهي تستخدم علامات تخفيض السعر وهي بسيطة للغاية في الأساس.
هناك أداة أخرى أكثر إثارة للاهتمام ، وهي وحدة الإخطار المدمجة ، والتي من خلال تثبيت وحدات إضافية تسمح لك بإرسال رسائل باستخدام
منصات الطرف الثالث . كمثال ، ضع في اعتبارك
وحدة لبرقية .
لاستخدام الوحدة ، أولاً وقبل كل شيء ، سنحتاج إلى إنشاء روبوت في التلغراف نفسه. عند الإعداد ، نحتاج إلى chat_id للمستخدم وواجهة برمجة تطبيقات الرمز المميز. كيفية الحصول على هذه البيانات - الموضحة بالتفصيل على الرابط أعلاه ، نفترض أننا مستعدون. الانتقال مباشرةً إلى تثبيت الوحدة النمطية ، أولاً ، كما فعلنا بالفعل ، انسخ شفرة المصدر الخاصة به إلى مجلد المكونات ، ثم أضف إعداداته إلى ملف "config.yaml":
configuration.yaml telegram_bot:
إعدادات زائد لوحدة الإخطار:
notify:
تسمح لنا وحدة التلغراف بإرسال رسائل أو صور أو مقاطع فيديو. على سبيل المثال ، سنقوم بإنشاء الأتمتة لإرسال رسالة مع صورة لإعلامنا بنهاية الطهي.
خاتمة
قد يكون "مساعد المنزل" موضع اهتمام لأولئك الذين يرغبون في محاولة تنظيم الإدارة المحلية للمنزل الذكي. هذا مشروع واسع ومثير للاهتمام ، يتسم بالانفتاح والنشاط بسبب الجهود التي يبذلها المجتمع. مجموعة متنوعة من أدوات مساعد المنزل لا يمكن إلا أن نفرح (لم يكن لدي الوقت لأذكر بعض الأدوات الهامة). كطرح ، يمكن للمرء أن يذكر التعقيد النسبي وعدم اكتمال الوثائق.
PS
في الآونة الأخيرة ، في 10 أكتوبر ، كان هناك ، لا أعرف ما إذا كان هذا يمكن أن يطلق عليه إصدار ، انتقال المشروع من الإصدار 0.99 إلى الإصدار 0.100.
اقتباس من ملاحظات الإصدار:
مرحبًا بك في ملاحظات إصدار إصدار رائع آخر! لا ، نحن لن نحقق 1.0 ، لكننا نفعل 0.100! نشعر أننا لسنا مستعدين بعد لأهدافنا الخاصة بـ 1.0 ، لكننا نحرز تقدماً كل يوم. للحصول على ذروة التسلل لما نفكر فيه ، تحقق من مدونتنا وضع بسيط في Home Assistant 1.0.