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

Материал из Wiren Board
(→‎Как устроено ПО Wiren Board: Добавил про установку и стоимость)
(не показаны 132 промежуточные версии 9 участников)
Строка 1: Строка 1:
{{DISPLAYTITLE: Программное обеспечение контроллеров Wiren Board}}
Wiren Board предоставляет как готовый веб-интерфейс для пользователей, так и возможности для собственной разработки.
==Описание==
===Установка===
Программное обеспечение устанавливается на заводе на автоматизированном стенде во время производства партии контроллеров. Конечному пользователю не требуется предпринимать никаких действий для установки, все взаимодействие происходит через веб-интерфейс и командную строку.
===Стоимость===
Программное обеспечение поставляется бесплатно вместе с контроллерами Wiren Board.


== Как устроено ПО Wiren Board ==
== Веб-интерфейс ==
[[File:DebianLinux.png | thumb | 600px | Структура ПО контроллера. В центре очередь сообщений MQTT, которая используется для обмена информацией между разными частями ПО]]
[[Файл:Native UI System.png|500px|thumb|Служебные устройства]]
Подробнее смотрите здесь - [[Wiren Board 4:Веб-интерфейс]]
[[Wiren Board 4]] имеет собственный, находящийся локально на устройстве веб-интерфейс. Это удобный способ управления подключенными устройствами и контроля подключённых датчиков.
=== Как зайти в интерфейс ===
Просто введите в адресную строку браузеру IP-адрес контроллера
=== Что можно делать в интерфейсе ===
* следить за состоянием подключенных устройств и датчиков
* собирать устройства и датчики в зоны ("комнаты")
* создавать правила на основе механизма IFTTT ("If This Then That" - "Если случилось ..., делай ...")
Также интерфейс можно расширять при помощи Javascript


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


Все сервисы контроллера общаются между собой по общей «шине», в роли которой выступает [[MQTT | Очередь сообщений MQTT]].
=== Репозиторий и Git ===
Также у нас есть собственный репозиторий <strike>repo.contactless.ru</strike>, в котором хранятся пакеты, собранные специально для контроллера. Репозиторий прописан в образе ПО для Wiren Board по умолчанию.


По умолчанию установлены [[Wiren Board Web Interface|Веб-интерфейс Wiren Board]], [[Движок правил wb-rules|Движок правил wb-rules]], а также драйвера и вспомогательные утилиты.
Весь исходный код доступен на Github - https://github.com/contactless/. Там можно почерпнуть примеры для разработки собственного ПО.


