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

Материал из Wiren Board
(не показана 71 промежуточная версия 8 участников)
Строка 1: Строка 1:
{{DISPLAYTITLE: Программное обеспечение контроллеров Wiren Board}}
<languages/>
== Как устроено ПО Wiren Board ==
<translate>
[[File:DebianLinux.png | thumb | 600px | Структура ПО контроллера. В центре очередь сообщений MQTT, которая используется для обмена информацией между разными частями ПО]]
<!--T:1-->
Wiren Board имеет готовый веб-интерфейс для пользователей, через который можно произвести всю настройку стандартных функций, но также предоставляет возможность разработки и использования собственного ПО. Исходные коды всего ПО открыты.


Wiren Board работает под управлением Debian Linux. Для архитектуры используемого процессора есть [https://www.debian.org/ports/arm/ официальный порт], поэтому любое стандартное Linux-приложение можно установить из репозитория одной командой <code>apt install имя_пакета</code>.
== Веб-интерфейс == <!--T:2-->


Все сервисы контроллера общаются между собой по общей «шине», в роли которой выступает [[MQTT | Очередь сообщений MQTT]].
<!--T:3-->
[[Файл:Веб-интерфейс - главная.png|thumb|500 px|Главная страница веб-интерфейса]]


По умолчанию установлены [[Wiren Board Web Interface|Веб-интерфейс Wiren Board]], [[Движок правил wb-rules|Движок правил wb-rules]], а также драйвера и вспомогательные утилиты.
<!--T:4-->
[[Wiren Board]] имеет собственный, находящийся локально на устройстве веб-интерфейс. Это удобный способ управления подключенными устройствами и контроля подключённых датчиков.


Опционально можно установить шлюзы для интеграции со SCADA-системами и сторонний софт. Полный список смотрите в [[Supported_devices|Таблице поддерживаемых устройств, протоколов и программ]].
=== Как зайти в интерфейс === <!--T:5-->


=== Разработка своих решений ===
<!--T:6-->
{{Wbincludes:Wiren Board Software Dev}}
Просто введите в адресную строку браузера IP-адрес контроллера. Также смотрите статью [[Как узнать IP-адрес контроллера|Как узнать IP-адрес контроллера]].


== Обновление прошивки и релизный цикл==
=== Кратко о релизах ===
{{Wbincludes:Releases}}
{{Wbincludes:Release Log}}


=== Какой релиз на вашем контроллере ===
=== Что можно делать в интерфейсе === <!--T:7-->
{{Wbincludes:What-release}}


=== Переключение между релизами ===
<!--T:8-->
{{Wbincludes:Switch-release}}
* управлять подключенными устройствами
* смотреть показания датчиков
* собирать устройства и датчики в панели (Dashboards) и комнаты
* создавать сценарии, расписания и правила
* редактировать настройки


=== Обновление прошивки контроллера и откат к заводским настройкам ===
{{Anchor|update}}


Прошивку контроллера можно обновить или вернуть его к заводскому состоянию с удалением всех данных.
<!--T:9-->
Подробнее смотрите здесь - [[Веб-интерфейс Wiren Board]]


Все ревизии контроллера можно обновить через менеджер пакетов apt или веб-интерфейс, а в относительно свежих добавилась возможность обновления с флеш-накопителя и через Debug Network.
== Архитектура ПО Wiren Board == <!--T:10-->


Инструкции:
<!--T:11-->
* [[Wiren_Board_7.4_Firmware_Update |Wiren Board 7.4]]
[[Файл:MQTT.png | thumb | 600px]]
* [[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="Как узнать ревизию контроллера">
=== Операционная система === <!--T:12-->
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>


== Список сервисов и их назначение ==
<!--T:13-->
Список сервисов, запущенных на контроллере, их статус и описание можно получить командой:
Wiren Board работает под управлением стандартной сборки Debian Linux 7.0. Для архитектуры используемого процессора есть официальный [https://www.debian.org/ports/arm/ порт]. Поэтому почти любой пакет найдётся в стандартном репозитории, и его можно установить одной командой (apt-get install).
<syntaxhighlight lang="bash">
systemctl list-units --type=service
</syntaxhighlight>


Про управление сервисами читайте в статье [[How_to_diagnose#Полезные команды | Диагностика ошибок в работе контроллера]].


{| border="1" class="wikitable" style="text-align:left"
=== Репозиторий и Git === <!--T:14-->
|-
 
|| '''Имя сервиса''' || '''Описание'''
<!--T:15-->
|-
Также у нас есть собственный debian-репозиторий releases.contactless.ru, в котором хранятся пакеты, собранные специально для контроллера. Репозиторий прописан в образе ПО для Wiren Board по умолчанию (файл /etc/apt/sources.list).
|| avahi-daemon.service || Avahi mDNS/DNS-SD Stack
 
|-
<!--T:16-->
|| bluetooth.service || Bluetooth service
Весь исходный код доступен на  [https://github.com/contactless/ Github]. Там можно почерпнуть примеры для разработки собственного ПО.
|-
 
|| cgmanager.service || Cgroup management daemon
 
|-
=== MQTT === <!--T:17-->
|| cron.service || Regular background program processing daemon
 
|-
<!--T:18-->
|| dbus.service || D-Bus System Message Bus
Wiren Board использует очередь сообщений MQTT ([http://en.wikipedia.org/wiki/MQTT статья на википедии]) в качестве единого стандарта сбора информации с внутренних модулей (реле, АЦП и т.д.) и внешних устройств (датчиков 1-Wire, устройств Modbus). Для каждого такого модуля и внешнего совместимого устройства разработан "драйвер", который передаёт данные в систему сообщений MQTT и обратно. Веб-интерфейс тоже берёт данные из этой системы сообщений, и все изменения, внесённые через него (например, включить реле) он отправляет туда же. Через ту же очередь сообщений работает и движок правил.
|-
 
|| dnsmasq.service || dnsmasq - A lightweight DHCP and caching DNS server
 
|-
<!--T:19-->
|| getty@tty1.service || Getty on tty1
Подробнее смотрите [[MQTT|MQTT]].
|-
 
|| hostapd.service || LSB: Advanced IEEE 802.11 management daemon
 
|-
=== Веб-интерфейс === <!--T:20-->
|| kmod-static-nodes.service || Create list of required static device nodes for the current kernel
 
|-
<!--T:21-->
|| knxd.service || KNX Daemon
Подробнее см.  [[Wiren Board 4:Веб-интерфейс|Wiren Board 4:Веб-интерфейс]]
|-
 
|| mosquitto.service || Mosquitto MQTT v3.1/v3.1.1 Broker
<!--T:22-->
|-
Веб-интерфейс работает непосредственно на Wiren Board. В качестве веб-сервера работает лёгкий [http://manpages.ubuntu.com/manpages/lucid/man1/webfsd.1.html webfsd]. Сам сайт написан на [https://angularjs.org/ AngularJS], сайт взаимодействует с MQTT через [http://en.wikipedia.org/wiki/WebSocket WebSocket].
|| netplug.service || LSB: Brings up/down network automatically
 
|-
 
|| networking.service || Raise network interfaces
=== Движок правил === <!--T:23-->
|-
 
|| nginx.service || A high performance web server and a reverse proxy server
<!--T:24-->
|-
Можно создавать правила, например, "если значение с датчика температуры ниже 18С, включи нагреватель". Правила пишутся на языке Javascript. Подробнее смотрите
|| ntp.service || LSB: Start NTP daemon
[[Движок правил wb-rules|Движок правил wb-rules]].
|-
 
|| rsyslog.service || System Logging Service
== Как работать с модулями контроллера и портами ввода-вывода из своих программ == <!--T:25-->
|-
 
|| serial-getty@ttymxc0.service || Serial Getty on ttymxc0
 
|-
=== [[Special:MyLanguage/GSM/GPRS|GSM/GPRS]] === <!--T:26-->
|| ssh.service || OpenBSD Secure Shell server
 
|-
 
|| systemd-fsck-root.service || File System Check on Root Device
=== [[Special:MyLanguage/Wi-Fi|Wi-Fi]] === <!--T:27-->
|-
 
|| systemd-fsck@dev-mmcblk0p6.service || File System Check on /dev/mmcblk0p6
 
|-
=== [[Special:MyLanguage/RS-485|RS-485]] === <!--T:28-->
|| systemd-journal-flush.service || Flush Journal to Persistent Storage
 
|-
 
|| systemd-journald.service || Journal Service
=== [[Special:MyLanguage/GPIO|GPIO]] === <!--T:29-->
|-
 
|| systemd-logind.service || Login Service
 
|-
=== [[Special:MyLanguage/Watchdog|Watchdog]] === <!--T:30-->
|| systemd-modules-load.service || Load Kernel Modules
 
|-
== Прочее ==
|| systemd-random-seed.service || Load/Save Random Seed
[[Zabbix support]]
|-
 
|| systemd-modules-load.service || Load Kernel Modules
</translate>
|-
|| 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:56, 24 февраля 2016

Другие языки:

Wiren Board имеет готовый веб-интерфейс для пользователей, через который можно произвести всю настройку стандартных функций, но также предоставляет возможность разработки и использования собственного ПО. Исходные коды всего ПО открыты.

Веб-интерфейс

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

Wiren Board имеет собственный, находящийся локально на устройстве веб-интерфейс. Это удобный способ управления подключенными устройствами и контроля подключённых датчиков.

Как зайти в интерфейс

Просто введите в адресную строку браузера IP-адрес контроллера. Также смотрите статью Как узнать IP-адрес контроллера.


Что можно делать в интерфейсе

  • управлять подключенными устройствами
  • смотреть показания датчиков
  • собирать устройства и датчики в панели (Dashboards) и комнаты
  • создавать сценарии, расписания и правила
  • редактировать настройки


Подробнее смотрите здесь - Веб-интерфейс Wiren Board

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

MQTT.png

Операционная система

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


Репозиторий и Git

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

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


MQTT

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


Подробнее смотрите MQTT.


Веб-интерфейс

Подробнее см. Wiren Board 4:Веб-интерфейс

Веб-интерфейс работает непосредственно на Wiren Board. В качестве веб-сервера работает лёгкий webfsd. Сам сайт написан на AngularJS, сайт взаимодействует с MQTT через WebSocket.


Движок правил

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

Как работать с модулями контроллера и портами ввода-вывода из своих программ

GSM/GPRS

Wi-Fi

RS-485

GPIO

Watchdog

Прочее

Zabbix support