Uusi palvelin Asus PN50 – Home Assistant Dockerissa

Uusi palvelin Asus PN50 – Home Assistant Dockerissa

Vanha Raspberry Pi 3B+ on hoitanut Home Assistantin palvelimen virkaa menestyksekkäästi jo kolme vuotta. Home Assistant toimii siinä edelleen sujuvasti. Ainoastaan päivitykset ja uudelleenkäynnistys vievät hieman pidempään aikaa. Vaikka järjestelmä toimiikin nykyisellään moitteettomasti, on sen hallinta käynyt haasteellisemmaksi. Vuosien varrella uusia integraatioita on lisätty tasaiseen tahtiin ilman kunnollista dokumentointia eikä vanhoja integraatioita ja käyttämättömiä automaatiokokeiluita ole aina siivottu pois. On siis korkea aika ja hyvä hetki myös siivota järjestelmä perusteellisesti.

Raspberry Pi sai väistyä uuden Asus PN50 Ryzen 7 4700U -palvelimen tieltä. Palvelimessa on 2 x 8GB DDR4-3200 muisti ja Samsung 500GB 970 EVO Plus -SSD-levy. Se on kooltaan pieni: 115 x 115 x 49 mm, kuluttaa vähän virtaa ja on hiljainen. Sen tehot menisivät pelkällä Home Assistantilla ehkä hukkaan, joten sille on ajateltu muutakin käyttöä kuten NAS -palvelimen tehtävä.

Asus PN50
Asus PN50

Palvelimen käyttäjärjestelmäksi valikoitui Ubuntu 21.04. Home Assistant ja muut myöhemmin asennettavat palvelut ajetaan siinä erillisinä Docker -kontteina, jolloin ne eivät häiritse toistensa toimintaa. Kontit sisältävät kunkin palvelun tarvitsemat riippuvuudet kuten tarvittavat kirjastot, eivätkä kontit ole riippuvaisia pääkäyttöjärjestelmän komponenteista. Kontit ovat kevyempiä kuin virtuaalipalvelimissa ajettavat palvelut. Sen lisäksi palveluiden päivitys onnistuu helposti lataamalla vain palvelulle uusin docker-image. Kontteja on helppo hallita Portainer CE -web-työkalun avulla, joka asennettiin omana Docker -konttina. Home Assistantin asennus tehtiin virallisen ohjeen mukaisesti.

Portainer
Portainer

Home Assistantin siivoamista varten perustin uuteen järjestelmään ensiksi tarvittavat alueet kuten olohuone, keittiö jne. Kaikki järjestelmän entiteetit liitetään jatkossa em. alueisiin. Entiteettien nimeämisessä tullaan käyttämään mahdollisuuksien mukaan periaatetta: ’alue_mittasuure’, esim. sensor.sauna_lampotila. Tämän avulla ne listaantuvat selkeään aakkosjärjestykseen ja ovat helpommin muistettavissa automaatioita kirjoitettaessa. Myös itegraatioiden mukanaan tuomat kohteet kannattaa miettiä tarkoin mille on todella käyttä ja poistaa tarpeettomat käytöstä.

Kaikkien toimintojen siirtäminen vanhasta järjestelmästä uuteen ja siivoaminen yhdellä kerralla olisi valtava urakka. Työn jakamiseksi pienempiin osiin, asensin uuteen järjestelmään Remote Home-Assistant -lisäosan. Lisäosan avulla kaksi järjestelmää voidaan yhdistää siten että kaikki vanhan järjestelmän sensorit, kytkimet, automaatiot, skriptit, jne. saadaan uuden järjestelmän käyttöön. Tämä jälkeen rakensin käyttöliittymän uuteen järjestelmään käyttäen vanhan järjestelmän entiteettejä. Sen jälkeen siirsin automaatiot, skriptit, sensorit jne. yksi kerrallaan uuteen järjestelmään ja poistin samalla vastaavat ominaisuudet vanhasta järjestelmästä. Vasta tämän jälkeen vanha järjestelmä ajettiin alas lopullisesti.

Aikaisemmat komentoriviltä tietonsa saaneet ruuvitag-sensorit korvasin Bluetooth Low Energy Monitor -integraatiolla, joka tukee Ruuvitageja suoraan. Uuden palvelimen sisäinen Bluetooth kuulee luotettavasti kaikki Ruuvitagit, kun taas aikaisemmin Raspberry Pi:n kanssa piti käyttää ulkoista Bluetooth-donglea.

Z-Wave-laitteita varten asensin uudelle palvelimelle ZWaveJS2MQTT:n omaan Docker -konttiin. Z-Wave -verkko tallentuu Z-Wave-tikkuun, joten laitteita ei tarvinut parittaa tikun siirtämisen jälkeen uudelleen. Home Assistant löysi Z-Wave -laitteet automaattisesti Z-WaveJS -integraation lisäämisen jälkeen.

Zigbee -verkkoa varten laitteet piti hakea integraatioon uudelleen. Käytössä on kymmenkunta Hue -lamppua. Järjestelmä löysi lamput automaattisesti kun niiden virran katkaisi päältä ja kytki uudelleen.

Modbus -liitäntäisen poistoilmalämpöpumpun ohjaus oli aiemmin toteutettu komentorivipohjaisilla skripteillä, koska aikoinaan Home Assistantin oma Modbus -integraatio sai koko PILP:n jumiin liian usein tehdyillä kyselyillä. Nykyisin tuota kyselytaajuutta saa muutettua scan_interval -parametrilla pidemmäksi, joten Modbus -integraatio sai uuden mahdollisuuden.

Näiden lisäksi vanhassa järjestelmässä oli muutamia I2C- ja 1Wire-antureita, relelähtöjä ja kytkimiä kytkettynä suoraan Raspberry Pi:n GPIO -nastoihin. Näitä varten hankin Olimex ESP32-EVB -alustan, joka jatkossa lähettää antureiden tiedot Home Assistantille ESPHomen avulla. Alustassa on suuri määrä GPIO -liitäntöjä myös tulevaisuuden tarpeisiin. Siinä on erikoisuutena myös ethernet -liitin, jolla sen saa kytkettyä luotettavasti verkkoon. ESPHomen käyttöönotosta on erillinen kirjoitus.

Olimex ESP32-EVB
Olimex ESP32-EVB

2 thoughts on “Uusi palvelin Asus PN50 – Home Assistant Dockerissa

    1. Supervisoria ei tuossa ole. Kehittäjät olivat jo kertaalleen kuoppaamassa sitä, joten olen hieman empinyt sen suhteen.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *