CC2531 jako router zigbee

CC2531 jako router zigbee

Niektóre urządzenia (np. czujniki Xiaomi), uchodzą za “bardzo wybredne”, jeśli chodzi o routery / repeatery / koncentratory zigbee, z którymi współpracują.
Rozwiązaniem może być router z CC2531 - wg autora oprogramowania routera zigbee do CC2531.

CC2531 z oprogramowaniem routera to całkowicie samodzielny urządzenie zigbee.

Programowanie

  1. pobieramy oprogramowanie ze strony zigbee2mqtt
    Supported adapters | zigbee2mqtt.io

  2. programujemy wg instrukcji

efekt:

sudo ./cc-tool -e -w CC2531_router_2020_09_29/router-cc2531-std.hex 
  Programmer: CC Debugger
  Target: CC2531
  Erasing flash...
  Completed       
  Writing flash (188 KB)...
  Completed (13.27 s.)

Parowanie z koordynatorem

Router dodajemy tak jak każde urządzenie zigbee. Jest on opisany w urządzeniach zigbee:

(nazwa jest CC2530 ale to błąd w opisie zigbee2mqtt)

Włącz tryb „parowania” na swoim koordynatorze, a następnie zasil/włącz CC2531, a połączy się on z siecią automatycznie.

Podczas parowania czerwona dioda LED będzie migać z częstotliwością jedno mignięcie na sekundę. Po sparowaniu z koordynatorem (podłączeniu do sieci zigbee), LED będzie wolno migać (jedno mignięcie co 4 sekundy).

w logach zigbee2mqtt pojawi się coś takiego

router pojawi się jako nowe urządzenie

i 2 encje w HA:

z czasem urządzenia końcowe powinny zacząć korzystać z połączenia przez router (połączenie na mapie z przerywaną linią to połączenia z routerem):

Problemy z parowaniem i ich rozwiązywanie

W razie problemów z parowaniem routera z koordynatorem

  1. Upewnij się, że tylko jedna sieć w pobliżu akceptuje dołączanie.
  2. Podłącz router blisko koordynatora (bliżej niż 1m).
  3. Zasil router, odczekaj 2 sekundy, wyłącz zasilanie. Powtórz ten cykl trzykrotnie (to spowoduje całkowity reset routera).

Jeśli to nie pomaga to wyłącz na chwilę koordynator, podłącz ponownie, jak uruchomi się serwis zigbee to włącz parowanie.

1 polubienie

ponoć to oprogramowanie działa lepiej z cc2531

ale jak pisałem PONOĆ

Czy ktoś skutecznie zmienił CC2531 w router poprzez wykorzystanie ESP8266 (NodeMCU)?
Próbuję po wcześniejszym wgraniu oprogramowania kontrolera do CC2531 zamienić go obecnie w router. Przygotowany plik router-cc2531-diag.bin po zamianie z hex z repozytorium:

Niestety próba wgrania oprogramowanie kończy się niepowodzeniem:

cezary@3020:~/CCLoader/SourceCode/Linux$ ./CCLoader /dev/ttyUSB0 router-cc2531-diag.bin 0
Comport open:
Device  : Default (e.g. UNO)

Baud:115200 data:8 parity:none stopbit:1 DTR:off RTS:off
File open success!
Block total: 512
Enable transmission...
Request sent already! Waiting for respond...
Begin programming...
1  2  3  4  5  6  7  Verify failed!
Program successfully!
File closed!
Comport closed!

Nigdzie nie znajduję informacji co może być przyczyną.

Masz na myśli wgranie firmware do CC2531 z wykozrystaniem NodeMCU?

Tak już to robiłem i to skutecznie.

EDIT:
Mam postęp, ale CC2531 nie chce się uruchomić. Brak reakcji na zasilanie po flashowaniu:

A skonwertowałeś .hex do .bin?

objcopy --gap-fill 0xFF --pad-to 0x040000 -I ihex <firmare>.hex -O binary <firmware>.bin

Swoją drogą czemu
router-cc2531-diag.hex
zamiast
router-cc2531-std.hex
?

Jeśli chcesz flashować bezpośrednio .hex to użyj metody z RPi.

Wcześniej masz

więc są problemy z zapisem (na RPi też się to zdarza, zdecydowanie lepiej się sprawdza RPi3 od RPi4), soft routera zajmuje chyba mniej niż połowę flasha, więc niby powinno być łatwiej niż koordynator.

Tak bez problemu, próby wykonałem z różnymi plikami.

router-cc2531-std.hex
router-cc2531-diag.hex
a nawet
router-cc2531-diag-usb.hex

Nie posiadam RPi, wykorzystuję ESP8266 (NodeMCU) z wgranym oprogramowaniem CCLoader

Mam komunikat o powedzeniu:

Upload successfully!
File closed!
Comport closed!

Ale CC2531 nie daje oznak życia, dioda się nie zapala. Nie jest widoczny na liście urządzeń USB, po wpięciu do kompa lsusb - bark widocznego urządzenia.
Nie chcę kupować CC Debuger’a dla tej jednej operacji, bardziej chodziło o wykorzystanie CC2531, który chodził do końca jako koordynator przed zakupem Conbee II. Flashowany był prze zemnie wcześniej tą samą metodą.
Pytanie, czy przed wgraniem nowego pliku bin należy wykonać czyszczenie erase?
Metoda z NodeMCU nie daje chyba tej możliwości.

No ja akurat wgrywam na RPi, bo mam pod ręką i zawsze czyszczę flash przed wgraniem, bo inaczej się to nie udaje.
Po stronie USB jeśli mnie pamięć nie myli nic specjalnego się nie zgłasza - przynajmniej w wersji STD (jest podbierane tylko zasilanie) będę w domu za parę dni to mogę sprawdzić jak się sprawy mają.

Jeśli chcesz zapalić LED to trzeba bodajże wprowadzić w tryb parowania (jednym z przycisków, nie pamiętam którym), ale po świeżym flashowaniu chyba powinien wystartować w trybie parowania (jakkolwiek głowy sobie za to nie dam uciąć).

Jak już będziesz miał go w sieci to będzie można drugi LED zapalić i zgasić programowo (na STD).

Ktoś może próbował użyć integratora “Sonoff ZBDongle-P ZigBee Dongle Plus” w AIS:
obraz
podobno działa z wersją ZigBee 1.22.x.