रास्पबेरी पाई होम ऑटोमेशन सेट करें

Set Up Raspberry Pi Home Automation



होम ऑटोमेशन के लिए सबसे महत्वपूर्ण चीजों में से एक लो-वोल्टेज डीसी का उपयोग करके हाई-वोल्टेज एसी को नियंत्रित करना है। रास्पबेरी पाई से उच्च वोल्टेज एसी को नियंत्रित करने के लिए, आपको 5V रिले स्विच की आवश्यकता होगी। आप रास्पबेरी पाई के GPIO पिन का उपयोग करके रिले स्विच को नियंत्रित कर सकते हैं। रिले स्विच तब रास्पबेरी पाई के माध्यम से एसी घरेलू उपकरणों को नियंत्रित कर सकता है।

यह लेख आपको दिखाएगा कि अपने मोबाइल डिवाइस से लाइटबल्ब को चालू और बंद करने के लिए रास्पबेरी पाई और 5वी रिले स्विच का उपयोग कैसे करें। लेख में एक वेब ऐप शामिल है जिसे आप अपने नेटवर्क पर किसी भी डिवाइस से एक्सेस कर सकते हैं और अपने घर में किसी भी एसी घरेलू उपकरणों को वायरलेस तरीके से नियंत्रित कर सकते हैं। तो, आइए हम अपने सरल रास्पबेरी पाई होम ऑटोमेशन प्रयोग के साथ शुरुआत करें।







चीजें जिनकी आपको आवश्यकता होगी

यदि आप अपने रास्पबेरी पाई हेडलेस (एसएसएच या वीएनसी के माध्यम से) का उपयोग करना चाहते हैं, तो आपको निम्नलिखित चीजों की आवश्यकता होगी:



1) रास्पबेरी पाई 3 या रास्पबेरी पाई 4।
2) 5 वी रिले स्विच।
3) बिजली के तार।
4) 3 महिला-से-महिला कनेक्टिंग तार।
5) एसी लाइटबल्ब।
6) एसी लाइटबल्ब होल्डर।
7) एसी प्लग।
8) वायरकटर और स्ट्रिपर टूल।
9) सीआर-वी 3 स्क्रूड्राइवर।
10) माइक्रो-यूएसबी (रास्पबेरी पाई 3) या यूएसबी टाइप-सी (रास्पबेरी पाई 4) पावर एडॉप्टर।
11) रास्पबेरी पाई ओएस के साथ 16 जीबी या 32 जीबी माइक्रोएसडी कार्ड फ्लैश।
12) रास्पबेरी पाई पर नेटवर्क कनेक्टिविटी।
13) वीएनसी रिमोट डेस्कटॉप एक्सेस या रास्पबेरी पाई के लिए एसएसएच एक्सेस के लिए लैपटॉप या डेस्कटॉप कंप्यूटर।



यदि आप रास्पबेरी पाई को एसएसएच या वीएनसी के माध्यम से दूरस्थ रूप से एक्सेस नहीं करना चाहते हैं, तो आपको निम्नलिखित की भी आवश्यकता होगी:





14) एक मॉनिटर।
15) एचडीएमआई या माइक्रो-एचडीएमआई केबल।
16) एक कीबोर्ड।
17) एक माउस।

यदि आपको रास्पबेरी पाई ओएस छवि को माइक्रोएसडी कार्ड में फ्लैश करने में सहायता की आवश्यकता है, तो लेख देखें कि रास्पबेरी पाई इमेजर कैसे स्थापित करें और उसका उपयोग करें।



यदि आप रास्पबेरी पाई के शुरुआती हैं और आपको रास्पबेरी पाई पर रास्पबेरी पाई ओएस स्थापित करने में सहायता की आवश्यकता है, तो लेख देखें रास्पबेरी पाई 4 पर रास्पबेरी पाई ओएस कैसे स्थापित करें।

इसके अलावा, यदि आपको रास्पबेरी पाई के हेडलेस सेटअप के साथ सहायता की आवश्यकता है, तो लेख देखें कि बाहरी मॉनिटर के बिना रास्पबेरी पाई 4 पर रास्पबेरी पाई ओएस कैसे स्थापित और कॉन्फ़िगर करें।

सभी आवश्यक उपकरणों की छवियां नीचे दी गई हैं।

रास्पबेरी पाई पर पावरिंग

इसके बाद, पावर केबल को रास्पबेरी पाई से कनेक्ट करें और रास्पबेरी पाई पर पावर करें।

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

5V रिले पिनआउट

एक रिले मूल रूप से एक स्विच है। लेकिन, एक पारंपरिक स्विच के विपरीत, एक रिले को थोड़ी मात्रा में डीसी वोल्टेज द्वारा नियंत्रित किया जा सकता है।

