Wiren board 6 запуск настройка

В данной статье освещаются сетевые аспекты профессиональной инсталляции контроллера на производственных и коммерческих объектах.

Содержание

Выбор сетевой комплектации контроллера

Контроллеры Wiren Board 6 поставляются с разным набором сетевых устройств. Необходимо понять, в каких условиях будет эксплуатироваться контроллер и какая комплектация будет оптимальной.

Минимальная комплектация

Контроллеры Wiren Board 6 в любой комплектации имеют два Ethernet-интерфейса 100 Мбит/с (eth0, eth1) на борту.

Расширенные возможности

Опционально контроллеры поставляются с Wi-Fi-интерфейсом (wlan0) (802.11bgn 2.4G), с 3G-модемом (WCDMA/HSPA, GSM/GPRS/EDGE) или 2G-модемом (GPRS). С помощью любого из них вы можете подключить контроллер к интернету, а с помощью Ethernet и Wi-Fi — еще и к локальной сети. 3G-модем реализован на чипе SIMCom SIM5300E, 2G-модем реализован на чипах SIMCom SIM800 или Neoway M660A, Wi-Fi — на чипе Realtek 8723BU.

Заводская конфигурация сетевых устройств

Ethernet

В заводской конфигурации в контроллере настроены оба Ethernet-интерфейса и Wi-Fi и loopback. Файл сетевых настроек — /etc/network/interfaces . Интерфейсы eth0/1 не имеют фиксированного адреса и получают сетвые настройки по DHCP.

На Wi-Fi интерфейсе wlan0 по умолчанию поднята открытая точка доступа, с фиксированным адресом 192.168.42.1, клиенты получают адреса по DHCP, которые раздает демон dnsmasq, в диапазоне 192.168.42.50 — 192.168.42.150 . SSID беспроводной сети контроллера формируется из префикса “WirenBoard-” и серийного номера контроллера, нанесенного на боковой наклейке. В беспроводной сети контроллер имеет не только IP-адрес, но и DNS-алиасы для удобства подключения, wiren , wiren.local , wiren_board , wirenboard.local , wirenboard .

Подключение к сети передачи данных сотовых операторов не включено по умолчанию и требует настройки. Контроллер имеет да разъема для установки СИМ-карт, но в настоящее время программно поддерживается только первый.

Опционально контроллер комплектуется 3G или 2G-модемами (модемы несъемные и распаиваются на плате на производстве).

3G-модем

Модем представлен в системе двумя устройствами: /dev/ttyGSM (линк на один из консольных портов ttymxc), подключенного к UART-интерфейсу чипа модема, и составного USB-устройства /dev/ttyACM0-6 , для коммуникации используется ttyACM0 . Ограничения UART-порта не позволяют реализовать весь потенциал скорости передачи данных в 3G-сетях (теоретически до 7,2 Мбит/с на приём и до 5,76 Мбит/с на передачу). Порт ttyACM0 ограничен только скоростью передачи данных интерфейса USB2.0 (теоретически — до 280 Мбит/с).

Наличие двух интерфейсов позволяет одновременно использовать первое устройство ( /dev/ttyGSM ) для отправки AT-команд (узнать уровень сигнала сотовой связи, отправить SMS, USSD-запрос баланса и проч.) через программы minicom или gammu, а второе ( /dev/ttyACM0 ) — для сетевой коммуникации.

В контроллере доступна аппаратное управление включением/выключением модема через его вход PWRKEY, состояние которого управляется одним из GPIO процессора. Для пользователя интерфейс управления питанием модема предоставляет команда wb-gsm с опциями on, off, reset, restart_if_broken.

2G-модем

Максимальная скорость передачи данных в GPRS составляет 85,6 кбит/с, чего явно недостаточно для передачи больших объемов данных. GPRD-канал может использоваться для доступа к интерфейсу командной строки (ssh) или для отправки SMS. 2G-модемы представлены в системе одним устройством, /dev/ttyGSM . Одновременная передача данных и AT-команд в 2G-модеме не реализована.

GSM-антенны

Контроллер опционально комплектуется одной из двух GSM-антенн: выносной, на кабеле 2,5м, с коэффициентом усиления 3,5 дБ, или короткой штыревой антенной, навинчивающейся прямо на SMA(female)-разъем контроллера. При монтаже контроллера в металлических боксах следует использовать выносную антенну. Штатные антенны контроллера обеспечивают связь в условиях хорошего приема. В сложных радиоусловиях необходимо приобретать антенны с бóльшим коэффициентом усиления или направленные антенны. Диапазон частот 3G-антенн — 1900-2100 МГц, 2G — 900/1800 МГц. Разъем кабеля антенны — SMA(male).

Настройка сетевых интерфейсов

