11 KiB
మీ IoT డివైస్ను క్లౌడ్ కు కనెక్ట్ చెయ్యండి - వర్చువల్ IoT హార్డ్వేర్ మరియు రాస్ప్బెరీ పి
ఈ పాఠంలో, మీరు మీ వర్చువల్ IoT డివైస్ లేదా రాస్ప్బెరీ పిను మీ IoT హబ్ కు కనెక్ట్ చేసి, టెలిమెట్రీ పంపడం మరియు ఆదేశాలు స్వీకరించడాన్ని నేర్చుకుంటారు.
మీ డివైస్ను IoT హబ్కు కనెక్ట్ చేయండి
తర్వాతి అడుగు మీ డివైస్ను IoT హబ్ కు కనెక్ట్ చేయడం.
టాస్క్ - IoT హబ్కు కనెక్ట్ అవ్వండి
-
VS కోడ్లో
soil-moisture-sensorఫోల్డర్ ను తెరవండి. మీరు వర్చువల్ IoT డివైస్ ఉపయోగిస్తునట్లయితే, టెర్మినల్లో వర్చువల్ ఎన్విరాన్మెంట్ నడుస్తున్నదని నిర్ధారించుకోండి. -
కొన్ని అదనపు పిప్ ప్యాకేజిలను ఇన్ స్టాల్ చేయండి:
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>ను మీరు ఈ పాఠంలో ముందుగా పొందిన డివైస్ కనెక్షన్ స్ట్రింగ్ తో మార్చండి.💁 ఇది ఉత్తమ పద్ధతి కాదు. కనెక్షన్ స్ట్రింగ్ లను ఎప్పుడూ సోర్స్ కోడ్ లో నిల్వ చేయకూడదు, ఎందుకంటే ఇది సోర్స్ కోడ్ కంట్రోల్ లో చెక్ ఇన్ అయ్యి ఎవరికైనా కనిపించవచ్చు. ఈ సులభత కోసం ఇక్కడ మనం ఇది చేస్తున్నాము. ఐడియల్ గా మీరు ఒకenvironment variable మరియు
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లూప్ లో,sleepముందు క్రింది కోడ్ను జోడించండి: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ఈ కోడ్ డైరెక్ట్ మెథడ్ పిలవబడినప్పుడు
handle_method_requestఫంక్షన్ ను IoT హబ్ క్లైంట్ కి కాల్ చేయమని చెప్పుతుంది.
💁 మీరు ఈ కోడ్ ను code/pi లేదా code/virtual-device ఫోల్డర్లలో చూడవచ్చు.
😀 మీ మట్టి తేమ సెన్సార్ ప్రోగ్రామ్ మీ IoT హబ్ కు కనెక్ట్ అయిపోయింది!
అస్వీకరణ ప్రకటన: ఈ పత్రాన్ని AI అనువాద సేవ Co-op Translator ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి యత్నించినప్పటికీ, స్వయంచాలక అనువాదాలలో తప్పులు లేదా అసత్యతలు ఉండవచ్చు. కృత్రిమ భాషలో ఉన్న అసలు పత్రాన్ని అధికారిక మూలంగా పరిగణించవలెను. ముఖ్యమైన సమాచారం కోసం, ప్రొఫెషనల్ మానవ అనువాదాన్ని సూచిస్తాము. ఈ అనువాదం ఉపయోగంతో ఏర్పడిన ఈటరువులు లేదా తప్పుబాట్ల కోసం మేము బాధ్యత వహించము.