Интеграция устройств NetPing в систему умного дома OpenHAB

OpenHAB — одна из самых популярных и универсальных платформ для построения ‎умного дома. Этот open-source-проект поставил своей целью вывести интернет вещей на качественно новый уровень, объединяя разные устройства различных вендоров в единую экосистему и позволяя управлять ими из одной точки. Настройка NetPing в OpenHAB достаточно тривиальна, поскольку устройство поддерживает различные способы управления, в том числе и по SNMP-протоколу. Эти устройства в целом предназначены для работы в серверных помещениях для мониторинга и удаленного управления электропитанием, но они легко интегрируются в ‎умный дом для выполнения различных задач.

Ценность ‎умного дома не столько в том, чтобы отображать текущее состояние устройств, сколько в том, что можно запрограммировать реакцию каждого из устройств на изменения, происходящие в системе. Разумеется, чтобы это сделать, надо иметь не только устройства, позволяющие считывать состояние системы с датчиков, но и устройства с исполнительными механизмами, например, управляющие подачей электричества.

В этой статье мы покажем, как развернуть умный дом OpenHAB на популярном одноплатном компьютере Raspberry Pi, а также как управлять периферийными устройствами.

Установка OpenHAB на Raspberry Pi

Основной проблемой при построении систем умного дома, как ни странно, является vendor lock-in. Каждый производитель соответствующего оборудования, будь то умные лампочки, розетки или приводы штор, старается сделать так, чтобы оно функционировало корректно только в рамках его собственной экосистемы. Это может быть мобильное приложение, какой-нибудь облачный сервис или аппаратный контроллер.

Рядовому пользователю такой подход создает одни проблемы, поскольку в доме чаще всего уже есть устройства с «‎умными»‎ возможностями, которые он не станет выкидывать. Тут основная задача — создать некий слой абстракции, который будет общаться с конечными устройствами на их собственном ‎языке‎, а для пользователя предоставлять эти устройства в виде универсальных ‎кирпичиков‎. Все так же, как в конструкторе Lego, где из разных деталей с единым способом крепления можно собрать сколь угодно сложную конструкцию.

Чтобы показать, как это работает, нам надо скачать OpenHAB и развернуть его. Поскольку эта система кроссплатформенная и написана на Java, ее можно запустить на любом компьютере, сервере, кофеварке или сетевом накопителе. Но самым простым способом будет развернуть OpenHAB на Raspberry Pi. Дело в том, что для этого одноплатного компьютера был создан образ операционной системы с предустановленным OpenHAB и зависимыми сервисами под названием OpenHABian.

Запись образа

Берем образ SD-карты с GitHub-репозитория в формате XZ и утилиту balenaEtcher, которая работает на всех популярных ОС: Windows, Linux и MacOS. Распаковывать архив с образом не требуется — Etcher умеет записывать образы напрямую.

Записываем образ на SD-карту, вставляем ее в Raspberry Pi, подаем питание и идем пить кофе на ближайшие 15–45 минут. Не забудьте снабдить «‎малинку»‎ сетевым кабелем с выходом в интернет. Все дело в том, что после запуска начинается процесс установки и обновления OpenHAB. Если все пройдет штатно, то через 45 минут максимум вы получите полностью рабочую платформу для домашней автоматизации.

При необходимости можно подключить внешний монитор или перейти в браузере по адресу http://openhab/ — там будет отображаться прогресс установки. Если кажется, что система зависла, не следует ее перезагружать, надо подождать несколько минут. Все дело в том, что скорость установки чаще всего зависит от скорости SD-карты, поэтому на медленных картах этот процесс может выполняться достаточно длительное время, не реагируя на действия пользователя. При возникновении сбоев можно заглянуть в документацию, где подробно описаны действия для исправления проблем.

Действия после первого запуска

После того как установка завершена, OpenHAB станет доступен как через веб-интерфейс, так и по SSH. Логин и пароль для входа — openhabian / openhabian. Перед тем как переходить к созданию системы умного дома,‎ нужно воспользоваться конфигуратором для настройки базовых параметров. Для этого следует зайти по SSH и использовать команду:

sudo openhabian-config

Как минимум стоит сменить пароли по умолчанию на свои, при необходимости сконфигурировать сетевые настройки и настроить время. Теперь можно смело переходить в веб-интерфейс по адресу:

http://IP_адрес_Raspberry:8080/

Главное окно веб-интерфейса OpenHAB

Рисунок 1 — Главное окно веб-интерфейса OpenHAB

