Raspberry pi шилд zigbee

Добавляем ZigBee устройства в Homebridge используя CC2531

На Хабре уже встречались статьи о том, как подружить ZigBee устройства различных производителей с системами управления умным домом, без использования фирменных хабов, вроде Xiaomi Gateway. Однако, инструкции для homebridge, я не нашел не только на Хабре, но и на других просторах интернета. Поэтому хочу поделиться опытом добавления ZigBee устройств в homebridge. Огромную благодарность надо выразить создателю ресурса zigbee2mqtt.io, там уже расписаны способы прошивки модема CC2531 и подключения к таким системам управления умным домом как Home Assistant, Domoticz и Majordomo. Статья рассчитана на пользователей, у которых уже установлен и настроен homebridge.

Все действия в статье будут проводиться со следующим набором оборудования:

  • Raspberry Pi 3 B+ (OS Raspbian)
  • CC2531 Dongle (Прошитый)
  • Устройства Xiaomi (wireless switch, temperature & humidity sensor. )
  • MacBook Pro (OSX 10.14)

Инструкции по прошивке CC2531 на русском языке есть тут (через Pi) и тут (через CCDebuger).

Схематично всю цепочку работы можно изобразить так:

Теперь по порядку.

После прошивки модема необходимо установить MQTT брокер (если еще не установлен).

Я использую Mosquitto, устанавливается так:

Более подробную инструкцию по настройке можно посмотреть тут.

Теперь необходимо установить сервис zigbee2mqtt, который взаимодействует с модемом CC2531 и передает данные в Mosquitto:

Для того чтобы запускать zigbee2mqtt как сервис, необходимо создать файл:
/etc/systemd/system/zigbee2mqtt.service

Если у вас уже был установлен MQTT брокер то прописать правильные параметры подключения к нему нужно в файле:

Запускаем сервис и добавляем его в автозапуск:

Можно приступать к интеграции с homebridge. На ресурсе zigbee2mqtt.io есть список поддерживаемых устройств и инструкции по созданию пары. Для примера рассмотрим добавление Xiaomi Wireless Switch.

Для просмотра событий в Mosquitto воспользуемся программой MQTT Explorer. Запускаем, вводим адрес MQTT сервера, в моем случае он расположен по адресу 192.168.1.104 . Если все установлено правильно, то в дереве увидим ветку zigbee2mqtt. Переходим в нее. Теперь на Xiaomi Wireless Switch зажимаем кнопку Reset до появления мигания диода (около 5 секунд). Примерно через 10 секунд в ветке zigbee2mqtt мы увидим наше устройство и данные которое оно передает.

Если этого не происходит, то после появления мигания диода, попробуйте однократно нажимать Reset с периодичностью в секунду. Должно получиться так:

Поле Click содержит тип нажатия, их может быть пять:
Click, double click, triple click, long, long_release

Данные получать научились, теперь добавим Xiaomi Wireless Switch в homebrdige. Для взаимодействия с MQTT воспользуемся модулем homebridge-mqttthing. Устанавливается так же, как и другие:

Модуль поддерживает большое количество классов устройств начиная с выключателей и заканчивая термостатами. Для Xiaomi Wireless Switch больше всего подходит класс StatelessProgramableSwitch . Для добавления нужно знать Topic (0x00158d00022c85ea) и названия команд. Получается вот такой конфиг:

По аналогии я добавил:

Раньше я использовал модуль homebridge-mi-aqara, который добавляет ZigBee устройства, взаимодействуя с Xiaomi Gateway. При отказе от Gateway уменьшилось время отклика устройств, вдобавок я избавился от устройства которое сидит на моем WiFi и постоянно лезет в интернет.

Дополнение 07.11.2020 спасибо за комментарий @dalamber_sign, если у кого то есть подобные проблемы, возможно поможет:

Столкнулся с проблемой что периодически отваливается xiaomi розетка и не ищутся новые устройства.CC2531 у меня работает в Raspberry Pi 4 и как оказалось проблема была в том, что CC2531 включен прямо в USB порт, без usb-удлинителя. Официальный FAQ так и пишет «There can be too much interference, try connecting the coordinator USB through an USB extension cable. This problem occurs a lot when used in combination with a Raspberry Pi 4.», а казалось что слишком глупо чтобы быть правдой.

Источник

Плата расширения ZigBee для Raspberry Pi Elelabs

Плата расширения ZigBee для Raspberry Pi Elelabs

Характеристики

Как получить товар:

  • Доставка курьером по Москве — 400 руб.
  • Доставка по России почтовыми службами от 800 руб.
  • Самовывоз по адресу:
    г.Москва 1-й Иртышский пр-д, д. 8, стр. 1

Как оплатить товар:

  • Наличными при получении
  • Банковской картой
  • Банковским переводом

Описание товара:

Плата расширения ZigBee для Raspberry Pi от компании Elelabs для компьютера Raspberry Pi разработан специально для Raspberry Pi (1,2,3).

Она создана на основе чипа EM357 SiLabs, который представляет собой микроконтроллер IEEE 802.15.4 / ZigBee 2,4 ГГц.

Он предварительно запрограммирован прошивкой Network CoProcessor и обеспечивает интерфейс UART для Raspberry Pi для создания и управления сетью ZigBee, а также для связи с устройствами ZigBee.

Что делает его особенным?

