Чи потрібно використовувати MQTT або HTTP?


9

Я працюю над приладом, який має сенс і збираю інформацію з навколишнього середовища, наприклад температуру, вологість тощо.

Пристрій не підключено до жодного джерела живлення, але він має батарею та сонячну панель для зарядки.

Він майже в стані глибокого сну більшу частину часу, і він прокидається лише тоді, коли потрібно відчути та передати дані. Ця операція займає близько 1-2 хвилин, після чого вона знову йде спати.

Я не фахівець у цій галузі, але я вважаю, що MQTT має бути хорошим варіантом, якщо пристрою потрібно постійно бути доступним для отримання повідомлень з теми, але в моєму сценарії він лише читає датчики та надсилає дані на періодично сервер.

В даний час я надсилаю дані через HTTP, але мені цікаво, чи є сенс впроваджувати MQTT? Чи варто отримувати якусь перевагу над HTTP для цього сценарію?


1
Це схоже, але моя суть полягає в тому, щоб зрозуміти, чи потрібно мені реалізовувати MQTT у моєму сценарії: коли мій пристрій перебуватиме в режимі глибокого сну 99% часу і просто прокидається для надсилання показань.
зефракс

1
Я б не запропонував жодного. По-перше, випишіть свої вимоги та застосуйте найпростіший протокол. Не було б сенсу використовувати двигун Ferrari в газонокосарки, щоб скосити траву. Не зациклюйтесь на неяскравості речей - Просто виконайте свої основні дослідження та виконайте те, що найкраще працює.
Xofo

Було б непогано зафіксувати вимогу в заголовку запитання, я думаю, загалом, ви запитуєте про невеликі, нечасті значення датчика, я думаю.
Шон Хуліхане

@Xofo Мені було б цікаво дізнатися відповідь навколо цього, і чому ви можете запропонувати використовувати спеціальний протокол. Чи варто докладати додаткових зусиль, щоб "прокати свою", а також проблеми безпеки тощо?
Aurora0001

Не користувацький протокол ... Я сказав, що спочатку визначте вимоги. Деякі протоколи, що виписані, часто є занадто важкими.
Xofo

Відповіді:


8

Якщо ви зберігаєте дані, просто дотримуйтесь HTTP. HTTP - це лише односторонній сигнал.

Якщо ваш сервер чи будь-яка інша «річ» повинна реагувати на конкретний сигнал (низька температура, ...), тоді використовуйте MQTT. Як і це, багато пристроїв можуть підписатися на ваш температурний сигнал і негайно реагувати, не використовуючи ваш сервер.


1
Також існує поділ між великою (http) та малою (mqtt) кількістю даних одночасно, а також mqtt є більш надійним у поганих умовах сигналу.
mico

1
Сервер отримує дані лише від датчиків. Справа в моєму дописі полягає в тому, що я не впевнений, чи є сенс використовувати MQTT, оскільки пристрій перебуватиме 99% часу в режимі глибокого сну (усі шини, модем, датчики вимкнено), і це лише прокидається, щоб прочитати датчики та надіслати дані.
зефракс

Якщо ви зберігаєте свої дані десь, це означає, що у вас є база даних та резервний спосіб їх запиту (сервер apache, командний рядок SQL, ...). Якщо ви помістите MQTT поверх цього, у вас буде інший екземпляр і порт для управління.
Гуфаліт

1
Я згоден з цією відповіддю. Якщо вам не потрібно двостороннє спілкування, і пристрій спить багато часу, то HTTP - це простий і підходящий вибір протоколу.
TheMagicCow

8

Ви згадуєте сонячну панель та акумулятор як частину пристрою, тому ви, мабуть, хочете мінімізувати споживання електроенергії під час передач, щоб переконатися, що у вашого пристрою повністю не вичерпується живлення.

Таким чином, ви можете розглянути питання про COAP , то Co nstrained A рименение P rotocol, який розроблений спеціально для пристроїв з обмеженими в Інтернеті речей.

У статті Порівнюючи економічну ефективність CoAP та HTTP у додатках Web of Things , ви можете знайти досить переконливі докази того, що CoAP може отримати тут економію енергії. У додатку A (стор. 38) ви можете ознайомитись із очікуваним терміном роботи акумулятора пристроїв у таблиці A.4. Проміжок часу в 120 секунд, як ви очікуєте у вашому випадку використання:

t кажан (HTTP), дні - 2013

т кажан (CoAP), днів - 11013

Ці розрахунки проводилися на парі вугле-цинкових батарей AA, але ви чітко бачите, що CoAP використовує набагато менше енергії, тому, можливо, варто задуматися. Його режим "натискання", як описано в статті, здається саме тим, що ви плануєте зробити.

Хоча ви конкретно не питали про CoAP, я думаю, що це варто згадати, оскільки Goufalite вже покрив істотні відмінності між MQTT та HTTP. Хорошим правилом є: чи плануєте ви спілкуватися один на одного чи один на багатьох ? Якщо це колишній, HTTP і CoAP здаються більш підходящими. Якщо це останнє, MQTT, напевно, зручніше.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.