Projektas “MRH Smart home”– dažnių karai

Praktiškai du metus, nuo pat projekto pradžios, visi mūsų išmanaus namo tinklai kažkaip sugyveno ir nekėlė didelių problemų. Bet kaip ir daugelis karų, šis prasidėjo beveik nepastebėtas. Kažkur kažkoks jutiklis nesuveikė laiku arba be jokios priežasties pakeitė savo statusą. Arba vis dažniau pradėjau pastebėti, kad kai kurie jutikliai, kurie monitoringe rodomi kaip “online“ neperduoda informacijos į sistemą. Dar vėliai jau prasidėjo jutiklių atsijungimai nuo tinklo, tai pradėjo trikdyti namų signalizacijos darbą. Vis dažniau buvo negalima jos įjungti, nes reikalingi jutikliai buvo “offline“ arba priešingai, netikėtai suveikia aktyvuota signalizacija ar išgirsti Mycroft’o perspėjimą dėl pažeisto saugumo perimetro. Iš pradžių per daug nepergyvenau, o paprasčiausiai perjungdavau atsijungusius jutiklius iš naujo. Bet kai tų atsijungimų pradėjo daugėti, o prijungus vienus nuo tinklo atsijungdavo kiti, supratau, kad turiu bėdą su namų Zigbee2MQTT tinklu, o pradėjus aiškintis giliau, tapo aišku, kad namuose kilo dažnių karas. Iš karto perspėju, kad skaitymo bus nemažai ir tekstas bus pakankamai techninis, bet pasistengsiu kuo daugiau paaiškinti, kad ir nelabai techniniam skaitytojui būtų aišku.

Pirma paaiškinsiu, kas yra tas dažnių karas. Esmė yra tame, kad praktiškai visi išmanūs bevieliai įrenginiai, kurie komunikuoja su išmanaus namo sistema ar stotele, naudoja Wi-Fi, Zigbee, Thread ar Bluetooth protokolus ir dirba 2,4 GHz dažnių diapazone. Tad neretai nutinka, kad ryšio įranga, dirbanti su atitinkamu protokolu pradeda trikdyti kitus protokolus naudojančius įrenginius. Kad tai nebūtų nevaldomas chaosas, visi protokolai turi savo dažnių juostas, kurios yra vadinama kanalais. Kiekvienas protokolas ar, sakykime, technologija, turi savo kanalus, kurie yra sunumeruoti. pvz.:


Technologija Kanalų skaičius Dažnių juosta Pastabos
Wi-Fi (2.4 GHz) 11 arba 13 2.4 GHz Lietuvoje (Europoje) naudojama 13 kanalų, JAV – 11. Tik 3 kanalai (1, 6, 11) nesidubliuoja tarpusavyje.
Zigbee 16 2.4 GHz Naudoja kanalus nuo 11 iki 26.
Thread 16 2.4 GHz Thread remiasi tuo pačiu IEEE 802.15.4 standartu kaip ir Zigbee, jis taip pat turi 16 kanalų.
Bluetooth (Classic) 79 2.4 GHz Naudoja dažnių šuolių metodą (AFH), kad išvengtų trukdžių.
Bluetooth LE (Low Energy) 40 2.4 GHz 3 kanalai skirti reklamai (advertising), 37 – duomenų perdavimui.

Visi iš šių tinklų kanalų turi savo savo numerį ir tai yra svarbu tam, kad išvengti tinklų interferencijos tiek tarpusavyje, tiek ir su kaimynu tinklais. Kaimynų tinklai yra svarbu Wi-Fi atveju, nes kiti tinklai yra mažos galios, tad labai retai “iškeliauja“ už pastato ribų“. Tačiau palikime tai kol kas šone ir pirmiau išsiaiškinkime su pagrindiniu bėdos šaltiniu, t.y namų Zigbee tinklais.

Bet, prieš gilinantis į Zigbee tinklų diagnostiką ir optimizavimą noriu kiek paaiškinti apie šio tinklo terminologiją ir koncepciją, kad būtų aiškiau, apie ką aš čia pasakoju:

„Zigbee“ terminologija

„Zigbee“ tinklas – tai įrenginių su mažos galios skaitmeniniais radijo imtuvais tinklas, naudojantis mažo pralaidumo ryšio protokolą.

„Zigbee“ koordinatorius – tai aparatinės įrangos radijo adapteris, kuris tiesiogiai jungiamas prie to paties kompiuterio, kuriame veikia „Home Assistant“ arba tam skirtos stotelės.

