Czy muszę używać MQTT lub HTTP?

9

Pracuję na urządzeniu, które wykrywa i zbiera informacje ze środowiska, takie jak temperatura, wilgotność itp.

Urządzenie nie jest podłączone do żadnego źródła zasilania, ale ma baterię i panel słoneczny do ładowania.

Przez większość czasu jest prawie w głębokim śnie i budzi się tylko wtedy, gdy musi wykryć i przesłać dane. Ta operacja trwa około 1-2 minut, a następnie ponownie zasypia.

Nie jestem ekspertem w tej dziedzinie, ale myślę, że MQTT powinien być dobrym rozwiązaniem, jeśli urządzenie musi być dostępne, aby otrzymywać wiadomości z tematu przez cały czas, ale w moim scenariuszu tylko odczytuje czujniki i wysyła dane do serwer okresowo.

Obecnie przesyłam dane przez HTTP, ale zastanawiam się, czy warto wdrożyć MQTT? Czy powinienem uzyskać przewagę nad HTTP w tym scenariuszu?

zephrax
źródło
1
Jest podobnie, ale moim celem jest zrozumienie, czy muszę wdrożyć MQTT w moim scenariuszu: kiedy moje urządzenie będzie w stanie głębokiego uśpienia 99% czasu i po prostu obudzi się, aby wysłać odczyty.
zephrax,
1
Nie sugerowałbym żadnej. Najpierw napisz swoje wymagania i zaimplementuj najbardziej uproszczony protokół. Używanie silnika Ferrari w kosiarce do trawy nie miałoby sensu. Nie daj się wciągnąć w gwarę rzeczy - po prostu wykonaj podstawowe badania i zastosuj to, co działa najlepiej.
Xofo
Byłoby miło uchwycić wymaganie w tytule pytania. Generalnie pytasz o małe, rzadkie wartości czujników, tak myślę.
Sean Houlihane
@Xofo Chciałbym zobaczyć odpowiedź na ten temat i dlaczego możesz zaproponować użycie niestandardowego protokołu. Czy warto dodatkowy wysiłek, aby „rozwinąć własne”, a także kwestie bezpieczeństwa itp.?
Aurora0001
Nie niestandardowy protokół ... Powiedziałem, że najpierw zdefiniuj wymagania. Niektóre zalecane protokoły są często zbyt ciężkie.
Xofo

Odpowiedzi:

8

Jeśli przechowujesz dane, po prostu trzymaj się HTTP. HTTP to tylko sygnał jednokierunkowy.

Jeśli Twój serwer lub jakakolwiek inna „rzecz” powinna zareagować na określony sygnał (niska temperatura, ...), użyj MQTT. W ten sposób wiele urządzeń może zasubskrybować sygnał temperatury i natychmiast zareagować bez użycia serwera.

Goufalite
źródło
1
Istnieje również podział między dużą (http) i małą (mqtt) ilością danych naraz, a także mqtt jest bardziej niezawodny w złych warunkach sygnału.
mico
1
Serwer odbiera dane tylko z czujników. Chodzi mi o to, że nie jestem pewien, czy warto używać MQTT, ponieważ urządzenie będzie w 99% przypadków w stanie głębokiego uśpienia (wszystkie magistrale, modem, czujniki są wyłączone) i tylko budzi się, aby odczytać czujniki i wysłać dane.
zephrax
Jeśli gdzieś przechowujesz swoje dane, oznacza to, że masz bazę danych i backendowy sposób na ich zapytanie (serwer Apache, wiersz poleceń SQL, ...). Jeśli nałożysz na to MQTT, będziesz mieć inną instancję i port do zarządzania.
Goufalite
1
Zgadzam się z tą odpowiedzią. Jeśli nie potrzebujesz komunikacji dwukierunkowej, a urządzenie często śpi, wtedy HTTP jest prostym i odpowiednim wyborem protokołu.
TheMagicCow
8

Wspominasz panel słoneczny i baterię jako część urządzenia, więc prawdopodobnie chcesz zminimalizować zużycie energii podczas transmisji, aby mieć pewność, że urządzenie nie wyczerpie się całkowicie.

Dlatego warto rozważyć CoAP The Co nstrained A TOSOWANIE P rotocol, który został specjalnie zaprojektowany do ograniczonych urządzeń w Internecie rzeczy.

W artykule Porównywanie opłacalności CoAP i HTTP w aplikacjach Web of Things , można znaleźć dość przekonujące dowody na to, że CoAP może przynieść ci oszczędność energii. W Dodatku A (strona 38) możesz sprawdzić oczekiwaną żywotność baterii urządzeń w Tabeli A.4. Przez 120 sekund, zgodnie z oczekiwaniami w przypadku użycia:

t bat (HTTP), dni - 2013

t bat (CoAP), dni - 11013

Obliczenia te przeprowadzono na parze węglowo-cynkowych baterii AA, ale wyraźnie widać, że CoAP zużywa znacznie mniej energii, więc warto się zastanowić. Jego „tryb pchania”, jak opisano w artykule, wydaje się dokładnie tym, co planujesz zrobić.

Chociaż nie pytałeś konkretnie o CoAP, myślę, że warto o tym wspomnieć, ponieważ Goufalite omówił już istotne różnice między MQTT a HTTP. Dobrą zasadą jest: czy planujesz komunikować się jeden na jednego , czy jeden na wielu ? Jeśli to pierwsze, HTTP i CoAP wydają się lepiej dopasowane. Jeśli to drugie, MQTT jest prawdopodobnie wygodniejsze.

Aurora0001
źródło