Вы находитесь на странице: 1из 74

Wiren Board NETMON-1 -

руководство пользователя
Версия 1.1 от 02.06.2015

PDF создан с использованием инструмента с открытым исходным кодом mwlib. См. http://code.pediapress.com/ для получения более
подробной информации.
PDF generated at: Tue, 02 Jun 2015 19:40:58 CEST
Содержание
Статьи
Wiren Board NETMON-1 1

Интерфейсы 9
Power over Ethernet 9
Debug UART 11
"Сухой контакт" 14

Программное обеспечение 15
Программное обеспечение Wiren Board 15
MQTT 17
Wiren Board 4:Веб-интерфейс 20
Движок правил wb-rules 22

Настройка контроллера 29
Как узнать IP-адрес контроллера 29
SSH 31
Просмотр файлов контроллера с компьютера 33

Подсистемы 36
GSM/GPRS 36
ADC 38
GPIO 41
Watchdog 42
Buzzer 42
Датчик SHT1x 43

Подключение периферии 44
Поддерживаемые устройства 44
Управление низковольтной нагрузкой 48
RS-485 50
Драйвер wb-homa-modbus 53

Приложения 57
Работа с последовательным портом из Linux 57
Работа с GPIO 59
CMUX 62

Периферийные устройства WB-xxx 63


1-Wire 63
WB-MRM2 Реле 2х канальное 64
WB-RGB Диммер RGB 66

Примечания
Источники и основные авторы 70
Источники, лицензии и редакторы изображений 71
Wiren Board NETMON-1 1

Wiren Board NETMON-1


Wiren Board NETMON-1 - универсальный контроллер для автоматизации с открытым ПО на базе Linux в
корпусе для установку в 19" стойку с встроенным GSM-модемом.
Предназначен для мониторинга сетевого и телекоммуникационного оборудования, опроса датчиков и
счётчиков, удалённого управления питанием.

Wiren Board NETMON-1 Wiren Board NETMON-1 (задняя панель)

ПО

Операционная система Debian Linux 7.0. Mainline kernel 3.19.

Контроллер

Процессор Freescale i.MX233 454 МГц

Память оперативная DDR SDRAM 64 МБ

Память энергонезависимая Карта microSD до 32 ГБ

Беспроводные интерфейсы

Wi-Fi 802.11 b/g/n 2.4 ГГц (опция, устанавливается в USB-разъём внутри устройства)

GSM/GPRS 900/1800 МГц. GPRS multi-slot class 10/8 max. 85.6 kbps (downlink). SIM-карта формата miniSIM
(полноразмерная)

Проводные интерфейсы

Ethernet 10/100 Мбит/с, Разъём RJ-45

USB 2.0 Host (внутри корпуса)

2xRS-485 есть программная поддержка протоколов Modbus RTU, ADICON/A-BUS/Uniel, Smartbus G4

2xRS-232 один порт на передней панели, один на задней.

Отладочная консоль Debug UART Подключается через переходник USB-UART

1-Wire Подключение датчиков температуры, влажности

Подключение датчиков

8x АЦП до 20V

22x"Сухой контакт" Подключение кнопок, герконов, счетчиков с импульсными выходами.

Выходы

2xРеле 220В/10А, нормально замкнутые. Пары розетка IEC-320-C13 - вилка IEC-320-C14 на задней панели.

4xРеле 220В/6A, переключающая группа контактов. Выведены на клеммники на переднюю панель.


Wiren Board NETMON-1 2

Прочее

Излучатель звука "пищалка".

Часы реального времени RTC Резервная батарейка

Сторожевой таймер (watchdog) Отдельный аппаратный watchdog, перезагружающий устройство целиком по питанию

Датчик температуры и влажности Встроенный датчик sht10 внутри корпуса

Питание

Потребляемая мощность <5 Вт (пиковая - до 12 Вт)

Работа от резервного встроенный li-ion аккумулятор (опция: 1800mAh или 3600mAh)


аккумулятора

питание по витой паре Passsive Power over Ethernet

Габаритные размеры 431 x 203 x 43 мм , корпус для установки в 19" стойку, 1U

Эксплуатация Рабочая температура - 0..70C (-40..85C по запросу) Покрытие лаком для влагозащиты.

Комплект поставки
• контроллер Wiren Board NETMON-1
• карта памяти с ОС Linux
• клеммники ответные 4шт
• набор для крепления корпуса в 19" стойку

Питание

От внешнего блока питания


Допустимый диапазон питания 5-22В. Среднее потребление устройства - 1,5-2 Вт. Но т.к. модуль GSM
потребляет импульсно до 8 Вт, рекомендуется использовать блоки питания с мощностью не менее 10 Вт.
Разъем питания под стандартный jack 5.5x2.1мм расположен на задней панели. Также питание можно подавать
на соответствующие выводы (см. распиновку ниже) разъёма RJ45 на задней панели.

Power over Ethernet


Поддерживается питание по кабелю Ethernet (Passive PoE) через разъём RJ45 на передней панели.
Поддерживаются стандартные напряжение 12В и 15В. Подробнее смотрите Power over Ethernet.

Аккумулятор
Wiren Board NETMON-1 может комплектоваться одним или двумя аккумуляторами Li-Ion (Li-Pol) c
максимальным напряжением 4.2В. При подключении питания аккумулятор заряжается током до 0,5 А.
Есть защита от зарядки при отрицательных температурах и при перегреве.
Wiren Board NETMON-1 3

GSM/GPRS-модем
Wiren Board NETMON-1 комплектуется 2G (GPRS)-модемом, который поддерживает GPRS, CSD, отправку и
получение SMS.
Антенна GSM подключается к SMA разъему на задней панели контроллера. При слабом сигнале GSM
рекомендуется использовать выносную антенну и располагать ее вдали от контроллера.

USB-порт
Wiren Board NETMON-1 имеет один порт USB (Host, type A) внутри корпуса. Порт предназначен для
подключения Wi-Fi-стиков, 3G-модемов и т.п.

Коммутация внешней нагрузки

Задняя панель
Wiren Board NETMON-1 оборудован
двумя группами коммутации
питания на задней панели.
Каждая группа состоит из вилки
(входа) IEC-320-C14 и розетки
(выхода) IEC-320-C13. Вход и выход Входы-выходы для управления 220В и разъём для антенны GSM

соединены через реле. Реле является


нормально-замкнутым (т.е. при выключенном WB NETMON-1, розетки включены).
Номинальный ток реле: 16A/250VAC. Реле размыкает только один (фазный) провод. Рекомендуется
использовать выходы для коммутации резистивной нагрузки до 10A.
По запросу возможна конфигурация для использования общего входа на оба выхода.

Передняя панель
На передней панели Wiren Board
NETMON-1 находятся четыре группы
релейных выходов, выведенные на
разъёмные клеммники.
Каждое реле является переключаемым,
т.е. выведены контакты NO
(нормально-разомкнутый), NC
(нормально-замкнутый), COM (общий).
Номинальный ток реле: 10А@240VAC
(резистивной нагрузки).
Рекомендуется использовать выходы для Релейный выходы на передней панели

коммутации резистивной нагрузки до 5А


@ 240В переменного тока.
Wiren Board NETMON-1 4

Последовательные порты
Wiren Board NETMON-1 оснащён двумя полудуплексными портами RS-485 и двумя портами RS-232 (только
RX/TX).
Оба порта RS-485 и один порт RS-232 выведены на разъёмы RJ45 на передней панели, один порт RS-232
выведен на разъём RJ45 на задней панели.
Устройства в Linux:
• /dev/ttyNSC0 - RS-485 на разъёме и8
• /dev/ttyNSC1 - RS-485 на разъёме и6
• /dev/ttyNSC2 - RS-232 на разъёме и4
• /dev/ttyNSC3 - RS-232 на разъёме на задней панели
Про работу с RS-485 и подключениие периферийных устройств см. также статью RS-485.

Отладочная консоль
Отладочная консоль (debug UART) выведена на разъём и2 (см. ниже), а также на гребёнку внутри корпуса.
Порт имеет уровни 3.3V и требует специального переходника USB-UART или RS232-UART для подключения
к компьютеру.
Подробности по работе с отладочной консолью см. в статье Debug UART.

Разъёмы передней панели

передняя панель

схема передней панели

порты функция

и1 discrete input

и2 1-wire / Debug UART

и3 discrete input

и4 RS-232

и5 discrete input

и6 RS-485

и7 discrete input

и8 RS-485
Wiren Board NETMON-1 5

и9 discrete input

а1 ADC input

а2 ADC input

а3 ADC input

а4 ADC input

а5 ADC input

а6 ADC input

а7 ADC input

Ehternet и1 и2 и3 и4 и5 и6 и7 и8 и9

1 Y/W discrete input 5v discrete input 6 - Isolated GND - Isolated GND - Isolated GND
1

2Y discrete input 5v discrete input 7 - discrete input - discrete input - discrete input
2 11 15 19

3 G/W discrete input Debug discrete input 8 GND Isolated GND - Isolated GND - Isolated GND
3 Tx

4B discrete input 1-Wire discrete input 9 RS-232 Tx discrete input RS-485 discrete input RS-485 discrete input
4 1 12 A2 16 A1 20

5 B/W discrete input GND discrete input GND Isolated GND RS-485 Isolated GND RS-485 Isolated GND
5 10 B2 B1

6G Isolated GND Debug Isolated GND RS-232 Tx discrete input - discrete input - discrete input
Rx 1 13 17 21

7 Br/W Isolated GND GND Isolated GND - Isolated GND - Isolated GND - Isolated GND

8 Br Isolated GND GND Isolated GND - discrete input - discrete input - discrete input
14 18 22

Ethernet а1 а2 а3 а4 а5 а6 а7

1 Y/W 3.3V - - - - - -

2Y 3.3V - - - - - -

3 G/W GND - - - - - -

4B ADC input 4 ADC input 1 ADC input 6 ADC input 2 ADC input 7 ADC input 3 ADC input 8

5 B/W GND GND GND GND GND GND GND

6G ADC input 5 - - - - - -

7 Br/W 5V - - - - - -

8 Br 5V - - - - - -
Wiren Board NETMON-1 6

Задняя панель
Разъём RJ-45 на задней панели,
распиновка:

Распиновка разъёма RJ-45 на задней панели WB NETMON-1

Ethernet

1 Y/W RS-232 TX (2)

2Y RS-232 TX (2)

3 G/W RS-232 RX (2)

4B V+ вход (5-15V)

5 B/W V+ вход (5-15V)

6G RS-232 RX (2)

7 Br/W GND

8 Br GND

shield GND
Wiren Board NETMON-1 7

Список GPIO
Wiren Board NETMON-1: Список GPIO

Стандартные схемы подключения

Управление низковольтной
нагрузкой
Реле на 12/24В, светодиоды,
вентиляторы, сигнальные лампы и т.
д.
Низковольтной нагрузкой можно
управлять с помощью четырёх реле
на передней панели.
Пример подключения кнопки

Контакторы с управляющим напряжением 220В


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

Датчики с аналоговым выходом по напряжению


Подключите землю устройства к клемме GND, или соедините с общей земляной шиной. Выход датчика
подключается к аналоговым входам в разъёмах а1-а7.

Датчики с аналоговым токовым выходом


Специальных токовых входов в Wiren Board NETMON-1 нет, но можно, используя резистор 100-300Ом, ток
преобразовать в напряжение и подключить как в предыдущем пункте.

Датчики с резистивным выходом


С помощью внешнего резистора и опорного напряжения нужно собрать делитель, чтобы получить выход
напряжения (см. предыдущие пункты). В качестве опорного напряжения можно использовать выход +5V с
контактов 7-8 разъёма а1, или 1-2 разъёма и2.
Датчики удобно подключать к разъёму "а1", имеющему два входа АЦП и опорные напряжения .
Wiren Board NETMON-1 8

Аналоговые датчики с внешним питанием


Аналоговые датчики с внешним питанием, такие как электрохимические датчики серии MQ-xxx, датчики
влажности HIH-4000 и т.д. также удобно подключать к разъёму "а1", имеющему входы АЦП и опорные
напряжения.

Датчики/счетчики с импульсными выходами


Такие устройства формируют сигнал, замыкая подходящие к ним два провода. Подключите один провод к
контакту "Isolated GND". Второй провод подключите к одному из соответствующему контакту (discrete input)
разъёмов и1,и3,и5,и7,и9.
Некоторые счетчики имеют импульсный выход на оптроне, тогда два провода имеют полярность - "плюс" и
"минус". В таком случае минус подключается к "Isolated GND", "плюс" к "discrete input".

Подключение к 1-Wire сети


Для подключения 1-wire используется разъём и2.
Землю сети подключите к контактам GND (7-8@и2 и др.) или общей земляной шине. Линию данных к
контакту "1-Wire" ( 4@и2) . Линию питания к контакту "5V" (1-2@и2) (внутренний источник питания).
Допускается использовать внешние источники питания шины 1-Wire.
При использовании пассивного питания, контакт питания каждого датчика соединяется с земляным проводом.
В этом случае, шина прокладывается двумя проводами, подключаемыми соответственно к "1-Wire" и "GND".

Подключение к сети RS-485


Смотрите RS-485.
В Wiren Board NETMON-1 два порта RS-485 на разъёмах "и6" и "и8".
Линии А В подключаются к клеммам А и В соответственно.

Датчик температуры и влажности


Wiren Board NETMON-1 может комплектоваться встроенным датчиком температуры и влажности. Подробнее
см. Датчик SHT1x.

Программное обеспечение
См. Программное обеспечение Wiren Board
9

Интерфейсы

Power over Ethernet


Power over Ethernet - способ подачи питания по кабелю Ethernet, поддерживаемый Wiren Board.
Под этим названием скрываются несколько несовместимых стандартов, Wiren Board поддерживает так
называемый Passive Power over Ethernet (сокращённо Passive PoE) - Passive PoE [1] с напряжением от 7 до 24
вольт. Питание передаётся по неиспользуемым парам кабеля Ethernet: "+" ("-") по паре 4-5 (синий,
бело-синий), "-" ("+") по паре 7-8 (коричневый, бело-коричневый). Полярность не имеет значения.
Питание Passive PoE организуется следующим образом: в канал Ethernet между роутером устройством
вставляется блок питания (называемый также инжектором), который добавляет питание в кабель, идущий к
устройству. Желательно использовать инжектор с напряжением от 12 вольт и мощностью от 12 Вт.
Wiren Board 4 может быть одновременно запитано и по PoE, и через штекер/клеммники, фактическое питание
идет от источника с большим напряжением.
Примечание для контроллеров версий 2.8 и 3.5: по умолчанию устройства поставляются без поддержки
PoE. Версии с поддержкой PoE имеют надпись HLJ-6115ANL на Ethernet-разъёме. Подключение питания по
Ethernet к Wiren Board без поддержки PoE (с надписью HanRun на Ethernet-разъёме) приведёт к повреждению
устройства!
Во всех устройствах Wiren Board 4 PoE поддерживается.

