IoT Veri Protokolleri

IoT ekosisteminde ele alınması gereken konulardan bir diğeri de veri dağıtımı protokolleridir. Bu makalede ele aldığımız kablosuz ağ protokolleri verinin iletildiği yollar veya kanallardır. Burada ise veri dağıtılırken hangi şekilde paketlenir bunlardan bahsedeceğiz.

Aradaki farkı en iyi şekilde anlamak için şöyle bir benzetme yapabiliriz. Bir kargo şirketinde ürünlerin dağıtımı için kullanılan kara veya hava yolları kablosuz ağ protokollerini temsil ederken, kargo aracı ise veri dağıtım protokollerini temsil eder.

Veri dağıtım protokollerinin en çok kullanılanları şunlardır:

  • MQTT
  • CoAP
  • AMQP

Şimdi bunlar hakkında kısaca bilgi verelim.

MQTT

Machine to Machine (M2M) kavramı, Industrial Internet of Things (IIoT) kavramı içinde gelişen önemli bir bileşendir. M2M, veri ve bilgi alışverişinde makinelerin birbirleriyle nasıl konuştuğu üzerine odaklanır. Diğer bir deyişle, M2M teriminde, insan eylemleri olmaksızın gerçek zamanlı veri alışverişini sağlayan tüm teknolojilere ve kablosuz ağlara atıfta bulunuyoruz. Makineler bu yöntem ile kendi başına diğer makinelere veri aktarımı yapabilir. Bundan dolayı M2M’de aşağıda verilen uygulamalar geliştirilebilir.

  • Telemetri (bir sistemin uzaktan kablolu ya da kablosuz izlenmesi)
  • Gerçek zamanlı hata bildirimi
  • Uzaktan makine durumunu denetleme
  • Gerçek zamanlı veri toplama

Yukarıdaki işlemleri gerçekleştirmek için MQTT protokolü kullanılır. MQTT ile IoT uygulamaları geliştirebiliriz. Bu protokolün çalışma mantığını bilmek bundan dolayı çok önemlidir. Şimdi bu protokol hakkında bilgi verelim.

Message Queue Telemetry Transport (MQTT), 1999 yılından mesaj tabanlı geliştirilen bir protokoldür. IoT’de, M2M yani makineler arasında veri alışverişi için kullanılan en yaygın protokoldür. Bu protokolün kullanımı ve uygulanması çok kolaydır. Özellikle ağ bant genişliği kısıtlamaları olan durumlarda bu protokolden faydalanabiliriz. Bu satırları yazarken MQTT’nin son sürümü 3.1.1’di. Birçok IoT bulut platformu bu protokolü benimsemiştir.

MQTT’de ağın güvenli olmadığı veya zayıf olduğu durumlarda mesajın ana hedefe ulaştırılması tek hedef olarak icra edilir. MQTT’de de HTTPS’de olduğu gibi hem SSL hem de kimlik doğrulama mekanizmaları vardır.

MQTT’nin önemli rol oynadığı birkaç yaygın kullanım örneği aşağıdaki gibidir.

  • Telemetri
  • Bildirim Sistemleri
  • Akıllı Evler

MQTT, mesaj tabanlı bir protokoldür. Diğer bir deyişle veri alışverişi sürecine katılan makineler mesaj gönderip alabilirler. Ayrıca publisher/subscriber (yayın/abone) modelini temel alarak çalışır. Yayıncı/Abone modelini anlamak için aşağıdaki resmi inceleyiniz.

Yukarıdaki şemada görüleceği üzere MQTT’de mesajın iletimi sürecinde üç ana bileşen bulunmaktadır.

Publisher (Yayıncı)
Bu bileşen sistemde bulunan ve mesaj üreten bir cihazı temsil etmektedir. Diğer bir deyişle bilginin kaynağıdır.

MQTT Broker
Yayıncının hizmet verdiği abonelere mesajın gönderilmesini sağlar. Burada gönderilen mesajlar bir dizi halinde abonelere iletilir.

Subscriber
Yayıncıdan mesaj almak isteyen istemcileri temsil etmektedir. MQTT’nin yayıncıdan aldığı mesajlar buraya iletilir. Burada da elektronik cihaz bulunmaktadır.

MQTT’nin çalıştığı bir sistemde çok sayıda yayıncı ve abone bulunabilir.

