MQTT - protokół do IoT i nie tylko - materiały

Tutaj umieszczamy tematy związane z językami programowania niepasującymi do innych działów.
Regulamin forum
Temat prosimy poprzedzić nazwą języka umieszczonego w nawiasach kwadratowych np. [Pascal].
Awatar użytkownika
dambo
Expert
Expert
Posty: 645
Rejestracja: czwartek 17 mar 2016, 17:12

MQTT - protokół do IoT i nie tylko - materiały

Postautor: dambo » sobota 03 cze 2017, 14:48

Witam, coraz częściej w projektach z ESPkami i ogólnie IoT widać protokół MQTT. Przejrzałem sporo na jego temat i dzielę się najfajniejszymi materiałami:
- filmik opisujący co to:
https://www.youtube.com/watch?v=EIxdz-2rhLs

- po naszemu jakby ktoś chciał:
http://adam.wroclaw.pl/2014/10/mqtt-cie ... chnologia/

- filmik kwiatavr - ESP i mosquito
https://www.youtube.com/watch?v=DD2hWRDt2ow

- opis biblioteki do c#
http://www.hivemq.com/blog/mqtt-client- ... dia-m2mqtt

- brokem mqtt online z którego korzystam
http://www.mqtt-dashboard.com/

- mqtt essentials - mega fajne materiały
http://www.hivemq.com/blog/mqtt-essentials/

Znalezione przy okazji - dobre i złe praktyki w C#:
https://msdn.microsoft.com/pl-pl/librar ... esc-1.aspx

zrobiłem sobie dla testu też aplikację w C#:
sssss.png

tu można ją pobrać i sprawdzić:
mqtt_cs.rar

Możemy sami do siebie coś powysyłać, odpalić kilka razy ta apke i rorozsyłać dane do nich lub zobaczyć topici na stronie http://www.mqtt-dashboard.com/index.html i się podłączyć pod jakiś i nasłuchać - dużo z nich to jakieś termometry itp
Jak coś znajdę jeszcze ciekawego to wstawię poniżej.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Nowy blog o tematyce embedded -> https://www.embedownik.pl/

Awatar użytkownika
Grzegorz...
User
User
Posty: 450
Rejestracja: piątek 09 paź 2015, 18:57

Re: MQTT - protokół do IoT i nie tylko - materiały

Postautor: Grzegorz... » sobota 03 cze 2017, 19:52

Świetny zbiór.
Trochę się ostatnio oczytywałęm z tym protokołem, ale Twoje linki dadzą zapewne kopa zarówno mi jak i wielu innym.

Awatar użytkownika
dambo
Expert
Expert
Posty: 645
Rejestracja: czwartek 17 mar 2016, 17:12

Re: MQTT - protokół do IoT i nie tylko - materiały

Postautor: dambo » czwartek 07 wrz 2017, 22:10

jako ciekawostka:

odświeżałem sobie dziś te rzeczy z MQTT, odpaliłem apkę i wszedłem na stronę zobaczyć jakie są aktywne kanały, żeby zobaczyć czy subskrybowanie działa.
Znalazłem taki z na 99 inteligentnego domu i sobie zasubskrybowałem - i co ok sekunde jakiś sensorek przesyłał temperaturę. Zasubskrybowałem jeszcze kilka od tego samego kolesia.
I tu uwaga - bo to co zrobiłem było złe i mi głupio :/
Na jeden z jego kanałów z temperaturą przesłałem "dzień dobry" i... wszystko ucichło, chyba mu zepsułem tym coś :/

Z drugiej strony ktoś z "platformy do testów" zrobił sobie swój serwer na dane, a jeśli nie i się uczył - to już wie, żeby zabezpieczać takie rzeczy :p
Nowy blog o tematyce embedded -> https://www.embedownik.pl/

Awatar użytkownika
dambo
Expert
Expert
Posty: 645
Rejestracja: czwartek 17 mar 2016, 17:12

Re: MQTT - protokół do IoT i nie tylko - materiały

Postautor: dambo » czwartek 07 wrz 2017, 23:21

