|
|
(не показано 98 промежуточных версий 9 участников) |
Строка 1: |
Строка 1: |
| {{DISPLAYTITLE: Программное обеспечение контроллеров Wiren Board}}
| | Wiren Board предоставляет как готовый веб-интерфейс для пользователей, так и возможности для собственной разработки. Исходные коды всего ПО открыты. |
| ==Описание==
| |
| ===Установка===
| |
| Программное обеспечение устанавливается на заводе на автоматизированном стенде во время производства партии контроллеров. Конечному пользователю не требуется предпринимать никаких действий для установки, все взаимодействие происходит через веб-интерфейс и командную строку.
| |
| ===Стоимость===
| |
| Программное обеспечение поставляется бесплатно вместе с контроллерами Wiren Board.
| |
|
| |
|
| == Как устроено ПО Wiren Board == | | == Веб-интерфейс == |
| [[File:DebianLinux.png | thumb | 600px | Структура ПО контроллера. В центре очередь сообщений MQTT, которая используется для обмена информацией между разными частями ПО]] | | [[Файл:Веб-интерфейс - главная.png|thumb|400 px|Главная страница веб-интерфейса]] |
| | Подробнее смотрите здесь - [[Wiren Board 4:Веб-интерфейс]] |
|
| |
|
| Wiren Board работает под управлением Debian Linux. Для архитектуры используемого процессора есть [https://www.debian.org/ports/arm/ официальный порт], поэтому любое стандартное Linux-приложение можно установить из репозитория одной командой <code>apt install имя_пакета</code>. | | [[Wiren Board 4]] имеет собственный, находящийся локально на устройстве веб-интерфейс. Это удобный способ управления подключенными устройствами и контроля подключённых датчиков. |
| | === Как зайти в интерфейс === |
| | Просто введите в адресную строку браузера IP-адрес контроллера. При подключении по Wi-Fi к создаваемой контроллером точке доступа WirenBoard это 192.168.42.1 |
|
| |
|
| Все сервисы контроллера общаются между собой по общей «шине», в роли которой выступает [[MQTT | Очередь сообщений MQTT]].
| | === Что можно делать в интерфейсе === |
| | * управлять подключенными устройствами |
| | * смотреть показания датчиков |
| | * собирать устройства и датчики в панели (Dashboards) |
|
| |
|
| По умолчанию установлены [[Wiren Board Web Interface|Веб-интерфейс Wiren Board]], [[Движок правил wb-rules|Движок правил wb-rules]], а также драйвера и вспомогательные утилиты.
| | == Архитектура ПО Wiren Board == |
| | <img src="https://docs.google.com/drawings/d/10EKkSP6j3nM2OYGFicYATNuu1m52a-5p6MbMN6UNQes/pub?w=480&h=360"> |
| | === Операционная система === |
| | Wiren Board работает под управлением стандартной сборки Debian Linux 7.0. Для архитектуры используемого процессора есть официальный порт - https://www.debian.org/ports/arm/. Поэтому почти любой пакет найдётся в стандартном репозитории, и его можно установить одной командой (apt-get install). |
| | === Репозиторий и Git === |
| | Также у нас есть собственный debian-репозиторий releases.contactless.ru, в котором хранятся пакеты, собранные специально для контроллера. Репозиторий прописан в образе ПО для Wiren Board по умолчанию (файл /etc/apt/sources.list). |
|
| |
|
| Опционально можно установить шлюзы для интеграции со SCADA-системами и сторонний софт. Полный список смотрите в [[Supported_devices|Таблице поддерживаемых устройств, протоколов и программ]].
| | Весь исходный код доступен на Github - https://github.com/contactless/. Там можно почерпнуть примеры для разработки собственного ПО. |
|
| |
|
| === Разработка своих решений === | | === MQTT === |
| {{Wbincludes:Wiren Board Software Dev}}
| | Подробнее смотрите [[MQTT]]. |
|
| |
|
| == Обновление прошивки и релизный цикл==
| | Wiren Board использует очередь сообщений MQTT (http://en.wikipedia.org/wiki/MQTT) в качестве единого стандарта сбора информации с внутренних модулей (реле, АЦП и т.д.) и внешних устройств (датчиков 1-Wire, устройств Modbus). Для каждого такого модуля и внешнего совместимого устройства разработан "драйвер", который передаёт данные в систему сообщений MQTT и обратно. Веб-интерфейс тоже берёт данные из этой системы сообщений, и все изменения, внесённые через него (например, включить реле) он отправляет туда же. Через ту же очередь сообщений работает и движок правил. |
| === Кратко о релизах ===
| |
| {{Wbincludes:Releases}}
| |
| {{Wbincludes:Release Log}}
| |
|
| |
|
| === Какой релиз на вашем контроллере === | | === Веб-интерфейс === |
| {{Wbincludes:What-release}}
| | Подробнее см. [[Wiren Board 4:Веб-интерфейс]] |
|
| |
|
| === Переключение между релизами ===
| | Веб-интерфейс работает непосредственно на 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]. |
| {{Wbincludes:Switch-release}}
| |
|
| |
|
| === Обновление прошивки контроллера и откат к заводским настройкам === | | === Движок правил === |
| {{Anchor|update}}
| | Можно создавать правила, например, "если значение с датчика температуры ниже 18С, включи нагреватель". Правила пишутся на языке Javascript. Подробнее смотрите https://github.com/contactless/wb-rules |
| {{PeerTube
| |
| | link= https://peertube.wirenboard.com/video-playlists/embed/6623c76e-1abe-4728-959c-f5dde919d80c?playlistPosition=5
| |
| | playlist = true
| |
| | text= Обновление ПО контроллера
| |
| }}
| |
|
| |
|
| Прошивку контроллера можно обновить или вернуть его к заводскому состоянию с удалением всех данных.
| | == Как работать с модулями контроллера и портами ввода-вывода из своих программ == |
| | | === [[GSM/GPRS]] === |
| Все ревизии контроллера можно обновить через менеджер пакетов apt или веб-интерфейс, а в относительно свежих добавилась возможность обновления с флеш-накопителя и через Debug Network.
| | === [[Wi-Fi]] === |
| | | === [[RS-485]] === |
| Инструкции:
| | === [[GPIO]] === |
| * [[Wiren_Board_8_Firmware_Update |Wiren Board 8]]
| | === [[Watchdog]] === |
| * [[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="Как узнать ревизию контроллера">
| |
| 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>
| |
| | |
| == Список сервисов и их назначение == | |
| Список сервисов, запущенных на контроллере, их статус и описание можно получить командой:
| |
| <syntaxhighlight lang="bash">
| |
| systemctl list-units --type=service
| |
| </syntaxhighlight>
| |
| | |
| Про управление сервисами читайте в статье [[How_to_diagnose#Полезные команды | Диагностика ошибок в работе контроллера]].
| |
| | |
| {| 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
| |
| |}
| |
Wiren Board предоставляет как готовый веб-интерфейс для пользователей, так и возможности для собственной разработки. Исходные коды всего ПО открыты.
Веб-интерфейс
Главная страница веб-интерфейса
Подробнее смотрите здесь - Wiren Board 4:Веб-интерфейс
Wiren Board 4 имеет собственный, находящийся локально на устройстве веб-интерфейс. Это удобный способ управления подключенными устройствами и контроля подключённых датчиков.
Как зайти в интерфейс
Просто введите в адресную строку браузера IP-адрес контроллера. При подключении по Wi-Fi к создаваемой контроллером точке доступа WirenBoard это 192.168.42.1
Что можно делать в интерфейсе
- управлять подключенными устройствами
- смотреть показания датчиков
- собирать устройства и датчики в панели (Dashboards)
Архитектура ПО Wiren Board
<img src="https://docs.google.com/drawings/d/10EKkSP6j3nM2OYGFicYATNuu1m52a-5p6MbMN6UNQes/pub?w=480&h=360">
Операционная система
Wiren Board работает под управлением стандартной сборки Debian Linux 7.0. Для архитектуры используемого процессора есть официальный порт - https://www.debian.org/ports/arm/. Поэтому почти любой пакет найдётся в стандартном репозитории, и его можно установить одной командой (apt-get install).
Репозиторий и Git
Также у нас есть собственный debian-репозиторий releases.contactless.ru, в котором хранятся пакеты, собранные специально для контроллера. Репозиторий прописан в образе ПО для Wiren Board по умолчанию (файл /etc/apt/sources.list).
Весь исходный код доступен на Github - https://github.com/contactless/. Там можно почерпнуть примеры для разработки собственного ПО.
MQTT
Подробнее смотрите MQTT.
Wiren Board использует очередь сообщений MQTT (http://en.wikipedia.org/wiki/MQTT) в качестве единого стандарта сбора информации с внутренних модулей (реле, АЦП и т.д.) и внешних устройств (датчиков 1-Wire, устройств Modbus). Для каждого такого модуля и внешнего совместимого устройства разработан "драйвер", который передаёт данные в систему сообщений MQTT и обратно. Веб-интерфейс тоже берёт данные из этой системы сообщений, и все изменения, внесённые через него (например, включить реле) он отправляет туда же. Через ту же очередь сообщений работает и движок правил.
Веб-интерфейс
Подробнее см. Wiren Board 4:Веб-интерфейс
Веб-интерфейс работает непосредственно на Wiren Board. В качестве веб-сервера работает лёгкий webfsd. Сам сайт написан на AngularJS, сайт взаимодействует с MQTT через WebSocket.
Движок правил
Можно создавать правила, например, "если значение с датчика температуры ниже 18С, включи нагреватель". Правила пишутся на языке Javascript. Подробнее смотрите https://github.com/contactless/wb-rules
Как работать с модулями контроллера и портами ввода-вывода из своих программ