5V रिले का उपयोग करना बहुत आसान है। इसके दो पहलू हैं: एक पक्ष का उपयोग लो-वोल्टेज डीसी (रास्पबेरी पाई से) के माध्यम से रिले को नियंत्रित करने के लिए किया जाता है, और दूसरी तरफ उच्च वोल्टेज एसी (यानी, लाइटबल्ब) को नियंत्रित करने के लिए उपयोग किया जाता है, जो रिले की स्थिति पर निर्भर करता है। .


एक तरफ, रिले में दो एलईडी (एक लाल और एक हरा) और तीन पिन होते हैं ( आईएन, जीएनडी, तथा वीसीसी ) रास्पबेरी पाई से रिले को नियंत्रित करने के लिए इन तीन पिनों का उपयोग किया जाता है।

दूसरी तरफ पहले दो पिन एसी घरेलू उपकरण को नियंत्रित करने के लिए उपयोग किए जाते हैं।

5V रिले को Raspberry Pi . से कनेक्ट करना

5V रिले को रास्पबेरी पाई से जोड़ने के लिए, आपको तीन महिला-से-महिला कनेक्टिंग तारों की आवश्यकता होगी।

कनेक्टिंग तारों के एक तरफ को प्लग करें में (पीला तार), जीएनडी (काला तार), और वीसीसी (लाल तार) 5V रिले में पिन, जैसा कि नीचे दिखाया गया है।


तारों का दूसरा किनारा रास्पबेरी पाई के GPIO हेडर पिन में जाता है, जैसा कि नीचे की छवि में दिखाया गया है।

लाल तार में जाना चाहिए पिन 2 (वीसीसी) रास्पबेरी पाई का।
काला तार अंदर जाना चाहिए पिन 6 (जीएनडी) रास्पबेरी पाई का।
पीले तार में जाना चाहिए पिन 7 (जीपीआईओ 4) रास्पबेरी पाई का।


एक बार जब 5V रिले रास्पबेरी पाई से जुड़ा होता है, तो इसे नीचे की छवि में दिखाया जाना चाहिए।

लॉगिन उपयोगकर्ता के लिए GPIO एक्सेस की अनुमति देना

GPIO पिन तक पहुंच की अनुमति देने के लिए, रास्पबेरी पाई ओएस का डिफ़ॉल्ट लॉगिन उपयोगकर्ता अनुकरणीय में जोड़ा जाना चाहिए जीपीओ समूह।

आप जोड़ सकते हैं अनुकरणीय उपयोगकर्ता को जीपीओ निम्न आदेश के साथ समूह:

$सुडोउपयोगकर्तामोड-एजीजीपीओ $(मैं कौन हूं)


परिवर्तनों को प्रभावी करने के लिए, रास्पबेरी पाई को निम्नलिखित कमांड से रिबूट करें:

$सुडोरीबूट

एक परियोजना निर्देशिका बनाना

सभी प्रोजेक्ट फाइलों को व्यवस्थित रखना भी एक अच्छा विचार है।

प्रोजेक्ट फ़ाइलों को व्यवस्थित रखने के लिए, प्रोजेक्ट निर्देशिका बनाएँ ~/www और निम्न आदेश के साथ आवश्यक उपनिर्देशिकाएं:

$एमकेडीआईआर -पीवी~/www/{टेम्पलेट्स, स्थिर}


प्रोजेक्ट डायरेक्टरी बनने के बाद, प्रोजेक्ट डायरेक्टरी में निम्नानुसार नेविगेट करें:

$सीडी~/www

रास्पबेरी पाई से 5V रिले स्विच करना

अब जब आपने 5V रिले को रास्पबेरी पाई से कनेक्ट कर लिया है, तो आप पाइथन प्रोग्रामिंग भाषा का उपयोग करके रिले को रास्पबेरी पाई से स्विच कर देंगे।

नोट: स्विचिंग इलेक्ट्रॉनिक्स में इस्तेमाल किया जाने वाला एक शब्द है। स्विचिंग का अर्थ है एक निश्चित इलेक्ट्रॉनिक उपकरण को नियंत्रित करना (अर्थात चालू / बंद करना)।

पायथन प्रोग्रामिंग भाषा का उपयोग करके रिले को स्विच करने के साथ प्रयोग करने के लिए, प्रोजेक्ट निर्देशिका में नई पायथन स्क्रिप्ट test.py इस प्रकार बनाएं:

$नैनोtest.py


test.py पायथन लिपि में कोड की निम्न पंक्तियाँ टाइप करें।

सेजीपीओजेरोआयातएलईडी
से समय आयातनींद

जबकि सत्य:
रिले=एलईडी(4)
प्रिंट('पर रिले')
नींद(5)

रिले।बंद करे()
प्रिंट('रिले: ऑफ')
नींद(5)

एक बार जब आप कर लें, तो दबाएं + एक्स के बाद तथा तथा बचाने के लिए test.py पायथन लिपि।


