विज्ञापन

होमकिट आखिरकार जंगली में बाहर है, सिरी के माध्यम से मुट्ठी भर उपभोक्ता स्मार्ट घरेलू उपकरणों के लिए आवाज नियंत्रण को सक्षम करता है।

अफसोस की बात है, मेरा मतलब है शाब्दिक मुट्ठी भर - कुछ भी जो आपने पहले से खरीदा है वह शायद संगत नहीं है। हालाँकि, प्रोटोकॉल पहले से ही रिवर्स इंजीनियर है और होमकिट एपीआई के लिए एक ओपन सोर्स एमुलेटर उपलब्ध है: या सादा अंग्रेजी, आप अब "नकली" होमकीट डिवाइस बना सकते हैं, और सिरी किसी अन्य आधिकारिक होमकीट की तरह उन्हें नियंत्रित करेगा गौण।

आज, हम एक वाई-फाई नियंत्रणीय प्रकाश बनाने जा रहे हैं, और इसे सिरी के साथ नियंत्रित करेंगे। यहाँ एक डेमो है।

यहाँ आपको क्या चाहिए:

  • रास्पबेरी पाई (मैंने आरपीआई 2 का उपयोग किया है, उन्नत एआरएम आर्किटेक्चर को स्थापित करने के लिए नोड संस्करणों में एक छोटा सा अंतर है - बाद में नोट देखें)।
  • रास्पबेरी पाई पर एक एमक्यूटीटी दलाल स्थापित किया गया। मेरे में "अपने मच्छर को स्थापित करें" अनुभाग देखें OpenHAB गाइड भाग 2 ओपनहैब बिगिनर्स गाइड भाग 2: जेडवे, एमक्यूटीटी, नियम और चार्टिंगOpenHAB, ओपन सोर्स होम ऑटोमेशन सॉफ्टवेयर, अब तक बाजार पर अन्य होम ऑटोमेशन सिस्टम की क्षमताओं से अधिक है - लेकिन इसे स्थापित करना आसान नहीं है। वास्तव में, यह सर्वथा निराशाजनक हो सकता है। अधिक पढ़ें . इसे विशेष रूप से Pi पर स्थापित करने की आवश्यकता नहीं है - आप क्लाउड आधारित MQTT सर्वर का भी उपयोग कर सकते हैं, लेकिन चूंकि हमें इस ट्यूटोरियल के लिए किसी भी तरह से Pi की आवश्यकता है, इसलिए यह सुविधाजनक है।
  • NodeMCU v2 (Arduino संगत)
  • Neopixel LEDs (मैं परीक्षण के लिए 4 पिक्सेल सुझाता हूं, फिर आप बाहरी बिजली की आपूर्ति जोड़ सकते हैं और आप जैसे चाहें उतने जोड़ सकते हैं)

HomeKit Bridge स्थापित करना

हम NodeJS नामक एक एप्लिकेशन इंस्टॉल करने जा रहे हैं HAP-NodeJS रास्पबेरी पाई के लिए: यह HomeKit अनुरोधों और वाई-फाई उपकरणों के बीच एक पुल का निर्माण करेगा। हम इस पुल को अभी के लिए एक एक्सेसरी से कॉन्फ़िगर करेंगे, लेकिन आप जितने चाहें उतने जोड़ सकते हैं।

मैं वास्तव में OpenHAB पर चलने वाले अपने मौजूदा होम सर्वर पर इसे स्थापित कर रहा हूं - मुझे उम्मीद है कि दोनों को एक साथ जोड़ देंगे बाद की तारीख, लेकिन अब के लिए, जानते हैं कि वे एक ही रास्पबेरी पाई पर सह-अस्तित्व में हो सकते हैं। यदि आप ऐसा ही कर रहे हैं, तो बस मामला, अपने वर्तमान Pi SD कार्ड का क्लोन बैकअप बनाएं आसानी से मुसीबत मुक्त रास्पबेरी पाई कम्प्यूटिंग के लिए अपने एसडी कार्ड क्लोनचाहे आपके पास एक एसडी कार्ड हो या कई, एक चीज जिसकी आपको आवश्यकता होगी, वह है कि आपके रास्पबेरी पाई बूट करने में विफल होने पर होने वाली समस्याओं से बचने के लिए आपके कार्ड का बैकअप लेने की क्षमता है। अधिक पढ़ें . यदि सब कुछ गलत हो जाता है, तो आप उसे पुनर्स्थापित कर सकते हैं।

