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

Fen bilimleri ders linkler

 https://www.khanacademy.org/science/cosmology-and-astronomy/earth-history-topic/earth-title-topic/pi/season-simulator Basit bir simülasyon , dünya konumu ve güneş ışığı aktif değişimini gösteriyor İstenilen konum ayarlanabiliyor  https://www.earthspacelab.com/app/eclipse/ güneş ve ay tutulmaları  https://www.earthspacelab.com/app/moon-phases/ ayın evreleri  https://astro.unl.edu/nativeapps/  şu linkten naap labs v1.1 kurulumu içinde mevismler simulasyonu kullanışlı duruyor. dünya üzerinde konum belirleyip düşen ışığın gösterimi de mevcut https://www.vascak.cz/physicsanimations.php?l=tr https://www.physicsclassroom.com/Physics-Interactives/Refraction-and-Lenses/Optics-Bench/Optics-Bench-Refraction-Interactive https://www.physicsclassroom.com/Physics-Interactives/Reflection-and-Mirrors/Optics-Bench/Optics-Bench-Interactive https://www.physicsclassroom.com/Physics-Interactives/Light-and-Color/Stage-Lighting/Stage-Lighting-Interactive https://phet.colorado.edu/sims/html/bending-light/late

Doopy Run - Godot Engine Game

Doopy run eğitim sırasında oluşturduğum basit bir platform oyun denemesidir. Aşağıdaki linkten demoyu indirebilirsiniz. Windows linki Android APK linki

Mikroskop Gözlemi - Paramesyum Kültürü

Mikroskobik canlılarından birkaç örnek gözlemek için sınıf etkinliğinde kullanılmak üzere bir kültür ortamı oluşturduk. Bu ortam için bir miktar akvaryum suyu aldık. İçine canlı bir yapraklı bitki bir parça, bir tutam toprak, kuru yaprak attık. Ağzını peçete ile örtüp lastik ile tutturduk. 2 hafta mutfakta rafta ışıklı bir ortamda beklettikten sonra hazırladığımız preparatta aşağıdaki gözlemleri gerçekleştirdik. Fotoğraf ve videolar telefon adaptörü aracılığıyla telefon kamerası ile kaydedildi. Resimlerin kaliteli versiyonlarını linkten indirebilirsiniz: Mikroskop Gözlemi