قد تؤدي إعادة تشغيل حاوية Home Assistant إلى جعل النظام يبدو مختلفًا لفترة وجيزة، حتى عندما يكون الإعداد الدائم سليمًا تمامًا. والسبب هو أن النسخة قيد التشغيل تحتوي على كلٍّ من حالة دائمة على القرص وحالة مؤقتة في الذاكرة. تؤدي إعادة تشغيل الحاوية إلى إتلاف الحالة الأخيرة وتطلب من التكاملات إعادة بنائها.
ولهذا قد يمر الكيان بحالة غير معروف أو غير متاح، وقد يظهر جهاز MQTT مجددًا فور وصول الرسائل المحتفظ بها، بينما قد تظل خدمة خارجية مفقودة إلى أن تنجح محاولة إعادة الاتصال. إعادة التشغيل هي حدث لإعادة بناء الحالة، وليست مجرد إيقاف مؤقت واستئناف للعملية نفسها الموجودة في الذاكرة.
بيئة تشغيل الحاوية قابلة للاستبدال؛ أما /config فهو الحد الفاصل للتخزين الدائم
تُشغَّل حاوية Home Assistant عادةً عبر إعادة إنشاء صورة الحاوية مع الإبقاء على وحدة تركيب الإعدادات. ولا ينبغي أن تتطلب ترقية الصورة أو تغيير بيئة التشغيل أو إعادة تشغيل العملية إعادة بناء المنزل الذكي من الصفر، ما دام المسار الدائم موصولًا على نحو صحيح.
إن سير عمل حاوية Home Assistant الحالي يعيد إنشاء الحاوية صراحةً عند تغيير الإصدارات. وينجح هذا النموذج لأن حالة التطبيق يُفترض أن تبقى خارج بيئة التشغيل القابلة للتخلص منها.
يختفي عند إعادة التشغيل كل ما يوجد في ذاكرة العملية فقط. ويتعين على العملية الجديدة إعادة قراءة الإعدادات والسجلات وقواعد البيانات ومدخلات التكاملات قبل أن تتمكن من إعادة إنشاء العرض المباشر نفسه.
يبدأ Core آلة حالات تشغيل جديدة
عند كل بدء تشغيل، ينشئ Home Assistant عملية Core جديدة تحتوي على حلقة أحداث جديدة، وآلة حالات، وخدمات، ومؤقتات، وكائنات تشغيل جديدة للتكاملات. ويمكن لسجل الكيانات تحديد الكيانات المعروفة، لكن القيمة الحالية للجهاز الفعلي لا تزال بحاجة إلى الاستعادة أو الجلب أو الإبلاغ عنها.
ينشئ Recorder أيضًا عملية تسجيل جديدة في كل مرة يبدأ فيها Home Assistant. وتبقى صفوف قاعدة البيانات التاريخية محفوظة، لكن العملية الحالية تمثل فترة تشغيل جديدة، لا استمرارًا للفترة القديمة.
يهم هذا التمييز عند مقارنة السجلات أو الطوابع الزمنية لقاعدة البيانات حول وقت إعادة التشغيل. فسجل التاريخ يثبت ما رصده Home Assistant سابقًا، لكنه لا يثبت تلقائيًا أن العملية الجديدة أعادت بالفعل إنشاء اتصال الجهاز المباشر.
تعيد التكاملات ملء حالة التشغيل بسرعات مختلفة
تتصل بعض التكاملات بجهاز محلي فورًا، بينما تنتظر تكاملات أخرى نظام DNS أو وسيطًا أو واجهة API سحابية أو جسرًا لاسلكيًا أو حاوية أخرى. لذلك تصبح كياناتها متاحة في أوقات مختلفة، رغم أن Home Assistant Core نفسه قد بدأ العمل بالفعل.
يفرض نموذج Home Assistant الحالي لفشل الإعداد على التكاملات غير المتاحة مؤقتًا الدخول في مسار لإعادة المحاولة كي تتمكن من التعافي عندما يصبح الجهاز أو الخدمة قابلًا للوصول. وهذا يعني أن الحالة الظاهرة بعد إعادة التشغيل قد تتغير لدقائق، من دون أن يدل ذلك على تغيّر البيانات الدائمة.
قد تبدو إعادة تشغيل ثانية بعد أن تصبح كل التبعيات جاهزة أسرع بكثير من إعادة تشغيل المكدس بالكامل، لأن الشبكة والوسيط وقاعدة البيانات والأجهزة لم تعد مضطرة إلى التزامن في الوقت نفسه.
يجعل MQTT إعادة بناء الحالة أكثر وضوحًا
يُعد MQTT مثالًا مفيدًا، لأن الوسيط قد يحتفظ برسائل الاكتشاف أو الحالة بصورة مستقلة عن عملية Home Assistant. وعندما يعيد Home Assistant الاتصال، يمكن إعادة تشغيل البيانات المحتفظ بها، وقد تستعيد الكيانات آخر قيمة أبلغ عنها بسرعة.
يوثّق تكامل MQTT أن الكيانات المكتشفة تصبح غير متاحة بعد إعادة التشغيل إلى أن تتم معالجة الاكتشاف، بينما يمكن إعادة تشغيل رسائل الاكتشاف والحالة المحتفظ بها عند إعادة إنشاء الاشتراكات. كما يرسل Home Assistant رسالة ميلاد يمكن للأجهزة استخدامها لإعادة نشر الاكتشاف والحالة الحديثة.
ومع ذلك، تظل القيمة المحتفظ بها آخر تقرير معروف، ولا تُعد دليلًا على أن الجهاز الفعلي قابل للوصول حاليًا. وينبغي تقييم مواضيع التوافر والبيانات الآنية بصورة منفصلة.
يعتمد سلوك إعادة التشغيل على مكان وجود مصدر الحقيقة
- الإعدادات والسجلات الدائمة: تُعاد قراءتها من تخزين Home Assistant الدائم.
- حالة الجهاز الحالية: غالبًا ما يعيد التكامل جلبها أو الإبلاغ عنها.
- حالة MQTT: قد تُعاد بناؤها من الرسائل المحتفظ بها أو من عمليات نشر جديدة.
- الحالة المعتمدة على السحابة: تعتمد على الاتصال بواجهة API البعيدة وبيانات الاعتماد.
- الحالة التاريخية: تبقى في Recorder، لكنها ليست الحالة المباشرة نفسها.
- كائنات التشغيل الخالصة: تعيد عملية Home Assistant الجديدة إنشاءها.
يوضح شرح ZimaSpace لـ حالة MQTT بعد إعادة التشغيل مسارًا محددًا لإعادة البناء. أما القاعدة الأوسع فهي أن سلوك إعادة التشغيل يتبع موقع مصدر الحقيقة لكل مكوّن.
الأسئلة الشائعة
هل تؤدي إعادة تشغيل حاوية Home Assistant إلى حذف السجل؟
لا، ما دامت الإعدادات الدائمة وقاعدة بيانات Recorder موصولتين بصورة صحيحة. تستبدل إعادة التشغيل عملية التشغيل، بينما تبقى البيانات التاريخية في قاعدة البيانات الدائمة.
لماذا يمكن أن يعرض الكيان قيمته القديمة فور إعادة التشغيل؟
قد تأتي القيمة من آلية استعادة في Home Assistant، أو ذاكرة تخزين مؤقتة لدى التكامل، أو حالة MQTT محتفظ بها، أو استعلام فوري للجهاز. تحقّق من مسار التكامل والتوافر قبل اعتبار القيمة المعروضة قراءة فعلية حديثة.
مركز التكنولوجيا والذكاء الاصطناعي
المزيد للقراءة

الحالة أثناء التشغيل مقابل الحالة المستمرة في Home Assistant: ما الذي يجب أن يبقى بعد إعادة التشغيل؟
لا يحتفظ Home Assistant بكل قيمة مباشرة؛ إذ تؤدي الإعدادات والسجلات والحالات المحددة المستعادة وبيانات النشر أدوارًا مختلفة عند إعادة التشغيل.

كيف يُجري Home Assistant مصادقة الجلسات المحلية وعن بُعد؟
تستخدم جلسات Home Assistant المحلية وعن بُعد نموذج الهوية نفسه من جهة الخادم؛ إذ يغيّر الوصول عن بُعد المسار وحدود TLS، وليس تدفق الرموز...

لماذا قد تصبح استعلامات سجل Home Assistant بطيئة مع نمو بيانات المسجّل؟
يمكن أن يؤدي نمو بيانات Recorder إلى زيادة تكلفة استعلامات History عندما يشمل النطاق المطلوب عددًا أكبر من الصفوف، أو تزداد حالات فقدان ذاكرة...