Мы постарались сделать продукт уникальным:

  • 2,4 ГГц, признанная во всем мире частота
  • Совместимый с ZigBee микроконтроллер EM357 внутри
  • Размер: 30×17 мм + 10 мм RPi-заголовок
  • Чувствительность Rx: -99 дБм
  • Мощность Tx: 8 дБм
  • Визуальная дальность связи: 200 м
  • Интерфейс UART со стандартными командами NCP от Silicon Labs
  • Несколько плагинов для openHAB, Home Assistant, Node-RED и других платформ DYI
  • C, Node.js и Python для создания собственного приложения

Как это использовать?

Чтобы быстро начать использовать продукт:

    1) Вставьте модуль в свой Raspberry Pi, как показано на схеме выводов

Источник

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

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

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

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

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

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

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

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

Xakep #235. Возрождение эксплоит-китов

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

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

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

Texas Instrument CC Debugger

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

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

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

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

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

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

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

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

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

Zigbee-shepherd написан на JavaScript и работает на Node.js. Для начала ставим Node.js:

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

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

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

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

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

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

Работаем с выключателями Xiaomi из zigbee-shepherd

Первым делом следует добавить устройство ZigBee в сеть. Для этого сначала нужно сбросить его настройки на заводские и тем самым удалить информацию о предыдущей сети, если оно было добавлено прежде. Комбинация сброса и добавления устройства для выключателей Xiaomi Aqara следующая: зажать кнопку на пять секунд, пока светодиоды не начнут мигать, после чего отпустить и ждать, когда закончится процесс добавления. Если включен дебаг, то при добавлении устройства выводится подробный лог. Добавление устройства может занять до одной минуты.

После добавления устройства важно еще правильно с ним работать. Zigbee-shepherd не предоставляет веб-интерфейса для добавления устройств и управления ими, вместо этого мощный JS API позволяет получить полный контроль над любым устройством и написать собственную систему автоматизации.

В вики есть полное описание всех функций. Но чтобы быстрее разобраться с ними, нужно понимать программную структуру устройства.

IEEE address. Каждое устройство ZigBee имеет уникальный 48-битный MAC-адрес, он зашит в девайс, и сбросить его невозможно. По MAC-адресу можно обращаться к устройству и получать информацию о нем.

Endpoint. В устройстве может быть несколько функций, например датчик температуры и влажности или выключатель с двумя кнопками. Для каждой функции устройства создается отдельный Endpoint.

Clusters. Группа команд, которые можно отправлять устройству. Например, команда genOnOff включает или выключает устройство, а если это лампа с диммером, то команда genLevelCtrl позволит задать уровень яркости.

Attributes. У устройства можно запросить его текущее состояние, обратившись в интересующий Cluster. Например, командой genOnOff можно узнать состояние атрибута onOff — оно может быть 0 или 1.

Выключатель Xiaomi Aqara с одной кнопкой имеет следующую структуру:

Чтобы обрабатывать нажатие кнопки, нужно отловить сообщение от выключателя. Делается это с помощью события ind . Изменим код следующим образом:

При нажатии кнопки придет сообщение:

  • msg.endpoints[0].device.ieeeAddr — MAC-адрес устройства;
  • msg.endpoints[0].epId — канал (endpoint) устройства;
  • msg.data — ID кластера и атрибут, в данном случае выключатель прислал команду genOnOff:0 .

Если проверять эти данные, то, нажимая на кнопку выключателя, можно будет управлять другими устройствами ZigBee по определенному алгоритму. Например, при каждом нажатии включать-выключать или только выключать группу устройств.

Zigbee-shepherd полностью поддерживает работу с диммируемыми лампами Ikea Trådfri и Philips Hue, поэтому для примера можно настроить простой алгоритм включения лампы с помощью выключателя Xiaomi Aqara. Добавляем в код обработчик нажатия кнопки и включение лампы Ikea Trådfri на максимальную яркость:

Увязываем наше решение с другими

Zigbee-shepherd использует инфраструктуру Node.js, поэтому можно реализовать управление любыми объектами, для которых есть соответствующие библиотеки. Например, протокол MQTT дает возможность интеграции со многими системами домашней автоматизации, такими как OpenHub и Home Assistant. Для последней существует готовый проект на GitHub.

Многие хабы и самостоятельные устройства Wi-Fi вроде розеток поддерживают управление через запросы HTTP. Команды можно узнать из документации, либо подглядеть в веб-интерфейсе хаба умного дома, либо проанализировать трафик от мобильного приложения.

Z-Wave-контроллер RaZberry имеет хорошо документированный HTTP API, поэтому не составит труда написать запрос на выключение света. Для отправки HTTP-запросов требуется установить библиотеку request:

Добавляем в код поддержку HTTP-запросов и сам запрос на выключение света:

Минимальная домашняя автоматизации готова! В 26 строках кода запускается сервер ZigBee, отслеживается нажатие кнопки и исполняется команда управления светодиодной лампой или команда HTTP. Если подключить фреймворк веб-приложений для Node.js (например, express), то можно реализовать полноценный HTTP API для работы с устройствами ZigBee.

Zigbee-shepherd позволяет добавить к уже существующей домашней автоматизации на KNX, Z-Wave или Wi-Fi недорогие устройства ZigBee, которых с каждым годом выпускается все больше.

Источник

Adblock
detector