Jump to content
Sign in to follow this  
mr.save

Я покажу вам Z-Way. Делаем хаб для умного дома на основе Z-Wave и Raspberry Pi

Recommended Posts

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

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

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

z-way-title.thumb.jpg.86da0caa1985f638c1cc11b650604505.jpg

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

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

razberry.jpg.fb9741e49bf9decd60cbc752eea48927.jpg

Для работы 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 и увидеть подключенный контроллер. При первом старте предлагается установить пароль администратора.

find-first.thumb.jpg.54908847ea6346f672908a52739288cb.jpg

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

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

zw-dev.thumb.jpg.1c1620ea2a63917c5558d97a61d8a398.jpg

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

addzw.thumb.jpg.05ef6bcb1d6c462b70b2773e97b53f38.jpg

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

smarthome-zwdevices.thumb.jpg.b46d86dae64c40522a743f30a28a53b9.jpg

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

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

z-way-log.thumb.jpg.f1c092ed94075ea590d5f5c94db48ada.jpg

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

ds18b20.jpg.cd260e4fbdaf771b3257f0e5a87c5ba3.jpg

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

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

rpi-ds18b20.thumb.jpg.08effd730d8a7564370b656d8364951e.jpg

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

$ ls /sys/bus/w1/devices

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

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

ds18b20-terminal.thumb.jpg.c671522a869da90eef05c08737d12639.jpg

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

js-ds18b20.thumb.jpg.4c769e2618a8b0483d63d360bc50a3ee.jpg

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

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

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

tempsensors.thumb.jpg.376bc161b3b46acbd25f4851dd6ed658.jpg

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

relays.jpg.5e1f1892adffd8d5064bfcad17ed27c6.jpg

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

rpi-relay.thumb.jpg.6c81538d0c014ecedd8a695789139a23.jpg

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

$ 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-устройство».

relay.jpg.821155d22f2dbf512c3cbd5931aad256.jpg

Команда включить:

$ system("echo '1' > /sys/class/gpio/gpio25/value")

Команда выключить:

$ system("echo '0' > /sys/class/gpio/gpio25/value")

relaywidget.thumb.jpg.7a82dabde89b7ef009bed31d82a38568.jpg

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

gpioinit.thumb.jpg.f394cad58db48736af0281b9433f6d03.jpg

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

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

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

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

apps.thumb.jpg.37984200601bad96bbf0b265e31e3ff5.jpg

Есть приложение «Умное освещение», в настройках которого нужно только выбрать датчик движения и светодиодную лампу. Предположим, алгоритм работы будет следующий: с 7:00 до 00:00 лампа будет включаться на максимум, с 00:00 до 7:00 — только на 20%.

smartlight.thumb.jpg.2a2659f1b8d73a165a2303d18a551707.jpg

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

virtterm.thumb.jpg.185cdd161decb3eb5dc48158ef81be23.jpg

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

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...