الأجهزة اللاسلكية Xiaomi في المنزل الذكي ioBroker

تحية لجميع عشاق التشغيل الآلي للمنزل. قررت مشاركة تجربة استخدام أجهزة Xiaomi اللاسلكية مع واجهة ZigBee. بصراحة ، أنا ضد استخدام أي أجهزة لاسلكية في أي أتمتة ، من أنظمة التحكم في العمليات الخطيرة للأجسام الكبيرة إلى الأتمتة الصغيرة مثل أجهزة الإنذار بالحريق أو المنازل الذكية ، لكن ... حلول Xiaomi الرشوة بتكلفة رخيصة وإمكانية الوصول والتصميم الممتاز والعديد من المراجعات الإيجابية من المستخدمين ، قررت لمحاولة.

يجب أن تؤخذ هذه المشاركة كتعليمات خطوة بخطوة لدمج أجهزة ZigBee في البنية التحتية للمنزل الذكي. الموصوفة هنا ليست بأي حال من الأحوال بديهية ويمكنك العثور على العديد من الطرق الأخرى لتوصيل أجهزة ZigBee. إذا كنت لا تزال تتخطى الوصف المفصل ، فيمكنك الحصول على انطباع بالتعقيد أو سهولة دمج الأجهزة من مختلف الشركات المصنعة في نظام أساسي محلي واحد باستخدام مثال ZigBee و ioBroker (المزيد حول ذلك لاحقًا). سوف أخبر في هذه المقالة كيفية توصيل الأجهزة بمنزل ذكي ، وعرض المعلومات منها على جهاز لوحي أو فقط في المستعرض وإرسال رسائل عبر البرقيات عن تغيير حالة الجهاز. إذا كنت مهتمًا بك ، فأنا أطلب قطة.

وفقًا لمصنع Xiaomi ، يجب على المستخدمين استخدام تطبيق أصلي مع اتصال سحابي وبوابة Wi-Fi لأجهزة ZigBee. ومع ذلك ، فإن طريقة تنشيط وضع مطور البرامج في تطبيق ما للحصول على رمز مميز للتحكم معروفة منذ فترة طويلة. وبالتالي ، داخل الشبكة المحلية ، يمكنك التواصل مع البوابة ، والتي تسمح لك بالقيام ببرنامج تشغيل mihome ، الذي يعد جزءًا من برنامج ioBroker.

ioBroker عبارة عن منصة مفتوحة لإنترنت الأشياء ، بما في ذلك بناء أنظمة المنزل الذكي. ما هو ioBroker يمكن العثور عليها في المادة السابقة.

الآن أصبح منزلي الذكي "يدور" على لوحة Cubietruck ARM مع بعض "طقم الجسم" في شكل محرك أقراص ثابت سعة 80 جيجابايت ، وبطاريات قابلة لإعادة الشحن بقوة 5000 مللي أمبير في الساعة ، وسلك USB واحد بسلك ، ومحول USB-RS485 لأجهزة الاقتراع باستخدام بروتوكول modbus. نظام التشغيل Armbian مثبت على القرص الصلب مع نقل قسم الجذر ، فقط محمل الإقلاع يبقى على بطاقة ذاكرة microSD.

لقد بدأت معرفتي بأجهزة Xiaomi اللاسلكية من خلال شراء أجهزة استشعار درجة الحرارة والرطوبة. في ذلك الوقت ، كان الاحتمال الوحيد لإدماجهم هو سائق mihome ، الذي تم ذكره أعلاه.

سائق ميهوم


تعد إضافة برنامج تشغيل إلى النظام أمرًا بسيطًا للغاية ، تحتاج إلى النقر فوق الزر "+" في قائمة برامج التشغيل المتوفرة ومراقبة عملية التثبيت.



