Zigbee sniffer cc2531 windows

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, индикатор должен загореться зеленым цветом.

Читайте также:  New windows 10 creator update

Скачиваем и распаковываем прошивку для 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 .

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

Читайте также:  Чем активировать windows ultimate

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. После создания в системе отдельного пользователя и настройки запуска от его имени проблема ушла.

Прошивка cc2531/cc2530

Прошить модули и устройства на чипах cc2531/cc2530 можно несколькими способами.

Прошивка через CCDebugger

Приобрести CCDebugger можно например тут, либо чуть иной блок или даже вот такой.

Описание этого процесса есть в проекте zigbee2mqtt или тут

Прошивка используя Arduino/ESP/Raspberry

Прошивать можно напрямую с raspberry pi без дополнительных контроллеров — хорошо описано тут https://kvvhost.ru/2019/05/29/zigbee2mqtt-cc2531-raspberry-pi/

Еще один вариант — использовать VLK_DIY_Multi_Flasher от телеграм-пользователя @DJONvl

Обновление прошивки используя SerialBootLoader

Прошивки ZNP для cc253* имеют встроенный бутлоадер, который можно использовать для заливки обновленной прошивки в стик cc2531 или просто чип cc2530 без использования CCDebugger или Arduino, а через USB/UART.

Но для этого потребуется не обычная hex-прошивка, а специальная sbl-прошивка (Serial Boot Loader). Для координатора их можно найти в архивах по адресу https://github.com/Koenkk/Z-Stack-firmware/tree/master/coordinator (файлы с расширением .bin).

Под Windows sbl-прошивку надо прошивать через SerialBootTool. Она идет в комплекте с IAR, либо можно скачать отдельно тут http://processors.wiki.ti.com/index.php/File:SerialBootTool_1_3_2.zip

При старте SerialBootTool надо выбрать Zigbee. Затем выбрать SBL-прошивку (bin-файл). Выбрать и указать параметры порта, где подключен cc253*.

После этого, надо заново вставить стик cc2531 или отключить и заново подключить плату с чипом cc2530 и нажать Load Image. Именно в первую минуту после подключения доступен режим бутлоадера.

Выполнится прошивка и чипом снова можно пользоваться.

Сниффер Zigbee трафика в Linux

При разработке нового устройства с Zigbee весьма полезно, и кроме этого рекомендуется TI, использовать сниффер пакетов, для получения всеобъемлющей информации о том, что происходит в сети. TI рекомендует два решения:

  1. Ubiqua Protocol Analyzer — мощное решение для анализа сетей IEEE 802.15.4, у которого есть поддержка CC2531 USB стика. Данный стик я как раз планирую использовать в качестве сниффера. Минус данного решения в том, что приложение работает по подписке, которая стоит 65$ в месяц! Если у вас есть лишние 65$ в месяц, то как работать с данной программой можно прочесть в инструкции пользователя от TI.
  2. Wireshark — открытая и бесплатная утилита, которая может работать в паре с TI Packet Sniffer. Это уже более интересное решение, его и попробуем запустить, тем более что все уже довольно хорошо описано на страницах проекта zigbee2mqtt.
Читайте также:  Linux где папка ssh

Существует 2 версии данной утилиты: Packet Sniffer и Packet Sniffer 2, последняя работает с отладочными платами CC13xx или CC26xx Launchpad. Первая же версия работает с CC2531 USB стиком и она то нам и нужна. Первым делом нужно залить в CC2531 прошивку сниффера.

Прошивка CC2531 USB стика

Прошивка влючена в Packet Sniffer, качаем его. Т.к. прошивка доступна только как инсталлятор для Windows, то необходимо предварительно извлечь ее. Для этого нужно использовать утилиту 7zip.

Прошить CC2531 можно несколькими способами, но самый простой это использовать CC Debugger, который у меня есть и мне не придется использовать альтернативные способы прошивки.

Нужна будет утилита CC-Tool для которой требуется установить несколько зависимостей

После чего необходимо осуществить сборку CC-Tool

Из директории /udev утилиты скопируйте файл 90-cc-debugger.rules в /etc/udev/rules.d . После необходимо перезагрузить udev

Теперь можно подключить cc-debugger и CC2531 USB сниффер к компьютеру.

Если светодиод на отладчике горит красным, то необходимо нажать кнопку RESET, светодиод должен загореться зеленым. Если этого не происходит, то необходимо обратиться к руководству пользователя cc-debugger и искать причину неисправности. В моем случае меня ждал именно такой вариант.

Красное свечение светодиода говорит о том, что отладчик не может определить SoC, который к нему подключен. В руководстве сказано, что первым делом стоит обновить прошивку программатора. Но как оказалось проблема была в замыкании выводов GND и Target Voltage Sense на плате переходника.

После устранения замыкания прошивка сразу прошла успешно. Прошивка осуществляется командой:

Установка необходимых программ

Запуск сниффера пакетов

Запустить сниффер можно командой

Откроется окно wireshark и начнется запись пакетов. Но поскольку пакеты данных зашифрованы, нам необходимо добавить 2 ключа шифрования. Первый это Trust Center ключ, который одинаков почти для всех сетей Zigbee. И второй — ключ шифрования сети (Network Key).

Первый ключ добавляется через меню Edit > Preferences > Protocols > ZigBee . Здесь нужно выбрать уровень безопасности AES-128 Encryption, 32-bit Integrity Protection и нажать кнопку Edit. Откроется окно, в котором нужно создать новый ключ 5A:69:67:42:65:65:41:6C:6C:69:61:6E:63:65:30:39 с полем Byte Order, установленным в Normal.

Со вторым ключом все сложнее. Чтобы выяснить каков Network Key обратимся к настройкам демо проекта ccstudio, который я ранее разбирал в предыдущей статье. В моем проекте он задан последовательностью нулей, что делает сетевой ключ генерируемым случайно.

Но к счастью, ключ шифрования сети можно получить в момент добавления устройства к сети. Для этого мне пришлось отсоединить одно из устройств от сети и подключить его вновь. Ключ сети можно найти в пакете с Info полем, начинающимся со слов Device Announcement… Открываем данное сообщение и заходим в структуру ZigBee Network Layer Data > ZigBee Security Header . Здесь лежит наш ключ сети.

Точно также как и с первым ключом копируем его и вставляем через меню Edit > Preferences > Protocols > ZigBee . Теперь Wireshark может дешифровать сообщения, к примеру, в момент включения света можно получить сообщение, похожее на следующее:

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

Оцените статью