विषयसूची:

एलेक्सा और रास्पबेरी पाई के साथ लिविंग रूम को नियंत्रित करें: 12 कदम
एलेक्सा और रास्पबेरी पाई के साथ लिविंग रूम को नियंत्रित करें: 12 कदम

वीडियो: एलेक्सा और रास्पबेरी पाई के साथ लिविंग रूम को नियंत्रित करें: 12 कदम

वीडियो: एलेक्सा और रास्पबेरी पाई के साथ लिविंग रूम को नियंत्रित करें: 12 कदम
वीडियो: Control ANYTHING with Alexa & Raspberry Pi Maker Project Episode 2 2024, जून
Anonim
एलेक्सा और रास्पबेरी पाई के साथ लिविंग रूम को नियंत्रित करें
एलेक्सा और रास्पबेरी पाई के साथ लिविंग रूम को नियंत्रित करें

एलेक्सा (अमेज़ॅन इको या डॉट) और रास्पबेरी पाई जीपीआईओ के साथ अपने लिविंग रूम टीवी, लाइट और फैन को नियंत्रित करें।

चरण 1: प्रारंभिक सेटअप

मैंने https://www.raspberrypi.org/downloads/raspbian/ से डाउनलोड की गई रास्पबेरी पाई 2 और एक रास्पियन जेसी छवि का उपयोग किया

एक बार लॉग इन करने के बाद, आवश्यक पैकेज और पायथन लाइब्रेरी स्थापित करने के लिए निम्नलिखित कमांड दर्ज करें:

sudo apt-get update && sudo apt-get upgrade -ysudo apt-get install python2.7-dev python-dev python-pip sudo pip install फ्लास्क फ्लास्क-पूछें sudo apt-lirc इंस्टॉल करें

चरण 2: सेटअप Ngrok

सेटअप Ngrok
सेटअप Ngrok

ngrok.com/download पर जाएं और नवीनतम लिनक्स एआरएम रिलीज को ज़िप के रूप में प्राप्त करें और होम डायरेक्टरी के अंदर अनज़िप करें:

अनज़िप /home/pi/ngrok-stable-linux-arm.zip

एक नया टर्मिनल खोलें और निम्न कमांड दर्ज करें:

सुडो./ngrok http 4000

एक और नया टर्मिनल खोलें और निम्न कमांड दर्ज करें:

सुडो./ngrok http 4500

तीसरा नया टर्मिनल खोलें और निम्न कमांड दर्ज करें:

सुडो./ngrok http 5000

चरण 3: लाइट स्विच नियंत्रण के लिए पायथन स्क्रिप्ट

एक नया टर्मिनल सत्र खोलें और light_control.py नाम की एक नई अजगर फ़ाइल बनाएँ:

नैनो light_control.py

निम्न कोड को नई फ़ाइल में कॉपी/पेस्ट करें:

फ्लास्क आयात फ्लास्क से फ्लास्क_आस्क आयात से पूछें, स्टेटमेंट, कन्वर्ट_एरर्स आयात आरपीआई। जीपीआईओ को जीपीआईओ आयात लॉगिंग आयात ओएस जीपीआईओ.सेटमोड (जीपीआईओ. फ्लास्क_आस्क")। सेटलेवल (लॉगिंग। डीईबीयूजी) @ask.intent ('लाइटकंट्रोलइंटेंट', मैपिंग = {'स्टेटस': 'स्टेटस'}) डिफ लाइट_कंट्रोल (स्टेटस): कोशिश करें: पिननम = 27 अपवाद को छोड़कर ई: रिटर्न स्टेटमेंट ('पिन नंबर मान्य नहीं है।') GPIO.setup(pinNum, GPIO. OUT) यदि स्थिति ['on', 'high'] में है: GPIO.output(pinNum, GPIO. LOW) यदि स्थिति ['off', ' Low']: GPIO.output(pinNum, GPIO. HIGH) रिटर्न स्टेटमेंट ('टर्निंग {} लिविंग रूम लाइट्स'। फॉर्मेट (स्टेटस)) अगर _name_ == '_main_': पोर्ट = 4000 ऐप.रन (होस्ट =') 0.0.0.0', पोर्ट = पोर्ट)

फ़ाइल को सहेजें और बंद करें।

फ्लास्क सर्वर को इसके साथ शुरू करें:

सुडो पायथन light_control.py

ngrok और light_control.py दोनों को चालू रहने दें

चरण 4: फैन कंट्रोल के लिए पायथन स्क्रिप्ट

एक नया टर्मिनल सत्र खोलें और fan_control.py नामक एक नई पायथन फ़ाइल बनाएं:

नैनो fan_control.py

निम्नलिखित कोड को नई फ़ाइल में कॉपी/पेस्ट करें:

फ्लास्क आयात फ्लास्क से

Flask_ask आयात से पूछें, कथन, Convert_errors RPIO आयात करें।.setLevel(logging. DEBUG) @ask.intent('FanControlIntent', मैपिंग={'status': 'status'}) def fan_control(status): try: pinNum = 22 अपवाद को छोड़कर e: रिटर्न स्टेटमेंट ('पिन नंबर') मान्य नहीं है।') GPIO.setup(pinNum, GPIO. OUT) यदि स्थिति ['चालू', 'उच्च'] में है: GPIO.output(pinNum, GPIO. LOW) यदि स्थिति ['off', 'low'] में है: GPIO.output(pinNum, GPIO. HIGH) रिटर्न स्टेटमेंट ('टर्निंग {} लिविंग रूम लाइट्स'। फॉर्मेट (स्टेटस)) अगर _name_ == '_main_': पोर्ट = 4500 ऐप.रन (होस्ट = '0.0.0.0) ', पोर्ट = पोर्ट)

