Python ile MQTT Subscriber uygulaması geliştirerek IoT cihazlarınızı kolayca yönetebilirsiniz Bu yazıda adım adım nasıl yapabileceğinizi öğreneceksiniz Hemen inceleyin ve uygulamaya başlayın!

Bu makalede, Python kullanarak MQTT abone uygulaması geliştirmek için gerekli olan tüm adımlar ele alınacaktır. IoT cihazları arasında veri alışverişi yapmak için MQTT mesajlaşma protokolü sıklıkla kullanılır. Bu nedenle, bu makalede, Mosquitto MQTT broker kullanarak Python ile MQTT abone uygulaması geliştirmeyi öğreneceksiniz.
MQTT abonelik süreci, mesaj yayınlayan cihazların belirli bir konuya yayın yapması ve herhangi bir cihazın bu konuyu dinleyebilmesi sürecidir. Bu abonelikleri gerçekleştirmek için bir MQTT brokerına ihtiyacımız var. Bu makalede, Mosquitto broker kullanarak abonelik sürecini gerçekleştireceğiz. Ayrıca, bu makalede Python kullanarak abonelik kurmak için gerekli adımlar açıklanacaktır.
MQTT Nedir?
MQTT, IoT cihazları arasında veri alışverişi yapmak için kullanılan bir mesajlaşma protokolüdür. Bu protokol hafif, hızlı ve güvenlidir. Diğer mesajlaşma protokolleri gibi, MQTT de bir yayın - abonelik modeli kullanır. Yani bir cihaz yayınladığı verileri belirli bir konuya gönderir ve diğer cihazlar da bu konuya abone olarak bu verilere erişebilirler.
MQTT protokolüne en çok ihtiyaç duyulan yer ise, akıllı ev sistemleri ve endüstriyel otomasyon sistemleri gibi IoT cihazlarının birbiriyle haberleşmesi gerektiği yerlerdir. Büyük veri transferleri için özel olarak tasarlanmadığı için cihazdaki işlemci ve hafıza tüketiminin minimize edilmesinde oldukça faydalıdır. Bu sayede, veri alışverişi daha hızlı ve stabil bir şekilde gerçekleşir.
Abonelik Süreci
MQTT abonelik süreci, IoT cihazları arasında mesajlaşma için kullanılan bir protokoldür. Bu süreçte bir mesaj belirli bir konuya (topic) yayınlanır ve herhangi bir cihaz da bu konuyu dinleyebilir. Bu sayede bir cihazın istediği konulardaki mesajları alması ve diğer cihazların yayınladığı mesajlara kayıt olması mümkün hale gelir.
MQTT abonelik süreci, IoT cihazları arasında veri alışverişi yapmanın yanı sıra, birçok farklı alanda kullanılmaktadır. Bu alar arasında endüstriyel otomasyon, ev otomasyonu, çiftlik yönetimi, hava durumu ölçümleri, trafik kontrolü, su yönetimi ve daha birçok alanda yer almaktadır. Veri güncellemeleri anlık olarak gerçekleşir ve herhangi bir cihaz veri yayınladığında tüm aboneler hemen güncellenir.
Broker Kurulumu
MQTT sistemi kullanımı esnasında, veri alışverişi yapılan cihazların birbirleri arasında iletişiminin sağlanması gerekiyor. Bu iletişimi sağlamak için, birçok cihazı dinleyen ve gelen mesajları cihazlara dağıtan bir aracıya ihtiyaç duyuluyor. Bu aracıya ise broker adı veriliyor.
Bu makalede, Python kullanılarak MQTT abone uygulaması geliştirmek için Mosquitto MQTT broker kullanacağız. Mosquitto çok hafif bir broker olduğundan tercih edilir ve kullanımı oldukça kolaydır. Kurulumu özellikle Raspberry Pi gibi küçük cihazlar üzerinde oldukça uygun olup kolaylıkla kullanılabilir.
Mosquitto Broker Kurulumu
Mosquitto MQTT broker, MQTT mesajlaşma protokolü kullanılırken yerleştirilmesi gereken bir broker'dır. Mosquitto, hem Linux hem de Windows işletim sistemlerinde kullanılabilir ve açık kaynaklı bir projedir. Bu bölümde, Mosquitto broker'ın kurulum adımları ele alınacaktır.
Öncelikle, Mosquitto broker'ın kurulması için Linux veya Windows işletim sistemi gereklidir. Broker'ın kurulumu için, resmi Mosquitto web sitesinden son sürümü indirmeniz gerekir. Linux için, paket yönetim sistemini kullanarak da kurulum yapılabilir. Windows için indirilen dosya çalıştırılarak kurulum gerçekleştirilebilir.
Broker başarıyla kurulduktan sonra, broker hizmeti çalıştırılmalıdır. Linux'ta aşağıdaki komut satırı kullanılabilir:
Komut Satırı | Açıklama |
---|---|
sudo systemctl enable mosquitto.service | Mosquitto servisinin başlangıçta otomatik olarak çalışması için |
sudo systemctl start mosquitto.service | Mosquitto servisini başlatmak için |
sudo systemctl stop mosquitto.service | Mosquitto servisini durdurmak için |
Windows işletim sistemlerinde, Mosquitto broker kurulduktan sonra, Windows hizmetleri aracılığıyla broker servisi başlatılabilir.
Broker kurulumu bittikten sonra, broker adresi ve port numarası aboneler tarafından kullanılabilir hale gelir. Aboneler, broker adresi ve port numarasını kullanarak broker'a bağlanabilir ve ihtiyaçlarına göre konu abonelikleri kurabilirler.
Mosquitto Broker Yapılandırması
Mosquitto broker, MQTT mesajlaşma protokolünü kullanırken kullanıcılar arasında veri alışverişi yapmak için yerleştirilen bir programdır. Mosquitto broker yapılandırması, MQTT abone uygulamasını çalıştırmak için gereklidir. Bu makalede, Mosquitto broker yapılandırması için gereken ayarların nasıl yapılacağına dair bilgilere yer verilecektir.
Mosquitto broker yapılandırması için öncelikle aşağıdaki ayarların konfigüre edilmesi gereklidir:
- Port numarası
- Kullanıcı adı şifreleri
- sudo ile çalıştırıldığında broker'ın bazı konfigürasyon dosyaları için kök izinleri,
- dosya izinleri
Mosquitto broker yapılandırmasında bir başka önemli adım ise, güvenlik ile ilgilidir. Konfigürasyon dosyalarınızı şifrelemek, sistemde tutulan şifre verileri için kullanılan protokollerin güvenliğinden emin olmak, broker'ınıza erişim yetkisi olan tüm kullanıcıların güvenilir olduğundan emin olmak için, güvenlik kritik bir konudur.
Yapılandırma adımları tamamlandıktan sonra, Mosquitto broker'ı başlatmak için aşağıdaki adımları takip edebilirsiniz:
- Broker'ın ana dizininde bulunan terminalde, broker'ı başlatmak için aşağıdaki komutu girin:
sudo mosquitto -c /etc/mosquitto/mosquitto.conf
- Broker'ın çalıştığını doğrulamak için aşağıdaki komutu girin:
sudo service mosquitto status
Mosquitto broker yapılandırması, MQTT abone uygulaması geliştirme sürecinde oldukça önemlidir. Bu adımlar doğru şekilde atıldığı zaman, broker sorunsuz bir şekilde çalışacaktır ve MQTT veri alışverişinde sorun yaşamayacaksınız.
Python ile MQTT Aboneliği Kurma
MQTT aboneliğini Python ile kurmak oldukça basittir. Bu kurulum, PyMQTT Python kütüphanesi kullanılarak yapılacaktır. İlk olarak, PyMQTT Python kütüphanesi kurulmalıdır.
PyMQTT kütüphanesini yüklemek için pip kullanılır. Aşağıdaki komutu terminalde çalıştırarak kütüphaneyi yükleyebilirsiniz:
pip install paho-mqtt |
Sonrasında, Python kodu yazarak abonelik işlemini gerçekleştirmek mümkün olacaktır. PyMQTT kütüphanesi, MQTT broker'ına bağlanmak ve belirli bir konu için abonelik sağlamak için iki önemli sınıf sunmaktadır. Bu sınıflar şunlardır:
- mqtt.Client
- mqtt.MQTTv311
İlk sınıf, MQTT mesajları ile etkileşim sağlamak ve broker'a bağlanmak için gereken tüm işlevleri sağlar. İkinci sınıf, MQTT sürüm 3.1.1 protokolüne göre bir istemci oluşturmak için gereken işlevleri sağlar.
Ayrıca, belirli bir konuda bir mesaj yayınlamak için de mqtt.Client sınıfı kullanılır. Bu işlem, mqtt.Client sınıfının publish() yöntemi kullanılarak gerçekleştirilir. MQTT mesaj yayınlama ile ilgili örnekler daha sonra ele alınacaktır.
MQTT Aboneliği Kodlama
MQTT aboneliği için Python kodlama yoluyla gerçekleştirilmesi oldukça kolaydır. Bu işlem için ilk olarak paho-mqtt kütüphanesi kullanılmalıdır. Bu kütüphane, MQTT iletişim sürecinde kullanılabilecek birçok aracı içermektedir.
MQTT abonelik kodlaması için ilk olarak, paho-mqtt kütüphanesinin yüklenmesi gerekmektedir. Bunun için aşağıdaki komut kullanılabilir:
pip install paho-mqtt
Ardından, bir Python dosyası oluşturulmalı ve MQTT abonelik işlemi için gerekli import komutları bu dosyaya eklenmelidir. Örneğin:
import paho.mqtt.client as mqttimport time
Daha sonra, MQTT aboneliği için özel bir callback fonksiyonu oluşturulmalıdır. Bu callback fonksiyonu, herhangi bir mesaj geldiğinde otomatik olarak çalışacaktır. Örneğin:
def on_message(client, userdata, message): print(message.payload.decode())
Bu fonksiyonda, "client" anahtar kelimesi ile MQTT istemcisine erişilebilir. "userdata", kullanıcının MQTT istemcisinde tanımlayabileceği herhangi bir veri olabilir. "message" ise abone olduğumuz MQTT konusunda yayınlanan herhangi bir mesajı temsil etmektedir.
Son olarak, MQTT istemcisi oluşturulmalı ve broker ile bağlantı kurulmalıdır. Bu adımlar, aşağıdaki kod ile gerçekleştirilebilir:
client = mqtt.Client()client.on_message = on_messageclient.connect("broker adresi", 1883)client.subscribe("konu adı")client.loop_forever()
Bu kodda, ilk olarak MQTT istemcisi oluşturulmuş ve "on_message" fonksiyonuna bağlanmıştır. Daha sonra, istemci broker'a bağlanmak için "connect" komutu kullanılmıştır. "subscribe" komutu ile de abone olunacak MQTT konusu belirtilmiştir. Son olarak "loop_forever" komutu ile program sonsuz döngüye sokulmuş ve bu sayede herhangi bir mesaj gelme ihtimaline karşı hazır kılınmıştır.
Bu adımları takip ederek, Python kodlama yoluyla MQTT aboneliği rahatlıkla gerçekleştirilebilir.
MQTT Konu Yapılandırması
MQTT ile abonelik sürecinde kullanılan konu yapılandırması son derece önemlidir. Bu bölümde MQTT konu yapısını anlamak için örnekler verilecektir. Konu yapısında yaygın olarak kullanılan iki özel karakter vardır: "+" ve "#".
Konu Yapısı | Açıklama |
---|---|
example/topic | Konu adı "example/topic" olacak. |
example/+/sensor | "example" ile başlayan ve sonunda "sensor" olan bütün konuların alınmasını sağlar. "+" sembolü, bir işaret dizisi içerisinde yer alabilen tek bir seviyeyi belirtir. |
example/# | "example" ile başlayan bütün konuların alınmasını sağlar. "#", bir işaret dizisi içerisinde yer alabilen sınırsız seviyeyi belirtir. |
Bir örnek olarak, "example/sensor/temperature" konusunu ele alalım. Bu konu "example" ile başlar ve "sensor" adında bir ara seviye içermektedir. Son seviyede ise "temperature" adında bir düğüm yer alır. "+" sembolü, ara seviyeleri belirtmek için kullanılabildiği için "example/+/temperature" aboneliği, "example/sensor/temperature" mesajlarının yanı sıra "example/other/temperature" gibi diğer mesajları da alabilir.
Buna karşılık, "#" işareti ile yapılandırılan bir konu, "example/#" gibi, anlık olarak bütün konuları dinlemek için kullanılabilir. Bu filtrelemeyle "example/sensor/temperature" yanı sıra "example/sensor/pressure" gibi başka konular da dinlenebilir.
MQTT konu yapısı, IoT dünyasında veri paylaşımı için önemli bir bileşendir ve konuları doğru şekilde yapılandırmak, verilerin doğru şekilde işlenmesine imkan tanır.
Sonuç
Bu makalede Python kullanarak MQTT abone uygulaması geliştirme adımları ele alınmış ve her adımın gerekliliği açıklanmıştır. MQTT nedir ve abonelik süreci nedir gibi konular ele alınarak konunun genel bir anlayışı oluşturulmuştur.
Ayrıca, Mosquitto MQTT broker kurulumu ve yapılandırılması gibi adımlar detaylı bir şekilde açıklanmıştır. MQTT aboneliği için Python kodlama yapmak için gerekli adımlar ve MQTT konu yapısının örnekleri de sunulmuştur. Bu sayede, bu konuda az bilgi sahibi olan okuyucular bile adım adım uygulama geliştirme sürecine hakim olabilecektir.
Tüm adımların detaylı bir şekilde anlatılması, okuyucuların sorun yaşamasını azaltacak ve hızlıca MQTT abone uygulaması geliştirebilecekleri bir kaynak sağlayacaktır. Kendi uygulamalarında kullanmak isteyenlerin ihtiyaç duydukları tüm bilgiler bu makalede açıklanmıştır.