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.
Mosquitto kurulumu
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:
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
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.
Kullanıcı:Şifre formatında alt alta ekliyoruz kullanıcıları.
Şifre dosyamıza göz atarsak şifre kısmının değiştiğini görebiliriz.
Kaydedip kapatıyoruz ve mosquitto sunucuyu yeniliyoruz.
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.
broker ip adresini localhost yerine yazabilirsiniz.
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.
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)
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.
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.
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
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’
mosquitto subscriber – takipçi ö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 dosyası şifreleme mosquitto_passwd
sudo mosquitto_passwd -U /etc/mosquitto/mqtt_passwd.txt
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
Mosquitto Restart
sudo service mosquitto restart
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’