फ़ाइल को सहेजें और बंद करें।

फ्लास्क सर्वर को इसके साथ शुरू करें:

सूडो अजगर fan_control.py

ngrok, light_control.py, और fan_control.py दोनों को चालू रहने दें

चरण 5: एलआईआरसी पैकेज को स्थापित और कॉन्फ़िगर करना

टीवी को नियंत्रित करने के लिए आपको अपने विशिष्ट टीवी के लिए इन्फ्रारेड (आईआर) सिग्नल उत्पन्न करने के लिए रास्पबेरी पाई पर एक पिन कॉन्फ़िगर करना होगा। टर्मिनल खोलें और एलआईआरसी पैकेज स्थापित करने के लिए निम्न कमांड दर्ज करें जो कई रिमोट कंट्रोल के इन्फ्रारेड सिग्नल का अनुकरण करता है।

sudo apt-lirc स्थापित करें

इसके बाद, आपको lirc_rpi कर्नेल मॉड्यूल को सक्षम और कॉन्फ़िगर करने की आवश्यकता है। ऐसा करने के लिए, नैनो संपादक में मॉड्यूल खोलें

सुडो नैनो / आदि / मॉड्यूल

फ़ाइल में नीचे की पंक्तियाँ जोड़ें (सुनिश्चित करें कि gpio_out_pin पैरामीटर IR LED को नियंत्रित करने वाले पिन को इंगित करता है):

lirc_devlirc_rpi gpio_out_pin=17

इसके बाद, नैनो के साथ पहले की तरह हार्डवेयर.कॉन्फ फाइल को नैनो में खोलें:

सुडो नैनो /etc/lirc/hardware.conf

फ़ाइल में निम्न कॉन्फ़िगरेशन जोड़ें:

LIRCD_ARGS="--uinput"LOAD_MODULES=true

ड्राइवर = "डिफ़ॉल्ट"

DEVICE="/dev/lirc0"

मॉड्यूल = "lirc_rpi"

LIRCD_CONF=""

LIRCMD_CONF=""

अब, रास्पबेरी पाई को रिबूट करें:

सुडो रिबूट

चरण 6: टीवी नियंत्रण के लिए पायथन स्क्रिप्ट

एक नया टर्मिनल सत्र खोलें और ir_control.py नाम की एक नई अजगर फ़ाइल बनाएँ:

नैनो ir_control.py

lirc-remotes.sourceforge.net/remotes-table… पर जाएं

ऐसा रिमोट ढूंढें जो आपके टीवी के अनुकूल हो। मेरे मामले में मेरे पास एक सान्यो टीवी है जो sanyo-tv01 कॉन्फ़िग फ़ाइल के साथ काम करता है। एक बार जब आपको कोई फ़ाइल मिल जाए जो आपके टीवी का समर्थन करती है तो उसे खोलें और कमांड विकल्पों को देखें।

निम्नलिखित कोड को नई फ़ाइल में कॉपी/पेस्ट करें और sanyo-tv01 को उस फ़ाइल नाम से बदलें जो आपके टीवी के साथ काम करता है। यह भी सुनिश्चित करें कि टीवी कमांड आपके टीवी कॉन्फिग फाइल द्वारा समर्थित हैं; अपने टीवी की कॉन्फ़िग फ़ाइल के साथ ठीक से काम करने के लिए आपको KEY_POWER, KEY_VIDEO, KEY_VOLUMEUP, KEY_VOLUMEDOWN, और KEY_MUTE कमांड को संशोधित करना पड़ सकता है:

