Ana içeriğe atla

MQTT Broker Kurulumu – Mosquitto ve deneme

MQTT (Message Queuing Telemetry Transport), nesnelerin interneti alanında önemli haberleşme protokollerinden biridir.


Kısaca bir sunucu üzerinden (broker) bir cihazın yayın yapması (publish) ve başka bir cihazın da bu yayını takip etmesi (subscribe) ‘ne dayalı bir yapıdır. Yayın ve takip işlemleri broker üzerinde açılan topicler üzerinden olur.
Örneğin;


Publisher1 isimli yayıncımız brokerda /ev/priz1 isimli topic (konu) içine ‘aç’ diye yayın yapar. Prize bağlı röle içeren Subscriber1 isimli takipçimiz de brokerdaki /ev/priz1 isimli topic değerini takip eder. ‘aç’ yayınını gören Subscriber1 röleyi sürüp prizi aktifleştirebilir.
Aynı topic için birden fazla yayıncı olabilir. (aile üyelerinin telefonlarından aynı prizi kontrol edebilmesi)

Bir yayıncı birden fazla topic için yayın yapabilir. Örneğin nem ve sıcaklık sensörü olan cihaz bu değerleri /sensor/nem ve /sensor/sicaklik gibi iki ayrı topic için yayın yapabilir.

Yine bir topic’i birden fazla subscriber takip edebilir.(örneğin evdeki sıcaklık sensörünün değerini aile üyelerinin telefonlarından görebilmesi)
Bir takipçi birden fazla topic’i de takip edebilir.
Mosquitto broker kurulumu ve Deneme
Mosquitto açık kaynaklı ve ücretsiz bir broker uygulaması.

Mosquitto kurulumu
sudo apt install mosquitto mosquitto-clients
Debian tabanlı dağıtımlarda terminalden direk kurulum yapabilirsiniz. mosquitto-clients bilgisayardan publish yada subscribe yapmamıza yarayan uygulama.

Kurulum yaptığınız bilgisayar artık broker görevinde çalışmaya başlar, bilgisayar açılışında mosquitto sunucusu çalışır.

Aşağıdaki komutlar ile test edelim:
Mosquitto Subscribe - takipçi
mosquitto_sub -t ‘/ev/priz1’
Mosquitto Publisher - Yayıncı
mosquitto_pub -t ‘/ev/priz1’ -m ‘Aç’
mosquitto_pub -t ‘/ev/priz1’ -m ‘Kapat’
Bir terminalde subscriber kodunu çalıştırıyoruz. Başka bir terminalden de publisher komutlarını sırasıyla çalıştırdığımızda takipçimizin terminal ekranında topic te gerçekleşen değişimleri görebiliriz.

mosquitto subscriber – takipçi örneği


Mosquitto publisher – yayıncı örneği


Denemeleri aynı bilgisayar üzerinde yaptığımız için broker adresi girmedik. Eğer mosquitto broker başka bir cihaz ise kodumuza -h İPADRESİ parametresini dahil ediyoruz.

Kullanıcı adı ve Parola

İnternete açık bir sunucu kuracaksak eğer güvenlik önlemi almak isteyebilirsiniz. Bunun için de mosquitto sunucusunda kullanıcı ve şifre tanımlamamız gerekiyor. Kullanıcı ve şifre bilgileri için öncelikle bir text dosyası oluşturup sonra bunu şifrelememiz gerekiyor.

Mosquitto Kullanıcı ve parola belirleme
sudo nano /etc/mosquitto/mqtt_passwd
Kullanıcı:Şifre formatında alt alta ekliyoruz kullanıcıları.


Dosyayı kaydettikten sonra şifreliyoruz.

kullanıcı şifre dosyası şifreleme mosquitto_passwd
sudo mosquitto_passwd -U /etc/mosquitto/mqtt_passwd.txt
Şifre dosyamıza göz atarsak şifre kısmının değiştiğini görebiliriz.


Şifre dosyamız hazır olduğuna göre config dosyasında gerekli değişikliği de yapıyoruz.

mosquitto.conf değişikliği
sudo nano /etc/mosquitto/mosquitto.conf
İki satırı dosyanın altına ekliyoruz
allow_anonymous false
password_file /etc/mosquitto/mqtt_passwd.txt

Kaydedip kapatıyoruz ve mosquitto sunucuyu yeniliyoruz.

Mosquitto Restart
sudo service mosquitto restart
Eğer kullanıcı bilgisi olmadan publish ya da subscribe yapmaya kalkarsak hata alırız.


Kullanıcı bilgisi ve broker ip adresi içeren kodumuzu aşağıdaki gibi çalıştırdığımızda iletişimin sağlandığını görebiliriz.

mosquitto_sub mosquitto_pub
mosquitto_sub -h localhost -u ‘ennte’ -P ‘sifre1’ -t ‘/ev/priz1’
mosquitto_pub -h localhost -u ‘ennte’ -P ‘sifre1’ -t ‘/ev/priz1’ -m ‘KAPAT’
broker ip adresini localhost yerine yazabilirsiniz.


Bu blogdaki popüler yayınlar

Spinoza' nın Tanrısı

Einstein' ın ABD üniversitelerinde konferans verdiğinde öğrencilerin ona sık sık sordukları soru: - Tanrı' ya inanmıyor musun? Einstein hep şu cevabı verirdi: Spinoza' nın tanrısına inanıyorum. Spinoza' yı okumayan kişi aynı yerde kalır. Umarım bu özet, benim kadar size de hizmet eder... "Baruch de Spinoza", 17. yüzyıl felsefesinin üç büyük rasyonalistinden biri olarak kabul edilir, Fransız "Descartes" ile birlikte... ....................................................... Spinoza' nın Tanrısı, ya da Doğası... Tanrı şöyle derdi: Dua etmeyi bırak ve göğsüne yumruk atmaktan da vazgeç. Yapmanı istediğim şey, dünyaya çıkıp hayatının tadını çıkarman. Eğlenmeni, şarkı söylemeni ve senin için yaptığım her şeyin tadını çıkarmanı istiyorum. Kendi inşa ettiğin o soğuk ve karanlık tapınaklara gitmeyi bırak. Oraların benim evim olduğunu söylüyorsun. Benim evim dağlarda, ormanlarda, nehirlerde, göllerde, plajlarda. Yaşadığım her yerde sana olan aş

Raspberry Pi 7″ Dokunmatik Ekranı ve Parlaklık Ayarı

Raspberry pi için üretilmiş 7″ 800×480 60fps 10 nokta dokunmatik desteğine sahip ekran DSI bağlantısı ile Rasberry pi kartınıza takılıyor. Güç kaynağı için gpio 5volt pinini kullanabilirsiniz. Ekranın diğer bir özelliği arka tarafında Rpi kartınızı takabileceğiniz vida delikleri bulunması. Raspbian işletim sistemiyle sorunsuz ve kurulum gerektirmeden çalışıyor. Raspberry pi tek kart bilgisayar için bir ekran tercihi projenize göre farklı alternatifler içeriyor. Gpio pinlerine oturan ekranlar, hdmi ekranlar , analog video ekranlar( pek tercih edilmiyor), son olarak mini bilgisayarımız üzerindeki display portuna (DSI) bağlanan ekranlar. Kullanıma amacı tercihi belirleyecektir ancak sorunsuz bir kullanım için benim önerim hmdi ve DSI portuna takılan orjinal rpi ekranı. Ekranı kullanırken bazı kontroller için aşağıdaki komutları kullanıyoruz: Ekranı arka ışığını kapatmak için echo 1 > /sys/class/backlight/rpi_backlight/bl_power Ekranı arka ışığını açmak için e