Примеры инжекторов:
• [2]
• [3]
• [4]

PoE Injector
Power over Ethernet 10

PoE Injector

Примечания
[1] http:/ / ru. wikipedia. org/ wiki/ Power_over_Ethernet#Passive_PoE
[2] http:/ / contactless. ru/ store/ #!/
PoE-%D0%B8%D0%BD%D0%B6%D0%B5%D0%BA%D1%82%D0%BE%D1%80-%D0%B4%D0%BB%D1%8F-Wiren-Board/ p/
32771179/ category=8751035
[3] http:/ / shop. nag. ru/ catalog/ 03100. Ubiquiti/ 11930. Aksessuary/ 04354. POE-15
[4] http:/ / www. aliexpress. com/ item/ Free-shipping-1pcs-Original-UBIQUITI-UBI-POE-15-8-15V-0-8A-Power-over-Ethernet-Adapter/
731084931. html
Debug UART 11

Debug UART
Внимание!
1. Подключайте Debug UART только через переходники USB-UART или RS-232-UART с напряжением 3.3В.
2. UART не является синонимом RS-232. Подключение Debug UART к порту RS-232 (или переходнику
USB-RS-232) напрямую гарантировано убьёт устройство.
Debug UART, он же отладочный UART - порт в Wiren Board, подключившись к которому можно получить
прямой доступ к консоли Wiren Board. На него также выводится консоль Linux при загрузке. Доступ к консоли
также можно получить через SSH.

Как зайти на Wiren Board, используя отладочный порт

Подключение к разъёму контроллера


Отладочный порт на контроллере выведен в виде трёх штырьков: GND, RX и TX. Чтобы подключиться:
1. Вставьте переходник USB-UART в компьютер.
2. Подключите штырьки разъёма к штырькам переходника по схеме:
1. GND к GND
2. TX к RX
3. RX к TX
(внимание: у некоторых переходников перепутана маркировка - в этом случае попробуйте соединить
TX к TX и RX к RX)

Установка программы для работы с последовательным портом


Для работы с последовательным портом установите на вашем компьютере подходящую утилиту - например,
PuTTY:
• версия для Windows - скачать с официального сайта [1]
• версия для Linux Debian или Ubuntu - выполните команду apt-get install putty
Подойдут также другие программы [2].

Подключение
1. Запустите приложение от имени администратора:
• в Windows - щёлкните по значку PuTTY правой кнопкой и выберите Run This Program As An
Administrator
• в Linux - gksu putty
2. В меню слева выберите последний пункт - Serial. В появившиеся поля справа введите настройки порта:
• название последовательного порта
• для Windows - это COM4 (цифра может меняться, точную можно узнать через Диспетчер
устройств, найдя в нём переходник USB-UART)
• для Linux - это /dev/ttyUSB0 (цифра может меняться, смотрите список файлов в папке /dev/)
• скорость - 115200
• количество битов в посылке - 8
• количество стоп-битов - 1
• чётность - нет
• контроль потока - нет
Debug UART 12

3. В меню слева выберите первый пункт - Session. Справа переключите тип подключения на Serial - в поля
должны попасть настройки порта. Затем нажмите Open.

4. Чтобы проверить, правильно ли вы всё сделали, кнопкой выключите и включите контроллер - на экране
должны появиться сообщения о загрузке. После завершения загрузки появится запрос логина - введите root
и нажмите Enter, и пароля - введите wirenboard (вводимые символы не будут отображаться) и нажмите
Debug UART 13

Enter.
5. Появится приветственное сообщение - вы в консоли контроллера.

Расположение разъёма на устройстве

Wiren Board 4
Выведен на боковую панель рядом с разъёмами для microSD и microSIM карт.

Примечания
[1] http:/ / the. earth. li/ ~sgtatham/ putty/ latest/ x86/ putty. exe
[2] http:/ / elinux. org/ RPi_Serial_Connection
"Сухой контакт" 14

"Сухой контакт"
"Сухой контакт" - условное название входов, которые проверяют, подключены ли они к "земле".
Используется для подключения герконов, счётчиков воды и электричества, кнопок. Для этого один контакт
кнопки/геркона/счётчика подключается к земле (например, к клемме GND), а другой к входу "сухой контакт".
Состояние входа (ноль или единица) показывает, замкнута цепь или разомкнута:
• замкнуто на землю - состояние входа "включено"
• не замкнуто на землю - состояние входа "выключено"
15

Программное обеспечение

Программное обеспечение Wiren Board


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

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

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


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

Что можно делать в


интерфейсе
Главная страница веб-интерфейса
• управлять подключенными
устройствами
• смотреть показания датчиков
• собирать устройства и датчики в панели (Dashboards)
Подробнее смотрите здесь - Wiren Board 4:Веб-интерфейс
Программное обеспечение Wiren Board 16

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

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

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

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

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

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

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


программ

Примечания
[1] https:/ / www. debian. org/ ports/ arm/
[2] https:/ / github. com/ contactless/
[3] http:/ / en. wikipedia. org/ wiki/ MQTT
[4] http:/ / manpages. ubuntu. com/ manpages/ lucid/ man1/ webfsd. 1. html
[5] https:/ / angularjs. org/
[6] http:/ / en. wikipedia. org/ wiki/ WebSocket

MQTT
MQTT - очередь сообщений, использующаяся в Wiren Board. Большая часть встроенных функций
контроллера (АЦП, реле, транзисторный выход, watchdog) и внешних совместимых устройств транслируются
туда в виде сообщений и реагируют на управляющие сообщения оттуда. Веб-интерфейс работает также через
систему сообщений MQTT - нажатие кнопки в интерфейсе вызывает отправку сообщения сообщения в
MQTT-брокер, изменение показания датчика, поступившее в систему сообщений, тут же транслируется в
веб-интерфейс.
Базовая информация по MQTT - статья [3] на википедии. Используемый демон - брокер сообщений Mosquitto
[1]
.

Краткая схема работы


Архитектура ПО Wiren Board:
Специальные "драйверы" (отдельный
для каждой функции контроллера и
внешнего устройства) транслируют
данные с устройства в очередь в виде
сообщений специального формата.
Сообщения из этой очереди
получает веб-интерфейс и движок
правил. Они же могут добавлять туда
новые сообщения - например,
"включить реле" после получения
нажатия в интерфейсе или
выполнения нужных условий в
каком-нибудь правиле.

Принцип работы
системы сообщений
MQTT построена по следующему принципу: есть иерархическая система "топиков" (прямо как на обычных
форумах), куда клиенты могут писать сообщения, и откуда могут читать. Чтобы было удобно следить за
изменениями нужного топика (например, температуры), на него можно "подписаться".
MQTT 18

Пример сообщения
Вот пример сообщения от драйвера датчика 1-Wire (драйвер регулярно опрашивает датчик и отправляет в
виде сообщений значения с него):

/devices/wb-w1/controls/28-000004a7d3f9 24.687000

Часть до пробела - название топика, после - само сообщение. Здесь:


• /devices - коренной топик для всех "устройств" - как встроенных модулей Wiren Board (реле, АЦП, ...), так и
подключённых внешних,
• /wb-w1 - подтопик, который наполняется драйвером 1-Wire,
• /controls - подтопик, который есть у всех устройств - именно в него записываются все их параметры,
которые меняются ("включено-выключено", значение датчика, ...),
• /28-000004a7d3f9 - непосредственно сам "контрол" - топик, куда записывается значение с датчика. Его
название совпадает с адресом 1-Wire датчика (аппаратно закладывается в каждый датчик на заводе),
• 24.687000 - значение температуры. Это и есть содержание сообщения, отправленного драйвером 1-Wire в
топик.

Пример подписки
Клиенты, которые хотят следить за значением температуры, "подписываются" на этот топик, и им приходят
все новые сообщения - меняющиеся значения температуры. Один из таких клиентов - веб-интерфейс.
Подписаться на сообщения можно и из консоли Linux при помощи утилиты mosquitto_sub:

root@wirenboard:~# mosquitto_sub -t '/devices/wb-w1/controls/28-000004a7d3f9' -v


/devices/wb-w1/controls/28-000004a7d3f9 20.312000
/devices/wb-w1/controls/28-000004a7d3f9 20.312000
/devices/wb-w1/controls/28-000004a7d3f9 20.375000

(описание утилиты смотрите [2]).


Подписаться можно не только на один топик, но и на группу по wildcard:

root@wirenboard:~# mosquitto_sub -t '/devices/wb-w1/#' -v


/devices/wb-w1/meta/name 1-wire Thermometers
/devices/wb-w1/controls/28-000004a7d3f9 23.312000
/devices/wb-w1/controls/28-000004a7d3f9/meta/type temperature
/devices/wb-w1/controls/28-000004a7d3f9 23.312000
/devices/wb-w1/controls/28-000004a7d3f9 23.312000

, где # - означает любое количество топиков. Соответственно, вывелись не только значения с "контрола"
устройства, но и топики с метаданными - название драйвера устройства и тип "контрола" - temperature.
Полное описание системы топиков и подписок: [3].

Пример сообщения от веб-интерфейса


Подпишемся на сообщения о состоянии встроенного реле Wiren Board:

root@wirenboard:~# mosquitto_sub -t '/devices/wb-gpio/controls/Relay_1/#' -v


/devices/wb-gpio/controls/Relay_1/meta/type switch
/devices/wb-gpio/controls/Relay_1/on 0
/devices/wb-gpio/controls/Relay_1 0
MQTT 19

Тут стоит отметить, что MQTT сохраняет часть сообщений (а именно с флагом retained) вечно, поэтому после
подписки вы получите даже те сообщения, которые были отправлен раньше, чем вы подписались.
Реле управляется драйвером wb-gpio (этот драйвер также управляет транзисторными выходами и всем, что в
электрическом смысле управляется GPIO). У него есть соответствующий топик-"контрол" Relay_1. У него
самого есть значение - 0 (реле выключено), и есть два подтопика. Один из них - служебный: в /meta/type
записан тип "контрола". Здесь он switch - выключатель. Второй подтопик /on - интереснее: в него клиенты
пишут то состояние, в которое они хотят установить реле. Заметим, что оно может не совпадать с тем
состоянием, в котором реле находится, так как драйвер реле ведёт себя следующим образом: при получении
сообщения в топик /devices/wb-gpio/controls/Relay_1/on он физически устанавливает его на реле, а лишь затем
записывает новое значение реле в топик /devices/wb-gpio/controls/Relay_1.
Например, если мы сейчас нажмем на реле в веб-интерфейсе (переключим его состояние), то получим новые
сообщения:

/devices/wb-gpio/controls/Relay_1/on 1
/devices/wb-gpio/controls/Relay_1 1

- веб-интерфейс сначала "даёт указание" включить реле, потом драйвер его включает и ставит актуальное
состояние в "контрол".

Отображение устройств в системе сообщений


Логика топиков, соответствующих разным устройствам и их параметрам, основывается на так называемых
HomA Conventions [4]. Однако в Wiren Board эта логика немного изменена, преимущественно по части типов
"контролов". Список актуальных типов здесь: [4]

Очистка сообщений MQTT


Ненужные retained-сообщения могут остаться в системе MQTT после удаления неиспользуемых драйверов или
отключения каких-либо устройств. Это приводит к тому, что несуществующие больше устройства могут
отображаться в разделе Devices веб-интерфейса.
Для удаления топиков можно воспользоваться командой mqtt-delete-retained.
Использование:

mqtt-delete-retained <маска mqtt>

например:

mqtt-delete-retained '/devices/noolite_tx_1234/#'

- удалит все топики, начинающиеся на '/devices/noolite_tx_1234/'


MQTT 20

Список поддержанных функций и устройств


Смотрите [5]

Использование данных внешними программами


Для многих языков программирования есть библиотеки MQTT. Примеры программ:
• Python - [6]
• C - [7]

Система правил
Вы можете написать свои правила на языке Javascript. Подробнее смотрите [8]

Примечания
[1] http:/ / mosquitto. org/
[2] http:/ / mosquitto. org/ man/ mosquitto_sub-1. html
[3] http:/ / mosquitto. org/ man/ mqtt-7. html
[4] https:/ / github. com/ contactless/ homeui/ blob/ contactless/ conventions. md
[5] https:/ / github. com/ contactless/ wb-homa-drivers
[6] https:/ / github. com/ contactless/ mqtt-tools
[7] http:/ / mosquitto. org/ man/ libmosquitto-3. html
[8] https:/ / github. com/ contactless/ wb-rules

Wiren Board 4:Веб-интерфейс


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

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

Структура интерфейса
В интерфейсе есть 6 разделов:
Wiren Board 4:Веб-интерфейс 21

Home (Главная страница)


Это главная панель управления. На ней отображаются элементы управления - виджеты (widget). Это могут
быть, например, показания датчиков (например, температура с 1-Wire), или кнопка включения реле, или блок
выбора цвета светодиодной ленты.

Dashboards (Панели)
Виджеты со схожим назначением можно группировать в панели, где на одном экране находятся все
необходимые кнопки, настройки и показатели датчиков. Например, можно объединить виджеты включения
подогрева, кондиционера, отображения температуры и влажности. В разделе Dashboards можно увидеть все
созданные панели. На самом деле, раздел Home тоже отображает одну из панелей, какую - выбирается в
настройках.

Devices (Устройства)
Здесь отображаются все физически подключённые устройства и их параметры. Отображаемые устройства и
параметры не тождественны виджетам; наоборот, виджеты строятся на их основе.

Rooms (Комнаты)
Так как виджетов может быть очень много, каждый из них привязывается к определённой "комнате". Обычно
комнаты соответствуют комнатам без кавычек - физическим локациям, в которых находятся подключённые
устройства. Комната задаётся при создании виджета, потом каждый виджет можно найти в соответствующей
комнате.

Widgets (Виджеты)
Виджеты - непосредственно элементы интерфейса. Создаются на основе подключённых устройств. Например,
если через встроенное Реле 1 Wiren Board подключён главный свет в комнате 1, то можно создать такой
виджет:
• Название: Главный свет
• Комната: Комната 1 (комнату с таким названием нужно заранее создать в разделе Rooms)
• Тип виджета: Light Control Relay (Управление светом)
• "Контрол" (реальное устройство, которое будет выполнять эту функцию): /devices/wb-gpio/controls/Relay_1