Настройка Ethernet-интерфейсов

Часто возникает необходимость, чтобы контроллер имел постоянный адрес в локальной сети. Это достигается либо настройками DНCP-сервера (привязкой IP-адреса к MAC-адресу сетевого интерфейса контроллера), либо явным указанием IP-адреса в сетевых настройках.

Рассмотрим более подробно, как задать фиксированный адрес на Ethernet-интерфейсе.

Для настроек статического адреса задайте следующую конфигурацию:

По умолчанию, если адрес статический, используются DNS-сервера, перечисленные в файле /etc/resolv.conf , символическая сcылка на /mnt/data/etc/resolv.conf .

Можете добавлять свои DNS-сервера по аналогии:

Эти сервера использует сервис dnsmasq, который обслуживает локальные DNS-запросы на контроллере. Чтобы понять, какие именно upstream-сервера используются dnsmasq в настоящий момент, выполните команды

Программа dnsmasq выведет в консоль, какие сервера используются, например:

Настройка Wi-Fi

Параметры точки доступа определяет демон hostapd (файл настроек /etc/hostapd.conf ). Чтобы подключаться к контроллеру по Wi-Fi по защищенному каналу, допишите в конец файла /etc/hostapd.conf следующую конфигурацию:

Перезапустите hostapd: /etc/init.d/hostapd restart , после чего подключение к контроллеру по Wi-Fi будет возможно только с паролем your_password.

Пример настройки Wi_Fi адаптера для подключения к локальной сети можно найти в нашей wiki.

Настройка PPP

На контроллере предустановлен демон pppd, который используется для создания подключения к сети провайдера через 3G/2G-модем. Демон pppd создает при подключении сетевой интерфейс ppp (ppp0 по умолчанию). В заводской конфигурации настройки порта ppp0 закомментированы, и установления соединения с провайдером сотовой связи не происходит. В нашей Wiki мы рекомендуем использовать следующие настройки для интерфейса ppp0 в файле /etc/network/interfaces :

Даже если модем находится в зависшем или отключенном состояниии, команда pre-up wb-gsm restart_if_broken перед началом установления соединения перезагрузит его и модем будет гарантированно доступен. Десятисекундной задержки ( pre-up sleep 10 ) перед установлением соединения обычно хватает, чтобы сетевое соединение установилось с первого раза.

Строка provider заставляет pppd искать файл настроек для конкретного провайдера в директории /etc/ppp/peers , в нашем случае это файл /etc/ppp/peers/mts . В целях совместимости в качестве устройства модема в заводской настройке в этом файле указано использовать устройство /dev/ttyGSM . Если на вашем контроллере установлен 3G-модем, замените это устройство его на более быстрое /dev/ttyACM0 .

Чтобы при обрыве соединения контроллер не прекращал бы попытки установить связь, в файле настроек провайдера /etc/ppp/peers/ должны быть раскомментированы опции

Параметры протокола пакетной передачи данных и номера для соединения для каждого провайдера хранятся в директории /etc/chatscripts. В большинстве случаев ничего менять в этих файлах не придется.

PPP — основной и резервный выход в интернет

Проще всего обеспечить выход в интернет, если ppp0 — единственный WAN-интерфейс. Интерфейс ppp0 настраивается, как это написано выше, и затем, командой ifup ppp0 , устанавливается подключение к интернету через сеть сотового оператора.

Сложности начинаются, когда контроллер подключен к Ethernet и имеет шлюз по умолчанию в одной сети, а также подключается к сети сотовой передачи данных.

В такой конфигурации мы сталкиваемся со следующей особенностью: протокол PPP обеспечивает соединение точка-точка и не предполагает шлюза по умолчанию.

В случае подключения по PPP, когда ни одного шлюза по умолчанию нет (например, мы не подключили Ethernet-кабель), pppd в качестве шлюза по умолчанию добавит в таблицу маршрутизации в системе IP-адрес ppp-партнера. Если шлюз по умолчанию уже задан, то в таблицу маршрутизации новый шлюз по умолчанию не добавляется. И тогда при падении основного Ethernet-канала выход в интернет теряется, несмотря на активное соединение. В этом случае необходимо добавить второй шлюз по умолчанию через интерфейс ppp0. Метрика любого нового шлюза должна отличаться от метрик имеющихся, поэтому мы явно указываем метрику при создании нового шлюза по умолчанию.

Для обеспечения отказоустойчивого соединения мы должны предусмотреть любой порядок поднятия и падения интерфейсов. Задача — обеспечить связь независимо от порядка поднятия интерфейсов и переключение при падении одного из них.

