Ensimmäiset viritykset Home Assistantiin

Ensimmäiset viritykset Home Assistantiin

Edellisellä kerralla saimme Home Assistantin asennettua Raspberry Pi:hin. ”Out of the box” se ei ihmeitä tee. Sen vahvuus onkin laajennettavuudessa, kustomoitavuudessa ja erinomaisessa laitetuessa. Siispä Home Assistantin dokumentaatio auki ja tutkimaan mihin se pystyy.

Konfiguraatiotiedostot

Home Assistant on konfiguroitavissa suoraan Web-käyttöliittymän kautta. Oma asennukseni on Home Assistant Core ja hoidan asetukset suoraan konfiguraatiotiedostoja muokkaamalla. Tiedostot ovat Yaml -koodattuja, joka vaatii rivien sisennysten olevan täsmälleen oikein. Toisaalta tämä tekee tiedostoista helpommin luettavia.

Pääkonfiguraatiotiedosto on nimeltään configuration.yaml. Kaikki asetukset on mahdollista tallentaa samaan tiedostoon, mutta hallittavuuden kannalta se on järkevää jakaa osiin jo alkuvaiheessa. Eri konfiguraatiotiedostoja on tällöin esimerkiksi:

  • sensors.yaml
  • automations.yaml
  • groups.yaml
  • customize.yaml

Nimensä mukaisesti sensors.yaml sisältää erilaisten anturien asetukset. Järjestelmän säännöt eli automaatiot kirjoitetaan automations.yaml:iin. Käyttöliittymässä näkyvät ryhmät ja niiden sisältämät tiedot määritellään groups.yaml:ssä. Käyttöliittymässä näkyviä nimiä ja kuvakkeita voi muuttaa customize.yaml:ssa.

Säätiedot

Mikäpä olisikaan helpompi valinta ensimmäiseksi aiheeksi kuin sää. Home Assistant tukee useita erilaisia sääpalveluja. Alla olevalla lisäyksellä sensors.yaml -tiedostoon saadaan käyttöön yr.no -sääpalvelu:

- platform: yr 
  monitored_conditions:
    - temperature 
    - precipitation 
    - windSpeed 
    - pressure 
    - windDirection 
    - humidity 
    - cloudiness 
    - dewpointTemperature

Edit: Uudemmissa Home Assistantin versioissa sääpalvelun (esim. met.no) saa helposti asennettua suoraan web-käyttöliittymän integrations -osion kautta.

Auringon lasku- ja nousuajan laskemiseksi Home Assistant tarvitsee tiedon kodin sijainnista. Sijainti kerrotaan configuration.yaml -tiedoston homeassistant -osiossa latitude ja longitude -parametreilla. Näiden lisäksi lisätään tuulen vaikutus, absoluuttinen kosteus, laskennallinen valoisuus, auringon nousu- ja laskuajat sekä päivän pituus säätietoihin. Näitä varten sensors.yaml -tiedostoon lisätään rivit:

- platform: template
  sensors:
    tuulen_vaikutus:
      value_template: '{%if float(states.sensor.yr_temperature.state)>10 or float(states.sensor.yr_wind_speed.state)<1%}{{states.sensor.yr_temperature.state}}{%else %}{{(13.12+0.6215*float(states.sensor.yr_temperature.state)-13.956*float(states.sensor.yr_wind_speed.state)**0.16+0.4867*float(states.sensor.yr_temperature.state)*float(states.sensor.yr_wind_speed.state)**0.16) | round(1)}}{%endif%}'
      unit_of_measurement: "°C"

    absol_kosteus_ulko:
      value_template: '{{((216.679*((float(states.sensor.yr_humidity.state)*(6.1078 * (10**(7.500*float(states.sensor.yr_temperature.state) / (float(states.sensor.yr_temperature.state)+237.3)))))/100))/(float(states.sensor.yr_temperature.state)+273.15))|round(2)}}'
      unit_of_measurement: "g/m³"

    aurinko:
      value_template: '{% if is_state("sun.sun", "above_horizon") %}laskee klo {{((as_timestamp(states.sun.sun.attributes.next_setting)) | timestamp_local) [11:16] }}{% else %}nousee klo {{((as_timestamp(states.sun.sun.attributes.next_rising)) | timestamp_local) [11:16] }}{% endif %}'icon_template: '{% if is_state("sun.sun", "above_horizon") %}mdi:weather-sunny{% else %}mdi:weather-night{% endif %}'
      friendly_name: 'Aurinko'

    pv_pituus:
      value_template: '{% if as_timestamp(states.sun.sun.attributes.next_noon) > as_timestamp(states.sun.sun.attributes.next_setting)%}{{(((as_timestamp(states.sun.sun.attributes.next_noon)-as_timestamp(states.sun.sun.attributes.next_rising))*2)//3600) | round(0)}} tuntia {{(((as_timestamp(states.sun.sun.attributes.next_noon)-as_timestamp(states.sun.sun.attributes.next_rising))*2)%3600/60) | round(0)}} minuuttia{% else %}{{(((as_timestamp(states.sun.sun.attributes.next_setting)-as_timestamp(states.sun.sun.attributes.next_noon))*2)//3600)| round(0)}} tuntia {{(((as_timestamp(states.sun.sun.attributes.next_setting)-as_timestamp(states.sun.sun.attributes.next_noon))*2)%3600/60) | round(0)}} minuuttia{% endif %}'

    valoisuus:
      value_template: '{%if states.sun.sun.attributes.elevation<-15%}0{% else %}{{(11000*((states.sun.sun.attributes.elevation+15)*3.14159/180-((states.sun.sun.attributes.elevation+15)*3.14159/180)**3/6+((states.sun.sun.attributes.elevation+15)*3.14159/180)**5/120)*(1-0.009*float(states.sensor.yr_cloudiness.state)))|round(0)}} {% endif%}'
      unit_of_measurement: "lx"

value_template -kohdissa lasketaan halutut arvot sään ja auringon tietojen avulla käyttäen Jinja2 merkintää. Tuulen vaikutus lasketaan tuulen nopeuden sekä lämpötilan avulla ja vain jos lämpötila on alle kymmenen astetta celciusta. Absoluuttinen kosteus lasketaan suhteellisen kosteuden ja ulkolämpötilan avulla. Auringon nousu- ja laskuajat saadaan laskettua aurinko –komponentin tietojen avulla. Valoisuus lasketaan auringon korkeusaseman ja pilvisyyden avulla. Valoisuus on ainoastaan arvio eikä se huomioi esimerkiksi talvella lumen vaikutusta. Valinnaisella unit_of_measure -parametrilla voidaan määrittää näytettävä yksikkö.

Säätiedot
Säätiedot

2 thoughts on “Ensimmäiset viritykset Home Assistantiin

  1. Kiitos informatiivisesta teksteistä!
    Tarkoitus on itsekkin startata kotiin jokin automaatioprojekti ja tämä vaikuttaa lupaavalle.
    Olisiko suosituksia antaa alkuun seuraavista asioista omien kokemusten perusteella?
    – Missä home assistanttia kannattaa ajaa. Ilmeisesti Rasbi? 3B vai 4B?
    – Muita laitesuosituksia(Z-wawe, Zigbee tms)?
    – Onko jotain mitä kannattaa huomioida jo alkuvaiheessa ohjelman rakentamisessa laajennus ym. jatkon kannalta?
    – Minne pitkäaikainen historiadata/trendit?

    Itselläni olisi ennestään Hue lamppuja, ruuvitagejä ja sonoksen kaiuttimia.

    1. Kiitos palautteesta!

      Itsellä HASS pyörii tällä hetkellä RPi3B+:ssa, mutta ehdottomasti noista vaihtoehdoista 4B:n valitsisin. Sen kaveriksi SSD-levy, niin ei ole vaaraa SD-kortin korruptoitumisesta. Monet ovat käyttäneet myös Intelin NUC -alustoja tai esim. Synologyn NAS -palvelimia HASS:lle. Nämä laitteet kykenevät sitten jo muihinkin rinnakkaisiin palveluihin.

      Nuo mainitsemasi ekosysteemit sisältävät jo monenlaisia hyviä laitteita joilla pärjää pitkälle. Jos mahdollista, niin kannattaa valita näitä varten hyvin yhteensopiva USB-dongle, joka tukee useampia eri protokollia. Nälkä kasvaa syödessä, mutta järjestelmää on helppo laajenta myöhemmin. Itsellä on tällä hetkellä yksi Z-wave laite (venttiilin toimilaite) ja tulossa Hue -lamppuja (näistä kirjoitus myöhemmin).

      HASS:n historiaa tallennan itse viikon ajalta erilliselle Open Media Vault NAS-palvelimelle (RPi tämäkin). Kannattaa ainakin rajailla turhia tietoja pois tallentumasta ja tietokannasta tilaa viemästä.

      Onnea projektiin!

Vastaa

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