С развитием средств коммуникаций и вычислительной техники большое распространение получают технологии интернета вещей (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)


  1. hobogene
    01.06.2022 18:17
    +1

    Zigbee все-таки нынче пишется как Zigbee, а не как ZigBee :-) И сравнивать его с MQTT, а MQTT с ним IMHO немного неверное (и наличие zigbee2mqtt не оправдание).

    Z-Wav на картинке - это Z-Wave, поди?


    1. CodeInsideTeam Автор
      02.06.2022 13:21

      Большое спасибо за ваше внимание! Уже исправлено)


      1. hobogene
        02.06.2022 18:00

        Zigbee-то в тексте поправьте, это должно быть даже легче :-) Бывший Zigbee Alliance очень большое значение этому придавал :-) Специальное решение принимал о замене большой буковки на маленькую :-) Больше особо нечем иногда им заняться было, кончили тем, что и Альянс переименовали напрочь :-) Но проявите уважение :-)


        1. CodeInsideTeam Автор
          03.06.2022 11:18

          Готово)


  1. avshkol
    01.06.2022 19:51
    +1

    А СПОДЭС и ГОСТ Р 58940-2020 - Требования к протоколам обмена информацией между компонентами интеллектуальной системы учёта и приборами учёта - как-то охвачены этими протоколами?


    1. hobogene
      02.06.2022 05:40

      Да, отличный вопрос. Прямо даже как-то удивляюсь, что про DLMS и его отечественные изводы ни слова. Учитывая, что "Россети" всех (производителей ПУЭ) в жесткой форме сподвигли его поддерживать.


      1. CodeInsideTeam Автор
        02.06.2022 14:06

        Все верно. Этот протокол и не рассматривался в статье, т.к. он достаточно жестко прописан в законе и выбора нет.


        1. hobogene
          02.06.2022 20:14

          Закон - это вы ГОСТ имеете в виду? Так на MQTT вроде тоже есть. Правда, только на 3.1.


  1. Paultino
    02.06.2022 09:16

    Про KNX не соглашусь по всем пунктам.

    Прочитать стандарт надо. Производить что-то своё - надо лицензировать, чтобы было совместимо с другим оборудованием

    SNMP мало распространен? Мало доступен??


  1. 1cetouch
    02.06.2022 11:24

    Немного внесу дополнения, так как работал с проколами в автоматизации(изучал их архитектуру и api) и работал над нашим российским протоколом bus77 - https://github.com/iRidium-Mobile/BUS77-SDK. Советую его брать за основу, так мы все-таки имели весомый опыт работы с протоколами.

    На базе него и линейку оборудования запилили с релейными блоками, мультисенсорами и диммерами. Кстати, работая над диммером серьезно так перетряхнул DALI и DALI2.

    Теперь по статье и протоколам:
    Очень странная градация на IOT и не имеющие отношения. Большинство производителей оборудования со своим протоколом имеют IP шлюз, который позволяет с ними комфортно работать.

    1. Изучение этих протоколов - это лишь верхушка айсберга и они в себе несут жуткое легаси и проблемы с обнаружением устройств на большой шине, их удаленному программированию.

      Помню разрабатывали шлюз для KNX и его отладка - это настоящая страдание, особенно, когда заморачиваешься с безопасностью и нормальной работой с большой шиной.

    1. Протоколов на самом деле гораздо больше HDL, Lutron, Crestron, Dali и еще десятки других производителей, и каждый стремится написать свой:)

    2. Распространенность протоколов я бы поделил на два типа : народные(так сложилось исторически и они бесплатны) и коммерческие (более молодые, имеют интересную модель продвижения за счет дилеров и поддерживаются государством, прим. KNX прописанный в официальных требования государств к системам автоматизации).

    3. Коммерческие протоколы для изучения зачастую закрыты и требует состоять в ассоциациях и за доступ к документации просят денежные средства, порой немалые.

    4. Что касается, сауреса, МТС и устройств Сбера, то считаю такие протоколы гавношлепничеством. Очень убыточны. Это как детские забавы, чтобы быстро выйти на потребительский рынок и продать Г.

    5. Автор забыл самое главное, что требуется от шины - это надежность. Различные таймеры, расписания, системы измерения, работа без шлюза ставят перед создателями протокола интересные задачи и не каждый реализует их нормально. Так как сложная логика влечет сложные кейс применения, которые надо тщательно прорабатывать.

    6. Про контейниризацию забавно(утопия для детей)... Порой новые устройства поддерживают какой-то свой особенный функционал, отличный пример KNX. Где производители устройств не используют полностью протокол, потом ставят аналог от другого производителями со "своими " особенностями и он нормально не отрабатывает из-за того, что те снова использовали часть функционала из протокола.

    В свое время очень понравился подход www.beckhoff.com порывшись в их документации можно много интересного найти. Отлично подходят к конструированию устройств и соответствии их со всеми нюанасами протоколов. Может кому полезно будет:)