Hommyn zigbee прошивка

CC2531 + ZigBee2MQTT, отказываемся от шлюзов производителей

Для подключения ZigBee устройств и датчиков необходим шлюз, который обеспечит взаимодействие между ними. Зачастую каждый производитель выпускает шлюзы поддерживающие только устройства своей экосистемы. Не все шлюзы возможно подключить к альтернативным системам управления и не все, подключенные через шлюз устройства, могут поддерживаться, бывает, что у устройств ограничен функционал. Решить подобные проблемы и объединить наши устройства поможет USB координатор CC2531 стоимостью 5$. Заказать можно на одной известной торговой китайской торговой площадке, устройства предлагаются в двух вариантах, со встроенной и внешней подключаемой антенной, предпочтительнее второй вариант, т.к. при недостаточном уровне сигнала можно заменить антенну на более мощную.

Для подключения устройств необходимы:

  • USB координатор CC2531.
  • Компьютер для подключения координатора и установки необходимого программного обеспечения, для этих целей прекрасно подходит Raspberry Pi.
  • Программное обеспечение ZigBee2MQTT.
  • Программное обеспечение для работы протокола MQTT (так называемый MQTT брокер), например, Mosquitto.

Преимущества данного подключения устройств:

  • Датчики и устройства можно подключить к альтернативным системам, таким как Home Assistant, не имея шлюза производителя.
  • Обширный список устройств разных производителей. Полный список поддерживаемых устройств.
  • Можно использовать гибридную систему, часть устройств подключены к шлюзу производителя, часть напрямую к СС2531.
  • Некоторые устройства имеют функции, которых нет при подключении к шлюзу своей экосистемы.

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

На сайте проекта ZigBee2MQTT подробно расписан порядок действий, ниже будет представлен вольный перевод того, что необходимо выполнить:

Прошивка CC2531

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

  • При помощи CC Debugger, покупается на той же площадке где и плата, стоит как два устройства CC2531. Можно поискать у знакомых, которые уже купили данное устройство. Минус, то что оно нужно всего на один-два раза, прошить/обновить плату и. возможно прошить еще одну, которая будет выступать как роутер. Необходим Debug кабель, покупается там же вместе с CC Debugger’ом или отдельно.
  • Прошить с помощью Paspberry Pi. [Инструкция]

Ниже описан первый вариант для Windows. Оригинал был описан на сайте ZigBee2MQTT. UPD.: на 10.11.2020 страница перенесена, но в общем списке ссылка на нее отсутствует.

Скачиваем и устанавливаем программу SmartRF Flash Programmer, необходимо зарегистрироваться на сайте, после чего будет доступна ссылка на скачивание. Будьте внимательны! SmartRF Flash Programmer v2 не подходит. [Зеркало]

Скачиваем и устанавливаем драйвер для CC Debugger, подключите CC Debugger к USB порту, в диспетчере устройств убедитесь, что драйвер установился корректно и устройство определилось. При возникновении проблем установите драйвер вручную. Отключите CC Debugger. [Зеркало]

Подключить СС2531 к CC Debugger’у при помощи Debug кабеля. Подключить оба устройства (CC2531 и CC Debugger) к USB портам компьютера. Если индикатор на CC Debugger светит красным, то нажать кнопку Reset на CC Debugger, индикатор должен загореться зеленым цветом.

Скачиваем и распаковываем прошивку для CC2531. Прошивки есть для ZigBee версии 1.2 и 3. Для версии 1.2 есть два вида прошивок Default и Source Routing, автор комментирует так:

  • Если в ZigBee сети до 30 устройств, то рекомендуется версия Default.
  • Если в ZigBee сети более 30 устройств, то рекомендуется версия Source Routing. Данная прошивка поддерживает только 5 прямых подключений к координатору, остальные устройства подключаются через роутеры. Роутером в ZigBee сети обычно выступает любое устройство, подключенное к постоянному питанию, розетки, выключатели, светильники, но выключатели Xiaomi без нулевой линии не являются роутерами. Так же в качестве роутера можно использовать другое устройства CC2531 или CC2530, но прошитые специальной прошивкой.

Запускаем SmartRF Flash Programmer и выбираем:

  • What do you want to program: Program CCxxxx SoC or MSP430
  • Во вкладке Sisten-on-Chip выбираем CC2531
  • Interface: Fast
  • Flash Image File выбираем файл прошивки с расширением *.hex .
  • Location: Primary
  • Actions: Erace, program and verify

Нажимаем Perfom actions, ждем окончания прошивки модуля.

