Python ile Azure IoT Hub'a Mesaj Göndermek

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.
- Azure hesabı
- VSCode
- Python 3
- Windows, Linux ya da MacOS işletim sistemi
- Azure CLI (Command Line Interface)
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.