لن أصف التثبيت والتكوين الأولي لتطبيق Android الأصلي Mi Home ، يمكنك رؤيته على صفحة github الخاصة ببرنامج التشغيل أو على الإنترنت. لذلك ، يتم تنشيط وضع المطور ، وتلقي الرمز المميز ، ونحن تكوين محول mihome ، وحفظ وتشغيل إذا لم يتم تشغيله.



يجب أن تظهر بوابة Xiaomi والأجهزة المتصلة في تطبيق Mi Home في شجرة الكائنات.



بعد ذلك ، يمكنك تكوين الكائنات التي تم إنشاؤها حديثًا. على سبيل المثال ، تخزين تاريخ أجهزة استشعار درجة الحرارة والرطوبة. يمكنني استخدام برنامج تشغيل SQL للبيانات التاريخية التي تم تكوينها على قاعدة بيانات SQLite.



يتم تكوين تخزين محفوظات المتغير في نافذة كائنات النظام: في التسلسل الهرمي للكائنات ، تحتاج إلى الوصول إلى المتغير نفسه والضغط على زر مع مفتاح ربط على اليمين. في علامة التبويب "الإعدادات" ، يتم تنشيط تخزين المحفوظات بواسطة المستشعرات - فقط التغييرات على المتغير.

الإعدادات الأخرى:

  • فترة زمنية لا تقل عن 10 ثوانٍ - إذا تغير المتغير أكثر من مرة ، فسيتم تجاهل الإدخال في قاعدة البيانات
  • قيم التسجيل كل 300 ثانية (5 دقائق) - إذا لم يتغير المتغير لأكثر من 5 دقائق ، فلا تزال القيمة الحالية مكتوبة في قاعدة البيانات
  • نوع القيمة - رقم
  • مدة الصلاحية - 1 سنة



إضافة أجهزة جديدة يحدث من خلال التطبيق الأصلي. أي تحتاج إلى إقران الجهاز الجديد بالبوابة وفقًا للتعليمات المرفقة وبعد ذلك سيظهر تلقائيًا في قائمة كائنات ioBroker.

سائق زيجبي


كان من غير المناسب بالنسبة لي استخدام تطبيق Xiaomi الأصلي ، خاصةً لأنني اضطررت إلى شراء بوابة بها قابس صيني ، والتي في حالتي ، باستثناء الاتصال بالأجهزة ، لم تكن مفيدة لأي شيء. نعم ، يمكن استخدامه كضوء الليل ، أو استخدام مستشعر الضوء في بعض السيناريوهات. على الإنترنت ، يمكنك العثور على إرشادات حول كيفية "إطعام" قائمة تشغيل إلى بوابة لتشغيل محطات الراديو الخاصة بها ، لكن لا شيء من هذا عالق معي. بالإضافة إلى ذلك ، كان الاعتقاد بأن بياناتي تتسرب إلى مكان ما ، حيث تتم معالجتها وتخزينها في مكان ما ، كان أمرًا مزعجًا.

وجد أحد المستخدمين النشطين لمنصة ioBroker على الإنترنت مكتبة zigbee -shepherd على node.js ، حيث تم ذكر توصيل أجهزة Xiaomi. تمت كتابة برنامج تشغيل لـ ioBroker على أساسه ، ولم يقتصر مؤلف برنامج التشغيل هذا على أجهزة Xiaomi فحسب ، بل يتم تحديث قائمة الأجهزة المدعومة باستمرار ومتاحة على صفحة github للمشروع.

من المفترض أن تستخدم أجهزة غير مكلفة جاهزة تعتمد على رقائق CC25xx من TI كمنسق شبكة. يمكنك شراء وحدات ZigBee الجاهزة من خلال اتصال USB وهوائي مدمج ، بالإضافة إلى طرز أكثر تكلفة وأكثر خطورة: مع هوائي خارجي ومكبر صوت واتصال عبر UART.