टर्मिनल या ए से पूर्ण उन्नयन करके शुरू करें SSH सत्र SSH के साथ प्रमुख उपयोग के लिए अपने रास्पबेरी पाई की स्थापनारास्पबेरी पाई एसएसएच कमांड को स्वीकार कर सकती है जब एक स्थानीय नेटवर्क (ईथरनेट या वाई-फाई द्वारा) से जुड़ा होता है, जिससे आप आसानी से सेट अप कर सकते हैं। SSH के लाभ दैनिक स्क्रीनिंग को परेशान करने से परे हैं ... अधिक पढ़ें .

sudo apt-get update। sudo apt-get उन्नयन। 

यदि यह थोड़ी देर के लिए हो तो आपको दो बार करने की आवश्यकता हो सकती है।

अब कुछ मुख्य पैकेज स्थापित करें जिनकी हमें आवश्यकता है:

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

अगला, हम NodeJS का नवीनतम संस्करण स्थापित करने जा रहे हैं। आपको ऐसा करने के लिए लुभाया जा सकता है apt-get, लेकिन वह संस्करण अब वास्तव में पुराना नहीं है और काम नहीं करेगा। इसके बजाय, जाएँ nodejs.org, के लिए ब्राउज़ करें डाउनलोड / रिलीज / नवीनतम-v5.x.0 / निर्देशिका, और जांचें कि नवीनतम संस्करण के लिए लिंक क्या है। आप देख रहे हैं लिनक्स armv7l रास्पबेरी पाई 2 के लिए, या linuxarmv6l मूल आरपीआई मॉडल के लिए। फिर, आवश्यकतानुसार URL और निर्देशिका नामों को समायोजित करते हुए, निम्न आदेशों का उपयोग करके डाउनलोड और इंस्टॉल करें।

wget https://nodejs.org/download/release/latest-v5.x.0/node-v5.5.0-linux-armv7l.tar.gz. tar -xvf नोड- v5.5.0-linux-armv7l.tar.gz सीडी नोड- v5.5.0-linux-armv7l सुडो cp -R * / usr / लोकल। 

टाइप करके पुष्टि करें

नोड संस्करण। 

और आपको v5.5 (या जो भी नवीनतम जो आपने डाउनलोड किया था) देखना चाहिए।

अगला, हमारे पास स्थापित करने के लिए कुछ नोड मॉड्यूल हैं।

sudo npm स्थापित -g npm। sudo npm स्थापित -g नोड-जिप। 

उस पहले आदेश में, हम वास्तव में स्वयं का एक नया संस्करण स्थापित करने के लिए नोड पैकेज मैनेजर (npm) का उपयोग कर रहे हैं। चालाक!

अब, HomeKit एमुलेटर नामक डाउनलोड करने के लिए HAP-NodeJS:

गिट क्लोन https://github.com/KhaosT/HAP-NodeJS.git. सीडी HAP-NodeJS। npm पुनर्निर्माण। sudo npm स्थापित नोड- persist। sudo npm स्थापित srp। 

इस बिंदु पर, मैंने यह त्रुटि चलाई: "#error नोड / NAN / v8 के इस संस्करण के लिए C ++ 11 कंपाइलर की आवश्यकता होती है“. यदि आपके साथ ऐसा होता है, तो कमांडों के साथ हाल ही में C ++ संकलक स्थापित करें:

