WB Software Architecture: различия между версиями
(Создал страницу) |
(Начальная информация) |
||
Строка 1: | Строка 1: | ||
{{DISPLAYTITLE: Архитектура ПО контроллера Wirenboard}} | {{DISPLAYTITLE: Архитектура ПО контроллера Wirenboard}} | ||
Основой внутреннего программного обеспечения контроллера является операционная система система Debian Linux (в версии Wirenboard 6 установлен Debian Linux 9 Stretch). Она выполняет основные функции конфигурирования, контроля и управления аппаратным обеспечением контроллера, а также специализированным программным обеспечением. Специализированное ПО дополняет операционную систему и осуществляет взаимодействие с периферийными устройствами (модулями контроллера), внутреннюю диагностику работы, дает возможность написания пользовательских сценариев (правил управления) и другие важные функции, не входящие спектр задач операционной системы. | |||
Специализированное ПО в основном представляет список сервисов (служб, драйверов), выполняющих в фоновом режиме отдельную задачу управления, диагностики или контроля. Имена собственных сервисов контроллера Wirenboard обычно имеют префикс "wb-". Каждый сервис выполняет отдельную задачу. Если функции, которые обеспечивает сервис не используются, то сервис можно временно остановить или даже отключить совсем для освобождение ресурса процессора контроллера. | |||
Список всех запущенных сервисов и статус их работы можно посмотреть с помощью команды | |||
<pre>systemctl list-units --type=service</pre> | |||
Перечень основных сервисов контроллера Wirenboard приведен в таблице ниже. | |||
Основная концепция работы контроллера - обмен информацией по протоколу [[MQTT | MQTT ]] через брокер (сервис) Mosquitto. Драйверы получают данные с устройств и публикуют их в виде MQTT-топиков в определенном формате. Другие службы читают эти данные и производят дальнейшие действия с ними: выводят в веб-интерфейс, запускают правила и т.д. Схематично взаимодействие сервисом можно представить в виде следующей схемы: | |||
== Список сервисов контроллера Wirenboard и их назначение== | |||
{| 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 | |||
|} |
Версия 11:28, 23 сентября 2021
Основой внутреннего программного обеспечения контроллера является операционная система система Debian Linux (в версии Wirenboard 6 установлен Debian Linux 9 Stretch). Она выполняет основные функции конфигурирования, контроля и управления аппаратным обеспечением контроллера, а также специализированным программным обеспечением. Специализированное ПО дополняет операционную систему и осуществляет взаимодействие с периферийными устройствами (модулями контроллера), внутреннюю диагностику работы, дает возможность написания пользовательских сценариев (правил управления) и другие важные функции, не входящие спектр задач операционной системы.
Специализированное ПО в основном представляет список сервисов (служб, драйверов), выполняющих в фоновом режиме отдельную задачу управления, диагностики или контроля. Имена собственных сервисов контроллера Wirenboard обычно имеют префикс "wb-". Каждый сервис выполняет отдельную задачу. Если функции, которые обеспечивает сервис не используются, то сервис можно временно остановить или даже отключить совсем для освобождение ресурса процессора контроллера.
Список всех запущенных сервисов и статус их работы можно посмотреть с помощью команды
systemctl list-units --type=service
Перечень основных сервисов контроллера Wirenboard приведен в таблице ниже.
Основная концепция работы контроллера - обмен информацией по протоколу MQTT через брокер (сервис) Mosquitto. Драйверы получают данные с устройств и публикуют их в виде MQTT-топиков в определенном формате. Другие службы читают эти данные и производят дальнейшие действия с ними: выводят в веб-интерфейс, запускают правила и т.д. Схематично взаимодействие сервисом можно представить в виде следующей схемы:
Список сервисов контроллера Wirenboard и их назначение
Имя сервиса | Описание |
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 |