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

Добавил информацию про сервисы
м (Отмена правки 55989, сделанной Adtest (обсуждение))
Метка: отмена
(Добавил информацию про сервисы)
Строка 5: Строка 5:




Специализированное ПО в основном представляет список сервисов (служб, драйверов), выполняющих в фоновом режиме отдельную задачу управления, диагностики или контроля. Имена собственных сервисов контроллера Wirenboard обычно имеют префикс "wb-". Каждый сервис выполняет отдельную задачу. Если функции, которые обеспечивает сервис не используются, то сервис можно временно остановить или даже отключить совсем для освобождение ресурса процессора контроллера.
Специализированное ПО в основном представляет набор специальных программ и драйверов выполняющих в фоновом режиме отдельную задачу управления, диагностики или контроля. Эти программы и драйверы в основном зарегистрированы с ОС Linux в виде сервисов (служб) - программ, которые работают в фоновом режиме, запускаются автоматически при старте системы и контролируются операционной системой. Имена собственных сервисов контроллера Wirenboard обычно имеют префикс "wb-". Каждый сервис выполняет отдельную задачу. Если функции, которые обеспечивает сервис не используются, то сервис можно временно остановить или даже отключить совсем для освобождение ресурса процессора контроллера.


Список всех запущенных сервисов и статус их работы можно посмотреть с помощью команды
Список всех запущенных сервисов и статус их работы можно посмотреть с помощью команды
Строка 12: Строка 12:


Основная концепция работы контроллера - обмен информацией по протоколу [[MQTT | MQTT ]] через брокер (сервис) Mosquitto. Драйверы получают данные с устройств и публикуют их в виде MQTT-топиков в определенном формате. Другие службы читают эти данные и производят дальнейшие действия с ними: выводят в веб-интерфейс, запускают правила и т.д. Схематично взаимодействие сервисом можно представить в виде следующей схемы:
Основная концепция работы контроллера - обмен информацией по протоколу [[MQTT | MQTT ]] через брокер (сервис) Mosquitto. Драйверы получают данные с устройств и публикуют их в виде MQTT-топиков в определенном формате. Другие службы читают эти данные и производят дальнейшие действия с ними: выводят в веб-интерфейс, запускают правила и т.д. Схематично взаимодействие сервисом можно представить в виде следующей схемы:
[[Файл:sw-services-architecture.png|800px|right| Архитектура ПО контроллера Wirenboard]]
Работу каждого сервиса можно продиагностировать командой
systemctl status имя_сервиса
Например, чтобы узнать, работает ли драйвер serial-устройств, нужно выполнить команду:
  systemctl status wb-mqtt-serial
В обычном режиме, когда идет опрос устройств статус сервиса должен быть running, а полный вывод команды такой:
<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>exited</code>.
Если требуется остановить сервис (например, остановить сервис <code>wb-mqtt-serial</code> для опроса устройств вручную с помощью утилиты <code>modbus_client</code>), то сервисы можно принудительно останавливать:
  systemctl stop имя_сервиса
Запускать
  systemctl start имя_сервиса
И перезапускать
  systemctl restart имя_сервиса
Однако нужно понимать, что такое ручное вмешательство может нарушить нормальную работу контроллера, а процесс управления может быть остановлен. Поэтому не следует выполнять данные действия, если вы не до конца понимаете, что вы делаете, или если контроллер управляет ответственным оборудованием или непрерывным процессом!




wb_editors
480

правок