5.9 KiB
Sambungkan peranti IoT anda ke awan - Perkakasan IoT Maya dan Raspberry Pi
Dalam bahagian pelajaran ini, anda akan menyambungkan peranti IoT maya atau Raspberry Pi anda ke IoT Hub, untuk menghantar telemetri dan menerima arahan.
Sambungkan peranti anda ke IoT Hub
Langkah seterusnya adalah menyambungkan peranti anda ke IoT Hub.
Tugasan - sambungkan ke IoT Hub
-
Buka folder
soil-moisture-sensordalam VS Code. Pastikan persekitaran maya berjalan di terminal jika anda menggunakan peranti IoT maya. -
Pasang beberapa pakej Pip tambahan:
pip3 install azure-iot-deviceazure-iot-deviceadalah perpustakaan untuk berkomunikasi dengan IoT Hub anda. -
Tambahkan import berikut di bahagian atas fail
app.py, di bawah import yang sedia ada:from azure.iot.device import IoTHubDeviceClient, Message, MethodResponseKod ini mengimport SDK untuk berkomunikasi dengan IoT Hub anda.
-
Padamkan baris
import paho.mqtt.client as mqttkerana perpustakaan ini tidak lagi diperlukan. Padamkan semua kod MQTT termasuk nama topik, semua kod yang menggunakanmqtt_clientdanhandle_command. Kekalkan gelungwhile True:, hanya padamkan barismqtt_client.publishdaripada gelung ini. -
Tambahkan kod berikut di bawah pernyataan import:
connection_string = "<connection string>"Gantikan
<connection string>dengan rentetan sambungan yang anda peroleh untuk peranti tersebut sebelum ini dalam pelajaran ini.💁 Ini bukan amalan terbaik. Rentetan sambungan tidak seharusnya disimpan dalam kod sumber, kerana ini boleh diperiksa ke dalam kawalan kod sumber dan ditemui oleh sesiapa sahaja. Kami melakukan ini di sini untuk tujuan kesederhanaan. Sebaiknya anda menggunakan sesuatu seperti pembolehubah persekitaran dan alat seperti
python-dotenv. Anda akan mempelajari lebih lanjut tentang ini dalam pelajaran yang akan datang. -
Di bawah kod ini, tambahkan yang berikut untuk mencipta objek klien peranti yang boleh berkomunikasi dengan IoT Hub, dan sambungkannya:
device_client = IoTHubDeviceClient.create_from_connection_string(connection_string) print('Connecting') device_client.connect() print('Connected') -
Jalankan kod ini. Anda akan melihat peranti anda disambungkan.
pi@raspberrypi:~/soil-moisture-sensor $ python3 app.py Connecting Connected Soil moisture: 379
Hantar telemetri
Sekarang peranti anda telah disambungkan, anda boleh menghantar telemetri ke IoT Hub dan bukannya broker MQTT.
Tugasan - hantar telemetri
-
Tambahkan kod berikut di dalam gelung
while True, tepat sebelum tidur:message = Message(json.dumps({ 'soil_moisture': soil_moisture })) device_client.send_message(message)Kod ini mencipta
MessageIoT Hub yang mengandungi bacaan kelembapan tanah sebagai rentetan JSON, kemudian menghantarnya ke IoT Hub sebagai mesej peranti ke awan.
Kendalikan arahan
Peranti anda perlu mengendalikan arahan daripada kod pelayan untuk mengawal relay. Ini dihantar sebagai permintaan kaedah langsung.
Tugasan - kendalikan permintaan kaedah langsung
-
Tambahkan kod berikut sebelum gelung
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()Ini mentakrifkan kaedah,
handle_method_request, yang akan dipanggil apabila kaedah langsung dipanggil oleh IoT Hub. Setiap kaedah langsung mempunyai nama, dan kod ini mengharapkan kaedah yang dipanggilrelay_onuntuk menghidupkan relay, danrelay_offuntuk mematikan relay.💁 Ini juga boleh dilaksanakan dalam satu permintaan kaedah langsung, dengan menghantar keadaan yang diinginkan untuk relay dalam payload yang boleh dihantar bersama permintaan kaedah dan tersedia daripada objek
request. -
Kaedah langsung memerlukan respons untuk memberitahu kod pemanggil bahawa ia telah dikendalikan. Tambahkan kod berikut di akhir fungsi
handle_method_requestuntuk mencipta respons kepada permintaan:method_response = MethodResponse.create_from_method_request(request, 200) device_client.send_method_response(method_response)Kod ini menghantar respons kepada permintaan kaedah langsung dengan kod status HTTP 200, dan menghantarnya kembali ke IoT Hub.
-
Tambahkan kod berikut di bawah definisi fungsi ini:
device_client.on_method_request_received = handle_method_requestKod ini memberitahu klien IoT Hub untuk memanggil fungsi
handle_method_requestapabila kaedah langsung dipanggil.
💁 Anda boleh menemui kod ini dalam folder code/pi atau code/virtual-device.
😀 Program sensor kelembapan tanah anda telah disambungkan ke IoT Hub anda!
Penafian:
Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI Co-op Translator. Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.