Settings (Настройки)
Раздел "Login" - используется только при работе через облачный веб-интерфейс, если вы работаете с
интерфейсом локально на устройстве, то все настройки в нём уже выставлены правильно. Если вы работаете с
облачным интерфейсом, смотрите раздел ниже.
Раздел "Common Info" - здесь можно выбрать панель, которая будет отображаться на главной странице
странице (Home).
Раздел "Statistics Overview" - здесь выводится техническая информация, в частности, все подключённые
устройства и их "контролы", а также возможные типы виджетов.
Wiren Board 4:Веб-интерфейс 22

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

Движок правил wb-rules


В контроллере Wiren Board есть движок правил, позволяющий писать как простые правила (например, "Если
температура датчика больше 18С, выключи нагреватель"), так и сложные. В статье кратко описывается
механизм работы правил и показываются примеры написания. Полная документация доступна на странице
https://github.com/contactless/wb-rules.

Как создать правило

Подготовка
Правила имеют вид файлов, которые пишутся на языке Javascript, и находятся на контроллере в папке
/etc/wb-rules. Инструкцию, как их редактировать, смотрите в статье Просмотр файлов контроллера с
компьютера.
После добавления нового правила перезагрузите контроллер ИЛИ выполните из консоли команду

service wb-rules restart

Она перезапустит драйвер, и новое правило начнёт работать.


Список типов контролов в интерфейсе: https:/ / github. com/ contactless/ homeui/ blob/ contactless/ conventions.
md

Примеры правил

Слежение за контролом
Это простейшее правило следит за контролом и устанавливает другой контрол в такое же состояние.
Например правило может включать сирену и лампу, если датчик движения заметил движение.
В примере датчик движения подключен к входу "сухой контакт", контрол типа "switch". Сирена подключена к
встроеному реле Wiren Board, а лампа - через релейный блок по Modbus. Когда вход типа "сухой контакт"
(выход датчика движения) замкнут, то на лампу и реле подаётся "1", когда выключен - "0".
Правило срабатывает каждый раз при изменении значения контрола "D1_IN" у устройства "wb-gpio". В код
правила передаётся новое значение этого контрола в виде переменной newValue.

defineRule("motion_detector", {
whenChanged: "wb-gpio/D1_IN",
then: function (newValue, devName, cellName) {
dev["wb-gpio"]["Relay_2"] = newValue;
dev["wb-mrm2_6"]["Relay 1"] = newValue;

}
});
Движок правил wb-rules 23

То же самое, но с виртуальным девайсом в качестве источника событий. Пример использования: сценарная


кнопка, которая включает/выключает сирену и лампочку.

defineVirtualDevice("simple_test", {
title: "Simple switch",
cells: {
enabled: {
type: "switch",
value: false
},
}
});

defineRule("simple_switch", {
whenChanged: "simple_test/enabled",
then: function (newValue, devName, cellName) {
dev["wb-gpio"]["Relay_2"] = newValue;
dev["wb-mrm2_6"]["Relay 1"] = newValue;

}
});

Системные правила
Некторые правила поставляются с системой правил по-умолчанию в пакете wb-rules-system.
Полный список правил в репозитории [1].
Некоторые примеры:

Правило для пищалки


Правило [2] создаёт виртуальное устройство buzzer с ползунками для регулировки громкости и частоты, а
также кнопкой включения звука.
defineVirtualDevice("buzzer", {
title: "Buzzer", //

cells: {
frequency : {
type : "range",
value : 3000,
max : 7000,
},
volume : {
type : "range",
value : 10,
max : 100,
},
enabled : {
type : "switch",
Движок правил wb-rules 24

value : false,
},
}
});

// setup pwm2
runShellCommand("echo 2 > /sys/class/pwm/pwmchip0/export");

function _buzzer_set_params() {
var period = parseInt(1.0 / dev.buzzer.frequency * 1E9);
var duty_cycle = parseInt(dev.buzzer.volume * 1.0 / 100 * period * 0.5);

runShellCommand("echo " + period + " > /sys/class/pwm/pwmchip0/pwm2/period");


runShellCommand("echo " + duty_cycle + " > /sys/class/pwm/pwmchip0/pwm2/duty_cycle");
};

defineRule("_system_buzzer_params", {
whenChanged: [
"buzzer/frequency",
"buzzer/volume",
],

then: function (newValue, devName, cellName) {


if ( dev.buzzer.enabled) {
_buzzer_set_params();
}
}
});

defineRule("_system_buzzer_onof", {
whenChanged: "buzzer/enabled",
then: function (newValue, devName, cellName) {
if ( dev.buzzer.enabled) {
_buzzer_set_params();
runShellCommand("echo 1 > /sys/class/pwm/pwmchip0/pwm2/enable");
} else {
runShellCommand("echo 0 > /sys/class/pwm/pwmchip0/pwm2/enable");
}
}
});
Движок правил wb-rules 25

Правило для статуса питания


Правило [3] создаёт виртуальное устройство, которое сообщает текущий статус питания. В качестве входных
данных используется два канала АЦП: измерение напряжения на аккумуляторе и измерение входного
напряжения.
Реализована следующая логика:
1. Если входное напряжение меньше напряжение на аккмуляторе, то значит плата питается от аккумулятора. В
этом случае, также отображается 0V в качестве входного напряжения.
2. Если входное напряжение больше напряжения на аккумуляторе, то плата работает от внешнего источника
питания. В качестве входонго напряжения отображается измерение с канала Vin.
Для иллюстрации правила используют два разных способа срабатывания: по изменению значения контрола
(правило _system_track_vin) и по изменению значения выражения (два других).

defineVirtualDevice("power_status", {
title: "Power status", //

cells: {
'working on battery' : {
type : "switch",
value : false,
readonly : true
},
'Vin' : {
type : "voltage",
value : 0
}

}
});

defineRule("_system_track_vin", {
whenChanged: "wb-adc/Vin",
then: function() {
if (dev["wb-adc"]["Vin"] < dev["wb-adc"]["BAT"] ) {
dev["power_status"]["Vin"] = 0;
} else {
dev["power_status"]["Vin"] = dev["wb-adc"]["Vin"] ;
}
}
});

defineRule("_system_dc_on", {
asSoonAs: function () {
Движок правил wb-rules 26

return dev["wb-adc"]["Vin"] > dev["wb-adc"]["BAT"];


},
then: function () {
dev["power_status"]["working on battery"] = false;
}
});

defineRule("_system_dc_off", {
asSoonAs: function () {
return dev["wb-adc"]["Vin"] <= dev["wb-adc"]["BAT"];
},
then: function () {
dev["power_status"]["working on battery"] = true;
}
});

Отправка команд по RS-485


Для примера отправим команду устройству на порт /dev/ttyNSC0 (соответствует аппаратному порту
RS-485-ISO на Wiren Board 4). Для этого будем использовать движок правил и возможность выполнения
произвольных shell-команд. Подробнее см. в документации [4].
С помощью движка правил создадим виртуальное устройство с контролом типа switch (переключатель).
При включении переключателя будем отправлять команду (уст. Яркость кан. 00=0xff) для Uniel UCH-M141:

FF FF 0A 01 FF 00 00 0A

При выключении переключателя будем отправлять команду (уст. Яркость кан. 00=0x00) для Uniel UCH-M141:

FF FF 0A 01 00 00 00 0B

1. Настройка порта
Для настройки порта /dev/ttyNSC0 на скорость 9600 надо выполнить следующую команду

stty -F /dev/ttyNSC0 ospeed 9600 ispeed 9600 raw clocal -crtscts -parenb -echo cs8

2. Отправка команды
Отправка данных делается следующей шелл-командой:

/usr/bin/printf '\xFF\xFF\x0A\x01\xD1\x06\x00\xE2' >/dev/ttyNSC0

где "\xFF\xFF\x0A\x01\xD1\x06\x00\xE2" - это запись команды "FF FF 0A 01 D1 06 00 E2".


3. Создадим в движке правил новый файл с правилами /etc/wb-rules/rs485_cmd.js
Файл можно редактировать с помощью vim, nano или mcedit в сеансе ssh на устройстве, либо залить его с
помощью SCP.

root@wirenboard:~# mcedit /etc/wb-rules/rs485_cmd.js

4. Описываем в файле виртуальный девайс

defineVirtualDevice("rs485_cmd", {
title: "Send custom command to RS-485 port",
cells: {
Движок правил wb-rules 27

enabled: {
type: "switch",
value: false
},
}
});

5. Перезапускаем wb-rules и проверяем работу

root@wirenboard:~# /etc/init.d/wb-rules restart


root@wirenboard:~# tail -f /var/log/messages

В логе не должно быть сообщений об ошибке (выход через control-c)


В веб-интерфейсе в разделе Devices должно появиться новое устройство "Send custom command to RS-485
port".
6. Добавим функцию для конфигурирования порта.
function setup_port() {

runShellCommand("stty -F /dev/ttyNSC0 ospeed 9600 ispeed 9600 raw clocal -crtscts -parenb -echo cs8");

7. Опишем правила на включение и выключение переключателя


defineRule("_rs485_switch_on", {
asSoonAs: function () {
return dev.rs485_cmd.enabled;
},
then: function() {
runShellCommand("/usr/bin/printf '\\xff\\xff\\x0a\\x01\\xff\\x00\\x00\\x0a' > /dev/ttyNSC0");
}
});

defineRule("_rs485_switch_off", {
asSoonAs: function () {
return !dev.rs485_cmd.enabled;
},
then: function() {
runShellCommand("/usr/bin/printf '\\xff\\xff\\x0a\\x01\\x00\\x00\\x00\\x0b' >/dev/ttyNSC0");
}
});

Обратите внимание на двойное экранирование.


7. Собираем всё вместе
Полное содержимое файла с правилами:
defineVirtualDevice("rs485_cmd", {

title: "Send custom command to RS-485 port",

cells: {

enabled: {

type: "switch",
Движок правил wb-rules 28

value: false

},

});

function setup_port() {

runShellCommand("stty -F /dev/ttyNSC0 ospeed 9600 ispeed 9600 raw clocal -crtscts -parenb -echo cs8");

defineRule("_rs485_switch_on", {

asSoonAs: function () {

return dev.rs485_cmd.enabled;

},

then: function() {

runShellCommand("/usr/bin/printf '\\xff\\xff\\x0a\\x01\\xff\\x00\\x00\\x0a' > /dev/ttyNSC0");

});

defineRule("_rs485_switch_off", {

asSoonAs: function () {

return !dev.rs485_cmd.enabled;

},

then: function() {

runShellCommand("/usr/bin/printf '\\xff\\xff\\x0a\\x01\\x00\\x00\\x00\\x0b' >/dev/ttyNSC0");

});

setTimeout(setup_port, 1000); // запланировать выполненеи setup_port() через 1 секунду после старта правил.

Примечания
[1] https:/ / github. com/ contactless/ wirenboard/ tree/ master/ system_rules/ rules
[2] https:/ / github. com/ contactless/ wirenboard/ blob/ master/ system_rules/ rules/ buzzer. js
[3] https:/ / github. com/ contactless/ wirenboard/ blob/ master/ system_rules/ rules/ power_status. js
[4] https:/ / github. com/ contactless/
wb-rules#%D0%94%D1%80%D1%83%D0%B3%D0%B8%D0%B5-%D0%BF%D1%80%D0%B5%D0%B4%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%
29

Настройка контроллера

Как узнать IP-адрес контроллера


Чтобы получить доступ к
веб-интерфейсу или изменить
настройки контроллера часто нужно
знать его IP-адрес. Узнать его можно
несколькими способами.

IP-адрес при
подключении к
созданной контроллером
Wi-Fi точке доступа
По умолчанию контроллер создаёт
Wi-Fi точку доступа WirenBoard без
пароля. К ней можно подключиться с
любого устройства, и адрес
контроллера в ней всегда одинаков -
192.168.42.1.

IP-адреса удобно смотреть в веб-интерфейсе, подключившись к созданной


Какие IP-адреса есть у контроллером Wi-Fi точке доступа
контроллера
У контроллера может быть несколько IP-адресов, потому что он может подключаться к сетям несколькими
способами:
• через Ethernet,
• через Wi-Fi,
• через GPRS.
Соответственно, у контроллера может быть до трёх IP-адресов. Чтобы зайти на контроллер, используя
IP-адрес, полученный интерфейсом Ethernet контроллера, нужно быть в той же сети, к которой контроллер
подключён через Ethernet. Зайти на контроллер по адресу, полученному интерфейсом GPRS, практически
никогда нельзя - операторы сотовой связи обычно выдают адреса из собственной сети, и зайти на них из
Интернета нельзя - смотрите http:/ / sirius. dn. ua/ help/ real-ip-address/ Однако у оператора обычно можно
подключить специальную услугу, например http:/ / www. mts. ru/ mobil_inet_and_tv/ internet_comp/
additionally_services/real_ip/.
Как узнать IP-адрес контроллера 30

Быстрый способ узнать IP-адрес


По умолчанию контроллер создаёт Wi-Fi точку доступа WirenBoard без пароля. К ней можно подключиться с
любого устройства, и адрес контроллера в ней всегда одинаков - 192.168.42.1. Если ввести этот адрес в строку
адреса браузера, откроется веб-интерфейс контроллера. Все полученные контроллером IP-адреса
отображаются в веб-интерфейсе на странице Devices в разделе Network.

Надёжный способ узнать IP-адрес


Узнать все адреса можно
подключившись к консоли
устройства через Debug UART.
После подключения введите команду

IP-адреса можно посмотреть, подключившись к консоли через Debug UART

ifconfig

Найдите раздел вывода, соответствующий нужному интерфейсу:


• для Ethernet - eth0
• для Wi-Fi - wlan0
• для GPRS - ppp0
Адрес будет написан после слов inet addr:.

Узнать IP-адрес, не заходя на контроллер


Если вы подключили Wiren Board через Ethernet или Wi-Fi к своему роутеру, то IP-адрес контроллера можно
увидеть в веб-интерфейсе роутера, в списке выданных им адресов.
SSH 31

SSH
SSH - протокол, при помощи которого можно получить доступ к консоли Wiren Board через локальную сеть
или Интернет. Смотрите описание в Википедии [1]. Кроме SSH, получить доступ к консоли можно
поключившись напрямую к устройству через Debug UART.

Как зайти на Wiren Board по SSH

Необходимая информация
Чтобы зайти на устройство, вам нужно знать три вещи:
1. IP-адрес устройства - смотрите статью Как узнать IP-адрес контроллера
2. Логин пользователя: root
3. Пароль пользователя: wirenboard

Установка SSH-клиента
Для работы с SSH установите на вашем компьютере утилиту - SSH-клиент, например, PuTTY:
• версия для Windows - скачать с официального сайта [1]
• версия для Linux Debian или Ubuntu - выполните команду apt-get install putty

Подключение
1. Запустите приложение, введите IP-адрес, убедитесь, что выбрано подключение по SSH, нажмите Open.

2. При первом подключении к контроллеру появится запрос на приём от него ключа для шифрования
соединения - нажмите Accept.
SSH 32

3. Когда откроется окно консоли, в нём появится запрос имени пользователя - введите root и нажмите Enter;
появится запрос пароля - введите wirenboard (вводимые символы не будут отображаться) и нажмите Enter.

4. Появится приветственное сообщение - вы в консоли контроллера.


SSH 33

Примечания
[1] http:/ / en. wikipedia. org/ wiki/ Secure_Shell

Просмотр файлов контроллера с компьютера


Для внесения изменений в конфигурацию Wiren Board иногда нужно изменять файлы, находящиеся на
контроллере. Это можно сделать несколькими способами.

Удобный способ для Windows


Для работы с файловой системой контроллера вам понадобится
установить https:/ / code. google. com/ p/ win-sshfs/ . После
завершения установки запустите Sshfs Manager.
1. Нажмите кнопку Add
2. Заполните поля:
1. Host: введите IP-адрес (смотрите статью Как узнать IP-адрес
контроллера)
2. Port: оставьте 22 Файловую систему контроллера можно
3. Username: введите root поключить к Windows в виде отдельного диска

4. Authentification method: оставьте Password


5. Password: введите wirenboard
6. Directory: выберите / (корневую директорию контроллера)
Просмотр файлов контроллера с компьютера 34

7. Drive Letter: оставьте - это будет буква "диска", в котромбудет отображаться файловая система
контроллера
3. Нажмите кнопку Save
4. Нажмите кнопку Mount
Теперь вы можете работать с файловой системой контроллера как с обычным диском, в том числе открывать и
редактировать файлы. Будьте осторожны - повреждение некоторых файлов может нарушить работу
контроллера.

Удобный способ для Mac OS X


Для работы с файловой системой контроллера вам понадобится
установить http:/ / cyberduck. ch/ . После завершения установки
запустите "Cyberduck".
1. Нажмите кнопку "Новое подключение"
2. Заполните поля:
1. Выпадающее меню: SFTP (Защищенное подключение по
SSH)
2. "Сервер:" введите IP-адрес (смотрите статью Как узнать
IP-адрес контроллера)
3. "Порт:" оставьте 22
Настройка подключения через SFTP для Mac
4. "Пользователь" введите root
OS X с помощью Cyberduck
5. "Пароль:" введите ваш пароль (по умолчанию "wirenboard")
3. Нажмите кнопку "Подключиться".
4. Добавьте SSH ключ в список ключей
5. В меню выбора папки перейти в корень
Для повторного подключения к серверу, с которым уже было установлено соединение нужно:
1. Нажать на значок книжки
2. Перейти в раздел "Журнал"
3. Выбрать нужный адрес и кликнуть по нему 2 раза
4. В меню выбора папки перейти в корень
Для изменения файла без необходимости скачивания на локальной компьютер и повторной загрузки
измененной версии на WirenBoard нажать правой кнопкой по файлу, который необходимо изменить и выбрать
пункт "Открывать в". Файл будет автоматически загружен на локальный компьютер, а после закрытия
автоматически выгружен на Wiren Board;
Теперь вы можете работать с файловой системой контроллера как с обычным диском, в том числе открывать и
редактировать файлы. Будьте осторожны - повреждение некоторых файлов может нарушить работу
контроллера.
Просмотр файлов контроллера с компьютера 35

Удобный способ для Ubuntu


Откройте менеджер файлов Nautilus,
нажмите Ctrl+L, в появившейся
адресной строке введите

Доступ к файлам через встроенный файловый менеджер Ubuntu

sftp://192.168.42.1 (подставьте ip-адрес-контроллера)

(смотрите статью Как узнать IP-адрес контроллера)


Появится окно для ввода имени пользователя и пароля - введите root - wirenboard.
Теперь вы можете работать с файловой системой контроллера как с обычной папкой, в том числе открывать и
редактировать файлы. Будьте осторожны - повреждение некоторых файлов может нарушить работу
контроллера.

Надёжный способ
Файлы контроллера можно просматривать и редактировать, если у вас есть доступ к его консоли через Debug
UART или по SSH. Для этого:
1. Зайдите в консоль устройства через Debug UART или по SSH.

mcedit /etc/wb-homa-modbus.conf #открыть файл в псевдографическом


редакторе; замените имя файла на нужное

3. Чтобы сохранить изменения, нажмите F2, чтобы выйти из редактора - F10


36

Подсистемы

GSM/GPRS
В Wiren Board установлен GSM/GPRS-модуль SIM900R, с помощью которого можно:
• отправлять СМС
• принимать СМС
• устанавливать соединение с интернетом
Полный список возможностей смотрите в описании модуля.

Работа из Linux
Внутри контроллера модем подключён к процессору по двухпроводному последовательному порту (UART). В
Linux этот порт отображается как псевдоустройство /dev/ttyAPP0 (первый порт (Application UART)
процессора). Модуль управляется посредством передачи команд на этот порт.
Кроме того, модуль можно выключить и перезагрузить, подав сигналы на контакты модуля PWRKEY и
RESET. Для этих целей написана простая утилита wb-gsm (примеры использования смотрите ниже). Прямой
доступ к этим контактам реализован через GPIO (подробнее читайте GPIO, ищите в таблице соответствующие
названия).

Включение модуля
[1]
Для включения или перезагрузки модуля можно пользоваться утилитой wb-gsm (исходники ). Утилита
установлена в стандартном образе в пакете wb-utils.
Примеры:

$ wb-gsm on # включение устройства


$ wb-gsm off # выключение устройства

$ wb-gsm reset # перезагрузка включенного устройства

$ wb-gsm restart_if_broken # включение или перезагрузка, если модем не отвечает

Работа с модулем
Ознакомьтесь с инструкцией - Работа с последовательным портом из Linux
Для интерактивного режима:
• запускаем minicom с ключём, создающим профиль работы с портом (скорость передачи данных, чётность, и
т.д.):

$ minicom -s /dev/ttyAPP0

• Зайти в настройки (нажать Ctrl+A, затем O), выбрать пункт Serial port setup, там установить порт
/dev/ttyAPP0, скорость и чётность - 115200, 8N1, Hardware flow control - No, Software flow control - No
• Сохранить настройки: Save setup as _dev_ttyAPP0
• Далее запускать как minicom /dev/ttyAPP0 (все параметры будут сразу браться из профиля с названием
/dev/ttyAPP0, который мы ранее создали)
GSM/GPRS 37

• Первой вашей командой должна стать AAAAAAAAAT - с её помощью модуль распознает скорость, с которой
мы к нему обращаемся (смотрите SIM900R)
• Второй командой выполните просто AT. Вам должен прийти ответ OK

Примеры команд
(Полный список команд смотрите в документации модуля)
• Синхронизовать скорость порта (не совсем команда)

AAAAAAAAAAAAAT

• Список всех сетей

AT+COPS=?

• Уровень сигнала (см. здесь [2])

AT+CSQ

• Звонок на номер +79154816100

ATD+79154816100;

• Установка baud rate порта в фиксированное значение 115200

AT+IPR=115200

• Запрос времени со встроенных в модуль часов реального времени (RTC)

AT+CCLK?
AT+CCLK="14/03/19,01:20:29+00"

• Получить IMEI-код модуля (xxxxxx - уникальный номер)

AT+GSN
86820400xxxxxxY

OK

Мультиплексирование
Модем поддерживает режим мультиплексирования - создание виртуальных портов, через которые можно
одновременно работать с модемом. Например, через один порт можно открыть сессию PPP для GPRS, а через
другой получать и отправлять SMS, проверять баланс и т.д. Подробнее смотрите CMUX.

Работа с GPRS
Настройка GPRS происходит стандартно для Linux.
Сначала при помощи утилиты pppconfig создаётся конфигурационный файл подключения с параметрами для
вашего оператора (например, МТС [3]), затем запускается подключение командой

pon <имя созданной конфигурации>

Если вам нужна всего одна конфигурация, назовите её provider - тогда она будет запускаться по умолчанию,
подключение можно будет запускать просто командой pon без аргументов.
Подробная информация по настройке: ссылка [4]
GSM/GPRS 38

Конфигурационные файлы для операторов "большой тройки" уже есть в стандартном образе: ссылка [5]

Настройки мощности по-умолчанию


AT+CRTXVMA?

+CRTXVMA: (0204,01C9,0184,0149,0118,00EF,00CE,00B3,009E,008E,0081,0077,006F,0067,005F,0053),(021A,01B6

,016D,0131,0105,00E0,00C4,00AE,009B,008C,0080,0078,0071,006A,0065,0053),(023A,01B7,0181,014F,0122,00FC

,00DC,00C1,00AB,009A,008B,007F,0076,0072,006B,0068),(01F4,01AF,0165,012A,00FB,00D7,00BB,00A5,0093,0086

,007A,0071,006B,0065,0061,005D)

Примечания
[1] https:/ / github. com/ contactless/ wirenboard
[2] http:/ / m2msupport. net/ m2msupport/ atcsq-signal-quality/
[3] http:/ / www. corp. mts. ru/ help/ corp_settings/ gprs_edge/ win_xp/
[4] https:/ / help. ubuntu. com/ community/ DialupModemHowto/ SetUpDialer#Alternative_Way_2_. 28using_pppconfig_. 26_pon. 2Fpoff. 29
[5] https:/ / github. com/ contactless/ wirenboard/ tree/ master/ configs/ configs/ etc/ ppp

ADC
Как получить напряжение с АЦП
1. Выберите клемму, к которой можно подключить ваш источник, исходя из максимального допустимого
напряжения (смотрите таблицу ниже).
2. Большинство клеммников с функциями АЦП могут выполнять две функции: АЦП и управление
низковольтной нагрузкой. Перед тем, как измерить напряжение на АЦП, поставьте соответствующий выход
управления низковольтной нагрузкой в положение "выключено". Например, если вы подключаетесь к
клемме A1, выключите в веб-интерфейсе A1_OUT (раздел Relays & FETs).
Подробнее смотрите Мультиплексирование портов
3. Подключите ваш источник к клемме. Значение напряжения сразу появится в веб-интерфейсе в устройстве
ADCs. Также значение транслируется в систему сообщений MQTT.

Использование значения из внешних программ


Специальный драйвер wb-homa-adc транслирует значение в систему MQTT, и его можно получать оттуда.
Также значение можно получать в ручном режиме (убедитесь, что демон wb-homa-adc не запущен):
• Выбор канала :

wb-adc-set-mux <номер канала>


или
wb-adc-set-mux <A1|A2|A3|A4|R1|R2|R3|R4> (для WB Smart Home)
или
wb-adc-set-mux tb<номер клеммника> (для WB2.8)
или
wb-adc-set-mux vin (для WB2.8)

• Чтение показаний:

root@wirenboard:~# cat /sys/bus/iio/devices/iio\:device0/in_voltage1_raw


3838
ADC 39

или

root@wirenboard:~# wb-adc-get-value
3838

• Чтение показаний c предварительной установкой канала:


wb-adc-read-channel <A1|A2|A3|A4|R1|R2|R3|R4> (для WB Smart Home, опции аналогичны wb-adc-set-mux)

Пример
• Устанавливаем ADC на измерение напряжения на клеммнике A3:

root@wirenboard:~# wb-adc-set-mux A3

• Считываем сырое значение ADC:

root@wirenboard:~# wb-adc-get-value
2523

• Конвертируем значение

V = 2523 * 4.97 mV = 12539 mV = 12.54 V

Измерение сопротивлений
См. ADC:Измерение сопротивлений - технические детали

Входное напряжение
Демон wb-homa-adc транслирует значение в очередь сообщений MQQT в топик /devices/wb-adc/controls/Vin .
Таким образом, значение отображается в веб-интерфейсе как канал Vin устройства ADCs

Напряжение аккумулятора
Демон wb-homa-adc транслирует значение в очередь сообщений MQTT в топик /devices/wb-adc/controls/BAT .
Таким образом, значение отображается в веб-интерфейсе как канал BAT устройства ADCs
В ручном режиме (для WB 2.8 и WB 3.5):

cat /sys/bus/iio/devices/iio:device0/in_voltage7_raw

Для преобразования в вольты: значение/ 4095.0 * 1.85 * 4 .


Смотрите тему на форуме [1].
ADC 40

Технические детали реализации АЦП


Wiren Board имеет 8 каналов АЦП, которые мультиплексированы в один канал процессора (LRADC1). Каналы
мультиплексирования указаны в таблице Wiren Board 4:Список GPIO

Опорное напряжение
Опорное напряжение LRADC составляет 1.85V. Возможна программная установка делителя 2:1 внутри канала

Основные каналы
Часть каналов АЦП выведена на клеммы параллельно с транзисторами управления низковольтной нагрузки.
Убедитесь, что вы явно закрыли соответствующий FET помощью GPIO перед использованием АЦП.
Подробнее смотрите Мультиплексирование портов

Перевод значений
На канале должен стоять делитель на два (пока нет). Формула для перевода:

V_measured = N / 4095 * 1.85V * (R1+R2)/R2

Списки АЦП для разных устройств

WB4

клеммник Делитель Формула для Итоговая формула (без V макс. измеряемое (с комментарии
пересчета делителя) делителем)

A1-A3 100k/90.9k N / 4095 * 1.85V * V = N * 0.949 mV 7.4V


2.100

A4-A5 100k/11.86k N / 4095 * 1.85V * V = N * 4.26 mV 34.4V


9.43

R1-R2 3k15/1M N / 4095 * 1.85V * V = N * 0.426 mV 3.7V


1.003

li_pol 100k/90.9k N / 4095 * 1.85V * V = N * 0.949 mV - на аккумуляторе


2.100

Vin 33k/4k51 N / 4095 * 1.85V * V = N * 3.76 mV 30.6V входное напряжение, iio


8.32 channel 0

WB3.5

клеммник Делитель Формула для пересчета Итоговая формула V max комментарии

A1-A4 220k/22k V = N / 4095 * 1.85V * 11 V = N * 4.97 mV

R1-R4 - V = N / 4095 * 1.85V V = N * 0.452 mV

Vin 33k/4k53 N / 4095 * 1.85V * 8.28 V = N * 3.74 mV 30V входное напряжение, iio channel: 0
ADC 41

WB NETMON-1

клеммник Делитель Формула для пересчета Итоговая формула (без делителя) V макс. измеряемое (с делителем) комментарии

A1-A8 31k/4.68k N / 4095 * 1.85V * 7.627 V = N * 3.446 mV 20V

Vin 12k/1k N / 4095 * 1.85V * 13 V = N * 5.873 mV входное напряжение

WB2.8

клеммник Делитель Формула для пересчета Итоговая формула комментарии

A1-A7 12K/33K V = N / 4095 * 1.85V * 1.364 V = N * 0.616 mV

Примечания
[1] http:/ / contactless. ru/ forums/ topic/
%D1%81%D1%82%D0%B0%D1%82%D1%83%D1%81-%D0%B0%D0%BA%D0%BA%D1%83%D0%BC%D1%83%D0%BB%D1%8F%D1%82%D0%BE%

GPIO
GPIO (General-purpose input/output - ввод-вывод общего назначения) - контакт электрической схемы, на
который пользователь может выводить значение (логическую единицу или ноль), или получать с него
значение. Несмотря на общее название, логическая единица может представляться разным напряжением -
следите за этим.

Работа с GPIO в Linux


Смотрите https:/ / www. kernel. org/ doc/ Documentation/ gpio/ sysfs. txt Также смотрите устаревшую
инструкцию Работа с GPIO

GPIO в Wiren Board


• Wiren Board 4:Список GPIO
• WB SH 3.5: Список GPIO
• KMON1:Список GPIO (МКА3)
• WB rev. 2.8: Список GPIO
• Wiren Board 5:Список GPIO - в разработке.
Watchdog 42

Watchdog
Сторожевой таймер, или "Watchdog" - аппаратно реализованная схема контроля за зависанием системы.
Представляет собой таймер, который сбрасывается подачей переменного сигнала от процессора на вход
таймера.
Если сброса не произошло в течение некоторого интервала времени (~15c), происходит перезагрузка по
питанию (выключение питания на 3-4 секунды).

Buzzer
Излучатель звука подключен в Wiren Board Smart Home к выходу ШИМ и управляется через sysfs-интерфейс
ядра. Номер порта PWM - 2.
ШИМ - это прямоугольные импульсы, интерфейс ядра позволяет регулировать частоту импульсов и
коэффициент заполнения. Коэффециент заполнения влияет на громкость звука.
Экспорт порта в sysfs:

echo 2 > /sys/class/pwm/pwmchip0/export

После этого появляется директория /sys/class/pwm/pwmchip0/pwm2


Установка периода в наносекундах. Пересчёт из частоты(в килогеграцах в период в наносекундах
производится по формуле: T(ns) = 1 000 000 / f(kHz)
echo 250000 > /sys/class/pwm/pwmchip0/pwm2/period # устанавливаем период в 250 000 нс, т.е. в 250мкс, что соответствует частоте 4кГц

Установка duty_cycle (длительности высокого состояния) в наносекундах. Максимальная громкость


достигается при duty_cycle = period / 2
echo 125000 > /sys/class/pwm/pwmchip0/pwm2/duty_cycle # устанавливаем duty_cycle в 125 000 нс, т.е. в половину периода

Включение выхода ШИМ:

echo 1 > /sys/class/pwm/pwmchip0/pwm2/enable

Выключение:

echo 0 > /sys/class/pwm/pwmchip0/pwm2/enable

Пример [1]

Примечания
[1] https:/ / github. com/ contactless/ wirenboard/ tree/ master/ examples/ beeper
Датчик SHT1x 43

Датчик SHT1x
Датчики Sensirion SHT1x (SHT10, SHT11, SHT15).
Пакет: wb-mqtt-sht1x Исходные коды: https://github.com/contactless/wb-mqtt-sht1x
В автозагрузке демон wb-mqtt-sht1x, отправляющий результаты в MQTT:

service wb-mqtt-sht1x stop


service wb-mqtt-sht1x start
service wb-mqtt-sht1x status

Конфиг демона:

/etc/wb-mqtt-sht1x.conf

Адреса в MQTT:

Default MQTT topics are:

/devices/sht1x/meta/name SHT1x Sensor


/devices/sht1x/controls/temperature/meta/type temperature
/devices/sht1x/controls/humidity/meta/type rel_humidity

Sensor data:

/devices/sht1x/controls/temperature
/devices/sht1x/controls/humidity

Example:

$ mosquitto_sub -h 192.168.0.102 -t '/devices/sht1x/#' -v


/devices/sht1x/controls/temperature 28.5
/devices/sht1x/controls/temperature/meta/type temperature
/devices/sht1x/controls/humidity 31.7
/devices/sht1x/controls/humidity/meta/type rel_humidity
/devices/sht1x/meta/name SHT1x Sensor

Настройка в Zabbix:

mqtt.value[/devices/sht1x/controls/humidity]
mqtt.value[/devices/sht1x/controls/temperature]
44

Подключение периферии

Поддерживаемые устройства
Категории поддерживаемых устройств:
Подключаемые непосредственно к Wiren Board:
• Низковольтная нагрузка (реле на 12/24В, светодиоды, вентиляторы, сигнальные лампы и т. д.)
• Контакторы с управляющим напряжением 220В
• Датчики с аналоговым выходом по напряжению
• Датчики с резистивным выходом
• Датчики с релейным выходом или "открытый коллектор" (датчики дыма, протечек, движения)
• Счетчики с импульсными выходами (электро- и водосчётчики)
• Устройства с выходом открытый коллектор
• 1-Wire датчики температуры
Радиоустройства по 433МГц (в Wiren Board 4 и Wiren Board Smart Home 3.5):
• Устройства nooLite [1]
• Погодная станции Oregon Scientific
А также периферия по RS-485:
• Устройства собственного производства (диммер, молуль реле)
• Устройства компании Разумный дом [2] с интерфейсом ModBus RTU (датчики, релейные модули, диммеры
светодиодных лент и т. д.)
• Диммеры и релейные модули компании Uniel [3]
Далее устройства сгруппированы по интерфейсу подключения.
Статус: Tested,

Tested работает, протестировано

Not Tested Должно работать, однако работоспособность не проверялась

WIP Work in Progress - в разработке/тестировании.

Postponed
Поддерживаемые устройства 45

RS-485

Modbus RTU
Для перечисленных устройств есть примеры конфигурации, в принципе же поддержка устройств, работающих
по протоколу Modbus RTU, данным списком не ограничена. Подробнее.
Устройства собственного производства

Модель Cтатус комментарии

Релейный модуль WB-MRM2 Tested

RGB-диммер WB-MRGB Tested

Устройства "Разумный дом"

Модель Cтатус комментарии

[4] Tested
Разумный дом - MSU34+TLP

[5] Tested
Разумный дом - MSU21

[6] Tested
Разумный дом - MSU24

[7] Tested
Разумный дом - DDL24

[8] Tested
Разумный дом - DRB88

Устройства "ICP-DAS"

Модель Cтатус комментарии

[9] Tested
ICP DAS - tM-P3R3

[10] Tested
ICP DAS - LC-103

ADICON / A-BUS / Uniel


Для перечисленных устройств есть примеры конфигурации. Устройства поддерживаются драйвером
wb-homa-modbus. Подробнее: Устройства с интерфейсом Modbus, [11]
Устройства Uniel

Модель Cтатус комментарии

[12] Tested
Uniel - Модуль управления освещением UCH-M111RX/0808

[13] Tested
Uniel - Модуль управления автоматикой UCH-M121RX/0808

[14] Tested
Uniel - Диммер ламп накаливания и галогенных ламп UCH-M131RC/0808

[15] Tested
Uniel - Диммер cветодиодных ламп UCH-M141RC/0808
Поддерживаемые устройства 46

1-wire
Модель Cтатус комментарии

DS18B20 и клоны Tested через ядерный sysfs интерфейс, одновременное считывание не поддерживается. код [16]

433Mhz Radio
Только для Wiren Board Smart Home 3.5 и Wiren Board 4 с радио-модулем.

Датчики

Oregon Scientific (protocol v. 2.1)


Список датчиков (неполный): Oregon [17]
Если у вас есть датчик из этой таблицы, который пока не поддерживается - напишите пожалуйста нам на
форум [18]

Модель Тип Cтатус комментарии

THGN122N температура+влажность, внутренний Tested

THGN132N температура+влажность, внутренний Tested

THGR122NX,THGR228N, THGR238, THGR268 температура+влажность, внутренний Not tested

Noolite

Модель Тип Cтатус комментарии

PM111 датчик движения, внутренний Tested

PT111 датчик температуры и влажности, внутренний Tested

PT112 датчик температуры, внутренний Not tested

Исполнительные устройства

Noolite
Поддерживается весь модельный ряд.

I2C
Модель Cтатус комментарии

Датчики давления и температуры BMP085 и BMP180 Tested через ядерный драйвер, см BMP085

Другое
Модель Cтатус комментарии

Датчики влажности и температуры SHT1x Tested github [19]


Поддерживаемые устройства 47

USB-устройства
Модель Cтатус комментарии

Датчик CO2 МастерКит МТ8057 Tested github [20]

Периферийные устройства через Ethernet


Устройства ab-log.ru

Модель Cтатус комментарии

MegaD-328 with 7I7O extension Tested, community-supported github [21]

Примечания
[1] http:/ / www. noo. com. by/ sistema-noolite. html
[2] http:/ / www. razumdom. ru/ oborudovanie_rs485/
[3] http:/ / www. uniel. ru/ ru/ catalog/ 1639
[4] http:/ / www. razumdom. ru/ oborudovanie_rs485/ row90/
[5] http:/ / www. razumdom. ru/ oborudovanie_rs485/ row110/
[6] http:/ / www. razumdom. ru/ oborudovanie_rs485/ row109/
[7] http:/ / www. razumdom. ru/ oborudovanie_rs485/ row473/
[8] http:/ / www. razumdom. ru/ oborudovanie_rs485/ row83/
[9] http:/ / www. icpdas. com/ root/ product/ solutions/ remote_io/ rs-485/ tm-series/ tm-p3r3. html
[10] http:/ / www. icpdas. com/ root/ product/ solutions/ remote_io/ rs-485/ lighting_control/ lc-103. html
[11] https:/ / github. com/ contactless/ wb-homa-drivers/ blob/ master/ README.
md#%D0%A3%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%B0-uniel
[12] http:/ / www. uniel. ru/ ru/ catalog/ 2202. html
[13] http:/ / uniel. ru/ ru/ catalog/ 2200
[14] http:/ / www. uniel. ru/ ru/ catalog/ 2198. html
[15] http:/ / www. uniel. ru/ ru/ catalog/ 2199. html
[16] https:/ / github. com/ contactless/ wb-homa-drivers/ tree/ master/ wb-homa-w1
[17] http:/ / jeelabs. net/ projects/ cafe/ wiki/ Decoding_the_Oregon_Scientific_V2_protocol
[18] http:/ / contactless. ru/ forums/ topic/ поддержка-датчиков-ветра-и-осадков-oregon-scientif/
[19] https:/ / github. com/ contactless/ wb-mqtt-sht1x
[20] https:/ / github. com/ contactless/ wb-mqtt-co2mon
[21] https:/ / github. com/ drblez/ wirenboard
Управление низковольтной нагрузкой 48

Управление низковольтной нагрузкой


Для управления низковольтной нагрузкой (с напряжением вплоть до напряжения входного питания) в Wiren
Board предназначены так называемые "транзисторные выходы", они же FET. С их помощью можно управлять
включением низковольтных ламп, светодиодных лент, внешних блоков реле, ...
Всеми транзисторными выходами можно управлять из веб-интерфейса, там они называются соответственно
клеммам, например A1_OUT.

Технические детали
Для сокращения общего числа
клеммников каналы управления
низковольтной нагрузки совмещены
с каналами АЦП - смотрите
Мультиплексирование портов.
Поэтому выходы имеют большое, но
конечное сопротивление
(30-100кОм). Это может вызывать,
например, слабое свечение
светодиодных лент (решение
проблемы: добавить резистор на
питание)

Примечание для Wiren Board Эквивалентная схема

версий 2.8 и 3.5:


• при подключении индуктивных нагрузок (реле) не забудьте поставить защитный диод - всплеск напряжения
от катушки реле может повредить контроллер. Максимальный ток на канал - 3А, напряжение до 24В.
В Wiren Board 4 защитный диод встроен, и максимальное напряжение не должно превышать напряжения
питания контроллера (Vin). Максимальный ток также 3 А. Если используется несколько каналов, и
суммарный ток больше 5 А, подключите несколько клеммников GND к "минусу" источника питания.
Управление низковольтной нагрузкой 49

Примеры использования
Нагрузка подключается следующим
образом: "плюс" нагрузки
подключается к источнику питания,
"минус" подключается к
транзисторному выходу. Чтобы
нагрузка начала работать, нужно
подать высокий уровень на затвор
транзистора.
На иллюстрациях приведены схемы
подключения светодиода и реле.
Также можно легко подключить
готовый модуль реле, например
такой [1]

Пример работы в Linux


Пример подключения светодиода
Смотрите GPIO.
1. Находим номер GPIO,
соответсвующий нужному
клеммнику в таблице
WB2.8/WB3.5/WB4. Для
клеммника номер 2 в версии 2,8
это GPIO 32.
2. Экспортируем GPIO в sysfs

Пример подключения реле

root@wirenboard:~# echo 32 > /sys/class/gpio/export

3. Устанавливаем GPIO в режим вывода для управления транзистором. Это обязательно, т.к. GPIO может
находится в режиме ввода и иметь высокий импенданс, оставляя транзистор в неопределённом состоянии.

root@wirenboard:~# echo out > /sys/class/gpio/gpio32/direction

4. Открываем транзистор, подавая логический высокий уровень на затвор:

root@wirenboard:~# echo 1 > /sys/class/gpio/gpio32/value

5. Закрываем транзистор, подавая логический ноль на затвор:

root@wirenboard:~# echo 0 > /sys/class/gpio/gpio32/value


Управление низковольтной нагрузкой 50

Примечания
[1] http:/ / dx. com/ p/ 4-channel-5v-relay-module-black-blue-171144

RS-485
RS-485 - стандарт коммуникации по двухпроводной шине. По порту RS-485 к Wiren Board можно подключать
периферийные устройства.

Поддерживаемые протоколы
RS-485 - стандарт физического уровня, в котором биты передаются разностью напряжений - смотрите
описание в Википедии [1]. Поверх него должен работать логический уровень - стандарт сообщений, которыми
обмениваются устройства. Wiren Board из коробки поддерживает стандарт Modbus RTU [2], а также протоколы
устройств Uniel [3] и ydom.ru [4].

Краткое описание протокола Modbus RTU


Обмен информацией происходит по принципу запрос-ответ: контроллер посылает запрос, устройство отвечает.
Каждое устройство на шине имеет свой восьмибитный адрес. Адрес может быть как жестко задан, так и
устанавливаться при предварительной настройке - это указывается в документации к устройству.

Поддерживаемые устройства
Однако даже если Wiren Board поддерживает протокол, по которому работает устройство, Wiren Board не
обязательно поддерживает само это устройство. В стандартном ПО Wiren Board идут драйверы как для работы
с периферией производства компании "Бесконтактные устройства", так и для некоторой другой - смотрите
список Поддерживаемые_устройства#RS-485.

Как подключить устройства

Прокладка шины
Все устройства RS-485 устанавливаются на одну шину. Хотя шина работает по двум проводам, удобно
прокладывать четырёхжильным кабелем - дифпара для данных (сигналы А и В) и ещё пара проводов (GND и
+12V) для питания периферийных устройств на шине. Можно использовать обычную витую пару CAT5 для
Ethernet - тогда одна пара используется для данных, ещё две — для питания (так как по питанию идёт
значительный ток, лучше и для 12В, и для земли использовать по два скрученных провода), одна остаётся
свободной.
В конце шины нужно установить терминальный резистор (примерно 150 Ом, подробнее в Википедии
[5]
).
RS-485 51

Подключение устройств

Наконечники для шины Подключение к шин RS-485

Так как соединение осуществляется общей шиной, следует обратить внимание на качественное соединение
всех узлов линии:
• при обрыве линии устройства за обрывом не будут работать
• при коротком замыкании не будут работать все устройства.
Рекомендуем использовать штыревые наконечники под обжимку [6]. Это позволяет легко
подключать-отключать устройства без потери работоспособности остальных устройств на шине.
Провод A на всех устрйоствах подключается к клеммнику с маркировкой А, провод B - всегда к B. На Wiren
Board рядом с клеммниками А и В расположены клеммники GND и Vout - можно сразу подключить шины
питания (сначала проверьте требования ваших устройств!).
Лайфхак: так как внутри Wiren Board стоит растяжка линий, после подключения его к шине напряжение на
линии A будет больше чем на B примерно на 0.5 В. Поэтому подключая периферийные устройства вы легко
можете определить линии шины вольтметром.

Дополнительная информация
1. Дифференциальная линия дает хорошую помехозащищенность. Длина линии до 1200 метров.
2. При прокладке шины нужно соблюдать определённые правила [7], но для передачи в одной квартире
подойдёт любой кабель и даже возможны ответвления.

Программное конфигурирование устройств


Чтобы подключённая по RS-485 периферия появилась в веб-интерфейсе контроллера, надо отредактировать
конфигурационный файл /etc/wb-homa-modbus.conf, находящийся на контроллере. Для этого смотрите
инструкцию Драйвер wb-homa-modbus#Конфигурационный файл.
RS-485 52

Низкоуровневая работа с портом RS-485 в Wiren Board


Если вы хотите работать с портом RS-485 самостоятельно, не используя Драйвер wb-homa-modbus, то сначала
проверьте, что в файле /etc/wb-homa-modbus.conf нет конфигурации для этого порта - иначе
стандартный драйвер будет писать в этот порт. Также ознакомьтесь с инструкцией Работа с последовательным
портом из Linux.

Реализация портов в разных версиях Wiren Board

Wiren Board 4
Порты определяются в системе как:
• /dev/ttyNSC0 - изолированный (RS-485-ISO),
• /dev/ttyNSC1 - неизолированный порт.

Wiren Board NETMON-1


Контроллер имеет два полудуплексных порта. Трансиверы подключен к чипу SC16IS752.
Порты определяются в системе как:
• /dev/ttyNSC0 - разъём и8
• /dev/ttyNSC1 - разъём и6

Wiren Board Smart Home rev. 3.5


Контроллер имеет два полудуплексных
порта. Трансивер подключен к чипу
SC16IS752.
Порты определяются в системе как:
• /dev/ttyNSC0 - зелёная пара
клеммников
• /dev/ttyNSC1 - синяя пара клеммников
Для уменьшения эффектов отражения,
линии RS-485 должны заканчиваться
"терминаторами" - резисторами, равными
волновому сопротивлению линии. На
плате установлены резисторы по 150 Ом
между линиями A и В. Для их отключения
распаяйте соответствующие
SMD-перемычки (по умолчанию
запаяны), см. фото.

Wiren Board rev. 2.8


Перемычки терминаторов в Wiren Board Smart Home rev. 3.5
Wiren Board 2.8 может поставляться с
трансивером RS-485. Поддерживается полудуплексный режим работы, линии A и B выведены на клеммники.
Трансивер подключен к чипу SC16IS752. Соответсвующий последовательный порт определяется системой как
/dev/ttyNSC0. См. SC16IS752#UART0
RS-485 53

Примечания
[1] https:/ / ru. wikipedia. org/ wiki/ RS-485
[2] https:/ / ru. wikipedia. org/ wiki/ Modbus#. D0. 92. D0. B2. D0. B5. D0. B4. D0. B5. D0. BD. D0. B8. D0. B5
[3] http:/ / smart. uniel. ru/
[4] http:/ / ydom. ru
[5] https:/ / ru. wikipedia. org/ wiki/ RS-485#. D0. A1. D0. BE. D0. B3. D0. BB. D0. B0. D1. 81. D0. BE. D0. B2. D0. B0. D0. BD. D0. B8. D0.
B5
[6] http:/ / www. chipdip. ru/ catalog-show/ tips/
[7] http:/ / www. gaw. ru/ html. cgi/ txt/ interface/ rs485/ app. htm

Драйвер wb-homa-modbus
Внимание! В этой статье даётся упрощённое и, возможно, устаревшее описание драйвера, работающего с
устройствами Modbus и Uniel и передающего сообщения в MQTT. Полное актуальное описание смотрите в
документации [1] на драйвер.

Краткое описание драйвера


В настоящее время поддерживается работа с устройствами протоколов Modbus RTU и Uniel, подключаемыми
через RS-485.
Конфигурация драйвера задаётся в файле /etc/wb-homa-modbus.conf. Если такой файл создан, драйвер
запускается при загрузке контроллера автоматически. Также драйвером можно управлять в ручном режиме из
консоли:

service wb-homa-modbus stop #остановить драйвер


service wb-homa-modbus start #запустить драйвер
service wb-homa-modbus restart #перезапустить драйвер
wb-homa-modbus -c /etc/wb-homa-modbus.conf -d #запустить драйвер в
принудительном отладочном режиме

Конфигурационный файл
Для работы драйвера нужно создать и отредактировать файл /etc/wb-homa-modbus.conf. Для этого:
1. Воспользуйтесь инструкцией Просмотр файлов контроллера с компьютера
2. Файл /etc/wb-homa-modbus.conf имеет структуру порты (ports) -> устройства (devices): в файле
есть описания физических портов контроллера, а внутри них - список устройств, которые подключены к
этому порту.
Для каждого порта указываются настройки (скорость, чётность и т.п.), а также протокол (Modbus, RTU,
etc.)
Для каждого устройства обязательно указывается его уникальный адрес на шине - slave_id (подробнее
про это можно прочитать в статье RS-485). Также можно указать другие необязательные параметры -
смотрите полное описание формата в подробной документации [2].
3. Впишите конфигурацию для портов и подключённых устройств в файл, используя примеры ниже.
4. Перезагрузите устройство ИЛИ выполните из консоли команду

service wb-homa-modbus restart

Она перезапустит драйвер, и подключённое устройство появится в веб-интерфейсе.


Драйвер wb-homa-modbus 54

5. Если устройство не появилось, выполните команду

tail /var/log/messages

или откройте файл /var/log/messages и промотайте его до конца. Если там будет строчка такого
типа:
May 6 17:50:58 wirenboard user.notice modbus: FATAL: Error parsing config
file: Failed to parse JSON: * Line 15, Column 17
- ищите ошибку в 15-й строке конфигурационного файла.

Пример конфигурации для модуля реле WB-MRM2, подключённого к


изолированному порту (RS-485-ISO) Wiren Board 4
{
"ports": [
{
"path" : "/dev/ttyNSC0", //псевдофайл, соответствующий
порту
"baud_rate": 9600, //скорость порта, 9600 почти для всех
устройств, но проверьте документацию к ним
"parity": "N", //четность
"data_bits": 8, //битов данных в посылке
"stop_bits": 2, //количество стоп-битов. Чётность,
количество битов и стоп-битов тоже редко меняются
"poll_interval": 10, //интервал опроса устройств на порту в
миллисекундах
"devices" : [
{
"device_type" : "WB-MRM2", //тип устройства,
распознаваемый драйвером
"slave_id": 25 //адрес устройства
}
]
}
]
}

Узнать файл, соответствующий порту для вашего контроллера - RS-485#Реализация портов в разных версиях
Wiren Board.
Полный список поддерживаемых типов устройств: см. здесь [3].

Пример конфигурационного файла для нескольких подключённых устройств


// Configuration options
{
"debug": false,
"ports": [
{
"path" : "/dev/ttyNSC1",
Драйвер wb-homa-modbus 55

"baud_rate": 9600,
"parity": "N",
"data_bits": 8,
"stop_bits": 2,
"poll_interval": 0,
"enabled": true,
"devices" : [
{
"name": "DRB88",
"id": "drb88",
"enabled": true,
"slave_id": "0x23",
"device_type" : "DRB88"
},
{
"slave_id": "0x26",
"device_type" : "MSU24"
},
{
"slave_id": "0x31",
"device_type" : "MSU34"
},
{
"slave_id": "0x04",
"device_type" : "LC-103"
},
{
"device_type" : "DDL24",
"slave_id" : "0x20"
},
{
"enabled": true,
"slave_id": "0x06",
"device_type" : "WB-MRM2"
},
{
"slave_id" : 16,
"device_type" : "WB-MRGB"
}
]
},
{
"path" : "/dev/ttyNSC0",
"type": "uniel",
"poll_interval": 10,
"enabled": true,
"devices" : [
Драйвер wb-homa-modbus 56

{
"device_type" : "UCH-M141RC",
"slave_id": 1
}
]
}
]
}

Доработка драйвера для поддержки новых устройств


В качестве отправной точки смотрите статью Драйвер wb-homa-modbus:Примеры написания шаблонов, для
дальнейшей поддержки свяжитесь с нами [4].

Примечания
[1] https:/ / github. com/ contactless/ wb-homa-drivers/ blob/ master/ wb-homa-modbus/ README. md
[2] https:/ / github. com/ contactless/ wb-homa-drivers/ #wb-homa-modbus
[3] https:/ / github. com/ contactless/ wb-homa-drivers/ blob/ master/ wb-homa-modbus/ README.
md#%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0-%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D0%BE%D0%B2-dev
[4] mailto:info@contactless. ru
57

Приложения

Работа с последовательным портом из Linux


Перед началом работы
Монументальное описание последовательных портов - http://www.tldp.org/HOWTO/Serial-HOWTO.html
Далее будет дано краткое неточное описание.
В последовательный порт вы можете посылать данные, и получать их оттуда. В Linux последовательные порты
представлены в виде некоторых псевдофайлов из папки /dev/, например, в Wiren Board это /dev/ttyAPP0,
/dev/ttyNSC1, /dev/ttyUSB0 (у всех в названии есть tty).
Перед тем, как начать работать с портом, надо настроить его скорость и другие параметры в зависимости от
того, какое устройство к нему подключено:
• скорость в битах в секунду. Самое популярное значение 115200
• количество бит в символе, чётность, количество стоп-битов. Самая популярная конфигурация называется
8N1 - восемь бит в символе, проверки чётности нет, один стоп-бит
• аппаратный и программный контроль потока. Если не знаете - поставьте нет в обоих настройках.

Интерактивный HEX-терминал serial_tool


Для интерактивной отправки и приёма данных в HEX (т.е. в шестнадцатиричном) формате используйте
утилиту serial_tool [1]. Утилита установлена в стандартном образе Wiren Board.

Справка по использованию
root@wirenboard:~# serial_tool -h
usage: serial_tool [-h] [-b BAUD] [-p PARITY] [-d DATA_BITS] [-s STOP_BITS]
[-t READ_TIMEOUT]
port

serial_tool - interactive hex serial port console

positional arguments:
port Serial port to open, i.e. /dev/ttyXXX

optional arguments:
-h, --help show this help message and exit
-b BAUD, --baud BAUD Baud rate (default: 9600)
-p PARITY, --parity PARITY
set parity, one of [N, E, O, M, S] (default: N)
-d DATA_BITS, --data-bits DATA_BITS
set number of data bits, i.e. bytesize (default: 8)
-s STOP_BITS, --stop-bits STOP_BITS
set number of stop bits, one of [1, 1.5, 2] (default:
1)
Работа с последовательным портом из Linux 58

-t READ_TIMEOUT, --timeout READ_TIMEOUT


number of seconds to wait for answer (default: 1)

Пример запуска
root@wirenboard:~# serial_tool -b 9600 -p N -d 8 -s 2 -t 1 /dev/ttyNSC1
serial_tool on /dev/ttyNSC1: 9600 8N2.0
Enter your commands below in HEX form.
All characters but 0-9,a-f including spaces are ignored.
Press Control-D or Control-C to leave the application.
Press [Enter] to print received data
>> FF FF 0A 01 11 00 00 1C
<< FF FF 0A 00 11 00 00 1B

Здесь установлены настройки 9600 8N2, таймаут 1 секунда, порт /dev/ttyNSC1 (RS-485).

Интерактивный режим работы из консоли


Самая удобная утилита для работы с последовательным портом из консоли - minicom (есть в стандартном
образе Wiren Board). Minicom удобно пользоваться для работы с устройстами, которые управляются
текстовыми командами или выводят текстовые сообщения. Примерами таких устройств являются
GSM-модемы (управляются AT-командами), в том числе встроенный в Wiren Board GSM-модуль;
GPS-модули, работающие по протоколу NMEA и т.п.
Краткая инструкция (считаем, что мы будем работать с портом /dev/ttyAPP0):
• В первый раз запускаем minicom с ключём, создающим профиль работы с портом (в нём хранятся номер
порта, скорость передачи данных, чётность, и т.д.):

$ minicom -s /dev/ttyAPP0

• Зайти в настройки (нажать Ctrl+A, затем O), выбрать пункт Serial port setup, там установить порт
/dev/ttyAPP0, скорость и чётность - 115200, 8N1, Hardware flow control - No, Software flow control - No
• Сохранить настройки: Save setup as _dev_ttyAPP0
• Далее запускать как:

$ minicom /dev/ttyAPP0

(все параметры будут сразу браться из профиля с названием /dev/ttyAPP0, который мы ранее создали)
• Теперь можно вводить данные, которые вы хотите отправить в порт. Приходящие в порт данные от внешних
устройств также будут выводиться

Работа с последовательным портом из своей программы


http://tldp.org/HOWTO/Serial-Programming-HOWTO/

Примечания
[1] https:/ / github. com/ contactless/ serial_tool
Работа с GPIO 59

Работа с GPIO
В Wiren Board часть GPIO выведена на клеммники, часть выведена на разъёмы UEXT, часть используется для
служебных целей. GPIO также используются для управления транзисторами для коммутации низковольтной
нагрузки.
Соответствие между номерами GPIO в Linux и их местоположением и функцией можно найти в табличке WB
SH 3.5: Список GPIO или WB rev. 2.8: Список GPIO.
В Wiren Board rev. 2.8 8 GPIO на специальном разъёме подключены через MCP23S08 и временно не работают
со стандартным Linux API. Описание работы с ними есть на странице MCP23S08.
Все GPIO (как и остальные порты Wiren Board) работают с напряжением 3.3V. Ни в коем случае не
подключайте к GPIO напрямую сигналы, напряжением больше 3.3V! В случае необходимости
подключения устройств, работающих с более высоким напряжением, необходимо использовать схемы
согласования или подключать (для 5V) через резистор в 20 кОм и более
На некоторых GPIO (в частности на 3х GPIO, выведенных на клеммники в Wiren Board rev. 2.8) можно
программно установить 47к подтяжку к +3.3В. См. Pin_pull-up.

Интерфейс sysfs в Linux


GPIO в Linux поддерживаются через sysfs-интерфейс.
Для работы через sysfs c определённым GPIO его надо экспортировать:
Здесь и далее N - номер gpio

echo N > /sys/class/gpio/export

Экспортированные gpio появляются в каталоге /sys/class/gpio :

root@wirenboard:~# ls -1 /sys/class/gpio/
export
gpio32
gpiochip0
gpiochip120
gpiochip32
gpiochip64
unexport

В директории /sys/class/gpioN теперь находятся файлы для работы с GPIO (где N - номер GPIO, как и было
сказано ранее):

root@wirenboard:~# ls -1 /sys/class/gpio/gpioN/
active_low
device
direction
edge
power
subsystem
uevent
value

Установка направления GPIO (ввод/вывод) производится с помощью записи в файл direction


Работа с GPIO 60

echo in > /sys/class/gpio/gpioN/direction # установим GPIO номер N на ввод


echo out > /sys/class/gpio/gpioN/direction # установим GPIO номер N на вывод

Чтение и установка значения GPIO производится с помощью файла value.


Чтение:

echo in > /sys/class/gpio/gpioN/direction # установим GPIO номер N на ввод


cat /sys/class/gpio/gpioN/value # вернёт 1 или 0

Запись:
echo out > /sys/class/gpio/gpioN/direction # установим GPIO номер N на вывод
echo 0 > /sys/class/gpio/gpioN/value # установим логический 0 (низкое напряжение) на GPIO номер N
echo 1 > /sys/class/gpio/gpioN/value # установим логический 1 (высокое напряжение) на GPIO номер N

Интерфейс sysfs и прерывания


Через интерфейс sysfs можно запросить прерывания по изменению состояния процессора.
Установка прерывания производится путём записи значения в файл "edge". Значения могут быть:
• "none" - отключить прерывание
• "rising" - включить прерывание по нисходящему фронту
• "falling" - включить прерывание по восодящему фронту
• "both" - включить прерывание по обеим фронтам.
Пример:
root@wirenboard:~# echo 3 > /sys/class/gpio/export # экспортируем GPIO номер 3 (TB10 на WB3.3)

root@wirenboard:~# cat /sys/class/gpio/gpio3/edge # проверяем состояние прерывания

none

root@wirenboard:~# echo falling > /sys/class/gpio/gpio3/edge # устанавливаем прерывание по нисходящему фронту

root@wirenboard:~# cat /proc/interrupts | grep gpiolib # прерывание появилось в списке. 26 - внутренний номер прерывания, 0 - количество событий

26: 0 gpio-mxs 3 gpiolib

root@wirenboard:~# cat /proc/interrupts | grep gpiolib # после нескольких собтий, 76 - количество событий

26: 76 gpio-mxs 3 gpiolib

Прерывания можно ловить из userspace с помощью системного вызова epoll() и select() на файл value. Пример
работы см. [1]
См. также elinux.org [2]

Прямое обращение через память процессора


Этот метод настоятельно НЕ РЕКОМЕНДУЕТСЯ для использования без достаточных оснований. Для
работы из С/C++ стоит использовать работу через файлы в sysfs, как описано в предыдущем разделе.
Управлять GPIO можно с помощью прямого доступа к регистрам процессора, в обход Linux через интерфейс
/dev/mem. При этом, по сравнению с работой через sysfs минимизуются наладные расходы. Этот метод можно
использовать, если вам необходим очень быстрый доступ к GPIO, например bitbang протоколов или ШИМ.
Стоит иметь в виду, что планировщик процессов всё ещё может вносить в работу программы значительные
задержки. Рекомендуется выносить критичные ко времени задачи в ядро.
См. [3] , [4]
Работа с GPIO 61

GPIO и Device Tree


Указывать GPIO в Device Tree необходимо для настройки GPIO для работы в режиме программного SPI, I2C,
для использования GPIO в качестве источника прерываний и т.д. Так например на пин 10@UEXT1 (CS) и
пины 5@UEXT2 (SCL), 6@UEXT2 (SDA), 10@UEXT2 (CS) выведены линии GPIO процессора. Их можно
сконфигурировать для использования например в качестве chip-select для SPI или в качестве I2C.
GPIO процессора и периферийных устройств разбиты на банки (gpiochip). GPIO процессора разбиты на 3
банка по 32 GPIO: gpio0, gpio1, gpio2. Адресация GPIO в Device Tree происходит по номеру банка и номеру
GPIO *внутри* банка.

Пример 1
Определим сигнал 6@UEXT2 (SDA) в качестве источника прерываний для драйвера mrf24j40. Согласно
таблице Список GPIO, сигнал соответствует GPIO 53 процессора. 53 принадлежит второму банку gpio (от 32
до 63). Номер GPIO внутри банка 53-32=21 :

6lowpan@0 {
compatible = "microchip,mrf24j40";
spi-max-frequency = <100000>;
reg = <6>;
interrupt-parent = <&gpio1>;
interrupts = <21 0>;
};

Примечания
[1] https:/ / github. com/ contactless/ wiegand-linux-sysfs
[2] http:/ / elinux. org/ GPIO
[3] http:/ / olimex. wordpress. com/ 2012/ 09/ 11/ imx233-olinuxino-gpios-faster-and-faster/
[4] https:/ / github. com/ OLIMEX/ OLINUXINO/ blob/ master/ SOFTWARE/ iMX233/ gpio-mmap. h
CMUX 62

CMUX
Модем поддерживает режим мультиплексирования - создание виртуальных портов, через которые можно
одновременно работать с модемом. Например через один порт можно открыть сессию PPP для GPRS, а через
другой получать и отправлять SMS, проверять баланс и т.д.
Для работы необходима поддержка GSM line discipline в ядре (включена как модуль в стандартной прошивке).
Специальный демон, cmux отправляет модем в режим CMUX, после чего создаёт четыре виртуальных порта,
/dev/ttyGSM[1-4] . Закрытие демона cmux до закрытия всех виртуальных портов приведёт к kernel
panic!

Демон cmux
Репозитарий [1]
Оригинальный автор: [2]
Демон установлен по-умолчанию как "/usr/bin/cmux", доступен в пакете cmux. Скачать бинарник демона
можно здесь [3]

Пример работы
Включаем модем:

root@wirenboard:~# wb-gsm on

Запускаем демон cmux:

root@wirenboard:~# cmux
SERIAL_PORT = /dev/ttyAPP0
AAAT : AAAT OK
AT+IFC=2: AT+IFC=2,2 OK
AT+GMM : AT+GMM SIMCOM_SIM900R OK
AT : AT OK
AT+CMUX=: AT+CMUX=0 OK
Line dicipline set
Created /dev/ttyGSM1
Created /dev/ttyGSM2
Created /dev/ttyGSM3
Created /dev/ttyGSM4
Going to background

Теперь общение с модемом можно производить в любом из каналов /dev/ttyGSMx

Примечания
[1] https:/ / github. com/ contactless/ cmux/
[2] https:/ / github. com/ Rtone/ cmux
[3] https:/ / github. com/ contactless/ cmux/ releases/ tag/ 0. 3
63

Периферийные устройства WB-xxx

1-Wire
1-Wire - шина для подключения внешних датчиков по двум (или трём) проводам. Так как это шина, можно
подключить несколько устройств на один порт 1-Wire.

Поддерживаемые датчики
Wiren Board поддерживает один тип датчиков - температурные на основе чипов DS18B20 и подобных,
например:
• SNR-DTS [1]
• Stainless Steel Package [2]
Возможна реализация поддержки других датчиков по запросу на support@contactless.ru

Подключение
Датчик имеет три вывода: земля, питание и данные. Если есть возможность подключить все три вывода, то
лучше сделать именно так: на землю, 5 В и контакт 1-Wire. Если нужно уменшьшить число проводов, что
нужно соединить контакты питания и земли датчика, и подключить их к земле контроллера. В таком случае
датчик будет брать питание с канала с данными, но этот способ не так надёжен, как подключение по трём
проводам, и может замедлить опрашивание датчиков, особенно если их несколько на одном канале.
Длина шины может быть до сотни метров, однако эффективная дальность зависит от наводок на кабель.

Поддержка в ПО
После подключения значения с датчиков сразу будут транслироваться в MQTT и появятся в веб-интерфейсе.
Каждый датчик имеет собственный уникальный идентификатор.
Более подробная информация про 1-Wire на нашем форуме [3].

Примечания
[1] http:/ / shop. nag. ru/ catalog/ 00007. Avtomatizatsiya-i-monitoring/ 06630. Datchiki/ 08428. SNR-DTS
[2] http:/ / www. aliexpress. com/ item/ Waterproof-DS18B20-Temperature-Probe-Temperature-Sensor-Stainless-Steel-Package-100cm-Wire/
1426853426. html
[3] http:/ / contactless. ru/ forums/ topic/
%D0%BF%D0%BE%D0%B4%D0%B4%D0%B5%D1%80%D0%B6%D0%BA%D0%B0-1-wire-%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D
#post-2605
WB-MRM2 Реле 2х канальное 64

WB-MRM2 Реле 2х канальное


Назначение.

2х канальный модуль реле предназначен


для для создания систем автоматизации
зданий.
Управление модулем производится с
контроллера или ПК по шине RS-485
командами по протоколу MODBUS, а
также с помощью внешних кнопок.

Технические характеристики

- 2 переключаемых канала реле.


- Для WB-MRM2 ток до 6А\250В на
канал.
- Для WB-MRM2-mini ток до 5А\250В на
канал.
- Напряжение питания: от 11 до 24 В.
- Потребляемая мощность: 0,3Вт.
- Интерфейс: RS485, ModBus RTU.
- Сохранение состояния при отключении
питания
- Светодиодная индикация питания и
включения каждого канала.
релейный модуль WB-MRM2
- Входы для кнопок управления.
- Установка в электрощит на DIN рейку,
шириной 2 DIN.

Условия эксплуатации:

- Температура воздуха от 0°С до +50°С;


- Относительная влажность воздуха до
92%,без конденсата влаги.

Порядок подключения

Модуль выполнен в пластмассовом


корпусе и предназначен для установки в
монтажную коробку на DIN рейку.
К синим клеммам подключаются RS-485
и управляющие кнопки:
• А и В - сигнальные линии RS485 релейный модуль WB-MRM2-mini
• V+ и GND - питание
• b1 и GND - кнопка управления 1 реле
WB-MRM2 Реле 2х канальное 65

• b2 и GND - кнопка управления 2 реле

Управление
Параметры шины.
Скорость 9600 бит/сек, данных - 8 бит, чётность – нет, стоповый бит - 2.

Команды поддерживаемые устройством

Command command (dec)

READ_COIL 1

WRITE_SINGLE_COIL 5

WRITE_MULTI_COILS 15

READ_HOLDING_REGISTERS 3

WRITE_SINGLE_REGISTER 6

WRITE_MULTI_REGISTERS 16

Смена адреса производится широковещательным сообщением (id 0) WRITE_SINGLE_REGISTER(6) с адресом


128(0x80).
По адресу 200 лежит сигнатура длинной 6 байт. Сигнатура уникальна для каждой модели устройства и
позволяет идентифицировать модель. Для получения сигнатуры нужно выполнить
READ_HOLDING_REGISTERS адрес 200 длина 6.
Запись в эту область памяти не поддерживается, при попытки записи в недопустимое место возвращается
ошибка 3.
Значение каждого реле хранится в COIL. У 1го реле адрес 0, у 2го - 1.

Безопасный режим
В этом режиме при прекращение обмена данными по modbus устройство отключает оба реле по прошествии
заданного времени.
Для включения безопасного режима нужно записать значение отличное от 0 в HOLDING_REGISTER по
адресу 2. Это значение - таймаут в секундах.

Кнопки
Поддерживается три режима работы кнопок:
• Режим 0: прямое управление каналами, выключатели без фиксации (кнопки). Нажатие на кнопку
переключает состояние реле.
• Режим 1: прямое управление каналами, выключатели с фиксацией. Переключение выключателя с
фиксацией устанавливает состояние реле в соответствии с положением выключателя.
• Режим 255: управление каналами отключено
Поведением по-умолчанию является прямое управление каналами реле (режим 0). Установить режим можно
записав соответствующее число в HOLDING_REGISTER по адресу 5.
В любом режиме работы, текущее состояние кнопок можно прочесть из HOLDING_REGISTER по адресам 6 и
7.
WB-MRM2 Реле 2х канальное 66

Карта регистров

Регистр / тип чтение/запись формат назначение


адрес

0 coil RW 1 or 0 состояние реле #1

1 coil RW 1 or 0 состояние реле #2

5 holding RW 0: - кнопки,1: - выключатель, 0xFF: отключить управление режим работы кнопок

6 holding R bitmask, 1 - нажата, 0 - отпущена состояние кнопоки 1

7 holding R bitmask, 1 - нажата, 0 - отпущена состояние кнопоки 2

8 holding RW seconds таймаут для безопасного


режима

32 holding R счетчик нажатий 1 кнопки. состояние работы кнопок

33 holding R счетчик нажатий 2 кнопки. состояние работы кнопок

0x80 holding W Modbus-адрес устройства

200-206 holding R {'W','B','M','R','2',0} hex: 0x0057 0x0042 0x004d 0x0052 0x0032 сигнатура
0x0000

220-241 holding R __date__ __time__ дата сборки прошивки

WB-RGB Диммер RGB


Назначение.

3х канальный диммер предназначен


для управления светодиодными
лентами RGB сигналами ШИМ.
Также можно управлять тремя
одноцветными лентами.
Управление модулем производится с
контроллера или ПК по шине RS-485
командами по протоколу MODBUS,
а также с помощью внешних кнопок.

Диммер WB-RGB
WB-RGB Диммер RGB 67

Технические характеристики
- 3 канала ШИМ для управления светодиодной лентой.
- Ток до 5А на канал.
- Частота ШИМа - 24кГц.
- Напряжение питания: от 11 до 24 В.
- Потребляемая мощность: 0,3Вт.
- Интерфейс: RS485, ModBus RTU.
- Сохранение состояния при отключении питания
- Входы для кнопок управления балансом цвета и общей яркости.
- Размеры – 55*30*10мм

Условия эксплуатации:
- Температура воздуха от 0°С до +50°С;
- Относительная влажность воздуха до 92%,без конденсата влаги.

Порядок подключения
Модуль выполнен в бескорпусном варианте - плата в термоусадочной трубке.
К синим клеммам подключаются RS-485 и управляющие кнопки:
• А и В - сигнальные линии RS485
• GND - земля шины RS485 (если есть)
• b1 и GND - кнопка управления яркостью
• b2 и GND - кнопка управления баланса цвета
Питание модуля совмещено с питанием светодиодных лент. Подключается к зеленым клеммам "-" "+".
Напряжение питания в пределах от 11В до 24В.
Стандартная светодиодная RGB лента имеет четыре провода и подключается к зеленым клеммам:
R (red)-управление красным цветом
G (green)-управление зеленым цветом
B (blue)-управление синим цветом
V+ общий провод (плюс источника питания)

Управление
Параметры шины.
Скорость 9600 бит/сек, данных - 8 бит, чётность – нет, стоповый бит - 2.

Команды поддерживаемые устройством


WB-RGB Диммер RGB 68

Command command (dec)

READ_COIL 1

WRITE_SINGLE_COIL 5

WRITE_MULTI_COILS 15

READ_HOLDING_REGISTERS 3

WRITE_SINGLE_REGISTER 6

WRITE_MULTI_REGISTERS 16

Смена адреса производится широковещательным сообщением (id 0) WRITE_SINGLE_REGISTER(6) с адресом


128(0x80).
По адресу 200 лежит сигнатура длинной 6 байт. Сигнатура уникальна для каждой модели устройства и
позволяет идентифицировать модель. Для получения сигнатуры нужно выполнить
READ_HOLDING_REGISTERS адрес 200 длина 6.
Запись в эту область памяти не поддерживается, при попытки записи в недопустимое место возвращается
ошибка 3.
Яркость канала задаётся 8-битным числом (0-255). Установка физической яркости светодиодов производится
в соответствии с логарифмической кривой диммирования.
Модуль использует широтно-импульсную модуляцию (PWM), разрядность: 12 бит, частота ШИМ: 24 кГц.

Кнопки
Модуль имеет две аппаратные кнопки.
Кнопка 1. Короткое нажатие – включение/выключение всех каналов. Длительное нажатие – плавное
изменение яркости всех каналов.
Кнопка 2. Длительное нажатие кнопки – плавное изменение цвета.
Отключить управление каналами с помощью кнопок можно, записав число 255(0xFF) в HOLDING_REGISTER
по адресу 5.
В любом режиме работы, текущее состояние кнопок можно прочесть из HOLDING_REGISTER по адресу 6 и
7. 0 отпущена, 1 - нажата.

Карта регистров

Регистр / тип чтение/запись формат назначение


адрес

0 holding RW 0-255 Уровень канала G, логарифмическая


кривая

1 holding RW 0-255 Уровень канала R, логарифмическая


кривая

2 holding RW 0-255 Уровень канала B, логарифмическая


кривая

5 holding RW 0: стандартный режим, 0xFF: отключить управление режим работы кнопок

6 holding R 1 - нажата, 0 - отпущена состояние кнопки 1

7 holding R 1 - нажата, 0 - отпущена состояние кнопки 2

0x80 holding W Modbus-адрес устройства


WB-RGB Диммер RGB 69

200-206 holding R {'W','B','M','R','G','B'} == 0x0057 0x0042 0x004d 0x0052 сигнатура


0x0047 0x0042
Источники и основные авторы 70

Источники и основные авторы


Wiren Board NETMON-1  Источник: http://contactless.ru/wiki/index.php?oldid=3201  Редакторы: D.a.gornostaev, EvgenyBoger, Fizikdaos

Power over Ethernet  Источник: http://contactless.ru/wiki/index.php?oldid=2748  Редакторы: Admin, EvgenyBoger, Fizikdaos

Debug UART  Источник: http://contactless.ru/wiki/index.php?oldid=3082  Редакторы: Admin, Akolesnikov, EvgenyBoger, Fizikdaos

"Сухой контакт"  Источник: http://contactless.ru/wiki/index.php?oldid=2388  Редакторы: Admin

Программное обеспечение Wiren Board  Источник: http://contactless.ru/wiki/index.php?oldid=3125  Редакторы: Admin, EvgenyBoger, Fizikdaos

MQTT  Источник: http://contactless.ru/wiki/index.php?oldid=2926  Редакторы: Admin, EvgenyBoger, Fizikdaos

Wiren Board 4:Веб-интерфейс  Источник: http://contactless.ru/wiki/index.php?oldid=3124  Редакторы: Admin

Движок правил wb-rules  Источник: http://contactless.ru/wiki/index.php?oldid=3202  Редакторы: Admin, EvgenyBoger, Fizikdaos

Как узнать IP-адрес контроллера  Источник: http://contactless.ru/wiki/index.php?oldid=3527  Редакторы: Admin

SSH  Источник: http://contactless.ru/wiki/index.php?oldid=3123  Редакторы: Admin

Просмотр файлов контроллера с компьютера  Источник: http://contactless.ru/wiki/index.php?oldid=3204  Редакторы: Admin, Евгений Твёрдый

GSM/GPRS  Источник: http://contactless.ru/wiki/index.php?oldid=2763  Редакторы: Admin, EvgenyBoger, Fizikdaos

ADC  Источник: http://contactless.ru/wiki/index.php?oldid=2848  Редакторы: Admin, EvgenyBoger, Fizikdaos

GPIO  Источник: http://contactless.ru/wiki/index.php?oldid=3476  Редакторы: Admin, Fizikdaos

Watchdog  Источник: http://contactless.ru/wiki/index.php?oldid=2643  Редакторы: Fizikdaos

Buzzer  Источник: http://contactless.ru/wiki/index.php?oldid=2765  Редакторы: EvgenyBoger, Fizikdaos

Датчик SHT1x  Источник: http://contactless.ru/wiki/index.php?oldid=3190  Редакторы: EvgenyBoger

Поддерживаемые устройства  Источник: http://contactless.ru/wiki/index.php?oldid=3536  Редакторы: EvgenyBoger, Fizikdaos

Управление низковольтной нагрузкой  Источник: http://contactless.ru/wiki/index.php?oldid=2509  Редакторы: Admin, EvgenyBoger, Fizikdaos

RS-485  Источник: http://contactless.ru/wiki/index.php?oldid=3194  Редакторы: Admin, EvgenyBoger, Fizikdaos

Драйвер wb-homa-modbus  Источник: http://contactless.ru/wiki/index.php?oldid=3537  Редакторы: Admin, EvgenyBoger, Fizikdaos, Ivan4th

Работа с последовательным портом из Linux  Источник: http://contactless.ru/wiki/index.php?oldid=2847  Редакторы: Admin, EvgenyBoger

Работа с GPIO  Источник: http://contactless.ru/wiki/index.php?oldid=2791  Редакторы: Admin, EvgenyBoger, Fizikdaos

CMUX  Источник: http://contactless.ru/wiki/index.php?oldid=2789  Редакторы: EvgenyBoger, Fizikdaos

1-Wire  Источник: http://contactless.ru/wiki/index.php?oldid=3197  Редакторы: Admin, EvgenyBoger, Fizikdaos

WB-MRM2 Реле 2х канальное  Источник: http://contactless.ru/wiki/index.php?oldid=3523  Редакторы: EvgenyBoger, Fizikdaos

WB-RGB Диммер RGB  Источник: http://contactless.ru/wiki/index.php?oldid=3541  Редакторы: EvgenyBoger, Fizikdaos


Источники, лицензии и редакторы изображений 71

Источники, лицензии и редакторы


изображений
Файл:WB NETMON-1 front.jpeg  Источник: http://contactless.ru/wiki/index.php?title=Файл:WB_NETMON-1_front.jpeg  Лицензия: неизвестно  Редакторы: EvgenyBoger
Файл:WB NETMON-1 back.jpeg  Источник: http://contactless.ru/wiki/index.php?title=Файл:WB_NETMON-1_back.jpeg  Лицензия: неизвестно  Редакторы: EvgenyBoger
Файл:WB_NETMON_C13_C14_GSM.jpeg  Источник: http://contactless.ru/wiki/index.php?title=Файл:WB_NETMON_C13_C14_GSM.jpeg  Лицензия: неизвестно  Редакторы:
EvgenyBoger
Файл:WB NETMON-1 front relays.png  Источник: http://contactless.ru/wiki/index.php?title=Файл:WB_NETMON-1_front_relays.png  Лицензия: неизвестно  Редакторы: EvgenyBoger
Файл:WB NETMON-1 front rj45.jpeg  Источник: http://contactless.ru/wiki/index.php?title=Файл:WB_NETMON-1_front_rj45.jpeg  Лицензия: неизвестно  Редакторы: EvgenyBoger
Файл:Схема.png  Источник: http://contactless.ru/wiki/index.php?title=Файл:Схема.png  Лицензия: неизвестно  Редакторы: D.a.gornostaev, Fizikdaos
Файл:Mka front sch.jpg  Источник: http://contactless.ru/wiki/index.php?title=Файл:Mka_front_sch.jpg  Лицензия: неизвестно  Редакторы: EvgenyBoger
Файл:Mka back sch.jpg  Источник: http://contactless.ru/wiki/index.php?title=Файл:Mka_back_sch.jpg  Лицензия: неизвестно  Редакторы: EvgenyBoger
Файл:Button.png  Источник: http://contactless.ru/wiki/index.php?title=Файл:Button.png  Лицензия: неизвестно  Редакторы: Fizikdaos
Файл:Poe-injector.jpg  Источник: http://contactless.ru/wiki/index.php?title=Файл:Poe-injector.jpg  Лицензия: неизвестно  Редакторы: Fizikdaos
Файл:Poe-injector-with-cable.jpg  Источник: http://contactless.ru/wiki/index.php?title=Файл:Poe-injector-with-cable.jpg  Лицензия: неизвестно  Редакторы: Fizikdaos
Файл:Putty serial settings.png  Источник: http://contactless.ru/wiki/index.php?title=Файл:Putty_serial_settings.png  Лицензия: неизвестно  Редакторы: Admin
Файл:Putty serial open.png  Источник: http://contactless.ru/wiki/index.php?title=Файл:Putty_serial_open.png  Лицензия: неизвестно  Редакторы: Admin
Файл:Putty serial logged in.png  Источник: http://contactless.ru/wiki/index.php?title=Файл:Putty_serial_logged_in.png  Лицензия: неизвестно  Редакторы: Admin
Файл:Веб-интерфейс - главная.png  Источник: http://contactless.ru/wiki/index.php?title=Файл:Веб-интерфейс_-_главная.png  Лицензия: неизвестно  Редакторы: Admin
Файл:MQTT.png  Источник: http://contactless.ru/wiki/index.php?title=Файл:MQTT.png  Лицензия: неизвестно  Редакторы: Fizikdaos
Файл:Web ip.png  Источник: http://contactless.ru/wiki/index.php?title=Файл:Web_ip.png  Лицензия: неизвестно  Редакторы: Admin
Файл:Ifconfig ip.png  Источник: http://contactless.ru/wiki/index.php?title=Файл:Ifconfig_ip.png  Лицензия: неизвестно  Редакторы: Admin
Файл:Putty enter ip.png  Источник: http://contactless.ru/wiki/index.php?title=Файл:Putty_enter_ip.png  Лицензия: неизвестно  Редакторы: Admin
Файл:Putty accept key.png  Источник: http://contactless.ru/wiki/index.php?title=Файл:Putty_accept_key.png  Лицензия: неизвестно  Редакторы: Admin
Файл:Putty login.png  Источник: http://contactless.ru/wiki/index.php?title=Файл:Putty_login.png  Лицензия: неизвестно  Редакторы: Admin
Файл:Putty logged in.png  Источник: http://contactless.ru/wiki/index.php?title=Файл:Putty_logged_in.png  Лицензия: неизвестно  Редакторы: Admin
Файл:Windows sshfs.png  Источник: http://contactless.ru/wiki/index.php?title=Файл:Windows_sshfs.png  Лицензия: неизвестно  Редакторы: Admin
Файл:Cyberduck add connection.png  Источник: http://contactless.ru/wiki/index.php?title=Файл:Cyberduck_add_connection.png  Лицензия: неизвестно  Редакторы: Евгений Твёрдый
Файл:Sftp ubuntu.png  Источник: http://contactless.ru/wiki/index.php?title=Файл:Sftp_ubuntu.png  Лицензия: неизвестно  Редакторы: Admin
Файл:Ax.png  Источник: http://contactless.ru/wiki/index.php?title=Файл:Ax.png  Лицензия: неизвестно  Редакторы: Fizikdaos
Файл:Led.png  Источник: http://contactless.ru/wiki/index.php?title=Файл:Led.png  Лицензия: неизвестно  Редакторы: Fizikdaos
Файл:Relay.png  Источник: http://contactless.ru/wiki/index.php?title=Файл:Relay.png  Лицензия: неизвестно  Редакторы: Fizikdaos
Файл:Подлючение RS-485.jpeg  Источник: http://contactless.ru/wiki/index.php?title=Файл:Подлючение_RS-485.jpeg  Лицензия: неизвестно  Редакторы: Fizikdaos
Файл:Подлючение RS-485 к WB.jpeg  Источник: http://contactless.ru/wiki/index.php?title=Файл:Подлючение_RS-485_к_WB.jpeg  Лицензия: неизвестно  Редакторы: Fizikdaos
Файл:Перемычки.png  Источник: http://contactless.ru/wiki/index.php?title=Файл:Перемычки.png  Лицензия: неизвестно  Редакторы: Fizikdaos
Файл:Relay.jpg  Источник: http://contactless.ru/wiki/index.php?title=Файл:Relay.jpg  Лицензия: неизвестно  Редакторы: Fizikdaos
Файл:WB-MRM2-mini.jpeg  Источник: http://contactless.ru/wiki/index.php?title=Файл:WB-MRM2-mini.jpeg  Лицензия: неизвестно  Редакторы: Fizikdaos
Файл:Диммер.jpg  Источник: http://contactless.ru/wiki/index.php?title=Файл:Диммер.jpg  Лицензия: неизвестно  Редакторы: Fizikdaos

Вам также может понравиться