You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/ne/1-getting-started/lessons/4-connect-internet
co-op-translator[bot] 9508c7b48a
🌐 Update translations via Co-op Translator (#545)
4 weeks ago
..
README.md 🌐 Update translations via Co-op Translator (#545) 4 weeks ago
assignment.md 🌐 Update translations via Co-op Translator (#545) 4 weeks ago
single-board-computer-commands.md 🌐 Update translations via Co-op Translator (#545) 4 weeks ago
single-board-computer-mqtt.md 🌐 Update translations via Co-op Translator (#545) 4 weeks ago
single-board-computer-telemetry.md 🌐 Update translations via Co-op Translator (#545) 4 weeks ago
wio-terminal-commands.md 🌐 Update translations via Co-op Translator (#545) 4 weeks ago
wio-terminal-mqtt.md 🌐 Update translations via Co-op Translator (#545) 4 weeks ago
wio-terminal-telemetry.md 🌐 Update translations via Co-op Translator (#545) 4 weeks ago

README.md

आफ्नो उपकरणलाई इन्टरनेटमा जडान गर्नुहोस्

यस पाठको स्केच नोटको अवलोकन

स्केच नोट नित्य नरसिंहन द्वारा। ठूलो संस्करण हेर्नको लागि तस्बिरमा क्लिक गर्नुहोस्।

यो पाठ Hello IoT श्रृंखला को भागको रूपमा Microsoft Reactor बाट सिकाइएको थियो। यो पाठ दुई भिडियोहरूमा सिकाइएको थियो - एक घण्टाको पाठ र एक घण्टाको कार्यालय समय जसले पाठका भागहरूलाई गहिरो रूपमा बुझ्न र प्रश्नहरूको उत्तर दिन मद्दत गर्‍यो।

पाठ ४: आफ्नो उपकरणलाई इन्टरनेटमा जडान गर्नुहोस्

पाठ ४: आफ्नो उपकरणलाई इन्टरनेटमा जडान गर्नुहोस् - कार्यालय समय

🎥 माथिका तस्बिरहरूमा क्लिक गरेर भिडियोहरू हेर्नुहोस्

पाठ अघि क्विज

पाठ अघि क्विज

परिचय

IoT मा I को अर्थ इन्टरनेट हो - क्लाउड जडान र सेवाहरू जसले IoT उपकरणहरूको धेरै सुविधाहरू सक्षम गर्दछ, जस्तै उपकरणमा जडान गरिएका सेन्सरहरूबाट मापनहरू संकलन गर्नु, र एक्ट्युएटरहरूलाई नियन्त्रण गर्न सन्देशहरू पठाउनु। IoT उपकरणहरू सामान्यतया एकल क्लाउड IoT सेवासँग मानक सञ्चार प्रोटोकल प्रयोग गरेर जडान हुन्छन्, र त्यो सेवा तपाईंको IoT अनुप्रयोगको बाँकी भागसँग जडान हुन्छ, जस्तै AI सेवाहरूले तपाईंको डाटामा स्मार्ट निर्णयहरू लिन, वा नियन्त्रण वा रिपोर्टिङको लागि वेब अनुप्रयोगहरू।

🎓 सेन्सरहरूबाट संकलित डाटा र क्लाउडमा पठाइएको डाटालाई टेलिमेट्री भनिन्छ।

IoT उपकरणहरूले क्लाउडबाट सन्देशहरू प्राप्त गर्न सक्छन्। प्रायः सन्देशहरूमा आदेशहरू हुन्छन् - अर्थात् कुनै कार्य गर्न निर्देशनहरू, चाहे आन्तरिक रूपमा (जस्तै पुनः सुरु गर्नु वा फर्मवेयर अपडेट गर्नु), वा एक्ट्युएटर प्रयोग गरेर (जस्तै बत्ती बाल्नु)।

यो पाठले IoT उपकरणहरूले क्लाउडसँग जडान गर्न प्रयोग गर्न सक्ने केही सञ्चार प्रोटोकलहरू र तिनीहरूले पठाउन वा प्राप्त गर्न सक्ने डाटाको प्रकारहरू प्रस्तुत गर्दछ। तपाईंले यी दुवैसँग व्यावहारिक अनुभव पनि प्राप्त गर्नुहुनेछ, आफ्नो नाइटलाइटमा इन्टरनेट नियन्त्रण थप्दै, LED नियन्त्रण तर्कलाई स्थानीय रूपमा चलिरहेको 'सर्भर' कोडमा सार्दै।

यस पाठमा हामीले निम्न विषयहरू समेट्नेछौं:

सञ्चार प्रोटोकलहरू

IoT उपकरणहरूले इन्टरनेटसँग सञ्चार गर्न प्रयोग गर्ने धेरै लोकप्रिय सञ्चार प्रोटोकलहरू छन्। सबैभन्दा लोकप्रिय प्रोटोकलहरू प्रकाशन/सदस्यता सन्देशहरूमा आधारित छन् जसले कुनै प्रकारको ब्रोकर प्रयोग गर्छ। IoT उपकरणहरूले ब्रोकरसँग जडान गर्छन् र टेलिमेट्री प्रकाशित गर्छन् र आदेशहरू सदस्यता लिन्छन्। क्लाउड सेवाहरू पनि ब्रोकरसँग जडान गर्छन् र सबै टेलिमेट्री सन्देशहरू सदस्यता लिन्छन् र आदेशहरू विशेष उपकरणहरू वा उपकरणहरूको समूहमा प्रकाशित गर्छन्।

IoT उपकरणहरूले ब्रोकरसँग जडान गर्छन् र टेलिमेट्री प्रकाशित गर्छन् र आदेशहरू सदस्यता लिन्छन्। क्लाउड सेवाहरू ब्रोकरसँग जडान गर्छन् र सबै टेलिमेट्री सदस्यता लिन्छन् र विशेष उपकरणहरूमा आदेश पठाउँछन्।

MQTT IoT उपकरणहरूको लागि सबैभन्दा लोकप्रिय सञ्चार प्रोटोकल हो र यो पाठमा समेटिएको छ। अन्य प्रोटोकलहरूमा AMQP र HTTP/HTTPS समावेश छन्।

सन्देश पङ्क्ति टेलिमेट्री ट्रान्सपोर्ट (MQTT)

MQTT एक हल्का, खुला मानक सन्देश प्रोटोकल हो जसले उपकरणहरू बीच सन्देशहरू पठाउन सक्छ। यो १९९९ मा तेल पाइपलाइनहरूको निगरानी गर्न डिजाइन गरिएको थियो, र १५ वर्ष पछि IBM द्वारा खुला मानकको रूपमा जारी गरियो।

MQTT मा एकल ब्रोकर र धेरै क्लाइन्टहरू हुन्छन्। सबै क्लाइन्टहरू ब्रोकरसँग जडान गर्छन्, र ब्रोकरले सन्देशहरू सम्बन्धित क्लाइन्टहरूमा रुट गर्दछ। सन्देशहरू नामित विषयहरू प्रयोग गरेर रुट गरिन्छन्, व्यक्तिगत क्लाइन्टमा सिधै पठाइने होइन। क्लाइन्टले विषयमा प्रकाशित गर्न सक्छ, र त्यो विषयलाई सदस्यता लिने कुनै पनि क्लाइन्टले सन्देश प्राप्त गर्नेछ।

IoT उपकरणले /telemetry विषयमा टेलिमेट्री प्रकाशित गर्दैछ, र क्लाउड सेवा उक्त विषयलाई सदस्यता लिँदैछ

अनुसन्धान गर्नुहोस्। यदि तपाईंको धेरै IoT उपकरणहरू छन् भने, तपाईं कसरी सुनिश्चित गर्न सक्नुहुन्छ कि तपाईंको MQTT ब्रोकरले सबै सन्देशहरू ह्यान्डल गर्न सक्छ?

आफ्नो IoT उपकरणलाई MQTT मा जडान गर्नुहोस्

इन्टरनेट नियन्त्रणलाई आफ्नो नाइटलाइटमा थप्ने पहिलो भाग भनेको यसलाई MQTT ब्रोकरसँग जडान गर्नु हो।

कार्य

आफ्नो उपकरणलाई MQTT ब्रोकरसँग जडान गर्नुहोस्।

यस पाठको यस भागमा, तपाईं आफ्नो IoT नाइटलाइटलाई इन्टरनेटमा जडान गर्नुहुनेछ ताकि यसलाई टाढाबाट नियन्त्रण गर्न सकियोस्। यस पाठको पछि, तपाईंको IoT उपकरणले प्रकाश स्तरको साथ सार्वजनिक MQTT ब्रोकरमा टेलिमेट्री सन्देश पठाउनेछ, जहाँ यसलाई तपाईंले लेख्ने केही सर्भर कोडले उठाउनेछ। यो कोडले प्रकाश स्तर जाँच गर्नेछ र उपकरणलाई LED अन वा अफ गर्न आदेश सन्देश पठाउनेछ।

यस्तो सेटअपको वास्तविक-विश्व प्रयोग केस भनेको धेरै प्रकाश सेन्सरहरूबाट डाटा संकलन गर्नु हो, त्यसपछि निर्णय गर्नु कि बत्तीहरू बाल्ने कि नबाल्ने, धेरै बत्तीहरू भएको स्थानमा, जस्तै स्टेडियम। यसले बत्तीहरू बाल्नबाट रोक्न सक्छ यदि केवल एक सेन्सर बादल वा चरा द्वारा ढाकिएको छ तर अन्य सेन्सरहरूले पर्याप्त प्रकाश पत्ता लगाएका छन्।

अन्य कुन परिस्थितिहरूले आदेशहरू पठाउनु अघि धेरै सेन्सरहरूबाट डाटा मूल्याङ्कन गर्न आवश्यक पर्छ?

यस असाइनमेन्टको भागको रूपमा MQTT ब्रोकर सेटअप गर्ने जटिलताहरूको सामना नगर्ने गरी, तपाईं Eclipse Mosquitto द्वारा चलाइएको सार्वजनिक परीक्षण सर्भर प्रयोग गर्न सक्नुहुन्छ, जुन एक ओपन-सोर्स MQTT ब्रोकर हो। यो परीक्षण ब्रोकर test.mosquitto.org मा सार्वजनिक रूपमा उपलब्ध छ, र खाता सेटअप गर्न आवश्यक छैन, जसले यसलाई MQTT क्लाइन्टहरू र सर्भरहरू परीक्षण गर्नको लागि उत्कृष्ट उपकरण बनाउँछ।

💁 यो परीक्षण ब्रोकर सार्वजनिक छ र सुरक्षित छैन। तपाईंले प्रकाशित गर्ने कुराहरू जो कोहीले सुन्न सक्दछन्, त्यसैले यसलाई कुनै पनि गोप्य राख्नुपर्ने डाटाको साथ प्रयोग गर्नु हुँदैन।

असाइनमेन्टको फ्लो चार्ट जसले प्रकाश स्तरहरू पढ्दै र जाँच गर्दै, र LED नियन्त्रण गर्दै देखाउँछ

MQTT ब्रोकरसँग आफ्नो उपकरण जडान गर्न निम्न चरणहरू पालना गर्नुहोस्:

MQTT को गहिरो अध्ययन

विषयहरूमा पदानुक्रम हुन सक्छ, र क्लाइन्टहरूले वाइल्डकार्डहरू प्रयोग गरेर पदानुक्रमका विभिन्न स्तरहरू सदस्यता लिन सक्छन्। उदाहरणका लागि, तपाईं /telemetry/temperature विषयमा तापक्रम टेलिमेट्री सन्देशहरू र /telemetry/humidity विषयमा आर्द्रता सन्देशहरू पठाउन सक्नुहुन्छ, त्यसपछि आफ्नो क्लाउड अनुप्रयोगमा /telemetry/* विषयलाई सदस्यता लिन सक्नुहुन्छ ताकि तापक्रम र आर्द्रता दुवै टेलिमेट्री सन्देशहरू प्राप्त गर्न सकियोस्।

सन्देशहरू गुणस्तर सेवा (QoS) को साथ पठाउन सकिन्छ, जसले सन्देश प्राप्त हुने ग्यारेन्टी निर्धारण गर्दछ।

  • एकपटक मात्र - सन्देश केवल एकपटक पठाइन्छ र क्लाइन्ट र ब्रोकरले डेलिभरीलाई स्वीकार गर्न थप कदम चाल्दैनन् (फायर एन्ड फर्गेट)।
  • कम्तिमा एकपटक - सन्देशलाई प्रेषकले स्वीकारोक्ति प्राप्त नभएसम्म धेरै पटक पुन: प्रयास गर्छ (स्वीकृत डेलिभरी)।
  • ठीक एकपटक - प्रेषक र रिसीभरले दुई-स्तरीय ह्यान्डशेकमा संलग्न हुन्छन् ताकि सन्देशको केवल एक प्रतिलिपि प्राप्त होस् (आश्वस्त डेलिभरी)।

कुन परिस्थितिहरूले फायर एन्ड फर्गेट सन्देशको सट्टा आश्वस्त डेलिभरी सन्देश आवश्यक पर्छ?

यद्यपि नाम सन्देश पङ्क्ति (MQTT) हो, यसले वास्तवमा सन्देश पङ्क्तिहरू समर्थन गर्दैन। यसको मतलब यदि क्लाइन्ट डिस्कनेक्ट हुन्छ, त्यसपछि पुन: जडान हुन्छ भने यसले डिस्कनेक्शनको समयमा पठाइएका सन्देशहरू प्राप्त गर्दैन, QoS प्रक्रियाको प्रयोग गरेर यसले पहिले नै प्रक्रिया गर्न सुरु गरेका सन्देशहरू बाहेक। सन्देशहरूमा एक रिटेन्ड फ्ल्याग सेट गर्न सकिन्छ। यदि यो सेट गरिएको छ भने, MQTT ब्रोकरले यस फ्ल्यागको साथ विषयमा पठाइएको अन्तिम सन्देश भण्डारण गर्नेछ, र पछि विषयलाई सदस्यता लिने कुनै पनि क्लाइन्टलाई यो पठाउनेछ। यसरी, क्लाइन्टहरूले सधैं नवीनतम सन्देश प्राप्त गर्नेछन्।

MQTT ले लामो अन्तरालमा सन्देशहरू बीच जडान अझै जीवित छ कि छैन जाँच गर्न एक कीप अलाइभ कार्य पनि समर्थन गर्दछ।

🦟 Eclipse Foundation बाट Mosquitto ले तपाईंलाई MQTT प्रयोग गरेर प्रयोग गर्नको लागि नि:शुल्क MQTT ब्रोकर प्रदान गर्दछ, साथै सार्वजनिक MQTT ब्रोकर पनि प्रदान गर्दछ जुन तपाईंको कोड परीक्षण गर्न प्रयोग गर्न सकिन्छ, test.mosquitto.org मा होस्ट गरिएको।

MQTT जडानहरू सार्वजनिक र खुला हुन सक्छन्, वा प्रयोगकर्ता नाम र पासवर्डहरू, वा प्रमाणपत्रहरू प्रयोग गरेर इन्क्रिप्टेड र सुरक्षित गर्न सकिन्छ।

💁 MQTT TCP/IP मार्फत सञ्चार गर्छ, HTTP जस्तै आधारभूत नेटवर्क प्रोटोकलमा, तर फरक पोर्टमा। तपाईं वेब एप्ससँग ब्राउजरमा चलिरहेको वा फायरवाल वा अन्य नेटवर्किङ नियमहरूले मानक MQTT जडानहरू अवरोध गर्ने परिस्थितिहरूमा MQTT वेबसोकेटहरू प्रयोग गर्न सक्नुहुन्छ।

टेलिमेट्री

टेलिमेट्री शब्द ग्रीक मूलबाट आएको हो जसको अर्थ टाढाबाट मापन गर्नु हो। टेलिमेट्री भनेको सेन्सरहरूबाट डाटा संकलन गर्नु र क्लाउडमा पठाउनु हो।

💁 सबैभन्दा प्रारम्भिक टेलिमेट्री उपकरणहरू मध्ये एक फ्रान्समा १८७४ मा आविष्कार गरिएको थियो र मोंट ब्लांकबाट पेरिसमा वास्तविक-समय मौसम र हिउँको गहिराइ पठाएको थियो। यसले भौतिक तारहरू प्रयोग गर्‍यो किनभने वायरलेस प्रविधिहरू त्यतिबेला उपलब्ध थिएनन्।

पाठ १ बाट स्मार्ट थर्मोस्टेटको उदाहरणलाई फेरि हेरौं।

इन्टरनेट जडान गरिएको थर्मोस्टेट जसले धेरै कोठा सेन्सरहरू प्रयोग गर्दछ

थर्मोस्टेटसँग तापक्रम सेन्सरहरू छन् जसले टेलिमेट्री संकलन गर्छ। यसमा सम्भवतः एक तापक्रम सेन्सर निर्माण गरिएको हुनेछ, र यसले Bluetooth Low Energy (BLE) जस्ता वायरलेस प्रोटोकल मार्फत धेरै बाह्य तापक्रम सेन्सरहरूसँग जडान गर्न सक्छ।

यसले पठाउने टेलिमेट्री डाटाको उदाहरण यस्तो हुन सक्छ:

नाम मान विवरण
thermostat_temperature १८°C थर्मोस्टेटको निर्माण गरिएको तापक्रम सेन्सरले मापन गरेको तापक्रम
livingroom_temperature १९°C एउटा टाढाको तापक्रम सेन्सरले मापन गरेको तापक्रम जसलाई livingroom नाम दिइएको छ ताकि यो रहेको कोठा पहिचान गर्न सकियोस्
bedroom_temperature २१°C एउटा टाढाको तापक्रम सेन्सरले मापन गरेको तापक्रम जसलाई bedroom नाम दिइएको छ ताकि यो रहेको कोठा पहिचान गर्न सकियोस्

क्लाउड सेवाले यो टेलिमेट्री डाटा प्रयोग गरेर तापक्रम नियन्त्रण गर्न आदेशहरू पठाउने निर्णय गर्न सक्छ।

आफ्नो IoT उपकरणबाट टेलिमेट्री पठाउनुहोस्

इन्टरनेट नियन्त्रणलाई आफ्नो नाइटलाइटमा थप्ने अर्को भाग भनेको टेलिमेट्री विषयमा प्रकाश स्तर टेलिमेट्री MQTT ब्रोकरमा पठाउनु हो।

कार्य - आफ्नो IoT उपकरणबाट टेलिमेट्री पठाउनुहोस्

प्रकाश स्तर टेलिमेट्री MQTT ब्रोकरमा पठाउनुहोस्।

डाटा JSON को रूपमा इन्कोड गरिएको छ - JavaScript Object Notation को छोटो रूप, पाठमा डाटा इन्कोड गर्नको लागि एक मानक जसले कुञ्जी/मान जोडीहरू प्रयोग गर्दछ।

यदि तपाईंले पहिले JSON देख्नुभएको छैन भने, तपाईं JSON.org दस्तावेज मा यसबारे थप जान्न सक्नुहुन्छ।

MQTT ब्रोकरमा आफ्नो उपकरणबाट टेलिमेट्री पठाउन निम्न चरणहरू पालना गर्नुहोस्:

MQTT ब्रोकरबाट टेलिमेट्री प्राप्त गर्नुहोस्

टेलिमेट्री पठाउनुको कुनै अर्थ छैन यदि त्यसलाई सुन्ने केही छैन भने। प्रकाश स्तर टेलिमेट्रीलाई यसलाई प्रक्रिया गर्न सुन्ने केही चाहिन्छ। यो 'सर्भर' कोड प्रकारको कोड हो जुन तपाईंले ठूलो IoT अनुप्रयोगको भागको रूपमा क्लाउड सेवामा तैनात गर्नुहुनेछ, तर यहाँ तपाईं यो कोड आफ्नो कम्प्युटरमा स्थानीय रूपमा चलाउनुहुनेछ (वा यदि तपाईं Pi मा सिधै कोड गर्दै हुनुहुन्छ भने त्यहाँ)। सर्भर कोडमा Python एप समावेश छ जसले प्रकाश स्तरको साथ MQTT मार्फत टेलिमेट्री सन्देशहरू सुन्छ। यस पाठको पछि, तपाईं यसलाई LED अन वा अफ गर्न निर्देशनहरू सहित आदेश सन्देशको साथ उत्तर दिन बनाउनुहुनेछ।

अनुसन्धान गर्नुहोस्: यदि कुनै श्रोता छैन भने MQTT सन्देशहरूलाई के हुन्छ?

Python र VS Code स्थापना गर्नुहोस्

यदि तपाईंले Python र VS Code स्थानीय रूपमा स्थापना गर्नुभएको छैन भने, तपाईंले दुवै स्थापना गर्न आवश्यक छ ताकि सर्भर कोड लेख्न सकियोस्। यदि तपाईंले भर्चुअल IoT उपकरण प्रयोग गर्दै हुनुहुन्छ, वा Raspberry Pi मा काम गर्दै हुनुहुन्छ भने तपाईंले यो चरण छोड्न सक्नुहुन्छ किनभने तपाईंले यसलाई पहिले नै स्थापना र कन्फिगर गर्नुभएको हुनुपर्छ।

कार्य - Python र VS Code स्थापना गर्नुहोस्

Python र VS Code स्थापना गर्नुहोस्।

  1. Python स्थापना गर्नुहोस्। Python को पछिल्लो संस्करण स्थापना गर्ने निर्देशिका Python डाउनलोड पृष्ठ मा हेर्नुहोस्।

  2. Visual Studio Code (VS Code) स्थापना गर्नुहोस्। यो तपाईंले Python मा आफ्नो भर्चुअल उपकरण कोड लेख्न प्रयोग गर्ने सम्पादक हो। VS Code स्थापना गर्ने निर्देशिका VS Code दस्तावेज मा हेर्नुहोस्। तपाईंले यी पाठहरूका लागि कुनै पनि मनपर्ने Python IDE वा सम्पादक प्रयोग गर्न स्वतन्त्र हुनुहुन्छ, तर पाठहरूले VS Code प्रयोग गर्ने आधारमा निर्देशन दिनेछन्।

  3. VS Code मा Pylance एक्स्टेन्सन स्थापना गर्नुहोस्। यो VS Code को लागि Python भाषा समर्थन प्रदान गर्ने एक्स्टेन्सन हो। VS Code मा यो एक्स्टेन्सन स्थापना गर्ने निर्देशिका Pylance extension documentation मा हेर्नुहोस्।

Python भर्चुअल वातावरण कन्फिगर गर्नुहोस्

Python को एक शक्तिशाली विशेषता भनेको pip packages स्थापना गर्ने क्षमता हो - यी अन्य व्यक्तिहरूले लेखेको कोडका प्याकेजहरू हुन् जुन इन्टरनेटमा प्रकाशित गरिएका छन्। तपाईं आफ्नो कम्प्युटरमा एक कमाण्डको माध्यमबाट pip package स्थापना गर्न सक्नुहुन्छ, त्यसपछि तपाईंको कोडमा त्यो प्याकेज प्रयोग गर्न सक्नुहुन्छ। तपाईं MQTT मार्फत संवाद गर्न एक प्याकेज स्थापना गर्न pip प्रयोग गर्नुहुनेछ।

डिफल्ट रूपमा जब तपाईं कुनै प्याकेज स्थापना गर्नुहुन्छ, यो तपाईंको कम्प्युटरमा सबै ठाउँमा उपलब्ध हुन्छ, र यसले प्याकेज संस्करणहरूको समस्याहरू निम्त्याउन सक्छ - जस्तै एउटा एप्लिकेसनले एउटा संस्करणमा निर्भर गर्ने तर अर्को एप्लिकेसनको लागि नयाँ संस्करण स्थापना गर्दा समस्या उत्पन्न हुने। यस समस्यालाई समाधान गर्न, तपाईं Python virtual environment प्रयोग गर्न सक्नुहुन्छ, जुन Python को एक समर्पित फोल्डरमा प्रतिलिपि हो, र जब तपाईं pip packages स्थापना गर्नुहुन्छ, तिनीहरू केवल त्यो फोल्डरमा स्थापना हुन्छन्।

कार्य - Python भर्चुअल वातावरण कन्फिगर गर्नुहोस्

Python भर्चुअल वातावरण कन्फिगर गर्नुहोस् र MQTT pip packages स्थापना गर्नुहोस्।

  1. आफ्नो टर्मिनल वा कमाण्ड लाइनबाट, नयाँ डाइरेक्टरी सिर्जना गर्न र त्यसमा जान निम्न कमाण्ड चलाउनुहोस्:

    mkdir nightlight-server
    cd nightlight-server
    
  2. अब .venv फोल्डरमा भर्चुअल वातावरण सिर्जना गर्न निम्न कमाण्ड चलाउनुहोस्:

    python3 -m venv .venv
    

    💁 तपाईंले स्पष्ट रूपमा python3 कल गर्न आवश्यक छ भर्चुअल वातावरण सिर्जना गर्न, किनकि तपाईंले Python 2 पनि स्थापना गर्नुभएको छ भने Python 3 को सट्टा Python 2 प्रयोग हुनेछ।

  3. भर्चुअल वातावरण सक्रिय गर्नुहोस्:

    • Windows मा:

      • यदि तपाईं Command Prompt प्रयोग गर्दै हुनुहुन्छ, वा Windows Terminal मार्फत Command Prompt प्रयोग गर्दै हुनुहुन्छ भने, निम्न कमाण्ड चलाउनुहोस्:

        .venv\Scripts\activate.bat
        
      • यदि तपाईं PowerShell प्रयोग गर्दै हुनुहुन्छ भने, निम्न कमाण्ड चलाउनुहोस्:

        .\.venv\Scripts\Activate.ps1
        
    • macOS वा Linux मा, निम्न कमाण्ड चलाउनुहोस्:

      source ./.venv/bin/activate
      

    💁 यी कमाण्डहरू तपाईंले भर्चुअल वातावरण सिर्जना गर्न चलाएको स्थानबाट चलाउनुहोस्। तपाईंले .venv फोल्डरमा कहिल्यै जानु पर्दैन, तपाईंले सधैं सक्रिय कमाण्ड र प्याकेज स्थापना गर्न वा कोड चलाउन कमाण्डहरू सिर्जना गरिएको फोल्डरबाट चलाउनुहोस्।

  4. भर्चुअल वातावरण सक्रिय भएपछि, डिफल्ट python कमाण्डले भर्चुअल वातावरण सिर्जना गर्न प्रयोग गरिएको Python संस्करण चलाउनेछ। संस्करण प्राप्त गर्न निम्न कमाण्ड चलाउनुहोस्:

    python --version
    

    आउटपुट निम्न जस्तै हुनेछ:

    (.venv) ➜  nightlight-server python --version
    Python 3.9.1
    

    💁 तपाईंको Python संस्करण फरक हुन सक्छ - जबसम्म यो संस्करण 3.6 वा उच्च छ, तपाईं ठीक हुनुहुन्छ। यदि छैन भने, यो फोल्डर मेटाउनुहोस्, Python को नयाँ संस्करण स्थापना गर्नुहोस् र पुन: प्रयास गर्नुहोस्।

  5. Paho-MQTT को लागि pip package स्थापना गर्न निम्न कमाण्डहरू चलाउनुहोस्, जुन एक लोकप्रिय MQTT लाइब्रेरी हो।

    pip install paho-mqtt
    

    यो pip package केवल भर्चुअल वातावरणमा स्थापना हुनेछ, र बाहिर उपलब्ध हुनेछैन।

सर्भर कोड लेख्नुहोस्

अब Python मा सर्भर कोड लेख्न सकिन्छ।

कार्य - सर्भर कोड लेख्नुहोस्

सर्भर कोड लेख्नुहोस्।

  1. भर्चुअल वातावरण भित्र Python फाइल app.py सिर्जना गर्न निम्न कमाण्ड चलाउनुहोस्:

    • Windows बाट चलाउनुहोस्:

      type nul > app.py
      
    • macOS वा Linux मा चलाउनुहोस्:

      touch app.py
      
  2. हालको फोल्डरलाई VS Code मा खोल्नुहोस्:

    code .
    
  3. जब VS Code सुरु हुन्छ, यसले Python भर्चुअल वातावरण सक्रिय गर्नेछ। यो तलको स्टाटस बारमा रिपोर्ट गरिनेछ:

    VS Code ले चयन गरिएको भर्चुअल वातावरण देखाउँदै

  4. यदि VS Code टर्मिनल पहिले नै चलिरहेको छ जब VS Code सुरु हुन्छ, यसमा भर्चुअल वातावरण सक्रिय हुने छैन। सबैभन्दा सजिलो कुरा भनेको Kill the active terminal instance बटन प्रयोग गरेर टर्मिनल बन्द गर्नु हो:

    VS Code Kill the active terminal instance बटन

  5. Terminal -> New Terminal चयन गरेर वा CTRL+` थिचेर नयाँ VS Code टर्मिनल सुरु गर्नुहोस्। नयाँ टर्मिनलले भर्चुअल वातावरण लोड गर्नेछ, यसलाई सक्रिय गर्न कल टर्मिनलमा देखिनेछ। भर्चुअल वातावरणको नाम (.venv) पनि प्रम्प्टमा हुनेछ:

    ➜  nightlight-server source .venv/bin/activate
    (.venv) ➜  nightlight 
    
  6. VS Code एक्सप्लोररबाट app.py फाइल खोल्नुहोस् र निम्न कोड थप्नुहोस्:

    import json
    import time
    
    import paho.mqtt.client as mqtt
    
    id = '<ID>'
    
    client_telemetry_topic = id + '/telemetry'
    client_name = id + 'nightlight_server'
    
    mqtt_client = mqtt.Client(client_name)
    mqtt_client.connect('test.mosquitto.org')
    
    mqtt_client.loop_start()
    
    def handle_telemetry(client, userdata, message):
        payload = json.loads(message.payload.decode())
        print("Message received:", payload)
    
    mqtt_client.subscribe(client_telemetry_topic)
    mqtt_client.on_message = handle_telemetry
    
    while True:
        time.sleep(2)
    

    लाइन 6 मा <ID> लाई तपाईंले आफ्नो उपकरण कोड सिर्जना गर्दा प्रयोग गरेको अद्वितीय ID ले प्रतिस्थापन गर्नुहोस्।

    ⚠️ यो त्यही ID हुनुपर्छ जुन तपाईंले आफ्नो उपकरणमा प्रयोग गर्नुभएको थियो, अन्यथा सर्भर कोडले सही टपिकमा सदस्यता लिने वा प्रकाशन गर्नेछैन।

    यो कोडले अद्वितीय नामको साथ MQTT क्लाइन्ट सिर्जना गर्दछ, र test.mosquitto.org ब्रोकरमा जडान गर्दछ। त्यसपछि यो पृष्ठभूमि थ्रेडमा चल्ने प्रोसेसिङ लूप सुरु गर्दछ, जुन सदस्यता लिएका टपिकहरूमा सन्देशहरू सुन्ने काम गर्दछ।

    क्लाइन्टले टेलिमेट्री टपिकमा सन्देशहरू सदस्यता लिन्छ, र सन्देश प्राप्त हुँदा कल गरिने फङ्सन परिभाषित गर्दछ। जब टेलिमेट्री सन्देश प्राप्त हुन्छ, handle_telemetry फङ्सन कल गरिन्छ, प्राप्त सन्देशलाई कन्सोलमा प्रिन्ट गर्दछ।

    अन्तमा, एक अनन्त लूपले एप्लिकेसन चलाइराख्छ। MQTT क्लाइन्ट पृष्ठभूमि थ्रेडमा सन्देशहरू सुन्दैछ र मुख्य एप्लिकेसन चलिरहेको बेला सधैं चल्छ।

  7. VS Code टर्मिनलबाट, आफ्नो Python एप चलाउन निम्न कमाण्ड चलाउनुहोस्:

    python app.py
    

    एपले IoT उपकरणबाट सन्देशहरू सुन्न सुरु गर्नेछ।

  8. सुनिश्चित गर्नुहोस् कि तपाईंको उपकरण चलिरहेको छ र टेलिमेट्री सन्देशहरू पठाइरहेको छ। आफ्नो भौतिक वा भर्चुअल उपकरणले पत्ता लगाएको प्रकाश स्तर समायोजन गर्नुहोस्। प्राप्त सन्देशहरू टर्मिनलमा प्रिन्ट गरिनेछ।

    (.venv) ➜  nightlight-server python app.py
    Message received: {'light': 0}
    Message received: {'light': 400}
    

    nightlight भर्चुअल वातावरणमा रहेको app.py फाइल चलिरहेको हुनुपर्छ ताकि nightlight-server भर्चुअल वातावरणमा रहेको app.py फाइलले पठाइएका सन्देशहरू प्राप्त गर्न सकियोस्।

💁 तपाईं यो कोड code-server/server फोल्डरमा पाउन सक्नुहुन्छ।

टेलिमेट्री कति पटक पठाउनु पर्छ?

टेलिमेट्रीको साथ एक महत्वपूर्ण विचार भनेको डेटा मापन र पठाउने आवृत्ति हो। उत्तर भनेको - यो निर्भर गर्दछ। यदि तपाईं बारम्बार मापन गर्नुहुन्छ भने तपाईं परिवर्तनहरूमा छिटो प्रतिक्रिया दिन सक्नुहुन्छ, तर तपाईंले बढी शक्ति, बढी ब्यान्डविथ प्रयोग गर्नुहुन्छ, बढी डेटा उत्पन्न गर्नुहुन्छ र प्रशोधन गर्न थप क्लाउड स्रोतहरू आवश्यक पर्छ। तपाईंले पर्याप्त बारम्बार मापन गर्नुपर्छ, तर धेरै बारम्बार होइन।

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

यदि तपाईं कारखानामा रहेको कुनै मेसिनरीको वरिपरि डेटा अनुगमन गर्दै हुनुहुन्छ जुन विफल भएमा विनाशकारी क्षति र लाखौं डलरको राजस्व घाटा निम्त्याउन सक्छ भने, प्रत्येक सेकेन्डमा धेरै पटक मापन गर्नु आवश्यक हुन सक्छ। ब्यान्डवidth खेर फाल्नु राम्रो हुन्छ यदि टेलिमेट्री छुटेमा मेसिन रोक्न र मर्मत गर्न आवश्यक छ भन्ने संकेत छुट्न सक्छ।

💁 यस अवस्थामा, तपाईंले इन्टरनेटमा निर्भरता कम गर्न टेलिमेट्रीलाई पहिले प्रशोधन गर्न एज उपकरण प्रयोग गर्ने विचार गर्न सक्नुहुन्छ।

कनेक्टिभिटीको हानि

इन्टरनेट जडानहरू अविश्वसनीय हुन सक्छन्, र आउटेजहरू सामान्य छन्। यस्तो परिस्थितिमा IoT उपकरणले के गर्नु पर्छ - डेटा गुमाउनु पर्छ कि जडान पुन: स्थापित नभएसम्म यसलाई भण्डारण गर्नु पर्छ? फेरि, उत्तर भनेको यो निर्भर गर्दछ।

थर्मोस्टेटको लागि डेटा नयाँ तापक्रम मापन लिइसकेपछि गुमाउन सकिन्छ। यदि तापक्रम अहिले 19°C छ भने, 20 मिनेट पहिले यो 20.5°C थियो भन्ने कुरा महत्त्वपूर्ण छैन, किनकि तापक्रम अहिलेको अवस्था अनुसार तापक्रम नियन्त्रण गरिन्छ।

मेसिनरीको लागि तपाईंले डेटा राख्न चाहनुहुन्छ, विशेष गरी यदि यो प्रवृत्तिहरूको लागि हेर्न प्रयोग गरिन्छ। त्यहाँ मेसिन लर्निङ मोडेलहरू छन् जसले परिभाषित समय अवधिको डेटा (जस्तै पछिल्लो घण्टा) हेरेर र असामान्य डेटा पत्ता लगाएर डेटा स्ट्रिमहरूमा असामान्यता पत्ता लगाउन सक्छ। यो प्राय: भविष्यवाणी मर्मतका लागि प्रयोग गरिन्छ, केही चाँडै बिग्रन सक्छ भन्ने संकेतहरू खोज्दै ताकि तपाईंले त्यसलाई बिग्रनु अघि मर्मत वा प्रतिस्थापन गर्न सक्नुहुन्छ। तपाईंले मेसिनको लागि प्रत्येक टेलिमेट्री पठाउन चाहनुहुन्छ ताकि इन्टरनेट आउटेजको समयमा उत्पन्न टेलिमेट्री पुन: जडान भएपछि पठाउन सकियोस्।

IoT उपकरण डिजाइनरहरूले यो पनि विचार गर्नुपर्छ कि IoT उपकरण इन्टरनेट आउटेज वा स्थानको कारण सिग्नलको हानि हुँदा प्रयोग गर्न सकिन्छ कि सकिँदैन। स्मार्ट थर्मोस्टेटले क्लाउडमा टेलिमेट्री पठाउन नसक्ने आउटेजको कारणले केही सीमित निर्णयहरू गर्न सक्षम हुनुपर्छ।

यो फेरारी ब्रिक भयो किनकि कसैले यसलाई भूमिगतमा सेल रिसेप्शन नभएको ठाउँमा अपग्रेड गर्न प्रयास गरे

MQTT ले कनेक्टिभिटीको हानि सामना गर्न, उपकरण र सर्भर कोडले सन्देश डेलिभरी सुनिश्चित गर्न जिम्मेवार हुनुपर्छ यदि यो आवश्यक छ, उदाहरणका लागि सबै पठाइएका सन्देशहरूलाई रिप्लाई टपिकमा थप सन्देशहरूद्वारा उत्तर दिन आवश्यक छ, र यदि छैन भने तिनीहरूलाई म्यानुअली पुन: प्ले गर्नको लागि पङ्क्तिबद्ध गरिन्छ।

कमाण्डहरू

कमाण्डहरू सन्देशहरू हुन् जुन क्लाउडबाट उपकरणमा पठाइन्छ, यसलाई केही गर्न निर्देशन दिन्छ। प्राय: यो एक्ट्युएटर मार्फत केही प्रकारको आउटपुट दिन समावेश गर्दछ, तर यो उपकरणलाई निर्देशन दिन पनि हुन सक्छ, जस्तै पुन: सुरु गर्न, वा अतिरिक्त टेलिमेट्री सङ्कलन गर्न र कमाण्डको प्रतिक्रिया रूपमा फर्काउन।

इन्टरनेट जडित थर्मोस्टेटले तापक्रम अन गर्न कमाण्ड प्राप्त गर्दै

थर्मोस्टेटले क्लाउडबाट तापक्रम अन गर्न कमाण्ड प्राप्त गर्न सक्छ। सबै सेन्सरहरूको टेलिमेट्री डेटा अनुसार, यदि क्लाउड सेवाले तापक्रम अन हुनुपर्छ भनेर निर्णय गरेको छ भने, यसले सम्बन्धित कमाण्ड पठाउँछ।

MQTT ब्रोकरमा कमाण्डहरू पठाउनुहोस्

हाम्रो इन्टरनेट नियन्त्रण गरिएको नाइटलाइटको अर्को चरण भनेको सर्भर कोडले IoT उपकरणलाई प्रकाश स्तरको आधारमा प्रकाश नियन्त्रण गर्न कमाण्ड पठाउनु हो।

  1. VS Code मा सर्भर कोड खोल्नुहोस्

  2. client_telemetry_topic को घोषणा पछि निम्न लाइन थप्नुहोस् ताकि कुन टपिकमा कमाण्ड पठाउने भनेर परिभाषित गर्न सकियोस्:

    server_command_topic = id + '/commands'
    
  3. handle_telemetry फङ्सनको अन्त्यमा निम्न कोड थप्नुहोस्:

    command = { 'led_on' : payload['light'] < 300 }
    print("Sending message:", command)
    
    client.publish(server_command_topic, json.dumps(command))
    

    यसले कमाण्ड टपिकमा led_on को मानलाई true वा false सेट गरेर JSON सन्देश पठाउँछ, प्रकाश 300 भन्दा कम छ कि छैन भन्ने आधारमा। यदि प्रकाश 300 भन्दा कम छ भने, उपकरणलाई LED अन गर्न निर्देशन दिन true पठाइन्छ।

  4. पहिलेको जस्तै कोड चलाउनुहोस्

  5. आफ्नो भौतिक वा भर्चुअल उपकरणले पत्ता लगाएको प्रकाश स्तर समायोजन गर्नुहोस्। प्राप्त सन्देशहरू र पठाइएका कमाण्डहरू टर्मिनलमा लेखिनेछन्:

    (.venv) ➜  nightlight-server python app.py
    Message received: {'light': 0}
    Sending message: {'led_on': True}
    Message received: {'light': 400}
    Sending message: {'led_on': False}
    

💁 टेलिमेट्री र कमाण्डहरू एकल टपिकमा पठाइरहेका छन्। यसको मतलब धेरै उपकरणहरूबाट टेलिमेट्री एउटै टेलिमेट्री टपिकमा देखा पर्नेछ, र धेरै उपकरणहरूलाई कमाण्डहरू एउटै कमाण्ड टपिकमा देखा पर्नेछन्। यदि तपाईंले विशिष्ट उपकरणमा कमाण्ड पठाउन चाहनुभयो भने, तपाईंले अद्वितीय उपकरण ID सहित नामित धेरै टपिकहरू प्रयोग गर्न सक्नुहुन्छ, जस्तै /commands/device1, /commands/device2। यसरी उपकरणले केवल त्यो एक उपकरणको लागि सन्देशहरू सुन्न सक्छ।

💁 तपाईं यो कोड code-commands/server फोल्डरमा पाउन सक्नुहुन्छ।

IoT उपकरणमा कमाण्डहरू ह्यान्डल गर्नुहोस्

अब सर्भरबाट कमाण्डहरू पठाइरहेको छ, तपाईं अब IoT उपकरणमा कोड थप्न सक्नुहुन्छ ताकि तिनीहरूलाई ह्यान्डल गर्न सकियोस् र LED नियन्त्रण गर्न सकियोस्।

MQTT ब्रोकरबाट कमाण्डहरू सुन्न निम्न चरणहरू अनुसरण गर्नुहोस्:

यो कोड लेखेर चलाएपछि, प्रकाश स्तर परिवर्तन गर्न प्रयोग गर्नुहोस्। सर्भर र उपकरणबाट आउटपुट हेर्नुहोस्, र प्रकाश स्तर परिवर्तन गर्दा LED हेर्नुहोस्।

कनेक्टिभिटीको हानि

क्लाउड सेवाले के गर्नु पर्छ यदि यसले अफलाइन IoT उपकरणमा कमाण्ड पठाउन आवश्यक छ? फेरि, उत्तर भनेको यो निर्भर गर्दछ।

यदि पछिल्लो कमाण्डले पहिलेको कमाण्डलाई ओभरराइड गर्छ भने पहिलेका कमाण्डहरूलाई सम्भवतः बेवास्ता गर्न सकिन्छ। यदि क्लाउड सेवाले तापक्रम अन गर्न कमाण्ड पठाउँछ, त्यसपछि तापक्रम अफ गर्न कमाण्ड पठाउँछ भने, अन कमाण्डलाई बेवास्ता गर्न सकिन्छ र पुन: पठाउन आवश्यक छैन।

यदि कमाण्डहरू क्रममा प्रशोधन गर्न आवश्यक छ, जस्तै रोबोट आर्मलाई माथि सार्नुहोस्, त्यसपछि ग्राबर बन्द गर्नुहोस् भने तिनीहरू जडान पुन: स्थापित भएपछि क्रममा पठाउन आवश्यक छ।

उपकरण वा सर्भर कोडले MQTT मार्फत कमाण्डहरू सधैं क्रममा पठाइने र ह्यान्डल गरिने सुनिश्चित गर्न कसरी सकिन्छ?


🚀 चुनौती

पछिल्ला तीन पाठहरूमा चुनौती भनेको तपाईंको घर, विद्यालय वा कार्यस्थलमा रहेका IoT उपकरणहरूको सूची बनाउनु हो, र तिनीहरू माइक्रोकन्ट्रोलर वा सिंगल-बोर्ड कम्प्युटर, वा दुवैको मिश्रणमा आधारित छन् कि छैनन् भनेर निर्णय गर्नु हो, र तिनीहरूले कुन सेन्सर र एक्ट्युएटर प्रयोग गरिरहेका छन् भनेर सोच्नु हो। यी उपकरणहरूको लागि, तिनीहरूले कुन सन्देशहरू पठाउन वा प्राप्त गर्न सक्छन् भनेर सोच्नुहोस्। तिनीहरूले कुन प्रकारको टेलिमेट्री पठाउँछन्? तिनीहरूले कुन सन्देशहरू वा आदेशहरू प्राप्त गर्न सक्छन्? के तपाईंलाई लाग्छ कि तिनीहरू सुरक्षित छन्?

व्याख्यानपछिको क्विज

व्याख्यानपछिको क्विज

समीक्षा र आत्म-अध्ययन

MQTT को बारेमा थप पढ्न MQTT Wikipedia पृष्ठ मा जानुहोस्।

आफैंले एक MQTT ब्रोकर चलाएर हेर्नुहोस् Mosquitto प्रयोग गरेर, र यसमा आफ्नो IoT उपकरण र सर्भर कोडबाट जडान गर्नुहोस्।

💁 सुझाव - Mosquitto ले डिफल्ट रूपमा अनाम जडानहरू (जसले प्रयोगकर्ता नाम र पासवर्ड बिना जडान गर्दछ) अनुमति दिदैन, र यो चलिरहेको कम्प्युटर बाहिरबाट जडानहरू अनुमति दिदैन। तपाईं यसलाई mosquitto.conf कन्फिग फाइल प्रयोग गरेर निम्न तरिकाले सुधार गर्न सक्नुहुन्छ:

listener 1883 0.0.0.0
allow_anonymous true

असाइनमेन्ट

MQTT लाई अन्य सञ्चार प्रोटोकलहरूसँग तुलना गर्नुहोस्


अस्वीकरण:
यो दस्तावेज़ AI अनुवाद सेवा Co-op Translator प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।