February 8, 2019

Хаб для умного дома на основе Z-Wave и Raspberry Pi

Если ты планируешь систему умного дома и хочешь с самого начала сделать все как можно лучше, то радиопротокол Z-Wave и серверный софт под названием Z-Way — это надежный и перспективный вариант. В этой статье я подробно расскажу о том, как сделать хаб своими руками на основе легкодоступного одноплатника Raspberry Pi, модуля RaZberry и бесплатного софта.

Существуют универсальные софтверные хабы, которые поддерживают множество устройств с разными протоколами, например openHUB, Home Assistant, Domoticz, ioBrocker. Поддержка Modbus, ZigBee, Z-Wave, 1-Wire и других протоколов обеспечивается с помощью открытых модулей сторонних разработчиков.

Это универсальный подход, однако в таком варианте страдает качество работы самих устройств: не все функции поддерживаются, бывает, что устройства работают некорректно или не работают вовсе. С контроллером Z-Way таких проблем не возникает.

Z-Way отличается тем, что поддерживает любые устройства с Z-Wave, но делает это на основе официальных стандартов. Другие протоколы добавляются с помощью модулей, написанных на C/C++, или приложений на JavaScript. Использование языка C/C++ позволяет писать быстрые кросс-платформенные программы, поэтому Z-Way может работать как на мощном сервере, так и на встраиваемой системе. Например, есть сборки для роутеров Zyxel и накопителей WD. Софт для разных платформ ты найдешь на сайте проекта.

Z-Way — ПО для умного дома:

Установка Z-Way на Raspberry Pi

Для работы Z-Way требуется плата RaZberry, устанавливаемая в колодку GPIO Raspberry Pi. Плата занимает первые десять пинов, но использует только следующие: 3,3 В, GND, RX, TX. Z-Way можно установить на любое поколение Raspberry Pi.

Существует несколько способов установки.

Минимальная установка. На последнем Raspbian скачиваем и ставим в систему пакет deb. При этом будет установлен только сервер Z-Wave без удаленного доступа.

$ wget https://storage.z-wave.me/z-way-server/z-way-2.3.8_armhf.deb
$ sudo dpkg -i z-way-2.3.8_armhf.deb

Обычная установка. На последнем Raspbian запускаем установочный скрипт. Будет установлен сервер Z-Wave и активирован удаленный доступ.

$ wget -q -O - razberry.z-wave.me/install | sudo bash

Максимальная установка. Есть готовый образ системы c уже установленным сервером Z-Wave, активированным удаленным доступом и настроенным Wi-Fi в режиме точки доступа. Это самый простой и быстрый способ поднять полноценный хаб умного дома на Raspberry Pi.

Вот как записать образ на карточку, если у тебя Mac.

$ wget https://storage.z-wave.me/z-way-server/razberry-2.3.8-wifi_stretch.img.zip
$ unzip razberry-2.3.8-wifi_stretch.img.zip
$ diskutil umount /dev/disk2s1
$ sudo dd if=./razberry-2.3.8-wifi_stretch.img of=/dev/rdisk2 bs=16m

В Linux различается разве что команда монтирования. Но если возникнут сложности или у тебя Windows, то можешь воспользоваться сторонним софтом — например, Etcher.

На свежеустановленном Z-Way нужно найти IP-адрес контроллера RaZberry в локальной сети. Можно посмотреть на роутере список подключенных устройств, а можно зайти на сайт удаленного доступа https://find.z-wave.me и увидеть подключенный контроллер. При первом старте предлагается установить пароль администратора.

Вверху отображается ID удаленного доступа:

Добавление беспроводных датчиков Z-Wave

После успешного запуска системы домашней автоматизации можно добавить пару датчиков Z-Wave и посмотреть, на что они способны. В моем распоряжении оказался датчик движения Philio PSP05, работающий от батарейки CR123A, и лампа RGBW Z-Wave.Me ZMR_LBA60 с цоколем E27.

Переходим на страницу добавления устройств Z-Wave: «Меню → Устройства → Z-Wave Добавить новое → Автоматически обнаружить Z-Wave-устройство». Нажимаем «Старт». На датчике движения в этот момент нужно нажать кнопку три раза подряд. При добавлении лампы нужно трижды выключить-включить выключатель.

После успешного добавления датчика и лампы на главной странице появится несколько виджетов устройств, можно использовать их при создании сценариев или просто управлять техникой с телефона. Лампа позволяет настроить любой цвет, цветовую температуру от теплого (2600 К) до холодного (6500 К) и плавно менять яркость. Датчик движения выполнен в форме и размере глаза, годится для скрытой установки и при каждом движении отправляет команду на контроллер.

Веб-интерфейс — это, конечно, удобно, но куда полезнее и интереснее смотреть лог в консоли.

$ tail -f /var/log/z-way-server.log

Лог показывает в реальном времени все данные радиообмена.

Добавление проводных датчиков температуры DS18B20

Z-Wave-плата RaZberry занимает только первые десять пинов GPIO. Оставшиеся тридцать можно использовать для подключения проводной периферии, такой как реле, светодиоды и датчики температуры.

Датчик температуры DS18B20 дешев и удобен в подключении, работает по шине 1-Wire на расстоянии до 300 м. К одному пину Raspberry Pi можно подключить несколько десятков датчиков, чего должно хватить для большинства бытовых нужд. По умолчанию для 1-Wire используется пин 4, но его перекрывает плата RaZberry, поэтому в конфиге нужно выбрать другой пин, например 24, и активировать работу с 1-Wire.

$ sudo su
$ echo "dtoverlay=w1-gpio,gpiopin=24" >> /boot/config.txt
$ echo "w1-gpio" >> /etc/modules/
$ echo "w1-therm" >> /etc/modules

INFO

Подключение датчиков стоит производить на выключенной Raspberry Pi, чтобы случайно что-нибудь не спалить.

Линию данных 1-Wire нужно подтянуть к питанию 5 В с помощью резистора на 4,7 Ом и далее можно подключить несколько датчиков температуры. Пины питания перекрыты платой RaZberry, но на самой плате есть дублирующие разъемы, поэтому с подключением не будет проблем.

Подключение датчика температуры DS18B20 к Raspberry Pi:

Чтобы проверить, что все настройки верны и датчики подключены правильно, нужно загрузить систему и выполнить команду

$ ls /sys/bus/w1/devices

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

$ cat /sys/bus/w1/devices/28-6f4580116461/w1_slave

Смотрим текущую температуру в терминале:

Осталось отобразить показания датчиков в панели домашней автоматизации Z-Way. Для этого создадим виртуальное устройство, которое раз в минуту будет считывать показания температуры.

Меню → Приложения → Локальные приложения → JavaScript-устройство:

Код опроса одного из датчиков:

$ system('cat /sys/bus/w1/devices/28-6f4580116461/w1_slave')[1].match(/t=([\-0-9]+)/)[1]/1000

INFO

Чтобы разрешить из системы автоматизации выполнять системные команды, нужно в файл /opt/z-way-server/automation/.syscommands добавить разрешенную команду cat.

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

Добавление проводных реле Arduino

Для Arduino и не только продаются недорогие модули с одним, двумя, пятью и более реле на борту. Модули управляются от 5 В и коммутируют 220 В, их можно использовать для управления освещением и бытовыми приборами типа насосов, проветривателей, вентиляторов. Подключив реле к Raspberry Pi, можно настроить сценарий, где беспроводной датчик включает свет. Схема подключения проста: модуль подключается к питанию 5 В и управляется с любого свободного пина. Для примера я выбрал 25-й пин.

Проверить работу реле можно из терминала следующими командами:

$ echo "25" > /sys/class/gpio/export
$ echo "out" > /sys/class/gpio/gpio25/direction
$ echo "1" > /sys/class/gpio/gpio25/value
$ echo "0" > /sys/class/gpio/gpio25/value

Чтобы добавить реле в систему автоматизации Z-Way, нужно создать виртуальное устройство: «Меню → Приложения → Локальные приложения → JavaScript-устройство».

Создание устройства:

INFO

Чтобы разрешить выполнять системные команды, нужно в файл /opt/z-way-server/automation/.syscommands добавить разрешенную команду echo.

Теперь можно управлять реле из веб-панели Z-Way:

При каждой перезагрузке потребуется инициализировать 25-й пин на выход, поэтому создадим загрузочный скрипт инициализации: «Меню → Приложения → Локальные приложения → Пользовательский код JavaScript».

Команды инициализации 25-го пина на выход:

$ system("echo '25' > /sys/class/gpio/export")
$ system("echo 'out' > /sys/class/gpio/gpio25/direction")

Настройка автоматизации

В Z-Way встроено более пятидесяти приложений автоматизации, и еще более ста можно загрузить из бесплатного онлайнового магазина.

И если вдруг из более чем 150 приложений не найдется ни одного подходящего, то всегда можно написать свое на JavaScript. Система автоматизации полностью открытая, исходники ты найдешь на GitHub.

Источник: xakep.ru