للعمل مع برنامج التشغيل ، تحتاج فقط إلى تغيير البرامج الثابتة. وبالتالي ، اتضح أن برنامج التشغيل هذا لا يحتاج إلى بوابة مكلفة ، ليست هناك حاجة لشبكات Wi-Fi. "نقطة الدخول" هي المنسق - جهاز يعتمد على شريحة SS25xx مع البرامج الثابتة الخاصة. من خلال المنسق ، يوجد اتصال مباشر بين أجهزة zigbee ونظام Smart Home ، بالإضافة إلى ربط الأجهزة الجديدة.

كمنسق ، أستخدم اللوحة الأم الجاهزة استنادًا إلى شريحة CC2530 مع هوائي خارجي قمت بتوصيله بالخادم عبر UART.

بالنسبة إلى البرامج الثابتة للأجهزة ، تم شراء مصحح أخطاء خاص SmartRF04EB ، تم توصيل منفذ microUSB الذي قمت بتوصيله بالكمبيوتر ، ووحدة ZigBee متصلة باستخدام الأسلاك لتصحيح الأخطاء وفقًا للمخطط:
SS2530SmartRF04EB المجلس
P22العاصمة
P21DD
RSTإعادة تعيين
GNDGND
Vcc3.3 فولت




في صفحة github للمشروع ، قم بتنزيل البرنامج الثابت (يُسمى الملف CC2530ZNP-Pro-Secure_LinkKeyJoin.hex لهذا الجهاز) وبرنامج البرنامج الثابت (مبرمج فلاش) ، وبعد ذلك تتم إضافة برامج التشغيل الضرورية إلى النظام.
عند توصيل لوحة المصحح بمنفذ USB الخاص بالكمبيوتر ، سيعرض البرنامج على الفور الجهاز المتصل. تحتاج فقط إلى تحديد المسار إلى ملف البرنامج الثابت والنقر فوق الزر "تنفيذ الإجراءات"



يتم توصيل منافذ ZigBee-module P03 (Rx) و P02 (Tx) في لوحات UART4 (في أنظمة التشغيل مثل ttyS4) ، تعمل بالطاقة 3V3 ، GND على الدبوس المجاور. للتشغيل المستقر ، لا تزال بحاجة إلى سحب المنافذ P20 و P4 و P5 الخاصة بالمنسق إلى الأرض. كما كتبت أعلاه ، أستخدم نظام التشغيل Armbian ، يتم تنشيط منفذ UART بكل بساطة ، باستخدام الأمر armbian-config في قسم النظام - الأجهزة ، تحتاج إلى تنشيط المنفذ المطلوب وإعادة تشغيل النظام.



تتم إضافة برنامج التشغيل zigbee من لوحة الإدارة بنقرة واحدة.



في حالتي ، المنسق متصل بالمنفذ / dev / ttyS4 (كما كتبت أعلاه) ، فإننا نحدده في الإعدادات.



يمكن ترك الإعدادات الأخرى بشكل افتراضي. بعد الإطلاق الأول لبرنامج التشغيل ، تحتاج إلى إقران (إضافة) أجهزة. التعليمات الكاملة حول github ، الإقران من خلال برنامج التشغيل هذا أكثر تعقيدًا قليلاً من خلال التطبيق الأصلي ، لكن لم أواجه أية مشكلات.

لذلك ، على سبيل المثال ، أضف زر Xiaomi (سلسلة Mijia) ، لذلك نضغط على الزر الأخضر في إعدادات برنامج التشغيل ، واتباع الإرشادات ، اضغط أولاً على زر الإقران في الخلف بمشبك ورقي حتى يبدأ مؤشر LED في الوميض ، ثم انقر فوق هذا الزر مرة واحدة كل ثانيتين تقريبًا ، رؤية التقدم الاقتران.