फ्लास्क आयात फ्लास्क से फ्लास्क_आस्क आयात से पूछें, स्टेटमेंट, कन्वर्ट_एरर्स आयात आरपीआई। जीपीआईओ को जीपीआईओ आयात लॉगिंग आयात ओएस जीपीआईओ.सेटमोड (जीपीआईओ. फ्लास्क_आस्क")। सेटलेवल (लॉगिंग। डीईबीयूजी) @ask.intent ('GPIOControlIntent', मैपिंग = {'स्टेटस': 'स्टेटस'}) #'पिन': 'पिन'}) def tv_function (स्टेटस): अगर स्टेटस इन ['टर्न ऑन']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_POWER") रिटर्न स्टेटमेंट('Turning on the TV') elif status in ['turn off']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_POWER") रिटर्न स्टेटमेंट ('टीवी बंद करना') एलिफ स्थिति ['इनपुट बदलें'] में: os.system("irsend SEND_ONCE sanyo-tv01 KEY_VIDEO") os.system("irsend SEND_ONCE sanyo-tv01 KEY_VIDEO") रिटर्न स्टेटमेंट ('टीवी पर इनपुट बदलना') एलिफ स्टेटस इन ['वॉल्यूम बढ़ाएं']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system("भेजेंEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system("Irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") रिटर्न स्टेटमेंट ('टीवी पर वॉल्यूम बढ़ाना') एलिफ स्टेटस ['कम वॉल्यूम'] में: os.system("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os.system("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") ") रिटर्न स्टेटमेंट ('टीवी पर वॉल्यूम घटाना') एलिफ स्टेटस ['म्यूट'] में: os.system("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") रिटर्न स्टेटमेंट ('टीवी को म्यूट करना') एलिफ स्टेटस ['अनम्यूट' में ']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") रिटर्न स्टेटमेंट ('टीवी को अनम्यूट करना') और: रिटर्न स्टेटमेंट ('रिमोट फंक्शन नहीं मिला।') अगर _name_ == '_main_': पोर्ट = 5000 ऐप रन (होस्ट = '0.0.0.0', पोर्ट = पोर्ट)

फ़ाइल को सहेजें और बंद करें।

फ्लास्क सर्वर को इसके साथ शुरू करें:

सूडो पायथन ir_control.py

सभी तीन ngrok टर्मिनल विंडो, light_control.py, fan_control.py, और ir_control.py को चालू रहने दें

चरण 7: एडब्ल्यूएस खाते में लॉग इन करें

एडब्ल्यूएस खाते में लॉगिन करें
एडब्ल्यूएस खाते में लॉगिन करें

सबसे पहले अपना AWS डेवलपर अकाउंट बनाएं या लॉग इन करें और एलेक्सा स्किल्स की अपनी सूची खोलें।

चरण 8: टीवी एलेक्सा स्किल सेटअप

टीवी एलेक्सा स्किल सेटअप
टीवी एलेक्सा स्किल सेटअप

"एक नया कौशल जोड़ें" चुनें।

स्किल नेम को 'ट्रिगर टीवी' और इनवोकेशन नेम को उस शब्द (शब्दों) पर सेट करें, जिसका इस्तेमाल आप स्किल को एक्टिवेट करने के लिए करना चाहते हैं।

जारी रखने के लिए आगे दबाएँ।

निम्नलिखित को 'इरादा स्कीमा' बॉक्स में कॉपी/पेस्ट करें:

{ "इरादे": [{

"स्लॉट": [{"नाम": "स्थिति", "प्रकार": "TV_Function"}, {"नाम": "राशि", "प्रकार": "AMAZON. NUMBER" }], "इरादा": "GPIOControlIntent" " }] }

अगला, 'स्लॉट प्रकार जोड़ें' पर क्लिक करें

'एंटर टाइप' फील्ड में TV_Function दर्ज करें।

'मान दर्ज करें' फ़ील्ड में निम्नलिखित मान दर्ज करें:

चालू करो

परिवर्तन बंद करें इनपुट में वृद्धि मात्रा में कमी वॉल्यूम कम करें म्यूट अनम्यूट करें

इसके बाद, निम्नलिखित को 'नमूना कथन' बॉक्स में कॉपी/पेस्ट करें:

GPIOControlIntent {status}

GPIOControlIntent {status} द्वारा {राशि}

जारी रखने के लिए आगे दबाएँ।

सेवा समापन बिंदु प्रकार के रूप में 'HTTPS' का चयन करें और एक क्षेत्र का चयन करें। चरण 2 से ngrok URL दर्ज करें और 'अगला' पर क्लिक करें। यूआरएल कुछ ऐसा होना चाहिए:

ed6ea04d.ngrok.io

जारी रखने के लिए 'अगला' पर क्लिक करें और 'सहेजें' दबाएं।

स्टेप 9: लाइट्स एलेक्सा स्किल सेटअप

लाइट्स एलेक्सा स्किल सेटअप
लाइट्स एलेक्सा स्किल सेटअप

खुला कौशल बंद करें और "एक नया कौशल जोड़ें" चुनें।

स्किल नेम को 'लाइट्स कंट्रोल' और इनवोकेशन नेम को उस शब्द (शब्दों) पर सेट करें, जिसका इस्तेमाल आप स्किल को एक्टिवेट करने के लिए करना चाहते हैं।

जारी रखने के लिए आगे दबाएँ। निम्नलिखित को 'इरादा स्कीमा' बॉक्स में कॉपी/पेस्ट करें:

{

"इरादे": [{"स्लॉट": [{"नाम": "स्थिति", "प्रकार": "LIGHTS_CONTROL" }], "इरादा": "लाइट्सकंट्रोलइंटेंट" }] }

इसके बाद, 'स्लॉट टाइप जोड़ें' पर क्लिक करें।

'एंटर टाइप' फील्ड में "LIGHTS_CONTROL" दर्ज करें।

'मान दर्ज करें' फ़ील्ड में निम्नलिखित मान दर्ज करें:

पर

बंद

इसके बाद, निम्नलिखित को 'नमूना कथन' बॉक्स में कॉपी/पेस्ट करें:

LightsControlIntent टर्न {status}

जारी रखने के लिए आगे दबाएँ। सेवा समापन बिंदु प्रकार के रूप में 'HTTPS' चुनें और एक क्षेत्र चुनें। चरण 2 से ngrok URL दर्ज करें और 'अगला' पर क्लिक करें। यूआरएल कुछ ऐसा होना चाहिए:

ed6ea04d.ngrok.io

जारी रखने के लिए 'अगला' पर क्लिक करें और 'सहेजें' दबाएं।

चरण 10: फैन एलेक्सा स्किल सेटअप

फैन एलेक्सा स्किल सेटअप
फैन एलेक्सा स्किल सेटअप

खुला कौशल बंद करें और "एक नया कौशल जोड़ें" चुनें।

कौशल नाम को 'प्रशंसक नियंत्रण' और आमंत्रण नाम को उस शब्द (शब्दों) पर सेट करें जिसका उपयोग आप कौशल को सक्रिय करने के लिए करना चाहते हैं।

जारी रखने के लिए आगे दबाएँ।

निम्नलिखित को 'इरादा स्कीमा' बॉक्स में कॉपी/पेस्ट करें:

{

"इरादे": [{"स्लॉट": [{"नाम": "स्थिति", "प्रकार": "FAN_CONTROL"}], "इरादा": "FANControlIntent" }] }

इसके बाद, 'स्लॉट टाइप जोड़ें' पर क्लिक करें।

'एंटर टाइप' फील्ड में "FAN_CONTROL" दर्ज करें।

'मान दर्ज करें' फ़ील्ड में निम्नलिखित मान दर्ज करें:

पर

बंद

इसके बाद, निम्नलिखित को 'नमूना कथन' बॉक्स में कॉपी/पेस्ट करें:

FANControlIntent टर्न {status}

जारी रखने के लिए आगे दबाएँ। सेवा समापन बिंदु प्रकार के रूप में 'HTTPS' चुनें और एक क्षेत्र चुनें। चरण 2 से ngrok URL दर्ज करें और 'अगला' पर क्लिक करें। यूआरएल कुछ ऐसा होना चाहिए:

ed6ea04d.ngrok.io

जारी रखने के लिए 'अगला' पर क्लिक करें और 'सहेजें' दबाएं।

चरण 11: सर्किट का निर्माण करें

Ciruit का निर्माण करें
Ciruit का निर्माण करें

आरेख में दिखाए अनुसार सर्किट को कनेक्ट करें। मैंने अपने घरों AC 120v लाइन और ग्राउंड से कनेक्ट करने के लिए JBtek 8 Channel DC 5V रिले मॉड्यूल का उपयोग किया।

चरण 12: एलेक्सा कमांड

अब आपके लिविंग रूम को कंट्रोल करने के लिए एलेक्सा से निम्न कमांड बोल सकते हैं।

सिफारिश की: