Меняем USB Zigbee стики (миграция) на CC2652. Проблемы и ошибки перехода // FAQ (Update)

Я закупил практически все версии стиков последних модификаций и хочу поделиться обобщенными наработками их использования. Большого поста не будет. И так суть поста. Я купил – подключил, а оно не заработало 🙂 Что делать ?

Ошибка вида “Mar 10 21:38:11 ihome npm[11193]: Zigbee2MQTT:debug 2021-03-10 21:38:11: Using zigbee-herdsman with settings: ‘{“adapter”:{“concurrent”:null,”delay”:null},”backupPath”:”/opt/zigbee2mqtt/ data/coordinator_backup.json”,”databaseBackupPath”:”/opt/zigbee2mqtt/data/database.db.backup” ,”databasePath”:”/opt/zigbee2mqtt/data/database.db”,”network”:{“channelList”:[11],”extendedPanID” :[221,221,221,221,221,221,221,221],”networkKey”:”HIDDEN”,”panID”:6754},”serialPort”:{“pat h”:”/dev/ttyUSB0″,”rtscts”:false}}’.

Собственно а где ошибка то ? Она в следующем. Если мы запускаем сервис zigbee2mqtt, то все зашибись. Сервис собственно, то работает (Active), а вот в HomeAssistant он в Offline, девайсы также не работают (видим только последние статусы Zigbee устройств которые подгружаются из файла state.json в папке zigbee2mqtt. В логах соот-но ошибок нет. Все чисто. Но если мы z2m запустим не как сервисом systemctl start zigbee2mqtt, а вот так

 /opt/zigbee2mqtt/npm start

то картина будет иная через минуту после запуска

Zigbee2MQTT:info  2021-03-10 21:49:10: Starting Zigbee2MQTT version 1.18.1 (commit #a43d1f3)
Zigbee2MQTT:info  2021-03-10 21:49:10: Starting zigbee-herdsman (0.13.71)
Zigbee2MQTT:debug 2021-03-10 21:49:10: Using zigbee-herdsman with settings: '{"adapter":{"concurrent":null,"delay":null},"backupPath":"/opt/zigbee2mqtt/data/coordinator_backup.json","databaseBackupPath":"/opt/zigbee2mqtt/data/database.db.backup","databasePath":"/opt/zigbee2mqtt/data/database.db","network":{"channelList":[11],"extendedPanID":[221,221,221,221,221,221,221,221],"networkKey":"HIDDEN","panID":6754},"serialPort":{"path":"/dev/ttyUSB0","rtscts":false}}'
Zigbee2MQTT:error 2021-03-10 21:50:12: Error while starting zigbee-herdsman
Zigbee2MQTT:error 2021-03-10 21:50:12: Failed to start zigbee
Zigbee2MQTT:error 2021-03-10 21:50:12: Exiting...
Zigbee2MQTT:error 2021-03-10 21:50:12: Error: AREQ - ZDO - stateChangeInd after 60000ms
    at Timeout._onTimeout (/opt/zigbee2mqtt/node_modules/zigbee-herdsman/dist/utils/waitress.js:46:35)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! zigbee2mqtt@1.18.1 start: `node index.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the zigbee2mqtt@1.18.1 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

Решение проблемы.

  • если у вас zigbee2mqtt младше версии 1.8.1 то обновляемся на последнюю сразу (для CC2652 это актуально в первую очередь)
  • если не помогло то прошиваем стик по новой по предыдущей статье. Вылечить это не удается после смены стиков никак. Только потеря времени. Все стики CC2538/CC2652 прошиваются элементарно.

Ошибка вида: “Coordinator failed to start, probably the panID is already in use, try a different panID or channel #”. Координатор не может работать на panID предыдущего стика.

Корень этой проблемы может быть разный. Мой случай был такой : криво прошит. Я получил новый стик и он сразу выдал вот отакую ошибку.

Решение проблемы.

Решение этой проблемы например можно посмотреть здесь. Я эту проблему решал ради спортивного интереса 1.5 дня. Не взлетело. 🙂 В итоге я просто перешил стик через USB порт.  Мой дефолтный pan_ID был 6754. Решением еще может быть смена pan_id на +1 выше т.е. 6755. Но тогда вам нужно переспарить всю Zigbee сеть, удовольствие еще то. Также не помогала переустановка Zigbee2mqtt с нуля. Но мне здесь кажется, что проблема именно в кривой прошивке. Так ранее я менял стик CC2538 на CC2652 RFStar и такого не было. Как правило отваливаются роутеры. А роутеры это ВСЁ. В моем варианте при смене стика CC2538 на CC2652 с разными Zigbee версиями прошивки удалось восстановить сеть из роутеров путем обесточивания их от сети на некоторое время 🙂 А вот на стике CC2652 Ebyte, проблему вылечить не удалось (при замене СС2652 RFStar на CC2652 Ebyte) – только перепрошивка помогла последнего – и сразу все взлетело.  Когда вы получаете новый стик от продавца старайтесь не подключать его к другим системам, а сразу заменять на рабочем сервере.

Вопрос типа: “Подключил новый стик V4 вместо V3, а он не работает”

Ответ типа.

Сначала настраиваем правильно порт USB порт стика. Стик V3 CC2528 живет на порту в raspberry ttyACM0, стик V4 CC2652 живет на порту ttyUSB0. Посмотреть можно более детально командами:

pi@ihome:~ $ ls -l /dev/serial/by-id

Вопрос типа: “Как восстановить базу Zigbee всех моих устройств”

Ответ типа.

База данных хранится в самом каталоге zigbee2mqtt. В папке дата необходимо заменить два файла на резервные это : configuration.yaml и database.db. Необходимо сначала остановить zigbee2mqtt сервис и только после этого переписать эти файлы. Также рекомендую бэкапить ежедневную базу /var/lib/mosquitto/mosquitto.db

Вопрос типа: “Как обновить Zigbee2mqtt”

Ответ типа.

я использую скрипт который идет в составе самого проекта. Он находится в корне папки zigbee2mqtt с именем uptade.sh при запуске которого имеем результат

pi@ihome:/opt/zigbee2mqtt $ ./update.sh
Stopping Zigbee2MQTT...
Creating backup of configuration...
Updating...
remote: Enumerating objects: 111, done.
remote: Counting objects: 100% (111/111), done.
remote: Compressing objects: 100% (58/58), done.
remote: Total 111 (delta 82), reused 62 (delta 53), pack-reused 0
Receiving objects: 100% (111/111), 384.50 KiB | 3.10 MiB/s, done.
Resolving deltas: 100% (82/82), completed with 27 local objects.
From https://github.com/Koenkk/zigbee2mqtt
   b9c69f9..df670a8  dev        -> origin/dev
....
added 920 packages in 96.079s
Restore configuration...
Starting Zigbee2MQTT...
Done!

Обновляем от имени пользователя на которую выданы права папки. В моем случае это пользователь pi.

Вопрос типа:  “Как сконфигурировать Zigbee2mqtt”.

пример конфига configuration.yaml

homeassistant: true
permit_join: false
mqtt:
  base_topic: zigbee2mqtt
  server: 'mqtt://localhost:1883'
  user: mqtt_user
  password: Password
serial:
# for USB Stick CC2652
  port: /dev/ttyUSB0
# for USB Stick CC2538
#port: /dev/ttyACM0
  baudrate: 115200
queue:
  delay: 5
advanced:
  log_level: debug
  log_file: zigbee.log
  log_rotation: true
  network_key:
    - 235
    - 214
    - 41
    - 96
    - 88
    - 138
    - 149
    - 10
    - 92
    - 225
    - 245
    - 94
    - 141
    - 240
    - 190
    - 182
  channel: 11
  rtscts: false
  pan_id: 6754
devices:
  '0x00158d0001157be6':
    friendly_name: '0x00158d0001157be6'
zigbee_shepherd_devices: true

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

Вопрос типа: “Как беспроблемно мигрировать на новый стик”

Ответ типа.

Никак. Подводных камней хватает. Но есть рекомендации.

  • не менять параметры channel – потребуется переспаривание всех Zigbee устройств
  • сразу прописать в конциг pan_ID: pan_id: 0x1a62 (это дефолтное занчение), или выберите что-то свое (например: pan_id: 0x1a63).
  • какой канал выбрать ? слышал многие рекомендуют 15 (типа поддерживает много устройств при спаринге). Выбирайте его. У меня на 11 все нормально работает. Многие координаторы устройства в вашей новой сети стараются использовать 11 канал. Чтобы не было накладок стоит прописать канал сразу. Также при построении нескольких Zigbee сетей используются разные каналы (?)
  • Два USB Zigbee стика на raspberry не уживутся.
  • После миграции есть большая вероятность что отвалятся роутеры в общей сети. Потребуется их обесточить на время от силовой сети.

Вопрос типа: “Многие роутеры в сети отвалились и не поднимаются длительное время”

Ответ типа.

Это беда многих Xiaomi роутеров. Они не очень дружно работают со стиком CC2538, а также странно работают со стиком на базе CC2652. Для перестроения Zigbee их этих роутеров необходимо полностью обесточить на несколько секунд их (я отключаю полностью дом). В течении получаса сеть должна восстановиться. Внимательно уделяем связям между роутерами и координатором. Устройства автоматически подтянутся как только сеть из роутеров примет должны вид как на картине ниже (эта сеть только восстанавливается)

Не стоит доверять картам Zigbee сети для оконечных устройств. Это общее представление. Делаем акцент как между собой и коодинатором общаются роутеры.

Вопрос типа: “Какому стику отдать предпочтение CC2652 RFSTAR или EBYTE”

Ответ типа.

Мое предпочтение от Ebyte. Мне кажется с ним менее замороки при миграции, менее затраченного времени и работал он у меня с полпинка. Хотя бытует мнение что все равно, это одно и тоже. Не буду холиварить – Ebyte ветеран. У обоих полные возможности не раскрыты. Также для каждого стика своя выпускается отдельная прошивка. Я остановился на координаторе V4 CC2652 Ebyte, в качестве роутерова буду использовать CC2538 Ebyte для расширения сети. Для тех кому нужна стабильность : V3 CC2638 прошитый координатором.

Вопрос типа: “Что с этим делать? ;(“

Ответ типа.

Ошибка говорит за себя. У вашего устройства (а это скорее какой-нидь роутер в сети) нет связи с координатором. Решение проблем : если это стик – обновляем firmware https://github.com/Koenkk/Z-Stack-firmware/tree/master/coordinator/Z-Stack_Home_1.2/bin/source_routing , что-то другое из роутера : обестачиваем от сети и вновь подключаем.

Вопрос типа: “Что такое pan_id и могу я его поменять”

Ответ типа.

По умолчанию настройки zigbee2mqtt конфигурация настроена на канал (Channel) 11 и pan_id 6754 (в конфиге это строка задается вот так: pan_id: 0x1a62 или нативно pan_id: 6754. 🙂 Если включить Join и посмотреть лог вы это увидите своими глазами. Поэтому важно знать рабочую версию стика на какой конфигурации он приземлился перед его заменой на другой стик. Если вы поменяет Channel на другой то все устройства придется переспарить. Если вы поменяете pan_id, то по сути вы просто создадите новую чистую подсеть Zigbee, в которой также придется переспарить Zigbee датчики, чтобы они туда влетели. Один Zigbee датчик может работать в одной Zigbee сети.

Вопрос типа: “Как быть с отказоустойчивостью стиков и всей Zigbee сети”

Ответ типа.

На моей памяти все стики живы и здоровы. Начиная от CC2530 и заканчивая CC2652 + SLS шлюзов. Чтобы бы, что-то отказало аппаратно … нееееееее! Но всегда под боком у меня есть дублирующий стик. Чтобы cломалась сеть Zigbee … а вот эт легко 🙂  Поломка может двух типов :

  • отказ сервера домашней автоматизации (Raspberry, Orange, Nuc и т.п.). Здесь я вижу пока одно : купить дублирующий идентичный “мини-пк” (у меня это Raspberry Pi4 2Gb) и пересадить братков в кластер. Этот вариант требует дополнительных затрат и времени. У меня он в проработке. Есть менее затратные варианты : на уровне Linux 🙂
  • невероятный … но отказ работы стика. Как правило проблемы возникают не в самом стике, а в программном обеспечении (том же например z2m). Но заставить просто работать одновременно оба стика в сети это пока проблема т.к. в Zigbee одной сети может быть только ОДИН координатор работающий на определенном канале и идентификаторе PAN. А стик наш дублирующий. Поэтому вариант здесь : изначально настроить второй стик на такую же конфигурацию и положить его на полку. 🙂 В случае физической травмы стика мы меняем пациента на здорового …. Сделаю акцент на SLS v4 – не стоит игрушка своих денег (отвратительная поддержка в сообществе, работа с DiY устройствами, сырой и глючный.

 

Вопрос типа: “Работал стик и сработал, что-то не так пошло и перестал работать” 🙂

Ответ типа.

– для получения (изучения) ошибкок работы стика можно использовать командную строку вида

sudo journalctl -u zigbee2mqtt.service -f

при это желательно открыть две сессии (терминала) по ssh. На одной выполнить команду выше, на второй выполнить 

sudo systemctl restart zigbee2mqtt.service

смотрим в терминал первой команды и копируем (собираем/анализиуем) лог, что там происходит. Только на основании этого лога можно двигаться дальше.

Вопрос типа: “Удалил устройство в HA (z2m), и далее не могу его вновь спарить”

Ответ типа.

После удаления в системе остаются следы. Я рекомендую выполнить некоторые действия для чистики системы от них. Нам потредуется для начала определить ID (что то типа 0x00158d00013fee0a)  устройства и только после оного двигаться далее.

Zigbee2mqtt (чистка)

  • открываем /opt/zigbee2mqtt/data/configuration.yaml и удаляем наш ID
  • открываем /opt/zigbee2mqtt/data/database.db и удаляем наш ID
  • рестартим sudo systemctl restart zigbee2mqtt.service

 

MQTT брокер (чистка)

  • используем утилиту например MQTT Explorer и аккуратно чистим

HomeAssistant (чистка)

заходим /home/homeassistant/.homeassistant/.storage и ищем в файлах наш ID (например через MC)

открываем найденные файлик и ищем наш ID, удаляем все согласно шаблонам.

заходим в Web интерфейс HomeAssistant и там ищем следы нашего ID

В некоторых случаях кол-во шагов может уменьшиться. Рестартим HomeAsistant и начинаем переспаривать по новой устройство.

Вопросы ?

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
6 комментариев
Популярные
Новые Старые
Межтекстовые Отзывы
Посмотреть все комментарии
Егор
Егор
23.03.2021 08:10

День добрый! Помогите, пожалуйста! Поменял стик на V4, но HA пытается подключиться к старому. Ничего не помогло. Переустановил HA и с нуля и тоже самое-подключается к Z-Stack, а не к новому. Подскажите, пожалуйста, что делать в таком случае? Новая прошивка стика поможет и если да, то какую версию ставить?

Егор
Егор
23.03.2021 21:33
Ответить на  admin

Вечер добрый! Прошу прощения за неполные данные. Был стик cc2531, поставил v4. Не получилось. Переустановил НА, воткнул сразу v4 и опять, с самого начала такая-же ошибка. Вот лог. [s6-init] making user provided files available at /var/run/s6/etc…exited 0. [s6-init] ensuring user provided files have correct perms…exited 0. [fix-attrs.d] applying ownership & permissions fixes… [fix-attrs.d] done. [cont-init.d] executing container initialization scripts… [cont-init.d] socat.sh: executing… [21:26:34] INFO: Socat not enabled, marking service as down [cont-init.d] socat.sh: exited 0. [cont-init.d] zigbee2mqtt.sh: executing… [21:26:35] INFO: MQTT available, fetching server detail … [21:26:35] INFO: MQTT server settings not configured, trying to auto-discovering … [21:26:35] INFO: Configuring… Подробнее »

Егор
Егор
23.03.2021 23:13

Получилось! Перепрошивка + pan id поменял. Огромнейшее спасибо!!!!

6
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
()
x