Отключаем модуль от компьютера и CC Debugger’а.

Установка MQTT брокера Mosquitto

Дальнейшие инструкции описывают установку программного обеспечения на Ubuntu и другие системы на базе Debian, в том числе Raspberry Pi OS.

В файле /etc/mosquitto/mosquitto.conf должно быть следующее:

Создадим файл default.conf для внесения своих настроек:

Для установки пароля в файл /etc/mosquitto/conf.d/default.conf внесем следующее:

Создаем нового пользователя usermosquitto с паролем passmosquitto для подключения к Mosquitto:

Вводим пароль для нового пользователя и перезапускаем сервис Mosquitto:

Установка ZigBee2MQTT

Подключаем CC2531 координатор к компьютеру, работающему 24/7, самый распространенный вариант это Raspberry Pi где крутится сервис автоматизации, но на самом деле это могут быть разные компьютеры, первый MQTT брокером, второй с сервисом ZigBee2MQTT, третий с сервисом автоматизации :) Но обычно это один компьютер.

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

Как видно из ответа, наше устройство обнаружилось как ttyACM0 , проверяем:

Устанавливаем репозиторий Node.js :

Проверяем версии Node.js и npm:

Версия Node.js должна быть 10.x или 12.x, npm — 6.x

Делаем клон репозитория ZigBee2MQTT:

где user — пользователь, под которым будет работать сервис, group — группа имеющая доступ к папке. Для Raspberry Pi это обычно pi:pi. Пользователь должен входить в группу dialout.

При корректной установке в ответ будет выведено сообщение вида:

Предупреждающие сообщения Warning игнорируем.

Редактируем файл настроек /opt/zigbee2mqtt/data/configuration.yaml :

homeassistant: true — если вы собираетесь используете интеграцию с Home Assistant.
permit_join: false — подключение новых устройств. Для подключения новых устройств необходимо выставить в true, рекомендуемое значение false во избежании подключения случайных устройств.
server: ‘mqtt://localhost‘ — адрес сервера MQTT. Если это тоже самое устройство, то оставляем localhost .
user: usermosquitto — пользователь с доступом к MQTT серверу.
password: passmosquitto — Пароль пользователя MQTT сервера.
port: /dev/ttyACM0 — устройсво CC2531 в системе.
network_key: GENERATE — ключ безопасности сети ZigBee. GENERATE — при старте будет сгенерирован новый ключ, можно задать вручную: network_key: [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5]

При правильной настройке будет сообщение вида:

Останавливаем программу Ctrl+C .

Создаем файл для запуска сервиса при старте системы.

User=pi — Пользователь, с правами которого запускается сервис. Для Raspberry Pi это обычно пользователь pi.

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

Обновление ZigBee2MQTT

Делаем резервную копию данных:

Восстановление данных и запуск сервиса:

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

Для подключения устройств в файле /opt/zigbee2mqtt/data/configuration.yaml надо установить permit_join: true и перезагрузить сервис.

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

После подключения всех устройств для повышения безопасности и избежании случайного подключения других устройств в файле /opt/zigbee2mqtt/data/configuration.yaml необходимо установить permit_join: false после чего перезагрузить сервис.

Выявленные проблемы

На Ubuntu было лень создавать отдельного пользователя для работы сервиса и программа запускалась от пользователя homeassistant вместе с самим Home Assistant. После нескольких минут работы у Home Assistant отваливалась связь со шлюзами и светильниками Xiaomi. После создания в системе отдельного пользователя и настройки запуска от его имени проблема ушла.

Источник

Hommyn zigbee прошивка

Давно известно, что с zigbee устройствами можно работать не только через шлюз MiHome. Имеется множество других решений, через которые можно получать данные и управлять устройствами (deconz, athom hommey, samsung smartthings, philips hue, Smart home Hommyn Zigbee Хаб (HU-20-Z) и др.). По моему мнению, самым интересным и бюджетным вариантом является проект zigbee2mqtt

Для работы zigbee2mqtt понадобится прошитый usb-стик и компьютер (windows, linux, в том числе микрокомпьютеры на arm-процессорах)

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

Прошивка USB-стика cc2531 через arduino.

Прошивка стика через ардуино — очень долгий процесс и занимает около 5 часов. К тому-же очень сложно прошивать, не имея кабель-шнурок. От этого варианта прошивки я отказался.

Также usb-стик можно прошить у коллег в вашем городе, например в Екатеринбурге я могу прошить стик за символическую плату в размере 500 руб.