Для интерфейса eth0, который мы будем считать основным для выхода в интернет, создается шлюз по умолчанию с метрикой 0 в таблице маршрутизации. Зададим для шлюза по умолчанию через интерфейс ppp0 метрику 100 (или любой, отличной от 0). Для выполнения команд после инициализации любого ppp-интерфейса pppd демон использует директорию /etc/ppp/ip-up.d . В качестве параметров командной строки скрипту передается и имя ppp-интерфейса (в нашем случае такой интерфейс один — это ppp0).

Создадим скрипт add_routes в директории /etc/ppp/ip-up.d и сделаем его исполняемым ( chmod +x /etc/ppp/ip-up.d/add_routes ):

Первая команда удаляет шлюз по умолчанию, на случай, если он был создан с метрикой 0. Вторая — добавляет шлюз по умолчанию с метрикой 100 для интерфейса ppp0. Таким образом мы имеем два шлюза по умолчанию с разными метриками:

При падении одного из их трафик будет передаваться через другой и наоборот. Запустим ping 8.8.8.8, а затем вынем и вставим вилку RJ-45:

Читайте также:  Как открыть изображение heic

Как показал опыт, иногда возникает проблема с доступностью DNS-серверов провайдера. Для всех соединений прописываем общедоступные сервера Google и OpenDNS.

eth0: Из файла /etc/dhcp/dhclient.conf из параметра request удаляем параметр domain-name-servers , а после параметра request указываем открытые DNS-сервера Google и OpenDNS:

ppp0: В директории /etc/ppp/ip-up.d создаем скрипт (и даем ему права на выполнение), который добавит DNS-сервера Google и OpenDNS в файл resolv.conf при поднятии интерфейса.

Для удаленного доступа к контроллеру будем использовать OpenVPN. Предполагается, что сервер уже есть и настроен, необходимо установить и настроить клиент на контроллере.

Чтобы обеспечить большую надежность, на сервере с 2 IP-адресами запускается два серверных процесса, один из которых слушает на порту 1194 TCP на IP1, а второй — на порту 1194 UDP на IP2. (Это не обязательно, вы можете использовать один серверный процесс).

На контроллере мы поднимаем 2 OpenVPN-клиента и явно задаем маршрут для IP2 через интерфейс ppp0 для одного из них.

Установка OpenVPN — стандартная, с использованием open-rsa .

Для этого на контроллере устанавливаем openvpn и easy-rsa :

Копируем сертификат удостоверяющего центра ca.crt на контроллер в директорию /etc/openvpn/easy-rsa/keys

В директории /etc/openvpn/easy-rsa создаем поддиректорию keys :

Создаем запрос на подписывание сертификата (с именем, соответствующим серийному номеру контроллера, в данном случае A7ZO7UCC):

Копируем полученный запрос A7ZO7UCC.csr на сервер в произвольную директорию и подписываем его.

Подписанный сертификат A7ZO7UCC.crt копируем на контроллер в директорию /etc/openvpn/easy-rsa/keys .

На сервере в конфигурационном файле ( /etc/vpn/server.conf ) смотрим, какой файл соответствия клиент-адрес указан в параметре ifconfig-pool-persists и в этот файл добавляем адрес для клиента-контроллера из диапазона сетевых адресов, описанного в параметре server конфигурационного файла.

Добавляем строку A7ZO7UCC,10.8.0.48

Для второго экземпляра сервера такую же операцию выполняем с его конфигурационными файлами, IP-адреса должны различаться, например, добавляем запись A7ZO7UCC,10.9.0.48

Конфигурационные файлы для клиента на контроллере для двух соединений будем хранить в файлах /etc/openvpn/client.conf и /etc/openvpn/client1.conf .

Содержимое файла настройки клиента:

В файле конфигурации второго vpn-подключения сlient1.conf замените proto udp на proto tcp и укажите второй IP-адрес сервера в параметре remote .

Автозагрузка сервиса OpenVPN на контроллере включается командой:

Проверяем доступность сервера ping 10.8.0.1

AutoSSH

Еще одно резервное подключение к контроллеру сделаем на основе AutoSSH . Механизм работы таков: с контроллера устанавливается ssh-соединение к серверу, при этом ssh-порт контроллера пробрасывается на один из свободных портов на localhost сервера. Сервис аutossh следит за тем, что ssh-соединение не разорвано, и в случае разрыва восстанавливает его. Восстановление происходит не мгновенно — какое-то время порт, используемый на localhost сервера удерживается демоном sshd .

Устанавливаем на контроллере apt-get install autossh . Генерируем пару ключей для пользователя root :

Для обслуживания удаленных подключений создаем пользователя remote на сервере с оболочкой /bin/false :

В файл /home/remote/.ssh/authorized_keys на сервере добавляем созданный на контроллере ключ /root/.ssh/id_rsa.pub с преамбулой