Powiem wam, że świetnie to działa - odpaliłem u siebie na kompie Mosquito - serwer MQTT. Do niego mogę podłączyć się tą apką w C# no i wytestowałem też ESP8266 ( w arduino IDE, a co :p ) i od strzała ruszyło :)

"pokaz" działania - czyli dowód, że to działa:
https://www.youtube.com/watch?v=ECoeezYsGgA
Nowy blog o tematyce embedded -> https://www.embedownik.pl/

Awatar użytkownika
squeez
User
User
Posty: 211
Rejestracja: czwartek 04 lut 2016, 10:13

Re: MQTT - protokół do IoT i nie tylko - materiały

Postautor: squeez » piątek 08 wrz 2017, 15:39

Dambo - teraz zauważyłem ten topik (wcześniej jakoś przeoczyłem) poczytałem, poszperałem i temat bardzo ciekawy i wart przetestowania :) tym bardziej że broker (mosquitto) dostępny pięknie na linuxa a i do PHP są już gotowe biblioteki :)

Do ESP8266 (nonos SDK) znalazłem przeportowaną bibliotekę: https://github.com/tuanpmt/esp_mqtt

Więc w weekend pewnie się pobawię tym :)

Nie wczytywałem się w kod ale ciekaw jestem jak jest zrobiona subskrypcja tematu, zapewne cykliczne odpalanie zapytania do brokera czy coś się pojawiło. Kodu nie jest dużo to zobaczę jak to jest zrobione.

Awatar użytkownika
dambo
Expert
Expert
Posty: 645
Rejestracja: czwartek 17 mar 2016, 17:12

Re: MQTT - protokół do IoT i nie tylko - materiały

Postautor: dambo » piątek 08 wrz 2017, 16:00

squeez pisze:Nie wczytywałem się w kod ale ciekaw jestem jak jest zrobiona subskrypcja tematu, zapewne cykliczne odpalanie zapytania do brokera czy coś się pojawiło.


na 99% odwrotnie - to broker ma informacje o subskrybentach i przesyła im dane gdy się jakieś pojawią, 0 odpytywania - stąd "lekkość" tego protokołu.
Nowy blog o tematyce embedded -> https://www.embedownik.pl/

Awatar użytkownika
squeez
User
User
Posty: 211
Rejestracja: czwartek 04 lut 2016, 10:13

Re: MQTT - protokół do IoT i nie tylko - materiały

Postautor: squeez » piątek 08 wrz 2017, 16:19

to z tego by wynikało że jak jestem w LAN za maskaradą to wówczas nie dostanę danych, do serwer się nie wbija do LAN-a.
W przypadku odpytywania da radę bo połączenie inicjuje klient.

Awatar użytkownika
dambo
Expert
Expert
Posty: 645
Rejestracja: czwartek 17 mar 2016, 17:12

Re: MQTT - protokół do IoT i nie tylko - materiały

Postautor: dambo » piątek 08 wrz 2017, 16:34

Teraz już nie na 99%, ale wydaje mi się, że połączenie jest ustanawiane/inicjalizowane w momencie subskrypcji (czyli musi to zrobić klient najpierw) i potem utrzymywane. Poszukam wieczorem więcej info, ale jakbym jakieś głupoty pisał to mnie popraw :)

Edit:
tutaj:
http://www.hivemq.com/blog/mqtt-essenti ... ablishment

mamy taką informację:
The MQTT connection itself is always between one client and the broker, no client is connected to another client directly. The connection is initiated through a client sending a CONNECT message to the broker. The broker response with a CONNACK and a status code. Once the connection is established, the broker will keep it open as long as the client doesn’t send a disconnect command or it looses the connection.

tylko, ze tam są obrazki, więc polecam też zerknąć :)

Edit2:
na końcu tamtego jest, że szczegóły opiszą potem, no ale juz wyszły i są tutaj: http://www.hivemq.com/blog/mqtt-essenti ... -take-over
czyli to client musi "spingować" broker co najmniej raz na 18h, czy to wiadomością, czy "pustym" pingiem, jeśli nie były pomiędzy nimi przesyłane żadne informacje.
Nowy blog o tematyce embedded -> https://www.embedownik.pl/