شقتي ليست كبيرة ، حيث تتميز جميع الأجهزة بالاتصال ، حتى مع وجود مستشعر الباب مفتوحًا عند الهبوط (الجدار الخرساني المسلح 100 مم و 5 م في خط مستقيم). بدأت المشاكل عندما قررت إضافة مستشعر درجة الحرارة والرطوبة إلى هواء الشارع ، والذي قمت بتثبيته على الحائط الخارجي للمنزل من جانب لوجيا المعزولة. لم تصل إشارة جهاز استشعار ضعيف ، والذي كان أيضًا في الشارع ، إلى خزانة التشغيل الآلي. يمكن حل المشكلة ببساطة - تحتاج إلى إضافة جهاز توجيه إلى شبكة ZigBee وجعله أقرب إلى المستشعر. يمكن أن تعمل بعض الأجهزة اللاسلكية ، على سبيل المثال ، مقبس Xiaomi ، كموجه ، لكن لم يكن لدي مثل هذه الأجهزة. لم أكن أرغب في شراء منفذ باهظ الثمن أو ضوء متحكم به لمجرد "إعادة توجيه" البيانات من جهاز استشعار في الشارع. كما اتضح فيما بعد ، بالنسبة إلى الأجهزة الطرفية نفسها التي تستند إلى شريحة SS25xx ، هناك برنامج ثابت خاص يسمح باستخدامها كموجه في النظام. ونتيجة لذلك ، أضفت جهاز توجيه يستند إلى رقاقة CC2531 مع اتصال USB. لن أتطرق إلى عملية البرنامج الثابت ، ويمكن العثور على المخطط وملف البرنامج الثابت نفسه على صفحة github للمشروع.

نظرًا لأن الاتصال بالوحدة النمطية عبر منفذ USB لا يحدث في الواقع ، فقد قمت بتوصيله مؤقتًا بالشحن باستخدام منفذ USB وقم بتوصيله بمنفذ في المطبخ. في المستقبل القريب أخطط لوضعها ثابتة في مبنى عادي على لوجيا وبقوة طبيعية من UPS المنزل.



عملية إضافة جهاز توجيه إلى النظام بسيطة: اضغط على زر الإقران في برنامج التشغيل وعلى جهاز التوجيه الذي تم تشغيله ، اضغط على الزر S2 عدة مرات حتى تتصل الأجهزة.



دعنا نضيف مثالًا على مستشعر درجة الحرارة / الرطوبة ، والذي وضعته على لوجيا بالخارج والذي يجب أن يعمل من خلال جهاز توجيه.

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



تأكد من توصيل المستشعر بشكل صحيح - راجع خريطة الشبكة.



تُظهر الخريطة خطوط الاقتران للأجهزة التي تشير إلى جودة الإشارة بين قطاعات الشبكة. كما كتبت أعلاه ، لدي odnushka صغير من 35 متر مربع ، وبالتالي فإن الخريطة متواضعة جدا. بإذن من المستخدمين الآخرين ، سوف أقوم بنشر الخيارات الممكنة مع بطاقة أكبر.







تعد وظيفة بعض أجهزة Xiaomi من خلال هذا المحول أكثر قليلاً من خلال التطبيق الأصلي وبرنامج تشغيل mihome. في المستقبل ، أريد توسيع الشبكة قليلاً وتجربة أجهزة جديدة ، على وجه الخصوص ، محرك ذكي للستائر ومكعب استشعار.

سائق المواد


حصلنا على البيانات ، المشغّلات مرتبطة ، ماذا نفعل الآن بها؟ أولاً ، دعنا نعرض في واجهة جميلة. لدي مشروع كبير في برنامج التشغيل VIS ، والذي يوجد في عدة إصدارات لأذونات مختلفة ، ولكن هناك مادة كافية لمقال منفصل. ربما ستكون هي التالية.

للعرض البسيط والسريع للبيانات والتحكم في الأجهزة المختلفة ، أستخدم برنامج تشغيل المواد. التثبيت كالمعتاد في بضع نقرات. يعرض تجانب الواجهة البيانات استنادًا إلى إعدادات الفئة ، والتي تتم إضافتها في نافذة مسؤول الواجهة التي تحمل الاسم نفسه. قائمة الفئات محدودة فقط بالخيال ، وأنا أستخدم مخطط "وظيفة الغرفة" ، ويحدث التجميع وفقًا لها. تمت إضافة جميع الغرف (المطبخ ، الممر ، الغرفة ، الشرفة ، إلخ) والوظائف (الإضاءة ، أجهزة الاستشعار ، النظام ، إلخ).