что обеспечит дополнительную безопасность сервера при подключении контроллера. Порт 62001 — порт localhost-сервера, на который будет перенаправлен ssh-порт данного контроллера.

Первый раз подключаемся с контроллера на сервер вручную:

На контроллере создаем файл etcsystemdsystemautossh.service для запуска autossh в качестве сервиса:

Включаем сервис а автозагрузку на контроллере:

После запуска сервиса мы можем подключиться к контроллеру на сервере с помощью команды

Передача данных с контроллера в облако

Для передачи MQTT-сообщений с контроллера в облачный сервис используется MQTT-бридж, конфигурация которого настраивается на контроллере в файле mntdataetcmosquittoconf.dridge.conf

Затем выполните команду

Если вы хотите передавать данные на несколько серверов одновременно, создайте несколько разделов connection .

Возможные неполадки GPRS-соединения

Возможных причин отсутствия GPRS-подключения может быть несколько.

  • Закончился оплаченный лимит трафика.
  • Низкий уровень сигнала, плохой контакт антенны.
  • СИМ-карты некоторых операторов рассчитаны только на 4G-сети, 3G-подключение установить с ними не получится.
  • Проверьте, правильно ли вставлена СИМ-карта в слот.
  • Возможно, СИМ-карта нерабочая.
  • Ваш тарифный план не предусматривает пакетную передачу данных.

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

Важно, что контроллер подключен к пакетной сети передачи данных и GPRS-соединение установлено.

После этого оцените уровень сигнала в minicom командой AT+CSQ Вы получите результат в виде 13,99

Первая цифра показывает мощность сигнала: > 9 — удовлетворительный, > 14 — хороший, > 19 — отличный. Низкие и нестабильные значения CSQ означают, что антенна плохо расположена, неаккуратно подключена, радиообстановка неблагоприятная.

Если обе проверки пройдены, но связи нет, обратитесь к провайдеру (загляните в личный кабинет), можете проверить СИМ-карту в смартфоне.

Итак, купив с десяток силовых блоков и выключателей nooLite, я привязал их друг к другу и расставил как положено. В принципе, желание сделать управление некоторыми из ламп из нескольких мест, а также посегментное включение света даже там, где проложена только одна пара проводов, это удовлетворило. Но не во всём было удобно.

  1. Любое изменение конфигурации системы (добавление пульта или изменение функции одной из кнопок уже установленного) требует доставать стремянку, снимать люстру и привязывать/отвязывать выключатель от её силового блока. Требуется редко, но очень уж геморройно.
  2. Сценарные кнопки на выключателях умеют делают только одно действие — например, выключить все сегменты в люстре одним нажатием. А вот включать их уже надо обычными кнопками, двумя нажатиями.
  3. Расход кнопок на люстру с двумя сегментами — минимум две штуки (по одной на каждый сегмент), при этом управление ей неудобно — чтобы выключить люстру, например, надо посмотреть, какой сегмент включён, и нажать соответствующую ему кнопку. Ну или отвести под одну люстру все три кнопки (сценарную на «выключить всё»), но и это упрощает лишь одну операцию.

Все эти проблемы решаются тем, что у «Ноотехники» есть USB-адаптеры с приёмниками и передатчиками. К ним точно так же привязываются пульты и силовые блоки, а с компом адаптер общается как HID-устройство с очень простой системой команд. Соответственно, при виде этого возникла разумная идея воткнуть оба адаптера в домашний сервер (у меня есть) или просто роутер (тоже есть парочка) и сделать всё управление светом через этот сервер. Тогда силовые блоки привязываются к каналам передатчика один раз перед установкой на своё место, привязать выключатель к приёмнику несложно, а соответствие между каналами приёмника и передатчика задаётся программно. Бонусом появляется возможность сделать веб-интерфейс и мобильное приложение.

Кстати, если роутера нет — можно купить мини-компьютер Wiren Board Smart Home, в котором уже есть приёмник и передатчик 433,92 МГц, а производитель обещает драйверы с поддержкой протокола nooLite. Плюс — это будет одна коробка с горой интерфейсов «умного дома», минус — если вам нужен только nooLite, то два родных адаптера и дешёвый роутер (популярнейший TL-MR3020 подойдёт) выйдут дешевле. Кроме того, очевидно, под драйверы Wiren весь софт, про который я скажу ниже, придётся переделывать.

  1. Программную настройку всех выключателей в доме (через веб-интерфейс).
  2. Управление несколькими лампами с помощью одной кнопки выключателя по различным сценариям.
  3. Отдельные события на длинное и короткое нажатия кнопок.
  4. Веб-интерфейс и мобильное приложение.

