MQTT

MQTT este acronimul din engleză MQ Telemetry Transport. Reprezintă un protocol de comunicare, special proiectat, pentru a folosi la minimum lățimea de bandă necesară unei comunicații într-o rețea cu latență mărită. Astfel protocolul este ideal a fi folosit în comunicațiile mașină-mașină sau IOT din eglezescul "Internet Of Thinks" - internetul lucrurilor.

Instalare server MQTT - Debian 9

Toate comenzile de mai jos sunt realizate de către userul root sau de către un user ce are drept de administrare (de exemplu folosind comanda sudo).
Pentru început vom descărca cheia:
wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key

Instalăm cheia:
apt-key add mosquitto-repo.gpg.key

Creăm fișierul cu lista unde se află depozitul cu fișierele a fi instalate:
nano /etc/apt/sources.list.d/mosquitto.list

După deschiderea unui fișier gol scriem, folosind editorul preferat, următoarele:

deb http://repo.mosquitto.org/debian stretch main  


Realizam actualizarea informațiilor legate de pachete:
apt update

În cazul în care rezultatul comenzii se termină cu eroare ca urmare a lipsei metodă driver /usr/lib/apt/methods/https

va fi necesară instalarea următorului pachet:
apt install apt-transport-https

Reluam comanda de actualizare a informațiilor legate de pachete:
apt update

Instalăm serverul și clientul mosquitto:
apt install mosquitto mosquitto-clients

După instalare verificăm dacă serverul mosquitto este pornit:
systemctl status mosquitto

În cazul în care serviciul/serverul nu este active vom porni serverul/serviciul:
systemctl start mosquitto
Pentru ca serviciul să ponească automat la secvența de încărcare a sistemului vom folosi comanda:
systemctl enable mosquitto
În continuare vom testa funționarea serviciului/serverului creind un abonament cu topicul test:
mosquitto_sub -h localhost -t test

la care vom publica mesajul salut de la un alt terminal/consolă, eventual de către un alt user:
mosquitto_pub -h localhost -t test -m "salut"

mesaj care vă apărea în prima consolă:

indicându-ne funcționarea corectă a serviciului/serverului mqtt, inchiderea abonamentului deschis se face cu tastele Ctr+c:

Având în vedere că publicarea la un topic nu este securizată vom crea un fișier privind autorizarea la acest serviciu/server, folosind editorul preferat, în cazul meu nano:
nano /etc/mosquitto/conf.d/auth.conf

unde vom scrie următoarele două linii:

allow_anonymous false  
password_file /etc/mosquitto/passwd


Creem fișierul passwd declarat anterior și userul esp8266 cu parola aferentă:
mosquitto_passwd -c /etc/mosquitto/passwd esp8266

după care repornim serviciul/serverul:
systemctl reload mosquitto

Testăm capabilitatea userul nou creat esp8266 de a crea abonamente:
mosquitto_sub -h localhost -t test -u "esp8266" -P "parola"

și de a publica, folosind o altă consolă, eventual și un alt user:
mosquitto_pub -h localhost -t test -m "salut" -u "esp8266" -P "parola"
funcționarea corectă va fi indicată de apariția mesajului în prima consolă, la fel ca la testul anterior.

Atenție: indicatorul -c de la comanda mosquitto_passwd va fi folosit o singură dată în vederea creării fișierului passwd.

O nouă rulare a comenzii mosquitto_passwd -c /etc/mosquitto/passwd user va duce la suprascrierea fișierului passwd.

Aducerea unui nou user, cu parola aferentă, se realizează folosind aceeași comandă dar fără indicatorul -c

mosquitto_passwd /etc/mosquitto/passwd user