الآن ، في نافذة إعدادات كائنات النظام ، من الضروري للمتغيرات التي سيتم عرضها على الشاشة أن تشير إلى الغرفة ، وظيفة وتعيين دور (للعرض المناسب). على سبيل المثال ، جهاز استشعار درجة الحرارة والرطوبة الداخلية في Xiaomi ، المتصل عبر البلوتوث.



استنادًا إلى هذه الإعدادات ، سيعرض التجانب البيانات على الشاشة ، وسيتم تشديد الرمز ، وستتوفر الكائنات الخاصة بعنصر تحكم نوع معين.

مثال 1. إخراج جميع المعلومات في فئة واحدة - وظيفة. الإضاءة في جميع أنحاء الشقة.



مثال 2. إخراج جميع المعلومات حول الغرفة - الحمام.



مثال 3. مستوى تفريغ الجهد والبطارية لجميع أجهزة Xiaomi اللاسلكية.



يعمل برنامج التشغيل هذا من أجل التحكم المحلي في النظام من هاتف محمول أو جهاز لوحي ثابت على الحائط. أحيانًا أتصل عبر VPN. للتحكم في الحالات وعرضها عن بُعد ، لتلقي الإعلامات ، استخدم برنامج التلغراف.

سائق برقية


لن أصف التثبيت ، ما عليك سوى الانتقال إلى الإعدادات. يمكنني استخدام وضع التشغيل من خلال الاستقصاء الدوري (300 ميل بشكل افتراضي) والاتصال من خلال خادم وكيل. للحصول على رمز ، تحتاج إلى "التحدث" مع خالق الروبوتات ، BotFather. العملية بسيطة - البحث عن هذا الروبوت ، وإعطاء أمر لإنشاء واحد جديد ، وتحديد اسمه الفريد ومفتاحك ، والإشارة إليه في إعدادات برنامج التشغيل ، ومن أجل الأمان ، تأكد من تحديد كلمة المرور "الترحيب". سوف يسألك الروبوت الخاص بك عند التواصل مع مستخدم جديد.



الآن تحتاج إلى تكوين حالات الاتصال من خلال الروبوت. يمكنك استخدام برنامج التشغيل text2command أو JavaScript للقيام بذلك. لقد حدث ذلك تاريخيًا باستخدام جافا سكريبت في شكل نص وكتل Blockly. يجب ألا يسبب تثبيت برنامج تشغيل JS صعوبات ، ليست هناك حاجة إلى التكوين في هذه الحالة. بعد التثبيت والإطلاق ، تحتاج إلى تمكين عرض القائمة لإنشاء البرامج النصية وتحريرها.



مثال 1. تنبيهات.

أولاً ، دعنا نحاول إرسال إخطار حول فتح الباب الأمامي ، على سبيل المثال. لدي مفتاح استشعار لاسلكي من Xiaomi على الباب الأمامي. أراقب كيف تمشي زوجتي مع التافه بينما أنا في العمل. إنشاء برنامج نصي جديد في المجموعة المشتركة.



حدد ما الذي سيتم "رسمه" بشكل كتلة واسمه "telegram_bot".



في مجموعة "الأحداث" ، نأخذ وحدة التفاعل لتغيير المتغير وسحبه إلى حقل العمل.



بعد ذلك ، حدد معرف الكائن الذي نشترك فيه ، وأدخل التحقق من الكائن من خلال "if" - "خلاف ذلك" إلى صواب / خطأ. يجب أن تكون النتيجة شيء مثل التالي.



حسنًا ، نحن نركض الآن ، نفتح الباب - نغلق الباب ونرى الرسائل في البرقية.



