Energomonitor пусна нов иновативен Gateway с отворен код
През март тази година, софтуерния инженерен екип на Energomonitor Czech Republic разработи и пусна иновативния transparent MQTT-SN gateway Bisquitt. Той предоставя опростен, сигурен и базиран на стандарти начин за свързване на IoT устройства с ограничени ресурси към MQTT инфраструктура. Bisquitt поддържа повечето функции на MQTT-SN 1.2 , като позволява сигурна комуникация с помощта на DTLS 1.2 и внедрява разширение за удостоверяване, базирано на черновата на MQTT-SN 2.0 . Разработен е като проект с отворен код.
Защо разработихме Bisquitt?
Преди няколко години започнахме разработването на ново устройство — универсален интелигентен електромер. Трябваше да може да комуникира през NB-IoT мрежата, която не позволява TCP/IP, а само UDP. Това означаваше, че не можем да комуникираме с устройството с помощта на MQTT , протокол, който използваме в нашите съществуващи продукти. Започнахме да търсим алтернативи.
Процесът на създаване – CoAP
Първата алтернатива, която опитахме, беше CoAP . Това е лек HTTP-подобен протокол, подходящ за използване в устройства с ограничени ресурси в мрежи без връзка. Прототипирахме реализацията му във фърмуера на устройството и на сървъра и започнахме да го тестваме. Веднага открихме, че ще трябва да съпоставим нашите протоколи на ниво приложение, които се базираха на модела pub-sub на MQTT, към семантиката на CoAP заявка-отговор. Това се оказа доста проблематично. Най-големият проблем беше комуникацията от сървъра към устройството, която работи гладко в MQTT, но е трудно да се приложи добре в CoAP. Като цяло резултатите не бяха убедителни и потърсихме други решения.
Следващата технология – MQTT-SN
Следващата технология, която разгледахме, беше MQTT-SN . Неговите дизайнерски цели са подобни на CoAP, но най-важното е, че MQTT-SN се основава на MQTT и поддържа своята семантика. Беше ясно, че MQTT-SN ще реши проблема ни и ще ни позволи да запазим нашия протокол на ниво приложение по същество непроменен.
За да се интегрира MQTT-SN устройство в света на MQTT, трябва да се настрои MQTT-SN gateway, който да превежда между двата протокола. Така че започнахме да търсим такъв. Резултатите от нашето търсене бяха разочароващи. Намерихме няколко проекта, но по-задълбочен поглед разкри, че всички са непълни, неподдържани или просто не работят. Това ни постави в трудна ситуация – или трябваше да се върнем към CoAP, което беше далеч от идеалното, или да положим значителни усилия за развитие, за да създадем работещ MQTT-SN gateway. След известно обмисляне решихме да направим второто и започнахме да работим върху Bisquitt. Решихме също така да публикуваме Bisquitt като проект с отворен код, така че другите да могат да се възползват от нашите усилия. И това е мястото, където сме в момента.
Развитие и планове
Написахме Bisquitt в Go, защото използваме този език широко в Energomonitor и нашите разработчици го познават добре. Той също така отговаря добре на задачата – ние особено ценим неговата производителност, модел на едновременност, цялостна устойчивост и богата екосистема от инструменти и библиотеки. Ние частично базирахме Bisquitt на gnatt, съществуваща реализация на MQTT-SN в Go.
Нашата цел е проста, но амбициозна. Възнамеряваме Bisquitt да бъде най-добрият и най-широко използваният MQTT-SN gateway с отворен код. За да постигнем това, възнамеряваме да инвестираме значително в развитието му през следващите месеци и години. Също така планираме да проследим развитието на MQTT-SN 2.0, новата версия на протокола MQTT-SN, разработена от консорциума OASIS, и да добавим неговата поддръжка към Bisquitt с течение на времето.
Научете повече
За да научите повече за Bisquitt и неговите функции, разгледайте неговото GitHub. Кажете ни какво мислите в дискусията там и не се колебайте да изпращате проблеми или заявки за изтегляне!
Автор на публикацията: David Majda, Software Development Lead at Energomonitor.