5.9 KiB
Hubungkan perangkat IoT Anda ke cloud - Perangkat IoT Virtual dan Raspberry Pi
Dalam bagian pelajaran ini, Anda akan menghubungkan perangkat IoT virtual atau Raspberry Pi Anda ke IoT Hub, untuk mengirim telemetri dan menerima perintah.
Hubungkan perangkat Anda ke IoT Hub
Langkah berikutnya adalah menghubungkan perangkat Anda ke IoT Hub.
Tugas - hubungkan ke IoT Hub
-
Buka folder
soil-moisture-sensordi VS Code. Pastikan lingkungan virtual berjalan di terminal jika Anda menggunakan perangkat IoT virtual. -
Instal beberapa paket Pip tambahan:
pip3 install azure-iot-deviceazure-iot-deviceadalah pustaka untuk berkomunikasi dengan IoT Hub Anda. -
Tambahkan impor berikut ke bagian atas file
app.py, di bawah impor yang sudah ada:from azure.iot.device import IoTHubDeviceClient, Message, MethodResponseKode ini mengimpor SDK untuk berkomunikasi dengan IoT Hub Anda.
-
Hapus baris
import paho.mqtt.client as mqttkarena pustaka ini tidak lagi diperlukan. Hapus semua kode MQTT termasuk nama topik, semua kode yang menggunakanmqtt_clientdanhandle_command. Pertahankan loopwhile True:, cukup hapus barismqtt_client.publishdari loop ini. -
Tambahkan kode berikut di bawah pernyataan impor:
connection_string = "<connection string>"Ganti
<connection string>dengan string koneksi yang Anda ambil untuk perangkat sebelumnya dalam pelajaran ini.💁 Ini bukan praktik terbaik. String koneksi seharusnya tidak pernah disimpan dalam kode sumber, karena ini dapat diperiksa ke dalam kontrol kode sumber dan ditemukan oleh siapa saja. Kami melakukan ini di sini demi kesederhanaan. Idealnya, Anda harus menggunakan sesuatu seperti variabel lingkungan dan alat seperti
python-dotenv. Anda akan mempelajari lebih lanjut tentang ini dalam pelajaran mendatang. -
Di bawah kode ini, tambahkan yang berikut untuk membuat objek klien perangkat yang dapat berkomunikasi dengan IoT Hub, dan menghubungkannya:
device_client = IoTHubDeviceClient.create_from_connection_string(connection_string) print('Connecting') device_client.connect() print('Connected') -
Jalankan kode ini. Anda akan melihat perangkat Anda terhubung.
pi@raspberrypi:~/soil-moisture-sensor $ python3 app.py Connecting Connected Soil moisture: 379
Kirim telemetri
Sekarang perangkat Anda sudah terhubung, Anda dapat mengirim telemetri ke IoT Hub alih-alih broker MQTT.
Tugas - kirim telemetri
-
Tambahkan kode berikut di dalam loop
while True, tepat sebelum perintah sleep:message = Message(json.dumps({ 'soil_moisture': soil_moisture })) device_client.send_message(message)Kode ini membuat
MessageIoT Hub yang berisi pembacaan kelembapan tanah sebagai string JSON, lalu mengirimkannya ke IoT Hub sebagai pesan dari perangkat ke cloud.
Tangani perintah
Perangkat Anda perlu menangani perintah dari kode server untuk mengontrol relay. Perintah ini dikirim sebagai permintaan metode langsung.
Tugas - tangani permintaan metode langsung
-
Tambahkan kode berikut sebelum loop
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 mendefinisikan metode,
handle_method_request, yang akan dipanggil ketika metode langsung dipanggil oleh IoT Hub. Setiap metode langsung memiliki nama, dan kode ini mengharapkan metode bernamarelay_onuntuk menyalakan relay, danrelay_offuntuk mematikan relay.💁 Ini juga dapat diimplementasikan dalam satu permintaan metode langsung, dengan meneruskan status yang diinginkan dari relay dalam payload yang dapat diteruskan dengan permintaan metode dan tersedia dari objek
request. -
Metode langsung memerlukan respons untuk memberi tahu kode pemanggil bahwa mereka telah ditangani. Tambahkan kode berikut di akhir fungsi
handle_method_requestuntuk membuat respons terhadap permintaan:method_response = MethodResponse.create_from_method_request(request, 200) device_client.send_method_response(method_response)Kode ini mengirimkan respons terhadap permintaan metode langsung dengan kode status HTTP 200, dan mengirimkannya kembali ke IoT Hub.
-
Tambahkan kode berikut di bawah definisi fungsi ini:
device_client.on_method_request_received = handle_method_requestKode ini memberi tahu klien IoT Hub untuk memanggil fungsi
handle_method_requestketika metode langsung dipanggil.
💁 Anda dapat menemukan kode ini di folder code/pi atau code/virtual-device.
😀 Program sensor kelembapan tanah Anda telah terhubung ke IoT Hub Anda!
Penafian:
Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI Co-op Translator. Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini.