8.2 KiB
اپنے IoT ڈیوائس کو کلاؤڈ سے جوڑیں - ورچوئل IoT ہارڈویئر اور راسپبیری پائی
اس سبق کے اس حصے میں، آپ اپنے ورچوئل IoT ڈیوائس یا راسپبیری پائی کو اپنے IoT ہب سے جوڑیں گے تاکہ ٹیلیمیٹری بھیج سکیں اور کمانڈز وصول کر سکیں۔
اپنے ڈیوائس کو IoT ہب سے جوڑیں
اگلا مرحلہ یہ ہے کہ اپنے ڈیوائس کو IoT ہب سے جوڑیں۔
کام - IoT ہب سے جڑیں
-
VS کوڈ میں
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 کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