Wiren Board Cloud — удалённое администрирование

From Wiren Board
(Redirected from Cloud)

This is the approved revision of this page, as well as being the most recent.

Описание

Демонстрация

Wiren Board Cloud — сервис удаленного администрирования систем автоматизации на контроллерах Wiren Board. Подробное описание возможностей

Работает в контроллерах Wiren Board 6 и новее.

Информацию об ошибках и пожелания присылайте на портал техподдержки. Если вы сообщаете о проблемах — приложите к сообщению диагностический архив.

Варианты

Wiren Board Cloud существует в двух вариантах:

  • https://wirenboard.cloud — публичное облако. Без ограничений до конца 2025 года. В 2026 году планируем сделать платным хранение данных в Grafana сверх лимита, который мы пока обсуждаем. Ограничения по количеству контроллеров в публичной версии не планируем.
  • On-Premise — тот же сервис, но ставится на ваш сервер. Бесплатно до 100 контроллеров в одном установленном вами экземпляре; для компаний с сотнями и тысячами контроллеров планируется платная версия. Список изменений.

Принцип работы

На контроллер Wiren Board устанавливается агент wb-cloud-agent, который соединяется с облаком и получает из него настройки для создания туннелей и отправки метрик. Для отправки метрик используется сервис wb-cloud-agent-telegraf@wirenboard.cloud, а для туннелей wb-cloud-agent-frpc@wirenboard.cloud, а для статуса wb-cloud-agent@wirenboard.cloud.

Данные передаются по защищённому каналу. Авторизация контроллера в облаке происходит по ключу, хранящемся в чипе ATECCx08.

Подробнее об архитектуре смотрите в нашем докладе Собственное облако, новый конфигуратор устройств и другие новости софта Wiren Board.

Порты

Для работы Wiren Board Cloud не нужно пробрасывать порты, так как все соединения с контроллера исходящие:

  1. агент стучится по адресу https://agent.wirenboard.cloud ;
  2. для туннелей на стороне облака открываются порты из диапазона 10000 - 30000 и frpc на контроллере подключается по ним.

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

Подключение контроллера к облаку

Установка агента

Агент доступен и установлен на контроллерах Wiren Board 6 и новее в релизах ПО wb-2407 и новее. Как узнать релиз ПО на контроллере.

На старом релизе wb-2207 агент надо поставить вручную:

apt update && apt install wb-cloud-agent

Добавление контроллера в облако

Ссылка на добавление в веб-интерфейсе контроллера

По умолчанию контроллер отключен от облака, надо его добавить:

  1. Откройте веб-интерфейс контроллера, перейдите НастройкиСистема и кликните на появившейся ссылке в разделе Подключение к облаку.
  2. После перехода по ссылке вы попадёте в личный кабинет, либо система попросит авторизоваться или создать аккаунт.

Также ссылку на добавление можно получить в консоли, для этого подключитесь к контроллеру по SSH и введите команду wb-cloud-agent:

# wb-cloud-agent
| Provider         | Controller Url / Activation Url                    |
|------------------|----------------------------------------------------|
| wirenboard.cloud | https://wirenboard.cloud/controllers?add=3d5...790 |

Команда wb-cloud-agent отображает подключение агента к облаку с задержкой, после привязки или отвязки контроллера подождите несколько секунд перед очередной проверкой состояния.

К личному кабинету в облаке можно подключить неограниченное количество контроллеров.

Если ссылки на подключение нет — проверьте, что сервер облака доступен с контроллера.

Важно! Так как авторизация происходит по аппаратному ключу, то даже после factory reset контроллер подключится к облаку автоматически. Перед продажей или передачей контроллера третьей стороне, удалите его из своего облака.

Двухфакторная аутентификация

Облако поддерживает двухфакторную аутентификацию.

Как подключить:

  1. Откройте раздел «Безопасность» в меню под значком «Пользователь».
  2. Нажмите «Подключить».
  3. Сканируйте QR-код с помощью приложения-аутентификатора.
  4. Введите полученный код.
  5. Сохраните коды восстановления в надежном месте и никому их не передавайте — они нужны для восстановления доступа, если вы потеряете секрет/устройство с приложением-аутентификатором.

После этого при входе система запросит не только пароль, но и код из приложения. Срок действия кода ограничен и показан в приложении-аутентификаторе, поэтому не сохраняйте их для повторного ввода, они не сработают.

В случае утраты секрета или устройства с приложением-аутентификатором вы можете воспользоваться кодами восстановления для доступа к аккаунту. Для их использования нажмите «Ввести код восстановления 2FA» на странице входа в аккаунт.

Владельцы организаций могут включить обязательную двухфакторную аутентификацию в настройках. В этом случае все участники должны будут её включить в своём профиле перед началом работы.

Отключение контроллера от облака

Чтобы удалить контроллер из облака, перейдите в личный кабинет, откройте страницу контроллера и удалите контроллер.

Также можно отключить контроллер от облака без доступа к личному кабинету:

  1. Подключитесь к контроллеру по SSH.
  2. Введите команду:
    wb-cloud-agent cloud-unbind https://wirenboard.cloud
    

Если вы хотите, чтобы контроллер совсем не отправлял данные в облако, удалите провайдер из агента:

wb-cloud-agent del-provider wirenboard.cloud

Вернуть всё как было с завода:

wb-cloud-agent add-provider https://wirenboard.cloud

Справка по всем командам:

wb-cloud-agent -h

Обновление прошивки контроллера из облака

Процесс обновления прошивки из облака аналогичен обновлению прошивки через веб-интерфейс.

Из облака нельзя сбросить контроллер к заводским настройкам из-за вероятной потери связи с контроллером.

Поиск и устранение неисправностей

Если не работает подключение к облачным сервисам (например, устройство не отображается в личном кабинете), выполните пошаговую проверку ниже и пришлите вывод команд в поддержку.

Статус облака

Откройте страницу мониторинга статуса:

https://status.wirenboard.cloud

Все индикаторы должны быть зелёные. Если есть сбои — дождитесь восстановления.

Отвязка контроллера от организации, к которой нет доступа

Если у вас есть физический доступ к контроллеру, но по какой-то причине нет доступа к организации в Cloud, к которой привязан контроллер, то вы можете отвязать и перепривязать его самостоятельно:

1. Поскольку контроллер не может быть не привязан ни к какой организации, следует сначала отвязать контроллер от Cloud. Если отвязка не срабатывает - обновите контроллер.

2. После сообщения об успешной отвязки контроллера, если нужно, можете привязать его заново к нужной организации.

Нет ссылки на добавление в облако

Если в веб-интерфейсе контроллера нет ссылки на добавление в облако, проверьте есть ли добавленные провайдеры. Ниже пример, когда провайдера нет:

# wb-cloud-agent
No one provider was found

Проверка подключения к интернету

ping 8.8.8.8 -c 4

Ожидается: успешные ответы. Если нет — проверьте подключение к интернету.

Проверка маршрута до облака

traceroute wirenboard.cloud

Убедитесь, что пакеты уходят за пределы вашей локальной сети и достигают внешних узлов.

Проверка разрешения доменного имени

host agent.wirenboard.cloud

Ожидается: IP-адрес. Если пишет `not found` — проблема в DNS.

Проверка службы wb-cloud-agent

systemctl status wb-cloud-agent@wirenboard.cloud

Ожидается: статус `active (running)`. Если служба остановлена, то для её запуска можно ввести:

systemctl enable wb-cloud-agent@wirenboard.cloud
systemctl start wb-cloud-agent@wirenboard.cloud

Проверка HTTPS-соединения с облаком

curl --connect-timeout 45 --retry 8 --retry-delay 1 --retry-all-errors \
  --cert /var/lib/wb-cloud-agent/device_bundle.crt.pem \
  --engine ateccx08 \
  --key ATECCx08:00:02:C0:00 \
  --key-type ENG \
  -w '|||{"code":"%{response_code}"}' \
  https://agent.wirenboard.cloud/api-agent/v1/agent-start-up/

Ожидается: ответ с HTTP-кодом `200`.

Получение доступа к произвольным веб-интерфейсам на контроллере


В nginx на контроллере доступна настройка прокси для произвольного (обязательно до этого не существующего) URI. Это работает с большинством приложений.

Для примера, получим доступ к веб-интерфейсу Zigbee2mqtt по uri «z2m». Веб-интерфейс zigbee2mqtt включен на контроллере на порту 8081.

  1. Создаём файл с настройками проксирования:
    mcedit /etc/nginx/includes/default.wb.d/z2m.conf
    
  2. Добавляем запись location
    location ~ ^/z2m/(.*)$ {
      set $upstream_app 127.0.0.1;
      set $upstream_port 8081;
      set $upstream_proto http;
      proxy_pass $upstream_proto://$upstream_app:$upstream_port/$1$is_args$args;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection upgrade;
    }
    
  3. После сохранения перезапускаем сервер с проверкой статуса
    systemctl restart nginx && systemctl status nginx
    
  4. Для проверки можно открыть локально веб-интерфейс контроллера с URL http://ip-address/z2m/, где ip-address — адрес контроллера. Замыкающий слеш обязателен.
  5. Через облачный сервис так: https://XXXXXXX.http.wirenboard.cloud/z2m/, где XXXXXXX — серийный номер контроллера.

Дополнительная информация для конфигурирования других сервисов документации nginx.

Облачная Grafana

Это инструкция для работы со встроенной в облако Grafana: вход, работа, просмотр данных из TimescaleDB, создание собственного дашборда и панелей, экспорт данных для получения помощи от нейросетей.

Важные изменения и ограничения

Мы переехали на TimescaleDB (вместо InfluxDB) для хранения метрик, в связи с этим для продолжения отправки метрик с контроллера в облако, необходимо обновить пакет telegraf-wb-cloud-agent на контроллере командой:

sudo apt update; sudo apt upgrade -y

После обновления пакета, через 5-10 минут метрики автоматически появятся на странице контроллера.

Работа с Grafana

Дашборд по умолчанию в Grafana, выбор организации и контроллера.
  1. В Wiren Board Cloud на странице любого контроллера нажмите кнопку Grafana.
  2. Авторизация в Grafana произойдет автоматически под вашей учетной записью.
  3. По умолчанию вы попадете в Grafana организацию, связанную с организацией в облаке из которой вы перешли, а в веб-интерфейсе Grafana отображается дашборд подготовленный нашей командой.
  4. Если в дашборде по умолчанию не отображаются метрики (пишет No data), возможны следующие причины:
    • выбран контроллер у которого не обновлён пакет, или не выждали 5-10 минут;
    • выбран временной диапазон за который нет метрик (например метрики пошли сегодня а пытаетесь смотреть метрики за вчера).
  5. Сменить активную организацию можно в левом верхнем углу интерфейса Grafana, вам будут доступны только те организации в которых вы состоите в облаке.
  6. В дашборде по умолчанию вы можете выбрать интересующий вас контроллер из активной организации и посмотреть его метрики за указанный период.

Принцип работы: контроллер, TimescaleDB и облачная Grafana

На контроллере установлен пакет telegraf-wb-cloud-agent который периодически собирает метрики с контроллера.

Метрики по умолчанию настроены в конфиге Telegraf который находится в папке:
/var/lib/wb-cloud-agent/providers/<провайдер>/telegraf.conf.

Конфиг автоматически синхронизируется из облака. Не пытайтесь изменять этот конфиг вручную на контроллере. Пользовательская настройка метрик пока недоступна! (но планируется в ближайшем будущем)

Telegraf на контроллере отправляет HTTP запросы с метриками в TimescaleDB по адресу timescale.wirenboard.cloud, они записываются в базу данных, метрики хранятся в течении 14 дней + от 0 дней до 7 дней. Итого метрики могут храниться минимум 14 дней а максимум 21 день.

Grafana читает метрики из TimescaleDB и визуализирует их.

Создание дашборда

Для создания дашборда необходимы соответствующие знания. Сильно помогают нейросети: сформулируйте требования к дашборду, что хотите визуализировать, за какой период, типы графиков и фильтров, попросите создать готовый файл для импорта и приложите CSV‑выгрузку данных.

Полезные ссылки:

Просмотр структуры данных в TimescaleDB с помощью Grafana Explore

Просмотр доступных представлений.

Чтобы понять, какие данные доступны и в каком виде:

  1. Откройте Explore.
  2. Выберите источник данных timescaledb.
  3. Переключитесь в режим Code.
  4. Выполните SQL запрос для просмотра доступных представлений (views) для таблиц в схеме public, вас интересует колонка table_name:
    SELECT table_name, table_schema
    FROM information_schema.views
    WHERE table_schema = 'public'
    ORDER BY table_name;
    
  5. Для просмотра содержимого записи из представления org_disk за последний час, выполните запрос:
    SELECT * FROM org_disk
    WHERE time > now() - interval '1 hour'
    LIMIT 1;
    

Экспорт данных в CSV

Экспорт данных в CSV.
  1. Откройте Query inspector.
  2. Перейдите во вкладку Data.
  3. Нажмите Download CSV, чтобы выгрузить результат запроса в файл.

Импорт дашборда

Для импорта .json файл дашборда:

  1. Откройте Dashboards.
  2. В правом верхнем углу нажмите NewImport.
  3. Выберите файл для импорта.

Диагностика и типичные неисправности

Данные в пользовательском дашборде не отображаются:

  • проверьте выбранный интервал времени вверху справа (возможно метрик в бд ещё нету для указанного интервала);
  • убедитесь, что в запросах используется корректный столбец времени и макрос;
  • снимите лишние фильтры с запроса и проверяйте его работу в Explore пока он не заработает должным образом.