Подключить все! Делаем экстремально дешевый хаб для устройств ZigBee и Z-Wave

0
50

Содержание статьи

Начав конструировать умный дом, сложно бывает остановиться на продукции одного производителя. А это значит, что тебя ждет зоопарк стандартов, которые сложно увязать друг с другом, и рядок хабов, каждый из которых занимает розетку (и место в твоей жизни). Нельзя ли сделать универсальный способ управления умными устройствами, которые работают по ZigBee и Z-Wave? Можно! И не придется даже покупать контроллер ZigBee за 50 долларов.

Поводом для того, чтобы смешать дома умные устройства разных производителей, может быть желание сэкономить, выбирая наиболее выгодные варианты, или наоборот — стремление взять все самое лучшее. Но чаще всего ответ более прозаичный: «так вышло». Сначала ты покупаешь лампочки и датчики движения Philips, а потом обнаруживаешь, что, к примеру, умных розеток эта компания не делает вовсе, а тебе позарез нужна одна из них.

Опять же, если ты выбрал Xiaomi (а предложение этой компании — одно из самых выгодных), то тебя ждет хаб с китайским софтом, подключенный к фирменному сервису. С точки зрения безопасности — далеко не самый лучший вариант.

В этой статье я покажу, как сконструировать универсальный хаб на основе Raspberry Pi Zero W и экстремально дешевого контроллера. А поможет мне в этом программа под названием zigbee-shepherd. Она поддерживает множество устройств ZigBee, в том числе и выключатели Xiaomi на батарейках серии Aqara, и позволяет писать скрипты на JavaScript.

Выбираем и прошиваем железо

Сначала нужно определиться, на каком железе собирать хаб. В принципе, ты можешь взять что угодно (хоть свой основной компьютер, если ты его не выключаешь), но Raspberry Pi Zero W — это сверхкомпактный, дешевый и достаточно производительный вариант.

Микрокомпьютер Raspberry Pi Zero WМикрокомпьютер Raspberry Pi Zero W

Zigbee-shepherd совместим с чипами ZigBee производства Texas Instrument CC2530 и CC2531. У TI есть референсный USB-стик CC2531 USB Evaluation Module Kit за 49 долларов, но есть и полная документация и схемы по сборке такого стика, поэтому будет несложно найти в Поднебесной такой же стик, но за 7 долларов.

Фирменный стик Texas Instrument на чипе CC2531Фирменный стик Texas Instrument на чипе CC2531

Для работы стика с zigbee-shepherd потребуется файл прошивки с GitHub, а чтобы ее зашить, понадобится программатор CC Debugger за 49 долларов или его китайская копия за 12.

Texas Instrument CC DebuggerTexas Instrument CC Debugger

Прошивают USB-стик с помощью официальной утилиты TI SmartRF Flash Programmer. Чтобы все заработало, нужно подключить CC Debugger в один порт компьютера, стик ZigBee — в другой и шлейфом соединить их между собой.

Подключение CC Debugger к стику ZigBee для прошивкиПодключение CC Debugger к стику ZigBee для прошивки

В настройках программатора выбираем прошиваемое устройство (1), прошивку (2), задаем нужные действия (3) и прошиваем (4).

SmartRF Flash Programmer для прошивки стика ZigBeeSmartRF Flash Programmer для прошивки стика ZigBee

Проверить, что USB-стик удачно прошился и работает, можно, подключив его к Raspberry Pi Zero W и выполнив команду

$ ls /dev

Устройство будет отображаться в системе как ttyACM0.

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

Ставим сервер zigbee-shepherd на Raspberry Pi Zero W

Установка zigbee-shepherd и сопутствующих пакетов будет проводиться на последней версии ОС Raspbian для Raspberry Pi Zero W — Stretch.
Zigbee-shepherd написан на JavaScript и работает на Node.js. Для начала ставим Node.js:

$ wget -O - https://raw.githubusercontent.com/sdesalas/node-pi-zero/master/install-node-v.lts.sh | bash`

Для установки расширений из npm нужно установить утилиты для сборки:

$ sudo apt-get install -y build-essential

И сама установка zigbee-shepherd:

$ npm install zigbee-shepherd - -save

Проверить, правильно ли работает zigbee-shepherd, можно, запустив скрипт zigbee-server.js. Во время работы скрипт выводит информацию о каждом этапе добавления устройства и время выполнения операции.

var ZShepherd = require('zigbee-shepherd');
// Create a ZigBee server
var zserver = new ZShepherd('/dev/ttyACM0');
zserver.on('ready', function () { console.log('Server is ready. Allow devices to join the network within 60 seconds'); zserver.permitJoin(60);
});
zserver.on('permitJoining', function (joinTimeLeft) { console.log(joinTimeLeft);
});
// Start the server
zserver.start(function (err) { if (err) console.log(err);
});

Запускаем zigbee-shepherd в режиме отладки:

$ sudo DEBUG=* node zigbee-server.js

Debug-вывод при добавлении устройства ZigBeeDebug-вывод при добавлении устройства ZigBee

INFO

На этапе разработки скрипта для Node.js всегда используй отладочный режим. Вывод при этом более подробный, легче отловить ошибки, а zigbee-shepherd показывает все данные, которые он отправляет и получает.

Продолжение доступно только подписчикам

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

Подпишись на «Хакер» по выгодной цене!

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here