sudo apt-get install gcc-4.8 g ++ - 4.8। सुडो अपडेट-विकल्प - स्थापना / usr / bin / gccgcc / usr / bin / gcc-4.6 20। सुडो अपडेट-विकल्प - स्थापना / usr / bin / gcc gcc /usr/bin/gcc-4.8 50। सूडो अद्यतन-विकल्प - स्थापना / usr / bin / g ++ g ++ /usr/bin/g++-4.6 20। सूडो अद्यतन-विकल्प - स्थापना / usr / bin / g ++ g ++ /usr/bin/g++-4.8 50। 

अब आपको कोई समस्या नहीं होनी चाहिए। इन आदेशों को जारी रखें, एक-एक करके:

sudo npm स्थापित srp। sudo npm स्थापित mdns --unsafe-perm। sudo npm स्थापित डिबग। sudo npm install ed25519 --unsafe-perm sudo npm स्थापित करें cur25519 --unsafe-perm। 

वह सब कुछ होना चाहिए। एमुलेटर को चलाने की कोशिश करें:

नोड Core.js. 

यदि आपको यह कहते हुए त्रुटियां मिलती हैं कि ऐसा और ऐसा कोई मॉड्यूल नहीं है, तो बस इसका उपयोग करें sudo npm स्थापित करें फिर से कमांड करें, और जो भी मॉड्यूल गायब था उसका नाम चिपकाएं। यह मानते हुए कि सब ठीक है, आपको कुछ चेतावनियाँ देखनी चाहिए, और आपका होमकिट पुल चालू हो जाएगा। यह सफलता कैसी दिखती है:

एचपी-नोड्ज स्थापित

आप तुरंत देख सकते हैं कि इसने पहले से ही 6 नकली उपकरणों का एक सेट बनाया है। हम बाद में अपनी खुद की वाई-फाई लाइट के लिए शुरुआती बिंदु के रूप में उपयोग करते हैं, लेकिन हम अभी उन लोगों का उपयोग करेंगे जिन्हें परीक्षण करना है। यदि आप सर्वर को प्रारंभ करते हैं तो आप अधिक डीबग जानकारी भी देख सकते हैं:

DEBUG = * नोड Core.js

अब सिरी को चलाने में सक्षम एक Apple डिवाइस पर कूदें। Apple पंजीकृत डेवलपर्स को छोड़कर स्टॉक होमकिट ऐप को उत्सुकता से उपलब्ध नहीं कराता है, इसलिए मुफ्त डाउनलोड करें एल्गाटो ईव ऐप, एक HomeKit प्रबंधन ऐप जो आपको अपने HomeKit नेटवर्क में उपकरणों (यहां तक ​​कि गैर-एलगाटो) को जोड़ने में सक्षम बनाता है।

पहली बार जब आप ऐप लॉन्च करते हैं, तो आपको अपने घर का नाम देना होगा, आगे बढ़ें और उसी के माध्यम से चलना होगा। फिर "ऐड एक्सेसरी" चुनें। संदेश को उसके करीब होने की उपेक्षा करें!

elgato eve १

यह आपको अगले एक अद्वितीय "HomeKit सेटअप कोड" की तलाश करने के लिए कहेगा। उस पर ध्यान न दें, और "अपने घर का नाम जोड़ें" पर हिट करें।

यह आपको यह भी बताएगा कि उपकरण प्रमाणित नहीं है। वास्तव में यह नहीं है वैसे भी आगे बढ़ो। जब आप एक एक्सेसरी कोड माँगने के लिए स्क्रीन पर पहुँचते हैं ...

elgato पूर्व संध्या 2

कोड मैन्युअल रूप से दर्ज करने के लिए चुनें, और निम्नलिखित टाइप करें:

031-45-154

