Wiren Board Software: различия между версиями

Материал из Wiren Board
 
(не показано 146 промежуточных версий 9 участников)
Строка 1: Строка 1:
{{DISPLAYTITLE: Программное обеспечение контроллеров Wiren Board}}
== Как устроено ПО Wiren Board ==
[[File:DebianLinux.png | thumb | 600px | Структура ПО контроллера. В центре очередь сообщений MQTT, которая используется для обмена информацией между разными частями ПО]]


== Нативный веб-интерфейс ==
Wiren Board работает под управлением Debian Linux. Для архитектуры используемого процессора есть [https://www.debian.org/ports/arm/ официальный порт], поэтому любое стандартное Linux-приложение можно установить из репозитория одной командой <code>apt install имя_пакета</code>.


Нативный веб-интерфейс доступен при обращении по IP-адресу WB Smart Home из браузера.
Все сервисы контроллера общаются между собой по общей «шине», в роли которой выступает [[MQTT | Очередь сообщений MQTT]].
В интерфейсе отображаются блоки - "устройства", в каждом их которого есть несколько элементов управления.


При клике на блок устройства открывается страница настройки параметров устройства.
По умолчанию установлены [[Wiren Board Web Interface|Веб-интерфейс Wiren Board]], [[Движок правил wb-rules|Движок правил wb-rules]], а также драйвера и вспомогательные утилиты.
На странице настроек можно назначить устройству комнату, изменить конфигурационные параметры, предоставляемые устройством, а также настрить отображение контролов.


Опционально можно установить шлюзы для интеграции со SCADA-системами и сторонний софт. Полный список смотрите в [[Supported_devices|Таблице поддерживаемых устройств, протоколов и программ]].


=== Разработка своих решений ===
{{Wbincludes:Wiren Board Software Dev}}


В верхней части страницы расположено меню выбора "комнат", в которых расположены устройства.
== Обновление прошивки и релизный цикл==
=== Кратко о релизах ===
{{Wbincludes:Releases}}
{{Wbincludes:Release Log}}


=== Служебные устройства ===
=== Какой релиз на вашем контроллере ===
[[Файл:Native UI System.png|500px|thumb|Служебные устройства]]
{{Wbincludes:What-release}}


Служебные устройства располагаются в комнате System. Служебные устройства предназначены для индикации состояния и настройки различных подсистем.
=== Переключение между релизами ===
В текущей прошивке есть два служебных устройства: "NinjaBlocks bridge" и "ISM Radio". Эти устройства отвечают соответственно за модуль связи с системой Ninja Blocks и радио-модуль.
{{Wbincludes:Switch-release}}


==== Устройство ISM Radio ====
=== Обновление прошивки контроллера и откат к заводским настройкам ===
ISM Radio - устройство, отвечающее за работу радио-модуля.
{{Anchor|update}}
Устройство отображает служебную информацию: количество принятых с момента старта сервиса пакетов различных типов.
[[Файл:Native UI ISM radio.png|thumb|500px|Устройство радио-модуля на 433Mhz]]


===== Настройки =====
Прошивку контроллера можно обновить или вернуть его к заводскому состоянию с удалением всех данных.
Изменения конфигурационных параметров применяются немедленно.


{| border="1"
Все ревизии контроллера можно обновить через менеджер пакетов apt или веб-интерфейс, а в относительно свежих добавилась возможность обновления с флеш-накопителя и через Debug Network.
| mqtt-адрес || Название || Описание  || Формат || Пример
|-
| /devices/wb-homa-rcd/meta/noolite_remotes || Noolite_remotes || Количество виртуальных блоков Noolite || число || 4
|-
| /devices/wb-homa-rcd/meta/noolite_remotes_custom || Noolite_remotes_custom || Пользовательские пульты Noolite || hex-адреса пультов, разделенные запятыми || 0x1234, 0x1000, 0x0001
|-
| /devices/wb-homa-rcd/meta/rssi_threshold || Rssi_threshold || Чувствительность приёмника, dBm || отрицательное число || -70
|-


|}
Инструкции:
* [[Wiren_Board_7.4_Firmware_Update |Wiren Board 7.4]]
* [[Wiren_Board_7_Firmware_Update|Wiren Board 7.2…7.3]]
* [[Wiren_Board_6_Firmware_Update |Wiren Board 6]]
* [[Wiren_Board_5_Firmware_Update|Wiren Board 5]]


[[Файл:Native UI Radio Settings.png|thumb|500px|Настройки радио на 433Mhz]]
<gallery mode="packed" heights="140px" caption="Как узнать ревизию контроллера">
Image: Revision in the web interface.png| Ревизия контроллера в веб-интерфейсе. Устройства → System
Image: Revision in the console.png| Ревизия контроллера в консоли, при подключении по [[SSH]]. Сразу под баннером, зелёными цифрами 6.7.2
Image: Revision on the stick.png| Ревизия контроллера на наклейке
</gallery>


=== Блок Relays&FETs ===
== Список сервисов и их назначение ==
[[Файл:Native UI Devices.png|500px|thumb|Блок Relays&FETs, датчики Oregon]]
Список сервисов, запущенных на контроллере, их статус и описание можно получить командой:
<syntaxhighlight lang="bash">
systemctl list-units --type=service
</syntaxhighlight>


Про управление сервисами читайте в статье [[How_to_diagnose#Полезные команды | Диагностика ошибок в работе контроллера]].


 
{| border="1" class="wikitable" style="text-align:left"
 
|-
Блок "Relays&FETs" предназначен для взаимодействия с реле и выходами "открытый коллектор" платы. Состояние выходов можно менять с помощью переключателей.
|| '''Имя сервиса''' || '''Описание'''
 
|-
=== Раздел Noolite ===
|| avahi-daemon.service || Avahi mDNS/DNS-SD Stack
В разделе Noolite расположены виртуальные пульты для управления системой Noolite, см. ниже.
|-
[[Файл:Native UI Noolite.png|500px|thumb|Виртуальные пульты системы Noolite]]
|| bluetooth.service || Bluetooth service
 
|-
== Работа с Ninja Blocks ==
|| cgmanager.service || Cgroup management daemon
В состав ПО Wiren Board Smart Home входит интеграция с облачной системой управления умным домом Ninja Blocks.  
|-
Для использования системы необходимо сначала выполнить процедуру привязки.
|| cron.service || Regular background program processing daemon
 
|-
1. Откройте нативный веб-интерфейс управления и найдите устройство NinjaBlocks bridge. В поле Status будет состояние "Waiting for activation".
|| dbus.service || D-Bus System Message Bus
В поле Block Id написан уникальный идентификатор устройства для работы в Ninja Blocks, скопируйте его в буфер обмена.
|-
 
|| dnsmasq.service || dnsmasq - A lightweight DHCP and caching DNS server
2. Зайдите в бета-версию веб-интерейса Ninja Blocks по адресу http://wakai.ninja.is. Зарегистрируйтесть в системе и войдите в нее.
|-
 
|| getty@tty1.service || Getty on tty1
3. Нажмите на кнопку Pair Hub и введите идентификатор устройства из пункта 1. Статус в нативном веб-интерфейсе должен смениться на "Connected".
|-
 
|| hostapd.service || LSB: Advanced IEEE 802.11 management daemon
4. В случае проблем на этом этапе повторите процедуру следующим образом:
|-
 
|| kmod-static-nodes.service || Create list of required static device nodes for the current kernel
Остановите демон.
|-
<pre>
|| knxd.service || KNX Daemon
root@wirenboard:~# /etc/init.d/wb-homa-ninja-bridge stop
|-
</pre>
|| mosquitto.service || Mosquitto MQTT v3.1/v3.1.1 Broker
 
|-
Удалите сохранённый токет, если есть:
|| netplug.service || LSB: Brings up/down network automatically
<pre>
|-
root@wirenboard:~# rm /var/lib/wirenboard/*.token
|| networking.service || Raise network interfaces
</pre>
|-
 
|| nginx.service || A high performance web server and a reverse proxy server
Запустите демон снова
|-
<pre>
|| ntp.service || LSB: Start NTP daemon
root@wirenboard:~# /etc/init.d/wb-homa-ninja-bridge start
|-
</pre>
|| rsyslog.service || System Logging Service
 
|-
Удалите устройство в Ninja Blocks на странице Settings во вкладке Hubs с помощью кнопки Unpair.
|| serial-getty@ttymxc0.service || Serial Getty on ttymxc0
 
|-
Повторите пункт 3.
|| ssh.service || OpenBSD Secure Shell server
|-
|| systemd-fsck-root.service || File System Check on Root Device
|-
|| systemd-fsck@dev-mmcblk0p6.service || File System Check on /dev/mmcblk0p6
|-
|| systemd-journal-flush.service || Flush Journal to Persistent Storage
|-
|| systemd-journald.service || Journal Service
|-
|| systemd-logind.service || Login Service
|-
|| systemd-modules-load.service || Load Kernel Modules
|-
|| systemd-random-seed.service || Load/Save Random Seed
|-
|| systemd-modules-load.service || Load Kernel Modules
|-
|| systemd-random-seed.service || Load/Save Random Seed
|-
|| systemd-remount-fs.service || Remount Root and Kernel File Systems
|-
|| systemd-sysctl.service || Apply Kernel Variables
|-
|| systemd-tmpfiles-setup-dev.service || Create Static Device Nodes in /dev
|-
|| systemd-tmpfiles-setup.service || Create Volatile Files and Directories
|-
|| systemd-udev-trigger.service || udev Coldplug all Devices
|-
|| systemd-udevd.service || udev Kernel Device Manager
|-
|| systemd-update-utmp.service || Update UTMP about System Boot/Shutdown
|-
|| systemd-user-sessions.service || Permit User Sessions
|-
|| user@0.service || User Manager for UID 0
|-
|| watchdog.service || watchdog daemon
|-
|| wb-configs-early.service || prepare mounts and symlinks to config files
|-
|| wb-configs.service || watch config files
|-
|| wb-gsm-rtc.service || LSB: initscript to use GSM modem integrated RTC
|-
|| wb-homa-ism-radio.service || LSB: MQTT driver for WB HomA for RFM69 ISM radio
|-
|| wb-hwconf-manager.service || LSB: Hardware configuration with Device Tree overlays
|-
|| wb-init.service || LSB: board-specific initscript
|-
|| wb-mqtt-adc.service || MQTT Driver for ADC
|-
|| wb-mqtt-confed.service || LSB: Configuration Editor Backend
|-
|| wb-mqtt-db.service || Wiren Board database logger
|-
|| wb-mqtt-gpio.service || MQTT Driver for GPIO-controlled switches
|-
|| wb-mqtt-knx.service || LSB: : Wiren Board MQTT KNX bridge
|-
|| wb-mqtt-logs.service || Wiren Board journald to MQTT gateway
|-
|| wb-mqtt-mbgate.service || Wiren Board MQTT to Modbus TCP gateway
|-
|| wb-mqtt-opcua.service || Wiren Board MQTT to OPC UA gateway
|-
|| wb-mqtt-serial.service || MQTT Driver for serial devices
|-
|| wb-mqtt-w1.service || Kernel 1-Wire MQTT driver for WB-HomA
|-
|| wb-prepare.service || initialize filesystems at first boot
|-
|| wb-repart.service || prepare partitions at first boot
|-
|| wb-rules.service || MQTT Rule engine for Wiren Board
|-
|| wb-systime-adjust.service || Compensation of systime in PPM from value, stored in device-tree (with opposite sign)
|-
|| wb-watch-update.service || LSB: Firmware update monitor
|}

Текущая версия на 11:45, 15 марта 2024

Как устроено ПО Wiren Board

Структура ПО контроллера. В центре очередь сообщений MQTT, которая используется для обмена информацией между разными частями ПО

Wiren Board работает под управлением Debian Linux. Для архитектуры используемого процессора есть официальный порт, поэтому любое стандартное Linux-приложение можно установить из репозитория одной командой apt install имя_пакета.

Все сервисы контроллера общаются между собой по общей «шине», в роли которой выступает Очередь сообщений MQTT.

По умолчанию установлены Веб-интерфейс Wiren Board, Движок правил wb-rules, а также драйвера и вспомогательные утилиты.

Опционально можно установить шлюзы для интеграции со SCADA-системами и сторонний софт. Полный список смотрите в Таблице поддерживаемых устройств, протоколов и программ.

Разработка своих решений

Вы можете разрабатывать своё ПО для контроллеров Wiren Board или собрать собственный образ прошивки с нужными вам настройками, лицензиями и пакетами. Свой образ прошивки можно установить в контроллеры самостоятельно штатными средствами, или мы можем делать это сразу на производстве при заказе отдельной партии.

Исходный код программного обеспечения контроллера доступен на GitHub. Там можно почерпнуть примеры для разработки собственного ПО.

Статьи:

Обновление прошивки и релизный цикл

Кратко о релизах

Релизный цикл ПО Wiren Board

Программное обеспечение контроллеров Wiren Board состоит из множества пакетов, которые мы объединяем в релизы:

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

Стабильные релизы имеют номер вида wb-YYMM, где YY — год, а MM — месяц выпуска. Например, wb-2104 — релиз, выпущенный в апреле 2021 года.

Мы будем рады, если вы сможете присоединиться к использованию testing, ведь кроме получения новых фич вы поможете уменьшить количество ошибок в stable.

Журналы изменений в релизах
Ветка Имя
stable wb-2404wb-2401wb-2310wb-2307wb-2304wb-2207wb-2204wb-2201wb-2110wb-2108 • wb-2104
testing скользящий релиз, изменения

Какой релиз на вашем контроллере

Версия ПО в веб-интерфейсе контроллера
WebUIDevicesSystem

С завода на контроллерах Wiren Board установлен актуальный на момент производства стабильный релиз.

Узнать версию релиза можно в веб-интерфейсе контроллера в разделе Устройства в карточке устройства System или в консоли командой wb-release.

Переключение между релизами

Между релизами можно переключаться вручную. Сделайте резервную копию настроек, подключитесь к контроллеру через SSH и выполните одну из команд:

  • Переход со стабильного на тестовый:
    wb-release -t testing
    
  • Переход с тестового на стабильный:
    wb-release -t stable
    

После смены релиза рекомендуем перезагрузить контроллер на случай, если обновилось ядро, а также обновить страницу веб-интерфейса в браузере со сбросом кэша (Ctrl+F5 для Chrome), чтобы загрузилась обновленная версия.

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

Обновление прошивки контроллера и откат к заводским настройкам

Прошивку контроллера можно обновить или вернуть его к заводскому состоянию с удалением всех данных.

Все ревизии контроллера можно обновить через менеджер пакетов apt или веб-интерфейс, а в относительно свежих добавилась возможность обновления с флеш-накопителя и через Debug Network.

Инструкции:

Список сервисов и их назначение

Список сервисов, запущенных на контроллере, их статус и описание можно получить командой:

systemctl list-units --type=service

Про управление сервисами читайте в статье Диагностика ошибок в работе контроллера.

Имя сервиса Описание
avahi-daemon.service Avahi mDNS/DNS-SD Stack
bluetooth.service Bluetooth service
cgmanager.service Cgroup management daemon
cron.service Regular background program processing daemon
dbus.service D-Bus System Message Bus
dnsmasq.service dnsmasq - A lightweight DHCP and caching DNS server
getty@tty1.service Getty on tty1
hostapd.service LSB: Advanced IEEE 802.11 management daemon
kmod-static-nodes.service Create list of required static device nodes for the current kernel
knxd.service KNX Daemon
mosquitto.service Mosquitto MQTT v3.1/v3.1.1 Broker
netplug.service LSB: Brings up/down network automatically
networking.service Raise network interfaces
nginx.service A high performance web server and a reverse proxy server
ntp.service LSB: Start NTP daemon
rsyslog.service System Logging Service
serial-getty@ttymxc0.service Serial Getty on ttymxc0
ssh.service OpenBSD Secure Shell server
systemd-fsck-root.service File System Check on Root Device
systemd-fsck@dev-mmcblk0p6.service File System Check on /dev/mmcblk0p6
systemd-journal-flush.service Flush Journal to Persistent Storage
systemd-journald.service Journal Service
systemd-logind.service Login Service
systemd-modules-load.service Load Kernel Modules
systemd-random-seed.service Load/Save Random Seed
systemd-modules-load.service Load Kernel Modules
systemd-random-seed.service Load/Save Random Seed
systemd-remount-fs.service Remount Root and Kernel File Systems
systemd-sysctl.service Apply Kernel Variables
systemd-tmpfiles-setup-dev.service Create Static Device Nodes in /dev
systemd-tmpfiles-setup.service Create Volatile Files and Directories
systemd-udev-trigger.service udev Coldplug all Devices
systemd-udevd.service udev Kernel Device Manager
systemd-update-utmp.service Update UTMP about System Boot/Shutdown
systemd-user-sessions.service Permit User Sessions
user@0.service User Manager for UID 0
watchdog.service watchdog daemon
wb-configs-early.service prepare mounts and symlinks to config files
wb-configs.service watch config files
wb-gsm-rtc.service LSB: initscript to use GSM modem integrated RTC
wb-homa-ism-radio.service LSB: MQTT driver for WB HomA for RFM69 ISM radio
wb-hwconf-manager.service LSB: Hardware configuration with Device Tree overlays
wb-init.service LSB: board-specific initscript
wb-mqtt-adc.service MQTT Driver for ADC
wb-mqtt-confed.service LSB: Configuration Editor Backend
wb-mqtt-db.service Wiren Board database logger
wb-mqtt-gpio.service MQTT Driver for GPIO-controlled switches
wb-mqtt-knx.service LSB: : Wiren Board MQTT KNX bridge
wb-mqtt-logs.service Wiren Board journald to MQTT gateway
wb-mqtt-mbgate.service Wiren Board MQTT to Modbus TCP gateway
wb-mqtt-opcua.service Wiren Board MQTT to OPC UA gateway
wb-mqtt-serial.service MQTT Driver for serial devices
wb-mqtt-w1.service Kernel 1-Wire MQTT driver for WB-HomA
wb-prepare.service initialize filesystems at first boot
wb-repart.service prepare partitions at first boot
wb-rules.service MQTT Rule engine for Wiren Board
wb-systime-adjust.service Compensation of systime in PPM from value, stored in device-tree (with opposite sign)
wb-watch-update.service LSB: Firmware update monitor