Инструкция по перепрошивке USB-стика cc2531 через отладчик:

Понадобится драйвер для отладчика
Прошивку следует осуществлять по этой инструкции.
Альтернативная инструкция
Ссылка на прошивальщик
Последние версии прошивок можно взять тут

Инструкция по установке zigbee2mqtt для linux:

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

sudo git clone https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt
sudo chown -R pi:pi /opt/zigbee2mqtt
cd /opt/zigbee2mqtt
npm install

sudo git clone —single-branch —branch dev https://github.com/Koenkk/zigbee2mqtt/ /opt/zigbee2mqtt
sudo chown -R pi:pi /opt/zigbee2mqtt
cd /opt/zigbee2mqtt
npm install

Установка zigbee2mqtt для windows

1) Устанавливаем брокер mqtt, если у вас его еще нет по инструкции

Также в качестве mqtt брокера, при наличии платной подписки на connect-pac (200р.), вы можете использовать адрес http://connect.smartliving.ru в качестве брокера mqtt. Логик и пароль необходимо использовать реквизиты входа сайта http://connect.smartliving.ru

2) Качаем и устанавливаем git

3) Качаем и устанавливаем node.js для windows

Далее процесс идентичен установке под linux.

Настраиваем конфигурационного файла

Конфигурационный файл обычно расположен по указанному пути /opt/zigbee2mqtt/data/configuration.yaml

Пример вариантов настроек конфигурационного файла

homeassistant: false
permit_join: true
advanced:
channel: 26
log_level: debug
mqtt:
base_topic: zigbee2mqtt
# server: ‘mqtt://192.168.178.32:1900’
server: ‘mqtt://192.168.1.39’

serial:
port: /dev/ttyACM1

