11 KiB
अपने IoT डिवाइस को क्लाउड से कनेक्ट करें - वर्चुअल IoT हार्डवेयर और रास्पबेरी पाई
इस पाठ के इस भाग में, आप अपने वर्चुअल IoT डिवाइस या रास्पबेरी पाई को IoT हब से कनेक्ट करेंगे, ताकि टेलीमेट्री भेज सकें और कमांड प्राप्त कर सकें।
अपने डिवाइस को IoT हब से कनेक्ट करें
अगला कदम है अपने डिवाइस को IoT हब से कनेक्ट करना।
कार्य - IoT हब से कनेक्ट करें
-
VS Code में
soil-moisture-sensorफ़ोल्डर खोलें। सुनिश्चित करें कि यदि आप वर्चुअल IoT डिवाइस का उपयोग कर रहे हैं तो टर्मिनल में वर्चुअल एनवायरनमेंट चल रहा हो। -
कुछ अतिरिक्त Pip पैकेज इंस्टॉल करें:
pip3 install azure-iot-deviceazure-iot-deviceएक लाइब्रेरी है जो आपके IoT हब से संवाद करने के लिए उपयोग होती है। -
निम्नलिखित इम्पोर्ट्स को
app.pyफ़ाइल के शीर्ष पर, मौजूदा इम्पोर्ट्स के नीचे जोड़ें:from azure.iot.device import IoTHubDeviceClient, Message, MethodResponseयह कोड आपके IoT हब से संवाद करने के लिए SDK को इम्पोर्ट करता है।
-
import paho.mqtt.client as mqttलाइन को हटा दें क्योंकि अब इस लाइब्रेरी की आवश्यकता नहीं है। सभी MQTT कोड, जिसमें टॉपिक नाम,mqtt_clientका उपयोग करने वाला कोड औरhandle_commandशामिल हैं, हटा दें।while True:लूप को रखें, बस इस लूप सेmqtt_client.publishलाइन को हटा दें। -
इम्पोर्ट स्टेटमेंट्स के नीचे निम्नलिखित कोड जोड़ें:
connection_string = "<connection string>"<connection string>को उस कनेक्शन स्ट्रिंग से बदलें जिसे आपने इस पाठ में पहले डिवाइस के लिए प्राप्त किया था।💁 यह सबसे अच्छा तरीका नहीं है। कनेक्शन स्ट्रिंग्स को कभी भी सोर्स कोड में स्टोर नहीं करना चाहिए, क्योंकि इसे सोर्स कोड कंट्रोल में चेक किया जा सकता है और कोई भी इसे देख सकता है। हम इसे यहां सरलता के लिए कर रहे हैं। आदर्श रूप से आपको कुछ ऐसा उपयोग करना चाहिए जैसे एनवायरनमेंट वेरिएबल और
python-dotenvजैसा टूल। आप इसके बारे में आगामी पाठ में अधिक जानेंगे। -
इस कोड के नीचे, निम्नलिखित को जोड़ें ताकि एक डिवाइस क्लाइंट ऑब्जेक्ट बनाया जा सके जो IoT हब से संवाद कर सके, और इसे कनेक्ट करें:
device_client = IoTHubDeviceClient.create_from_connection_string(connection_string) print('Connecting') device_client.connect() print('Connected') -
इस कोड को चलाएं। आप देखेंगे कि आपका डिवाइस कनेक्ट हो गया है।
pi@raspberrypi:~/soil-moisture-sensor $ python3 app.py Connecting Connected Soil moisture: 379
टेलीमेट्री भेजें
अब जब आपका डिवाइस कनेक्ट हो गया है, तो आप MQTT ब्रॉकर के बजाय IoT हब को टेलीमेट्री भेज सकते हैं।
कार्य - टेलीमेट्री भेजें
-
निम्नलिखित कोड को
while Trueलूप के अंदर, स्लीप से ठीक पहले जोड़ें:message = Message(json.dumps({ 'soil_moisture': soil_moisture })) device_client.send_message(message)यह कोड एक IoT हब
Messageबनाता है जिसमें मिट्टी की नमी की रीडिंग JSON स्ट्रिंग के रूप में होती है, और इसे डिवाइस से क्लाउड संदेश के रूप में IoT हब को भेजता है।
कमांड हैंडल करें
आपके डिवाइस को सर्वर कोड से एक कमांड हैंडल करने की आवश्यकता है ताकि रिले को नियंत्रित किया जा सके। यह एक डायरेक्ट मेथड रिक्वेस्ट के रूप में भेजा जाता है।
कार्य - डायरेक्ट मेथड रिक्वेस्ट हैंडल करें
-
while Trueलूप से पहले निम्नलिखित कोड जोड़ें:def handle_method_request(request): print("Direct method received - ", request.name) if request.name == "relay_on": relay.on() elif request.name == "relay_off": relay.off()यह एक मेथड,
handle_method_request, को परिभाषित करता है जिसे तब कॉल किया जाएगा जब IoT हब द्वारा एक डायरेक्ट मेथड कॉल किया जाएगा। प्रत्येक डायरेक्ट मेथड का एक नाम होता है, और यह कोड एक मेथड को अपेक्षित करता है जिसेrelay_onकहा जाता है ताकि रिले को चालू किया जा सके, औरrelay_offताकि रिले को बंद किया जा सके।💁 इसे एक ही डायरेक्ट मेथड रिक्वेस्ट में भी लागू किया जा सकता है, जिसमें रिले की इच्छित स्थिति को एक पेलोड में पास किया जा सकता है जिसे मेथड रिक्वेस्ट के साथ पास किया जा सकता है और
requestऑब्जेक्ट से उपलब्ध कराया जा सकता है। -
डायरेक्ट मेथड्स को एक प्रतिक्रिया की आवश्यकता होती है ताकि कॉलिंग कोड को बताया जा सके कि उन्हें हैंडल किया गया है।
handle_method_requestफंक्शन के अंत में निम्नलिखित कोड जोड़ें ताकि रिक्वेस्ट के लिए एक प्रतिक्रिया बनाई जा सके:method_response = MethodResponse.create_from_method_request(request, 200) device_client.send_method_response(method_response)यह कोड डायरेक्ट मेथड रिक्वेस्ट को HTTP स्टेटस कोड 200 के साथ प्रतिक्रिया भेजता है, और इसे IoT हब को वापस भेजता है।
-
इस फंक्शन डिफिनिशन के नीचे निम्नलिखित कोड जोड़ें:
device_client.on_method_request_received = handle_method_requestयह कोड IoT हब क्लाइंट को बताता है कि जब एक डायरेक्ट मेथड कॉल किया जाए तो
handle_method_requestफंक्शन को कॉल करें।
💁 आप इस कोड को code/pi या code/virtual-device फ़ोल्डर में पा सकते हैं।
😀 आपका मिट्टी की नमी सेंसर प्रोग्राम IoT हब से कनेक्ट हो गया है!
अस्वीकरण:
यह दस्तावेज़ AI अनुवाद सेवा Co-op Translator का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता सुनिश्चित करने का प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।