Кратко опишем, что для чего нужно:

  • OpenHAB Log Viewer — позволяет посмотреть лог-файл в реальном времени и увидеть, как происходит обмен данными между устройствами и системой. Если что-то пошло не так — лог-файл подскажет, где возникла проблема.
  • OpenHABian Help — ссылка на документацию. OpenHAB имеет качественную и хорошо написанную документацию, а также развитое комьюнити.
  • BasicUI — веб-интерфейс управления умным домом, построенный на базе дизайна от Google. Пока не сформированы соответствующие файлы Sitemap, в этом разделе будет пусто. О том, что это такое, расскажем ниже.
  • Home Builder — генератор файлов. Позволяет создать базовый шаблон описания дома в текстовом виде с определенным синтаксисом. Пока что не будем его трогать.
  • Paper UI — мощный веб-интерфейс, через который можно настроить практически все в OpenHAB: привязать устройства, задать параметры, установить дополнения. Этот интерфейс будет нашим основным инструментом.
  • HABpanel — здесь будет интерфейс для пользователя умного дома, который мы создадим. Впоследствии, открыв эту панель, мы сможем не только просматривать информацию об устройствах, но и взаимодействовать с ними.

Теперь немного о терминологии и структуре элементов в OpenHAB. Мы уже упоминали, что эта система способна объединять устройства разных вендоров. Для этого используются дополнения под названием Bindings (привязки). Установив определенное дополнение этого типа, мы получаем поддержку желаемого типа устройств. Необходимые Bindings устанавливаются всего одним щелчком в разделе Add-ons — Bindings.

Выбор дополнений в OpenHAB

Рисунок 2 — Выбор дополнений в OpenHAB

Чтобы узнать, какой Binding подойдет для того или иного устройства, стоит зайти на сайт проекта, где не только перечислены все доступные варианты, но и детально рассказывается, как их использовать. В любом случае стоит отталкиваться от тех протоколов управления и мониторинга, которые поддерживает каждое конкретное устройство. Поскольку все оборудование NetPing поддерживает протокол SNMP, мы можем использовать его как для просмотра данных, так и для управления.

Настройка управления по SNMP

Чтобы OpenHAB получил поддержку SNMP-протокола, найдем соответствующее дополнение в разделе Bindings и установим его с помощью кнопки Install.

Поиск и установка дополнения SNMP Binding

Рисунок 3 — Поиск и установка дополнения SNMP Binding

После того как дополнение установилось, мы можем переходить к добавлению устройства в конфигурацию. Перейдем в раздел Things, нажмем на кнопку и выберем SNMP Binding — SNMP Target:Добавление устройства для управления по SNMP-протоколу

Рисунок 4 — Добавление устройства для управления по SNMP-протоколу

В поле Name задаем понятное название устройства, Thing ID генерируется автоматически, для обеспечения уникальности названия, однако его также можно поменять. Ключевыми параметрами являются IP-адрес или hostname устройства, версия SNMP-протокола и SNMP Community. Чаще всего производители используют public в качестве комьюнити, но это не слишком безопасно.

NetPing 2/PWR-220 v13/GSM3G по умолчанию имеет значение комьюнити — SWITCH. Посмотреть и поменять его можно через веб-интерфейс устройства.Настройка комьюнити в Netping

Рисунок 5 — Настройка комьюнити в Netping

Управление портами питания

Как только устройство добавлено, необходимо определить каналы взаимодействия. Переходим в раздел Configuration — Things — Имя_устройства. На странице устройства в подразделе Channels нажимаем на +.

Диалоговое окно добавления канала

Рисунок 6 — Диалоговое окно добавления канала

Выбираем тип канала из трех предложенных вариантов: NumberString или Switch. Поскольку мы будем управлять розетками на устройстве NetPing 2/PWR-220 v13/GSM3G, достаточно будет выбрать Switch. Теперь окно настройки трансформируется и нам становится доступно больше различных опций, наиболее важная из которых — OID.

Мы не будем утомлять вас разъяснениями протокола SNMP, отметим лишь то, что это числовое значение, разделенное точками, можно узнать, скачав MIB-таблицу вашего устройства NetPing и открыв его с помощью любой утилиты для работы с такими файлами, например iReasoning MIB Browser.

Остальное достаточно тривиально. Для переключателя задаем:

  • Mode — Read/Write,
  • Datatype — Integer 32 bit,
  • On-Value — 1,
  • Off-Value — 0.

После того как канал управления задан, осталось лишь включить его, поставив точку в синем круге напротив канала, и соединить это все с интерфейсом при помощи добавления Item c типом Switch. На следующем скриншоте хорошо видно, как формируется иерархическая структура: 

Устройство (NetPing)

    └ Канал управления (SNMP_Target:Thing_ID:SNMP_OID)

        └ Интерфейс для панели (PowerPort1)

Иерархическая структура

Рисунок 7 — Иерархическая структура

Теперь система полностью готова управлять заданной с помощью OID розеткой устройства, но у нее пока нет интерфейса, чтобы это сделать. В OpenHAB пользователь сам создает интерфейс для каждого элемента умного дома, и делается это через HABpanel.

Через нажатие на символ с шестеренкой последовательно создаем панель и добавляем туда виджет переключателя. Все корректно добавленные устройства будут отображены в openHAB Items.Виджет переключателя питания на розетке устройства NetPing

Рисунок 8 — Виджет переключателя питания на розетке устройства NetPing

Как только конфигурация сохранена и запущена, оба виджета позволят по щелчку управлять уже портами физического устройства. При нажатии система формирует и отправляет команду SNMP, а NetPing ее обрабатывает соответствующим образом, включая или отключая свои розетки питания 220 В.

 Пример созданного интерфейса в HABpanel

Рисунок 9 — Пример созданного интерфейса в HABpanel

Получение данных с датчиков

Поскольку NetPing поддерживает возможность подключения большого количества различных датчиков, можно считывать показатели с помощью SNMP. Для примера мы возьмем датчик температуры и влажности, предварительно посмотрев соответствующие OID в MIB-браузере.

Просмотр MIB-таблицы устройства NetPing

Рисунок 10 — Просмотр MIB-таблицы устройства NetPing

Get-запросы по найденным OID дают числовые значения температуры в градусах Цельсия и влажности в процентах. Теперь нам нужно, чтобы эти показания считывались и отображались в OpenHAB. Добавляем требуемые каналы к уже созданному устройству и точно таким же образом к интерфейсу.

Иерархическая структура

Рисунок 11 — Иерархическая структура

Для того чтобы данные постоянно обновлялись, можно задать принудительное автообновление через Configuration — Items — <Item> — Auto Update — Enforce an auto update.

Пример интерфейса на смартфоне с Android

Рисунок 12 — Пример интерфейса на смартфоне с Android

Соединение с облаком openHAB Cloud

Локальное управление умным домом на OpenHAB не проблема, но задача удаленного доступа может вызвать сложности. Требуется как минимум приобрести «‎белый» IP-адрес и правильно настроить проброс портов на роутере. В некоторых случаях эту задачу решить нельзя. Тут и приходит на помощь бесплатное облако MyOpenHAB.org, позволяя управлять умным домом из любой точки. Чтобы воспользоваться преимуществами облака, требуется регистрация, в которой будет запрошен уникальный идентификатор openHAB UUID и пароль openHAB Secret. Так что вначале получим эти данные.

Открываем Paper UI и устанавливаем соответствующее дополнение для синхронизации с облаком Add-ons — Misc — openHAB Cloud Connector — Install. Заходим на сервер при помощи SSH и выполняем две команды:

cat /var/lib/openhab2/uuid

Ответом будет наш openHAB UUID. Запишем его и теперь получим openHAB Secret:

cat /var/lib/openhab2/openhabcloud/secret

Также сохраняем полученную строку и приступаем к регистрации на сайте:

Модальное окно регистрации на myopenhab.org

Рисунок 13 — Модальное окно регистрации на myopenhab.org

Остальную работу облако сделает самостоятельно. После нажатия кнопки Register будет отображено окно, говорящее, что добавление локального дома в облако прошло успешно. Чтобы перейти в панель управления, будет достаточно нажать на ссылку:

Локальный умный дом на базе OpenHAB успешно подключился к облаку MyOpenHAB

Рисунок 14 — Локальный умный дом на базе OpenHAB успешно подключился к облаку MyOpenHAB

Таким образом, теперь можно будет управлять своим умным домом из любой точки мира, лишь перейдя по адресу https://home.myopenhab.org/start/index.

Как это работает? Все очень просто. OpenHAB с установленным openHAB Cloud Connector постоянно опрашивает адрес облака на предмет наличия действующего аккаунта, и если таковой найден, то присылает действующий IP-адрес и адрес порта для соединения. Поскольку соединение исходящее, то пробрасывать порты на роутере не требуется, равно как и покупать «‎белый» IP.

<=======================================================================>

Соединить Алису и OpenHAB для голосового управления после августа 2019 года стало невозможно. Причина: облако MyOpenHAB перестало поддерживать IFTTT из-за большой нагрузки на серверы.

При попытке соединить с Google Assistant ломается на этапе добавления облачного сервиса, несмотря на корректную авторизацию.

Единственный вариант интеграции — писать собственный бэкенд, что выходит за рамки данного материала и неприменимо для обычных пользователей.

https://community.openhab.org/t/no-item-expose-to-cloud/79037

https://community.openhab.org/t/myopenhab-not-reachable/76974

Инструкция https://habr.com/ru/post/412261/ более не актуальна и не может быть использована для интеграции.

?
×

    Получите бесплатную консультацию по выбору оптимального оборудования

    Наши операторы свяжутся с вами при первой возможности

    ×

      Обращение в техническую поддержку

      Сформулируйте, пожалуйста, тему и текст вашего обращения. Вам ответят в течении рабочего дня.

      ×
      Ваша заявка отправлена. Мы свяжемся с вами при первой возможности.