Следующая новость
Предыдущая новость

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

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

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

  • Выбираем и прошиваем железо
  • Ставим сервер zigbee-shepherd на Raspberry Pi Zero W
  • Работаем с выключателями Xiaomi из zigbee-shepherd
  • Увязываем наше решение с другими

Начав конструировать умный дом, сложно бывает остановиться на продукции одного производителя. А это значит, что тебя ждет зоопарк из стандартов, которые сложно увязать друг с другом, и рядок из хабов, каждый из которых занимает розетку (и место в твоей жизни). Нельзя ли сделать универсальный способ управления умными устройствами, которые работают по 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

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

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

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

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

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

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

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

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

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

$ ls /dev 

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

Подключить все! Делаем экстремально дешевый хаб для устройств ZigBee и Z-Wave
При подключении стика появляется устройство 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'); var zserver = new ZShepherd('/dev/ttyACM0'); // create a ZigBee server 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); }); zserver.start(function (err) { // start the server     if (err) console.log(err); }); 

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

$ sudo DEBUG=* node zigbee-server.js 
Подключить все! Делаем экстремально дешевый хаб для устройств ZigBee и Z-Wave
Debug вывод при добавлении устройства Zigbee

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

INFO

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

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

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

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

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

1 год

7190 р.

Экономия 1400 рублей!

1 месяц

720 р.

25-30 статей в месяц

Уже подписан?

Источник

Последние новости