Yayıncıdan gelen mesajı alacak olan aboneleri filtrelemek için MQTT bir konu(topic) kullanmaktadır. Bu konu yayıncı ve istemci arasındaki bir kanalı temsil etmektedir. Burada kullanılan konu bilgisi UTF-8 dizgesi olarak temsil edilir.

Şimdi de yayıncı ve abone arasındaki mesaj alışverişinin nasıl olduğunu inceleyelim. Öncelikle aşağıdaki resmi inceleyiniz.

Şekilde incelediğimizde önemli olan adımların şunlar olduğu görülür.

  • Öncelikle istemci veya abone mesaj almak istediğini MQTT’ye bildirir.
  • Yayıncı konuyla ilgili bir mesaj yayınlar.
  • MQTT yayıncıdan gelen mesajı alıp ilgili istemciye gönderir.

MQTT’yi kullanarak bu şekilde mesaj göndermenin en önemli faydası yayıncı, aboneye bir mesaj gönderdiği zaman o sırada abonenin bağlı olması veya aktif olması zorunlu değildir. Bu gibi durumlarda mesaj bloke edilmez. Bağlantı sağlandığı anda mesaj hemen iletilir.

MQTT kullanılan bir IoT sistemi aşağıdaki gibi olabilir.

CoAP

CoAP, bir belge transfer protokolüdür. Bu yönüyle HTTP protokolüne benzer. Ayrıca özel bir web transfer protokolü olarak da ifade edilmektedir. Ancak HTTP’den farklı olarak CoAP, IoT’de bulunan kısıtlı ağlar ve cihazlar için geliştirilmiştir. Akıllı enerji ve bina otomasyonu gibi M2M uygulamaları için bu protokolü özellikle kullanmanızı tavsiye ediyoruz. Çünkü temel geliştirilme sebebi budur.

CoAP protokolü, sadece UDP üzerinde çalışmaktadır. Yani TCP üzerinde bu protokol çalışmamaktadır. CoAP protokolü, IoT üzerinde bulunan node’lar ile çalışmak için 10KB’a kadar düşük RAM ve 100KB’lık kod alanına sahip mikrodenetleyiciler ile çalışacak şekilde tasarlandı.

IoT için en büyük problemlerden biri olan güvenlik problemini de çözmeye çalışan bu protokol oldukça güvenlidir. Ayrıca XML ve JSON gibi verilerle uyumlu olarak çalışabilmektedir. HTTP’ye benzediği için server/client modelini takip etmektedir. Yani GET, PUT, POST ve DELETE gibi metotlar ile istemciler sunucudan istekte bulunabilir. Son olarak datagram tabanlı olduğu için SMS ve diğer paket tabanlı iletişim protokolleri üzerinde kullanılabilir.

AMQP

AMQP, bir uygulama katmanı protokolüdür. Çok sayıda mesajın iletimini sağlamak ve iletişimi doğrulamak için tasarlanmıştır. Mesajın iletimini garantilemek için akış kontrollü ve mesaj odaklı bir iletişim sağlar. Bu protokolü kullanmanın iki önemli sebebi güvenirlik ve birlikte çalışabilirliktir.

AMQP, mesaj iletimi için aşağıdaki özelliklere sahiptir;

  • Mesajlaşma tipi ile ilgili geniş imkanlara sahip olması.
  • Güvenirlik.
  • Konu tabanlı yayın ve abone mesajlaşma.
  • Esnek yönlendirme.

Bu protokol birçok firma tarafından kullanılmaktadır. Bunlardan en önemlileri şunlardır:

  • JP Morgan, günde bir milyar mesajı işleme koymak için bunu kullanmaktadır.
  • NASA Nebula Cloud Computing için bu protokolü kullanmaktadır.
  • Google firması karmaşık olayları işlemek için bu protokolden faydalanıyor.

Bu protokoller dışında aşağıdaki protokolleri de kullanabilirsiniz.

  • HTTP
  • REST
  • XMPP
  • STOMP

Genel olarak bilmeniz gerekenler ve size aktaracaklarım bu kadar. Şimdilik hoşça kalın.

Kaynak : IoT-Ignite ile Uçtan Uca Programlama Kitabım

**Bana en büyük desteğiniz yazılarıma yorum yapmanız ve paylaşmanızdır.