
في الآونة الأخيرة ، أطلقت ياندكس نظام المنزل الذكي. يُعرض علينا شراء أجهزة Wi-Fi غير مكلفة: محول في مقبس الطاقة ومصباح كهربائي ووحدة تحكم عن بعد بالأشعة تحت الحمراء. من المثير للاهتمام أن مطوري الأجهزة "الذكية" لديهم الفرصة لخلق مهاراتهم في "المنزل الذكي" ، سيتيح لك ذلك توصيل الأجهزة بنظام ياندكس وإدارة صوتهم من خلال أليس. المزيد والمزيد من العلامات التجارية الجديدة تظهر في قوائم المهارات. تدرك أليس خطاب اللغة الروسية تمامًا ، مما يجعلها رائدة بلا منازع بين المساعدين الصوتيين في السوق الروسية.
ومع ذلك ، ليس كل شيء على نحو سلس ...
أولاً ناقص: جميع الأنظمة المقترحة "غائمة" بشكل أساسي. موثوقيتها في بعض الأحيان موضع شك ، حيث أن أدائها يعتمد بشكل مباشر على جودة الاتصال بخوادم الشركة المصنعة. وعند إيقاف تشغيل الإنترنت ، تتحول الأجهزة تمامًا إلى "قرع".
الثاني ناقص: نظام البرمجة. جزء مهم من المنزل الذكي هو النصوص. وهنا بدائية للغاية: إذا كانت "العبارة هكذا وكذا" ، فقم بتمكين "الجهاز كذا وكذا". بالنسبة لبيتي الذكية ، كان هذا قليلًا جدًا.
السلبيات لا تنتهي عند هذا الحد ، لكن الباقي مرتبط على الأرجح بعدم نضج النظام. يواصل فريق تطوير Yandex إضافة العديد من الميزات ، والأخطاء المراد تحريرها ، والتي بفضلها جزيل الشكر!
بعد دراسة الوثائق ، قررت إنشاء مهارة Yandex UD وتوصيل وحدة التحكم في المنزل الذكي بها. سيتيح لك ذلك عدم الاعتماد على الخوادم السحابية وتنفيذ أي نصوص محليًا على وحدة التحكم وفي الوقت نفسه التحكم في النظام عن طريق الصوت عبر Alice. لهذا ، كتبت البرنامج المساعد "yandex2mqtt" على Node.js.
قليلا من الناحية النظرية
- أليس ، اشعل النور.
بعد هذه العبارة ، يحدث السحر وينطفئ الضوء. ولكن ما وراء الكواليس؟ دعونا معرفة كيف يعمل كل شيء.
بعد أن سمعت محطة Yandex أمرًا مألوفًا ، تقوم بإرسال البيانات إلى خادم Yandex ، والذي حددنا له عنوان وحدة التحكم مسبقًا. يعالج الخادم المعلومات ويعيد توجيهها إلى وحدة التحكم في شكل طلب ما بعد النشر. على وحدة التحكم ، تقوم واجهة برمجة التطبيقات الوسيطة (في حالتنا ، هذا هو البرنامج المساعد yandex2mqtt) بمعالجة الطلب وإعادة توجيهه إلى موضوع MQTT. بعد ذلك ، تتم معالجة البرنامج النصي في برنامج Node-Red.
العقدة الحمراء تقرر ما يجب القيام به بعد ذلك. إذا تم توفيره بواسطة البرنامج النصي ، فإنه يرسل أمرًا لتشغيل الضوء في موضوع MQTT المقابل. يستجيب برنامج التشغيل wb-mqtt-serial بإرسال أمر Modbus إلى وحدة الترحيل ، والتي تقوم بتبديل الترحيل. وأخيرًا ، يتحول الضوء! نعم ، المسار ليس قريبًا ، ولكن بالنسبة للمستخدم لا يمر سوى جزء بسيط من التمريرة الثانية.
دعونا نلقي نظرة فاحصة على البرنامج المساعد yandex2mqtt. أول شيء تتطلبه Yandex هو أن تعمل هذه المهارة في خدمة oAuth للحزم المجمعة في تطبيق Yandex. بعد أن تتلقى Yandex رمز التفويض من خدمة oAuth ، فإنها تطلب قائمة بالأجهزة. يستجيب المكون الإضافي yandex2mqtt بقائمة من الأجهزة بجميع الخصائص بتنسيق json. ثم تظهر في قائمة الأجهزة المتاحة للتحكم (في ما يسمى بالكوازار). الآن ، إذا طلبت من Alice تشغيل بعض الأجهزة من القائمة ، فسوف يرسل Yandex طلب نشر مع بيانات الجهاز الذي يريد تشغيله إلى وحدة التحكم. استجابةً لذلك ، يؤكد البرنامج المساعد التضمين ويكتب الحالة الجديدة لموضوع mqtt المحدد في إعدادات نفس البرنامج المساعد. إذا غير الجهاز حالته دون مشاركة Yandex ، فإن المكون الإضافي ، الذي يرى البيانات الجديدة في موضوع mqtt ، سيرسله إلى Yandex عند طلب الحالة ، التي تحدث الآن فقط إذا ذهبت إلى الجهاز نفسه في quasar. في حالات أخرى ، لا يستطلع Yandex الحالات.
الآن سأتحدث عن بعض خصائص أجهزة Yandex UD.
نوع الجهاز
للحصول على عرض صحيح في "الكوازار" وتعريف أكثر دقة للأوامر من قبل Alice ، يقترح Yandex تخصيص أنواع مختلفة من الأجهزة للأجهزة. مجموع الأنواع 10:
- devices.types.light - أي مصباح ، الثريا ، المصباح الكهربائي ، إلخ.
- devices.types.socket - المخرج
- devices.types.switch - التبديل
- devices.types.thermostat - ترموستات
- devices.types.thermostat.ac - تكييف الهواء
- devices.types.media_device - جهاز الوسائط
- devices.types.media_device.tv - تلفزيون
- devices.types.cooking - أجهزة المطبخ
- devices.types.cooking.kettle - Maker
- devices.types.other - كل شيء آخر لم يناسب الفقرات السابقة.
مهارة (قدرات)
أيضًا ، يجب أن يكون لكل جهاز
قدرة واحدة على الأقل.
في المجموع ، لدى Yandex UD 5 أنواع من المهارات. كل مهارة لها وظيفة مختلفة
(مثيل) ، وبعض المهارات لديها العديد من هذه الوظائف ، مما يضيف مرونة عند تكوين الأجهزة.
Sapabilities:1.
devices.capabilities.on_off - تشغيل وإيقاف.
المثال:
2.
devices.capabilities.color_setting - إدارة اللون.
المثال:
3.
devices.capabilities.mode - تبديل الأوضاع.المثال:
4.
devices.capabilities.range - التحكم في النطاق.المثال:
5.
devices.capabilities.toggle - كتم الصوت.المثال:
مع المزيج الصحيح من جميع خصائص الجهاز ، تتفهم Alice دون أي مشاكل جميع الأوامر لإدارة المنزل الذكي المعطى لها. هنا ، بالطبع ، هناك بعض الصعوبات في الجمع بين المهارات. لا تشير الوثائق بوضوح إلى المهارات التي يمكن دمجها والتي لا يمكن الجمع بينها. ولكن "طريقة الوخزة العلمية" سوف تساعدنا في هذا.
لذلك ، على سبيل المثال ، اكتشفت أن تكييف الهواء يحتوي على أربع مهارات:
نوع الجهاز:
devices.types.thermostat.acنوع المهارة:
devices.capabilities.on_offالمثال:
devices.capabilities.rangeالمثال:
devices.capabilities.modeالمثال:
devices.capabilities.modeالمثال:
لن أصف الخصائص المتبقية ، كل شيء بسيط للغاية هناك.
لجعلها تعمل ، تحتاج إلى:
- مراقب
- أي مجال
- شهادة SSL
- نود.جي إس
- Yandex2mqtt المساعد
- وسيط MQTT
- الأحمر العقدة
مراقب
يتم التحكم في شقتي "الذكية" من خلال Wiren Board 6. ولكن يمكنك استخدام أي وحدة تحكم Linux أخرى ستسحب Node.js و Node-Red. على سبيل المثال ، توت العليق بي أو جهاز الكمبيوتر.
نطاق
بالطبع ، من المستحسن أن يكون لديك عنوان IP أبيض وشراء مجال ، ولكن هذا ليس ضروريًا. يمكنك استخدام DDNS - على سبيل المثال ،
www.noip.com .
كل شيء بسيط هنا: التسجيل ، إنشاء اسم مضيف مجاني ، أدخل عنوان IP الخاص بك. تحتوي بعض أجهزة التوجيه على إعداد DDNS خاص حيث يمكنك إدخال بيانات noip.com. سيرسل جهاز التوجيه عنوان IP تلقائيًا عند تغييره. إذا لم يكن هناك مثل هذا الإعداد في جهاز التوجيه ، يمكنك تثبيت برنامج noip على وحدة التحكم وإضافته إلى التشغيل التلقائي. سيقوم البرنامج بنفس الشيء تمامًا مثل الموجه ذي إعدادات DDNS الخاصة - قم بتحديث عنوان IP الخاص بك في قاعدة بيانات noip.com
وبالتالي ، لدينا عنوان ثابت يعيد توجيه جميع الطلبات إلى وحدة التحكم الخاصة بنا.
الموانئ 443 و 80
الآن الجميع تقريبا في المنزل لديه جهاز التوجيه. بالإضافة إلى وظائفه الواضحة ، إنه أيضًا عائق أمام الشبكة المحلية من الضيوف غير المرغوب فيهم من الخارج. لكن في بعض الحالات ، نحتاج إلى الوصول إلى الشبكة الداخلية من الخارج. تصورت الشركات المصنعة لجهاز التوجيه هذا وأضفت ميزة NAT (ترجمة عنوان الشبكة).
لن أصف لحظة إعداد جهاز التوجيه ، لأنه يختلف عن كل مصنع. كيفية القيام بذلك ، اقرأ التعليمات الخاصة بالموجه. الكلمات الرئيسية من Google: ميناء الشحن ، ميناء رسم الخرائط ، NAT.
من الضروري إعادة توجيه المنفذ للوصول إلى yandex2mqtt (يمكن أن يكون أي ، لقد اخترت 443) والمنفذ 80 (مطلوب فقط للحصول على شهادة SSL. بعد استلام الشهادة ، يمكن إغلاق المنفذ 80).
شهادة SSL
ضع جميع النقاط على الفور على "و": لن تعمل الشهادات الموقعة ذاتيا.
يمنح معظم مسجلي النطاق (على سبيل المثال ، reg.ru) لعملائهم شهادات SSL مجانية للنطاق الرئيسي (www.yourdomain.ru). إذا اشتريت نطاقًا خاصًا بـ Alice ، فيمكنك استخدام شهادة SSL المتوفرة.
إذا لم يكن لديك نطاقك الخاص ، أو لديك نطاق فرعي آخر مخصص لـ Alice (على سبيل المثال ، alice.yourdomain.ru) ، فأنت بحاجة إلى الحصول على شهادة لهذا المجال الفرعي ، أو العنوان الذي توفره خدمة DDNS.
للقيام بذلك ، أقترح استخدام الخدمة المجانية للحصول على شهادة SSL من letsencrypt.org.
للحصول على شهادة ، تحتاج إلى تثبيت برنامج certbot وتشغيل وتحديد جميع البيانات التي يطلبها. في الوقت نفسه ، يجب أن يكون المنفذ 80 مجانيًا ويمكن الوصول إليه من الخارج. أنصحك أن تدرس بعناية التعليمات الواردة من allowencrypt.
تثبيت وتكوين certbotapt-get update apt-get install certbot
وقف خدمات الوكالة الدولية للطاقة و nginx.
service watchdog stop service nginx stop
نعيد توجيه المنفذ الثمانين في جهاز التوجيه.
قم بتشغيل برنامج certbot:
certbot certonly --standalone
بعد البدء ، سيقوم البرنامج بطرح بعض الأسئلة البسيطة.
1. بريدك الإلكتروني فقط أدخل العنوان واضغط على إدخال