Например, двухсекционной люстрой в комнате управляет одна кнопка. Короткие нажатия — последовательное включение секций (если все включены, то при очередном нажатии все гаснут), длинное — включить все секции сразу, если ни одна не включена, иначе выключить все включённые. Это удобно и это невозможно реализовать с ноолайтом в его оригинальной конфигурации, без сервера.

Сразу предупреждаю: сделаны те и только те вещи, которые были нужны мне. Например, нет поддержки RGB-лент и диммеров — у меня их нет. Надо — добавляйте сами или ждите, что может я когда-нибудь. Работает с передатчиком PC1116 (но нет причине не работать с другими моделями) и приёмником RX1164 (но нет причин не работать с более новым RX2164) на обычном ПК под CentOS 6 (мой домашний сервер) и на роутере TP-Link TL-WDR4300 под OpenWRT Attitude Adjustment (но нет причине не работать с традиционным для самоделок дешёвым TL-MR3020).

Описывать по той же причине буду кратко, так что если кто не знает, что такое autoconf и opkg — извините. Инструкция «сделать умный дом для дураков» тут возможна и даже не очень длинна, но цель моя сейчас не в этом.

Теоретически, сайт «Ноотехники» ссылается на сторонние драйверы под Linux (под Windows есть родная управляющая программа), поддерживающие ноолайтовские адаптеры; их наличие и вдохновило мня купить пару адаптеров. Практически же эти драйверы — не более чем демонстрация того, что адаптер вообще работает. Пользоваться ими в реальной жизни не рекомендуется, потому как ад мглы внутри простирается от намертво зашитой в сишный код команды, вызываемой при приходе данных от приёмника, до попросту перепутанных кодов команд в программе конфигурации приёмника.

Читайте также:  Что такое ключ реестра

В общем, дальше из шкафа была вытащена УШМ и произведена лёгкая доработка кода.

1. Код упорядочен и собирается не без помощи autoconf/automake.

Ну это понятно, обычное удобство.

2. У всех утилит упорядочены параметры командной строки.

Потому что я не знаю, что двигало человеком, придумавшим синтаксис «–on_ch номер_канала» вместо просто «–on номер_канала». Ну и банальных ошибок и шероховатостей хватало, типа необходимости передавать номер канала в команду, для выполнения которой номер канала не нужен.

3. Исправлены горы найденных ошибок и шероховатостей.

Разных. От ошмётков виндового кода до того, что в утилите конфигурации приёмника номер команды превратился в номер бита в байте команды. Оно в принципе даже отчасти работало, вот только команда очистки привязки одного канала стирала всю конфигурацию всех каналов.

4. У утилиты приёмника добавлен конфигурационный файл.

В котором можно не только прописать, в какой команду передаются данные из приёмника, но и указать, какие собственно данные это будут (раньше всё вываливалось просто побайтно).

5. Утилита приёмника теперь может работать в фоне — демоном.

Очевидная вещь. Консоль ему нужна только при отладке.

6. Для передатчика написан свой демон, данные которому передаются через сокет всеми желающими.

В принципе, можно каждый раз при необходимости что-то передать вызывать консольную программу, но это приводит к трём проблемам. Во-первых, такой вызов не очень быстрый, во-вторых, программа хочет работать из-под рута (у неё иначе доступа к USB нет), в-третьих, если в передатчик запихнуть две команды с интервалом менее 400 мс, одну из них он не переварит. Демон живёт под рутом изначально, обращаться к нему может любой желающий через сокет, времени на запуск и инициализацию USB’шного барахла при каждом обращении не тратится, интервал между командами он отслеживает внутри себя сам.

7. Информация о работе сыпется в syslog.

Очевидная вещь. Какая команда пришла, какая ушла, предупреждения, если пришла команда с номер канала, который не сконфигурирован, и т.п.

Поехали!

Весь код лежит на GitHub’е. Предыдущие авторы условий лицензирования не указывали, так что, полагаю, лицензия WTFPL. Сборка — как обычно, ./configure && make && make install. В каталоге openwrt лежит Makefile для сборки под, как вы уже догадались, OpenWRT, а также скрипт запуска демонов для /etc/init.d. В каталоге initd лежит скрипт запуска демона приёмника для CentOS 6 (и аналогичных систем).

Ну и в doc лежит README, читайте его, там всё сказано (плюс нижеперечисленные команды с параметром –help выдают краткую справку о себе).

  • noolitepc — консольный передатчик. В общем, нужен, только если хочется что-то руками проверить (включить-выключить определённый канал).
  • noolitepcd — демон передатчика. Используется в повседневной жизни, общение через сокет /tmp/noolitepcd.sock.
  • nooliterx — консольный приёмник. Полезен в вариантах nooliterx –i (игнорирует конфигурационный файл, валит в консоль всё принятое — полезно для проверки привязки выключателей, кодов команд и т.п.) и nooliterx –d (уходит в демоны для использования в повседневной жизни).
  • nooliterxcfg — конфигурация приёмника, привязка-отвязка пультов к его каналам.

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

