You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/tr/2-farm/lessons/4-migrate-your-plant-to-the.../single-board-computer-conne...

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

  1. 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.

  2. 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.

  3. 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.

  4. 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 ve handle_command kullanan tüm kodları kaldırın. while True: döngüsünü koruyun, sadece bu döngüdeki mqtt_client.publish satırını silin.

  5. 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.

  6. 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')
    
  7. 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

  1. 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

  1. 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çin relay_on ve kapatmak için relay_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.

  2. 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.

  3. 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.