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

Материал из Wiren Board
(не показано 49 промежуточных версий 6 участников)
Строка 1: Строка 1:
{{DISPLAYTITLE: Программное обеспечение контроллеров Wiren Board}}
== Архитектура ПО 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>.
[[File:MQTT.png | thumb | 600px | Структура ПО контроллера. В центре очередь сообщений MQTT, использующаяся для обмена информацией между разными частями ПО]]


Все сервисы контроллера общаются между собой по общей «шине», в роли которой выступает [[MQTT | Очередь сообщений MQTT]].
Wiren Board работает под управлением стандартной сборки Debian Linux 7.0. Для архитектуры используемого процессора есть официальный [https://www.debian.org/ports/arm/ порт]. Поэтому почти любой пакет найдётся в стандартном репозитории, и его можно установить одной командой (''apt-get install'').


По умолчанию установлены [[Wiren Board Web Interface|Веб-интерфейс Wiren Board]], [[Движок правил wb-rules|Движок правил wb-rules]], а также драйвера и вспомогательные утилиты.
Также у нас есть собственный '''debian-репозиторий''' ''releases.contactless.ru'', в котором хранятся пакеты, собранные специально для контроллера. Репозиторий прописан в образе ПО для Wiren Board по умолчанию (файл ''/etc/apt/sources.list'').


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


=== Разработка своих решений ===
[[MQTT | '''Очередь сообщений MQTT''']] - "скелет" программной архитектуры Wiren Board. Базовая информация по MQTT на [http://en.wikipedia.org/wiki/MQTT Википедии].
{{Wbincludes:Wiren Board Software Dev}}


== Обновление прошивки и релизный цикл==
Драйверы, отвечающие за аппаратные возможности контроллера (цифровые входы, АЦП, ...) и функции внешних подключённых устройств (например, подключённых по RS-485 модулей реле) записывают их состояние в очередь MQTT в виде специальных сообщений. Веб-интерфейс читает эти сообщения и на их основе отображает состояние устройств.
=== Кратко о релизах ===
{{Wbincludes:Releases}}
{{Wbincludes:Release Log}}


=== Какой релиз на вашем контроллере ===
Если же происходит нажатие кнопки в веб-интерфейсе, уже веб-интерфейс отправляет сообщение в очередь MQTT, драйвер устройства его получает и отдаёт команду устройству.
{{Wbincludes:What-release}}


=== Переключение между релизами ===
Через MQTT работает веб-интерфейс, движок правил и встроенные драйверы. Если вы разрабатываете собственное ПО в дополнение к предустановленному, мы советуем вам также использовать MQTT.
{{Wbincludes:Switch-release}}


=== Обновление прошивки контроллера и откат к заводским настройкам ===
[[Файл:Веб-интерфейс - главная.png|thumb|500 px|Главная страница веб-интерфейса]]
{{Anchor|update}}
'''[[Веб-интерфейс Wiren Board]]''' работает непосредственно на контроллере. В нём можно:
*следить за состоянием контроллера и подключённых устройств и управлять ими
*подключать устройства к контроллеру
*настраивать контроллер и обновлять его ПО
*писать правила на встроенном движке
*настраивать SMS и email уведомления
*смотреть на графике историю значений (например, температуры)


Прошивку контроллера можно обновить или вернуть его к заводскому состоянию с удалением всех данных.
'''[[Движок правил wb-rules]]''' позволяет создавать собственные правила для контроллера - например, "Если температура датчика меньше 18°С, включи нагреватель". Правила создаются через [[Веб-интерфейс Wiren Board|веб-интерфейс]] и пишутся на простом Javascript-подобном языке.


Все ревизии контроллера можно обновить через менеджер пакетов apt или веб-интерфейс, а в относительно свежих добавилась возможность обновления с флеш-накопителя и через Debug Network.
Для работы с SCADA-системами есть:
* [[Zabbix support]]
* [[Шлюз Modbus TCP]]
* [[Драйвер SNMP]]


Инструкции:
[[Как разрабатывать ПО для Wiren Board]] - статья для программистов.
* [[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]]


<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>
 
== Список сервисов и их назначение ==
Список сервисов, запущенных на контроллере, их статус и описание можно получить командой:
<syntaxhighlight lang="bash">
systemctl list-units --type=service
</syntaxhighlight>
 
Про управление сервисами читайте в статье [[How_to_diagnose#Полезные команды | Диагностика ошибок в работе контроллера]].
 
{| border="1" class="wikitable" style="text-align:left"
|-
|| '''Имя сервиса''' || '''Описание'''
|-
|| 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
|}

Версия 17:36, 7 июня 2018

Архитектура ПО Wiren Board

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

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

Также у нас есть собственный debian-репозиторий releases.contactless.ru, в котором хранятся пакеты, собранные специально для контроллера. Репозиторий прописан в образе ПО для Wiren Board по умолчанию (файл /etc/apt/sources.list).

Весь исходный код доступен на https://github.com/contactless/. Там можно почерпнуть примеры для разработки собственного ПО.

Очередь сообщений MQTT - "скелет" программной архитектуры Wiren Board. Базовая информация по MQTT на Википедии.

Драйверы, отвечающие за аппаратные возможности контроллера (цифровые входы, АЦП, ...) и функции внешних подключённых устройств (например, подключённых по RS-485 модулей реле) записывают их состояние в очередь MQTT в виде специальных сообщений. Веб-интерфейс читает эти сообщения и на их основе отображает состояние устройств.

Если же происходит нажатие кнопки в веб-интерфейсе, уже веб-интерфейс отправляет сообщение в очередь MQTT, драйвер устройства его получает и отдаёт команду устройству.

Через MQTT работает веб-интерфейс, движок правил и встроенные драйверы. Если вы разрабатываете собственное ПО в дополнение к предустановленному, мы советуем вам также использовать MQTT.

Главная страница веб-интерфейса

Веб-интерфейс Wiren Board работает непосредственно на контроллере. В нём можно:

  • следить за состоянием контроллера и подключённых устройств и управлять ими
  • подключать устройства к контроллеру
  • настраивать контроллер и обновлять его ПО
  • писать правила на встроенном движке
  • настраивать SMS и email уведомления
  • смотреть на графике историю значений (например, температуры)

Движок правил wb-rules позволяет создавать собственные правила для контроллера - например, "Если температура датчика меньше 18°С, включи нагреватель". Правила создаются через веб-интерфейс и пишутся на простом Javascript-подобном языке.

Для работы с SCADA-системами есть:

Как разрабатывать ПО для Wiren Board - статья для программистов.

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