Такая прослойка живёт на GitHub рядом, работает в веб-сервере и написана преимущественно на PHP. PHP и веб-сервер вместо C и компилятора очень удобны тем, что внутренности можно править прямо на лету.

Конфигурация демона приёмника такова:

# cat /etc/noolite.conf
# noolite config file
command = wget -q -T 5 "http://localhost/lampcontrol.php?channel=%ch&command=%cm" -O /dev/null &

То есть, поймав что-то от любого привязанного к нему пульта, демон-приёмник вызывает wget, загружающий lampcontrol.php и передающий ему номера канала и команды, полученные от пульта. Соответственно, в lampcontrol.php содержится вся логика, определяющая, что именно делать с этими ценными сведениями.

За указаниями lampcontrol.php лезет в XML-файл switch.xml, имеющий формат:

Что мы тут видим? Что если пришла команда с кодом 4 (это короткое нажатие кнопки выключателя, коды команд есть в руководствах по RX1164 и RX2164), то надо изменить состояние (toggle) ламп, привязанных к каналам 1 и 2 передатчика. Если были включены — выключить, если выключены — включить.

Результат каждого изменения состояния лампы сервер пишет в ДБ sqlite3 — lamps.db — поэтому всегда знает, какая лампа что делает. Это даёт возможность как делать многошаговые алгоритмы, так и просто показывать на веб-интерфейсе текущее состояние ламп. Так как обратно связи от силовых блоков нет, сервер может ошибаться относительно состояния отдельной лампы (команда из-за помех не дошла до силового блока), но при минимально аккуратном размещении антенн это случается редко.

Создаётся база один раз (с помощью create-db.php) перед первым взлётом всей системы. База может порушиться при внезапном выключении роутера, т.к. для неё включена асинхронная запись в файл и расположение журнала в памяти — чтобы не сказывалась неторопливость роутерного флэша; в таком случае надо файл прибить и создать заново, благо ничего особо ценного в нём нет (только текущий статус каждой из 64 возможных ламп). Если вам надежность критична — закомментируйте в lampcontrol.php строчку $db->exec("PRAGMA journal_mode=MEMORY;"); , это положит журнал на диск. Включать синхронную запись (соседняя строчка) не советую, будет очень-очень медленно.

    >Далее идёт перечисление ламп, на которые распространяется данная команда; параметр у каждой лампы один — «channel», номер канала передатчика, к которому привязан соответствующий силовой блок. Исключением является mode=«alloff» — в этом режиме список ламп не нужен вообще, выключаются все включённые лампы в доме.

Можно делать вот так, например:

Здесь по короткому нажатию кнопки последовательно включаются два сегмента люстры (цикл выключено — включена лампа 2 — включены лампы 2 и 3 — выключено), а по длинному — люстра либо полностью зажигается (если не горела ни одна лампа), либо полностью гаснет (если горела хотя бы одна). Третий блок как раз отрабатывает команду, приходящую при отпускании кнопки после длинного нажатия; можно прописать в первом блоке параметр command=«4», тогда третий блок был бы не нужен — команду 10 в таком случае всё равно никто не отработает.

Веб-интерфейс лежит в файле index.php и выводит либо план квартиры (в данном случае нарисованный в Sweet Home 3D), если его открывают с планшета или ПК, либо перечень кнопок, если открывают с мобильника. Расположение ламп на плане квартиры и их названия берутся из файла lamps.xml

Здесь описаны две секции освещения в ванной — их силовые блоки привязаны к каналам 2 и 3 передатчика, на плане квартиры они расположены в точка <174; 238>и <194; 238>пикселей, кнопки включения и выключения надо нарисовать слева от первой и справа от второй лампы. Параметр «position» не обязателен — если он не указан, кнопки рисуются справа.

Чтобы не править XML-файлы руками, ходя на сервер по SSH — к веб-интерфейсу прикручена простая админка, внутри которой живёт редактор XML на JavaScript. Она на данный момент практически никак не заточена под конкретную задачу, так что всё в ней всё равно пишется руками. Пароль для входа задаётся непосредственно в файле admin/index.php в первом if’е (по умолчанию admin/admin).

На роутере для работы всего этого добра нужны libusb-1.0, lighttpd, lighttpd-mod-cgi, php5, php5-cgi, php5-mod-simplexml, php5-mod-xml, php5-mod-sqlite3. С учётом, что на этом же роутере у меня крутится ещё и аудиосервер (mpd), его собственного флэша не хватает категорически — поэтому в него воткнута флэшка и настроен overlay, так что все новые пакеты устанавливаются на флэшку. Так как в роутере всего два USB-порта, в него воткнут приличный хаб, в котором уже стоят флэшка, приёмник и передатчик:

Как нетрудно заметить, приёмник и передатчик выглядят, мягко говоря, не совсем так, как на сайте «Ноотехники». Дело в том, что у них, как и у силовых блоков, антенны сделаны из мягкого многожильного провода — а для обеспечения максимальной стабильности связи антенна должна быть прямой, жёсткой и вертикальной (ибо диаграмма направленности — максимум усиления в перпендикулярной антенне плоскости). Поэтому я разобрал родные корпуса, поменял антенны на 170 мм (четверть длины волны) жёсткого провода (сойдёт одна жила обычного электромонтажного провода сечением 1,5—2,5 мм²) и упаковал всё в термоусадку. В качестве флэшки — SanDisk Cruzer Fit 8 ГБ, маленький, незаметный и при этом выдающий весьма пристойную скорость даже на работе с маленькими блоками.

Между нажатием кнопки выключателя и собственно включением света, разумеется, есть задержка — пока всё это пролетит по системе. Но задержка небольшая, меньше задержки включения типичных энергосберегающих ламп.

Читайте также:  Kak sozdat zagruzochnuyu fleshku

Естественно, выпускать роутер в интернет не советую — по крайней мере, пока вы не сделаете авторизацию при заходе на управление вашим светом снаружи.

Кажется, всё рассказал.

Напишу ли руководство «установка умного дома nooLite на TP-Link MR3020 для чайников» — ХЗ. Сделает ли «Ноотехника» из бессмысленного Ethernet-шлюза такой сервер — тем более ХЗ.

Что удобного можно сделать в конкретной квартире:

  • Управление одной лампой из нескольких мест: например, выключать люстру у входа в комнату и у изголовья кровати, включать свет на кухне собственно с кухни и из начала коридора, к ней ведущего.
  • Раздельное управление сегментами в любой люстре, вплоть до отдельного управления хоть каждой лампочкой — и всё это одной кнопкой пульта.
  • Отдельные «взрослые» выключатели на стене высоко и «детские» с управлением только частью ламп на стене низко.
  • Кнопка «выключить всё» на выходе из квартиры.
  • Кнопка «выключить весь свет в кухне-ванной-сортире-прихожей» на пультах в комнатах.
  • Ну и само собой, в качестве нагрузки могут выступать не только лампы, а вообще что угодно, втыкающееся в розетку.

О компании Wiren Board

Wiren Board — российская компания, которая с 2012 года разрабатывает и производит электронику для автоматизации и мониторинга.

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

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

Мы производим десятки тысяч высокотехнологичных устройств в год. Чтобы поддерживать высокое качество нашей продукции, мы самостоятельно выполняем все основные этапы производственного процесса, включая поставку компонентов, тестирование и окончательную сборку. Каждое выпускаемое нами устройство проходит тщательное тестирование с использованием современного автоматизированного испытательного оборудования. Все оборудование производится на заводе в России.

Надёжные контроллеры Wiren Board применяются в задачах мониторинга серверного и климатического оборудования, диспетчеризации и сбора данных с приборов учёта, в качестве основы для «умного дома». Контроллеры могут работать в составе облачной платформы «WB Cloud».

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

О контроллере Wiren Board

По сути это законченное устройство готовое к применению, купилвключилработает. Это контроллер, на котором можно полноценно автоматизировать умный дом начиная от управления, автоматизации и мониторинга состояния и заканчивая. тут всё упирается только в Вашу фантазию. Если провести аналогии — это Raspberry PI для взрослых, которой прокачали возможности и отказоустойчивость.

Но всё ли так хорошо ? — Конечно НЕТ, эта железка ни разу не Apple Way, то есть ваши любимые SSH, конфиги, репозитарии всё это тут, но не переживайте, мы постараемся Вас максимально от этого оградить и помочь в настройке.

Wiren Board 6

Базовый функционал

Контроллер модульный, а это значит у него ОЧЕНЬ много опций. Давайте разберёмся, что мы получаем в базовом функционале за 13 850 ₽:

  • 4 варианта подачи питания (Штатный разъем подключения блока питания, клеммы для подключения блока питания, 2 разъема Passive PoE)
  • 2 Ethernet порта для подключения витой пары в качестве основного или резервного источника связи
  • Температурный режим работы контроллера в среде от 0 до +75 градусов
  • Поддержку большого количества проводных протоколов (2 × RS-485, 1 × CAN, 2 × 1-Wire/дискретные входы, 4 × дискретные/аналоговые входы/выходы «открытый коллектор»)
  • Debian в качестве операционной системы на борту
  • Огромную базу модулей, расширяющих возможности контроллера
  • Корпус, имеющий крепление на DIN рейку
  • Два USB порта для подключения флешек, USB стиков ZigBee и Z-wave, да и в целом любую периферию.
  • Поддержка производства комплектующих модуля на ближайшие 5 лет минимум.