Опционально можно установить шлюзы для интеграции со SCADA-системами и сторонний софт. Полный список смотрите в [[Supported_devices|Таблице поддерживаемых устройств, протоколов и программ]].
=== MQTT ===
Wiren Board использует протокол MQTT (http://en.wikipedia.org/wiki/MQTT) для обработки сообщений от подключенных устройств. Используемая реализация брокера сообщений - http://mosquitto.org/ Веб-интерфейс работает также через систему сообщений MQTT.


=== Разработка своих решений ===
== Как работать с модулями контроллера и портами ввода-вывода ==
{{Wbincludes:Wiren Board Software Dev}}
=== [[GSM/GPRS]] ===
=== [[Wi-Fi]] ===
=== [[RS-485]] ===
=== [[GPIO]] ===
=== [[Watchdog]] ===


== Обновление прошивки и релизный цикл==
== Работа с Ninja Blocks ==
=== Кратко о релизах ===
В состав ПО Wiren Board Smart Home входит интеграция с облачной системой управления умным домом Ninja Blocks.
{{Wbincludes:Releases}}
Для использования системы необходимо сначала выполнить процедуру привязки.
{{Wbincludes:Release Log}}


=== Какой релиз на вашем контроллере ===
1. Откройте нативный веб-интерфейс управления и найдите устройство NinjaBlocks bridge. В поле Status будет состояние "Waiting for activation".
{{Wbincludes:What-release}}
В поле Block Id написан уникальный идентификатор устройства для работы в Ninja Blocks, скопируйте его в буфер обмена.


=== Переключение между релизами ===
2. Зайдите в бета-версию веб-интерейса Ninja Blocks по адресу http://wakai.ninja.is. Зарегистрируйтесть в системе и войдите в нее.
{{Wbincludes:Switch-release}}


=== Обновление прошивки контроллера и откат к заводским настройкам ===
3. Нажмите на кнопку Pair Hub и введите идентификатор устройства из пункта 1. Статус в нативном веб-интерфейсе должен смениться на "Connected".
{{Anchor|update}}


Прошивку контроллера можно обновить или вернуть его к заводскому состоянию с удалением всех данных.
4. В случае проблем на этом этапе повторите процедуру следующим образом:


Все ревизии контроллера можно обновить через менеджер пакетов apt или веб-интерфейс, а в относительно свежих добавилась возможность обновления с флеш-накопителя и через Debug Network.
Остановите демон.
<pre>
root@wirenboard:~# /etc/init.d/wb-homa-ninja-bridge stop
</pre>


Инструкции:
Удалите сохранённый токет, если есть:
* [[Wiren_Board_8_Firmware_Update |Wiren Board 8]]
<pre>
* [[Wiren_Board_7.4_Firmware_Update |Wiren Board 7.4]]
root@wirenboard:~# rm /var/lib/wirenboard/*.token
* [[Wiren_Board_7_Firmware_Update|Wiren Board 7.2…7.3]]
</pre>
* [[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
<pre>
Image: Revision in the console.png| Ревизия контроллера в консоли, при подключении по [[SSH]]. Сразу под баннером, зелёными цифрами 6.7.2
root@wirenboard:~# /etc/init.d/wb-homa-ninja-bridge start
Image: Revision on the stick.png| Ревизия контроллера на наклейке
</pre>
</gallery>


== Список сервисов и их назначение ==
Удалите устройство в Ninja Blocks на странице Settings во вкладке Hubs с помощью кнопки Unpair.
Список сервисов, запущенных на контроллере, их статус и описание можно получить командой:
<syntaxhighlight lang="bash">
systemctl list-units --type=service
</syntaxhighlight>


Про управление сервисами читайте в статье [[How_to_diagnose#Полезные команды | Диагностика ошибок в работе контроллера]].
Повторите пункт 3.
 
{| 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
|}

Версия 18:18, 3 апреля 2015

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

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

Служебные устройства

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

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

Просто введите в адресную строку браузеру IP-адрес контроллера

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

  • следить за состоянием подключенных устройств и датчиков
  • собирать устройства и датчики в зоны ("комнаты")
  • создавать правила на основе механизма IFTTT ("If This Then That" - "Если случилось ..., делай ...")

Также интерфейс можно расширять при помощи Javascript

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

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

Wiren Board работает под управлением стандартной сборки Debian Linux 7.0. Для архитектуры используемого процессора есть официальный порт - https://www.debian.org/ports/arm/. Поэтому почти любой пакет найдётся в стандартном репозитории, и его можно установить одной командой.

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

Также у нас есть собственный репозиторий repo.contactless.ru, в котором хранятся пакеты, собранные специально для контроллера. Репозиторий прописан в образе ПО для Wiren Board по умолчанию.

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

MQTT

Wiren Board использует протокол MQTT (http://en.wikipedia.org/wiki/MQTT) для обработки сообщений от подключенных устройств. Используемая реализация брокера сообщений - http://mosquitto.org/ Веб-интерфейс работает также через систему сообщений MQTT.

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

GSM/GPRS

Wi-Fi

RS-485

GPIO

Watchdog

Работа с Ninja Blocks

В состав ПО Wiren Board Smart Home входит интеграция с облачной системой управления умным домом Ninja Blocks. Для использования системы необходимо сначала выполнить процедуру привязки.

1. Откройте нативный веб-интерфейс управления и найдите устройство NinjaBlocks bridge. В поле Status будет состояние "Waiting for activation". В поле Block Id написан уникальный идентификатор устройства для работы в Ninja Blocks, скопируйте его в буфер обмена.

2. Зайдите в бета-версию веб-интерейса Ninja Blocks по адресу http://wakai.ninja.is. Зарегистрируйтесть в системе и войдите в нее.

3. Нажмите на кнопку Pair Hub и введите идентификатор устройства из пункта 1. Статус в нативном веб-интерфейсе должен смениться на "Connected".

4. В случае проблем на этом этапе повторите процедуру следующим образом:

Остановите демон.

root@wirenboard:~# /etc/init.d/wb-homa-ninja-bridge stop

Удалите сохранённый токет, если есть:

root@wirenboard:~# rm /var/lib/wirenboard/*.token

Запустите демон снова

root@wirenboard:~# /etc/init.d/wb-homa-ninja-bridge start

Удалите устройство в Ninja Blocks на странице Settings во вкладке Hubs с помощью кнопки Unpair.

Повторите пункт 3.