Мы ежегодно проводим конференцию и выставку WBCE, где делимся не только опытом разработки и внедрений устройств автоматизации, но и рассказываем о новинках и планах на будущее.
Чуть раньше мы рассказывали, что было интересного на стендах, потом о новых устройствах, а сегодня расскажем про наше облако Wiren Board Cloud и планы по софту.
Если вам удобнее посмотреть видео — вот оно.
Wiren Board Cloud — задачи
У многих интеграторов в проектах работают десятки или даже сотни контроллеров, их нужно как-то инвентаризировать.
Сейчас люди составляют электронные таблички, заносят в неё серийные номера, ответственных лиц, ссылки на проект и вручную проставляют статусы систем. Конечно, все это очень неудобно.
Мы решили упростить эту задачу с помощью сервиса Wiren Board Cloud, а бонусом предоставить удалённый доступ к системе из коробки, хранение архивов данных и другие полезности.
Это уже продукт, которым пользуется более 700 пользователей и их число постоянно растёт. Ещё мы публикуем статус сервисов Wiren Board Cloud, его можно посмотреть здесь.
Итак, зачем нужен Wiren Board Cloud, чем он отличается от аналогов и какие фичи ожидают пользователей в будущем? На этот вопрос мы и ответим в этой статье.
Раскладываем контроллеры по полочкам
Когда у вас много контроллеров, да ещё и раскиданных по разным локациям, то у вас есть проблема их инвентаризации и отслеживания статуса.
В Wiren Board Cloud можно собрать информацию обо всех системах автоматизации на контроллерах Wiren Board в одном месте. Пользователь может распределить контроллеры по группам, указать местоположение, добавить комментарии и т. п. Серийные номера и версии установленного софта подтянутся автоматически, а самое важное — вы сможете увидеть статусы всех контроллеров разом и понять, если что-то сломалось.
Конечно, можно фильтровать список контроллеров по любому параметру или просто по подстроке.
Делимся доступом и приглашаем друзей
Если в компании на обслуживании много контроллеров, то возникает задача разграничения доступа к ним.
В Wiren Board Cloud можно создавать неограниченное количество организаций и пользователей внутри них, притом каждый пользователь может состоять сразу в нескольких организациях. Контроллеры также привязываются к организациям.
Модель ролей пока довольно простая: пользователь, администратор, владелец организации с разным уровнем доступа к системе.
В случае, если у компании много подразделений, например как у Магнита или Rostic’s, то, наверное, нет смысла подразделения описывать как отдельные организации. Так вы получите единый ситуационный центр и точку удалённого доступа к системам.
А если компания обслуживает нескольких клиентов, например Рекота, ЦОДУМ или Intelligent House, имеет смысл создать несколько организаций и гибко предоставлять доступ инженеру или монтажнику на уровне организаций.
Если вы же вы частный пользователь с единственным контроллером, то вы можете приглашать в свою организацию членов семьи или друзей, например.
Статусы, метка на карте и удалённый доступ
Если зайти на страницу контроллера, то там показано его местоположение на карте, метрики и произвольные примечания (ссылка на проект, например).
С этой же страницы можно открыть прямо в браузере консоль контроллера через SSH, зайти в его веб-интерфейс или открыть панели Grafana. Можно обновить софт и прошивку, посмотреть логи.
Дополнительные фото
Пользовательские панели
Отдельно стоит упомянуть возможности настройки панели пользователя. Такое полезно, например при автоматизации теплиц.
Первым делом настраиваете дашборды. Потом в браузере создаете закладки. В итоге при переходе по ссылке будет открыт нужный дашборд, да ещё с контролем доступа через облако. Если пользователь не авторизован, ему предложат ввести логин/пароль.
Еще можно использовать следующие параметры в адресной строке:
?fullscreen — делает веб-интерфейс более компактным;
?hmi — оставляет на экране только дашборд.
Если браузер запущен в режиме киоска, то адресная строка скроется и у оператора будет только то, что вы позволили ему видеть. Так работают примерно половина терминалов оплаты и куча банкоматов. Дашборды могут быть многостраничными, то есть и в режиме киоска можно создать несколько панелей и настроить реакцию на кнопки, чтобы между ними можно было переходить.
Дополнительные фото
Настраиваем контроллер в Челябинске из уютного офиса в Сиднее
Конечно, вы можете настраивать контроллер: изменять настройки сети, устанавливать софт, настраивать подключённые устройства и так далее. То есть монтажники могут смонтировать устройства локально, а инженер с высокой зарплатой сидит в офисе и не тратит время на командировки. При этом инженер может работать с несколькими объектами одновременно, настраивая их удаленно.
Консоль контроллера открывается прямо в браузере, поэтому вам не нужно ставить никакого стороннего софта типа Putty или запускать SSH в командой строке. Достаточно нажать на кнопку SSH на странице контроллера.
Также доступна загрузка/выгрузка файлов, в веб-интерфейсе можно писать скрипты, настраивать подключенные устройства и смотреть логи. Всю настройку теперь можно полностью делать удаленно.
Дополнительные фото
Веб-интерфейс Wiren Board Cloud адаптивный, с ним можно работать не только на настольном ПК или ноутбуке, но и на телефоне. Если что-то случится глубокой ночью, а инженер находится на даче за городом, он может оперативно зайти с телефона, открыть консоль и решить проблему или, как минимум, провести диагностику.
Для работы облака не требуется VPN или «белый» IP-адрес, все отлично открывается через NAT. «Пробрасывать» порты через роутер тоже не нужно. Мы намеренно отказались от VPN, чтобы сервис случайно не заблокировали в будущем при веерных блокировках.
То же самое касается и удаленного рабочего места оператора, все прекрасно работает через NAT.
Дополнительные фото
Добавляем контроллер в один клик
Чтобы добавить доступ к контроллеру через облако Wiren Board Cloud, достаточно нажать на ссылку в его веб-интерфейсе, затем следует создать учетную запись или указать существующую, выбрать организацию и добавить контроллер.
По умолчанию облако не подключено, то есть вы решаете, нужен вам этот сервис или нет. Здесь мы видим выгодное отличие от многих устройств конкурентов: никакого «принуждения к облаку» мы не делаем. Нужен сервис — пользуетесь, не нужен — можно его не активировать или вообще удалить, никакие данные никуда не уйдут.
Сегодня для активации облака нужно установить агента, но летом мы собираемся упростить процедуру. Агент будет поставлен автоматически, но по умолчанию выключен. Нужно будет активировать его вручную через веб-интерфейс и добавить контроллер в облако.
Для тех партнеров, кто закупает большое количество контроллеров, мы предложим автоматическое добавление контроллеров в облако прямо на производстве. Здесь не придется активировать агент и кликать мышкой в веб-интерфейсе каждого контроллера — все будет работать «из коробки».
Еще раз подчеркнем, что контроллеры Wiren Board не зависят от облака и работают автономно, даже когда они к нему подключены. Облако — это опция, а не обязательная функция. И в работе контроллера ничего не изменится даже при потере связи. При этом в облаке появится статус «контроллер недоступен», что сразу же увидит инженер, следящий за системами и сможет принять меры по решению проблемы со связью.
Wiren Board Cloud — что внутри
Открытый софт
Облако Wiren Board Cloud построено на современном программном стеке:
бэкенд — Django;
фронтенд – VueJS;
тоннели — frp (fast reverse proxy);
консоль в браузере — WebSSH;
база данных — VictoriaMetrics.
Изначально мы использовали InfluxDB, но мы столкнулись с проблемами производительности, поэтому сейчас мигрируем на VictoriaMetrics.
На контроллер устанавливается telgraf, наш агент на Python с открытым исходным кодом, и frpc (fast reverse proxy client).
Мы стараемся использовать открытое ПО, то есть все компоненты доступны и открыты. Такой подход позволяет вам и нам не зависеть от каких-то определенных компаний-разработчиков.
Туннели
Как мы выше писали, за туннели отвечает frp. Когда вы нажимаете на странице контроллера в облаке кнопку «SSH» или «веб-интерфейс», под капотом:
сервер выставляет флаг, что пользователь желает открыть туннель;
агент wb-cloud-agent через видит этот флаг, после чего создает через frpc (fast reverse proxy client) защищенный туннель на сервер.
Туннель подписывается ключом, который хранится на контроллере в специальном хранилище ключей.
Безопасность
Конечно, мы подумали о том, чтобы сделать Wiren Board Cloud безопасным.
Организации в облаке изолированы друг от друга. Пользователи одной организации в принципе не могут получить доступ к другой, то есть они не смогут авторизоваться. Доступ осуществляется через токены, трафик полностью шифруется.
В контроллере есть аппаратное хранилище ключей — в нем на производстве генерируется приватный ключ, который хранится только в контроллере. Также там есть публичный ключ, с помощью которого контроллер авторизуется в облаке.
После того, как мы убедились, что ключ контроллера верный, поднимается туннель. Такой подход нам позволяет исключить ситуацию, когда злоумышленник может выдать один контроллер за другой и получить доступ к данным чужой организации. То есть ключ привязан к контроллеру.
Подробнее про аппаратное хранилище читайте в статье Аутентификация устройств на Linux по аппаратному ключу в системах верхнего уровня.
Метрики
Для метрик мы используем telegraf, который забирает топики из MQTT. Далее возможна интеграция с любой средой, мы выбрали VictoriaMetrics. И затем эти метрики можно смотреть в облаке — это статусы контроллера в веб-интерфейсе облака. Также в планах предоставить доступ к метрикам через Grafana.
Метрики передаются по тем же шифрованным каналам связи.
SSH в браузере
Когда мы делали доступ к консоли контроллера, то хотели сделать так, чтобы не пришлось ставить дополнительный софт для этого.
Поэтому мы используем компонент WebSSH, который позволяет открывать SSH контроллера прямо в браузере, что позволяет получать доступ к консоли с любого компьютера или телефона с современным браузером. Если надо загрузить/выгрузить файлы контроллера, такой инструмент тоже есть.
Подключиться к консоли можно по логину и паролю, или с помощью ключа.
Дополнительные фото
Wiren Board Cloud — планы
Когда мы разрабатывали облако, то думали не столько об удаленном управлении, сколько о едином инструменте администрирования системы. Удаленный доступ — это своего рода «побочный эффект», который было легко сделать, поэтому и появился он в самом начале.
Встроенная Grafana
Мы планируем добавить мониторинг в Grafana. Конечно, прямо сейчас можно установить Grafana на сторонний сервер, настроить скриптами отправку данных и получить мониторинг.
В будущем установка Grafana уже не потребуется, поскольку все будет работать в облаке. Данные со всех контроллеров можно будет собирать в один дашборд, фильтровать их, настраивать индикаторы и т.д. Мониторинг полезен тем, что можно видеть развитие событий. Если отвалились 200 контроллеров, то вряд ли проблема в облаке или контроллерах, скорее всего, «упала» сетевая инфраструктура на производстве.
Дашборды в Grafana можно будет делать произвольные, а не только рекомендованные нами.
Можно сгенерировать и дать ссылку клиенту, который сразу же зайдет в дашборд Grafana, минуя шаги в облаке, но войдя под своим аккаунтом перед этим.
Доступ для техподдержки
У нас очень много пользователей контроллеров и часть из них обращается в нашу техподдержку за помощью. Мы подумали, что публичное облако может стать инструментом, который позволит с согласия клиента подключаться к его контроллеру и проводить диагностику.
Прямо сейчас это можно сделать через механизм приглашений: клиент отправляет приглашение на почту сотруднику, он добавляется к клиенту в организацию, делает что надо, а затем удаляется сам или клиент его удаляет. Но в этом способе есть проблемы: сотрудник или клиент могут забыть отключить доступ; если сотруднику надо привлечь коллег на помощь, придётся либо ещё раз просить приглашение, либо давать пароль от своего почтового ящика.
Мы планируем добавить специальную организацию «Техподдержка», куда мы добавим своих сотрудников техподдержки, а клиент сможет выдавать им временный доступ в пару кликов.
Конечно, это функция будет доступна компаниям с локальным вариантом облака, они смогут создать свой собственный отдел техподдержки.
Обновление софта контроллера
Мы постоянно совершенствуем софт своего контроллера: добавляем новые функции и поддержку новых устройств, улучшаем интерфейс, чиним обнаруженные ошибки и т.п.
Поэтому у нас есть система дистрибуции новых прошивок. Пользователь может обновить прошивку контроллера в консоли через apt или использовать образ прошивки в виде fit-файла, который можно залить с флешки или через веб-интерфейс. Этот способ хорошо работает, когда у вас несколько контроллеров, но когда их десятки и даже сотни — этот процесс занимает много времени.
Мы хотим сделать, чтобы можно было в один клик обновить прошивку выбранных контроллеров или всех сразу. Кроме того, можно будет выбирать версию релиза, на какой надо обновить контроллер.
Работа с конфигурациями
Поскольку у нас на контроллере Linux, а конфигурации хранятся в текстовых файлах, то бэкап или раскатку конфигурации на множество контроллеров можно сделать простым копированием файлов. То же касается и скриптов автоматизации, а также большинства конфигов стороннего софта.
Ещё один способ раскатки своей конфигурации на большой парк контроллеров — собрать свой образ прошивки в fit-файл и залить его стандартными средствами через флешку или веб-интерфейс контроллера.
Оба эти способа имеют недостатки — они требуют предварительной подготовки и усилий, а также сложно организовать версионирование конфигураций.
Мы сделаем инструмент, который позволит гибко управлять конфигурациями:
клонировать с одного контроллера на другой или несколько других;
сохранять версии конфигурации, чтобы иметь возможность откатиться в случае проблем;
добавлять в конфигурацию сторонний софт и его файлы конфигураций;
управлять конфигурациями не на уровне файлов, а fit-файлов с образами прошивки.
И всё это мышкой в веб-интерфейсе облака без необходимости заходить в консоль или веб-интерфейс контроллеров.
Фактически мы получаем тот самый бэкап, который от нас давно просят пользователи.
Подключение к стороннему софту
Контроллер Wiren Board мощный, поэтому на нем отлично работают Home Assistant, Sprut.hub, Zigbee2mqtt, Node-RED, SCADA и т.д. У каждого софта из этого списка есть свой веб-интерфейс, который доступен по нестандартному порту. Но так как у нас в облаке нет VPN, то просто так прокинуть порты мы не можем, поэтому у пользователей сегодня нет доступа к такому софту через облако.
Скоро мы предложим решение этой задачи.
Дополнительные фото
On-premise — облако на вашем сервере
Мы любим, когда наши пользователи не зависят от нас и интеграторов. Наши контроллеры всегда работают локально, и взаимодействие с WIren Board Cloud тут не исключение. Нужно облако — используете, не нужно — не используете.
Но мы понимаем, что многие не доверяют облачным решениям и у них есть весомые аргументы: возможная компрометация данных, блокировка доступа, прекращение существования облачного провайдера. Ещё бывает, что политика безопасности предприятия запрещает хранить данные на чужих серверах.
Поэтому скоро мы предложим On-premise для локальной установки на сервер заказчика, при этом будет два варианта: бесплатный и платный.
Бесплатным будет docker-контейнер для частных лиц и небольших компаний с ограничением по количеству контроллеров. Причина в том, что docker тяжело масштабировать. Производительность будет упираться в число ядер на вашем сервере, и кластер вы собрать уже не сможете, например.
Для компаний с сотнями и тысячами контроллеров будет платное решение, которое позволит строить кластеры, разносить компоненты на разные серверы. Сейчас инфраструктура нашего Wiren Board Cloud работает на кластере из четырех серверов, ее можно масштабировать фактически бесконечно.
Фичи для компаний
Мы планируем добавить еще некоторые функции для больших компаний, например Provisioning. В процессе производства у нас есть возможность получить информацию о контроллере в виде серийного номера и публичного ключа, и при заказе крупных партий контроллеров мы можем автоматически добавить их в облако. От нас контроллеры можно отгрузить куда угодно, хоть в Магадан. И затем инженер из центрального офиса сможет настроить контроллеры. От монтажников ничего не потребуется, достаточно провода подключить и подать питание.
Также мы добавим корпоративную авторизацию через LDAP и Active Directory, она будет и в облаке Wiren Board Cloud, и варианте On-premise на сервере заказчика.
Сколько стоит и для кого
Часть функций мы будем предоставлять бесплатно, остальные - платно.
Бесплатно можно будет:
видеть контроллеры и их статусы;
заходить на них удаленно через веб-интерфейс и SSH;
пользоваться Grafana — с разумным ограничением по размеру данных, которое пока обсуждается;
docker для установки облака у себя.
Причем эти функции будут бесплатными не только для частных пользователей, но и для бизнеса.
Платным будет хранение больших объёмов данных в нашем облаке, а также Wiren Board Cloud On-premise для больших компаний. Плюс функции для компаний, такие как Provisioning и некоторые другие.
Новый конфигуратор подключенных устройств
Конфигуратор в веб-интерфейсе Wiren Board был уже давно, он позволяет настраивать все подключенные устройства. Мы добавляли в него новые функции, но принципиально не меняли. Теперь же мы решили его полностью обновить. На скриншоте ниже виден «полет мысли» при разработке нового конфигуратора. Конечно, мы смотрели на решения конкурентов, чтобы учесть все лучшее.
Больше не тормозит
Новый редактор больше не тормозит, открывается за одну секунду вместо значительных задержек ранее. Скорость теперь не зависит от количества шаблонов и устройств, поскольку мы переписали инициализацию и добавили кэширование шаблонов.
Больше места для настроек
Устройства «переехали» в левую панель к портам, для настроек теперь больше места. Мы увеличили высоту блока настроек, выкинули лишние отступы.
Поиск и автоматическое добавление устройств
Появилась функция автодобавления устройств. Контроллер Wiren Board автоматически ищет новые устройства на шине, сам выбирает шаблон, порт и адрес, затем добавляет устройство в конфигурацию. Причем автоматически добавляются не только устройства Wiren Board, но и модули сторонних производителей с Быстрым Modbus, например ONOKOM. Все остальные устройства можно как обычно добавлять вручную, выбирать шаблон, порт, прописывать адрес.
И это не всё
Теперь о планах, которые реализуются прямо сейчас.
Мы добавим разрешение коллизий Modbus адресов. Если на шине много устройств, то есть вероятность одинаковых адресов. В обычном Modbus ничего сделать нельзя, нужно отключать устройства, заново подключать по одному и менять адреса. В Быстром Modbus можно обратиться с консоли к устройству по серийному номеру и поменять адрес. Мы хотим сделать такой процесс автоматическим в веб-интерфейсе. Автоматически будет задаваться корректная скорость, например когда шина работает на 115 200 бит/с, а недавно купленное устройство — на 9600 бит/с. Теперь не придется идти в настройки устройства и менять скорость, все будет автоматически: будут считываться параметры устройства, о чем нас долго просили; опрашивать вручную регистры, чтобы считать параметры, больше не придется; будет доступна диагностика состояния, а также обновление прошивок устройств.
Также станет проще с заменой сломанных устройств. Например, вы поменяли вышедший из строя диммер на новый. Сейчас вам надо предварительно в консоли задать параметры подключения и новый адрес устройства, что неудобно. Мы сделаем, чтобы вам было достаточно указать, что новое устройство работает вместо старого, а все настройки будут перенесены автоматически.
Настройка устройств Wiren Board без контроллера
Для каждого устройства в стандартном Modbus есть таблица регистров. С помощью адаптера WB-USB485, например, можно прописывать устройствам регистры через консоль. Конечно, это очень неудобно.
Чтобы пользователям было проще, мы пробовали делать шаблоны для Rilheva Modbus Poll, но она только под Windows и работает довольно медленно.
Как настраивали раньше
Поэтому мы сделали утилиту, которая использует шаблоны от нашего драйвера wb-mqtt-serial, и отрисовываем по ним интерфейс настройки. Параметры можно читать и писать.
Теперь пользователи Windows и Linux могут настраивать устройства Wiren Board мышкой без контроллера. Причем можно настраивать любые устройства Modbus, поддерживаемые нашим драйвером wb-mqtt-serial, а не только Wiren Board.
Визуальные сценарии автоматизации
Стандартный способ создания сценариев автоматизации — скрипты на нашем движке wb-rules, кто-то с удовольствием их использовал, но кого-то они пугали. Скрипты wb-rules остаются, к ним добавляются готовые сценарии, который можно настраивать мышкой.
Это будут популярные отлаженные сценарии, которые входят в комплект поставки по умолчанию, например "термостат", "темная комната" и т.д. Пользователю необходимо только настроить параметры, затем все будет работать. Есть возможность автодополнения контролов – достаточно начать набирать название датчика или реле, система предложит выбрать из списка имеющихся.
Как мы считаем, готовые сценарии снизят порог входа в несколько раз для тех пользователей, кто не готов разбираться в коде wb-rules.
Если вам больше нравилось писать скрипты самому или вы вообще пишете свой софт на любом языке программирования, для вас ничего не изменилось — всё будет работать по прежнему.
Нативная интеграция с Node-RED
Среду визуального программирования Node-RED можно ставить и сейчас, но через консоль и сравнительно муторно (рекомендуем ознакомиться с опытом нашего непрограммиста Дмитрия). Мы добавим нативную интеграцию Node-RED с максимально простой установкой и популярными отлаженными сценариями в комплекте. Среда Node-RED популярна в сообществе, и она дает нам доступ к интеграции различных устройств, которые в ней поддерживаются.
Алиса, привет!
Пользователи давно просят добавить нативную интеграцию Яндекс Алисы. Сегодня это возможно через сторонний софт Sprut.hub, Node-RED, Home Assistant, yandex2mqtt. Мы решили добавить нативную интеграцию, которую можно будет настроить прямо в веб-интерфейсе контроллера, и работать без стороннего софта. Интеграция будет бесплатна для частных лиц и небольшого бизнеса. Условия для крупного бизнеса мы пока не придумали.
Кстати, Яндекс Алиса не единственный голосовой помощник. У нас уже работает бесплатная нативная интеграция с голосовыми ассистентами Салют из экосистемы Sber.
Кроме того, мы думаем над внедрением поддержки голосового управления через открытую оффлайн-библиотеку VOSK, автор которой был у нас на выставке (интервью с автором VOSK). Если у вас есть идеи или наработки в этом направлении, напишите нам, может быть, мы вместе сможем сделать интересный открытый продукт.
Встречи с пользователями
Почти все изменения в софте за последний год и планы на будущее основаны на запросах пользователей, которые мы стараемся регулярно собирать.
Для этого мы раз в два-три месяца проводим онлайн-встречу в телеграм, где рассказываем о планах, новинках, отвечаем на вопросы и внимательно слушаем о проблемах и задачах. Встречи проходят в нашем новостном канале https://t.me/wirenboard_official .
Также любой пользователь может написать нам на портал техподдержки с описанием задач, функций, которых ему не хватает. Мы регулярно разбираем такие запросы и самое востребованное и интересное ставим в план разработок.
Заключение
Мы надеемся, что описание нашего облака и новинок в области софта и интеграции было интересным. Дополнительную информацию всегда можно найти на нашем сайте. Конечно, приглашаем на конференцию WBCE 2025 в следующем году, а посмотреть итоги WBCE 2024 можно по ссылке.
А ещё мы растём и нанимаем много сотрудников: программистов, инженеров, менеджеров по продажам и HR. Удаленка или офис в Москве, Астане и Ереване. Описание вакансий есть в нашем профиле на hh.ru и на сайте https://wirenboard.com/ru/pages/jobs/.