Решил поэкспериментировать с "умным домом". Начать надо с контроллера. Много описаний, как использовать в качестве приемника для контроллера свистки cc2531/cc2530 (ссылка чисто для понимания, что искать, это не рекомендация конкретного продавца). Рекуомедуется брать с внешней антенной. Проблема в том, что такой свисток надо прошить. Для этого нужен аппаратный программатор (ссылка только для справки) и программа на компе. Все найденные мною инструкции для Windows или Linux.
Но всё-таки есть программа cc-tools, которую можно собрать пол Mac OS. Нашел я информацию о ее существовании тут. Но инстукция слишком краткая. И так просто не пакет не соберется, так как вместо g++ должен использоваться clang++
checking for Boost headers version >= 1.39.0... yes
checking for Boost's header version... 1_76
checking for the toolset name used by Boost for g++... xgcc42 -xgcc
checking for boost/program_options.hpp... yes
checking for the Boost program_options library... yes
checking for boost/system/error_code.hpp... yes
checking for the Boost system library... (cached) yes
checking for boost/regex.hpp... yes
checking for the Boost regex library... no
configure: error: cannot find the flags to link with Boost regex
Ответ найден здесь. Там же есть ссылка на полную инструкцию. Ниже краткий пересказ на русском.
- Через Brew ставим необходимые пакеты (как ставить сам Brew тут не пишу):
brew install autoconf automake libusb boost pkgconfig libtool
- Скачиваем исходники с GitHub'a и переходим в созданную директорию
MacBook-Pro:~ user$ git clone https://github.com/dashesy/cc-tool.git
MacBook-Pro:~ user$ cd cc-tool - Теперь создаем configure:
CC=/opt/local/bin/clang \ CXX=/opt/local/bin/clang++ \
Теперь соберется без ошибок.
LDFLAGS=-I/usr/local/include \
CPPFLAGS=-I/usr/local/include \
./bootstrap
CC=/opt/local/bin/clang \
CXX=/opt/local/bin/clang++ \
LDFLAGS=-I/usr/local/include \
CPPFLAGS=-I/usr/local/include \
./configure
make - Проверим, что программа собралась. Выделил ключи, которые нам понадобятся для прошивки:
MacBook-Pro:cc-tool user$ ./cc-tool --help Texas Instruments 8051-based System-On-Chip device programmer Version: 0.26 Command line options: -h [ --help ] produce help message --log arg create log of all operations -d [ --device ] arg set programmer device usb address 'bus:device' -f [ --fast ] set fast debug interface speed (by default: slow) -n [ --name ] arg specify target name e.g. CC2530 etc. --allow-overlapping-records allow overlapping records in hex files, the last one wins (by default: they are disallowed) -i [ --read-info-page ] arg read info pages -a [ --read-mac-address ] read mac address(es) -b [ --write-mac-address ] arg write (secondary) mac address -p [ --preserve-mac-address ] preserve (secondary) mac address across writing -r [ --read ] arg read flash memory -e [ --erase ] erase flash memory -w [ --write ] arg write flash memory. -v [ --verify ] arg verify flash after write, method '(r)ead' or '(c)cr' (used by default) --reset perform target reset -t [ --test ] search for programmer and target -l [ --lock ] arg specify lock data in hex numbers or by string: debug[;pages:xx] -s [ --flash-size ] arg specify target flash size in KB Supported targets: CC2530 CC2531 CC2533 CC2540 CC2541 CC2543 CC2544 CC2545 CC2510 CC2511 CC1111 CC1110 CC2430 CC2431 Supported programmers: VID: 0x0451 PID: 0x16a2 Description: CC Debugger VID: 0x11a0 PID: 0xdb20 Description: SmartRF04 Evaluation Board VID: 0x11a0 PID: 0xeb20 Description: SmartRF04 Evaluation Board (Chinese) VID: 0x0451 PID: 0x16a0 Description: SmartRF05 Evaluation Board
Если подключить свисток и программатор:MacBook-Pro:cc-tool user$ ./cc-tool -t Programmer: CC Debugger Target: CC2531 Device info: Name: CC Debugger Debugger ID: 5307 Version: 0x05CC Revision: 0x0044 Target info: Name: CC2531 Revision: 0x24 Internal ID: 0xB5 ID: 0x2531 Flash size: 256 KB Flash page size: 2 RAM size: 8 KB Lock data size: 16 B
Я не привожу фотографий подключения свистка к программатору и их обоих к компьютеру. Видео и текстовых инструкций в избытке, можно посмотреть, например, тут. Кратко будет так. Нужно два порта USB на компьютере: к одному подключается программатор, ко второму - сам свисток. Через специальный кабель, идущий в комплекте с программатором, свисток к нему подключается. Важно, что ключ на разъеме, подключаемому к свистку, должен смотреть в центр платы свистка (в сторону кнопки)
Теперь шьем... Нет, вначале качаем прошивку. Я чаще в руководствах встречал ссылку на прошивку Koenkk/Z-Stack-firmware, поэтому пока взял ее. Не погружался в отличия от других. Как минимум она поддерживается Zigbee 3.0. Сам автор не рекомендует использовать Zigbee 3.0 на CC2531, так как работает не быстро и поддерживает до 20 устройств. Но я пока не планирую выходить за это количество. Поэтому взял прошивку с поддержкой Zigbee 3.0. Прошивку надо скачать и разархивировать. В архиве 2 файла. Нужен CC2531ZNP-with-SBL.hex. Эта прошивка поддерживает serial boot loader (SBL). Что это, написано тут. Если кратко, то возможность обновить в будущем прошивку без потери настроек (карты устройств).
Копируем файл прошивки в каталог со скомпилированным cc-tool. Убеждаемся, что в консоли вы в директории с cc-tool, и шьем новый микрокод:
MacBook-Pro:cc-tool user$ ./cc-tool -v -f -e -w ./CC2531ZNP-with-SBL.hex
Programmer: CC Debugger
Target: CC2531
Erasing flash...
Completed
Writing flash (241 KB)...
Completed (2.55 s.)
Verifying flash...
Completed (1.10 s.)
После окончания прошивки надо отключить программатор от свистка, сам свисток вынуть из USB и вставить обратно. В выводе команды ls /dev появятся два новых устройства: cu.usbmodemFA141 и tty.usbmodemFA141
В качестве памятки самому себе оставлю ссылки на найденные полезные ресурсы
- zigpy-znp command line tools:
Репозиторий
Документация - Zigbee2MQTT
Getting started - zigbee-shepherd - шлюз ZigBee
Репозиторий
Комментариев нет:
Отправить комментарий