इसमें पाया / बदला जा सकता है Light_accessory.js फ़ाइल, लेकिन उस पर और बाद में। इस एक्सेसरी को अपने डिफ़ॉल्ट कमरे में जोड़ें, इसे कॉल करें नकली प्रकाश, और आइकन आदि चुनने के लिए संवादों के माध्यम से चलते रहें।

अंत में, SSH सत्र पर वापस जाएं जहां आपके पास HAP-NodeJS चल रहा है। आपने पहले ही एक संदेश देखा होगा कि "क्या हम हैं?" - वह एलगेटो ऐप प्रकाश स्थिति के लिए मतदान कर रहा है। सिरी खोलें और उसे "नकली प्रकाश चालू करें" पर कहें, फिर इसे बंद करने का प्रयास करें। उम्मीद है, आपको कमांड प्राप्त करने के लिए HAP-NodeJS के कुछ डिबग संदेश दिखाई देंगे।

क्या हम नज़दीक हैं? नहीं। प्रकाश चालू! लाइट बंद करना!

शानदार, यह एक कदम खत्म हो गया। पुल को फिर से कॉन्फ़िगर करने के लिए वापस आने से पहले अब हमें एक वास्तविक प्रकाश की आवश्यकता होगी।

वाई-फाई लाइट का निर्माण

इस कदम का हार्डवेयर पक्ष आश्चर्यजनक रूप से सरल है अगर हम सिर्फ चार Neopixels से शुरू करते हैं, क्योंकि हम सीधे NodeMCU के देव बोर्ड और उसके USB कनेक्शन से बिजली दे सकते हैं। यदि आपके पास एक लंबी पट्टी है, तो चिंता न करें - हमने इसे सॉफ़्टवेयर में परिभाषित किया है, इसलिए बाकी सभी चालू नहीं हैं।

Neopixel स्ट्रैंड से VIN पिन, जीएनडी को ब्लू ग्राउंड, और NodeMCU पर D2 चिह्नित पिन को ग्रीन सिग्नल केबल से लाल पावर केबल कनेक्ट करें। ध्रुवीयता के बारे में बहुत सावधान रहें: यदि आप जमीन और VIN को मिलाते हैं, तो आप अपने बोर्ड के माध्यम से बिजली का उछाल भेजेंगे, और इस प्रक्रिया में इसे नष्ट कर देंगे।

यदि आपका Arduino वातावरण ESP8266 के साथ काम करने के लिए अभी तक सेटअप नहीं किया है, तो आगे बढ़ें और मेरे गाइड का पालन करें ESP8266: अर्डुइनो किलर Arduino किलर से मिलो: ESP8266क्या होगा अगर मैंने आपको $ 10 से कम के लिए बिल्ट-इन वाई-फाई के साथ एक अरुडिनो-संगत देव बोर्ड कहा है? खैर, वहाँ है। अधिक पढ़ें आपके द्वारा काम करने की पुष्टि करने के बाद गाइड फिर वापस आएं। इन अतिरिक्त पुस्तकालयों को स्थापित करें:

  • lmroy का PubSubClient
  • Adafruit की NeoPixels

हम जिस कोड का उपयोग कर रहे हैं वह एक संशोधन है Github उपयोगकर्ता आदित्य तन्नू का - मैंने कुछ एचएसवी फ़ंक्शंस में जोड़े गए अनावश्यक ओवर-द-एयर अपडेट कार्यक्षमता को हटा दिया है, और केवल एक चर को बदलकर अधिक रोशनी बनाने में आसान बना दिया है। यदि आप नीचे दिया गया कोड नहीं देख पा रहे हैं, तो आप इसे देख पाएंगे यह जिस्ट.

अपनी स्वयं की नेटवर्क जानकारी, और आपके द्वारा बनाए गए प्रत्येक फ़िक्चर के लिए एक अद्वितीय नाम के साथ निम्न पंक्तियों को अपडेट करें।

const char * ssid = "..."; const char * पासवर्ड = "..."; const char * host = "officelight"; IPAddress MQTTserver (192, 168, 1, 99);

