Azure IoT Hub, cihazlarınızı Azure servislerine bağlamanızı sağlayan bir altyapıdır. Güvenli bağlantı, cihaz yönetimi ve yönlendirme işlemlerinden sorumludur. Azure IoT Hub'ı bir MQTT Broker olarak düşünebilirsiniz.

Bu kaynakta, Azure IoT Hub oluşturmayı, cihaz eklemeyi, Python ile mesaj göndermeyi, gelen mesajları okumayı ele alacağız. Çalışmalarımızı VSCode ile yapacağız.

Ön Gereksinimler

Ön gereksinimlerin kurulumu için linklere tıklayın.

Aşağıdaki komut ile Azure CLI'e IoT extension'ını kurun.

az extension add --name azure-cli-iot-ext

Aşağıdaki komut ile Azure IoT Device Python kütüphanesini kurun.

pip3 install azure-iot-device

Azure IoT Hub Oluşturmak

Bu aşamada Azure Portal üzerinden IoT Hub oluşturacağız. "Create a Resource" linkinden "IoT Hub" ı aratın.

Basics sekmesinde subscription'ınızı seçin ve IoT geliştirme için kullanacağınız servisleri bir arada tutacak bir resource group oluşturun. Region ayarını size en yakın bölge olarak seçin. (Türkiye için West Europe seçilebilir.) IoT Hub'ınıza bir isim vererek devam edin.

Size and Scale sekmesinde ihtiyacınız olan kapasiteyi belirleyeceksiniz. Deneme projeleri için free tier yeterlidir. Free tier, 500 cihaz bağlantısı ve günlük 8.000 mesaj kullanımı sağlar. (Free tier'dan yükseltme yapılamadığı için ileride kapasite artırmanız gerekirse IoT Hub'ınızı silip yeniden oluşturmanız gerekir. Deneme amaçlı IoT Hub oluşturmuyorsanız Standard ya da Basic tier seçimi yapın.)

Review and Create sekmesinde seçimlerinizi doğrulayın ve IoT Hub'ınızı oluşturun. Kurulum birkaç dakika sürecektir.

Cihaz Kaydı

İletişim kuracağınız cihaz bir IoT donanımı, Raspberry Pi ya da bilgisayar olabilir. Hangi yolla gönderirseniz gönderin, cihaz kaydı yapıp connection string'i almanız gerekir.

Cihazlarınızı 2 yolla kaydedebilirsiniz; Azure Portal üzerinden ya da Azure CLI ile.

Azure Portal ile Cihaz Kaydı

IoT Hub'ınıza gidin ve sol menüden Explorers > IoT Devices penceresini açın. Üst menüdeki "+New" butonu ile cihaz ekleyin ve Device ID'ye bir isim girin.

Oluşturduğunuz cihazı listede göreceksiniz. Cihazın listede görünmesi birkaç saniye alabilir.

Cihazınızın adına tıklayarak detaylarına girin. Primary connection string'i kopyalayın.

Azure CLI ile Cihaz Kaydı

Alternatif olarak cihazınızı CLI ile de kaydedebilirsiniz. İlk olarak cihaz kaydını yapın. (YourIoTHubName ve MyPythonDevice isimlerini değiştirin.)

az iot hub device-identity create --hub-name YourIoTHubName --device-id MyPythonDevice

Cihazdan Azure IoT Hub'a bağlantı için kullanacağınız connection string'i öğrenin. (Önceki aşamada olduğu gibi YourIoTHubName ve MyPythonDevice isimlerini değiştirin.)

az iot hub device-identity show-connection-string --hub-name YourIoTHubName --device-id MyPythonDevice --output table

Connection string'i not edin.

Veri Göndermek

Cihazdan IoT Hub'a gönderilen veriler telemetry olarak adlandırılıyor. Bu adımda rastgele sıcaklık ve nem bilgisi oluşturarak "simulated telemetry" bilgisi göndereceğiz.

Örnek uygulamayı GitHub deposundan indirin: https://github.com/Azure-Samples/azure-iot-samples-python/archive/master.zip

"iot-hub\Quickstarts\simulated-device" klasöründeki "SimulatedDevice.py" dosyasını VSCode ile açın.

"CONNECTION_STRING" Değerini yukarıda oluşturduğunuz cihazın connection string değeriyle değiştirin.

Terminale aşağıdaki kodu yazarak uygulamayı çalıştırın.

python3 SimulatedDevice.py

Sending message ile başlayan satırları görüyorsanız, uygulamanız başarıyla veri gönderiyor demektir. (Uygulamayı sonlandırmak için CTRL + C'ye basabilirsiniz.)

Sertifika Hatası ve Çözümü

Veri gönderirken sertifika hatası alıyorsanız, aşağıdaki iki komutu terminalde çalıştırıp yeniden deneyebilirsiniz.

pip3 install --upgrade certifi
open /Applications/Python\ 3.8/Install\ Certificates.command

IoT Hub'dan Veri Okumak

IoT Hub CLI'i events endpoint'ine bağlanarak IoT Hub'a ulaşan mesajları okuyabilir. Bu komutu geliştirme sürecinde işinizi kolaylaştırmak için kullanabilirsiniz.

Azure Cloud Shell'e (shell.azure.com) aşağıdaki komutu yazarak gelen verileri görebilirsiniz. (YourIoTHubName ve MyPythonDevice isimlerini değiştirin.)

az iot hub monitor-events --hub-name YourIoTHubName --device-id MyPythonDevice

Kaynakları Temizlemek

Denemeleriniz tamamlandığında, oluşturduğunuz servisleri silebilirsiniz. Veri göndermesenizde Azure IoT Hub'ın (free tier dışında) maliyet oluşturduğunu unutmayın.