„Zigbee“ maršrutizatoriaus įrenginys – tai aparatinės įrangos įrenginys, kuris visada maitinamas iš elektros tinklo (AC), pvz., elektros lizdai arba ventiliatoriai.

„Zigbee“ galinis įrenginys – tai aparatinės įrangos įrenginys, kuris paprastai maitinamas baterijomis (DC), pvz., nuotolinio valdymo pultai arba judesio jutikliai.

„Zigbee“ grupė – tai dviejų ar daugiau to paties tipo „Zigbee“ įrenginių rinkinys, kuris skiriasi nuo „Home Assistant“ grupių.

„Zigbee“ tinklo koncepcija

„Zigbee“ tinklas gali turėti tik vieną „Zigbee“ koordinatorių.

„Zigbee“ koordinatoriui gali būti prijungti keli „Zigbee“ maršrutizatoriai arba „Zigbee“ galiniai įrenginiai.

Prie kiekvieno „Zigbee“ maršrutizatoriaus įrenginio gali būti prijungti keli „Zigbee“ galiniai įrenginiai.

„Zigbee“ įrenginį galima prijungti tik prie vieno „Zigbee“ tinklo.

„Zigbee“ tinklai labai priklauso nuo kelių „Zigbee“ maršrutizatorių įrenginių, kad būtų galima išplėsti aprėptį ir padidinti įrenginių talpą.
Maršrutizatorių įrenginiai padeda perduoti pranešimus kitiems netoliese esantiems „Zigbee“ tinklo įrenginiams, todėl gali pagerinti diapazoną ir padidinti įrenginių, kuriuos galite pridėti, skaičių.

Taigi, karo metu namuose veikė dviejų standartų Zigbee tinklai: Zigbee2MQTT ir ZHA.

ZHA tinklas tuo metų turėjo 23 įrenginius, įskaitant per USB pajungtą koordinatorių ZBT-1 ir keturis maršrutizatorius. Ryšiui naudojamas 20 Zigbee kanalas. Patikrinus veikimą, buvo aišku, kad tinklas yra pakankamai stabilus ir visi galiniai įrenginiai yra aktyvūs ir komunikuoja tiek su koordinatoriumi, tiek ir su maršrutizatoriais.

Tačiau visiškai kitokia situacija buvo su Zigbee2MQTT tinklu, kuris tuo metu turėjo 65 įrenginius, įskaitant vieną, per USB pajungtą koordinatorių ZBDongle-E ir penkis maršrutizatorius. Ir čia tikrai vaizdas buvo kaip po karo.

Visų pirma – tai pastoviai nuo tinklo buvo atsijungę matomai, t.y offline ar pasyviai, kai įrenginys rodomas kaip online, bet nekomunikuoja, apie 12-15 įrenginių. Ir priežastys tokios varganos padėtie buvo kelios.

Pirma – tai labai prastas ryšys tarp tinklo įrenginių, Ryšio kokybė yra išreiškiama per LQI (angl. Link Quality Indicator) reikšmes, Kurios pagal bendras praktikas turėtų būti:

  • 200 – 255 (Puiku): Ryšys labai stabilus, duomenys perduodami be klaidų. Įrenginys idealioje vietoje.
  • 100 – 200 (Gerai/Vidutiniškai): Ryšys patikimas, tačiau gali pasitaikyti smulkių vėlavimų. Tinkama vieta daugumai jutiklių.
  • 50 – 100 (Silpna): Ryšys nestabilus. Įrenginys gali retkarčiais atsijungti („iškristi“ iš tinklo).
  • Žemiau 50 (Labai blogai): Didelė tikimybė, kad komandos nepasieks įrenginio. Reikalingas signalo stiprintuvas, t.y maršrutizatorius.

Tačiau tai tinka kai yra beveik idealios sąlygos. Kadangi Zigbee tinklas yra žemos galios tinklas, jis labai jautrus visokiems trikdžiams, kaip sienos, interferencija su kitais tinklais ar įrenginiais, kaip mikrobangų krosnelės, televizoriai ir pan. Tinklas reaguoja net į patalpoje esančius žmones ar uždarytas duris. Tad ryšio kokybė labai priklauso nuo aplinkos sąlygų ir paties tinklo topologijos. O aplinkos sąlygos tikrai yra netgi labai nepalankios tokio tipo tinklui.

Visa esmė yra mūsų namo konstrukcija. Pats namas yra mūrinis ir dar senos statybos. Pirmas aukštas ir pilnai mūrinis, kur sienos daugeliu atveju yra dviejų plytų storio ir tik viena – vienos plytos. Perdangos tarp aukštu ir rūsio yra lieto betono su plienine armatūra viduje. Maža to, rekonstruojant namą, atsirado grindų šildymas vandeniu, kas dar pastorino betono sluoksnį tar pirmo aukšto ir rūsio. Antrame aukšte atsirado papildomas medžio plokščių ir aliuminio sluoksnis, kad nebūtų šildomos pirmo aukšto lubos. antro aukšto vidinės sienos yra medinės (tašyti rąstai), padengtos medžio drožlių plokštėmis ir gipso kartonu, kas Zigbee tinklui tai nėra didelė problema.

Pagrindinė problema yra pirmas aukštas ir perdangos. Tad nieko nuostabaus, kad daugumoje atveju ryšys su galiniais įrenginiais buvo silpnas arba labai blogas. Bet kokio ryšio galima tikėtis tokiomis sąlygomis, jei, sakysime, yra viskas gerai su paties tinklo topologija?

Taigi, kokios ryšio kokybės galima tikėti tokiomis sąlygomis?


Ryšio kryptis Tikėtinas LQI Ryšio stabilumas Poveikis tinklui
Tas pats kambarys 170 – 230 Puikus Jokių problemų, kol nėra sienų tarp įrenginio ir maršrutizatoriaus.
Per 1 plytų sieną (tas pats aukštas) 70 – 110 Vidutinis LQI krenta drastiškai. Ryšys bus stabilus, bet nebe „idealus“.
Per 2 plytų sienas (tas pats aukštas) 20 – 50 Nesaugus Dažni vėlavimai, komandos gali „pasimesti“. Būtinas tarpinis maršrutizatorius.
Tiesiai per armuotą perdangą 0 – 20 Kritinis Ryšys praktiškai neįmanomas. Tikėtinas nuolatinis „Offline“.
Per laiptinę (iš aukšto į aukštą) 50 – 80 Patenkinamas Vienintelis patikimas kelias signalui „lipti“ aukštyn.

Tai, ką mačiau Home Assitant Zigbee ekrane tik patvirtino šituos skaičius. Tad nieko nuostabaus, kad turiu nepatikimą ir griuvinėjantį tinklą. Praktiškai niekur nebuvo aukščiau “Nesaugus“, antras aukštas “Nesaugus – Kritinis“ ir tik pavieniai atvejai, kai ryšys buvo “Vidutinis“. Aišku, kad reikia imtis priemonių, kurios pagerintų ryšių situaciją. Ir viena iš efektyvesnių priemonių – optimizuoti tinklo topologiją

Kaip ir minėjau, tinklas turi 65 įrenginius ir tai “pakabinta“ ant vieno koordinatoriaus ir penkių maršrutizatorių. Ir tai, kaip parodė esama situacija, tikrai nėra pakankama, tiek vertinant namo konstrukciją, tiek vertinant įrenginių skaičių. Pirmame aukšte yra koordinatorius, kuris tikrai nėra idealioje vietoje, t.y jis mano kabineto tolimesniame kampe prie komutacinės spintos, prikabintas prie virtualizacijos host’o per prailgintą USB kabelį. Šiaip rekomenduojama koordinatorių įtaisyti kuo arčiau pastato aukšto vidurio. Bet turint tiesioginį USB sujungimą, nelabai gali ką pakeisti. Maršrutizatorių kiekis, kur po du kiekviename aukšte ir vienas rūsyje taip pat nepakankamas. Reikia turėti menyje, kad pačių maršrutizatorių siųstuvai nėra labai galingi (ypatingai jei tai Tuya chipsetas), tad geriausiu atveju, jei geras ryšys su koordinatoriumi ir galiniais įrenginiais, jie komunikuos su 5-6 galiniais įrenginiais, jei prasčiau, tai bus 3-4, o kartais ir mažiau.

Todėl, norint kardinaliai pagerinti topologiją, reikia atsikratyti USB jungties ir padidinti maršrutizatorių skaičių, kad bent jau kiekvienoje patalpoje būtų po vieną ar du, priklausomai nuo galinių įrenginių skaičiaus kiekvienoje patalpoje. Su koordinatoriumi bus paprasta. Tam pasirinkau SLZB-06p10 įrenginį, kuris gali būti pajungtas prie Home Assistant serverio tiek per PoE jungtį, tiek ir per Wi-Fi. Yra pakankamai galingas, kad “pramuštų“ mūrines namo sienas. Kadangi šis įrenginys gali būti ne tik koordinatoriumi, bet ir galingu maršrutizatoriumi, tad buvo nupirkti du tokie įrenginiai. Maršrutizatorių skaičius nuo penkių išaugo iki keturiolikos, su mintimi, kad galinių įrenginių skaičius tik didės.

Pati migracija nuo vieno koordinatoriaus į kitą buvo nesunki ir viską pavyko padaryti per kokį pusvalandį, nes tai yra gerai dokumentuota ir nemažai pavydžių kaip tai padaryti. Jei norėsite, kad aprašyčiau per savo patirtį, rašykite komentaruose.

Kiek sunkiau sekėsi su antruoju SLZB-06p10 įrenginiu, kuris buvo sukonfigūruotas kaip maršrutizatorius. Jo niekaip nepavyko suporuoti su Zigbee tinklu. Buvo įtarimas, kad naujas koordinatorius yra per galingas ir jis “perrėkia“ kitus įrenginius. Bet galios kaitaliojimas negelbėjo. Pavyko tik nusukus maršrutizatoriaus anteną, o tai reiškė, kad pats maršrutizatorius buvo per galingas. Po to prasidėjo ilgas ir nuobodus žaidimas, kilnojant tiek koordinatorių bei maršrutizatorius per įvairias vietas, siekiant optimizuoti tinklo topologiją taip, kad ryšio kokybė tarp koordinatoriaus ir maršrutizatorių būtų LQI 100 – 200 (Gerai/Vidutiniškai), su galiniais įrenginiais ne žemiau nei LQI 50 – 100 (Silpna). Įvertinus, kokios ryšio kokybės galima tikėtis tokiame name, siekis tikrai buvo ambicingas.

Tai truko kelias savaites, nes Ziegbee tinklas yra labai inertiškas, o galiniai įrenginiai, kurių dauguma yra Nous arba Aqara, yra labai “konservatyvūs“ ir labai nenoriai keičia savo maršrutizavimo lenteles. Tad, kad pamatyti realų vaizdą, reikėjo palaukti bent parą mažiausiai, o kelios dienos buvo kaip tik. Kad visgi būtų kažkiek dinamikos su galiniais įrenginiais, jų “availability“ laikas, t.y. laikas, kai jie paskelbiami offline, jei prisistato tinklui, buvo sumažintas nuo standartinių 1500 minučių iki 60. Vėliau tai buvo grąžinta atgal, nes kai kurių tipų įrenginiams tai yra būtina.

Tas visas vargas tikrai atsipirko, nes pirmame aukšte praktiškai pavyko pasiekti norimų rezultatų, bet tai visiškai nepagerino situacijos su antru aukštu ir rūsiu. Kitas dalykas, kuris paaiškėjo, kad antrasis SLZB-06p10 įrenginys kaip maršrutizatorius yra praktiškai bevertis, nes negalima kaitalioti jo siųstuvo galingumo. Tad kur jį bepastatytum, jis, geriausiu atveju, komunikuos su kitais maršrutizatoriais, bet absoliučiai jokios komunikacijos su galiniais įrenginiais. Net jį perkėlus į antrą aukšta, tai nepadėjo su to aukšto prasta situaciją, nes ir tokiam galingam įrenginiui nepavyko “prasimušti“ pro perdangą į pirmą aukštą, kad užtikrinti bent kiek padorų ryši su koordinatoriumi.

Kad daugiau nekankinti ilgu skaitymu galiu pasakyti, kad viskas baigėsi net man neplanuota galutine Zigbee2MQTT topologiją, kuri užtikrino stabilų darbą visame name.

Reikalas tas, kad esamas tinklas buvo padalintas į du atskirus tinklus, įdiegiant antrą Zigbee2MQTT tinklą, skirtą antram aukštui, panaudojant antrą SLZB-06p10 įrenginį kaip to tinklo koordinatorių. Tiesa, teko visus antro aukšto įrenginius perjungti prie naujo tinklo juos perporuojant. Tai taip reiškė, kad reikėjo pataisyti visus susijusius Home Assistant ekranus, automatizacijas ir skriptus.

Tokie kardinalūs pertvarkymai leido minimizuoti interferenciją su namų Wi-Fi tinklu, kurio prieigos taškai (AP) yra labai galingi (skirti komerciniams tinklams). Jie buvo parinkti projektuojant namų tinklą, turint omeny ir namo konstrukciją, ir planuojamų aptarnauti įrenginių skaičių, įskaitant ir 4K kameras, kuris yra dabar didesnis nei visų Zigbee tinklų kartu sudėjus. Kažkada minėjau, kad tai buvo daroma naudojant Unifi projektavimo įrankį, kuris tikrai pasiteisino. Bandymai apriboti AP galią ar “pririšti“ juos prie tam tikrų Wi-FI kanalų iššaukė visu pirma problemas su SONOS kolonėlėmis, paskui kažkiek užkabino ir namų šviesų jungiklius, kurie dirba Matter over Wi-Fi protokolu. Kadangi tai prioritetinis tinklas, Zigbee tinklams teko taikytis prie Wi-Fi tinklo.

Pirma, kad sumažinti Wi-Fi tinklo slopinimo poveikį Zigbee tinklams, paprasčiausiai teko parinkti Zigbee maršrutizatorių vietas bent jau per 2 metrus nuo AP.

Antra – parinkti saugius nuo Wi-Fi įtakos Zigbee kanalus. Štai čia mes ir grįžtame prie dažnių karų ir pokalbio apie skirtingų technologijų, kurios naudoja 2,4 GHz dažnių diapazoną naudojamų kanalų ir ju numeracijos. Abiejų tinklų kanalų numeriai reiškia tam tikrus dažnių ruožus. Wi-Fi 2.4 GHz kanalai yra 1-13, o Zigbee yra 11-26. Iš pirmo žvilgsnio jei nežinome technologijų skirtumo, atrodo, kad turime persidengimą 11 kanale. Todėl būtina žinoti, kad Wi-Fi kanalai yra nelygu Zigbee kanalams, t.y jei kanalų numeriai ir sutampa, tai vis tiek yra kalbama apie skirtingas dažnių juostas.

Kadangi namų Wi-Fi tinklas yra labiau apkrautas ir dar turi “tvarkytis“ su kaimyninių Wi-Fi tinklų interferencijomis, jis yra valdomas Unifi Network sistemos automatiškai parenkant AP galią ir pastoviai optimizuojant visus Wi-Fi kanalus (ne tik 2.4 GHz.) naudojant sistemoje įdiegtą dirbtinį intelektą, kas duoda tikrai puikius rezultatus. Taigi, mums belieka parinkti “saugius“ Zigbee kanalus, įvertinant kokie Wi-Fi kanalai yra dažniausiai naudojami:


Wi-Fi Kanalas (2.4 GHz) Užimamas dažnių ruožas Tiesiogiai „triukšmauja“ ant Zigbee kanalų Saugiausi Zigbee kanalai šiuo atveju
1 kanalas Žemiausias 11, 12, 13, 14 20, 25, 26
6 kanalas Vidurinis 16, 17, 18, 19 11, 25, 26
11 kanalas Aukštas 21, 22, 23, 24 11, 15
13 kanalas Aukščiausias 23, 24, 25, 26 11, 15, 20

Taigi, abiem Zigbee tinklams buvo parinkti kanalai atitinkamai pirmame aukšte 25 ir antrame 11 (default). ZHA tinklas taip pat liko su savo 20-tu kanalu. Kodėl ne 26-as, kas dar labiau patrauktų Zigbee tinklą nuo Wi-Fi įtakos. 26-as kanalas yra nesuprantamas daugumai galinių Zigbee įrenginių, tad nėra rekomenduojama jį naudoti.

Dabar, kai rašau šį straipsnį, dažnių karai yra baigti ir jau antrą savaite namuose tvyro taika ir ramybė.

Abiejų tinklų ryšio kokybės (LQI) parametrai dabar atrodo taip:

  • Maršrutizatorių LQI 134-214
  • Galinių įrenginių LQI 50-250

Daugiau jokių neveikimų atsijungimų ar false aliarmų. Tačiau dabar gerai žinant šio tinklo prigimtį, yra aišku, kad ta ramybė yra apgaulinga, o Zigbee tinklas nėra toks saugus ir patikimas kaip atrodė projekto pradžioje. Dabar žinau, kad netyčia peržengus tam tikrą ribą, labai lengva netikėtai atsidurti tokioje situacijoje, kurią nupasakojau.

Kadangi Zigbee įrenginiai dalyvauja ir saugumo sistemoje, tai veda prie poreikio tuos įrenginius pakeisti analogiškais, naudojančiais kitus ryšio protokolus. Kas yra ir daroma, bet tai jau kita istorija.

Todėl parašykite komentaruose ko labiau norėtumėte: ar kad sekančiame įraše pasakočiau šios istorijos tęsinį apie naujus sprendimus, ar kad pasakočiau apie virtualaus asistento diegimą ir įvarius sprendimus, kurie atsirado su juo ir dirbtiniu intelektu?

Parašykite komentarą

Brukalų kiekiui sumažinti šis tinklalapis naudoja Akismet. Sužinokite, kaip apdorojami Jūsų komentarų duomenys.