مثال 2. التحكم في الإضاءة من خلال القائمة.
مثال أكثر تعقيدًا ، فلنجعل التحكم في الإضاءة باستخدام أزرار القائمة في برقية. هنا عليك أن تتسكع قليلاً ، أي عند إنشاء برنامج نصي ، تحتاج إلى تحديد JS. المهمة هي ما يلي تقريبًا: لعمل أزرار في شكل قائمة مع عرض حالة التركيبات فورًا في نص توقيع الزر. لا تزال تحاول التأكد من أنه عند الضغط على الزر ، يتم قلب حالة الإضاءة وتحديث الحالة على الفور في نص الزر مع ظهور / اختفاء المصباح الكهربائي. بالإضافة إلى ذلك ، إذا كانت القائمة قيد التشغيل بالفعل وتقوم بتشغيل / إيقاف تشغيل الإضاءة يدويًا ، فأنت بحاجة إلى تحديث القائمة أيضًا مع حالة التركيبات.
الكود يحتوي على تعليقات وغير معقد نسبيًا:
// ID
const LIGHT1 = ' ', CH_LIGHT1 = 'mqtt.0.PLC55_Lighting.lighting.MainRoom_main1';
const LIGHT2 = ' ', CH_LIGHT2 = 'mqtt.0.PLC55_Lighting.lighting.MainRoom_main2';
const LIGHT3 = ' ', CH_LIGHT3 = 'mqtt.0.PLC55_Lighting.lighting.MainRoom_sec';
const LIGHT4 = ' ', CH_LIGHT4 = 'mqtt.0.PLC55_Lighting.lighting.Kitchen_main';
const LIGHT5 = ' 1', CH_LIGHT5 = 'mqtt.0.PLC55_Lighting.lighting.Kitchen_sec_top';
const LIGHT6 = ' 2', CH_LIGHT6 = 'mqtt.0.PLC55_Lighting.lighting.Kitchen_sec_bottom';
const LIGHT7 = ' ', CH_LIGHT7 = 'mqtt.0.PLC55_Lighting.lighting.BathRoom_main';
const LIGHT8 = ' ', CH_LIGHT8 = 'mqtt.0.PLC55_Lighting.lighting.Hall_main';
const LIGHT9 = ' ', CH_LIGHT9 = 'mqtt.0.PLC55_Lighting.lighting.Balcon_main';
//
function sendLightMenu(message_text) {
//
var l1 = getState(CH_LIGHT1).val ? '💡' : '';
var l2 = getState(CH_LIGHT2).val ? '💡' : '';
var l3 = getState(CH_LIGHT3).val ? '💡' : '';
var l4 = getState(CH_LIGHT4).val ? '💡' : '';
var l5 = getState(CH_LIGHT5).val ? '💡' : '';
var l6 = getState(CH_LIGHT6).val ? '💡' : '';
var l7 = getState(CH_LIGHT7).val ? '💡' : '';
var l8 = getState(CH_LIGHT8).val ? '💡' : '';
var l9 = getState(CH_LIGHT9).val ? '💡' : '';
//
sendTo('telegram.0', {
text: message_text,
reply_markup: {
keyboard: [
[LIGHT1+l1, LIGHT2+l2, LIGHT3+l3],
[LIGHT4+l4, LIGHT5+l5, LIGHT6+l6],
[LIGHT7+l7, LIGHT8+l8, LIGHT9+l9]
],
resize_keyboard: true,
one_time_keyboard: true
}
});
}
//
function changeLight(room, channel) {
//
var alive = getState("mqtt.0.info.connection").val;
if (alive.includes("PLC55_Lighting")) {
if (getState(channel).val) {
setState(channel, false, false, function () {
sendLightMenu(room+' ');
});
} else {
setState(channel, true, false, function () {
sendLightMenu(room+' ');
});
}
} else {
sendLightMenu(' OFFLINE');
}
}
// request ,
on({id: "telegram.0.communicate.request", ack: false, change: 'any'}, function (obj) {
var msg = obj.state.val;
var command = obj.state.val.substring(obj.state.val.indexOf(']')+1);
var user = obj.state.val.substring(obj.state.val.indexOf('[')+1,obj.state.val.indexOf(']'));
var chat_id = getState("telegram.0.communicate.requestChatId").val;
var message_id = getState("telegram.0.communicate.requestMessageId").val;
var handled = false;
//
if (command == '/start' || command == '/menu' || command == '' || command == '') {
sendLightMenu("");
handled = true;
}
//######################## Lighting menu and commands ################
if (command == LIGHT1 || command == LIGHT1+'💡') {
changeLight(LIGHT1, CH_LIGHT1);
handled = true;
}
if (command == LIGHT2 || command == LIGHT2+'💡') {
changeLight(LIGHT2, CH_LIGHT2);
handled = true;
}
if (command == LIGHT3 || command == LIGHT3+'💡') {
changeLight(LIGHT3, CH_LIGHT3);
handled = true;
}
if (command == LIGHT4 || command == LIGHT4+'💡') {
changeLight(LIGHT4, CH_LIHT4);
handled = true;
}
if (command == LIGHT5 || command == LIGHT5+'💡') {
changeLight(LIGHT5, CH_LIGHT5);
handled = true;
}
if (command == LIGHT6 || command == LIGHT6+'💡') {
changeLight(LIGHT6, CH_LIGHT6);
handled = true;
}
if (command == LIGHT7 || command == LIGHT7+'💡') {
changeLight(LIGHT7, CH_LIGHT7);
handled = true;
}
if (command == LIGHT8 || command == LIGHT8+'💡') {
changeLight(LIGHT8, CH_LIGHT8);
handled = true;
}
if (command == LIGHT9 || command == LIGHT9+'💡') {
changeLight(LIGHT9, CH_LIGHT9);
handled = true;
}
// , text2command
if (!handled) {
sendTo('text2command.0', {
text: command.replace(/\//g, '#').replace(/_/g, ' '),
id: chat_id,
user: user
}, function (response) {
if (response && response.response) {
sendTo('telegram.0', {user: user, text: response.response});
}
});
}
});
// ,
on({id: /^mqtt\.0\.PLC55_Lighting\.lighting\..*$/, ack: true, change: 'ne'}, function (obj) {
sendLightMenu(" ");
});
//
sendLightMenu("");
view raw telegram_bot hosted with ❤ by GitHub


يجب أن تكون النتيجة شيء مثل هذا:



الخاتمة


تبين أن المقال طويل ، لكنني آمل أن يكون مفيدًا ، وربما سيجعل الحياة أسهل بالنسبة لبعض المستخدمين أو يشجع شخصًا ما على إنشاء المنزل الذكي الخاص بهم.
في الوقت الحالي ، ظل نظام المنزل الذكي المستند إلى ioBroker يدور لمدة 4 سنوات وأنا مسرور جدًا منه. بالإضافة إلى ZigBee ، يتم توصيل عدة وحدات تحكم محلية الصنع عبر MQTT و HTTP أيضًا للتحكم في الإضاءة والتهوية وأنظمة أخرى ، وشبكة من أجهزة استشعار درجة الحرارة على ناقل سلك واحد ، وجهاز مراقبة إمدادات الطاقة على ناقل RS485 و بروتوكول modbus RTU ، وأكثر من ذلك بكثير.

في بنك الخنازير الخاص بحلول المنزل الذكي ، قمت بتجميع العديد من الأفكار ، على الرغم من أنه ، على الأرجح ، يجب أن يُنظر إليها على أنها بنك أصبع لمشاكل في المنزل الذكي (أولئك الذين يفهمون الموضوع حول ما أقصده). اترك رغباتك في التعليقات لمساعدتي في اتخاذ قرار بشأن موضوع المقال التالي.

Source: https://habr.com/ru/post/ar433340/


All Articles