Awatar użytkownika
squeez
User
User
Posty: 211
Rejestracja: czwartek 04 lut 2016, 10:13

Re: MQTT - protokół do IoT i nie tylko - materiały

Postautor: squeez » piątek 08 wrz 2017, 18:09

Fakt dzięki za sprawdzenie. Z tego wynika że połączenie jest utrzymywane, a co zadany czas w "keep alive" wysyłany jest pingreq a w zamian, jeśli broker żyje odbierany jest pingresp.

Tak czy inaczej temat wart zgłębienia :)

Awatar użytkownika
squeez
User
User
Posty: 211
Rejestracja: czwartek 04 lut 2016, 10:13

Re: MQTT - protokół do IoT i nie tylko - materiały

Postautor: squeez » niedziela 10 wrz 2017, 12:39

Pobawiłem się tym trochę i swoje projekty na ESP chyba zacznę przerabiać na MQTT :)
Tylko jeszcze będę musiał spróbować "ożenić" to z SSL, bo jeśli mosquitto dam na swoim serwerze, żeby mieć globalny dostęp to komunikację wolałbym zabezpieczyć :)
Potrenuję w wolnych chwilach i jak coś się uda dam znać.

-- EDIT --

Z kronikarskiego "obowiązku" dopiszę że SSL udało się okiełznać zarówno na ESP jaki mosquittp. Przy czym na mosquito było więcej problemu, biblioteka do MQTT z githuba działa świetnie bez żadnych przeróbek :)

Awatar użytkownika
dambo
Expert
Expert
Posty: 645
Rejestracja: czwartek 17 mar 2016, 17:12

Re: MQTT - protokół do IoT i nie tylko - materiały

Postautor: dambo » poniedziałek 09 paź 2017, 13:20

aj nie zobaczyłem twojego edita - i co tam fajnego masz uruchomione na MQTT? broker masz u siebie gdzieś na serwerze, czy jak to wygląda?
Nowy blog o tematyce embedded -> https://www.embedownik.pl/

Awatar użytkownika
squeez
User
User
Posty: 211
Rejestracja: czwartek 04 lut 2016, 10:13

Re: MQTT - protokół do IoT i nie tylko - materiały

Postautor: squeez » poniedziałek 09 paź 2017, 17:17

Naraz jeszcze nie mam konkretów tzn testowałem to na orange pi zero, postawiony mosquitto jako że mam sieć z brakiem dostępu z zwenątrz to na serwerze jaki mam wystawiony w świat zainstalowałem drugiego mosquitto i połączyłem je razem czy ten w domu ma możliwość gadania z tym na zewnętrznym serwerze przy czym nie wszystkie topiki są wystawiane w świat.

Testowałem też z TLS i działało.

Miałęm na tym zrobić swoją automatykę domową ale do akcji chyba wkroczy demoticz z MQTT :) tzn zamiast robić to tak jak w necie większość czyli ESPEasy albo mysensors połączone z demoticzem ja zamierzam podejść inaczej do tematu czyli ożenić demoticza z MQTT i wówczas własne nody też komunikujące się po MQTT. Więc zostanę przy SDK NONOS od ESP zamiast dzióbać w arduino i jakimś ESPEasy.

Awatar użytkownika
dambo
Expert
Expert
Posty: 645
Rejestracja: czwartek 17 mar 2016, 17:12

Re: MQTT - protokół do IoT i nie tylko - materiały

Postautor: dambo » poniedziałek 09 paź 2017, 17:23

to jak Ci się uda to z chęcią bym poczytał jak to wygląda :) domoticz mnie ciekawi, ale obecnie do niczego mądrego bym go nie użył - wynajmowane mieszkanie, więc nie poryję w instalacjach, ale za jakiś czas będzie jak znalazł :)
Nowy blog o tematyce embedded -> https://www.embedownik.pl/


Wróć do „Inne języki programowania”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 2 gości