इस निर्धारण का IP पता स्वचालित रूप से डीएचसीपी के माध्यम से प्राप्त किया जाता है - यदि यह बदलता है, तो इससे कोई फर्क नहीं पड़ता, क्योंकि हम हर बार एक ही MQTT सर्वर से कनेक्ट होते हैं।

अभी के लिए हम केवल 4 Neopixels का उपयोग कर रहे हैं, लेकिन आप बाद में संख्या बढ़ा सकते हैं यदि आप उन्हें किसी बाहरी स्रोत से प्राप्त करते हैं। कोड अपलोड करें, और परीक्षण करें - कमांड भेजने के लिए अपने पसंदीदा MQTT क्लाइंट का उपयोग करें (यदि आपने इसे बदला है, तो निम्नलिखित निर्देशों में होस्ट नाम समायोजित करें).

  • आप भेज सकते है पर जड़ तक officelight इसे चालू करने के लिए चैनल। इसे बंद करने के लिए उस चैनल पर कोई अन्य मान भेजें।
  • रंग बदलने के लिए आप किसी भी नंबर को 0-360 से ऑफसाइट / ह्यू तक भेज सकते हैं। हम इसका उपयोग कर रहे हैं HSV रंग स्थान, इसलिए 0 और 360 लाल हैं, 120 हरा है, और 240 नीला है।
  • आप चमक के लिए प्रतिशत मान भेजते हैं (0-100,% प्रतीक शामिल नहीं हैं)।
  • संतृप्ति के लिए भी। 100 का मान पूरी तरह से संतृप्त होगा (यानी, एक ठोस रंग), और शून्य शुद्ध सफेद होगा, चाहे जो भी निर्दिष्ट हो।

एक बार जब आपने पुष्टि कर दी कि आपका MQTT- चालित प्रकाश स्थिरता काम कर रहा है, तो आगे बढ़ें।

एक नया होमकिट एक्सेसरी कॉन्फ़िगर करना

यदि आप पहले से ही नहीं हैं तो वापस रास्पबेरी पाई पर जाएँ और HAP-NodeJS ऐप को समाप्त करें। पर नेविगेट करें /accessories निर्देशिका। इसे आसान बनाने के लिए, आप सीधे उस कोड को डाउनलोड कर सकते हैं जो पहले से ही निम्न प्रकार से "ऑफसाइट" जुड़ाव में जोड़ा गया है:

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

अनिवार्य रूप से, यह डिफ़ॉल्ट लाइट एक्सेसरी का एक डुप्लिकेट है, जिसमें कुछ परिवर्तनशील नाम (फिर से, एडिसन के काम से अनुकूलित, उपयोग में आसानी के लिए सरलीकृत) है। इसके आधार पर आपको अपने स्वयं के कस्टम सामान बनाने के लिए पता होना चाहिए।

  • सभी सामान का नाम * होना चाहिए_accessory.js
  • अपने MQTT सर्वर के शीर्ष पर विकल्प चर में IP पता बदलें
  • यदि आपको एक अलग स्थिरता नाम मिला है, तो "सभी उदाहरणों को खोजें / बदलें"officelight“अपने अद्वितीय स्थिरता नाम के साथ। आप नैनो को दबाकर एक खोज / प्रतिस्थापन कर सकते हैं CTRL और \, शब्द खोजने के लिए, शब्द को बदलने के लिए, फिर मारा (सभी उदाहरणों का अर्थ है)। इनमें से प्रत्येक के माध्यम से ठीक से जानने के लिए चरणबद्ध करें कि कौन से चर अपडेट किए जा रहे हैं।
  • गौण के लिए एक अद्वितीय हेक्साडेसिमल उपयोगकर्ता नाम बनाएँ (light.username = "1B: 2B: 3C: 5D: 6E: FF";)
  • पिन कोड न बदलें। यह एक विशिष्ट प्रारूप का अनुसरण करता है, और जब तक आप नहीं जानते कि आप क्या कर रहे हैं, यह जोड़ी बनाने में सक्षम नहीं होगा। रोशनी के बीच उन्हें रखने के साथ कोई समस्या नहीं है।
  • आप अपनी स्थिरता को एक अलग "सिरी नाम" दे सकते हैं, जब उन्हें एल्गाटो ईव ऐप में जोड़ सकते हैं, और किसी भी समय उन्हें संपादित कर सकते हैं ताकि आप अपनी प्रारंभिक पसंद के साथ अटक न जाएं। कॉन्फ़िगरेशन फ़ाइलों को संपादित करने या सर्वर को पुनरारंभ करने की कोई आवश्यकता नहीं है।
  • एक बार जब आपको कई फिक्स्चर मिल जाते हैं, तो आप उन्हें कमरे में समूहित करने के लिए या कई जटिल क्रियाओं से युक्त विशिष्ट दृश्यों को बनाने के लिए एल्गाटो ईव ऐप का उपयोग कर सकते हैं। दृश्यों में कई क्रियाएं शामिल हो सकती हैं, जैसे: कार्यालय प्रकाश चालू करना, इसे 25% तक मंद करना, इसे लाल करना और कॉफी मशीन को सक्रिय करना।

