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/hi/2-farm/lessons/4-migrate-your-plant-to-the.../single-board-computer-conne...

11 KiB

अपने IoT डिवाइस को क्लाउड से कनेक्ट करें - वर्चुअल IoT हार्डवेयर और रास्पबेरी पाई

इस पाठ के इस भाग में, आप अपने वर्चुअल IoT डिवाइस या रास्पबेरी पाई को IoT हब से कनेक्ट करेंगे, ताकि टेलीमेट्री भेज सकें और कमांड प्राप्त कर सकें।

अपने डिवाइस को IoT हब से कनेक्ट करें

अगला कदम है अपने डिवाइस को IoT हब से कनेक्ट करना।

कार्य - IoT हब से कनेक्ट करें

  1. VS Code में soil-moisture-sensor फ़ोल्डर खोलें। सुनिश्चित करें कि यदि आप वर्चुअल IoT डिवाइस का उपयोग कर रहे हैं तो टर्मिनल में वर्चुअल एनवायरनमेंट चल रहा हो।

  2. कुछ अतिरिक्त Pip पैकेज इंस्टॉल करें:

    pip3 install azure-iot-device
    

    azure-iot-device एक लाइब्रेरी है जो आपके IoT हब से संवाद करने के लिए उपयोग होती है।

  3. निम्नलिखित इम्पोर्ट्स को app.py फ़ाइल के शीर्ष पर, मौजूदा इम्पोर्ट्स के नीचे जोड़ें:

    from azure.iot.device import IoTHubDeviceClient, Message, MethodResponse
    

    यह कोड आपके IoT हब से संवाद करने के लिए SDK को इम्पोर्ट करता है।

  4. import paho.mqtt.client as mqtt लाइन को हटा दें क्योंकि अब इस लाइब्रेरी की आवश्यकता नहीं है। सभी MQTT कोड, जिसमें टॉपिक नाम, mqtt_client का उपयोग करने वाला कोड और handle_command शामिल हैं, हटा दें। while True: लूप को रखें, बस इस लूप से mqtt_client.publish लाइन को हटा दें।

  5. इम्पोर्ट स्टेटमेंट्स के नीचे निम्नलिखित कोड जोड़ें:

    connection_string = "<connection string>"
    

    <connection string> को उस कनेक्शन स्ट्रिंग से बदलें जिसे आपने इस पाठ में पहले डिवाइस के लिए प्राप्त किया था।

    💁 यह सबसे अच्छा तरीका नहीं है। कनेक्शन स्ट्रिंग्स को कभी भी सोर्स कोड में स्टोर नहीं करना चाहिए, क्योंकि इसे सोर्स कोड कंट्रोल में चेक किया जा सकता है और कोई भी इसे देख सकता है। हम इसे यहां सरलता के लिए कर रहे हैं। आदर्श रूप से आपको कुछ ऐसा उपयोग करना चाहिए जैसे एनवायरनमेंट वेरिएबल और python-dotenv जैसा टूल। आप इसके बारे में आगामी पाठ में अधिक जानेंगे।

  6. इस कोड के नीचे, निम्नलिखित को जोड़ें ताकि एक डिवाइस क्लाइंट ऑब्जेक्ट बनाया जा सके जो IoT हब से संवाद कर सके, और इसे कनेक्ट करें:

    device_client = IoTHubDeviceClient.create_from_connection_string(connection_string)
    
    print('Connecting')
    device_client.connect()
    print('Connected')
    
  7. इस कोड को चलाएं। आप देखेंगे कि आपका डिवाइस कनेक्ट हो गया है।

    pi@raspberrypi:~/soil-moisture-sensor $ python3 app.py 
    Connecting
    Connected
    Soil moisture: 379
    

टेलीमेट्री भेजें

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

कार्य - टेलीमेट्री भेजें

  1. निम्नलिखित कोड को while True लूप के अंदर, स्लीप से ठीक पहले जोड़ें:

    message = Message(json.dumps({ 'soil_moisture': soil_moisture }))
    device_client.send_message(message)
    

    यह कोड एक IoT हब Message बनाता है जिसमें मिट्टी की नमी की रीडिंग JSON स्ट्रिंग के रूप में होती है, और इसे डिवाइस से क्लाउड संदेश के रूप में IoT हब को भेजता है।

कमांड हैंडल करें

आपके डिवाइस को सर्वर कोड से एक कमांड हैंडल करने की आवश्यकता है ताकि रिले को नियंत्रित किया जा सके। यह एक डायरेक्ट मेथड रिक्वेस्ट के रूप में भेजा जाता है।

कार्य - डायरेक्ट मेथड रिक्वेस्ट हैंडल करें

  1. 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 ऑब्जेक्ट से उपलब्ध कराया जा सकता है।

  2. डायरेक्ट मेथड्स को एक प्रतिक्रिया की आवश्यकता होती है ताकि कॉलिंग कोड को बताया जा सके कि उन्हें हैंडल किया गया है। handle_method_request फंक्शन के अंत में निम्नलिखित कोड जोड़ें ताकि रिक्वेस्ट के लिए एक प्रतिक्रिया बनाई जा सके:

    method_response = MethodResponse.create_from_method_request(request, 200)
    device_client.send_method_response(method_response)
    

    यह कोड डायरेक्ट मेथड रिक्वेस्ट को HTTP स्टेटस कोड 200 के साथ प्रतिक्रिया भेजता है, और इसे IoT हब को वापस भेजता है।

  3. इस फंक्शन डिफिनिशन के नीचे निम्नलिखित कोड जोड़ें:

    device_client.on_method_request_received = handle_method_request
    

    यह कोड IoT हब क्लाइंट को बताता है कि जब एक डायरेक्ट मेथड कॉल किया जाए तो handle_method_request फंक्शन को कॉल करें।

💁 आप इस कोड को code/pi या code/virtual-device फ़ोल्डर में पा सकते हैं।

😀 आपका मिट्टी की नमी सेंसर प्रोग्राम IoT हब से कनेक्ट हो गया है!

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