2. تتم مطالبتك بقراءة اتفاقيات المستخدم. إذا كنت تتفق مع كل شيء ، فما عليك سوى إدخال "A" ، وهو ما يعني "موافق" ، أي ، أنا أوافق.

3. يطلب البرنامج إذنًا لإرسال عنوان بريدك الإلكتروني إلى المطورين. أدخل N.

4. أدخل نطاقك الذي تريد الحصول على شهادة (يمكنك إدخاله الذي تلقيناه في noip مسبقًا). هنا أعطي مثالا على المدخلات الخاطئة. بادئة http: // غير مطلوبة.

إذا قمت بكل شيء بشكل صحيح ، فسترى ما يلي:

هذا يعني أنه تم استلام الشهادة بنجاح. تذكر المسار إلى الشهادة والمفتاح ، وسوف تكون مطلوبة عند تكوين البرنامج المساعد yandex2mqtt. للأمان ، أغلق المنفذ 80 في إعدادات جهاز التوجيه ، ولن يكون مفيدًا.
نقوم بتشغيل خدمات الوكالة الدولية للطاقة والوكالة.
service nginx start service watchdog start
يتم إصدار الشهادة من letsencrypt لمدة
3 أشهر.
لا تنسى أن التحديث. Node.js و yandex2mqtt المساعد
تركيبتكوين مستودع node.js
curl -sL https://deb.nodesource.com/setup_10.x | bash -
بعد ذلك ، قم بتثبيت أو تحديث جميع المكونات الضرورية
apt-get install -y nodejs git make g++ gcc build-essential
بعد التثبيت الناجح ، انسخ مستودع yandex2mqtt إلى وحدة التحكم.
git clone https://github.com/munrexio/yandex2mqtt.git /mnt/data/root/yandex2mqtt
وضعنا الحقوق.
chown -R root:root /mnt/data/root/yandex2mqtt
نذهب إلى المجلد.
cd /mnt/data/root/yandex2mqtt
نبدأ التثبيت.
npm install
اكتمل التثبيت.
التشغيل التلقائيإنشاء وحدة systemd:انتقل إلى
/ etc / systemd / system / folder على وحدة التحكم وقم بإنشاء ملف يسمى
yandex2mqtt.service . انسخ ما يلي إلى ذلك:
[Unit] Description=yandex2mqtt After=network.target [Service] ExecStart=/usr/bin/npm start WorkingDirectory=/mnt/data/root/yandex2mqtt StandardOutput=inherit StandardError=inherit Restart=always User=root [Install] WantedBy=multi-user.target
بعد ذلك احفظ التغييرات وأغلق الملف.
لتمكين الوحدة ، أدخل الأمر في وحدة التحكم:
systemctl enable yandex2mqtt.service
يمكنك الآن بدء البرنامج المساعد وإيقافه باستخدام الأوامر
service yandex2mqtt start service yandex2mqtt stop service yandex2mqtt restart
الإعداد:توجد جميع إعدادات المكونات الإضافية الضرورية في الملف
/mnt/data/root/yandex2mqtt/config.jsتحرير هذا الملف وفقا للمعايير الخاصة بك.
يجب أن تكون شهادة SSL
fullchain .
بعد التكوين ، قم بتشغيل yandex2mqtt باستخدام الأمر:
service yandex2mqtt start
بعد إعداد الجسر وبدء تشغيله ، أنصحك بمراجعة الشهادة على
هذا الموقع .
فقط أدخل نطاقك الذي ستستخدمه للوصول إلى Alice. للتشغيل السليم ، يجب أن تمر الشهادة بالكامل. خلاف ذلك ، لن ينجح شيء.
مهارة ياندكس UD
خلق المهارة1. انتقل إلى صفحة
dialogs.yandex.ru/developer2. تسجيل الدخول باستخدام حسابك.
3. انقر فوق "إنشاء حوار"
4. حدد "المنزل الذكي"
5. أدخل المعلمات المطلوبة:
- الاسم - أي اسم.
- عنوان URL لنقطة النهاية - عنوان من النوع yourdomain / provider ، حيث بدلاً من "yourdomain " هو العنوان من noip أو نطاقك الذي تم استلام شهادة SSL الخاصة به.

