5.8 KiB
IoT Cihazınızı Buluta Bağlayın - Sanal IoT Donanımı ve Raspberry Pi
Bu dersin bu bölümünde, sanal IoT cihazınızı veya Raspberry Pi'nizi IoT Hub'a bağlayarak telemetri gönderecek ve komutlar alacaksınız.
Cihazınızı IoT Hub'a Bağlayın
Bir sonraki adım, cihazınızı IoT Hub'a bağlamaktır.
Görev - IoT Hub'a bağlanın
-
VS Code'da
soil-moisture-sensor
klasörünü açın. Sanal bir IoT cihazı kullanıyorsanız, terminalde sanal ortamın çalıştığından emin olun. -
Bazı ek Pip paketlerini yükleyin:
pip3 install azure-iot-device
azure-iot-device
, IoT Hub ile iletişim kurmak için bir kütüphanedir. -
Aşağıdaki importları,
app.py
dosyasının en üstüne, mevcut importların altına ekleyin:from azure.iot.device import IoTHubDeviceClient, Message, MethodResponse
Bu kod, IoT Hub ile iletişim kurmak için SDK'yı içe aktarır.
-
import paho.mqtt.client as mqtt
satırını kaldırın çünkü bu kütüphane artık gerekli değil. MQTT kodunun tamamını, konu adları dahil,mqtt_client
vehandle_command
kullanan tüm kodları kaldırın.while True:
döngüsünü koruyun, sadece bu döngüdekimqtt_client.publish
satırını silin. -
Import ifadelerinin altına aşağıdaki kodu ekleyin:
connection_string = "<connection string>"
<connection string>
ifadesini, bu derste daha önce cihaz için aldığınız bağlantı dizesiyle değiştirin.💁 Bu en iyi uygulama değildir. Bağlantı dizeleri asla kaynak kodda saklanmamalıdır, çünkü bu, kaynak kod kontrolüne dahil edilip herkes tarafından bulunabilir. Burada basitlik adına bunu yapıyoruz. İdeal olarak, bir ortam değişkeni ve
python-dotenv
gibi bir araç kullanmalısınız. Bunu ilerleyen bir derste daha ayrıntılı öğreneceksiniz. -
Bu kodun altına, IoT Hub ile iletişim kurabilecek bir cihaz istemcisi nesnesi oluşturmak ve bağlanmak için aşağıdaki kodu ekleyin:
device_client = IoTHubDeviceClient.create_from_connection_string(connection_string) print('Connecting') device_client.connect() print('Connected')
-
Bu kodu çalıştırın. Cihazınızın bağlandığını göreceksiniz.
pi@raspberrypi:~/soil-moisture-sensor $ python3 app.py Connecting Connected Soil moisture: 379
Telemetri Gönderin
Artık cihazınız bağlı olduğuna göre, MQTT broker yerine IoT Hub'a telemetri gönderebilirsiniz.
Görev - telemetri gönderin
-
while True
döngüsünün içine, uyuma işleminden hemen önce aşağıdaki kodu ekleyin:message = Message(json.dumps({ 'soil_moisture': soil_moisture })) device_client.send_message(message)
Bu kod, toprak nemi ölçümünü bir JSON dizesi olarak içeren bir IoT Hub
Message
oluşturur ve bunu cihazdan buluta bir mesaj olarak IoT Hub'a gönderir.
Komutları İşleyin
Cihazınızın, röleyi kontrol etmek için sunucu kodundan bir komut alması gerekir. Bu, doğrudan bir yöntem isteği olarak gönderilir.
Görev - doğrudan bir yöntem isteğini işleyin
-
while True
döngüsünden önce aşağıdaki kodu ekleyin: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()
Bu, IoT Hub tarafından bir doğrudan yöntem çağrıldığında çağrılacak bir
handle_method_request
yöntemi tanımlar. Her doğrudan yöntemin bir adı vardır ve bu kod, röleyi açmak içinrelay_on
ve kapatmak içinrelay_off
adlı bir yöntem bekler.💁 Bu, tek bir doğrudan yöntem isteği içinde de uygulanabilir. Rölenin istenen durumunu, yöntem isteğiyle birlikte gönderilebilen ve
request
nesnesinden erişilebilen bir yük olarak geçirebilirsiniz. -
Doğrudan yöntemler, çağıran koda işlendiklerini bildirmek için bir yanıt gerektirir.
handle_method_request
fonksiyonunun sonuna, isteğe yanıt oluşturmak için aşağıdaki kodu ekleyin:method_response = MethodResponse.create_from_method_request(request, 200) device_client.send_method_response(method_response)
Bu kod, doğrudan yöntem isteğine bir HTTP durum kodu 200 ile yanıt gönderir ve bunu IoT Hub'a geri gönderir.
-
Bu fonksiyon tanımının altına aşağıdaki kodu ekleyin:
device_client.on_method_request_received = handle_method_request
Bu kod, bir doğrudan yöntem çağrıldığında IoT Hub istemcisinin
handle_method_request
fonksiyonunu çağırmasını söyler.
💁 Bu kodu code/pi veya code/virtual-device klasöründe bulabilirsiniz.
😀 Toprak nem sensörü programınız IoT Hub'a bağlandı!
Feragatname:
Bu belge, AI çeviri hizmeti Co-op Translator kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz.