الإعلانات

أصبح HomeKit أخيرًا في البرية ، مما يتيح التحكم الصوتي من خلال Siri لعدد قليل من الأجهزة المنزلية الذكية الاستهلاكية.

للأسف ، أعني حفنة حرفية - أي شيء اشتريته بالفعل غير متوافق على الأرجح. ومع ذلك ، فقد تم إجراء هندسة عكسية للبروتوكول بالفعل ، كما يتوفر محاكي مفتوح المصدر لـ HomeKit API: أو في الإنجليزية البسيطة ، يمكنك الآن إنشاء أجهزة HomeKit "مزيفة" ، وسيسيطر Siri عليها تمامًا مثل أي HomeKit رسمي آخر ملحق.

اليوم ، سنقوم بإنشاء ضوء Wi-Fi يمكن التحكم فيه ، والتحكم فيه مع Siri. هذا عرض توضيحي.

إليك ما ستحتاج إليه:

  • فطيرة التوت (لقد استخدمت RPi2 ، هناك اختلاف بسيط في إصدارات العقدة للتثبيت بالنظر إلى بنية ARM التي تمت ترقيتها - انظر الملاحظات لاحقًا).
  • وسيط MQTT مثبت على Raspberry Pi. راجع قسم "تثبيت Mosquitto على Your Pi" في دليل OpenHAB الجزء 2 دليل OpenHAB للمبتدئين الجزء 2: ZWave و MQTT والقواعد والرسوم البيانيةOpenHAB ، برنامج التشغيل الآلي للمنزل مفتوح المصدر ، يتجاوز بكثير قدرات أنظمة التشغيل الآلي للمنزل الأخرى في السوق - ولكن ليس من السهل إعداده. في الواقع ، يمكن أن يكون محبطًا تمامًا. اقرأ أكثر
    instagram viewer
    . لا تحتاج إلى تثبيت على وجه التحديد على Pi - يمكنك حتى استخدام خادم MQTT المستند إلى السحابة ، ولكن نظرًا لأننا نحتاج إلى Pi لهذا البرنامج التعليمي على أي حال ، فهو مناسب.
  • NodeMCU v2 (متوافق مع Arduino)
  • مصابيح Neopixel (أوصي بـ 4 بكسل للاختبار ، ثم يمكنك إضافة مصدر طاقة خارجي وإضافة العدد الذي تريده)

تركيب جسر HomeKit

سنقوم بتثبيت تطبيق NodeJS يسمى HAP-NodeJS إلى Raspberry Pi: سيشكل هذا جسراً بين طلبات HomeKit وأجهزة Wi-Fi. سنقوم بتكوين هذا الجسر بملحق واحد الآن ، ولكن يمكنك إضافة العدد الذي تريده.

أنا في الواقع أقوم بتثبيت هذا على خادم المنزل الحالي الذي يعمل بنظام OpenHAB - آمل أن أربط الاثنين معًا في في وقت لاحق ، ولكن في الوقت الحالي ، اعلم أنه يمكنهم التعايش على نفس Raspberry Pi. إذا كنت تفعل الشيء نفسه ، فقط في قضية، عمل نسخة احتياطية من بطاقة SD الحالية الخاصة بك استنسخ بطاقة SD الخاصة بك بسهولة للحصول على حاسوب Raspberry Pi بدون مشاكلسواء كان لديك بطاقة SD واحدة أو عدة بطاقات ، فستحتاج إلى شيء واحد وهو القدرة على الاحتفاظ بنسخة احتياطية من بطاقاتك لتجنب المشاكل التي تحدث عندما يفشل Bootpberry Pi في التمهيد. اقرأ أكثر . إذا سارت الأمور بشكل خاطئ ، يمكنك استعادة ذلك.

ابدأ بعمل ترقية كاملة من الوحدة الطرفية أو جلسة SSH إعداد Raspberry Pi للاستخدام بدون رأس مع SSHيمكن لـ Raspberry Pi قبول أوامر SSH عند الاتصال بشبكة محلية (إما عن طريق Ethernet أو Wi-Fi) ، مما يتيح لك إعدادها بسهولة. فوائد SSH تتجاوز إزعاج الفحص اليومي ... اقرأ أكثر .

sudo apt-get update. sudo apt-get ترقية. 

قد تحتاج إلى القيام بذلك مرتين إذا مر وقت طويل.

الآن قم بتثبيت بعض الحزم الأساسية التي سنحتاجها:

sudo apt-get install npm git-core libnss-mdns libavahi-compat-libdnssd-dev. 

بعد ذلك ، سنقوم بتثبيت أحدث إصدار من NodeJS. قد تميل إلى القيام بذلك ملائمة، ولكن لا تفعل ذلك - هذه النسخة قديمة جدًا الآن ولن تعمل. بدلاً من ذلك ، قم بزيارة nodejs.orgتصفح إلى تحميل / إطلاق / أحدث- v5.x.0 / الدليل ، وتحقق من رابط أحدث إصدار. أنت تبحث عن لينكس armv7l لتوت العليق Pi 2 ، أو linuxarmv6l لنماذج RPi الأصلية. بعد ذلك ، قم بتعديل عناوين URL وأسماء الدليل حسب الحاجة ، وقم بتنزيلها وتثبيتها باستخدام الأوامر التالية.

wget https://nodejs.org/download/release/latest-v5.x.0/node-v5.5.0-linux-armv7l.tar.gz. tar -xvf node-v5.5.0-linux-armv7l.tar.gz. العقدة cd-v5.5.0-linux-armv7l. sudo cp -R * / usr / local. 

قم بالتأكيد عن طريق الكتابة

نسخة العقدة. 

ويجب أن ترى الإصدار 5.5 (أو أيًا كان آخر ما قمت بتنزيله).

بعد ذلك ، لدينا بعض وحدات العقدة للتثبيت.

sudo npm install -g npm. sudo npm install -g node-gyp. 

في هذا الأمر الأول ، نستخدم في الواقع Node Package Manager (npm) لتثبيت إصدار أحدث من نفسه. ذكي!

الآن ، لتنزيل محاكي HomeKit يسمى HAP-NodeJS:

استنساخ بوابة https://github.com/KhaosT/HAP-NodeJS.git. مؤتمر نزع السلاح HAP-NodeJS. إعادة بناء npm. sudo npm ثبّت العقدة. sudo npm تثبيت srp. 

عند هذه النقطة ، قمت بتشغيل هذا الخطأ: "#error يتطلب هذا الإصدار من العقدة / NAN / v8 مترجم C ++ 11“. إذا حدث ذلك لك ، قم بتثبيت مترجم C ++ أحدث مع الأوامر:

sudo apt-get install gcc-4.8 g ++ - 4.8. sudo - بدائل التحديث - install / usr / bin / gccgcc / usr / bin / gcc-4.6 20. sudo update-Alternatives --install / usr / bin / gcc gcc /usr/bin/gcc-4.8 50. sudo - بدائل التحديث - install / usr / bin / g ++ g ++ /usr/bin/g++-4.6 20. sudo update-Alternatives --install / usr / bin / g ++ g ++ /usr/bin/g++-4.8 50. 

الآن لا يجب أن يكون لديك مشكلة. استمر في تشغيل هذه الأوامر ، واحدة تلو الأخرى:

sudo npm تثبيت srp. sudo npm تثبيت mdns - غير آمن بيرم. sudo npm تثبيت التصحيح. sudo npm تثبيت ed25519 - غير آمن بيرم. sudo npm install curve25519 - غير آمن بيرم. 

يجب أن يكون كل شيء. حاول تشغيل المحاكي مع:

العقدة Core.js. 

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

تثبيت hap-nodejs

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

DEBUG = * عقدة Core.js