- الخصوصية - اختر "لا تظهر في الكتالوج" (مطلوب! وإلا ، فلن تمر المهارة بالاعتدال الفوري)
- اسم المطور والبريد الإلكتروني - تشير إلى التفاصيل الخاصة بك.
- الوصف - أي نص
- أيقونة - أي رمز.

6. حزمة الحساب:

انقر فوق "إضافة جديد"
- أول نقطتين - حدد البيانات من config.js / clients :
1.
معرف التطبيق هو clientId
2.
سر التطبيق - clientSecret

7. حفظ المهارة

8. انقر فوق "الاعتدال"

9. انقر فوق "نشر"

إضافة أجهزة إلى Yandex UD.1. انتقل إلى تطبيق ياندكس على الهاتف

2. في القائمة ، حدد الأجهزة / المنزل الذكي

3. انقر فوق "إضافة جهاز"

4. اختيار المهارات الخاصة بك

5. انقر فوق "دمج الحسابات"

6. سيتم فتح صفحة التفويض
أدخل تسجيل الدخول وكلمة المرور (تعيين في ملف config.js في كتلة المستخدمين)
7. انقر فوق "السماح".

8. انقر فوق "تحديث قائمة الأجهزة"

الآن يمكن إعطاء أوامر Alice لإدارة الأجهزة المضافة. سوف تأتي فرق العمل بالمواضيع المشار إليها بواسطة mqtt.
يبقى ربط بعض الإجراءات بهذه المواضيع.
العقدة الحمراء
تم اختيار Node-Red لنظام التشغيل الآلي. هذا هو أداة البرمجة البصرية كبيرة. يمكن رؤية إجراء التثبيت والتكوين
هنا .
ستعمل عملية إعداد المنزل الذكي وأتمتة على مقالة بأكملها أو حتى مقالتين. وهناك بالفعل العديد من هذه المواد. بدلاً من ذلك - مثال صغير على استخدام البرنامج المساعد ، وكيفية تشغيل صوت المصباح الكهربائي.
للراحة ، نقوم بإنشاء جهاز افتراضي على وحدة تحكم Wiren Board 6 في واجهة الويب.
في محرك قاعدة
wb- القواعد ، تحتاج إلى إدخال
defineVirtualDevice("yandex", { title: "yandex controls", cells: { light1: { type: "switch", value: false }, } });
سنقوم بكتابة موضوعات MQTT لهذا الجهاز الظاهري في
config.js لنوع المهارة "on" لجهاز "Light":
devices: [ //_______________ ______________// { name: '', room: '', type: 'devices.types.light', mqtt: [ { type: 'on', set: '/devices/yandex/controls/light1/on', // stat: '/devices/yandex/controls/light1' // }, ], capabilities: [ { type: 'devices.capabilities.on_off', retrievable: true, state: { instance: 'on', value: true } }, ] }, //_______________ _______________// ]
الآن ، مع عبارة "Alice ، شغّل / أطفئ الضوء" ، يقوم الجهاز الظاهري بالتبديل.
دعنا نذهب إلى Node-Red ، الذي تم تثبيته وفقا للتعليمات.
من أجل العمل المريح مع Wiren Board 6 ، يمكنك أيضًا استخدام
wirenboard "
العقدة الحمراء" الإضافية للعقدة .
يتم تثبيت وحدة التمديد
WBE2R-R-ZIGBEE في وحدة التحكم ، مما جعل من الممكن الاتصال بمصباح IKeevskaya الذكي لسلسلة TRODFRY باستخدام بروتوكول ZigBee.
الآن الأمر متروك للصغير. قم بإلقاء بضع كتل في مساحة عمل Node-Red ، وقم بتوصيلها بـ "سلاسل" وانقر فوق نشر.

يتم توصيل المصباح الكهربائي ikeevsky من خلال البرنامج المساعد zigbee2mqtt ، وبالتالي في mqtt ، يجب إرسال موضوع المصباح json للتحكم فيه. للقيام بذلك ، سنقوم بإدراج وظيفة بسيطة بين الجهاز الظاهري WB وموضوع لمبة mqtt.

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