Када причаш повежите милионе IoT уређаја За поуздану, лагану и безбедну комуникацију, назив који се увек појављује је исти: MQTT. Овај протокол је постао кључна компонента за сензоре, индустријске капије, паметне кућне уређаје и облачне платформе како би комуницирали без преоптерећења мреже или скока потрошње енергије.
Далеко од тога да је само „још један протокол“, MQTT се савршено уклапа са стварним потребама Интернета ствариНестабилне мреже, смешно низак пропусни опсег, веома ограничен хардвер, захтевна индустријска окружења или апликације скоро у реалном времену као што су сајбер фабрике, енергетска телеметрија или напредна кућна аутоматизација. Хајде да смирено и детаљно погледамо како то функционише, какву улогу игра у IoT повезивању, шта је MQTT гејтвеј и у којим специфичним случајевима има више смисла користити га у поређењу са другим опцијама.
Шта је MQTT и зашто је постао толико популаран у IoT-у?
MQTT (Message Queuing Telemetry Transport) је лаган, отворени стандардни протокол за размену порука Дизајниран посебно за комуникацију између машина (M2M) и, самим тим, за Интернет ствари. Његов циљ је веома јасан: да буде у могућности да шаље и прима податке између уређаја чак и ако је мрежа лоша, пропусни опсег ограничен, а уређај има веома мало меморије или рачунарске снаге.
За разлику од класичног клијент-сервер модела, MQTT користи архитектура објављивања/претплате Заснован је на централном посреднику који се назива брокер. Уређаји не комуницирају директно једни са другима, већ објављују поруке у одређеним темама и претплаћују се на теме које их занимају. Брокер је одговоран за пријем свих ових порука, њихово филтрирање и испоруку одговарајућим клијентима.
Овакав начин рада чини MQTT изузетно флексибилан и скалабиланУместо стотина или хиљада тешко управљивих веза од тачке до тачке, све је оркестрирано преко брокера, који може да обрађује од неколико уређаја до милиона, у зависности од имплементације и расположивих ресурса.
Кључне техничке карактеристике MQTT-а за IoT
Лаган и ефикасан протокол
Један од главних разлога зашто је MQTT толико популаран у IoT-у је тај што је смешно лаганИмплементација на уређају може захтевати врло мало кода и врло мало ресурса, што га чини идеалним за скромне микроконтролере, јефтине сензоре или опрему на батерије.
MQTT контролна порука у својој минималној верзији може имати само два бајта податакаШтавише, заглавља порука су веома компактна, што минимизира трошкове комуникације. Овај дизајн је савршен за сценарије са мала пропусност или скупе мреже (као што су неке ћелијске мреже или LPWAN), где је сваки бајт важан.
У поређењу са тежим протоколима, као што је HTTP са својим сложеним захтевима и детаљним заглављима, MQTT омогућава да оптимизује коришћење мрежеОво је критично када хиљаде уређаја комуницирају сваких неколико секунди.
Шаблон за објављивање/претплату са темама
MQTT је базиран на моделу публикација/претплата на темеТо су текстуални низови (у UTF-8) који организују информације у нивое. На пример, у паметној кући бисмо могли имати:
- кућа/дневна соба/температура
- кућа/кухиња/дим
- кућа/гаража/врата
Сензор температуре у дневној соби би објављивао своја очитавања на тему кућа/дневна соба/температураДок би се апликација за праћење претплатила на исту тему да би примала све долазне поруке. На овај начин, додавање нових уређаја или потрошача података је једноставно као користите одговарајуће теме, без потребе за променом постојеће инфраструктуре.
Овај систем, иако није баш класичан ред порука, прилично је сличан моделима заснованим на редовима: уређаји генеришу поруке и шаљу их централној тачки (брокеру), а затим Системи за обраду троше те податке према њиховим потребама. Ово знатно олакшава скалирање система повећањем броја потрошача без промене сензора.
Квалитет услуге (QoS) и поузданост
Многи IoT уређаји се повезују преко мреже са високом латенцијом, малим пропусним опсегом и ограниченом поузданошћукао што су неусклађене мобилне мреже или преоптерећене бежичне везе. MQTT укључује низ механизама како би се осигурала испорука порука у том контексту.
Протокол дефинише три нивоа квалитет услуге (КоС):
- QoS 0 – „највише једном“Порука се шаље само једном, без потврде. То је најбржи и најлакши метод, али неке поруке могу бити изгубљене.
- QoS 1 – „барем једном“Ово осигурава да порука стигне, иако би могла стићи дуплирана. Систем потврде се користи да би се гарантовала испорука.
- QoS 2 – „тачно једном“Ово је најробуснији ниво. Он осигурава да се свака порука испоручује једном и само једном, користећи четворофазно руковањеМало је тежи, али је неопходан у одређеним осетљивим случајевима.
Захваљујући овим QoS нивоима, MQTT се може прилагодити различити случајеви употребеод телеметрије где се ништа не дешава ако се одређени део података изгуби, до критичних система где би дуплирање или губитак поруке било неприхватљиво.
Управљање поновним везама и нестабилним мрежама
Још једна предност је што је MQTT дизајниран за окружења са честим искључењимаПротокол укључује функције које смањују време потребно да се уређај поново повеже са брокером, што је неопходно на мобилним или Wi-Fi мрежама сумњивог квалитета; побољшавајући безбедна WiFi веза може допунити ове могућности.
Поред тога, брокер може да управља задржаним порукама, стањима сесија и другим функцијама које омогућавају уређајима наставити комуникацију без губитка контекста сваки пут када мрежа падне и поново се укључи.
Сигурност и шифровање
У Интернету ствари, безбедност није опционална. MQTT укључује подршку за шифровање и аутентификација Ослањање на модерне протоколе: TLS 1.3 се може користити за шифровање канала, аутентификацију путем клијентских сертификата, OAuth и друге технике уобичајене у пословним и cloud окружењима.
Ово омогућава шифровање порука током преноса и примену Контроле приступа о томе ко може да објављује или се претплаћује на одређене теме, штитећи и поверљивост и интегритет информација, што је посебно релевантно у индустријском, енергетском или здравственом окружењу.
Опсежна подршка на свим језицима и платформама
MQTT има зреле имплементације брокера и клијената на више језика (Python, C, C++, Java, JavaScript, Go, итд.) и са веома активном заједницом. Ово програмерима олакшава интеграцију IoT уређаја са постојећим системима, базама података, алатима за велике податке или услугама у облаку без поновног измишљања топле воде.
Будући да је протокол отвореног кода са добро тестиране библиотекеКрива учења је релативно кратка, а ризик од проблема са компатибилношћу је смањен, што га чини веома атрактивним за пројекте, од малих прототипова до масовних примена.
Улога MQTT брокера у IoT архитектури
Брокер је језгро било које архитектуре засноване на MQTT-уТо је компонента која прима све поруке, обрађује их и дистрибуира клијентима претплаћеним на одговарајуће теме.
Међу његовим главним функцијама су:
- Примите информације објављене од стране клијената (сензори, капије, апликације итд.).
- Декодирајте и филтрирајте поруке у зависности од теме, нивоа QoS-а или безбедносних правила.
- Утврдите који су купци заинтересовани у свакој поруци (у складу са вашим претплатама).
- Пренесите поруке циљним купцимапоштујући политике QoS-а и ауторизације.
Постоји више имплементација брокера, обе отвореног кода, као и комерцијалниЈедан од најпознатијих је Mosquitto, који се широко користи у кућним окружењима, код произвођача, али и у озбиљнијим применама, а омогућава управљање од неколико до хиљада клијената са релативно једноставном конфигурацијом.
MQTT у пракси: Arduino, ESP8266 и локалне мреже

У многим кућним или полупрофесионалним IoT пројектима, прилично типичан сценарио укључује MQTT брокер који ради на Raspberry Pi-ју или PC-ју унутар локалне мреже и разних уређаја као што су Ардуино са апликацијом Ардуино ИоТ Цлоуд Ремоте или ESP8266 повезани као клијенти.
На пример, могли бисте имати Ардуино са DHT22 температурним сензором који објављује периодична очитавања на тему као што је кућа/дневна соба/температураУ међувремену, други Ардуино или мобилна апликација се претплаћује на исту тему како би приказивала температуру у реалном времену. Брокер, у овом случају Mosquitto, је одговоран за примање порука са првог Ардуина и њихово слање другом, без потребе да се међусобно познају или да управљају директном везом.
Ова архитектура има једну велику предност: Скалабилно је готово без напораМожете додати више сензора, више потрошача података и повезати их са базама података, системима машинског учења или контролним таблама за визуелизацију без мењања понашања већ распоређених уређаја. Само треба да експериментишете са темама и претплатама.
Зашто MQTT, а не само HTTP?
Веома често питање је да ли се заиста исплати користити MQTT када бисте, наизглед, могли да решите све са... директни HTTP захтеви на ESP8266 или слично, отварањем порта на рутеру и то је то, или чак са ВебСокети на Андроиду.
Одговор је да, иако технички могуће, MQTT нуди неколико важних предности:
- Мања просечна латенција и мање оптерећења у честим комуникацијама, посебно код кратких порука које се шаљу сваких неколико секунди.
- Нативни паб/сабМобилни телефон не мора директно да комуницира са сваким уређајем; потребно је само да комуницира са брокером.
- Централизовано управљање безбедношћу и аутентификацијом на брокеру, уместо реплицирања логике на сваком уређају.
- Лакоћа скалирањаАко сутра пређете са 5 на 500 уређаја, не морате да отварате 500 портова или редизајнирате целу топологију.
- Изворна подршка за поновно повезивање и QoS размишљајући о нестабилним мрежама, нешто што HTTP не нуди подразумевано.
У типичном сценарију, ваша мобилна апликација би се повезала са MQTT брокером (било унутар локалне мреже користећи преусмеравање портова, или са cloud брокером), објавила поруку у контролној теми (на пример кућа/дневна соба/светло/гарнитура), а ESP8266, претплаћен на ту тему, би примио команду готово тренутно. Само треба да откријете брокера.не сваки уређај на мрежи.
Што се тиче сервиса попут io.adafruit.com и њихових интервала активације (сваких 15 минута у бесплатној верзији, сваких 5 секунди у плаћеној верзији), то је ограничења одређене услугеНије проблем сам MQTT протокол. Сам протокол омогућава веома ниску латенцију; проблем је што провајдер намеће ограничења фреквенције коришћења.
MQTT Gateway: капија између сензора и облака
Шта је MQTT гејтвеј?
Такозвани „MQTT гејтвеј“ или MQTT гејтвеј је, у суштини, посреднички уређај између сензора или локалних уређаја и IoT платформе или MQTT брокераЊегова главна функција је прикупљање података у различитим протоколима (нпр. Bluetooth, жични сензори, Modbus итд.), њихово претварање у MQTT и слање у облак или централном брокеру.
У многим случајевима, MQTT гејтвеј се имплементира као Етернет гејтвеј са специфичним софтвером који делује као MQTT клијент. Овај гејтвеј може имати радио интерфејсе, индустријске улазе и излазе или повезивање са филдбусом и одговоран је за превођење свега тога у MQTT језик ради њиховог обједињавања.
Предности MQTT гејтвеја (укључујући Bluetooth MQTT)
Гејтвеји засновани на MQTT-у, посебно они који интегришу Bluetooth, нуде неколико занимљивих предности:
- Веома лагане порукешто чини комуникацију ефикасном чак и када много сензора истовремено шаље податке.
- Двосмерна размена порукаОмогућавају комуникацију и између облака и између уређаја, не само узлазну телеметрију.
- Поуздана достава подржано нивоима QoS-а, осигуравајући да поруке стижу у складу са конфигурисаним нивоом гаранције.
- Уграђена сигурностГејтвеји обично подржавају TLS енкрипцију и аутентификацију сертификата, тако да подаци који пролазе кроз гејтвеј безбедно доспевају у облак.
У случају а MQTT Bluetooth гејтвејУређај скенира и детектује све BLE сензоре у домету, управља комуникацијом са њима и централизује пренос података до MQTT брокера. Из перспективе IoT платформе, сви ови Bluetooth сензори „говоре MQTT“, иако то заправо раде преко гејтвеја.
Како MQTT Gateway функционише и како га конфигурисати
Генерално говорећи, типичан ток MQTT гејтвеја је:
- Скенира и детектује сензоре и уређаје у свом домету (нпр. путем Bluetooth-а или жичних мрежа).
- Прикупите податке са тих сензора путем одговарајућих протокола.
- Преведите те податке у MQTT формат (дефинисање одговарајућих тема и корисних садржаја).
- Објавите податке о брокеру или на изабраној IoT платформи.
Конфигурација физичког гејтвеја прво укључује склапање хардвера: исправно ожичење, раздвајање између сензорских веза и радио модула и избор порта, MAC адресе и статичке IP адресе како би се осигурала јединствена идентификација на мрежи.
Затим, бирате модул који ће MQTT клијент покренути, на пример:
- Ардуино + W5100 Етернет модул.
- ЕСП8266 модул са WiFi конекцијом.
Фирмвер дефинише Теме објављивања и претплатеНа пример, префикс као што је MY_MQTT_PUBLISH_TOPIC_PREFIX/FROM_NODE_ID/SENSOR_ID може генерисати теме као што су mygateway1-out/2/1/1/0/49, док би се за слање команди сензорима користио префикс претплате као што је ПРЕФИКС_ТЕМЕ_ЗА_ПРЕТПЛАТУ_МОЈ_MQTTшто доводи до тема типа mygateway1-in/2/1/1/0/49.
Након конфигурације, топло се препоручује тестирање MQTT гејтвеја у односу на познатог брокера, као што је Mosquitto, да би се проверите да ли су поруке исправно примљенеОбјављени су у очекиваним темама и претплаћени уређаји добијају оно што би требало да добију.
MQTT Gateway као мост ка централном серверу
Када распоређујете MQTT уређаје на више физичких локација, обично вам је потребно консолидовати све те податке на дељеном серверу или на централизованој облачној платформи. Ту MQTT гејтвеј блиста као мост.
Идеја је да се инсталира MQTT гејтвеј на свакој локацији где постоје IoT уређаји. Сваки гејтвеј прикупља информације из свог локалног окружења, тј. Додај га и проследи га на централни сервер (или cloud брокера) користећи MQTT. На овај начин можете имати глобални преглед свих података без губитка локалне контроле и уз оптимизовану потрошњу мреже.
Поред тога, ови пролази могу безбедно са сопственим сертификатимаМеханизми за TLS шифровање и аутентификацију штите сензоре и IoT edge који остају „иза“ гејтвеја. Такође могу локално да чувају информације, прилагођавају кориснички интерфејс за управљање уређајима у близини и по потреби додају компатибилност са другим индустријским протоколима.
MQTT компатибилност са cloud платформама и другим протоколима
Једна од највећих предности MQTT-а је то што је Компатибилно са већином главних cloud IoT платформиМноги индустријски MQTT гејтвеји стандардно раде са:
- Азуре ИоТ.
- Гоогле Цлоуд ИоТ.
- АВС ИоТ.
- ИБМ Ватсон ИоТ.
Гејтвеј тумачи податке које прима од сензора и Преноси их на платформу у MQTT формату.Корисници се само требају претплатити на релевантне теме да би видели или обрађивали информације у било ком тренутку.
Штавише, многе од ових модних писта могу послужити као конвертор протоколаИнтеграцијом мрежа попут Modbus TCP-а са MQTT-ом и нудећи удаљене веб панеле за управљање групама уређаја, MQTT постаје централна компонента хибридних архитектура где наслеђени системи коегзистирају са новим IoT решењима.
Случајеви употребе MQTT-а и IoT-а у стварном свету
Индустријска окружења и телеметрија
У индустријском свету, MQTT је већ де факто стандард за пренос телеметријских података од сензора и опреме дистрибуиране у фабрикама, рударским операцијама, нафтним и гасним постројењима или пољопривредно-прехрамбеним компанијама.
Компаније инсталирају бројне сензоре који мере параметре као што су температура, притисак, проток, вибрације и потрошња енергије. Ови подаци се шаљу путем MQTT аналитичким системима који Они откривају недоследности, трендове и могућности за побољшање. у операцијама. Захваљујући томе, процеси се могу оптимизовати, кварови предвидети, а непланирани застоји смањити.
Мреже широког подручја мале снаге (LPWAN)
LPWAN (Low Power Wide Area Network) мреже су дизајниране да уређаји са веома малом снагом који шаљу мале поруке на велике удаљеностиТипично, мреже са високом латенцијом и ограниченим пропусним опсегом су проблематичне. MQTT је савршено решење за ово окружење јер су његове поруке лагане, подржава квалитет услуге и прилагођава се непоузданим мрежама.
У компанијама које користе LPWAN за слање података сензора у cloud решења, MQTT омогућава преносе велике количине порука без преоптерећења мреже и осигуравајући, колико је то могуће, да подаци стигну до система за анализу и праћење.
Друштвене мреже и масовне поруке
Упечатљив пример употребе MQTT-а ван класичног индустријског окружења јесте онај од Facebookгде се користи као примарни комуникациони протокол за управљање огромном количином порука у реалном времену. Такође игра улогу у слању порука платформама попут Инстаграма.
Чињеница да компанија те величине клади се на MQTT појачава идеју да је то... робустан, скалабилан протокол погодан за сценарије са високом конкурентношћуне само за мале IoT пројекте.
Паметне куће и кућна аутоматизација
У домаћој сфери, MQTT је постао један од Омиљени протоколи за аутоматизацију паметних кућаБеспрекорно се интегрише са cloud платформама као што су Azure или IBM Watson, као и са локалним системима за аутоматизацију.
Са MQTT-ом можете пратити потрошња енергије у кућиконтролишу осветљење, прате температуру или квалитет ваздуха у реалном времену и координирају више уређаја (термостати, ролетне, системи за наводњавање итд.), укључујући уређаје као што су Ксиаоми Велабез потребе да сваки уређај директно комуницира са осталима. MQTT Bluetooth гејтвеј, на пример, може централизовати све BLE сензоре у кући и повезати их са једним брокером.
Аутомобилска секција
Дигитална трансформација у аутомобилској индустрији подразумева повезивање возила, производних линија и система управљања. MQTT се користи као поуздан канал за размену порука између облака и возилаомогућавајући слање телеметријских података, даљинску дијагностику и ажурирање параметара.
Ова могућност комуникације у готово реалном времену, чак и са променљивом мобилном повезаношћу, чини MQTT веома атрактивном опцијом за произвођаче аутомобила и пружаоце услуга.
Транспорт и логистика
У транспорту и логистици, капацитет праћење возних паркова и робе у покрету Кључно је. MQTT се користи за слање података о позицији, статусу терета, догађајима отварања врата или условима околине унутар контејнера.
Коришћењем лаганог система за размену порука и архитектуре засноване на брокерима, могуће је пратите велике возне паркове у реалном времену са малом латенцијом и без преоптерећења мобилних или сателитских мрежа које се користе за везу.
Скалабилне архитектуре и раздвајање између хардвера и софтвера
Једна од великих предности усвајања MQTT-а у IoT пројекту је то што омогућава јасно одвојите хардверски слој од софтверског слојаСензори и уређаји се баве само слањем података брокеру и примањем команди из одређених тема; све што се дешава одатле (складиштење, анализа, визуелизација) може се развијати независно.
Овај приступ често подсећа на образац микросервисагде свака компонента ради једну ствар и ради је добро. У нашем случају, хардверски уређај се фокусира на мерење и објављивање; друге услуге се баве обрадом, складиштењем, визуелизацијом или применом вештачке интелигенције, без потребе да сензор „зна“ било шта о њима.
Захваљујући овом раздвајању, ако сутра одлучите да пређете са једноставне веб странице за визуелизацију на Raspberry Pi-ју на сложени систем великих података и машинског учења У облаку, не морате да додирујете сензоре. Они ће наставити да шаљу податке брокеру, а ви ћете морати само да повежете нове потрошаче који се претплате на постојеће теме.
Заједно, MQTT и његови повезани gateway-и чине решење веома робустан за IoT повезивањеЛаган, скалабилан, безбедан, компатибилан са главним cloud платформама и подржава све врсте мрежа, од LPWAN-а до кућног WiFi-ја или индустријског Ethernet-а. Све ово, у комбинацији са моделом објављивања/претплате и могућношћу додавања gateway-а који премошћују протоколе, чини га једном од кључних компоненти на којима се гради садашњост и будућност Интернета ствари. Поделите информације тако да више корисника зна о овој теми.