आपको फिर से अपनी पसंद के होमकीट ऐप के माध्यम से अपना नया एक्सेसरी जोड़ना होगा।

अंत में, हम अपने HAP-NodeJS ऐप को चलाना चाहते हैं, जब भी पाई को पुनः आरंभ किया जाता है। निम्नलिखित को अपने में जोड़ें etc / rc.local फ़ाइल, ठीक पहले बाहर निकलें 0.

सूदो नोड / हॉम / एपीआई / एचएपी -नोडजेएस / कोरे.जेएस  देव / अशक्त और

आप इसे कुछ अन्य आदेशों के साथ जोड़ सकते हैं जिन्हें मैंने पहले ही बूट पर शुरू करने के लिए निर्धारित किया है।

स्टार्टअप पर rclocal रन नोड

यदि आप पहली बार r.local का उपयोग कर रहे हैं, तो आपको इसे निष्पादन योग्य के रूप में सेट करने की आवश्यकता हो सकती है:

सुडो चामोद 755 /etc/rc.local

यदि किसी कारण से आपको इसे फिर से डिबग मोड में चलाने की आवश्यकता है, तो आप साथ चल रहे नोड ऐप को मार सकते हैं:

हत्या का नोड

एक अंतिम चरण: सामान निर्देशिका में नेविगेट करें, और हटाएं GarageDoorOpener_accessory.js. लिखने के समय यह छोटी गाड़ी है, और थोड़ी देर के बाद सर्वर को तोड़ देगा।

आप सिरी के साथ क्या नियंत्रण करेंगे?

अब जब आपको मूल बातें मिल गई हैं, तो वास्तव में आपके द्वारा नियंत्रित की जाने वाली कोई सीमा नहीं है - यदि आप इसे जावास्क्रिप्ट में कोड कर सकते हैं, तो आप अपनी खुद की एक्सेसरी फ़ाइल बना सकते हैं। यहाँ बहुत अधिक संभावना है, मुझे लगता है कि आप बहुत मज़ेदार होने जा रहे हैं। मुझे टिप्पणियों में बताएं कि आप क्या लेकर आए हैं!

जेम्स के पास आर्टिफिशियल इंटेलिजेंस में बीएससी है, और कॉम्पिटिया ए + और नेटवर्क + प्रमाणित है। वह MakeUseOf के प्रमुख डेवलपर हैं, और अपना खाली समय वीआर पेंटबॉल और बोर्डगेम खेलने में बिताते हैं। वह पीसी का निर्माण कर रहा है क्योंकि वह एक बच्चा था।