यहां, लाइन 1 आयात एलईडी से जीपीओजेरो पुस्तकालय, और लाइन 2 आयात करता है नींद से समारोह समय पुस्तकालय।


पंक्तियाँ 6-14 अनंत लूप के भीतर हैं।


लाइन 6 में एक एलईडी इनिशियलाइज़ करता है जीपीआईओ 4 रास्पबेरी पाई का, जो से जुड़ा है में रिले का पिन।


लाइन 8 का उपयोग करके रिले को चालू करता है पर() तरीका।

लाइन 9 कंसोल में एक संदेश का उपयोग करके प्रिंट करता है प्रिंट () समारोह।

लाइन 10 कोड की अगली पंक्ति के निष्पादन में पांच सेकंड के लिए देरी करता है नींद() समारोह।


लाइन 12 का उपयोग करके रिले को बंद कर देता है बंद करे() तरीका।

उसी तरह, लाइन 9 कंसोल पर एक संदेश का उपयोग करके प्रिंट करता है प्रिंट () फ़ंक्शन और लाइन 10 का उपयोग करके कोड की अगली पंक्ति के निष्पादन में 5 सेकंड के लिए देरी करता है नींद() समारोह।


अगला, चलाएँ test.py पायथन लिपि इस प्रकार है:

$python3 test.py


NS test.py पायथन लिपि को 5V रिले को स्विच करना शुरू कर देना चाहिए। आपको हर पांच सेकंड में एक क्लिक की आवाज सुननी चाहिए। जब रिले राज्य (चालू से बंद या बंद से चालू) पर स्विच करता है, तो यह एक क्लिकिंग शोर करता है। इसका मतलब है कि रिले ठीक से काम कर रहा है।


जब रिले ऑफ-स्टेट (सामान्य ऑपरेशन - एसी लोड डिस्कनेक्ट हो जाता है) में होता है, तो केवल जाल एलईडी को प्रकाश करना चाहिए, जैसा कि आप नीचे दी गई छवि में देख सकते हैं।


जब रिले ऑन-स्टेट (एसी लोड जुड़ा हुआ है) में है, तो दोनों हरा एलईडी और NS जाल एलईडी को प्रकाश करना चाहिए, जैसा कि आप नीचे दी गई छवि में देख सकते हैं।


एक बार परीक्षण पूरा हो जाने पर, दबाएँ + सी समाप्त करने के लिए test.py स्क्रिप्ट

एसी लाइटबल्ब को 5वी रिले से कनेक्ट करना

5V रिले को अब ठीक से काम करना चाहिए। अब, आप अपने एसी घरेलू उपकरण (इस मामले में एक लाइटबल्ब) को 5V रिले से कनेक्ट करेंगे।

सबसे पहले, लाइटबल्ब से जुड़े काले बिजली के तार को वायरकटर से काट लें।


एक बार जब लाइटबल्ब से जुड़े काले बिजली के तार को वायरकटर से काट दिया जाता है, तो इसे नीचे की छवि में दिखाया जाना चाहिए।


इसके बाद, बिजली के तार के लगभग ½ इंच को उजागर करने के लिए बाहरी परत को हटा दें, जैसा कि नीचे की छवि में दिखाया गया है।


फिर, उजागर तारों को मोड़ो, जैसा कि नीचे की छवि में दिखाया गया है।


CV-3 स्क्रूड्राइवर के साथ रिले के चिह्नित स्क्रू को ढीला करें।


उन उजागर तारों को डालें जिन्हें आपने पहले दो स्क्रू टर्मिनलों में छीन लिया और मोड़ दिया और सीवी -3 स्क्रूड्राइवर के साथ स्क्रू को कस लें।

एसी लोड कनेक्ट करने के बाद परीक्षण रिले स्विचिंग

एक बार AC लोड 5V रिले से कनेक्ट हो जाने के बाद, लाइटबल्ब प्लग को वॉल सॉकेट से कनेक्ट करें।


चलाएं test.py परियोजना निर्देशिका से पायथन लिपि इस प्रकार है:

$python3 test.py


NS test.py पायथन लिपि को 5V रिले को स्विच करना शुरू करना चाहिए, जो बदले में, उच्च वोल्टेज एसी लाइटबल्ब को पांच-सेकंड के अंतराल पर स्विच करेगा। एसी लाइटबल्ब पांच सेकंड के लिए चालू रहना चाहिए, फिर पांच सेकंड के लिए बंद रहना चाहिए, और इसी तरह।

नीचे की छवि में लाइटबल्ब बंद है।


नीचे की छवि में लाइटबल्ब चालू है।


जैसा कि आप देख सकते हैं, हम रिले को स्विच कर सकते हैं और पायथन प्रोग्रामिंग भाषा का उपयोग करके उच्च वोल्टेज एसी लाइटबल्ब को नियंत्रित कर सकते हैं। तो, दबाएं + सी समाप्त करने के लिए test.py स्क्रिप्ट

