perjantaina, kesäkuuta 09, 2023

Älylaitteiden lisääminen Home Assistantiin

Tarkastelen tässä kirjoituksessa älykodin rakentamista prosessina. Älylaitteiden lisääminen Home Assistantiin sisältää tyypillisesti seuraavat vaiheet: 

  1. Tunnista älylaitteet: Määritä ne älylaitteet, jotka haluat integroida Home Assistenttiin. Tämä voi sisältää erilaisia älylaitteita, kuten valoja, termostaatteja, antureita, kameroita tai muitakin.Varmista, että valitsemasi laitteet ovat yhteensopivia Home Assistentin kanssa tai että niille on olemassa integraatio Home Assistenttiin. Osa olemassaolevista kodinkoneista sisältää jo älytoimintoja, joita et ehkä ole ottanut käyttöön. Haluat varmistaa nimenomaan HA-yhteensopivuuden, et esimerkiksi johonkin toiseen älykoti-ratkaisuun.
  2. (Ei-pakollinen vaihe) Määritä oma IOT-verkko: Luo älylaitteillesi erillinen verkko parantaaksesi tietoturvaa ja eristä laitteet pääverkostasi. Tämä voidaan saavuttaa lisäämällä laitteet vierasverkkoon tai dedikoidun VLAN-verkon (Virtual Local Area Networks) avulla. 
  3. Asenna Home Assistant: Ota Home Assistant käyttöön erillisessä koneessa tai palvelimessa. Voit käyttää Raspberry Pi:tä, NAS-laitetta (Network-Attached Storage) tai virtuaalikonetta. Noudata virallisia Home Assistantin ohjeita ympäristön asentamiseksi.
    Asennusohjeet https://www.home-assistant.io/installation/
  4. Määritä Home Assistant: Avaa Home Assistant -käyttöliittymä ja määritä perusasetukset. Tämä sisältää sijaintisi, kieliasetuksesi ja kodin määrittämisen. Sen jälkeen määrittele apukomponentit, joita haluat käyttää (kuten Z-Wave, Zigbee tai MQTT). 
  5. Lisää valmistaja-integraatioita: Home Assistant tukee monenlaisia integraatioita erilaisiin älylaitteisiin. Näiden integraatioiden avulla Home Assistant voi kommunikoida ja hallita kodissasi olevia älylaitteita. Katso Home Assistant -dokumentaatio kunkin laitteen integraation löytämiseksi. Määritä integraatiot antamalla tarvittavat tunnistetiedot, IP-osoitteet tai API-avaimet. Ajantasainen lista integraatioista löytyy osoitteesta https://www.home-assistant.io/integrations/ Itse suosin Zigbee-protokollaa sen laajan laitetuen ja hyvien kokemusten vuoksi. 
  6. Järjestä laitteet huoneisiin: Luo virtuaalisia huoneita tai alueita Home Assistantissa laitteidesi järjestämistä varten. Tämä vaihe helpottaa laitteiden hallintaa niiden sijainnin perusteella. 
  7. Määritä automaatiot: Luo automaatioita määrittääksesi halutut toiminnot tai käyttäytymiset älylaitteille. Voit esimerkiksi luoda automaation, joka sytyttää valot, kun liikettä havaitaan tai säätää termostaattia lämpötilan tai sähkön pörssihinnan mukaan. 
  8. Mukauta käyttöliittymää: Home Assistant tarjoaa mukautusvaihtoehtoja käyttäjäkokemuksen räätälöimiseksi mieltymystesi mukaan. Voit luoda dashboard-koontinäyttöjä, lisätä widgettejä ja suunnitella asettelun tarpeidesi mukaan. 
  9. Paranna tietoturvaa: Ota käyttöön turvatoimet Home Assistant -asennuksen suojaamiseksi ja siihen liitetyt laitteet. Tämä sisältää vahvojen salasanojen käytön, kaksivaiheisen todennuksen käyttöönoton ja Home Assistant -ohjelmiston säännöllisen päivittämisen. 
  10. Testaa ja valvo: Kun olet asentanut laitteet ja automaatiot, testaa niiden toimivuus perusteellisesti. Tarkkaile järjestelmää ongelmien tai virheiden varalta ja tee tarvittavat muutokset. 
Noudattamalla näitä vaiheita, voit lisätä älylaitteita Home Assistantiin, jolloin voit ottaa sen käyttöön älykotisi keskitettyyn ohjaamiseen ja automatisointiin.

perjantaina, kesäkuuta 02, 2023

Docker ja YAML-kielen käyttäminen

Docker on suosittu avoin open source ohjelmistoalusta, jolla voidaan hallita ohjelmistoja ns. konttien avulla. Kontti kerää yhteen ohjelmiston osat ja riippuvuudet siten, että ohjelmisto voidaan siirtää sellaisenaan ympäristöstä ja alustasta toiseen ilman että sitä täytyy muokata. Esimerkiksi kehitys voi tapahtua paikallisella koneella ja tuotantoversiota ajetaan pilvessä olevalla palvelimella.

YAML 

YAML (“Yaml ain’t Markup Language”) on standardi merkintäkieli, jolla kuvataan, miten Docker käyttää erilaisia resursseja. YAML on JSON-tiedostomuodosta johdettu standardi, jota on alettu käyttämään erilaisten ohjelmistojen konfigurointiin eli sen asetusten säätämiseen.  Yksi YAML-merkintäkielen etu on se, että se voi sisältää kommenttirivejä, joka tekee siitä ihmiselle helppolukuisemman kuin JSON.

YAML-kielessä sisennys on tärkeää. Jokainen sisennys tehdään käyttäen kahta välilyöntiä, ei tabulaattoria. Määrittelylohkoja ei eroteta toisistaan tunnistemerkillä, kuten puolipiste.

Docker compose on komento, joka kääntää, käynnistää ja hallitsee tai lopulta poistaa erilaisia palveluja. Sen perusosia ovat

  • image eli asennuskuva

  • context eli ajoaikainen ympäristö

  • dockerfile eli määrittelytiedosto

  • args eli parametrit

    • volumet eli looginen levyvaraus

    • environment lei ympäristö

    • verkkoasetukset

Image eli asennuskuva on käännettävän tai ladattavan koontiversion nimi.

Context kertoo, mitä hakemistoa käytetään Docker-määrittelytiedostolle. Se voi olla myös URL-osoite git repositoryyn.

Dockerfile on tekstidokumentti, joka sisältää komennot, joiden avulla käyttäjä voisi komentoriviltä kääntää toimivan koontiversion. Käytännössä se sisältää komennot ja metatietoa, joiden avulla Docker luo ohjelman käännöksen. Oletusnimi on “Dockerfile”, mutta Dockerfile voi olla eri niminen, ja se löytyy Context-määrittelyn osoittamasta paikasta.

Parametrit

Kontin käyttämä portti määritellään docker compose tiedostossa seuraavasti listana

ports:

- ”2000:2000”

- ”3333:3333”

YAML-kielessä lista määritellään antamalla listalle nimi (”ports”) ja kaksoispiste. Sen alla sisennettynä on listan arvot.

Portit tulee kirjoittaa sulkumerkkien sisälle.

Volumet

Volume on levyvaraus (volume), jonka sisältämät tiedot säilyy myös sen jälkeen kun kontti on poistettu. Isäntäympäristön hakemisto voidaan linkittää  kontissa olevaksi hakemistoksi ja kun kontti pysäytetään, sen käsittelemät tiedot tallentuvat tähän hakemistoon.

Ympäristömuuttujat

Ympäristömuuttujat kertovat Dockerille, mitä versionumeroa tai tunnistetta tulee käyttää kun kontissa oleva ohjelma suoritetaan. Ympäristömuuttuja määritellään YAML-tiedostossa käyttäen YAML-listaa

environment:

  - VARIABLE=value

  - APP_VERSION=1.0

Määritellyt ympäristömuuttujat ovat saatavilla kontissa ajettavalle ympäristölle. Ympäristömuuttujia ei tarvitse ympäröidä lainausmerkeillä.

Jos ympäristömuuttujia on runsaasti, ne voidaan lukea tiedostosta. Tämä määritellään env_file-listana

env_file:

  - ./common_variables.env

  - ./settings.env

Docker lukee kyseisen tiedoston listan ja sen sisältämät arvoparit ja ne ovat näkyvissä kontissa ajettavassa ympäristössä. Jos ohjelmisto riippuu toisesta ohjelmistosta, jota ajetaan toisessa kontissa, se voi lukea samat ympäristömuuttujat yhteisestä tiedostosta.

Verkkoasetukset

Jos ohjelmisto käyttää muita palveluita, sen pitää pystyä vaihtamaan tietoja toisten konttien välillä. Sitä varten luodaan Bridge network eli Docker siltaverkko. Määrittely tapahtuu seuraavasti

networks:

  myapp_network:

    driver: bridge

myapp_network on nimi, jonka haluat antaa verkolle, jota konttisi käyttävät.

Palvelulle pitää myös määritellä vastaava lohko

networks:

  - myapp_network

Tämä lista määrittelee, minkä verkkojen osana kyseinen palvelu toimii. Sinulla voi olla ajossa samasta sovelluksesta eri versiot omissa konteissaan, jotka käyttävät samoja asetuksia, mutta omissa verkoissaan.

Käynnistysjärjestys

Jos ohjelmistokomponentti tai palvelu edellyttää jonkin toisen palvelun olemassaoloa, se voidaan määritellä depends-lohkolla.

depends_on:

  - mongodb

Tämä tarkoittaa sitä, että kyseinen kontti käynnistetään vasta, kun mongodb niminen kontti on käynnistetty. Koska kontissa olevan palvelun käynnistäminen vie oman aikansa, täytyy sovelluksen sisältää logiikka, jolla testataan, että palvelu vastaa kyselyihin.