С развитием средств коммуникаций и вычислительной техники большое распространение получают технологии интернета вещей (IoT).
Концепция «умного» дома постепенно масштабируется до «умного» квартала и даже «умного» города. Одним из направлений автоматизации «умного» города является сфера жилищно-коммунального хозяйства.
В рамках этого направления возникают задачи по сбору, обработке и хранению данных с разных устройств, используемых коммунальными службами города, таких как датчики, счетчики, задвижки, реле и т. д.
Большой проблемой здесь является огромное разнообразие устройств и протоколов взаимодействия между ними, а также централизация сбора и обработки информации. Существующие в настоящий момент на рынке решения для домашней автоматизации не могут быть масштабированы до уровня города. В связи с этим возникает потребность в программных средствах для централизованного сбора и обработки данных с устройств.
На рынке «умных» устройств представлено огромное разнообразие программно-аппаратных решений по автоматизации. Эти решения варьируются от отдельных до комплексных устройств «под ключ», со своей спецификой работы и различными протоколами. Большой проблемой в данном случае является увязка всех доступных вариантов автоматизации в единую систему.
Одной из основных задач для разработчиков такой системы является обеспечение универсальности работы с различными коммуникационными протоколами передачи данных.
Решение этой задачи осложняет огромное разнообразие протоколов, а также отсутствие стандартизации и единых требований к средствам автоматизации. В идеале, нужно разработать систему, которая охватывает все представленные на рынке протоколы передачи данных в сфере IoT. Создание такой системы требует огромных трудозатрат и в долгосрочной перспективе нецелесообразно, в связи с уходом с рынка устаревших и приходом новых устройств и протоколов. Поэтому перед началом разработки системы необходимо провести сравнительный анализ существующих протоколов передачи данных и оценить возможность и целесообразность интеграции с устройствами, поддерживающих эти протоколы.
Википедия дает достаточно емкое определение протоколу связи.
Протокол передачи данных (протокол связи) — набор определенных правил или соглашений интерфейса логического уровня, который определяет обмен данными между различными программами. Эти правила задают единообразный способ передачи сообщений и обработки ошибок.
Все протоколы можно разделить на 2 большие группы.
Протоколы, используемые для IoT — сюда попадают протоколы связи прикладного уровня, применимые для интернета вещей. При этом на рынке доступны конечные устройства (датчики, счетчики и т.д.), реализующие работу по этим протоколам. В качестве примера можно привести такие протоколы как MQTT, ModBus, AMQP, XMPP, Zigbee.
Протоколы, не имеющие никакого отношения к IoT. К этой группе относятся любые протоколы физического, сетевого и др. уровней, не имеющие реализаций на прикладном уровне, либо протоколы прикладного уровня, не используемые в сфере интернета вещей. Примеры: Ethernet, TCP, RS-232, Icmp и др.
Отдельно здесь стоит выделить готовые облачные решения, которые предоставляют доступ к данным через API по протоколу REST. REST API не является протоколом для работы с устройствами IoT, но его необходимо учитывать для интеграций с облачными решениями.
Далее стоит провести классификацию протоколов из первой группы и понять приоритет и целесообразность реализации конкретных протоколов в рамках поставленной задачи.
Предлагается следующая сравнительная таблица протоколов.
Расшифровка критериев.
Возможность прямой интеграции означает возможность работы с протоколом «напрямую», без посредников в виде шлюзов или специализированных вычислительных устройств. Эта возможность сильно упрощает разработку на начальном этапе, а также позволяет организовать тестовый стенд без серьезных затрат.
Возможность интеграции со шлюзом. Для обмена данными с устройством требуется аппаратный или программный шлюз, который берет на себя задачи по обмену данными с устройством. Примеры: брокер mqtt, шлюз Zigbee. Если устройство подразумевает работу исключительно с аппаратным проприетарным шлюзом, то это сильно усложнит поддержку данного устройства и протокола. С другой стороны, открытый программный шлюз MQTT, который может быть легко развернут на виртуальной машине или в образе docker, не создает каких-либо сложностей в работе с устройствами.
Распространенность, доступность. Здесь учитывается доля устройств на рынке, открытость протоколов, полнота и доступность документации, а также тенденции к росту или уменьшению количества устройств, поддерживающих этот протокол.
Трудоемкость написания адаптера без тестового устройства — субъективный критерий, учитывающий открытость протокола, доступность документации, библиотек и программных средств для работы с этим протоколом. Подразумевает отсутствие доступа к устройству во время разработки, необходимость и сложность написания эмуляторов. Здесь большое преимущество имеют легковесные текстовые протоколы, такие как MQTT или AMQP.
Исходя из представленного сравнения протоколов, наиболее релевантной выглядит реализация поддержки протоколов MQTT и ModBus. Причины такого выбора достаточно очевидны:
широкая распространенность протоколов — на рынке присутствует множество устройств от разных производителей, поддерживающих эти протоколы;
открытость, доступность документации и библиотек и программных средств — протоколы хорошо документированы, есть библиотеки и прикладное ПО для работы на разных языках программирования.
К тому же, реализация поддержки этих протоколов позволяет опробовать подходы к работе как с бинарными протоколами (ModBus), так и текстовыми (MQTT), как с шлюзовыми решениями (MQTT), так и точка-точка (ModBus). Полученные наработки в будущем можно будет использовать при реализации поддержки оставшихся протоколов.
Облачные решения, такие как «Стриж», «Saures», «МТС» следует рассматривать по отдельности, т. к. логика работы и API у них могут значительно отличаться. Решение о поддержке следует принимать, исходя из доступности конкретного облачного решения в целевом регионе/городе, а также из требований потребителей системы автоматизации.
На первый взгляд, задача по написанию универсального средства автоматизации сбора данных с приборов учета кажется необъятной и усложненной, а поддержку огромного количества протоколов невозможно реализовать в рамках одного программного продукта или системы. Однако, анализ доступных решений и протоколов позволяет уменьшить список интерфейсов, необходимых к реализации, а также расставить приоритеты в работе с этими протоколами. Это дает возможность отработать основные принципы построения системы автоматизации на относительно небольшом наборе протоколов. К тому же, микросервисная архитектура и технология контейнеризации позволяет создать задел для достаточно простой интеграции новых реализаций протоколов и API в уже существующую систему.
Надеемся, были для вас полезными :)
Комментарии (10)
avshkol
01.06.2022 19:51+1А СПОДЭС и ГОСТ Р 58940-2020 - Требования к протоколам обмена информацией между компонентами интеллектуальной системы учёта и приборами учёта - как-то охвачены этими протоколами?
hobogene
02.06.2022 05:40Да, отличный вопрос. Прямо даже как-то удивляюсь, что про DLMS и его отечественные изводы ни слова. Учитывая, что "Россети" всех (производителей ПУЭ) в жесткой форме сподвигли его поддерживать.
CodeInsideTeam Автор
02.06.2022 14:06Все верно. Этот протокол и не рассматривался в статье, т.к. он достаточно жестко прописан в законе и выбора нет.
hobogene
02.06.2022 20:14Закон - это вы ГОСТ имеете в виду? Так на MQTT вроде тоже есть. Правда, только на 3.1.
Paultino
02.06.2022 09:16Про KNX не соглашусь по всем пунктам.
Прочитать стандарт надо. Производить что-то своё - надо лицензировать, чтобы было совместимо с другим оборудованием
SNMP мало распространен? Мало доступен??
1cetouch
02.06.2022 11:24Немного внесу дополнения, так как работал с проколами в автоматизации(изучал их архитектуру и api) и работал над нашим российским протоколом bus77 - https://github.com/iRidium-Mobile/BUS77-SDK. Советую его брать за основу, так мы все-таки имели весомый опыт работы с протоколами.
На базе него и линейку оборудования запилили с релейными блоками, мультисенсорами и диммерами. Кстати, работая над диммером серьезно так перетряхнул DALI и DALI2.
Теперь по статье и протоколам:
Очень странная градация на IOT и не имеющие отношения. Большинство производителей оборудования со своим протоколом имеют IP шлюз, который позволяет с ними комфортно работать.-
Изучение этих протоколов - это лишь верхушка айсберга и они в себе несут жуткое легаси и проблемы с обнаружением устройств на большой шине, их удаленному программированию.
Помню разрабатывали шлюз для KNX и его отладка - это настоящая страдание, особенно, когда заморачиваешься с безопасностью и нормальной работой с большой шиной.
Протоколов на самом деле гораздо больше HDL, Lutron, Crestron, Dali и еще десятки других производителей, и каждый стремится написать свой:)
Распространенность протоколов я бы поделил на два типа : народные(так сложилось исторически и они бесплатны) и коммерческие (более молодые, имеют интересную модель продвижения за счет дилеров и поддерживаются государством, прим. KNX прописанный в официальных требования государств к системам автоматизации).
Коммерческие протоколы для изучения зачастую закрыты и требует состоять в ассоциациях и за доступ к документации просят денежные средства, порой немалые.
Что касается, сауреса, МТС и устройств Сбера, то считаю такие протоколы гавношлепничеством. Очень убыточны. Это как детские забавы, чтобы быстро выйти на потребительский рынок и продать Г.
Автор забыл самое главное, что требуется от шины - это надежность. Различные таймеры, расписания, системы измерения, работа без шлюза ставят перед создателями протокола интересные задачи и не каждый реализует их нормально. Так как сложная логика влечет сложные кейс применения, которые надо тщательно прорабатывать.
-
Про контейниризацию забавно(утопия для детей)... Порой новые устройства поддерживают какой-то свой особенный функционал, отличный пример KNX. Где производители устройств не используют полностью протокол, потом ставят аналог от другого производителями со "своими " особенностями и он нормально не отрабатывает из-за того, что те снова использовали часть функционала из протокола.
В свое время очень понравился подход www.beckhoff.com порывшись в их документации можно много интересного найти. Отлично подходят к конструированию устройств и соответствии их со всеми нюанасами протоколов. Может кому полезно будет:)
-
hobogene
Zigbee все-таки нынче пишется как Zigbee, а не как ZigBee :-) И сравнивать его с MQTT, а MQTT с ним IMHO немного неверное (и наличие zigbee2mqtt не оправдание).
Z-Wav на картинке - это Z-Wave, поди?
CodeInsideTeam Автор
Большое спасибо за ваше внимание! Уже исправлено)
hobogene
Zigbee-то в тексте поправьте, это должно быть даже легче :-) Бывший Zigbee Alliance очень большое значение этому придавал :-) Специальное решение принимал о замене большой буковки на маленькую :-) Больше особо нечем иногда им заняться было, кончили тем, что и Альянс переименовали напрочь :-) Но проявите уважение :-)
CodeInsideTeam Автор
Готово)