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

Материал из Wiren Board
(Сделал уточнение про собственные сервисы и организацию ПО)
(Перенаправление на Wiren Board Software)
Метка: новое перенаправление
 
Строка 1: Строка 1:
{{Draft}}
#REDIRECT [[Wiren_Board_Software]]
{{DISPLAYTITLE: Архитектура ПО контроллера Wirenboard}}
Все программное обеспечение (ПО) контроллера можно разделить на операционную систему (ОС), специализированное ПО и пользовательские программы.
Основа внутреннего ПО контроллера является операционная система система Debian Linux (в версии Wirenboard 6 установлен Debian Linux 9 Stretch). Она выполняет основные функции загрузки, конфигурирования, контроля и управления.
Специализированное ПО дополняет операционную систему и осуществляет взаимодействие с портами ввода-вывода, периферийными устройствами и модулями контроллера, диагностику работы контроллера, обеспечивает доступ к контроллеру через веб-интерфейс дает возможность написания пользовательских сценариев (правил управления) и другие важные функции, не входящие спектр задач операционной системы.
 
Специализированное ПО в основном представляет набор специальных программ и драйверов выполняющих в фоновом режиме отдельную задачу управления, диагностики или контроля. Большинство таких программы и драйверы зарегистрировано с ОС Linux в виде сервисов (служб) - программ, которые работают в фоновом режиме, запускаются автоматически при старте системы и контролируются операционной системой. Имена собственных сервисов контроллера Wirenboard обычно имеют префикс "wb-". Каждый сервис выполняет отдельную задачу. Если функции, которые обеспечивает сервис не используются, то сервис можно временно остановить или даже отключить совсем для освобождение ресурса процессора контроллера.
 
Список всех запущенных сервисов и статус их работы можно посмотреть с помощью команды
<pre>systemctl list-units --type=service</pre>
Перечень собственных сервисов контроллера Wirenboard приведен в таблице ниже.
 
Основная концепция работы контроллера - обмен информацией по протоколу [[MQTT | MQTT ]] через брокер (сервис) Mosquitto. Драйверы получают данные с устройств и публикуют их в виде MQTT-топиков в определенном формате. Другие службы читают эти данные и производят дальнейшие действия с ними: выводят в веб-интерфейс, запускают правила и т.д. Схематично взаимодействие сервисом можно представить в виде следующей схемы:
[[Файл:sw-services-architecture.png|800px|right| Архитектура ПО контроллера Wirenboard]]
 
Работу каждого сервиса можно продиагностировать командой
systemctl status имя_сервиса
 
Например, чтобы узнать, работает ли драйвер serial-устройств, нужно выполнить команду:
  systemctl status wb-mqtt-serial
В обычном режиме, когда идет опрос устройств статус сервиса должен быть <code><font color="green"><b>active (running)</b></font></code>, а полный вывод команды такой:
<pre>
● wb-mqtt-serial.service - MQTT Driver for serial devices
  Loaded: loaded (/lib/systemd/system/wb-mqtt-serial.service; enabled; vendor preset: enabled)
  Active: active (running) since Sun 2021-11-21 11:25:41 MSK; 24min ago
Main PID: 2315 (wb-mqtt-serial)
  CGroup: /system.slice/wb-mqtt-serial.service
          └─2315 /usr/bin/wb-mqtt-serial
</pre>
Команда также выводит время запуска сервиса и продолжительность его работы.
 
Однако нужно иметь в виду, что не все сервисы работают постоянно, некоторые из них (например, <code>wb-hwconf-manager</code>) вызываются только при необходимости. Поэтому при работе контроллера в основном этот сервис имеет статус <code><font color="green"><b>active (exited)</b></font></code>.
 
Если требуется остановить сервис (например, остановить сервис <code>wb-mqtt-serial</code> для опроса устройств вручную с помощью утилиты <code>modbus_client</code>), то сервисы можно принудительно останавливать:
  systemctl stop имя_сервиса
 
Запускать
  systemctl start имя_сервиса
 
И перезапускать
  systemctl restart имя_сервиса
 
 
{{note|info| Нужно понимать, что такое ручное вмешательство может нарушить нормальную работу контроллера, а процесс управления может быть остановлен. Поэтому не следует выполнять данные действия, если вы не до конца понимаете, что делаете, или если контроллер управляет ответственным оборудованием или непрерывным процессом! Работа некоторых системных сервисов (например, <code>ssh</code>) контролируется операционной системой, при их остановке контроллер будет автоматически перезагружен!}}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
== Список сервисов контроллера 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
|}

Текущая версия на 19:50, 30 ноября 2021

Перенаправление на: