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.