Zobacz także:
W poprzednim artykule opisałem podstawowe zagadnienia związane z protokołem komunikacyjnym MQTT, teraz omówię praktyczne wykorzystanie komunikacji przy użyciu brokera Mosquitto.
Mosquitto jest lekkim brokerem obsługującym protokół MQTT udostępniany przez Eclipse Foundation na licencji EPL/EDL.
Instalacja brokera
Poniżej przedstawiona metoda pozwoli zainstalować Mosquitto na systemach typu Ubuntu/Debian oraz Raspbian. Należy uruchomić terminal i wywołać następujące polecenia:
sudo apt-get update sudo apt-get upgrade sudo apt-get install mosquitto
po zakończonej instalacji możemy sprawdzić, czy nasz serwer MQTT działa. Możemy to wykonać przy pomocy polecenia:
systemctl status mosquitto
Jeżeli otrzymaliśmy komunikat zawierający linię w stylu:
Active: active (running) since Wed 2018-08-01 16:37:46 CEST; 2s ago
To znaczy że broker Mosquitto działa prawidłowo.
Instalacja programów klienta
Kiedy już działa nasz serwer to potrzebujemy jeszcze klientów, który będą mu generować robotę. Instalacja w systemach z rodziny Debiana jest równie prosta jak dla brokera:
sudo apt install mosquitto-clients
W ten sposób mamy teraz do dyspozycji dwa programy:
- mosquitto_sub – służy do subskrybowania tematów
- mosquitto_pub – służy do publikowania wiadomości
Prosta komunikacja z wykorzystaniem MQTT
Kiedy mamy już gotowe środowisko to możemy przystąpić to pierwszych testów. W tym celu musimy mieć otwarte dwa okna terminala.
W pierwszym oknie wywołujemy polecenie subskrypcji:
mosquitto_sub -t myTopic
A w drugim polecenie publikacji:
mosquitto_pub -t myTopic -m "message"
Po wywołaniu polecenia publikacji w oknie terminala w którym uruchomiliśmy subskrypcję widzimy naszą wiadomość.
Warto zwrócić uwagę, że program mosquitto_sub jest cały czas otwarty i nasłuchuje, a program mosquitto_pub publikuje wiadomość w ramach tematu i się zamyka. Argumenty z którymi są wywoływane programy są dosyć czytelne:
- -t [temat] – określa nazwę tematu
- -m [wiadomość] – służy do określania jaka wiadomość ma zostać opublikowana
Komunikacja MQTT pomiędzy różnymi urządzeniami
MQTT umożliwia oczywiście komunikację pomiędzy różnymi urządzeniami, jedyne co musi wiedzieć aplikacja klienta to adres IP urządzenia na którym pracuje broker. Dla przykładu uruchomię serwer Mosquitto na Raspberry Pi, na którym też będzie jeden klient subskrybujący, a na PC uruchomię publikację i subskrypcję.
Nowością są polecenie subskrypcji:
mosquitto_sub -h 192.168.1.100 -t myTopic
i polecenie publikacji:
mosquitto_pub -h 192.168.1.100 -t myTopic -m "message"
Ze względu na to, że są uruchamiane na innym urządzeniu niż pracuje broker, to musimy podać adres IP naszego pośrednika. Służy do tego argument -h [adres ip].
Podsumowanie
Jak można było zaobserwować na podstawie powyższych przykładów, MQTT to bardzo proste, ale potężne narzędzie. W następnej części zaprezentuje kontrolę dostępu.