MQTT (
MQ Telemetry Transport) to prosty "
Internet of Things" protokół komunikacyjny. Opiera się na przekazywaniu wiadomości pomiędzy klientami za pośrednictwem centralnego serwera –
brokera.
Klienci mogą być typu
Publisher - wysyłają pod wskazany adres
topic (adres, temat) swoje wiadomości.
Publisherem może być na przykład czujnik lub miernik.
Przeciwiestwem jest
Subscriber, czyli klient, ktróry zgłasza się do odbioru wartości a adresu
topic a później wartości odczytuje (przyjmuje) oraz dalej z nimi pracuje lub je wyświetla.
Klient może być
Publisher oraz
Subscriber równocześnie.
Ponieważ, klienci komunikują się tylko z pośrednikiem (z serwerem -
brokerem), nie muszą znać topologię sieci, ani nie muszą posiadać informację o istnieniu innych klientów - wystarczy im tylko informacja o tym, w jaki sposób połączyć się z
brokerem.
W sekwencji logowania wykorzystywana jest identyfikacja każdego klienta przy pomocy
"ClientID" a następnie opcjonalnie również przy pomocy nazwy użytkownika
"Username" oraz hasła
"Password". Wsparcie
SSL/TSL nie jest na razie w systemie PROMOTIC zaimplementowane.
Protokół
MQTT definiuje trzy poziomy potwierdzenia wiadomości
QoS (
Quality of Service)
QoS 0 - wiadomość została wysłana bez potwierdzenia i nie jest zapewnione jej doręczenie (at-most-once).
QoS 1 - wiadomość została dostarczona przynajmniej raz (at least once).
QoS 2 - każda wiadomość została dostarczona tylko raz (exactly once).
Klient typu
Publisher może wysyłać dane również z znacznikiem
Retained (0/1 = dane nie będą/będą przechowywane na brokerze) oraz z znacznikiem
DUP (0/1 = żadne/następne powtarzanie wysłanej wiadomości)
Według wymaganego poziomu szyfrowania komunikacji, protokół
MQTT ustawia następujące 3 porty sieciowe:
1883 - (wspierane) transmisja nieszyfrowana (unencrypted)
8883 - (nie wspierane) transmisja szyfrowana (encrypted) SSL/TLS
8884 - (nie wspierane) transmisja szyfrowana (encrypted) + certyfikat klienta (client certificate) SSL/TLS + klient musi udostępnić również certyfikat wiarygodności wydany brokerem
Patrz:
Wikipedia: Lista numerów portów TCP i UDP używanych przez protokoły do uruchamiania aplikacji sieciowych.
Ograniczenie: System PROMOTIC na razie nie wspiera transmisję szyfrowaną (wspiera tylko port
1883).
Linki oraz instrukcje
Komunikacja aplikacji PROMOTIC z MQTT brokerem
Zalogowany klient jest typu
Publisher oraz
Subscriber. Klient
Subscriber zgłosi się do odbioru na brokerze pod zdefiniowanym
topic adresem. Klient
Publisher pod ten adres wysyła swoje dane, które klient
Subscriber odbiera.
Do odczytu tych danych jest dogodne zastosować konfigurację wstępną: