blog.vyoralek.cz

DiY – Zigbee router CC2530

Máte rozsáhlý byt či dům a chcete zlepšit sílu a dosah Zigbee signálu? Pak se podívejte jak si vytvořit vlastní Zigbee router, který vám tenhle problém pomůže vyřešit.

Nejprve by bylo dobré se zamyslet proč se vlastně do stavby vlastního routeru pustit? Pomoct by nám mohla drobná rekapitulace ohledně toho jak Zigbee vlastně funguje.

?Pokud si chcete přečíst o Zigbee technologii více, doporučuji si nejprve projít můj článek o Zigbee pro Xiaomi a o použití vlastní gateway Zigbee2Mqtt pro HA a nebo deCONZ pro HA.

Ze schématu vidíme, že hlavním středem celé sítě je tzv. Zigbee Coordinator (gateway mezi Zigbee sítí a naší lokální sítí). Vzdálenost mezi tímto prvkem a Zigbee End Device (koncovým zařízením) přímo ovlivňuje kvalitu signálu a tedy možnosti si mezi sebou povídat.

Pro lepší představu si můžeme představit analogii se sítí WiFi, kdy náš například telefon komunikuje s WiFi AP a jakmile jsme od tohoto AP příliš daleko signál ztratíme. V případě WiFi se tento problém řeší dalšími WiFi AP.

Jednou z největších výhod Zigbee technologie je fakt, že koncové zařízení pod trvalým napájením (tj. nejsou na baterii) umí jednak komunikovat s koordinátorem, ale také vytvořit prvek sítě označovaný jako Zigbee Router (modře na schématu).

Jakmile se nyní podíváte zpět do schématu Zigbee výše bude vás už asi jasné, že routery

  1. přinášejí celé síti mnohem větší stabilitu – z jednoho bodu se do dalšího jde při větším počtu routerů dostat často více trasami
  2. prodlužují dosah Zigbee sítě – koncové zařízení tak může být od koordinátoru mnohem dále
  3. zvětšují počet možných zařízeních registrovaných do Zigbee sítě – v případě firmware pro Zigbee2Mqtt je bez routeru možné registrovat cca. 15-20 zařízeních. Každý další router pak přidává dalších možných až 21 zařízení (v případě použití firmware níže)

Přidání routeru do naší Zigbee sítě tak dává smysl zejména ve větších bytech a je téměř nezbytností v případě domu a nebo v případě pokud máme v plánu mít na síti opravdu hodně zařízeních z nichž většina bude na baterie – např. různé senzory.

Nyní už víme proč se do stavby routeru pustit a pojďme se podívat jaké součástky na stavbu routeru budeme potřebovat.

Jednotlivé komponenty

CC2530+CC2591 ZigBee Wireless Module w/ Antenna

Hlavní srdce routeru, který obsahuje samotný Zigbee čip CC2530 a konektor na připojení externí antény.

$10.5 AliExpress ??
€19.2 eBay ??

HLK-PM03 AC-DC 220V to 5V 3.3V Power Module

Napájecí modul, které se postará o převod 220V na 3.3V potřebné pro Zigbee modul.

$2.4 AliExpress ??
€4.37 Amazon ??

Waterproof Black DIY Housing Instrument Case ABS Plastic Project Box

Hezká plastová krabička do které všechny komponenty schováme.

$1.6 AliExpress ??

2Pin Cable 1.5Meter 250V 2.5A Power AC EU

Napájecí dvoužilový kabel s koncovkou do zásuvky.

$3,1 AliExpress ??

Dupont Line 10cm Female+Female

Propojovací kabely pro programování a propojení napájecího modulu se Zigbee modulem.

$0.6 AliExpress ??

CC Debugger – Bluetooth / Zigbee Emulated Programmer

Programátor Bluetooth / Zigbee čipů od firmy Texas Instruments – použijeme pro nahrání firmware do Zigbee modulu.

$8.5 AliExpress ??
£14.8 eBay ??
€11.6 Amazon ??

Alternativně:

CC2530 ZigBee Wireless Module w/ Antenna

Alternativní Zigbee modul, který obsahuje stejný čip, ale nemá zesilovač signálu CC2591.

$4.6 AliExpress ??
€18.8 eBay ??
€9 Amazon ??

SmartRF04EB Programmer

Alternativní Bluetooth / Zigbee programátor pro čipy od firmy Texas Instruments – nemám zatím odzkoušeno.

$4 AliExpress ??
€9.5 eBay ??
€9.9 Amazon ??

Ve finále budeme mít hotový produkt vypadající takto:

Zigbee router CC2530 vlastní výroby

CC2530 vs CC2530+CC2591

Jak jste si mohli všimnout v seznamu výše máme k dispozici dva velice podobné produkty s téměř totožným označením. Jediným rozdílem je CC2591 v názvu navíc a na první pohled větší rozměr.

Zigbee desky CC2530 vs CC2530+CC2591

Hlavním rozdílem je přítomnost čipu CC2591 u větší verze, který má nastarosti zesílení signálu. Zigbee CC2530 bez tohoto čipu by měla být dosah až 400m a verze s CC2591 pak teoreticky až 1000m. Větší dosah je ale vykoupen i cenou, která je dvojnásobná.

Záleží tedy hlavně na použití – pokud předpokládáme, že zařízení nebudou od routeru až tak daleko, pak si určitě vystačíme i se základnější verzí. Naopak na delší vzdálenosti a nebo dosah přes více překážek je vhodné si připlatit za verzi s CC2591.

?Pokud nepoužijete přímo výše uvedené linky na produkty dejte si při koupi pozor zda deska obsahuje čip CC2530F256 – číslo na konci označuje velikost flash paměti a většina firmware je kompilována právě pro tuto velikost, tj. 256 kB.

Kompletace do krabičky

V závislosti na použité krabičce si můžete zvolit rozmístění dle možností. V mém případě se do krabičky poměrně ideálně vejde jak větší verze CC2530 tak i převaděč AC 220V na DC 3.3V.

Začal jsem vyvrtáním díry na anténu vrtákem velikosti 7 a následně bylo potřeba dovnitř do patřičné výšky dle díry umístit CC2530.

Dále bylo potřeba napájet kabely 220V na správné konektory napájecího modulu (AC stranu) a tento modul rovněž umístit do krabičky.

Posledním krokem je pak pomocí Dupont kabelů propojit napájecí modul s levými horními piny CC2530.

Jelikož se jedná o první iteraci kterou jsem vyrobil, není provedení ideální. Pohrávám si s myšlenkou umísit CC2530 společně s napájecím modulem na jednoduchou PCB desku 3x7cm a mít tak vše mnohem více pevnější.

Druhá varianta by mohla být mít napájení úplně mimo a použít mnohem menší krabičku pouze s CC2531 a konektorem pro adaptér.

Pokud jste se někdo už pustit do výroby stejného produktu budu rád když mi pošlete svou verzi klidně do emailu a já ji sem přidám pro inspiraci.

Nahrání firmware

Postup je velice podobný tomu, který jsem již popisoval pro CC2531 – USB verzi. Budeme ale potřebovat vědět význam jednotlivých pinů, které jsou u CC2530 trochu jinak umístěné pro verzi bez / s CC2591.

Programování prostřednictvím CC Debuggeru

Nejjednodušší verzí jak nahrát firmware do CC2530 je použít CC Debuggeru (alternativně SmartRF04EB – potvrzeno v komentářích, že skutečně funguje také), který se na jedné straně připojí přes USB do počítače a na druhé jednotlivé piny propojíme s CC2530 dle následujících schématek:

Image result for debugger pinout
CC Debugger
Image result for cc2530 pins
Verze 2530
Image result for cc2530 pins
Verze 2530+CC2591

Nejsem si úplně jistý zda je to povinné, ale já jsem ještě propojil PIN2 z CC Debuggeru na VCC pin vedle RST u CC2530.

CC2530 připojený k CC Debuggeru

Jakmile máme vše propojeno a CC Debugger svítí zeleně můžeme začít s nahráváním. Pokud ještě nemáte na počítači nainstalovaný CC tool pak doporučuji kouknout do předchozího článku, kde to podrobně popisuji jak pro Windows tak i pro Linux / macOS.

Správný firmware pro router v závislosti na použité desce si stáhneme z GitHubu. V případě Linuxu / macOS a CC2530+CC2591 pak instalaci spustíme pomocí příkazu:

sudo ./cc-tool -e -w router-cc2530-cc2591-diag.hex

… a měli bychom vidět postup:

  Programmer: CC Debugger
  Target: CC2530
  Target is locked.
  Erasing flash...
  Completed
  Writing flash (197 KB)...
  Completed (14.87 s.)

Párování routeru do Zigbee sítě (zigbee2mqtt)

CC2530 vložíme zpět do krabičky pokud ho tam ještě nemáme a odpojíme všechny kabely, naopak připojíme napájení, krabičku zavřeme a zasuneme do elektřiny.

Zde přichází z mého pohledu dost velký mínus CC2530 oproti CC2531 a to v podobě chybějící led diody. Po zasunutí do elektřiny tak nebudete mít vůbec žádnou zpětnou vazbu jestli zařízení funguje a v jakém je stavu.

Je potřeba se proto podívat do logu zigbee2mqtt.

? Než začnete nezapomeňte Zigbee síť přepnout do stavu s povoleným párováním – permit_join = true

První známkou toho, že router je viditelný pro koordinátor naší Zigbee sítě je zpráva v logu o informaci s připojením nového zařízení:

Device '0x00124b000dc905f2' joined
MQTT publish: topic 'zigbee2mqtt/bridge/log', payload '{"type":"device_connected","message":{"friendly_name":"0x00124b000dc905f2"}}'

… a koordinátor začne zjišťovat informace o přidaném routeru, což by mělo skončit zprávou:

Successfully interviewed '0x00124b001f319f6c', device has successfully been paired

Device '0x00124b001f319f6c' is supported, identified as: Custom devices (DiY) [CC2530 router](http://ptvo.info/cc2530-based-zigbee-coordinator-and-router-112/) (CC2530.ROUTER)

Připárování zařízení a kontrola schématu sítě

Po přidání Zigbee routeru do sítě nám automaticky bude router fungovat jako záložní trasa pro všechny ostatní routery a koordinátor – můžeme vidět na schématu jako propojky i mezi ostatními routery.

Narozdíl od Wifi ale podle všeho na Zigbee nefunguje něco jako roaming pro koncové zařízení (tedy ty bez trvalého napájení), tj. pokud zařízení přenesete z jedné místnosti do druhé tak se automaticky nepřipojí k routeru s nejsilnějším signálem – což je škoda a zatím netuším, jestli se to nějak neplánuje, či zda to neřeší třeba Zigbee 3.0.

Je potřeba tedy koncové zařízení ze sítě odpárovat, přejít do místnosti kde ho chceme nově provozovat a kde máme nově signál z routeru a rovnou v této místnosti ho připárovat zpět.

Jak se odpárování a párování provádí záleží na zařízení, ale většinou je to pomocí podržení nějaké tlačítka po dobu 5 sekund. Popis jak na to pro konkrétní zařízení je možné najít například v detailu seznamu podporovaných zařízení pro zigbee2mqtt.

Pokud si nyní vygenerujeme mapu Zigbee sítě například pomocí addonu zigbee2mqtt Networkmap (jeden z pluginů pro Home Assistant Community Store) uvidíme, že k našemu novému routeru (např. níže diy_router01) jsou připojené dvě koncová zařízení (xiaomi_button01 a xiaomi_sensor02_temp), ale také další router (sonoff_switch04).

Mapa Zigbee sítě

Díky autodiscovery u Zigbee2Mqtt budeme mít router automaticky přidaný i do HomeAssistanta, kde se vytvoří dvě nové entity – síla signálu a informace o stavu.

Router v HomeAssistantovi

Nicméně reálné použití těchto entit není nějak extra užitečné – můžeme snad jedině rychle zkontrolovat zda je router připojený.

Vyzkoušel jsem, zda je možné router použít v případě deCONZ sítě, kde CC2530 není oficiálně podporované a funguje s dvěma omezeními:

  • tváří se jako světlo od Xiaomi (lumi.router)
  • ve schématu sítě úplně chybí spojnice mezi zařízeními připojenými k tomuto routeru

Zigbee bude určitě do budoucna častou součástí mých článků, jelikož je opravdu zajímavou alternativou k WiFi a navíc existuje opravdu obrovská nabídka úžasných produktů.

Budu rád pokud se podělíte o své postřehy a nebo dotazy v komentářích.

23 comments

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..

  • Mam dotaz – lze toto reseni pouzit pro prodlouzeni dosahu originalni xiaomi hubu?

    • Nejsem si úplně jistý, ale co jsem se pokusil o tom něco najít a vzhledem k tomu jak se router páruje si myslím, že spíše nikoliv :/

      • Myslim si to same, xiaomi gw je zamcena vec, v home assistantu funguje diky „hacku“.
        Ale taky bych se zeptal – zkousel jsem do HA dostat ten plugin na zigbee network, ale nic mi nezobrazuje. Musim tam mit nainstalovany ten vued3network pomoci tohodle prikazu? npm install vue-d3-network –save (jsem uplne marnej na linux..)
        dik
        t.

        • Myslíš tenhle ha_zigbee2mqtt_networkmap plugin? Já to instaloval prostřednictvím HACS a pak nebylo potřeba se starat o instalaci čehokoliv dalšího. Pouze přidat do konfigurace. Mohu to určitě doporučit, jelikož takhle má člověk i přehled o dostupných aktualizacích.

          • Jo presne ten 🙂 Proto se ptam, myslim, ze by to melo fungovat automaticky. Jediny co jsem udelal, ze jsem trochu upravil cestu k tomu .js souboru, ale zadnou vizualizaci nevidim (kartu s tlacitkem Refresh ano). Mam to na RPi3.

          • Aha, já to instaloval na dvě Hass.io a na obou to funguje. Jeslti najdu čas zkusím to ještě na testovací instanci co mám také na RPi3. Kdyby se ti to podařilo vyřešit dej pls. vědět čím to bylo.

          • Ahoj, už mi to jde.. chyba byla mezi klávesnicí a židlí, srry..

  • Jinak mam jeste jednu vec – pokud nekdo nechcete cekat az to prijede z ciny a tolik neresite centy, muzete to koupit tady: http://www.ebay.com
    Prijde to za par dni a rovnou si muzete rict o nahrani firmware a nepotrebujete programator. Ten muze dorazit z ciny za mesic.. Uz jsem to objednal 2x, stihl jsem jeden modul odpalit.. Akorat k tomu neni ten napajeci modul – to se da poresit USB nabijeckou a step-down modulem z 5V na 3.3V.

  • Ahoj, jen dávám info, že jsem právě vyzkoušel SmartRF04EB programátor a vše proběhlo úspěšně a bez problémů 🙂 Jako problém se zprvu jevila stále svítící červená Led, ale i tak flash proběhl úspěšně.

    • Ó supr, díky moc za potvrzení ?. Máme tak na výběr a cenově je to přeci jen o chlup lepší.

  • Zdravím, mám dotaz, mám CC2530+CC2591 a už jsem to zkoušel 3x přehrával FW a pořád nic.
    Zigbee2Mqtt pořád vidí router jen jako coordinator a samozřejmě zařízení nepřidá, výpis z logu je níže.
    Vše jsem dělal podle návodu výše, neví někdo co s tím ?

    zigbee2mqtt:info 2020-05-02 19:43:15: Zigbee: allowing new devices to join.
    zigbee2mqtt:info 2020-05-02 19:43:16: MQTT publish: topic ‚zigbee2mqtt/bridge/config‘, payload ‚{„version“:“1.13.0″,“commit“:“unknown“,“coordinator“:{„type“:“zStack12″,“meta“:{„transportrev“:2,“product“:0,“majorrel“:2,“minorrel“:6,“maintrel“:3,“revision“:20190608}},“log_level“:“info“,“permit_join“:true}‘

    • To co je v logu je výpis z koordinátoru, to je v pořádku. Povolení připojování tam máte. A to je vše co je v logu? Pak už nic dalšího? Jako docela blbé je, že CC2530 nemá nějakou diodu, která by alespoň ukázala, zda je zařízení živé. Zkusil bych proměřit zda jde do něj šťáva a pokud ano tak zkuste nahrát firmware ještě jednou, ale v programátoru odškrtněte Retain IEEE… matně si vybavuju, že to někdo někde doporučoval, že to pomohlo. Ale těžko říct tedy, pokud ho párujete poprvé tak by to nemělo hrát roli.

    • Ještě možná zbytečný dotaz, ale píšete, že jste překvapený, že se to hlásí jako koordinátor. Nahrál jste tam firmware pro router že? Tj. máte ještě nějaký jiný CC253x, kde je firmware pro koordinátor a snažíte se připojit ten s router firmware.

  • Dobrý den,
    díky za návod. Místo doporučované krabičky a flexošňůry jsem prohrabal krabici se starými nabíječkami a vyhrály to dva kousky od Nokie, jen jsem musel naskenovat rozříznutou krabičku a vytisknout na 3D tiskárně (Artillery Genius, díky mimochodem za tip) vytisknout mezikus aby se zdroj i modul vešly. Přikládám foto. https://ibb.co/ZgtS0XB

  • Zkusil jsem dnes router připojit do SONOFF ZIGBEE sítě a funguje.

  • Tak jsem si rikal, ze to je super vec az do te doby, nez jsem se docetl o nutnosti preparovani zarizeni. Skoda. Pres zarovky to routuje bez nutnosti parovani :-/ Ale pokud ma clovek opravdu hodne zarizeni a nema po dome non stop bezici kabicky s volnyma USB portama a dockerem, tak to asi bude muset takhle resit.

    Nastesti se vejdu do 20 zarizeni na patro a tak si vystacim s CC2531 USB donglem a u kazdeho mi bezi v dockeru Zigbee2MQTT s jinym base topickem a kady na jinem kanalu.

    Pres MQTT jsem ted pripojil i z-wave (zwave2MQTT), ale to spise pro to, abych mohl jednoduse presunout z-wave dongel blize k pripojenym zarizenim bez nutnosti zmeny konfigurace.

    Presel jsem z HASS na soustavu dockeru (appdaemon, homeassistant, mosquitto, 2x zigbee2mqtt, 2x zigbee2mqttAdmin, zwave2mqtt). Chvili mi trvalo, nez jsem zjistil, co pro me vsechno HASS delal a byl jsem prekvapen jak komplexni musi byt konfigurace mimo, ale celkove to je daleko flexibinejsi design a restart HA kvuli pridani nejakyho senzoru mi neshodi celou z-wave a zigbee sit.

    A kdyz uz jsme u toho, resi se u roteru nejak kanaly, na kterych router bezi?

  • Měl bych drobný dotaz jak byste řešil propojení dvou lokalit? Doma používám k plné spokojenosti přes rok dva DIY routery podle tohoto návodu, na jaře bych potřeboval přidat pár senzorů ze zahradní chatky vzdálené cca 800 metrů s přímou viditelností. Zvažuji 5GHz pojítko, existuje nějaká varianta jak distribuovat zigbee komunikaci po ethernetu aby se stále jednalo o jednu mesh síť s jednou gateway?

    • Odpovím si sám kdyby někdo potřeboval totéž. Nejlevnější řešení bylo použít jinou integraci (ZHA), hacknutou gateway z Lidlu (dopájení pinů, získání roota, předělání startup skriptů aby každé cvaknutí vypínačem nešlo přes čínský cloud) https://paulbanks.org/projects/lidl-zigbee/#gaining-initial-access
      Výsledkem jsou dva oddělené ZigBee meshe na jedné instanci HA, jeden doma, druhý (přes wifi pojítko) na zahradě.