Z-Wave
Yhdistää Athenan jo käynnissä olevaan zwave-js-server-instanssiin (Z-Wave JS
UI:n mukana tulevaan ja tarjoamaan tavalliseen WebSocket-protokollaan, yleensä portissa
3000) sen sijaan, että omistaisi Z-Wave-USB-tikun sarjaliikenneprotokollan suoraan -
sama "silta erilliseen prosessiin" -arkkitehtuuri, jota Athenan oma Matter-integraatiokin
käyttää, koska kypsää puhdasta Go-Z-Wave-kirjastoa ei ole sulautettavaksi.
zwave-js-serverin (Z-Wave JS UI) käyttöönotto
Tätä ei ole paketoitu Athenan omiin compose-tiedostoihin - aja se omana erillisenä
konttinaan missä tahansa lähiverkossasi, josta USB-tikku näkyy (mikä tahansa Z-Wave-tikku
toimii, mukaan lukien Home Assistantin oma Connect ZWA-2). Athenan omassa
repossa on jo valmis docker-compose-zwave.yml (ja siihen kuuluva
.env.zwave.example) - kopioi molemmat, täytä .env, ja siirry suoraan
alla olevaan docker compose up -d -komentoon. Tai tallenna tämä katkelma omaksi
docker-compose.yml-tiedostoksi uuteen kansioon:
# docker-compose.yml - zwave-js-ui, erillinen services: zwave-js-ui: container_name: zwave-js-ui image: zwavejs/zwave-js-ui:latest restart: unless-stopped tty: true stop_signal: SIGINT devices: # Käytä /dev/serial/by-id/... -polkua (ks. `ls /dev/serial/by-id/`), älä /dev/ttyUSB0 - # tuo osoite voi vaihtua uudelleenkäynnistysten välillä, jos useampi USB-sarjasovitin on kytkettynä. - '/dev/serial/by-id/<oma-tikkusi>:/dev/zwave' volumes: - zwave-config:/usr/src/app/store ports: - '8091:8091' # Z-Wave JS UI:n oma web-käyttöliittymä - avaa tämä kerran liittämis-/poistoveltoisen ohjatun toiminnon ajamiseksi - '3000:3000' # itse zwave-js-server-websocket - tähän porttiin Athena yhdistää volumes: zwave-config:
Aja docker compose up -d (tai docker compose -f docker-compose-zwave.yml up
-d, jos käytät valmista tiedostoa, joka ei tunnistu automaattisesti samaan tapaan kuin
paljas docker-compose.yml), avaa sitten kerran
http://<tuo-isäntä>:8091 käydäksesi läpi Z-Wave JS UI:n oman asetusohjatun
toiminnon (se tunnistaa tikun automaattisesti
/dev/zwave-polusta ja ottaa oman paketoidun Z-Wave JS -palvelimensa käyttöön
automaattisesti). Tämän jälkeen Athena tarvitsee vain portin 3000 - web-käyttöliittymä
portissa 8091 on vain uusien laitteiden pariutusta varten, eikä sen tarvitse olla
tavoitettavissa, jotta Athena itse toimisi.
Yllä oleva devices:-kartoitus lukitsee yhden tietyn tikun - toimii useimmissa
asennuksissa, mutta Docker ratkaisee sen yhdeksi kiinteäksi laitesolmuksi kontin käynnistyessä,
joten tikun irrottaminen (tai vaihtaminen toiseen) ei ole taattu toimimaan ilman
docker compose up -d -komennon ajamista uudelleen. Oikeaa
kuumavaihtotukea varten korvaa tuo devices:-lohko rivillä - /dev:/dev
ja lisää:
device_cgroup_rules: - 'c 188:* rmw' # ttyUSB* - FTDI/CP210x/CH340-tyyppiset USB-sarjasovittimet - 'c 166:* rmw' # ttyACM* - USB CDC-ACM, useimmat Z-Wave-tikut mukaan lukien Connect ZWA-2
Tämä myöntää pääsyn jokaiseen USB-sarjalaitteeseen yhden lukitun polun sijaan, joten tikku jatkaa
toimintaansa irrotuksen/kytkennän tai toiseen tikkuun vaihtamisen yli ilman kontin
uudelleenkäynnistystä - Athenan oma docker-compose.yml dokumentoi saman
kompromissin omalle Zigbee EZSP -liitännälleen.
Yhdyskäytävän lisääminen
Laitteet ja palvelut > Z-Wave > "Lisää yhdyskäytävä" ottaa vastaan
zwave-js-server-instanssisi osoitteen ja portin. Kun yhteys on muodostettu, jokainen
solmu, jonka palvelin jo tuntee (tunnus ja nimi), tarjotaan elävänä valintalistana "Lisää laite"
-toiminnossa - oikea tunnistus, ei käsin kirjoitettu osoite. Yhdistäminen välittää myös
palvelimen koko nykyisen verkkotilan heti, joten sen jälkeen kaikki kulkee saman WebSocketin
yli työntöperiaatteella, ei kyselyä.
Mitä on tuettu
Komentoluokat kuvataan automaattisesti entiteettiluokiksi käyttäen metadataa, jonka
zwave-js-server jo raportoi jokaiselle arvolle - ei käsin tehtävää
laitekohtaista luokitteluvaihetta:
- Kytkimet - Binary Switch, ohjattavissa.
- Himmentimet - Multilevel Switch, pidetään Z-Waven omalla natiivilla 0-99-alueella.
- Verhot ja kaihtimet - myös Multilevel Switch, mutta solmulla jonka oma laiteluokka tunnistaa sen verho-/kaihdinmoottoriksi (esim. Shellyn oma Wave Shutter) - näkyy oikeana asentoliukusäätimenä samalla 0-1-asteikolla kuin jokainen muukin verhointegraatio Athenassa käyttää, tavallisen himmenninnumeron sijaan.
- Lukot - Door Lock, samalla lukko-luokalla jota jokaisen muun integraation oma Lukitse/Avaa-ohjaus jo käyttää.
- Liike- ja binäärianturit - Notification- ja Binary Sensor -komentoluokat, vain luku. Liike syöttää aluetunnistuksen läsnäoloa automaattisesti, samaan tapaan kuin jokaisella muullakin liiketunnistukseen kykenevällä integraatiolla.
- Numeeriset anturit ja mittarit - Multilevel Sensor ja Meter, yksikkö ja nimike otetaan suoraan arvon omasta raportoidusta metadatasta kiinteän ominaisuustaulukon sijaan - tämä on se, mikä saa mielivaltaisen Z-Wave-anturiarvon toimimaan ilman jokaisen anturityypin etukäteen luettelointia.
Jokainen tuettu entiteetti toimii ohjauspaneelikorttien ja automaatioiden kanssa aivan kuin mikä tahansa muu integraatio.
Tätä integraatiota ei ole varmennettu oikeaa käynnissä olevaa zwave-js-server-instanssia vasten - rakennettu suoraan kyseisen projektin omasta julkaistusta WebSocket-protokollasta, ei testattu kehityksen aikana. Jos jokin ei täsmää oikeaa palvelinta vastaan testattaessa, kyseessä on pieni, itsenäinen korjaus.