Чи підходить протокол MQTT для передачі показань датчика через BLE?


12

Припустимо, що є численні слабкі датчики (наприклад, пристрої рівня Arduino), які покладаються на BLE як засіб зв’язку і що ці пристрої підключені до більш потужного шлюзу (наприклад, пристроїв Raspberry pi).

Мені хотілося б знати, чи вважається MQTT відповідним протоколом для передачі їх читання (короткі, часті бурхливі повідомлення).

Ряд блогів / документів вважають MQTT придатним для "IoT-додатків", оскільки він легкий (ер) ваговий у порівнянні з HTTP та зберігає потужність. Однак, наскільки я розумію, це вимагає, щоб з'єднання було відкритим, що не стосується BLE або інших протоколів зв'язку, відповідних IoT. BLE не підтримує зв’язок відкритим протягом тривалого періоду часу для резервування енергії. Мабуть, MQTT підходить, коли використовується протокол рівня MAC, такий як WiFi. Це майже порушує обґрунтування використання MQTT в першу чергу (тобто, якщо пристрій обчислювано обробляє такий протокол, як WiFi, він може не потребувати такого протоколу, як MQTT). Ви бачите недолік у цій логіці?

Чи є альтернативний протокол рівня додатків для цієї мети? Яка структура часто зустрічається такого типу повідомлень (наприклад, необроблені двійкові дані, JSON, XML), коли вони спілкуються із шлюзом та безпосередньо спілкуються із сервером?


Невже власний механізм BLE не підходить для будь-якої конкретної причини?
Шон Хуліхане

Питання Шона, можливо, найкраще розділити на дві частини - A) - це вбудовані механізми протоколу BLE, які підлягають безпосередньому зв’язку з пристрою, і B) куди в кінцевому підсумку потрібно відправити дані? Якщо відповідь на частину B виходить за межі BLE, тоді потрібен міст (принаймні між радіоформатами, але, ймовірно, і протоколами).
Кріс Страттон

Чи споживає шлюз необроблені показання чи просто ретранслює їх, і в цьому контексті чи має сенс тунель MQTT від кінця до кінця, а не мосту BLE, що є рідним для MQTT на шлюзі?
Шон Хуліхане

Відповіді:


14

MQTT повинен працювати через TCP / IP (я не можу пригадати, чи він насправді є у специфікації чи чи достатньо припущень, щоб зробити це так), але його сестринський протокол MQTT-SN може працювати над майже будь-яким протоколом, який може передавати дані , Я бачив реалізацію в UDP та серійних.

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

Я думаю, що одне з важливих, що слід пам’ятати, - це те, що означає «Я» в IoT, це передбачає доступ до Інтернету в якийсь момент (навіть якщо це пристрій шлюзу або телефон). На той момент MQTT може бути дуже корисним, але це не обов'язково означає весь шлях до (кровотечі) краю.


Перш за все, дякую, що повідомили мені про існування MQTT-SN. Переважна більшість літератури дещо вводить в оману, оскільки це означає, що MQTT надає можливості кращим пристроям здебільшого завдяки атрибутам енергозбереження. У цьому випадку зменшене споживання електроенергії - це не стільки справжній аргумент, оскільки для пристроїв із таким профілем це просто не має значення. Пристрої повинні реалізувати повний стек IP, і оскільки MQTT підтримує відкрите з'єднання, енергоефективні протоколи протоколу MAC - це не варіант.
dr.doom

1
MQTT дійсно економить енергію в порівнянні з чимось на зразок HTTP, оскільки відкрите TCP-з'єднання насправді не споживає стільки енергії, щоб залишатися відкритим після того, як ваш уже запущений TCP-стек, а пакети залишаються живими. Також накладні витрати на протокол значно нижчі, ніж HTTP, оскільки заголовок HTTP величезний порівняно з заголовком пакету MQTT. Багато літератури для обчислень базується на стільниковому пристрої, наприклад, телефон
hardillb

Також край перемістився, він колись зупинився TCP / IP, такі речі, як ble та ZigBee (особливо з lpwan), а також процесори з меншою потужністю перейшли на ще тонші пристрої
hardillb

Це явно не лише TCP / IP; єдина вимога - протокол повинен забезпечувати "впорядковані без втрат двосторонні з'єднання". Це як другий абзац реферату документа. SN існує тому, що ця вимога є обтяжливою для малих систем, особливо таких, що базуються на радіо. Можливо, саме це ви маєте на увазі під "досить припущень, щоб зробити це так", але це, безумовно, не залежить від TCP / IP.
Дейв Ньютон

9

Можливо, вам краще зробити просте відображення даних з парадигм BLE в MQTT, а не намагатися буквально надсилати MQTT через BLE.

BLE зазвичай обмінюється даними у вигляді характеристик . У них є різні унікальні BLE механізми для виявлення змін вартості, які можуть бути вам корисними. Але у них максимальна довжина даних - 20 байт .

Це можливо , щоб потік послідовних даних через BLE, переміщення 20 байт за один раз. Іноді це робиться для впровадження віртуального послідовного порту, і ви можете тунель повного MQTT через це.

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

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

Ви повинні зробити це в одному або в обох напрямках: BLE-> MQTT і MQTT-> BLE


5
Якщо ви хочете міст MQTT
hardillb

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