Azure IoT Hub Servisi nesnelerin internetine ait olan aygıtların tamamına servis vermek, güvenli bir şekilde çift yönlü iletişim kurmasına aracılık etmek, cihazların kararlı bir şekilde bağlantı kurmalarını sağlamak, uçtan uca tüm cihazların yönetimini ve takibi sağlamak üzere geliştirilmiş bir Microsoft Azure tabanlı bir servisdir.
Azure IoT Hub Ne Sağlar;
Uçtan uca cihazlar ile bulutun, bulut ile cihazların tek yönlü iletişim kurması, dosya transferi, istek ve cevap servislerine aracılık eder
Dahili olarak diğer Azure servislerine bildirim mesajlarını yönlendirir
Cihazlar arası çift yönlü güvenli iletişime, cihazların güvenli erişimine, güvenlik anahtarı veya sertifikalar ile aracılık eder
Cihaz bilgilerinin detaylarına ve ilgili cihazların takibine aracılık eder
Popüler IoT cihazlarına birçok programlama dilinde ve platformunda yazılım kütüphanelerini barındırır
Cihazların “metadata” larını ve durum bilgilerini istek tabanlı çağrıldığında iletebilmek için saklar
Azure IoT Hub Referans Mimarisi ve cihazların bağlanmak için kullandığı protokollere ait detayları özetleyen resim aşağıdaki gibidir.
Resimde görmüş olduğunuz protokoller, MQTT,HTTPS,AMQP protokolleri uç cihazların yerel ve bulut bağlantıları için kullanılması gereken protokollerdir.
IoT mimarisinde, platform içerisindeki cihaz bilgisi, raporlama, izleme, cihaz girdi ve çıktılarına ait tüm veriler bu protokoller vasıtası ile aktarılır. IP tabanlı iletişim, IP protokolleri ile yapılacak olan uygulamalar ve yönetim araçları için kullanılabilirler. IoT platformu temelinde protokol tabanlı iletişimde MQTT ve türev protokoller güvenlik, eşsiz iletişim gibi isteklerden ötürü aktif olarak kullanılacaktır.
IoT Tabanlı cihazların bağlantılarında yaşanabilecek olası zorluklar bir önceki Azure ve Nesnelerin interneti bölümünde özetlenmiştir.
Neden IoT Azure Hub Kullanmalıyım?
Neden IoT Azure Hub ürününü kullanmalıyım? sorusunun cevabı altında onlarca sebep var, en temel sebeplerden bir tanesi, çok farklı tipte ve farklı markalara ait olan milyarca donanımı, sunucu – istemci, istemci- sunucu, istemci-istemci gibi iletişim türlerinde yıllardır bilinen birçok protokolle farklı yazılım dillerine ve kütüphanelerine sahip olan üretici ürünlerinden ötürü kullanmak olabilir mesela J
Tabiki de bu yorum, IoT eko sistemine ışık tutabilecek tümevarımdır.
Azure IoT Hub özelinde baktığımızda, cihazdan buluta, bulutan cihaza iletişimde dahili mesaj, dosya transferi ve sorgu cevap mekanizmasını barındıran zengin bir iletişim setine sahiptir.
Bu iletişim setlerinin temellerini aşağıdaki gibi özetleyebiliriz.
“Device twins”, cihaz kopyalama gibi bir anlamıda vardır, cihazların tuttuğu veriyi, metadatasını ve durum bilgisini her cihaz için tutar, bu işlemi yaparken “JSON” kütüphanesini kullanır, bu sayede cihazların aslında yakınındaki bir cihazın ikiziymiş gibi davrandırtarak, topoloji bilgisini almayıda en kısa yoldan sağlamak için kullanılan önemli bir etiket mekanizmasıdır, bu bilgilerin tamamı bu metodla birlikte IoT Hub’a bağlanır.
“Device twins” cihazlara ait birçok kimlik bilgisi, etiket bilgisi gibi eşsiz verilerede eşlik eder, aşağıdaki görsel genel bilgisini aktarır.
“Per device authentication and secure connectivity” Her cihaz için kişisel olarak bir güvenlik anahtarı oluşturabilirsiniz. Her bir cihaz için ayrı bir kimlik ve tanım bilgisi tutulur, bu bilgi aynı “windows registry” benzer bir yapıda saklanır ve formatıda benzerdir. Bu cihazlara kimlik bilgilerine bağlı olarak, backend bağlantılarına izin verebilirsiniz veya yasaklayabilirsiniz, kontrol altında tutmak mümkündür.
“Route device to cloud messages to Azure service based on declarative rules” IoT Hub rota tabanlı olarak yönlendirme kuralları cihazdan buluta kontrol altında tutabilir veya yönlendirebilir. Yönlendirme kuralları herhangi bir değiştirilebilir kod veya benzeri etiket bilgisi taşımazlar.
“Monitoring of device connectivity operastions” Cihazlara ait tüm kimlik bilgileri ve cihaz bağlantı detaylarını izleyebilirsiniz. Bu özellikle bağlantı düzenli olarak bağlı olan cihazların, bağlantı sıklığı, yolladığı mesajlar, yanlış bilgiler ile Azure IoT Hub’a bağlanmayı deneyip denemediği gibi detayları sağlar.
“An extensive set of device libraries” işletim sistemi ve donanıma bağlı olarak gerekli kaynak dil kütüpühaneleri detaylarına sahip hazır veri tabanlarını barındırır. Hangi yazılım dili ile dil kütüphanesine bağlı olarak örneğin Java dilinde yazılmış, kütüphane ve kullanılan donanım/donanımlar varmıdır diye kontrol etmek isterseniz, https://catalog.azureiotsuite.com/ bu adresten kontrolünü sağlayabilirsiniz. Kendi platformunuzu tasarlayabilmeniz için önemli bir ayrıntıdır.
“IoT protocols and extensibility” IoT bağlantı ve iletişim protokollerinin sınırları MQTT,AMQP ve HTTP aktif edilmiş cihazlar ile sınırlandırılabilir, ancak genişletmek protokollerin sınırlarını bilmek ve Azure IoT Edge ve Azure IoT protocol gateway ara yüzleri ile detaylarıyla mümkündür. Örneğin IoT gateway protocol üzerinde detaylı log alıcaksınız ve cihazın IoT ekosisteminize bağlanması için IoT edge servis bağlantısında “MQTTS” protokolünden faydalanıyorsunuz, olası olumlu-olumsuz tabloda protokol özelinde detay alabilmeniz mümkündür. https://github.com/Azure/azure-iot-protocol-gateway/blob/master/README.md ilgili linkten “IoT Gateway protocol” hakkında detaylı bilgi alabilirsiniz.
Azure IoT Edge ekosisteminize bağlanacak olan donanımın protokol ve yazılım dil/kütüphanesi bağımsız aşağıdaki gibi temel bir işletim diyagramı vardır.
“Scale” Azure IoT Hub eko sisteminize milyonlarca eş zamanlı cihaz ve saniyeler içerisinde milyonlarca olay günlük aktivitesi tutabilirsiniz. Bu ölçeklendirme cihaz tipine, kullanılan protokollere, cihaz işletim sistemlerine, cihazların kullandığı yazılım diline ve dil kütüphanelerine bağlı olarak değişkenlik göstermektedir. Bu değişkenlere bağlı olarak IoT çatısını taslak çalışmalarda ele alabilirsiniz.
Azure IoT Hub Nasıl Çalışır?
Azure IoT HUB kurulurken servis tabanlı ve etiket tabanlı bir iletişim kurgusu vardır. Güvenilir, kontrol sistemleri ile çift taraflı iletişim halinde olan bir çalışma modeline sahiptir.
– Tüm sistem tasarımında birincil amaç güvenlik tedbiridir.
– Düzenli olarak ağ üzerindeki cihazları komut tabanlı kontrol eder, istenmeyen cihazların IoT Hub ağ geçidine bağlanmasına izin vermezler.
– Cihazlar yalnızca bilinen servisler bağlanırlar IoT Hub servisi gibi.
– Sistem üzerinde cihaz bağlantı yetkileri ve erişimleri cihaz kimliği tabanlı yapılır. İzinler ve erişim bilgileri geri alınabilir düzeyde çalışırlar.
– Cihazlar bağlantı veya güç tabanlı olarak, IoT Hub’a bağlantı isteklerinde bir süre bağlı kalıp daha sonra bi çeşit uyku moduna girdiyse, komut tabanlı kontrol edilir, cihaz bağlantısı cihazın kalıcı eirşimi ile birlikte oturumu yeniden aktif edilir.
– Uygulamalar içerisindeki veri güvenliği ayrı ayrı katmanlarda, ayrı oturumlarla sağlanır.
– Mobil tabanlı cihazlarda mesaj bilgilendirme özelliği sayesinde, iletişim ölçeğini mobil üretici bağımsız sağlamak mümkündür.
Mobil cihazlar “push notification” özelliği sayesinde aşağıdaki resimdeki sıralama ile kendilerini Azure IoT Hub’a kaydettirebilirler.
Post API ile kendisini kaydettirir. Push notification özelliği ile birlikte mobil taraftaki birçok cihaza ait yönetimi gerçekletirmek ve IoT Suite servisinin büyük bir parçası haline getirmek mümkündür.
Bu servis özellikleri sayesinde, bağlanan cihazların, ne kadar batarya süreleri kaldığından, çalışan uygulamaların tükettiği fiziksel kaynaklara kadar birçok bilgiyi IoT Hub’a göndermesi ve yorumlanması mümkündür.
Temel çalışma modelleri ile Azure IoT Hub bu şekildedir. Azure IoT Hub, IoT eko sistemi içerisinde ciddi bir konuma sahip olmak için yeterli detaylara sahip olduğu gibi, bu platformdaki yazılım dili ve kütüphaneleri konusunda en geniş yelpazaye sahip üretici ürünlerinin başında gelmektedir.
Keyifli okumalar…