आइए अब हम अगले भाग पर चलते हैं।

होम ऑटोमेशन वेब ऐप लिखना

इस खंड में, मैं आपको दिखाऊंगा कि पायथन प्रोग्रामिंग भाषा का उपयोग करके एपीआई-आधारित वेब ऐप कैसे लिखना है। आप वेब ब्राउजर से रिले और एसी घरेलू उपकरण या रिले से जुड़े विद्युत उपकरण को नियंत्रित करने के लिए वेब ऐप का उपयोग कर सकते हैं।

ध्यान दें: इस खंड में दिखाए गए सभी कोड मेरे GitHub रिपॉजिटरी में उपलब्ध हैं shovon8 / रास्पबेरी-पाई-घर-स्वचालन . यदि आप चाहें, तो आप मेरे GitHub रिपॉजिटरी को क्लोन कर सकते हैं और सभी कोड को छोड़ सकते हैं।

प्रोजेक्ट डायरेक्टरी में server.py पायथन स्क्रिप्ट इस प्रकार बनाएं:

$नैनोसर्वर.py


कोड की निम्न पंक्तियाँ टाइप करें सर्वर.py पायथन लिपि।

सेफ्लास्कआयातफ्लास्क,jsonify,url_for,रेंडर_टेम्पलेट
सेजीपीओजेरोआयातएलईडी
सेयूयूआईडीआयातयूयूआईडी4
कमरा= {}
कमरा['कमरा 1'] = [{
'पहचान': uuid4(),
'नाम':'लाइट 1',
'आइकन':'फा एफए-लाइटबल्ब',
'स्थिति':झूठा,
'रिलेपिन':4,
'रिले इंस्टेंस':झूठा
}, {
'पहचान': uuid4(),
'नाम':'फैन 1',
'आइकन':'फा फा-फैन',
'स्थिति':झूठा,
'रिलेपिन':6,
'रिले इंस्टेंस':झूठा
}]
कमरा['बाथरूम 1'] = [{
'पहचान': uuid4(),
'नाम':'लाइट 1',
'आइकन':'फा एफए-लाइटबल्ब',
'स्थिति':झूठा,
'रिलेपिन':5,
'रिले इंस्टेंस':झूठा
}]
अनुप्रयोग=फ्लास्क(__नाम__)
अनुप्रयोग।कॉन्फ़िग['SEND_FILE_MAX_AGE_DEFAULT'] = 0
@अनुप्रयोग।मार्ग('/')
डीईएफ़घर():
वापसीरेंडर_टेम्पलेट('./index.html',कमरा=कमरा)
डीईएफ़टॉगल_उपकरण_स्थिति(पहचान):
के लियेकक्षमेंकमरे:
के लियेउपकरणमेंकमरा[कक्ष]:
अगर पी(उपकरण['पहचान']) == पहचान:
अगरउपकरण['रिले इंस्टेंस']:
उपकरण['रिले इंस्टेंस'].बंद करे()
उपकरण['रिले इंस्टेंस'] = झूठा
अन्यथा:
उपकरण['रिले इंस्टेंस'] =एलईडी(उपकरण['रिलेपिन'])
उपकरण['रिले इंस्टेंस'].पर()
उपकरण['स्थिति'] = नहींउपकरण['स्थिति']
वापसी सत्य
वापसी झूठा
@अनुप्रयोग।मार्ग('/उपकरण/टॉगल/')
डीईएफ़उपकरण_टॉगल(पहचान):
वापसीjsonify({'स्थिति': टॉगल_उपकरण_स्थिति(पहचान)})

एक बार जब आप कर लें, तो दबाएं + एक्स के बाद तथा तथा बचाने के लिए सर्वर.py पायथन लिपि।


यहां, पंक्ति 1-3 सभी आवश्यक घटकों को उनके संबंधित पुस्तकालयों से आयात करती है।


पंक्ति ५ एक रिक्त बनाता है कमरा शब्दकोश। इस शब्दकोश में, हम उन सभी एसी उपकरण विवरणों को संग्रहीत करेंगे जिन्हें हम वेब ऐप से नियंत्रित करना चाहते हैं।


NS कमरा विवरण 7-29 पंक्तियों में संग्रहीत हैं।


आइए हम किसी एक कमरे की डेटा संरचना पर चर्चा करें।

यहाँ, कमरे का नाम होगा कमरा 1। इसलिए, कमरा 1 की कुंजी है कमरा शब्दकोश।


NS कमरा 1 कुंजी मान के रूप में एक सरणी रखती है। सरणी तत्वों की संख्या उस कमरे में आपके पास मौजूद एसी घरेलू उपकरणों की संख्या के बराबर है जिसे आप वेब ऐप से भी नियंत्रित करना चाहते हैं। इस मामले में, हमारे पास दो एसी घरेलू उपकरण हैं जिन्हें हम नियंत्रित करना चाहते हैं: प्रकाश १ तथा पंखा १ .


