Увлечение умным домом постепенно захватывает все больше и больше людей, ведь на рынке появляются разнообразные решения, отличающиеся не только ценой, экосистемой и используемыми протоколами, но и возможностью интеграции в Opensource системы УД, такие как HomeAssistant, OpenHAB и так далее и тому подобное.
А те устройства, что не умеют или не хотят интегрироваться никуда кроме родной экосистемы, многочисленные энтузиасты шевелят палочкой дорабатывают с помощью паяльника, программатора и инопланетных технологий полученных из Ноосферы, и все равно интегрируют!
Предлагаю вам, уважаемые читатели Хабра, обратить внимание на модуль управления умным домом Триколор GS SMH-ZW-I1, и сделать на его основе что-нибуть полезное, необычное и практичное.
"Почему именно модуль управления GS SMH-ZW-I1 от компании Триколор?" - спросите вы, и будете правы. Причин, как оказалось, вполне достаточно. Тем, кому стало интересно, прошу проследовать под кат.
Что за зверь и с чем его едят?
Модуль управления GS SMH-ZW-I1 – главное устройство сервиса «Триколор Умный дом». Все периферийные устройства сервиса (умная розетка, умные лампы, датчики, сирена и т.д.) объединены в единую систему, которая контролируется модулем управления посредством беспроводного протокола Zigbee.
Этот девайс на момент написания поста можно купить в официальном магазине Триколор всего за 299р. И нет, это не реклама, хотя очень похоже. Но, забегая вперед, скажу что вы нигде не найдете WiFi+Bluetooth USB стик и стик Zigbee CC2531 распаянный на одной плате с USB-хабом дешевле чем за 299р. Ну а если найдете - дайте знать!
Анбоксинг
Девайс поставляется в небольшой коробке размерами 13см х 11,5см. Внутри можно обнаружить сам модуль управления, USB дата-кабель длиной 27см и немного макулатуры.
Размеры модуля управления составляют 82мм х 82мм х 22мм.
На верхней части модуля управления расположены два светодиодных индикатора, указывающие на работу WiFI (синий) и Zigbee (зеленый) модулей.
На нижней части корпуса видны два винта и крепления на стенку.
С торца расположен micro-usb разъем для питания и подключения устройства к компьютеру.
Когда я первый раз заказывал эту коробочку, я, по сути, брал кота в мешке. В начале этого года в интернете еще не было упоминания о внутренностях модуля управления от Триколор, поэтому пришлось рискнуть и стать первопроходцем.
Сразу скажу, что начинка модуля управления меня приятно удивила. Как я уже упоминал, под капотом модуля управления находится плата с маркировкой MB_ZigBeeModule rev01, на которой распаян четырехпортовый USB 2.0 High Speed хаб на микросхеме FE1.1-AQFN48A, два порта из которых уже заняты WiFi+BT чипом Realtek RTL8723BU и Zigbee контроллером на микросхеме CC2531 от Texas Instruments.
USB 2.0 концентратор FE1.1
Два оставшихся порта не распаяны. Как видно на фотографии, там много чего не распаяно. Можно потратить немного денег и времени, и сделать функциональными нераспаянные USB порты, но я не вижу в этом особого смысла. Во первых, придется модифицировать корпус. Во вторых, в обвязке USB-портов отсутствует фильтр, защищающий от разрядов статического электричества и конденсаторы на линии питания. А в третьих, линия питания +5в на нераспаянных разьемах тоже не распаяна. В общем, слишком много мелочевки пожалели китайцы, чтобы сделать этот мир лучше.
Однако, ради тестов, я припаивал к дорожкам USB флешку (не забывая о статическом электричестве, заземленным паяльником, с антистатическим браслетом на руке), кидал 5в с первого попавшегося пятака с необходимым потенциалом (а лучше непосредственно с дорожек микро-usb разъема), и флешка успешно определялась в компьютере, к которому подключен модуль управления.
Только не забывайте, что USB концентратор в случае добавления дополнительных USB разъемов также потребует и дополнительного питания. При подключении к нему мощных устройств (например переносной жесткий диск) хаб не сможет обеспечить необходимый для работы этих устройств ток, так как по стандарту USB 2.0 с одного порта компьютера, к которому будет подключен модуль управления, можно снять не более 500 мА, а модули WiFi+BT и Zigbee, распаянные на плате, во время работы потребляют ток около 150 мА. В случае подключения модуля управления к компьютеру через порт USB 3.0 проблема с питанием уйдет на второй план, так как по стандарту USB 3.0 максимальный потребляемый ток увеличен, составляет 900 мА. Но, к сожалению, скорость USB хаба ограничена стандартами USB 2.0, и все устройства, подключенные через хаб в модуле управления Триколора будут работать медленнее, чем позволяет стандарт USB 3.0.
Разъем для дополнительного питания хоть и предусмотрен, но так же не распаян. Поэтому идея превратить модуль управления Триколор в настольный USB концентратор является вполне реализуемой, но экономически нецелесообразной.
Внешние антенны
Что еще можно распаять? На плате управления имеются посадочные места под разъемы антенн как для WiFi, так и для Zigbee модуля. Ради интереса припаял разъем для антенны модуля Zigbee, предварительно перерезав дорожку родной антенны и впаяв перемычку.
Просверлил отверстие в корпусе под установку коннектора, накрутил на него антенну от старого роутера (протокол Zigbee работает на той же частоте, что и WiFi, поэтому подойдет любая WiFi антенна на 2.4Мгц), но увеличения зоны покрытия Zigbee сети я не ощутил. LQI беспроводных Zigbee устройств также не увеличился.
Скорее всего это связано с низкой мощностью приемопередатчика CC2531, которая составляет 4.5 dBm, и в данном случае внешняя антенна будет ничем не лучше внутренней. Более мощные Zigbee стики на базе модуля CC2538 работают в паре с усилителем на чипе CC2592, с помощью которого можно достичь показателей в 20dBm с использованием внешней антенны.
Разъем для подключения внешней WiFi антенны так же отсутствует, но это легко исправить, припаяв sma коннектор. Я сдул феном такой коннектор со старого ноутбучного mini-pcie беспроводного модуля. Для работы внешней антенны также необходимо убрать резистор R37, отключив таким образом внутреннюю антенну.
WiFi+BT на чипе Realtek RTL8723BU
Из спецификации на данный чип становится ясно, что беспроводной WiFi модуль может работать в диапазоне частот 2.4ГГц, поддерживает стандарты 802.11bgn и обеспечивает скорость беспроводного соединения до 150Mbps с одной антенной. Встроенный Bluetooth контроллер поддерживает стандарт 4.0 и приятно дополняет картину.
В операционной системе Windows 10 WiFi и Bluetooth работает из коробки, дополнительных драйверов устанавливать не нужно. Под ОС семейства Linux проблем тоже не должно возникнуть, у меня получилось завести сабж даже под OpenWrt с соответствующими модулями ядра (kmod-rtl8xxxu и rtl8723bu-firmware). Что касается использования этого чипа совместно с системами умного дома - тут все хорошо. OpenHab отлично работает с ним через стандартный Bluetooth биндинг (в системе должен быть установлен Bluez), HomeAssistant также должен поддерживать его стандартными средствами.
Zigbee модуль на чипе CC2531
В модуле управления умным домом Триколор используется довольно популярный чип CC2531 от фирмы Texas Instruments, поддерживающий стандарты Zigbee и IEEE 802.15.4, имеющий на борту 256КБ флеш-памяти и 8КБ RAM.
Несмотря на то, что производительность этого чипа сильно отстает от более современного CC2538, радиус покрытия Zigbee сети довольно небольшой (10-15м без антенны) и общее количество Zigbee устройств в сети с этим чипом не должно превышать 20шт, в целом это неплохой вариант для ознакомления новичков с основами построения умного дома на Zigbee.
Чип прошит под использование с умным домом Триколор, но это легко исправить вооружившись паяльником и программатором. Таким образом можно получить универсальный стик, работающий как под популярное решение zigbee2mqtt, так и нативно работающее в системах умного дома OpenHAB (с помощью биндинга Zigbee) и HomeAssistant (с помощью интеграции ZHA - Zigbee Home Automation).
Для тех, кто впервые слышит слово "стик", очень рекомендую ознакомиться с материалом на сайте Ивана Бессарабова "Что такое Zigbee", постами на Хабре Zigbee 101: руководство для начинающих, а также Собираем DIY шлюз для Zigbee устройств.
Вкратце, беспроводная сеть Zigbee строится с помощью Координатора (Coordinator), расширяется с помощью Роутеров (Router). К Zigbee сети подключаются конечные устройства (End-Devices) - лампочки, розетки, кнопки, датчики движения, etc.
Из вышеперечисленного следует, что чип CC2531, используемый в модуле управления умным домом Триколор можно прошить в качестве Координатора или Роутера. Процедура прошивки одинакова, отличается лишь сам файл прошивки.
Выбор прошивки
В связи с тем, что у меня уже имеется Zigbee Координатор, на котором уже функционирует сеть для умных устройств, прошивать чип CC2531 буду в Роутер. Это позволит расширить покрытие существующей сети и улучшить качество связи с конечными устройствами.
Для чипов CC2530, CC2531, CC2538, CC1352P, CC2652R и CC2652RB существует прошивка Z-Stack, прошить которую можно несколькими способами: с помощью программатора CC Debugger или Raspberry Pi/Arduino/ESP8266. Программатора у меня нет, зато есть Arduino UNO, которая отлично подойдет для этой задачи!
Но для начала давайте разберемся с прошивками. Как я уже упоминал, существуют прошивки для Координатора и прошивки для Роутера. Они в свою очередь подразделяются на версии:
Прошивка |
Чип |
Версия Zigbee |
Количество устройств |
Количество маршрутов |
Z-Stack_Home_1.2 (default) |
CC2531 |
1.2 HA |
20 |
30/0 |
CC2530, CC2530 + CC2591, CC2530 + CC2592 |
1.2 HA |
16 |
30/0 |
|
Z-Stack_Home_1.2 (source_routing) |
CC2531, CC2530, CC2530 + CC2591, CC2530 + CC2592 |
1.2 HA |
5 |
40/40 |
Z-Stack_3.0.x |
CC2531 |
3.0 |
15 |
40/0 |
CC2530, CC2530 + CC2591, CC2530 + CC2592 |
3.0 |
10 |
40/0 |
|
CC2538 + CC2592 |
3.0 |
100 |
200/400 |
Прошивка Zigbee 3.0 не рекомендуется для чипов CC2530 и CC2531 (в связи с тем что они слишком маломощные)
Если в вашей сети будет 1 - 15 устройств, рекомендуется использовать Z-Stack_Home_1.2 default.
Если в вашей сети будет более 15+ устройств, рекомендуется использовать прошивку Z-Stack_Home_1.2 source routing.
Если вы используете прошивку source routing, то количество устройств, напрямую работающих с Координатором не может превышать 5шт, остальным устройствам необходим Роутер поблизости.
Исходя из вышеперечисленного, лучшим вариантом для небольших Zigbee сетей является прошивка чипа CC2531 в Координатор с помощью Z-Stack_Home_1.2 (default).
Но как я уже говорил, второй Координатор в моей существующей сети мне не нужен, поэтому качаем прошивку роутера. Для тех, кому нужен Координатор, скачиваем эту прошивку. Процедура прошивки одинакова как для Координатора, так и для Роутера.
Прошиваем чип CC2531
Для прошивки я буду использовать Arduino UNO. Это довольно популярная плата для разработки на основе ATmega328. У многих она уже имеется, а если нет, то купить ее не составит труда. Несомненно удобнее и правильнее прошивать Zigbee чипы Texas Instruments с помощью специально предназначенного для этого программатора CC Debugger, но покупать его для одноразового действа я не вижу смысла.
Помимо платы Arduino, для прошивки чипа CC2531 понадобится установленная на персональный компьютер среда программирования Arduino IDE и проводочки.
Далее необходимо скачать файлы для прошивки с помощью Arduino, и положить куда нибудь в папочку. Затем открыть с помощью Arduino IDE файл скетча CCLoader.ino и прошить им подключенную к компьютеру Arduino UNO.
В файле скетча CCloader.ino по умолчанию прописаны пины именно для Arduino Uno, если у вас другая плата, или например, Wemos D1 Mini, не забудьте поправить конфигурацию пинов в скетче. Подробнее об этом можно почитать тут.
После загрузки скетча CCLoader.ino в плату Arduino UNO можно переходить непосредственно к прошивке чипа CC2531.
На плате модуля управления умным домом Триколор имеются технологические площадки, специально предназначенные для прошивки Zigbee чипа. Их распиновка соответсвует стандартной распиновке под CC Debugger. Для прошивки нам понадобится всего четыре контакта.
Соединяем контакты DD с пином 6 Arduino Uno, DC с пином 5, RST с пином 4, а контакт GND с соответствующим контактом GND на плате Arduino UNO.
В результате должно получиться нечто похожее:
Теперь нужно подготовить прошивку CC2531 для загрузки через Arduino UNO. Дело в том, что скачанная прошивка из архива предназначена для использования с CC Debugger (файл .hex) или SerialBootTool (файл .bin), и прошить ее непосредственно не получится. Прошиться с помощью SerialBootTool можно только в том случае, если в чип уже залита прошивка, поддерживающая SerialBootLoader (SBL). Стоковая прошивка модуля управления не поддерживает этот способ обновления прошивки, а прошивка Роутера не поддерживает SBL в принципе, поэтому нам ничего не остается как брать шаманский бубен и преобразовывать то что есть в то что надо.
Для того, чтобы преобразовать прошивку в формат для заливки через Arduino UNO нам потребуется утилита objcopy. Тем у кого есть Linux крупно повезло, эта утилита входит в состав пакета binutils, который необходимо поставить с помощью пакетного менеджера вашего дистрибутива (ну или собрать из исходников, если очень хочется).
Для преобразования файла прошивки в ОС Linux необходимо выполнить команду
objcopy --gap-fill 0xFF --pad-to 0x040000 -I ihex CC2531ZNP-Prod.hex -O binary /tmp/CC2531ZNP-Prod.bin
где CC2531ZNP-Prod.hex - имя файла исходной прошивки из скачанного архива, а CC2531ZNP-Prod.bin - имя файла на выходе. Его мы и будем прошивать через Arduino Uno.
А вот владельцем компьютеров с ОС Windows повезло меньше. Им придется где то найти скомпилированную под Windows утилиту objcopy.exe и необходимую для нее библиотеку libiconv-2.dll
На просторах интернета мне удалось найти место, где лежат эти файлы. Качаем их, кладем в папку с прошивкой для чипа CC2531, и запускаем следующую команду в командной строке
objcopy.exe --gap-fill 0xFF --pad-to 0x040000 -I ihex CC2531ZNP-Prod.hex -O binary CC2531ZNP-Prod.bin
Только не забудьте сначала перейти в командной строке в папку, где лежат файлы прошивки и objcopy.exe, иначе фокус не получится.
Теперь у нас есть необходимый файл прошивки для чипа CC2531, прошитая файлом CCLoader.ino Arduino UNO. Можно прошиваться! Только как? Уместный вопрос.
Правильно, нам потребуется еще одна утилита - CCLoader! Под ОС Windows можно скачать готовый бинарник отсюда и скопировать в ту папку, где лежит подготовленная прошивка для CC2531.
Для ОС Linux надо будет собрать утилиту CCLoader самому. Исходники лежат тут. Для компиляции достаточно выполнить в папке с исходниками команду
gcc main.c -o CCLoader
А вот теперь у нас все готово для прошивки чипа CC2531. Подключаем Arduino UNO в USB порт компьютера, проверяем правильность соединения модуля управления Триколор с Arduino и подключаем модуль управление во второй USB порт компьютера.
Смотрим на каком COM порту висит Arduino UNO и выполняем команду
CCLoader [номер COM порта] имяпрошивки.bin 0
Должен начаться процесс прошивки
Успешное завершение прошивки чипа CC2531 выглядит примерно так
Если что то пошло не так, еще раз проверьте правильность подключение модуля управления к Arduino UNO и наличие всех необходимых для прошивки файлов. Иногда помогает переподключение девайсов к USB.
Но надеюсь что все прошло гладко, и мы имеем полностью работоспособный Роутер (или Координатор). Давайте попробуем добавить Роутер к существующей Zigbee сети. После прошивки отключите модуль управления Триколор от Arduino UNO и от USB порта. Разрешите добавление новых устройств, подключите модуль умного дома Триколор в порт USB (или в зарядное устройство мобильного телефона) и ждите пока пройдет интервью.
Комментарии (22)
Delsian
29.09.2021 11:12А объясните, в чем смысл до сих пор использовать зигби при наличии более продвинутых альтернатив? Бэквард компатибилити? Вон даже бысто растущий монстр ZephyrOS уже отказалась от зигби.
kerenskiy Автор
29.09.2021 11:22+2На самом деле все просто. Решающую роль играет цена, распространенность и количество разнообразных устройств и датчиков. Продвинутые альтернативы в плоскости умного дома - это проводные решения Siemens, KNX. Именно проводные, так как у беспроводных имеются ощутимые недостатки. Но и достоинства имеются - низкая цена, низкий порог вхождения на уже готовых экосистемах.
В моем понимании отказываться от протокола Zigbee не нужно, нужно совмещать с "продвинутыми альтернативами".
Iv38
29.09.2021 13:58Уточните, о каких продвинутых альтернативах вы говорите?
kerenskiy Автор
29.09.2021 14:02+2Мне тоже интересно знать что за продвинутые альтернативы имелись в виду. Наверное Matter и Thread))
caes
05.10.2021 20:40Те самые, устройств на которых на текущий момент кот наплакал. Надо срочно отказаться от тысяч Зигби устройств ради десятка Тред и примерно околя нуля Маттер девайсов =)
afaronov
08.10.2021 10:24Кстаати а может в качестве альтернатив имелся ввиду блутус ?
ну так там Меш еще до конца не стандартизирован
а не меш там вообще кто в лес кто по дрова
afaronov
07.10.2021 10:27Что то не припомню что в Zephyr когда то было зигби и они от этого отказались
тем более что Нордик в nrf_connect зигби туда приделал и даже обновляет (конечно не сам а с помощью ZBOSS, но именно на Zephyr)Зигби хороша именно наличием стандартов (да не все хотят их соблюдать но они есть)
и тот же Маттер просто взял стандарты зигби (ZCL) и использовал Тред как транспорт
а будет транспортом Тред или просто 802.15.4 разницы особой нету , главное стандарты :)
а вот про альтернативы это интересно
DiKey
29.09.2021 19:25Огромное спасибо, заказал.)
Извините, может читал невнимательно: а как Bluetooth-Wifi оно будет работать, собирая данные с BLE-датчиков xiaomi?)
kerenskiy Автор
29.09.2021 19:26Это всего лишь железка. Выполнять свои функции будет) А дальше все зависит от софта. Espruinohub на Линуксе думаю вполне справится с этой задачей.
DiKey
30.09.2021 01:20Могло оказаться, что без Tricolor, bluetooth не активируется (к примеру).
Я надеюсь на Home Assistant начать собирать умный дом. Пока изучаю тему, и скупаю разнообразные "игрушки".)
Alecseyyy
29.09.2021 23:23Спасибо большое, заказал себе, за такие деньги и такой функционал, спасибо за открытие и инструкцию. Продолжайте творить!
pbmoloov
30.09.2021 07:08Не совсем понятно как в данном устройстве будет использоваться wi-fi. Как я понимаю если использовать его как координатор, то его необходимо проводом подключать к компьютеру (как обычный usb стик на базе CC2531) или же есть возможность подключиться к нему через wi-fi?
kerenskiy Автор
30.09.2021 07:58+1Да, как обычный стик подключается к компьютеру. И вайфай тоже появится на этом компьютере, если не было. А уже на компьютере можете прикинуть стик через ser2net, например, и он будет доступен по вифи.
vviz
01.10.2021 18:15Не удалось прошится с помощью "Raspberry Pi/Arduino/ESP8266" и Raspberry Pi 4. cc_chipid выдает нули... Провода все на месте.
vviz
01.10.2021 18:57Более вдумчивое курение манов от автора flash_cc2531 Jean Michault указало, что для Raspberry Pi 4 требуется более свежий wiringPi
hobbyte
10.10.2021 16:56Благодарю, давно приглядывался к zigbee. Удачно, что 3в1, подключил к domoticz-у, да bt-модуль заменил.
beho1der
Интересно прочитать было бы про перешивку на Openwrt
kerenskiy Автор
Оно не перешивается на OpenWrt, там нет процессора, только микроконтроллер зигбишный. Но можно воткнуть в любой роутер на OpenWrt.
RRRRRRR1
Подскажите , а стик сс2531 или 2538 с openwrt будут работать ?
Что-то не нашёл гайдов как их полружить .
kerenskiy Автор
Будет. Надо поставить модуль kmod-usb-acm, тогда девайс определится как ttyACM0 (или как то так). Если не определится то другие кмоды попробовать со словом serial.