Хаб для умного дома на основе 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