विज्ञापन
रोशनी की फिलिप्स ह्यू रेंज निश्चित रूप से सस्ते नहीं हैं (कुछ विकल्प हैं फिलिप्स ह्यू अल्टरनेटिव जो वास्तव में इसके लायक हैंस्मार्ट लाइटिंग की बात करें तो फिलिप्स ह्यू सिस्टम चार्ज कर रहा है, लेकिन कुछ योग्य विकल्प हैं। हमने तीन को चुना है कि सभी एक ही मूल सुविधा सेट और हैकबिलिटी प्रदान करते हैं। अधिक पढ़ें ), लेकिन एक बात जो मैं वास्तव में सराहना करता हूं वह अच्छी तरह से प्रलेखित है एपीआई एपीआई क्या हैं, और इंटरनेट से बदलते हुए खुले एपीआई कैसे हैंक्या आपने कभी सोचा है कि आपके कंप्यूटर और आपके द्वारा विज़िट की जाने वाली वेबसाइट एक दूसरे से "बात" कैसे करती हैं? अधिक पढ़ें अपने स्वयं के ह्यु ऐप बनाने के लिए। आज मैं आपको एक Arduino से अपनी ह्यू लाइट्स को नियंत्रित करने का तरीका दिखा रहा हूं - फिर एक साधारण मोशन सेंसर जोड़ रहा हूं।
हम यह क्यों कर रहे हैं? क्योंकि होम ऑटोमेशन सिस्टम काफी कठोर और महंगे हो सकते हैं। Arduino से ह्यू को नियंत्रित करने का तरीका सीखने के द्वारा, आप कई तरह के कस्टम होम होम ऑटोमेशन प्रोजेक्ट के लिए दरवाजे खोलते हैं, जिन्हें केवल ऑफ-द-शेल घटकों द्वारा पीटा नहीं जा सकता। अगर चीजों को एक साथ हैक करना सिर्फ आपकी बात नहीं है, तो इन्हें आज़माएं
8 शानदार ह्यू ऐप Android और iPhone के लिए 7 सर्वश्रेष्ठ फिलिप्स ह्यू ऐपअपने स्मार्ट रोशनी के साथ उपयोग करने के लिए सबसे अच्छा फिलिप्स ह्यू एप्लिकेशन खोज रहे हैं? यहाँ iPhone और Android के लिए कई बेहतरीन ऐप हैं। अधिक पढ़ें बजाय।ह्यू सिस्टम
आइए थोड़ा सा तकनीकी करें ताकि आप उन अंतर्निहित प्रणालियों को जान सकें जिनके साथ आप काम कर रहे हैं। ह्यू लाइट्स ए मैश नेटवर्क मेष नेटवर्क: संचार का भविष्यमेष नेटवर्क लगभग अजेय हैं। एक जाल नेटवर्क में, कोई चोक पॉइंट नहीं हैं जिसके माध्यम से सभी ट्रैफ़िक गुजरते हैं। इसके बजाय, जानकारी एक डिवाइस से अगले तक तब तक पारित की जाती है जब तक कि वह अपने गंतव्य तक नहीं पहुंच जाती। अधिक पढ़ें , ZigBee नामक एक छोटी श्रेणी के वायरलेस प्रोटोकॉल का उपयोग करते हुए - विशेष रूप से, वे हैं ZigBee लाइट लिंक प्रमाणित, जिसका अर्थ है कि अन्य ZLL उत्पादों को ह्यू (सिद्धांत में) के साथ भी काम करना चाहिए।
हालांकि तकनीकी रूप से छोटी रेंज, ZigBee की जाली नेटवर्किंग सुविधा का अर्थ है कि प्रत्येक नया बल्ब नेटवर्क को विस्तारित करता है, अन्य बल्बों को संदेश रिले करता है। इसका मतलब है कि अगर आपको घर के दूसरी तरफ एक प्रकाश को नियंत्रित करने में समस्या हो रही है, तो दोनों के बीच एक और प्रकाश रखने का प्रयास करें।
ज़िगबी एक महान प्रोटोकॉल है, लेकिन यह वाई-फाई या वायर्ड कंप्यूटर नेटवर्क के लिए बिल्कुल अलग है, इसलिए हमें फिलिप्स ह्यू ब्रिज को दोनों को एक साथ जोड़ने की आवश्यकता है। ह्यू ब्रिज एक संशोधित ओपन सोर्स लिनक्स फर्मवेयर चलाता है, जो एक बेसिक वेब सर्वर को प्रसारित करता है।
इस स्थानीय वेब सर्वर के साथ बातचीत करके आप रोशनी की वर्तमान स्थिति का पता लगा सकते हैं और उन्हें नियंत्रित कर सकते हैं।
यह एक सुंदर सरल प्रणाली है, और DIY परियोजनाओं के लिए परिपक्व है। इस बात को इतना हैक करने के लिए कुदोस टू फिलिप्स।
बाहर शुरू
इससे पहले कि आप एपीआई प्रलेखन तक पहुँच सकें, आपको इसकी आवश्यकता होगी डेवलपर के रूप में पंजीकृत करें. यह मुफ़्त है, लेकिन आपको नियमों और शर्तों को स्वीकार करना होगा। अब यह करो।
मानक वेब सेवाओं या जावास्क्रिप्ट के साथ परिचित कोई भी ह्यू के साथ काम करने में सक्षम होना चाहिए: सभी डेटा को पारित किया गया और प्राप्त किया गया JSON पैकेट JSON क्या है? एक आम आदमी का अवलोकनचाहे आप एक वेब डेवलपर बनने की योजना बना रहे हों या नहीं, कम से कम यह जानना एक अच्छा विचार है कि JSON क्या है, यह क्यों महत्वपूर्ण है, और यह वेब के चारों ओर क्यों उपयोग किया जाता है। अधिक पढ़ें .
इस क्रिया को देखने के लिए, आपको अपने ह्यु ब्रिज का आईपी पता जानना होगा। ऐसा करने के कुछ तरीके हैं:
- अपने रूटर के व्यवस्थापक इंटरफ़ेस में डीएचसीपी पता असाइनमेंट टेबल देखें
- जैसे नेटवर्क मैपिंग प्रोग्राम चलाएं आईपी स्कैनर होम
- की कोशिश फिलिप्स UPnP ब्रोकर टूल
- पिंग "फिलिप्स-ह्यू.होम"
जब आप कर लें, तो आगे बढ़ें और इसे अपने ब्राउज़र एड्रेस बार में टाइप करें डिबग / clip.html URL में जोड़ा गया। मेरे मामले में, यह था:
http://192.168.1.216/debug/clip.html
यह एक डीबगिंग टूल है जो आपको एक साधारण वेब इंटरफेस के माध्यम से JSON पैकेट भेजने और प्राप्त करने देता है। पहला कदम ह्यू ब्रिज पर डेवलपर प्रोफाइल को सक्षम करना है - जो सुरक्षा कारणों से डिफ़ॉल्ट रूप से अक्षम है। निम्नलिखित को BODY फ़ील्ड में पेस्ट करें, URL को इस रूप में छोड़ दें /api/, और क्लिक करके POST अनुरोध भेजें पोस्ट बटन:
{"डेविसेटाइप": "परीक्षण उपयोगकर्ता", "उपयोगकर्ता नाम": "newdeveloper"}
पहली बार जब आप ऐसा करते हैं, तो आपको प्रतिक्रिया में कहीं "लिंक बटन दबाया नहीं" जाता है। यह एक सुरक्षा सुविधा है जिसे आपके द्वारा उपयोग किए जाने वाले हर नए एप्लिकेशन की आवश्यकता होती है। जाओ और अपना ब्रिज ढूंढो, बटन दबाओ, और फिर से वही अनुरोध भेजें 30 सेकंड के भीतर. इस बार आपको एक अलग प्रतिक्रिया मिलेगी, और उपयोगकर्ता अधिकृत होगा। यदि आप किसी भिन्न उपयोगकर्ता नाम का उपयोग करना चाहते हैं, तो एपीआई डॉक्स के बारे में पढ़ें उपयोगकर्ता बना रहे हैं. अभी के लिए, यह पर्याप्त होगा।
एक बार आपका उपयोगकर्ता सेटअप हो जाने के बाद, आपके द्वारा इंटरेक्ट किया गया आधार URL बन जाता है /api/newdeveloper/. आप अपने ब्रिज के बारे में जानने के लिए एक GET अनुरोध भेज सकते हैं जो वर्तमान में कंजंक्टेड लाइट्स, अलार्म, सीन्स और उपयोग किए जाने वाले ऐप्स के संक्षिप्त लॉग के बारे में जानता है। यहाँ एक बल्ब के लिए सम्मिलित कुछ स्टेटस जानकारी का नमूना दिया गया है।
"राज्य": {"पर": सच, "रिश्वत": 254, "ह्यू": 14910, "शनि": 144, "प्रभाव": "कोई नहीं", "xy": [0.4596, 0.4105], "टीटी": 369, "अलर्ट": "कोई नहीं", "कॉलोर्मोड": "सीटी", "पहुंच योग्य": गलत}, "टाइप": "विस्तारित रंग प्रकाश", "नाम": "बेडरूम 1", "मॉडलिड": "LCT001",
ध्यान दें कि "पर": सच राज्य वास्तव में आपको यह नहीं दिखाएगा कि बल्ब चालू है या नहीं; केवल यह कि ब्रिज सेटिंग्स के अनुसार, यह चाहिए पर होना। "पहुंच योग्य": झूठे एक बल्ब को इंगित कर सकता है जो बहुत दूर है, या बस बिजली स्विच पर बंद हो गया है।
एक आखिरी उदाहरण इससे पहले कि हम इसे Arduino में एकीकृत करते हैं: सुनिश्चित करें कि आपकी एक रोशनी दिखाई दे रही है और उस पर है, और आपको पता है कि यह कौन सी संख्या है। URL को बदलें /api/newdevelopers/lights/1/state (नंबर को अपने प्रकाश में बदलते हुए), और निम्नलिखित डेटा के साथ एक पुत अनुरोध भेजें:
{"hue": 50100, "sat": 255, "bri": 255}
आपको अपनी हल्की प्रतिक्रिया इस तरह देखनी चाहिए:
आपने जो किया है, वह एक नए राज्य को बल्ब की ओर धकेलता है। आप "ट्रांज़ेक्शनटाइम" भी जोड़ सकते हैं, जो कि एक आदिम एनिमेशन विधि है, जो यह बताती है कि आप कितने सेकंड के लिए राज्य बदलना चाहते हैं।
रंग में सेट किया जा सकता है विभिन्न तरीकों से, लेकिन दुर्भाग्य से RGB मूल्य भेजने का कोई सरल तरीका नहीं है। ऊपर के उदाहरण में, हमने भेजा रंग, बैठ गयाature, और brightness। ह्यू मान बदलने और पुन: अनुरोध भेजने का प्रयास करें।
Arduino से कार्य करना
वहाँ एक मौजूदा ह्यू / Arduino पुस्तकालय कहा जाता है ArduinoHue जो फिलिप्स स्वयं एपीआई प्रलेखन में लिंक करता है, लेकिन इस पुस्तकालय के साथ समस्या यह है कि यह आपके पीसी के लिए USB कनेक्शन पर संचार करता है, जिसे पायथन एप्लिकेशन चलाने की भी आवश्यकता होती है लगातार। Eugh. आप अपने कंप्यूटर को उस बिंदु पर पूरी चीज़ को चलाने दे सकते हैं, और Arduino को पूरी तरह से काट सकते हैं।
इसके बजाय, मैं आपको दिखाता हूं कि Arduino से Hue को कैसे नियंत्रित किया जाए ईथरनेट शील्ड का उपयोग करना. आपका Arduino जरूरतमंद कंप्यूटर से जुड़ा नहीं होगा, इसलिए यह कहीं भी स्वतंत्र रूप से काम कर सकता है जिसमें आप ईथरनेट केबल डाल सकते हैं। वास्तव में, यह वाई-फाई शील्ड के साथ भी काम करना चाहिए, लेकिन मेरे पास खेलने के लिए नहीं है।
यदि आप आगे छोड़ना चाहते हैं, तो पूरा नमूना कोड नीचे एम्बेड किया गया है, या यहां उपलब्ध है. मैंने इसे पोस्ट किए गए उदाहरण से अनुकूलित किया है गिलसन ऑगाइम द्वारा. यदि आपने पहले कभी अपने ईथरनेट शील्ड के साथ नहीं खेला है, तो आप इसके माध्यम से एक त्वरित रन बनाना चाहते हैं वेब क्लाइंट ट्यूटोरियल - मैं इसके साथ कुछ स्तर की परिचितता नहीं मानूंगा, और नेटवर्क आईपी आदि की स्थापना के लिए उपयोग किए जाने वाले कोड को कवर नहीं किया जाएगा। हमने आपको भी दिखाया है ईथरनेट ढाल के साथ एक मिनी वेब-सर्वर कैसे बनाएं एक ईथरनेट शील्ड के साथ अपने Arduino प्रोजेक्ट को अपनी खुद की मिनी-वेबसर्वर देंकुछ समय पहले, मैंने आपको अपने Arduino के लिए एक इंटरनेट कंट्रोल सिस्टम सेटअप करने का तरीका दिखाया था - लेकिन इंटरनेट कनेक्शन को बनाए रखने के लिए इसे USB के माध्यम से कंप्यूटर से कनेक्ट रहना पड़ता था ... अधिक पढ़ें .
राज्य परिवर्तन करना
बल्बों को धक्का देने के लिए एक नया राज्य बनाना एक नया बनाने का एक सरल मामला है तार परिवर्तनशील, और सभी दोहरे उद्धरण चिह्नों से बचकर। मैंने एक जोड़ा है यादृच्छिक () समारोह में वहाँ के रूप में अच्छी तरह से एक गतिशील गतिशील बनाने के लिए। विभिन्न रंगों के लिए ह्यू चर को भी यादृच्छिक बनाने का प्रयास करें।
स्ट्रिंग कमांड = "{\" पर ": true, \" hue \ ": 50100, \" sat \ ": 255, \" bri \ ": 255, \" ट्रांज़ेक्शनटाइम \ ":" + स्ट्रिंग (यादृच्छिक (15,) 25)) + "}";
आज्ञा भेजना
वास्तव में कमांड भेजने के लिए, आपके पास एक हेल्पर फंक्शन है, जिसे setHue () कहा जाता है, जो लाइट नंबर और कमांड स्ट्रिंग को एक तर्क के रूप में लेता है, जैसे:
setHue (1, कमांड);
यह सब तब होता है जब यह पुल से जुड़ता है, कमांड को PUT अनुरोध के रूप में बाहर करता है, साथ ही HTTP अनुरोध बनाने वाले अन्य सभी बकवास के साथ।
client.print ("PUT / api /"); client.print (hueUsername); client.print ( "/ रोशनी /"); client.print (lightNum); client.println ("/ राज्य HTTP / 1.1"); client.println ( "रखें जिंदा"); क्लाइंट.प्रिंट ("होस्ट:"); client.println (hueHubIP); क्लाइंट.प्रिंट ("सामग्री-लंबाई:"); client.println (command.length ()); client.println ("सामग्री-प्रकार: पाठ / सादा; charset = UTF-8 "); client.println (); // शरीर से पहले खाली लाइन। client.println (कमांड); // ह्यू कमांड।
एक मोशन सेंसर जोड़ना
अंत में, मैंने एक साधारण तार दिया HC-SR501 मोशन सेंसर डिजिटल I / O पिन 2 के लिए। जब गति का पता चलता है, राज्यों की एक श्रृंखला को धीमी, गतिशील एनीमेशन बनाने के लिए 2 बल्बों के लिए पुल पर धकेल दिया जाता है। जब गति संवेदक निष्क्रिय हो जाता है, तो एकल बंद आदेश दोनों को भेजा जाता है। आदर्श रूप से, वे उस स्थिति में वापस आ जाएंगे, जब वे गति का पता लगाने से पहले थे, लेकिन तर्क यह नहीं है कि स्मार्ट - हम उन्हें चालू और बंद करने जा रहे हैं।
सीमाएं
हालाँकि, कोड को स्वीकार नहीं किया गया है, लेकिन Arduino के नेटवर्क इंटरफ़ेस के लिए लगभग एक सेकंड का समय लगता है। मैंने एक ही ईथरनेट कनेक्शन का उपयोग करके मैक से एक ही कमांड का परीक्षण किया, और यह उस गति से दस से बीस गुना सक्षम था (यहाँ AppleScript है अगर आप परीक्षण करना चाहते हैं) नतीजतन, किसी भी प्रकार का तेज एनीमेशन (मैं एक चंचल मोमबत्ती प्रभाव बनाने का प्रयास कर रहा था) केवल एक Arduino से संभव नहीं है। यह उच्च गति प्रकाश एनिमेशन के लिए, ज्यादातर परियोजनाओं के लिए समस्या नहीं होनी चाहिए, लेकिन सीमा के बारे में पता होना अच्छा है।
पुल से वापस आने वाली किसी भी JSON प्रतिक्रिया को पूरी तरह से पार्स करना भी मुश्किल है; सभी कच्चे डेटा को संग्रहीत करने के लिए Arduino पर बस पर्याप्त रैम नहीं है। इस कारण से, आप अपने आप को भेजने के लिए अधिकतर सीमित कर सकते हैं।
ह्यू हैक
अब जब आप ह्यू को पूरी तरह से स्वतंत्र रूप से नियंत्रित करने के ज्ञान से लैस हैं, तो यह ह्यू होम ऑटोमेशन हैक की दुनिया को खोल देता है। असली सवाल यह है: आप क्या बनायेंगे
जेम्स के पास आर्टिफिशियल इंटेलिजेंस में बीएससी है, और कॉम्पिटिया ए + और नेटवर्क + प्रमाणित है। वह MakeUseOf के प्रमुख डेवलपर हैं, और अपना खाली समय वीआर पेंटबॉल और बोर्डगेम खेलने में बिताते हैं। वह पीसी का निर्माण कर रहा है क्योंकि वह एक बच्चा था।