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

Материал из Wiren Board
(Добавил информацию по статусам)
(Перенаправление на Wiren Board Software)
Метка: новое перенаправление
 
(не показаны 2 промежуточные версии 1 участника)
Строка 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 имя_сервиса
 
Однако нужно понимать, что такое ручное вмешательство может нарушить нормальную работу контроллера, а процесс управления может быть остановлен. Поэтому не следует выполнять данные действия, если вы не до конца понимаете, что вы делаете, или если контроллер управляет ответственным оборудованием или непрерывным процессом!
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
== Список сервисов контроллера 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

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