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