انتقل الآن إلى جهاز Apple قادر على تشغيل Siri. من الغريب أن Apple لا توفر تطبيق HomeKit للأوراق المالية إلا للمطورين المسجلين ، لذا قم بتنزيل التطبيق المجاني تطبيق Elgato Eve، تطبيق إدارة HomeKit الذي يمكنك من إضافة أجهزة (حتى غير Elgato) إلى شبكة HomeKit.

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

إلجاتو عشية 1

سيخبرك بالبحث عن "رمز إعداد HomeKit" فريد بعد ذلك. تجاهل ذلك واضغط على "إضافة إلى [اسم منزلك]".

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

إلجاتو عشية 2

اختر إدخال الرمز يدويًا ، واكتب ما يلي:

031-45-154

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

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

نحن على؟ رقم تشغيل الضوء! إطفاء الضوء!

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

بناء ضوء واي فاي

إن الجانب المادي لهذه الخطوة بسيط بشكل مدهش إذا بدأنا بأربع Neopixels فقط ، حيث يمكننا تشغيل تلك مباشرة من لوحة NodeMCU dev واتصال USB الخاص به. إذا كان لديك شريط أطول ، فلا تقلق - لقد حددنا هذا في البرنامج ، لذلك لن يتم تشغيل الباقي.

قم بتوصيل كبل الطاقة الأحمر من حبلا Neopixel إلى دبوس VIN ، والأرض الزرقاء إلى GND ، وكابل الإشارة الخضراء إلى الدبوس الذي يحمل علامة D2 على NodeMCU. كن حذرًا جدًا بشأن القطبية: إذا قمت بخلط الأرض و VIN ، فسوف ترسل زيادة في الطاقة عبر لوحتك ، وتدميرها في هذه العملية.

إذا لم يتم إعداد بيئة Arduino حتى الآن للعمل مع ESP8266 ، فتابع واتبع الدليل في ESP8266: اردوينو القاتل تعرف على Arduino Killer: ESP8266ماذا لو أخبرتك بوجود لوحة مطورة متوافقة مع Arduino مزودة بشبكة Wi-Fi مدمجة بأقل من 10 دولارات؟ حسنًا ، هناك. اقرأ أكثر ثم عد الدليل بعد التأكد من أنه يعمل. قم بتثبيت هذه المكتبات الإضافية:

  • PubSubClient لشركة lmroy
  • NeoPixels من Adafruit

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

قم بتحديث الأسطر التالية بمعلومات الشبكة الخاصة بك ، واسم فريد لكل تركيبات تقوم بإنشائها (مضيف).

const char * ssid = "..." ؛ const char * password = "..." ؛ const char * host = "officelight" ؛ IPAddress MQTTserver (192 ، 168 ، 1 ، 99) ؛

يتم الحصول على عنوان IP لهذه التركيبات تلقائيًا من خلال DHCP - لا يهم إذا تغير ، لأننا نتصل بخادم MQTT نفسه في كل مرة.

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

  • يمكنك ارسال على إلى الجذر الضابط قناة لتشغيله. أرسل أي قيمة أخرى إلى تلك القناة لإيقافها.
  • يمكنك إرسال رقم من 0-360 إلى officelight / hue لتغيير اللون. نحن نستخدم مساحة اللون HSV، لذلك 0 و 360 حمراء ، و 120 خضراء ، و 240 زرقاء.
  • يمكنك إرسال قيمة مئوية للسطوع (0-100 ، لا تقم بتضمين الرمز٪).
  • نفس الشيء بالنسبة للتشبع. ستكون القيمة 100 مشبعة بالكامل (أي لون صلب) ، وسيكون الصفر أبيض نقي ، بغض النظر عن درجة اللون المحددة.

بمجرد التأكد من عمل تركيبات الإضاءة التي تعمل بنظام MQTT ، استمر.

تكوين ملحق HomeKit جديد

عد مرة أخرى إلى Raspberry Pi وقم بإنهاء تطبيق HAP-NodeJS إذا لم تكن قد قمت بذلك بالفعل. انتقل إلى /accessories الدليل. لتسهيل ذلك ، يمكنك تنزيل التعليمات البرمجية التي تم إقرانها بالفعل إلى تركيبات "officelight" مباشرةً عن طريق كتابة ما يلي:

wget https://gist.githubusercontent.com/jamesabruce/a6607fa9d93e41042fee/raw/12e4fd1d1c2624e7540ba5e17c3e79bc6bdec5fd/Officelight_accessory.js

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

  • يجب تسمية جميع الملحقات *_accessory.js
  • قم بتغيير عنوان IP في متغير الخيارات في الأعلى إلى خادم MQTT
  • إذا كان لديك اسم مختلف ، ابحث / استبدل جميع مثيلات "الضابط"مع اسم تركيباتك الفريد. يمكنك إجراء بحث / استبدال في Nano بالضغط CTRL و \، اكتب المصطلح الذي تبحث عنه ، المصطلح المطلوب استبداله ، ثم اضغط على أ (بمعنى جميع الحالات). تخطى كل واحدة من هذه العناصر لتعرف بدقة المتغيرات التي يتم تحديثها.
  • إنشاء اسم مستخدم ست عشري فريد للملحق (light.username = "1B: 2B: 3C: 5D: 6E: FF" ؛)
  • لا تغير رمز PIN. يتبع تنسيقًا محددًا ، وما لم تكن تعرف ما تفعله ، فلن تتمكن من الاقتران. ليست هناك مشكلة في إبقائها كما هي بين الأضواء.
  • يمكنك منح لاعبك "اسم Siri" مختلفًا عند إضافته إلى تطبيق Elgato Eve وتعديله في أي وقت حتى لا تكون عالقًا في اختيارك الأولي. ليست هناك حاجة لتعديل ملفات التكوين أو إعادة تشغيل الخادم.
  • بمجرد حصولك على تركيبات متعددة ، يمكنك استخدام تطبيق Elgato Eve لتجميعها حسب الغرفة ، أو لإنشاء مشاهد محددة تتكون من إجراءات معقدة متعددة. يمكن أن تتكون المشاهد من إجراءات متعددة ، مثل: تشغيل ضوء المكتب ، وخفته إلى 25٪ ، وجعله أحمر ، وتنشيط آلة القهوة.

ستحتاج إلى إضافة ملحق جديد من خلال تطبيق HomeKit الذي تختاره مرة أخرى.

أخيرًا ، نريد تشغيل تطبيق HAP-NodeJS الخاص بنا عند إعادة تشغيل Pi. أضف التالي إلى الخاص بك إلخ / rc.local الملف مباشرة قبل مخرج 0.

sudo node /home/pi/HAP-NodeJS/Core.js  dev / null &

يمكنك أن ترى أنني جمعت هذا مع بعض الأوامر الأخرى التي قمت بتعيينها بالفعل لبدء التشغيل.

عقدة تشغيل rclocal عند بدء التشغيل

إذا كانت هذه هي المرة الأولى التي تستخدم فيها rc.local ، فقد تحتاج إلى تعيينها على أنها قابلة للتنفيذ:

sudo chmod 755 /etc/rc.local

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

العقدة المميتة

خطوة أخيرة: انتقل إلى دليل الملحقات ، وحذف GarageDoorOpener_accessory.js. في وقت كتابة هذا ، كان هذا هو عربات التي تجرها الدواب ، وسيتسبب في كسر الخادم بعد فترة.

ماذا ستتحكم مع Siri؟

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

جيمس حاصل على درجة البكالوريوس في الذكاء الاصطناعي ، وهو حاصل على شهادة CompTIA A + و Network +. وهو المطور الرئيسي لـ MakeUseOf ، ويقضي وقت فراغه في لعب كرة الطلاء VR وألعاب الطاولة. لقد كان يبني أجهزة الكمبيوتر منذ أن كان طفلاً.