26 канал выбран для livolo выключателя (работают только на 26 канале https://github.com/Koenkk/zigbee2mqtt/issues/592). При отсутствии ливоло выключателей, можно удалить эту строку.

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

Запускаем командой sudo systemctl start zigbee2mqtt

Обновление локального zigbee2mqtt до актуальной версии:

# Stop zigbee2mqtt and go to directory
sudo systemctl stop zigbee2mqtt
cd /opt/zigbee2mqtt

# Backup configuration
cp -R data data-backup

# Update
git checkout HEAD — npm-shrinkwrap.json
git pull
rm -rf node_modules
npm install

# Restore configuration
cp -R data-backup/* data
rm -rf data-backup

# Start zigbee2mqtt
sudo systemctl start zigbee2mqtt

Чтобы сервис стартовал автоматически, не забудьте после п. 5 (Optional) Running as a daemon with systemctl выполнить

sudo systemctl enable zigbee2mqtt

(сервис будет запускаться автоматически при старте системы)

Текущий статус модуля: бетта

Реализовано:

1) подписка на канал zigbee2mqtt/#
2) автоматическое создание устройств;
3) автоматическое заполнение метрик устройств;
4) привязка метрик к объектам.
5) просмотр логов zigbee2mqtt;
6) конвертирование привязанных переменных в стандартный для мажордомо формат (вместо 1/0 в zigbee2mqtt используется ON/OFF);
7) управление устройствами;
8) создание карты устройств.
9) Добавлено управление и просмотр режимами сопряжения.
10) Добавлено управление (ON OFF) устройствами с главного окна модуля.
11)Подсвечиваются серым потерянные устройства.

Что планируется:

1) Работа с группами https://www.zigbee2mqtt.io/information/groups.html
2) Заведение отсутствующих метрик, чтобы можно было привязать не описанные события)
3) Отладить работу. Поступают противоречивые данные, у кого-то не отображаются выпадающие списки с картинками и тд.
4) Отладить работу, когда мажордомо и zigbee2mqtt находятся на разных устройствах. Запросил информацию для отвязки от конфигов
5) Настройка прямого управления устройствами

6) Разработка шлюза на базе платы сс2530 и микрокомпьютера raspberry pi nano в едином корпусе.

Ссылки:

Ссылка на интересный тематический канал в телеграм: https://t.me/zigbeer
Ссылка на репозиторий модуля zigbee2mqtt:
Топики для управления устройствами через mqtt
Топики для управления шлюзом через mqtt

Драйвера для smartRF04EB начинаются на swrc* есть в репозитории Кирова Ильи
Огромная благодарность Илье @goofyk за помощь в освоении материала )

Источник

Hommyn zigbee прошивка

Умный дом — Общая тема

  • Используйте эту тему для обсуждения умного дома в принципе. Например, вы можете:
    • поговорить об устройствах, для которых ещё нет отдельных тем;
    • сравнить системы умного дома от разных производителей;
    • обсудить вопросы совместимости компонентов разных систем;
    • задать вопрос о поиске компонентов умного дома под конкретные задачи;
    • обсудить перспективы, и т.д.
  • Пожалуйста, не обсуждайте здесь вопросы, для которых созданы профильные темы.

В теме нет куратора. По вопросам наполнения шапки обращайтесь к модераторам раздела через кнопку под сообщениями, на которые необходимо добавить ссылки.
Если в теме есть пользователь, желающий стать Куратором и соответствующий Требованиям для кандидатов, он может подать заявку в теме Хочу стать Куратором (предварительно изучив шапку темы и все материалы для кураторов).

Сообщение отредактировал Олег Верещагин — 26.08.20, 21:18

Я так понимаю это не к Xiaomi это к Broadlink

А к Xiaomi есть что то подобное ?

tuloop,
Можно управлять котлом очень простым программируемым переключателем, управляемым через планшет или смартфон.

Например, вот такой переключатель.

Работает от программы EweLink, программка русифицирована.
Датчик переключателя вешаете на подачу в сеть, приматываете крепко хомутом сантехническим к металлическому выходу из котла.
Сам датчик можете вешать в комнате.

Для управления отдельными контурами Теплого пола можно использовать также этот переключатель.

Исполнительный механизм при этом может быть, например, вот таким.

ustas2016, спасибо, но у меня стоит задача построить систему на датчиках Сяоми + управление на совместимых продуктах.
Пока смотрю на простое wifi-реле для управления котлом (вкл/выкл) по сценариям и показаниям датчиков температуры и движения.

Сообщение отредактировал tuloop — 02.02.17, 00:29

Можно взять розетку, лучше Zigbee, к розетке подключить реле, которое будет управлять котлом. Сама розетка будет включаться/выключатся по команде датчика температуры. Все как вы и хотели на сяоми.

Реле вот так может выглядеть ( вставлено в колодку)

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

Сообщение отредактировал myxaxa1 — 03.03.17, 17:03

Автоматизация работы жалюзи с помощью Arduino и Broadlink

Сбылась мечта — полгода думал, как мне автоматизировать открытие и закрытие жалюзи дома, чтобы не прыгать по окнам :)
У меня жалюзи расположены внутри окна, но я думаю, метод подойдет и для внешних жалюзи.
Кому интересно — попробую кратко рассказать свой путь! Итак.

У меня Broadlink и сначала я хотел купить более-менее готовые решения, но они были дороги и не универсальны.
Уважаемый ovcher давно склонял меня в сторону Ардуино и я решил рискнуть ;)
Что мне понадобилось купить:
1. Arduino
2. ИК-приемник
3. Провода
4. Два серво-привода
Двигатели заказал в одном магазине, а все остальное в другом и стал ждать.
Двигатели https://ru.aliexpress.…ba-JR/32676185538.html
приехали первыми, а все остальное, заказанное тут https://ru.aliexpress.…14.13010608.0.0.rL7OH1 не приехало вовсе, деньги вернули, но я потерял 2 месяца, что было гораздо ценнее :( Не заказывайте тут ничего!
Поскольку уже «свербело» и движки лежат, купил все в Москве в амперке, не буду ставить ссылки, чтобы не рекламировать, найдете сами.
Цены в 2-10 раз выше, чем на Али, зато все и сразу.
Купил Iskra Neo, ИК-приемник и провода папа-папа.

Свое знакомство с Ардуино я начал вот с этого видео https://www.youtube.co…h?v=PjR9jlP4644&t=306s всего их 6 частей и их достаточно для того, чтобы начать понимать что к чему.
Опыт и пайки, и схемотехники, и программирования у меня был.
Итак, задача была в том, чтобы через произвольные ИК-команды, сервоприводы открывались и закрывались.
Чтобы не путаться в ИК-командах разных устройств в комнате, я взял пульт от ТВ с кухни.
Потом, правда, выяснилось, что некоторые кнопки этого пульта все же управляют китайской RGB-лентой :D , но это все мелочи, я нашел те кнопки, которые не мешают больше ничему.
Взял ИК-приемник, выставил +/- питания как сказано в видео, дата-ножку посадил на 10й цифровой выход, и. спалил ИК-приемник :D
Потому что ножки расположены не так как на видео, а так как в спецификации на сайте амперки.
Всегда читайте спецификацию!
Поехал, купил еще два приемника (благо, по 90 руб.), выставил ноги правильно, скачал библиотеку IRremote и залил свой первый скетч

#include «IRremote.h»
IRrecv irrecv(10); // Указываем пин, к которому подключен приемник
decode_results results;

void setup()
<
Serial.begin(9600); // Выставляем скорость COM порта
irrecv.enableIRIn(); // Запускаем прием
>

void loop() <
if (irrecv.decode(&results)) // Если данные пришли
<
Serial.println(results.value, HEX); // Отправляем полученную данную в консоль
irrecv.resume(); // Принимаем следующую команду
>
>

Все, о первом скетче можно забыть и приступить, собственно, к написанию второго.

Мои жалюзи устроены так, что за пол-оборота ручки (0-180 градусов) становятся в горизонтальное положение (полностью открыты), а за вторые пол-оборота (180-360 градусов) закрываются снова.
А мои серво-двигатели устроены так, что поворачиваются на заданный угол между 0 и 180 градусов.
Это очень хорошо, так как я всегда знаю в каком положении сейчас находится двигатель, мне не надо для этого дополнительно его опрашивать.
Так как промежуточное положение ручки жалюзи мне не нужно, я решил использовать только два положения — 0 градусов (жалюзи закрыты) и 180 градусов (жалюзи открыты).
Методом копипаста из различных источников, затем уже и дописывая самостоятельно, родился основной скетч, на котором сейчас работает моя система

#include
#include «IRremote.h»
#define RECV_PIN 10
#define SERV1_PIN 9
#define SERV2_PIN 8

int pos = 0; //Начальная позиция движка 0 градусов
int openClose = 0; // Движок 1 закрыт
int openClose2 = 0; // Движок 2 закрыт
unsigned long codeOpen = 0xFED827; //Клавиша vol+ на пульте
unsigned long codeClose = 0xFE58A7; // Клавиша vol- на пульте
unsigned long codeOpen2 = 0xFE9867; //Клавиша ch+ на пульте
unsigned long codeClose2 = 0xFE18E7; // Клавиша ch- на пульте
unsigned long codeOpenAll = 0xFE827D; //Клавиша freeze на пульте
unsigned long codeCloseAll = 0xFEC23DF; // Клавиша fav/list на пульте
Servo myservo; // Первый движок
Servo myservo2; // Второй движок
decode_results results;
IRrecv irrecv(RECV_PIN);

void setup()
<
irrecv.enableIRIn();
>

void loop()
<
if (irrecv.decode(&results)) // Если данные пришли
<
myservo.attach(SERV1_PIN);
myservo2.attach(SERV2_PIN);
if (results.value == codeOpen && openClose == 0) servoOpen(); // Если нажата vol+ и движок 1 закрыт, открываем
if (results.value == codeClose && openClose == 1) servoClose(); // клавиша vol- движок 1 открыт, закрываем
if (results.value == codeOpen2 && openClose2 == 0) servoOpen2(); // клавиша ch+ движок 2 закрыт, открываем
if (results.value == codeClose2 && openClose2 == 1) servoClose2(); // клавиша ch- движок 2 открыт, закрываем
if (results.value == codeOpenAll) < // все то же самое для двух движков вместе
if (openClose == 0) servoOpen();
if (openClose2 == 0) servoOpen2();
>
if (results.value == codeCloseAll) <
if (openClose == 1) servoClose();
if (openClose2 == 1) servoClose2();
>
myservo.detach();
myservo2.detach();
irrecv.resume(); // Принимаем следующую команду
>
>

void servoOpen() <
for (pos = 0; pos = 0; pos -= 1) < // goes from 180 degrees to 0 degrees
myservo.write(pos); // tell servo to go to position in variable ‘pos’
delay(15); // waits 15ms for the servo to reach the position
openClose = 0;
>
>

void servoOpen2() <
for (pos = 0; pos = 0; pos -= 1) < // goes from 180 degrees to 0 degrees
myservo2.write(pos); // tell servo to go to position in variable ‘pos’
delay(15); // waits 15ms for the servo to reach the position
openClose2 = 0;
>
>

Надеюсь, по методам в скетче никаких пояснений не надо, я там постарался все комментировать.
Если кратко, ардуина постоянно ждет команды от ИК-пульта и, если команда совпадает с заранее заданной, открывает/закрывает первую/вторую жалюзь :D или последовательно обе сразу.

Когда все заработало на столе как нужно, я купил в мЕтро за 100 руб. держатели для шариков, которыми прикрепил движки к окнам (окна деревянные).

Источник

Adblock
detector