Даже на одном голом контроллере уже можно много, что автоматизировать. Но об этом я расскажу позже 😉

Дополнительный функционал

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

  • 2 разъема под сим карты для 2G/3G GSM модема (650 ₽ — 2 250 ₽)
  • Подключение к роутеру по WiFi + Bluetooth модуль (600 ₽)
  • Температурный режим работы контроллера в среде от -40 до +75 градусов (1 000 ₽)
  • Плата взаимодействия с оборудованием по протоколу KNX (5 000 ₽)
  • Аккумулятор, выполняющий роль ИБП как для контроллера, так и для подключенной к нему периферии (2 200 ₽)
  • GPS Модуль для определения координат контроллера (1 900 ₽)
  • Дополнительный порт RS-485 (1 200 ₽)
  • И многое другое

Лицензию на Z-Wave включать нет необходимости, она по сути не нужна. Также нельзя забывать, что дополнительно можно подрубить любое проводное и беспроводное китайское, корейское, японское и прочее железо, которое может работать по совместимым протоколам.

Собственные модули Wiren Board

Модули делятся на два вида: стыкируемые (i2c) и проводные (ModBus)

Cтыкируемые (i2c) — если упростить, это максимальная простота инсталляции и каждый модуль становится одним целым с контроллером, при этом достигается максимальная скорость работы. Тут вы можете ознакомиться с полным перечнем оборудования.

Проводные (ModBus) — один из проприетарных стандартов пришедших из промавтоматизации во всей красе, это прям стандартные провода со всеми своими плюсами и минусами . Тут вы можете ознакомиться с полным перечнем оборудования .

Ну и в общем, как это выглядит в установленном виде на примере моей инсталяции:

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

И самое интересное, как это использовать?

На самом деле тут огромная туча вариантов. Вы можете взять себе модуль реле для управления глупыми лампочками и управлять ими напрямую из Вайрона (на их модулях реле есть сухие контакты под выключатели). Можете управлять этими же лампочками через сторонние радиовыключатели. А еще можно по MQTT забирать состояние через любой другой контроллер Умного дома, который поддерживает эту технологию, и управлять оттуда. Приобретаем модуль ввода вывода, подключаем к нему любые проводные глупые выключатели и вот, мы уже управляем любыми другими устройствами, подключенными к Вашему контроллеру, получая сигнал о нажатии кнопки на Wiren Board. Вы можете настроить с помощью него практически всё, что угодно. Управление светом, отоплением, ИК-техникой, снятие показаний со счетчиков, получение информации о температуре, влажности, CO2, качестве воздуха и многое другое.

Подведем итоги

Компания, как и ее устройства зарекомендовали себя исключительно с положительной стороны. Об этом говорит не только их опыт в интеграции на промышленных объектах, но и отзывы людей. По своему опыту могу это только подтвердить.

Относительная простота подключения I2C модулей и крепление, которое позволяет разместить контроллер и его допы в электрощитке. А также большое количество самых разнообразных модулей. Контроллеры базируются на ОС Linux с открытым исходным кодом, а разрабатываемые устройства имеют протоколы взаимодействия I2C и Modbus. Ребята еще на этапе изготовления и сборки оборудования собственноручно тестируют каждый элемент для поддержания качества своего продукта. Все это — несомненные плюсы, которые надо учитывать при выборе.

Но не будем забывать и о небольшой ложке дегтя. На данный момент я выявил у производителя следующие минусы, которые могут Вас смутить:

  • Неочевидная и запутанная в некоторых местах WiKi по устройствам
  • Сложность выбора нужного именно Вам под Ваши запросы железа на сайте производителя
  • Недружественный родной веб интерфейс контроллера и как вывод из этого сложная первоначальная настройка оборудования
  • Даже для начальной настройки и простых задач порой приходится лезть в SSH
  • I2C хорош своей простотой, но есть небольшие нюансы с электронаводками
  • Modbus подразумевает, что проводов будет много, а также дополнительно можно столкнуться с проблемами тонкого конфигурирования сети.

Напоминаю, что это обзорная статья, чтобы познакомиться с системой и дальше я постараюсь расписать Вам на своем опыте, с какими трудностями столкнулся и как их решал. Как Вы поняли, это будет цикл статей по Wiren Board. В них мы рассмотрим все тонкости, от подключения датчиков и плат расширения до настройки WiFi на самом устройстве. А также на простых примерах я покажу, как можно настроить управление светом или получить уровень CO2 в Вашей комнате.