10 KiB
आफ्नो IoT उपकरणलाई क्लाउडसँग जडान गर्नुहोस् - भर्चुअल IoT हार्डवेयर र Raspberry Pi
यस पाठको यस भागमा, तपाईं आफ्नो भर्चुअल IoT उपकरण वा Raspberry Pi लाई IoT Hubसँग जडान गर्नुहुनेछ, टेलिमेट्री पठाउन र आदेशहरू प्राप्त गर्न।
आफ्नो उपकरणलाई IoT Hubसँग जडान गर्नुहोस्
अर्को चरण भनेको आफ्नो उपकरणलाई IoT Hubसँग जडान गर्नु हो।
कार्य - IoT Hubसँग जडान गर्नुहोस्
-
VS Code मा
soil-moisture-sensorफोल्डर खोल्नुहोस्। यदि तपाईं भर्चुअल IoT उपकरण प्रयोग गर्दै हुनुहुन्छ भने टर्मिनलमा भर्चुअल वातावरण चलिरहेको छ भनेर सुनिश्चित गर्नुहोस्। -
केही अतिरिक्त Pip प्याकेजहरू स्थापना गर्नुहोस्:
pip3 install azure-iot-deviceazure-iot-deviceतपाईंको IoT Hubसँग संवाद गर्नको लागि पुस्तकालय हो। -
app.pyफाइलको माथि, पहिले नै भएका आयातहरू तल निम्न आयातहरू थप्नुहोस्:from azure.iot.device import IoTHubDeviceClient, Message, MethodResponseयो कोडले तपाईंको IoT Hubसँग संवाद गर्नको लागि 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 Hubसँग संवाद गर्न सक्ने उपकरण क्लाइन्ट वस्तु सिर्जना गर्न र यसलाई जडान गर्न निम्न कोड थप्नुहोस्:
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 Hubमा टेलिमेट्री पठाउन सक्नुहुन्छ।
कार्य - टेलिमेट्री पठाउनुहोस्
-
while Trueलूप भित्र, सुत्नुअघि निम्न कोड थप्नुहोस्:message = Message(json.dumps({ 'soil_moisture': soil_moisture })) device_client.send_message(message)यो कोडले माटोको चिस्यानको रिडिङलाई JSON स्ट्रिङको रूपमा समावेश गर्ने IoT Hub
Messageसिर्जना गर्दछ, त्यसपछि यसलाई उपकरणबाट क्लाउड सन्देशको रूपमा IoT Hubमा पठाउँछ।
आदेशहरू ह्यान्डल गर्नुहोस्
तपाईंको उपकरणले रिले नियन्त्रण गर्न सर्वर कोडबाट आदेश ह्यान्डल गर्न आवश्यक छ। यो प्रत्यक्ष विधि अनुरोधको रूपमा पठाइन्छ।
कार्य - प्रत्यक्ष विधि अनुरोध ह्यान्डल गर्नुहोस्
-
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 Hubद्वारा प्रत्यक्ष विधि बोलाउँदा कल गरिनेछ। प्रत्येक प्रत्यक्ष विधिको नाम हुन्छ, र यो कोडले रिले अन गर्न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 Hubमा फर्काउँछ।
-
यो कार्य परिभाषाको तल निम्न कोड थप्नुहोस्:
device_client.on_method_request_received = handle_method_requestयो कोडले IoT Hub क्लाइन्टलाई प्रत्यक्ष विधि बोलाउँदा
handle_method_requestकार्य कल गर्न भन्छ।
💁 तपाईं यो कोड code/pi वा code/virtual-device फोल्डरमा फेला पार्न सक्नुहुन्छ।
😀 तपाईंको माटोको चिस्यान सेन्सर कार्यक्रम IoT Hubसँग जडान भएको छ!
अस्वीकरण:
यो दस्तावेज़ AI अनुवाद सेवा Co-op Translator प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।