تؤدي الأحداث التي تصل بترتيب غير صحيح إلى تعطل أتمتة المنزل الذكي لأن الخادم قد يطبق تحديثات قديمة بعد تحديثات أحدث ويعيد بناء تسلسل خاطئ للواقع.
قد يُغلق الباب قبل أن يصل حدث الفتح السابق إلى الخادم، أو يعيد مستشعر البطارية الاتصال وينشر قيمة قديمة بعد تحديث جديد، أو قد يبلغ بوابتان عن نفس الإجراء المنزلي عبر مسارات ذات تأخير مختلف. إذا اعتبرت الأتمتة وقت الوصول هو وقت الحدث، فقد تؤدي رسالة متأخرة إلى الكتابة فوق الحالة الحالية، أو إعادة فتح تسلسل مكتمل، أو تشغيل إجراء بعد انتهاء سياقه. تشرح الأقسام أدناه أين يدخل الاضطراب إلى النظام وكيف تحتوي الطوابع الزمنية وقواعد التسلسل وفحوصات الحداثة والإجراءات المتكررة هذا الاضطراب.
ترتيب الوصول ليس دائماً ترتيب الحدث الفعلي
تعالج محرك الأتمتة الرسائل بالترتيب الذي تصل به إلى ناقل الأحداث أو رد الاتصال بالتكامل. يمكن أن يختلف هذا الترتيب عن وقت ملاحظة الجهاز فعلياً للحركة أو تغيير الاتصال أو الضغط على الزر أو عينة المستشعر.
يميز Apache Flink بين وقت الحدث ووقت المعالجة لأن السجلات الموزعة قد تصل متأخرة أو بترتيب مختلف. يواجه خادم المنزل الذكي نفس المفهوم على نطاق أصغر كلما قامت الأجهزة بالتخزين المؤقت أو إعادة المحاولة أو النوم أو إعادة الاتصال أو استخدام بوابات مختلفة.
بدون طابع زمني مدمج أو معرف تسلسل، لا يمكن للخادم أن يحدد بشكل موثوق ما إذا كانت القيمة التي وصلت حديثاً هي أحدث ملاحظة فعلية.
مسارات النقل المتعددة تخلق تأخيرات مختلفة
قد ينتقل حدث منزلي واحد عبر Zigbee وThread وWi-Fi وMQTT وجسر البائع ومنصة الأتمتة. لكل مسار قائمة انتظار وسياسة إعادة محاولة وجدول راديو وسلوك إعادة اتصال خاص به.
يحدد MQTT ترتيب الرسائل ضمن شروط محددة للعميل والموضوع، لكنه لا ينشئ ترتيباً كاملاً عبر الناشرين أو الوسطاء أو البوابات أو خطوط أنابيب التطبيقات المستقلة. لذلك يمكن أن تتداخل تدفقات صحيحة مختلفة بشكل مختلف عند المشترك.
يمكن أيضاً لإعادة المحاولات بجودة الخدمة والجلسات المستمرة تسليم رسائل تطبيق أقدم بعد انقطاع مؤقت. يحافظ التسليم الموثوق على البيانات، لكن الأتمتة المستقبلة لا تزال بحاجة إلى قاعدة لتحديد ما إذا كانت تلك البيانات لا تزال حديثة.
يضيف انحراف الساعة غموضاً آخر. تكون الطوابع الزمنية للأجهزة مفيدة فقط عندما تُفهم ساعاتها ومناطقها الزمنية ووحداتها وسلوك إعادة التعيين.
يمكن لحدث قديم أن يكتب فوق حالة أحدث
تعرض العديد من كيانات المنزل الذكي قيمة حالية واحدة. عندما يكتب رد اتصال لاحق إلى تلك الكيان، يرى لوحة التحكم والظروف اللاحقة القيمة المخزنة الجديدة حتى لو كانت الملاحظة الأساسية أقدم.
تتضمن كائنات الحالة في Home Assistant طوابع زمنية للحالة، لكن وقت تحديث التكامل ليس تلقائياً هو نفس وقت الحدث الفعلي للجهاز. يمكن لتكامل يستلم حمولة قديمة أن يبلغ عنها الآن.
قد يجعل هذا غرفة مشغولة تصبح غير مشغولة بعد حدث حركة أحدث، أو يجعل باباً مغلقاً يبدو مفتوحاً، أو يقلل عداد الطاقة إلى عينة أقدم. تستمر الأضرار عندما تتفاعل أتمتة أخرى مع تلك الحالة الحالية غير الصحيحة.
تفشل أتمتة التسلسل بشكل أكثر دراماتيكية من عرض الحالة البسيطة
تعتمد بعض القواعد على الترتيب بدلاً من قيمة واحدة: فتح الباب، ظهور الحركة، دخول شخص، إغلاق الباب، وتبقى الإشغال نشطاً. قد يمنع إعادة ترتيب خطوة واحدة إكمال التسلسل أو يكمله لسبب خاطئ.
تستخدم أنظمة التدفق علامات مائية لوقت الحدث لتحديد مدة انتظارها للأحداث السابقة قبل إنهاء نتيجة وقت الحدث. يمكن لأتمتة المنزل استخدام نافذة محدودة أبسط: احتجاز الأحداث ذات الصلة لفترة وجيزة، مقارنة طوابعها الزمنية المصدر، وتجاهل الأحداث الأقدم من الحالة المقبولة.
المقايضة هي الكمون. الانتظار لفترة أطول يحسن التسامح مع الأحداث المتأخرة لكنه يؤخر الأتمتة؛ التصرف فوراً أسرع لكنه يعرض لخطر إعادة بناء الترتيب الخاطئ.
صمم الأتمتة حول الحداثة والتكرارية
ابدأ بحمل الطوابع الزمنية المصدر، أرقام التسلسل المتزايدة بشكل أحادي، معرفات الإقلاع، أو معرفات الأحداث كلما دعمها الجهاز والتكامل. خزّن أحدث علامة مقبولة لكل مصدر ورفض التحديثات الأقدم.
يدعم Home Assistant مقارنة الطوابع الزمنية UTC في القوالب، لكن يجب على الأتمتة اختيار الطابع الزمني الذي يمثل الملاحظة أو الاستلام أو تغيير الحالة. قم بتطبيع الوحدات والمناطق الزمنية قبل مقارنة القيم من أنظمة مختلفة.
اجعل الإجراءات متكررة حيثما أمكن: ضبط ضوء على إيقاف مرتين أكثر أماناً من تبديله مرتين، وكتابة حالة مرغوبة أكثر أماناً من افتراض إكمال الحدث السابق. أضف حدود حداثة للإشعارات وطلبات فتح الأبواب وانتقالات الإشغال التي تصبح ضارة عند تأخيرها.
يجب أن تظل طائرة تحكم الأتمتة في ZimaSpace حتمية حتى عندما تسلم MQTT والذكاء الاصطناعي والكاميرات والتكاملات السحابية البيانات بسرعات مختلفة. تتبع معرفات الأحداث وأوقات المصدر عبر حدود تلك الخدمات بدلاً من الاعتماد على قائمة انتظار وصول واحدة.
اختبر عن طريق تأخير وتكرار وإعادة ترتيب الأحداث المسجلة عمداً. تكون الأتمتة قوية عندما تظل الحالة النهائية ونتيجة السلامة صحيحة رغم تغير توقيت النقل.
مركز التكنولوجيا والذكاء الاصطناعي
المزيد للقراءة

لماذا تتغير بنية Home Assistant مع إضافة المزيد من الخدمات إلى الخادم المنزلي؟
تغيّر الخدمات الإضافية بنية Home Assistant عندما تضيف حالة مشتركة أو قوائم انتظار أو أجهزة أو دورات تحديث أو نطاقات أعطال، وليس بمجرد إضافة...

كيفية قياس أداء Home Assistant من دون الخلط بين التخزين المؤقت والسعة
تثبت النتيجة الدافئة إعادة الاستخدام، لا السعة. قِس بدء التشغيل البارد، والحالة المستقرة الدافئة، والحِمل المتكرر، وزمن استجابة الذيل، وأول مورد يصل إلى حد...

ما مقدار التزامن في الأتمتة الذي يحتاج إليه Home Assistant للتحكم في المنزل بأكمله؟
تحتاج معظم عمليات الأتمتة المنزلية الشاملة إلى تداخل محدود فقط؛ حدّد التزامن بضرب مدة التشغيل في معدل التفعيل، ثم ضع له سقفًا عند السعة...

