MQTT Broker Kurulumu ve Python Bağlantısı, IoT cihazları arasında veri iletişimini sağlayan bir protokolü öğrenmek isteyenler için ideal bir çözümdür Bu makalede, nasıl bir MQTT broker kurulacağı ve Python programlama dili kullanılarak nasıl MQTT broker'a bağlanılacağı adım adım anlatılmaktadır Hem yeni başlayanlar hem de deneyimli Python geliştiricileri için faydalı bir kaynaktır

Merhaba arkadaşlar, bu makalede sizlere MQTT broker kurulumu ve Python'da nasıl bu broker üzerinden veri gönderip alabileceğinizi öğreteceğiz.
Öncelikle, MQTT nedir diye başlayalım. IoT cihazları arasındaki veri alışverişi için kullanılan açık kaynaklı bir mesajlaşma protokolüdür. MQTT, basitlik ve hızlı performansı ile cihazlar arasındaki veri iletiminde tercih edilen bir protokoldür.
Şimdi Mosquitto broker kurulumuna geçelim. Raspberry Pi üzerinde Mosquitto broker kurmayı öğreneceğiz ve ayarlara nasıl erişeceğimizi öğreneceğiz. Öncelikle, Mosquitto brokerın Raspberry Pi'ya nasıl kurulacağını öğrenin. Ardından, broker'ın ağda çalışmasını sağlamak için nasıl yapılandırılacağını öğrenin. Bu ayarlar, broker'a bağlanan cihazlar arasında veri iletimi yapmanıza olanak tanır.
- Mosquitto broker kurulumu
- Ağ ayarları
- Cihaz bağlantısı
- Publish / Subscribe
Kurulum tamamlandıktan sonra, Python kodları kullanarak veri gönderip alabilirsiniz. Paho MQTT kütüphanesi ile Python'da nasıl MQTT kullanabileceğinizi öğreneceksiniz. İlk olarak, Python'da Paho MQTT kütüphanesinin nasıl yükleneceğini ve kullanılacağını öğreniyoruz. Bundan sonra, örnek bir uygulama oluşturarak, Mosquitto broker ile bir IoT projesi yapacağız ve Python ile broker'a nasıl bağlanabileceğimizi öğreneceğiz.
MQTT protokolü kullanarak cihazlar arasında veri iletimi, IoT projeleri için vazgeçilmez bir işlemdir. Bu makalede bulunan bilgiler sayesinde, siz de MQTT broker kurulumu ve Python'da veri iletimi hakkında bilgi sahibi olabilirsiniz. Umarız bu bilgiler sizin için faydalı olur!
MQTT Nedir?
MQTT (Message Queue Telemetry Transport), IoT cihazları arasında veri alışverişi için kullanılan açık kaynaklı bir mesajlaşma protokolüdür. Bu protokol, güç tüketimi düşük, küçük boyutlu cihazlar için idealdir ve ağ bağlantısı olmadan da çalışabilir.
MQTT'ye göre cihazlar arasındaki veri alışverişi bir broker üzerinden gerçekleştirilir. Bu sayede çok sayıda cihazın ve uygulamanın birbiriyle bağlantı kurmasına ve veri alışverişi yapmasına olanak sağlanır. MQTT protokolünü kullanarak veri toplama, depolama ve analiz etmek mümkündür. Ayrıca, cihazların durumları veya ölçümleri hakkında gerçek zamanlı bilgi alınabilir.
Broker Kurulumu
Bu makalenin ilgili bölümünde, Raspberry Pi üzerinde Mosquitto broker kurulumu ve ayarları öğrenilecektir. Mosquitto broker, IoT cihazları arasında veri alışverişi yapmak için kullanılan açık kaynaklı bir mesajlaşma protokolüdür. Raspberry Pi cihazına broker yazılımını kurmak için aşağıdaki adımlar izlenmelidir:
Mosquitto broker Raspberry Pi'ya kolayca kurulabilir. İlk önce cihazınızın güncel olup olmadığını kontrol edin. Güncelleme işlemini gerçekleştirmek için aşağıdaki kodu terminale yazın:
sudo apt-get update |
Daha sonra Mosquitto broker'ın kurulumunu gerçekleştirmek için aşağıdaki kodu terminale yazın:
sudo apt-get install mosquitto |
Ardından, Mosquitto broker servisini başlatmak için aşağıdaki kodu terminale yazın:
sudo systemctl start mosquitto |
Broker servisini her açılışta başlatmak için aşağıdaki kodu terminale yazın:
sudo systemctl enable mosquitto |
Bu adımda broker'ın ağda çalışması için yapılandırma ayarlarının yapılması gerekmektedir. Başlangıçta, broker'ın ağa bağlanabildiğinden emin olmak için aşağıdaki kodu terminale yazın:
sudo systemctl status mosquitto |
Broker servisinin çalıştığını gösteren ekranda, IP adresi görülebilecektir. Broker'ı cihazlar arasında veri göndermek için kullanmak istiyorsanız, cihazların da ağa bağlanması gerekmektedir. IP adresinden bağlanmak için kullanılacak olan cihazın terminale aşağıdaki kodu yazması gereklidir:
sudo apt-get install mosquitto-clients |
Bağlanmak için gerekli olan komut ise:
mosquitto_sub -h [Broker IP Adresi] -t "konu" |
Broker'ın çalışmaması durumunda, aşağıdaki kodu terminale yazarak servisi yeniden başlatın:
sudo systemctl restart mosquitto |
Mosquitto Broker Kurulumu
Mosquitto broker, Raspberry Pi üzerinde kullanmak için oldukça iyi bir seçenektir. Bu bölümde, bu broker'ın kurulum adımlarını ve ağ bağlantısını nasıl yapılandıracağınızı öğreneceksiniz.
İlk olarak, komut satırına gidin ve Mosquitto broker'ı Raspberry Pi'ye Kurun. Bunun için aşağıdaki komutları kullanabilirsiniz:
Komut | Açıklama |
---|---|
sudo apt-get update | Sisteminizdeki tüm paketleri güncelleyin. |
sudo apt-get install mosquitto | Mosquitto broker'ı yüklemek için bu komutu kullanın. |
sudo apt-get install mosquitto-clients | Kullanışlı bir araç takımı olarak mosquitto-clients'i yükleyin. |
Kurulum tamamlandıktan sonra broker'ın ağ bağlantısını yapılandırmanız gerekir. Bu işlem, mosquitto.conf
dosyasını düzenleyerek yapılır. Bu dosya, "/etc/mosquitto/conf.d" dizininde bulunur.
Broker kurulduktan sonra bu dosyayı açın ve aşağıdaki satırları ekleyin:
allow_anonymous false
-anonymous bağlantıları devre dışı bırakırpassword_file /etc/mosquitto/passwd
-şifre dosyası yolunu tanımlarlistener 1883
-broker'ın dinlemesi gereken port numarasıdırlistener 9001
-brokerın web arayüzü için kullanılan port numarasıdır
Yapılandırmayı tamamladıktan sonra broker'ı yeniden başlatın. Bunu yapmak için:
sudo systemctl restart mosquitto
Bu adımları tamamladıktan sonra Mosquitto broker'ınızı Raspberry Pi üzerinde başarıyla kurup, yapılandırıp çalıştırmış olacaksınız.
Kurulum Adımları
Raspberry Pi'ya Mosquitto broker kurulumu oldukça basittir. İşlemi gerçekleştirebilmek için öncelikle Raspberry Pi'nin terminaline erişmeniz gerekiyor. Ardından aşağıdaki adımları takip ederek kısa sürede broker kurulumunu gerçekleştirebilirsiniz:
- Terminali açın ve aşağıdaki komutu yazın:
sudo apt-get update
- Ardından, Mosquitto broker'ı yüklemek için şu komutları girin:
sudo apt-get install mosquitto
vesudo apt-get install mosquitto-clients
- Broker'ı başlatmak için aşağıdaki komutu yazabilirsiniz:
sudo /etc/init.d/mosquitto start
- Broker'ın başarılı bir şekilde kurulup kurulmadığını kontrol etmek için aşağıdaki komutu kullanın:
sudo systemctl status mosquitto
Bu adımları takip ettiğinizde Mosquitto broker Raspberry Pi'da başarılı bir şekilde kurulmuş olacaktır. Artık broker'a bağlanarak veri gönderip alabilirsiniz.
Ağ Ayarları
Bir MQTT broker'ı kurduktan sonra, cihazların birbirleriyle iletişim kurabilmesi için ağ ayarları yapmanız gerekmektedir. Ağ ayarlarını yapmak için, öncelikle Raspberry Pi'nin IP adresini doğru bir şekilde yapılandırmanız gerekir. Raspberry Pi'yi modeminize bağladıysanız, aynı ağda olmanız gerektiğini unutmayınız. Böylece, broker üzerinden veri iletimini sağlayabilirsiniz.
Ayrıca, Mosquitto broker'ın konfigürasyon dosyası (/etc/mosquitto/mosquitto.conf) üzerinden yapılandırma ayarlarına erişebilirsiniz. Bu ayarlar, mesajların hangi portlardan gideceği veya hangi protokollerin kullanılacağı hakkında bilgi sağlar. Örneğin, broker'ın web soketi protokolü (WebSocket) kullanarak çalışmasını istiyorsanız, aşağıdaki satırları konfigürasyon dosyasına ekleyebilirsiniz:
listener | 1883 | 127.0.0.1 |
---|---|---|
listener | 8080 | 127.0.0.1 |
protocol | websockets |
Bu ayar, broker'ın 1883 ve 8080 portlarını kullanarak gelen bağlantıları kabul edeceğini ve verilerin WebSockets protokolü üzerinden iletilmesini sağlayacağını belirtir.
Ayrıca, Mosquitto broker'ın log ayarlarını yapılandırarak hata ve uyarı mesajlarını görüntüleyebilirsiniz. Bunun için, konfigürasyon dosyasındaki aşağıdaki satırlara benzer bir şekilde ayar yapabilirsiniz:
- log_type all
- log_dest file /var/log/mosquitto/mosquitto.log
- log_dest stdout
- log_timestamp true
Bu ayarlar, broker'ın tüm log türlerini kayıt altına alacağını, kayıtları /var/log/mosquitto/mosquitto.log dosyasına işleyeceğini ve aynı zamanda stdout'a da yazdıracağını belirtir.
Broker'ın ağ ayarları, diğer cihazlarla doğru bir şekilde iletişim kurabilmesi için önemlidir. Bu ayarlar doğru bir şekilde yapılandırılmazsa, cihazlar arasındaki veri akışı kesilebilir veya hatalar oluşabilir. Bu nedenle, ağ ayarlarının doğru şekilde yapılandırılması büyük önem taşır.
Mosquitto Kullanımı
Broker üzerinde veri gönderimi ve alımı yapmak oldukça kolaydır.
İşlev | Komut |
---|---|
Broker'a bağlanma | mosquitto_sub -h {Broker_IP} -t {konu_adı} |
Broker'a veri gönderme | mosquitto_pub -h {Broker_IP} -t {konu_adı} -m {mesaj} |
Broker'a bağlanan cihazlar arasındaki veri aktarımı, publish / subscribe prensibine dayalıdır. Publish / subscribe yapısı, bir cihazın veri göndermesini ve diğer cihazların bu veriyi dinlemesini sağlar.
- Broker'a bağlanan cihazlar, önceden belirlenmiş bir konu adına (topic name) abone olur.
- Bir cihaz veri göndermek istediğinde, bu konu adını kullanarak veriyi broker'a publish eder.
- Ardından, broker bu veriyi konu adına abone olan tüm cihazlara subscribe eder.
Bu yapı sayesinde, tüm cihazlar arasında kolay ve güvenli bir veri transferi gerçekleştirilebilir.
Cihaz Bağlantısı
MQTT broker ile cihazların açık ve güvenli bir şekilde bağlantı kurması için, cihazların aşağıdaki adımları takip etmesi gerekmektedir:
- Broker'ın IP adresi ve port numarası kullanılarak bir bağlantı noktası oluşturulmalıdır.
- Cihazlar kendilerine bir client ID atamalıdır.
- Cihazların bağlantıları, MQTT broker üzerinde tanımlanmış kullanıcı adı ve şifreyle güvenli hale getirilmelidir.
Veri gönderimi için, cihazlar "publish" komutunu kullanarak veri gönderirler ve "subscribe" komutu ile de veri alırlar. Cihazların publish ve subscribe işlemlerinde belirli bir "topic" kullanmaları gerekmektedir. Broker üzerinde aynı "topic" kullanılarak veri alınmalıdır.
Cihazların broker ile güvenli bir bağlantı kurabilmesi için bazı önlemler alınması gerekmektedir. Örneğin, kullanıcı adı ve şifre gibi kimlik doğrulama bilgileri şifrelenmeli, veri transferi de şifreleme yöntemleri ile güvenli hale getirilmelidir. Ayrıca, pub-sub işlemleri sırasında sürdürülebilir bir güvenilirlik sağlanması için, oturum açma, süreklilik gibi özelliklerle birlikte kayıt ve izleme mekanizmaları kurulmalıdır.
Publish / Subscribe
Python kodu kullanarak Mosquitto broker'a bağlanıp, veri gönderebileceğiniz ve alabileceğiniz basit bir senaryo uygulayabilirsiniz. Bu senaryoda, bir taraftan bir cihazdan bir mesaj yayınlayacak ve diğer taraftan başka bir cihaz bu mesajı alacaktır.
Python ile Mosquitto broker'a bağlanmak için "Paho MQTT" kütüphanesini kullanabilirsiniz. Bu kütüphane MQTT protokolü ile veri gönderip almak için kullanılır. Öncelikle, kütüphanenin yüklü olması gerekiyor. Bu adımı gerçekleştirmeniz için sırayla aşağıdaki kodları kullanabilirsiniz:
```pip install paho-mqtt```
Bağımlılıkların yüklenmesinin ardından, senaryomuzu yazmaya başlayabiliriz. Öncelikle "paho-mqtt" kütüphanemizi dahil ediyoruz.
```import paho.mqtt.client as mqtt```
Sonrasında, senaryo için basit bir "publish" ve "subscribe" işlemi yapacağız. Bir cihazdan mesaj yollamak için "publish" işlemi kullanılır. Bu işlem sırasında, mesaj yayımlandığı anda "on_publish" metodu çalışır. Mesajı almak için ise "subscribe" işlemi kullanıyoruz ve mesaj alındığında "on_message" metodu çalışır.
Aşağıdaki örnek kodda "test/test1" kanalında bir mesaj yayınlayacağız ve aynı kanalda mesajı alacağız.
```# broker a bağlanma ve bağlanıldığına dair bir mesaj yayınlamadef on_connect(client, userdata, flags, rc): print("Bağlantı başarılı, RC: " + str(rc)) client.publish("test/test1", "Merhaba, dünya!")
# mesaj yayınlandığında çalışacak metotdef on_publish(client, userdata, mid): print("Mesaj yayınlandı!")
# mesaj geldiğinde çalışacak metotdef on_message(client, userdata, message): print("Mesaj alındı: " + message.payload.decode("utf-8"))
client = mqtt.Client()client.on_connect = on_connectclient.on_publish = on_publishclient.on_message = on_message
client.connect("broker_address", port=1883)
client.subscribe("test/test1")
client.loop_forever()```
Yukarıdaki kodda "broker_address" kısmına kullanmak istediğiniz MQTT broker'ın adresini yazmanız gerekiyor. Bu örnekte "test/test1" kanalına mesaj gönderdik. Bu kanal varsa mesaj yayınlandığında "on_publish" metodumuz çalışarak "Mesaj yayınlandı!" mesajını çıktı olarak verecektir. Ayrıca, aynı kanalda gelen bir mesaj için "on_message" metodu çalışacak ve mesajın içeriğini çıktı olarak verecektir.
Bu örnek senaryodan yola çıkarak, MQTT protokolünü kullanarak farklı projeler ve senaryolar oluşturabilirsiniz.
Python MQTT Kütüphanesi
Python kullanıcıları için MQTT protokolünü kullanmak oldukça basittir. MQTT iletişimi, Python kütüphaneleri ile sağlanabilir ve MQTT mesajlarının yapılandırılmasına ve gönderilmesine izin verir. Bu nedenle, Paho-MQTT (Python için MQTT protokol kütüphanesi) genellikle kullanılır.
Paho-MQTT, Python 2.x için hazırlanmış bir kütüphanedir ancak Python 3.x sürümü de destekler. Bu kütüphaneyi kullanmak için önce kurulum gereklidir. Ayrıca, SDK'nın resmi web sitesinde kullanım kılavuzları ve örnekler mevcuttur.
Bir mesajı göndermek için, organize bir şekilde MQTT'nin Paho-MQTT kütüphanesi ile kod yazmanız gerekmektedir. Bu şekilde, mesajlarınızı güvenli bir şekilde yayınlayabilir ve ağ bağlantısı oluşturabilirsiniz. MQTT'nin Python'daki kolay kullanımı, teknoloji dünyasındaki herkes için adaptasyonu arttırmıştır.
- Paho-MQTT kütüphanesi, yayıncı-abone modelinde kullanılabilir.
- Veri alışverişi sırasında birçok farklı parametre belirleyebilirsiniz.
- Veriler farklı bağlantı noktaları ve konular aracılığıyla gönderilebilir.
Böylece, Python kullanarak MQTT protokolünü kullanabileceğiniz Paho-MQTT kütüphanesi üzerine ileri düzey programlar yazabilirsiniz. SDK, IoT projeleri geliştirmek isteyen geliştiriciler için ideal bir araçtır.
Paho MQTT Kütüphanesi
Bir IoT projesinde, MQTT protokolü ile veri alışverişinde bulunmak için Python'da kullanabileceğiniz Paho MQTT kütüphanesi bulunmaktadır. Paho MQTT kütüphanesi, MQTT versiyon 3.1.1 ve 5.0 için Python diline özgü MQTT istemcilik kütüphanesidir.
Bu kütüphaneyi kullanmak için öncelikle sisteminizde Python 3.4 veya daha üst bir sürümü kurulu olmalıdır. Daha sonra, Paho MQTT kütüphanesini yüklemelisiniz. Yükleme için pip kullanabilirsiniz:
Komut | Açıklama |
---|---|
pip install paho-mqtt | Paho MQTT kütüphanesini yükler. |
Kütüphaneyi yükledikten sonra, Python dosyanızda kullanmak için kütüphaneyi içe aktarmanız gerekmektedir. Kütüphaneyi içe aktarmak için şu komutu kullanabilirsiniz:
import paho.mqtt.client as mqtt
Ardından, bir MQTT istemcisi oluşturmak için aşağıdaki kod parçasını kullanabilirsiniz:
client = mqtt.Client(client_id="", clean_session=True, userdata=None, protocol=mqtt.MQTTv311, transport="tcp")
Burada, client_id
parametresi boş bırakılarak rasgele bir ID üretilecektir. clean_session
parametresi True olarak ayarlanarak client çıkış yaptığında önceki oturumu silinir. userdata
parametresine herhangi bir özel veri atanmak istenirse kullanılır. protocol
parametresi MQTT protokolü sürümünü belirler. transport
parametresi ile de kullanılacak olan protokol belirtilir.
Son olarak, bağlantı parametreleri ayarlanmalı ve bağlanılmalıdır:
client.username_pw_set(username="", password="")
client.connect(host="", port=1883, keepalive=60, bind_address="")
client.loop_start()
Burada, username
ve password
parametreleri ile bağlantı güvenliği sağlanır. host
parametresine broker'ın IP adresi veya host adı belirtilir. port
parametresi ile broker'a hangi porttan bağlanacağınız belirtilir. keepalive
parametresi ile broker ile bağlantının ne kadar süre devam edeceği belirtilir. bind_address
parametresi ile de bağlantının hangi IP adresi ve porttan yapılacağı belirtilir.
Örnek Uygulama
Bu bölümde, Mosquitto broker'a nasıl bağlanabileceğimizi gösteren bir örnek proje yapacağız. Projede, Raspberry Pi'deki broker'a Python kullanarak veri göndereceğiz.
Öncelikle, Paho MQTT kütüphanesini Raspberry Pi'ya yüklemeniz gerekiyor. Ardından, Python kodunu yazarak broker'a bağlanabilir ve veri gönderebilirsiniz.
Proje için ihtiyacımız olan malzemeler:
- Raspberry Pi
- Bir adet anahtarlı sensör
- USB kablosu
Anahtarlı Sensör | Raspberry Pi Pinleri |
VCC | 3.3V |
GND | Ground (GND) |
D0 | GPIO17 (wiringPi pin 0) |
Devreniz hazır olduğunda, Python kodunu yazabilirsiniz. İlk olarak, Paho MQTT kütüphanesini içeri aktarın:
import paho.mqtt.publish as publishbroker_address = "ip_adresi"topic = "test/topic"publish.single(topic, "Hello World!", hostname=broker_address)
Python kodunu çalıştırdıktan sonra, veri Mosquitto broker'ın yönettiği ağdaki abonelere dağıtılacaktır.
Bu proje sadece temel bir örnek olduğundan, daha ileri yönlü projeler için MQTT kütüphanelerini incelemelisiniz, ancak şimdi artık Mosquitto broker'a bağlanıp veri göndermeyi öğrendiniz!