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

Материал из Wiren Board
(Отметить эту версию для перевода)
(не показано 79 промежуточных версий 9 участников)
Строка 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>.


Все сервисы контроллера общаются между собой по общей «шине», в роли которой выступает [[MQTT | Очередь сообщений MQTT]].
== Веб-интерфейс == <!--T:2-->


По умолчанию установлены [[Wiren Board Web Interface|Веб-интерфейс Wiren Board]], [[Движок правил wb-rules|Движок правил wb-rules]], а также драйвера и вспомогательные утилиты.
<!--T:3-->
[[Special:MyLanguage/Файл:Веб-интерфейс - главная.png|thumb|500 px|Главная страница веб-интерфейса]]


Опционально можно установить шлюзы для интеграции со SCADA-системами и сторонний софт. Полный список смотрите в [[Supported_devices|Таблице поддерживаемых устройств, протоколов и программ]].
<!--T:4-->
[[Special:MyLanguage/Wiren Board 4|Wiren Board 4]] имеет собственный, находящийся локально на устройстве веб-интерфейс. Это удобный способ управления подключенными устройствами и контроля подключённых датчиков.


=== Разработка своих решений ===
=== Как зайти в интерфейс === <!--T:5-->
{{Wbincludes:Wiren Board Software Dev}}


== Обновление прошивки и релизный цикл==
<!--T:6-->
=== Кратко о релизах ===
Просто введите в адресную строку браузера IP-адрес контроллера. Также смотрите статью [[Special:MyLanguage/Как узнать IP-адрес контроллера|Как узнать IP-адрес контроллера]].
{{Wbincludes:Releases}}
{{Wbincludes:Release Log}}


=== Какой релиз на вашем контроллере ===
{{Wbincludes:What-release}}


=== Переключение между релизами ===
=== Что можно делать в интерфейсе === <!--T:7-->
{{Wbincludes:Switch-release}}


=== Обновление прошивки контроллера и откат к заводским настройкам ===
<!--T:8-->
{{Anchor|update}}
* управлять подключенными устройствами
* смотреть показания датчиков
* собирать устройства и датчики в панели (Dashboards)


Прошивку контроллера можно обновить или вернуть его к заводскому состоянию с удалением всех данных.


Все ревизии контроллера можно обновить через менеджер пакетов apt или веб-интерфейс, а в относительно свежих добавилась возможность обновления с флеш-накопителя и через Debug Network.
<!--T:9-->
Подробнее смотрите здесь - [[Wiren Board 4:Веб-интерфейс|Wiren Board 4:Веб-интерфейс]]


Инструкции:
* [[Wiren_Board_7.4_Firmware_Update |Wiren Board 7.4]]
* [[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="Как узнать ревизию контроллера">
== Архитектура ПО Wiren Board == <!--T:10-->
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:11-->
Список сервисов, запущенных на контроллере, их статус и описание можно получить командой:
[[Special:MyLanguage/Файл:MQTT.png | thumb | 600px]]
<syntaxhighlight lang="bash">
systemctl list-units --type=service
</syntaxhighlight>


Про управление сервисами читайте в статье [[How_to_diagnose#Полезные команды | Диагностика ошибок в работе контроллера]].
=== Операционная система === <!--T:12-->


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

Версия 16:02, 17 июля 2015

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

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


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

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

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

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

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


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

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


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


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

thumb | 600px

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

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