प्रत्येक घरेलू उपकरण परिभाषा में एक है पहचान . NS पहचान एक बेतरतीब ढंग से उत्पन्न UUID है। इसका उपयोग यह पहचानने के लिए किया जाता है कि एपीआई का उपयोग करके हम किस कमरे को नियंत्रित करना चाहते हैं।

एक घरेलू उपकरण में भी निम्नलिखित सभी होते हैं:

  • नाम (प्रकाश १ इस मामले में)
  • आइकन (फ़ॉन्ट विस्मयकारी आइकन वर्ग, क्योंकि हम आइकनों के लिए फ़ॉन्ट विस्मयकारी का उपयोग करेंगे)
  • स्थिति (सत्य अगर पर तथा झूठा अगर बंद )
  • रिलेपिन (एसी घरेलू उपकरण से जुड़े रिले को नियंत्रित करने के लिए इस्तेमाल किया जाने वाला जीपीआईओ पिन नंबर)
  • रिले इंस्टेंस (आरंभिक) एलईडी की वस्तु जीपीओजेरो संबंधित GPIO पिन को नियंत्रित करने के लिए जिम्मेदार पुस्तकालय - रिलेपिन )


लाइन 31 एक फ्लास्क पायथन वेब सर्वर को इनिशियलाइज़ करती है।

लाइन 32 फ्लास्क वेब सर्वर को कॉन्फ़िगर करता है।


लाइन्स ३४-३६ भेजें index.html से फ़ाइल टेम्पलेट/ निर्देशिका जब आप होम ऑटोमेशन वेब ऐप पर जाते हैं।

कुप्पी का उपयोग जिंजा२ प्रस्तुत करने के लिए टेम्प्लेटिंग भाषा index.html फ़ाइल। तो, मैंने पास कर लिया है कमरा के लिए शब्दकोश index.html फ़ाइल। जिंजा२ का उपयोग करके मुखपृष्ठ प्रस्तुत करेगा कमरा आंकड़े।


कार्यक्रम टॉगल_उपकरण_स्थिति () 39-52 लाइनों में घरेलू उपकरण को चालू करने के लिए उपयोग किया जाता है यदि यह बंद है और घरेलू उपकरण को बंद कर देता है यदि यह उपकरण का उपयोग कर रहा है पहचान .

यह लौटता है सत्य यदि टॉगल ऑपरेशन सफल होता है। यदि कोई त्रुटि है, तो वह वापस आ जाएगी झूठा .


लाइन्स ५५-५७ का उपयोग घरेलू उपकरण को टॉगल करने के लिए किया जाता है /उपकरण/टॉगल/ वेबसर्वर का एपीआई एंडपॉइंट। यहां, पहचान घरेलू उपकरण की आईडी है।


बनाएँ index.html में फ़ाइल टेम्पलेट/ आपकी परियोजना की निर्देशिका इस प्रकार है:

$नैनोखाके/index.html

कोड की निम्न पंक्तियाँ टाइप करें index.html स्क्रिप्ट


< एचटीएमएल लैंग='पर'>
< सिर >
< मेटा वर्णसेट='यूटीएफ-8'>
< मेटा नाम='व्यूपोर्ट' विषय='चौड़ाई = उपकरण-चौड़ाई, प्रारंभिक-पैमाना = 1.0'>
< संपर्क रेले='शैली पत्रक' href='{{ url_for('static', file) }}'>
< संपर्क रेले='शैली पत्रक' href='{{ url_for('static', file) }}'>
< शीर्षक >रास्पबेरी पाई के साथ होम ऑटोमेशन</ शीर्षक >
</ सिर >
< तन >
< डिव पहचान='विषय'>
< एच 1 >रास्पबेरी पाई होम ऑटोमेशन</ एच 1 >

{% कमरों में कमरे के लिए%}
< डिव कक्षा='कमरा'>
< एच 2 >{{कमरा}}</ एच 2 >
< डिव कक्षा='उपकरण'>
{% कमरों में उपकरण के लिए [कमरा]%}
< डिव कक्षा='उपकरण' पहचान='{{उपकरण ['आईडी']}}'> ='सक्रिय'>
< मैं कक्षा='{{उपकरण ['आइकन'] }}'></ मैं >
< अवधि >{{उपकरण ['नाम'] }}</ अवधि >
</ डिव >
{% अंत%}
</ डिव >
</ डिव >
{% अंत%}

</ डिव >

< लिपि एसआरसी='{{ url_for('static', file) }}' प्रकार='पाठ/जावास्क्रिप्ट'></ लिपि >
</ तन >
</ एचटीएमएल >

एक बार जब आप कर लें, तो दबाएं + एक्स के बाद तथा तथा बचाने के लिए index.html फ़ाइल।


बनाओ स्टाइल.सीएसएस में फ़ाइल स्थिर/ आपकी परियोजना की निर्देशिका इस प्रकार है:

$नैनोस्थिर/स्टाइल.सीएसएस


कोड की निम्न पंक्तियाँ टाइप करें स्टाइल.सीएसएस फ़ाइल।

@आयात यूआरएल('https://fonts.googleapis.com/css2?family=BenchNine: [ईमेल संरक्षित] ;400;700&display=swap');

* {
हाशिया: 0;
गद्दी: 0;
फ़ॉन्ट परिवार: 'बेंचनाइन', सान्स सेरिफ़;
}

#विषय >एच 1{
पृष्ठभूमि:रैखिक ढलान(प्रतिअधिकार, आरजीबी(112, 24, १६३), आरजीबी(८६, १२७, 240));
रंग: #fff;
पाठ संरेखित: केंद्र;
गद्दी: .5em 0;
}

डिवकमरा {
हाशिया: .5em;
बॉर्डर: 2px ठोस आरजीबी(112, 24, १६३);
बॉर्डर-त्रिज्या: ५पीएक्स;
}

डिवकमराएच 2{
/* पृष्ठभूमि: आरजीबी (9, 76, 121); */
पृष्ठभूमि:रैखिक ढलान(प्रतिअधिकार, आरजीबी(112, 24, १६३), आरजीबी(८६, १२७, 240));
गद्दी: 0 0 0 .5em;
रंग: #fff;
}

डिव।उपकरण {
हाशिया: .5em .5em 0 0;
प्रदर्शन:फ्लेक्स;
फ्लेक्स-रैप:चादर;
}

डिव.उपकरण {
बॉर्डर: 2px ठोस आरजीबी(112, 24, १६३);
बॉर्डर-त्रिज्या: ५पीएक्स;
चौड़ाई: 110px;
ऊंचाई: 120px;
पाठ संरेखित: केंद्र;
हाशिया: 0 0 .5em .5em;
प्रदर्शन:फ्लेक्स;
फ्लेक्स-दिशा:स्तंभ;
}

डिव.उपकरणमैं.fa {
फ़ॉन्ट आकार: 4em;
फ्लेक्स-ग्रो: 1;
पैडिंग शीर्ष: 0.3em;
रंग: आरजीबी(204, पचास, पचास);
}

div.उपकरण[डेटा-सक्रिय='सक्रिय']मैं.fa {
रंग: आरजीबी(32, 177, 51);
}

डिव.उपकरणअवधि{
प्रदर्शन: खंड मैथा;
फ़ॉन्ट वजन: बोल्ड;
पृष्ठभूमि: आरजीबी(112, 24, १६३);
रंग: #fff;
}

एक बार जब आप कर लें, तो दबाएं + एक्स के बाद तथा तथा बचाने के लिए स्टाइल.सीएसएस फ़ाइल।


बनाओ app.js में फ़ाइल स्थिर/ आपकी परियोजना की निर्देशिका इस प्रकार है:

$नैनोस्थिर/app.js


कोड की निम्न पंक्तियाँ टाइप करें app.js फ़ाइल।

खिड़की।AddEventListener('भार',मुख्य);

समारोहमुख्य() {
समारोहटॉगलएप्लायंसस्टेट(और) {
कहांपहचान=और।पथ[1].पहचान;

कहांएचटीटीपी= नयाXMLHttpRequest();

एचटीटीपी।ऑनरेडीस्टेटचेंज = समारोह() {
अगर(यह.तैयार राज्य === 4 && यह.स्थिति === 200) {
अगर(JSON.पार्स(यह.प्रतिक्रिया पाठ).स्थिति === सच) {
अगर(और।पथ[1].विशेषता है('डेटा-सक्रिय')) {
और।पथ[1].निकालेंविशेषता('डेटा-सक्रिय')
} अन्यथा {
और।पथ[1].सेटविशेषता('डेटा-सक्रिय', 'सक्रिय')
}
}
}
}

एचटीटीपी।खोलना('पाना',``/उपकरण/टॉगल/${पहचान}``, सच);
एचटीटीपी।भेजना();
}


कहांउपकरण=दस्तावेज़।getElementsByClassName('उपकरण');
के लिये(मैं=0;मैं<उपकरण।लंबाई;मैं++) {
उपकरण[मैं].AddEventListener('क्लिक',टॉगलएप्लायंसस्टेट);
}
}

एक बार जब आप कर लें, तो दबाएं + एक्स के बाद तथा और बचाने के लिए app.js फ़ाइल।


यहाँ, पंक्ति 1 चलती है मुख्य() वेब पेज लोड होने के बाद काम करता है।

में index.html फ़ाइल, प्रत्येक घरेलू उपकरण एक में संलग्न है उपकरण कक्षा। वेब पेज से प्रत्येक घरेलू उपकरण का चयन करने और संलग्न करने के लिए लाइन 26-29 का उपयोग किया जाता है क्लिक उपकरण के लिए घटना। जब कोई वेब पेज से घरेलू उपकरण पर क्लिक करता है, तो टॉगलएप्लायंसस्टेट () समारोह चलेगा।


4-23 की पंक्तियों में, टॉगलएप्लायंसस्टेट () फ़ंक्शन का उपयोग अनुरोध करने के लिए किया जाता है /उपकरण/टॉगल/ क्लिक किए गए घरेलू उपकरण की स्थिति बदलने के लिए वेबसर्वर का समापन बिंदु। अनुरोध पृष्ठभूमि में AJAX के माध्यम से किया जाता है। प्रतिक्रिया प्राप्त होने के बाद, वेब पेज को तदनुसार अपडेट किया जाता है।


पर नेविगेट करें स्थिर/ आपकी परियोजना निर्देशिका में निर्देशिका निम्नानुसार है:

$सीडीस्थिर/


निम्न आदेश के साथ फ़ॉन्ट विस्मयकारी डाउनलोड करें:

$wgethttps://use.fontawesome.com/विज्ञप्ति/v5.15.1/Fontawesome-free-5.15.1-web.zip


फ़ॉन्ट विस्मयकारी डाउनलोड हो जाने के बाद, आपको नई ज़िप फ़ाइल मिलनी चाहिए Fontawesome-free-5.15.1-web.zip में स्थिर/ निर्देशिका।

$रास -एलएचओ


अनज़िप करें Fontawesome-free-5.15.1-web.zip निम्न आदेश के साथ फ़ाइल:

$खोलनाFontawesome-free-5.15.1-web.zip


NS Fontawesome-free-5.15.1-web.zip फ़ाइल को अब अनज़िप किया जाना चाहिए।


नई निर्देशिका फ़ॉन्टविस्मयकारी-मुक्त-5.15.1-वेब/ स्थिर/निर्देशिका में बनाया जाना चाहिए, जैसा कि आप नीचे स्क्रीनशॉट में देख सकते हैं।

$रास -एलएचओ

निर्देशिका का नाम बदलें फ़ॉन्टविस्मयकारी-मुक्त-5.15.1-वेब/ प्रति बहुत बढ़िया/ निम्न आदेश के साथ:

$एमवी -वीफ़ॉन्टविस्मयकारी-मुक्त-5.15.1-वेब फ़ॉन्टविस्मयकारी


अब, आपको इसकी आवश्यकता नहीं है Fontawesome-free-5.15.1-web.zip फ़ाइल। तो, हटा दें Fontawesome-free-5.15.1-web.zip निम्न आदेश के साथ फ़ाइल:

$आर एम -वीFontawesome-free-5.15.1-web.zip


NS स्थिर/ निर्देशिका संरचना नीचे स्क्रीनशॉट में दिखाए अनुसार दिखनी चाहिए।

$रास -एलएचओ


प्रोजेक्ट निर्देशिका पर वापस नेविगेट करें ~/www निम्नलिखित नुसार:

$सीडी..

होम ऑटोमेशन वेब ऐप का परीक्षण

होम ऑटोमेशन वेब ऐप का परीक्षण करने के लिए, अपनी प्रोजेक्ट डायरेक्टरी में निम्न कमांड चलाएँ:

$FLASK_APP=server.py फ्लास्क रन


वेब ऐप आपके रास्पबेरी पाई के पोर्ट 5000 पर उपलब्ध होना चाहिए।


क्रोमियम वेब ब्राउज़र से, पर जाएँ http://लोकलहोस्ट:5000 . होम ऑटोमेशन वेब ऐप लोड होना चाहिए।

नीचे दी गई छवि में दर्शाए गए लाइटबल्ब आइकन पर क्लिक करें।


एसी लाइटबल्ब को अब चालू कर देना चाहिए। आइकन का रंग भी हरे रंग में बदलना चाहिए, यह दर्शाता है कि लाइटबल्ब चालू है।


तो, होम ऑटोमेशन वेब ऐप काम कर रहा है। दबाएँ + सी वेबसर्वर को समाप्त करने के लिए।

होम ऑटोमेशन वेब ऐप के लिए सिस्टमड सर्विस बनाना

इस खंड में, मैं आपको दिखाऊंगा कि होम ऑटोमेशन वेब ऐप के लिए एक सिस्टमड सर्विस फाइल कैसे बनाई जाती है ताकि यह स्वचालित रूप से बूट पर शुरू हो जाए।

सबसे पहले, बनाएं raspi-home-automation.service अपनी परियोजना निर्देशिका में इस प्रकार फ़ाइल करें:

$नैनोraspi-home-automation.service

raspi-home-automation.service फ़ाइल में निम्न पंक्तियाँ टाइप करें।

[इकाई]
विवरण=रास्पबेरी पाई होम ऑटोमेशन वेब सेवा
बाद में=नेटवर्क.लक्ष्य
[सेवा]
कार्यकारी डाइरेक्टरी=/घर/अनुकरणीय/www
वातावरण=FLASK_APP=सर्वर.py
वातावरण=FLASK_ENV=उत्पादन
निष्पादन प्रारंभ=/usr/पूर्वाह्न/फ्लास्क रन--मेज़बान= 0.0.0.0
मानक आउटपुट=विरासत
मानक त्रुटि=विरासत
पुनः आरंभ करें=हमेशा
उपयोगकर्ता= पीआई
[इंस्टॉल]
वांटेडबाय=बहु-उपयोगकर्ता.लक्ष्य

एक बार जब आप कर लें, तो दबाएं + एक्स के बाद तथा और बचाने के लिए raspi-home-automation.service फ़ाइल।


कॉपी करें raspi-home-automation.service के लिए फ़ाइल /etc/systemd/system/ निम्न आदेश के साथ निर्देशिका:

$सुडो सीपी -वीraspi-home-automation.service/आदि/प्रणाली/प्रणाली/


परिवर्तनों को प्रभावी करने के लिए सिस्टमड डेमॉन को फिर से लोड करें:

$सुडोsystemctl डेमॉन-रीलोड


जोड़ें रास्पि-होम-ऑटोमेशन निम्नलिखित कमांड के साथ रास्पबेरी पाई ओएस के सिस्टम स्टार्टअप के लिए सेवा:

$सुडोसिस्टमक्टलसक्षमraspi-home-automation.service


निम्नलिखित कमांड के साथ रास्पबेरी पाई को रिबूट करें:

$सुडोरीबूट


एक बार रास्पबेरी पाई बूट, रास्पि-होम-ऑटोमेशन service सक्रिय / चालू होनी चाहिए, जैसा कि आप नीचे स्क्रीनशॉट में देख सकते हैं।

$सुडोsystemctl स्थिति raspi-home-automation.service

अन्य उपकरणों से होम ऑटोमेशन वेब ऐप तक पहुंचना

अपने होम नेटवर्क में अन्य उपकरणों से होम ऑटोमेशन वेब ऐप तक पहुंचने के लिए, आपको अपने रास्पबेरी पाई डिवाइस का आईपी पता जानना होगा।

आप अपने रास्पबेरी पाई 4 डिवाइस का आईपी पता अपने होम राउटर के वेब प्रबंधन इंटरफेस से पा सकते हैं। मेरे मामले में, आईपी पता 192.168.0.103 है। यह आपके लिए अलग होगा। इसलिए, अभी से मेरे आईपी को अपने आईपी से बदलना सुनिश्चित करें।


यदि आपके पास रास्पबेरी पाई कंसोल तक पहुंच है, तो आप आईपी पता खोजने के लिए निम्न आदेश भी चला सकते हैं।

$होस्ट नाम -मैं


एक बार जब आप अपने रास्पबेरी पाई डिवाइस का आईपी पता जान लेते हैं, तो आप इसे अपने होम नेटवर्क के किसी भी डिवाइस से एक्सेस कर सकते हैं।

जैसा कि आप नीचे स्क्रीनशॉट में देख सकते हैं, मैंने अपने एंड्रॉइड स्मार्टफोन से होम ऑटोमेशन वेब ऐप एक्सेस किया है।


लाइटबल्ब प्लग को दीवार पावर आउटलेट में प्लग करना सुनिश्चित करें।


लाइटबल्ब को डिफ़ॉल्ट रूप से बंद कर देना चाहिए।


यदि आप होम ऑटोमेशन वेब ऐप से लाइटबल्ब आइकन को टैप करते हैं, तो लाइटबल्ब आइकन का रंग हरे रंग में बदल जाना चाहिए, यह दर्शाता है कि लाइटबल्ब चालू है।


जैसा कि आप नीचे दी गई छवि में देख सकते हैं, लाइटबल्ब चालू है।

निष्कर्ष

इस लेख ने आपको दिखाया कि पायथन प्रोग्रामिंग भाषा का उपयोग करके रास्पबेरी पाई से एक उच्च-वोल्टेज एसी विद्युत उपकरण को नियंत्रित करने के लिए 5V रिले का उपयोग कैसे करें। लेख ने आपको यह भी दिखाया कि वेब ब्राउज़र से रिले को नियंत्रित करने के लिए एपीआई आधारित पायथन फ्लास्क वेब ऐप कैसे लिखना है। यह लेख आपको रास्पबेरी पाई का उपयोग करके होम ऑटोमेशन के साथ आरंभ करने में मदद करेगा।