ESPHome

ESPHome on avoimen lähdekoodin projekti, jonka avulla on helppoa ohjelmoida ESP8266- ja ESP32-mikrokontrollereita käytettäväksi älykodin laitteina Home Assistantin kanssa: https://esphome.io

Keskeiset ominaisuudet

  • Käyttää YAML-muotoista määritystiedostoa laitteen toiminnan määrittelyyn
  • Tukee satoja antureita, releitä, näyttöjä, LED-nauhoja ym.
  • Mahdollistaa Wi-Fi-yhteyden ja MQTT- tai API-integraation
  • Tukee automaattista OTA (Over-The-Air) -päivitystä

Tyypilliset käyttökohteet

  • Lämpötila- ja kosteusmittarit (esim. DHT22)
  • Liikeilmaisimet, painikkeet, ovianturit
  • LED-ohjaus (WS2812, PWM, jne.)
  • Releohjaus, kuten valaistus tai sähkölaitteet

ESPHome tekee laitteista käytännössä Home Assistant -yhteensopivia plug-and-play-komponentteja ilman tarvetta kirjoittaa C/C++-koodia.

ESP mikrokontrollerin alustus

Kun ESPHome lisäosa on asennettu Home assistant:iin on uuden mikrokontrollerin alustus mahdollista tehdä suoraan Home Assistantista ”+ NEW DEVICE” nappulasta käyttäen Chromeen perustuvaa selainta.

Em. menetelmä toimii ainoastaan jos selain käynnistetään koneella, jolle Home Assistant on asennettu tai jos selainyhteys Home Assitant palveluun käyttää https-protokollaa.

Koska HA (Home Assistant) oletuksena asentuu käyttämään porttia 8123 ja http-protokollaa, alustan mikrokontrollerin käyttäen https://web.esphome.io/?dashboard_wizard palvelua.

ESPHome Dashboard Wizard

Avaa Chrome selaimella (tai Chromeen perustuvalla selaimella) osoite: https://web.esphome.io/?dashboard_wizard

Kytke ESP mikrokontrolleri USB kaapelilla tietokoneeseesi ja paina ”CONNECT” linkkiä. Tämän jälkeen sinulta kysytään mihin sarjaporttiin mikrokontrolleri on kytketty. Listan loppupuolelta pitäisi löytyä ”USB Serial (ttyUSBo)” valinta tai saman kaltaista.

Valitse ja paina ”Connect”. Tämän jälkeen valitse avautuvasta ikkunasta ”Prepare for first use”.

Valitse ”INSTALL”

Jos saat tämän jälkeen virheilmoituksen ”An error occurred. Improv Wi-Fi Serial not detected”, kokeile valita kolmen pisteen valikosta ”Configure WI-FI”.

Valitse ”CONNECT TO WI-FI”, jonka jälkeen voit tehdä tarvittavat asetukset.

Valitse ”CONNECT”.

Provisioinnin jälkeen paina ”CLOSE” ja irroita mikrokontrolleri hetkeksi USB kaapelista. Käynnistyttyään kontrolleri hakee itselleen IP-osoitteen WIFI-verkosta.

pfSense palomuurikone on tässä tapauksessa antanut mikrokontrollerille dynaamisen IP-osoitteen 192.168.2.125. Muutan osoitteen staattiseksi, jotta se ei vahingossa muutu myöhemmin joksikin toiseksi.

Kontrollerin liittäminen Home Assistant:iin

Valitse ”Settings” -> ”Devices & Services” -> ”ESPHome” -> ”ADD DEVICE”

Kirjoita kohtaan ”Host” aiemmin määrittämäsi staattinen IP-osoite. Tämän jälkeen voit antaa laitteelle nimen ja sen sijainnin.

Siirry ”ESPHome Builder” sivulle ja valitse ”+NEW DEVICE”

Valitse ”Continue” ja anna tämän jälkeen nimi luotavalle laitteelle.

Valitse käytettävän mikrokontrollerin tyyppi.

Lopuksi valitse ”Skip” koska laitetta ei ole kytketty USB-kaapelilla tietokoneeseen.

Nyt sinulla on ”ESPHome Builder” näkymässä laite, joka pitää vielä liittää aiemmin määrittämääsi laitteeseen.

Valitse ”EDIT” ja muokkaa avautuvaa koodia niin, että se sisältää tarvittavat yhteysasetukset jne.

esphome:
  name: weather-station
  friendly_name: weather-station

esp8266:
  board: esp01_1m

# Enable logging
logger:
    level: DEBUG

# Enable Home Assistant API
api:
   encryption:
     key: !secret api_encryption_key

ota:
  - platform: esphome
    # safe_mode: True
    password: !secret ota_password

wifi:
   networks:
     - ssid: !secret wifi_tv_room_ssid
       password: !secret wifi_password
     - ssid: !secret wifi_ssid
       password: !secret wifi_password
     - ssid: !secret wifi_garage_ssid
       password: !secret wifi_password
   manual_ip:
     static_ip: 192.168.2.96
     gateway: 192.168.2.1
     subnet: 255.255.255.0
   ap:
     ssid: "weather-station"
     password: "changemenow"

captive_portal:

Tämä jälkeen valise ”INSTALL”, jonka jälkeen koodi buildataan ja asennetaan laitteelle.

Tämän jälkeen laitteen tila muuttuu ”ONLINE:ksi”.

Tämän jälkeen alkaa varsinainen ohjelmistokehitys, josta kerron lisää sääasema-projektissa.

Kioskinäytön käynnistys webbikameran avulla

Ohjaan Home Assistant kodinohjausjärjestelmää keittiössä sijaitsevalla kosketusnäytöllisellä tietokoneella, jossa on Ubuntu 24 LTS käyttöjärjetelmä ja Firefox selain kioskimoodissa.

Koska haluan näytön olevan sammutettuna sillon kun kukaan ei ole sitä katsomassa, pimennetään se kun näytön webbikamera ei ole nähnyt liikettä puoleen tuntiin.

Tämä onnistuu käyttämällä ”motion” lisäosaa, jonka saa asennettua Ubuntuun komennolla ”sudo apt install motion”. Tämän jälkeen konfiguroidaan motion: ”sudo nano /etc/motion/motion.conf”

# Rename this distribution example file to motion.conf
#
# This config file was generated by motion 4.6.0
# Documentation:  /usr/share/doc/motion/motion_guide.html
#
# This file contains only the basic configuration options to get a
# system working.  There are many more options available.  Please
# consult the documentation for the complete list of all options.
#

############################################################
# System control configuration parameters
############################################################

# Start in daemon (background) mode and release terminal.
daemon off

# Start in Setup-Mode, daemon disabled.
setup_mode off

# File to store the process ID.
; pid_file value

# File to write logs messages into.  If not defined stderr and syslog is used.
log_file /var/log/motion/motion.log

# Level of log messages [1..9] (EMG, ALR, CRT, ERR, WRN, NTC, INF, DBG, ALL).
log_level 6

# Target directory for pictures, snapshots and movies
target_dir /var/lib/motion

# Video device (e.g. /dev/video0) to be used for capturing.
video_device /dev/video0

# Parameters to control video device.  See motion_guide.html
; video_params value

# The full URL of the network camera stream.
; netcam_url value

# Name of mmal camera (e.g. vc.ril.camera for pi camera).
; mmalcam_name value

# Camera control parameters (see raspivid/raspistill tool documentation)
; mmalcam_params value

############################################################
# Image Processing configuration parameters
############################################################

# Image width in pixels.
width 640

# Image height in pixels.
height 480

# Maximum number of frames to be captured per second.
framerate 15

# Text to be overlayed in the lower left corner of images
text_left CAMERA1

# Text to be overlayed in the lower right corner of images.
text_right %Y-%m-%d\n%T-%q

############################################################
# Motion detection configuration parameters
############################################################


# Always save pictures and movies even if there was no motion.
emulate_motion off

# Threshold for number of changed pixels that triggers motion.
threshold 1500

# Noise threshold for the motion detection.
; noise_level 32

# Despeckle the image using (E/e)rode or (D/d)ilate or (l)abel.
despeckle_filter EedDl

# Number of images that must contain motion to trigger an event.
minimum_motion_frames 1

# Gap in seconds of no motion detected that triggers the end of an event.
event_gap 60

# The number of pre-captured (buffered) pictures from before motion.
pre_capture 3

# Number of frames to capture after motion is no longer detected.
post_capture 0

############################################################
# Script execution configuration parameters
############################################################

# Command to be executed when an event starts.
on_event_start ydotool key 65

# Command to be executed when an event ends.
; on_event_end

# Command to be executed when a movie file is closed.
; on_movie_end value

############################################################
# Picture output configuration parameters
############################################################

# Output pictures when motion is detected
picture_output off

# File name(without extension) for pictures relative to target directory
picture_filename %Y%m%d%H%M%S-%q

############################################################
# Movie output configuration parameters
############################################################

# Create movies of motion events.
movie_output off

# Maximum length of movie in seconds.
movie_max_time 60

# The encoding quality of the movie. (0=use bitrate. 1=worst quality, 100=best)
movie_quality 45

# Container/Codec to used for the movie. See motion_guide.html
movie_codec mkv

# File name(without extension) for movies relative to target directory
movie_filename %t-%v-%Y%m%d%H%M%S

############################################################
# Webcontrol configuration parameters
############################################################

# Port number used for the webcontrol.
webcontrol_port 8080

# Restrict webcontrol connections to the localhost.
webcontrol_localhost on

# Type of configuration options to allow via the webcontrol.
webcontrol_parms 0

############################################################
# Live stream configuration parameters
############################################################

# The port number for the live stream.
stream_port 8081

# Restrict stream connections to the localhost.
stream_localhost off

##############################################################
# Camera config files - One for each camera.
##############################################################

; camera /usr/etc/motion/camera1.conf
; camera /usr/etc/motion/camera2.conf
; camera /usr/etc/motion/camera3.conf
; camera /usr/etc/motion/camera4.conf

##############################################################
# Directory to read '.conf' files for cameras.
##############################################################
; camera_dir /usr/etc/motion/conf.d

Konfiguroinnin jälkeen aktivoi ja käynnistä motion palvelu:
– systemctl enable motion
– systemctl start motion

Motion palvelun unit tiedosto:

[Unit]
Description=Motion detection video capture daemon
Documentation=man:motion(1)

[Service]
Type=simple
User=root
ExecStart=/usr/bin/motion -n

[Install]
WantedBy=multi-user.target

Tämän jälkeen asenna ydotool: sudo yum install ydotool

Motion palvelun konfiguraation määritys
# Command to be executed when an event starts.
on_event_start ydotool key 65

aiheuttaa välilyöntinäppäimen painalluksen webbikameran havaitessa liikettä.

Raspberry Pi:n boottaaminen verkkolevyltä

Firmwaren päivitys

root@r4-02:/home/kilpiju1# rpi-update

Aktivoi PXE boot

Sarjanumero

root@R4-01:/nfs/root# cat /proc/cpuinfo | grep Serial | awk -F ’: ’ ’{print $2}’ | tail -c 9

Lisää NFS jaot

proc            /proc           proc    defaults          0       0
PARTUUID=6c76e89e-01  /boot           vfat    defaults          0       2
PARTUUID=6c76e89e-02  /               ext4    defaults,noatime  0       1
# a swapfile is not a swap partition, no line here
#   use  dphys-swapfile swap[on|off]  for that

192.168.1.89:/mnt/Data/raspberry/rpi-pxe /nfs/root nfs defaults 0 0
192.168.1.89:/mnt/Data/raspberry/rpi-tftpboot /nfs/boot nfs defaults 0 0

Zigbee2MQTT ja Proxmox

Aiemmin ohjasin kaikki Zigbee-laitteitani yhdellä koordinaattorilla, mistä aiheutui ongelmia kun Zigbee laitteita oli paljon (~200). Aika ajoin laitteet putosivat Zigbee verkosta tai viestin kulussa oli useiden sekuntien viiveitä. En saanut selvitettyä juurisyytä ongelmiin, mutta hypoteeseina oli:

  • Koordinaattorin tilataulukolle varattu muisti loppui kesken
  • Joku zigbee silmukkaverkon (mesh network) reitittimistä (router) oli pullonkaula liikenteelle
  • Suuri laitteiden määrä samalla taajuudella aiheutti kilpatilanteita

Lopulta päädyin jakamaan yhden suuren verkon neljään pienempään joissa kussakin on 40-60 laitetta ja kullakin verkolla on käytössä oma kanava (kts. artikkeli ”Home Assistant – Zigbee verkon optimointi”)

Koska Home Assistant tukee ilman kikkailua, vain yhtä sisäistä Zigbee2MQTT siltaa, päädyin käyttämään Home Assistantin ulkopuolisia Zigbee2MQTT siltoja. Koska Home Assistant instanssini on virtuaalikone Proxmoxissa, oli helppoa luoda kullekin Zigbee2MQTT:lle oma Proxmox LXC kontti käyttäen valmista Proxmox VE Helper-Scriptiä (https://github.com/community-scripts/ProxmoxVE).

Zigbee2MQTT Proxmox LXC kontin asentaminen

  • Avaa Proxmoxin hallintasivu ja avaa Shell
  • Kirjoita komentoriville: bash -c ”$(wget -qLO – https://github.com/community-scripts/ProxmoxVE/raw/main/ct/zigbee2mqtt.sh)”

  • Valitse
    • ”Advanced Settings”
    • ”Debian”
    • ”Bookworm”
    • ”Privileged”
  • Aseta
    • Rootin salasana
    • Kontin ID
    • Hostin nimi
    • Levytilan koko (4GB)
    • Ytimien lukumäärä (2 kpl)
    • RAM (1024MB)
    • Silta (wmbr0)
    • Staattinen IP tai dhcp (dhcp)
    • APT-Cacher (jätä tyhjäksi)
    • Disabloi IPv6 (minulla ei ole IPv6:tta käytössä kotiverkoissa)
    • MTU size (jätä tyhjäksi)
    • DNS Search Domain (jätä tyhjäksi)
    • DNS Server IP (jätä tyhjäksi)
    • MAC (jätä tyhjäksi eli käytä proxmoxin arpomaa MAC:iä)
    • VLAN (jätä tyhjäksi, virtuaalilaneja ei ole kotiverkossani käytössä)
    • Custom tags (jätä oletukset)
    • Salli rootin ssh (Ei)
    • Verbose mode (Ei)

Kun konsolissa lukee ”Completed Succesfully”, voidaan siirtyä kontin konfigurointiin. Jos et ole asettanut kontille, kiinteää ip-osoitetta, vaan käytät DHCP-palvelua, kannattaa DHCP:hen määrittää staattinen ip-osoite. Tässä tapauksessa uusi kontti sai palomuurin DHCP palvelusta dynaamisen ip-osoitteen 192.168.100. Muuta osoite kiinteäksi DHCP-palvelussa ja reboottaa kontti (Huom! Älä reboottaa vhostia!), jolloin staattinen ip-osoite haetaan DHCP-palvelusta.

Kontin konfigurointi

Jos Zigbee-dongle oli liitettynä, kun asensit Zigbee2MQTT:n, ja LXC-kontti luotiin privilegoituna (privileged), skripti määrittää automaattisesti USB-läpiviennin kontille. Varmistaaksesi tämän ja selvittääksesi donglen sarjanumeron, avaa Proxmoxin shell ja anna seuraava komento:

ls -l /dev/serial/by-id

usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_bcf4367f48b6ed11afa1de0ea8669f5d-if00-port0 -> ../../ttyUSB1
usb-Silicon_Labs_Sonoff_Zigbee_3.0_USB_Dongle_Plus_0001-if00-port0 -> ../../ttyUSB0

Tuloksesta nähdään, että Proxmox palvelimeen on kytkettynä kaksi USB koordinaattoria. Näiden lisäksi minulla on käytössä vielä kaksi SMLIGHT SLZB-06 koordinaattoria lähiverkossa. Näiden konfiguroinnista myöhemmin lisää.

Avaa äsken luodun kontin konsoli

ja avaa editoriin /opt/zigbee2mqtt/data/configuration.yaml tiedosto. Lisää/muuta tiedostoon punaisella korostetut kohdat.

version: 4
homeassistant:
enabled: tue
permit_join: false

frontend:
enabled: true
port: 8080 #Zigbee2MQTT hallintasivun portti

mqtt:
base_topic: zigbee2mqtt_garage #Anna kullekin Zigbee2MQTT instanssille oma base topic
server: mqtt://192.168.1.3:1883 #Homeassistant serverin ip ja MQTT palvelun portti
user: mqtt_user #Homeassistantin MQTT käyttäjätunnus
password: salasana #MQTT salasana
keepalive: 60
reject_unauthorized: true
version: 4

serial:
adapter: zstack
port: /dev/serial/by-id/usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_bcf4367f48b6ed11afa1de0ea8669f5d-if00-port0
advanced:
pan_id: GENERATE
network_key: GENERATE
channel: 25 #Valitse kullekin koordinaattorille oma kanava

Käynnistä Zigbee2MQTT komennolla:
[root]# cd /opt/zigbee2mqtt && npm start

IKEAn laitteet ja Zigbee2MQTT

Vanhemmat IKEAn Zigbee laitteet, kuten langattomat kytkimet, saattavat lakata toimimasta kun Zigbee2MQTT päivitetään versioon 2.0.

Avaa Zigbee2MQTT:sta ”Settings”.

Zigbee2MQTT:n päivittäminen versiosta 1.xx versioon 2.0 kun käytössä koordinaattori, joka käyttää Texas Instrumentsin Z-Stack piirisarjaa

Ajan Zigbee2MQTT:tä Proxmoxissa LXC konttina, joka on luotu käyttäen Proxmox VE Helper-Scriptiä: https://community-scripts.github.io/ProxmoxVE/scripts?id=zigbee2mqtt

Ennen päivitystä ota varmuuskopio Zigbee koordinaattorin muistista.

Tämän jälkeen ”Backup” ja ”Download backup”.

Tämän jälkeen sammuta kontti Proxmoxissa ja ota siitä snapshot.

Tämän jälkeen käynnistä kontti uudelleen.

Päivittäminen tapahtuu avaamalla Proxmoxista konsoli ko. konttiin ja ajamalla /opt/zigbee2mqtt hakemistossa update.sh skripti.

Ennen skriptin ajoa siirrä konfiguraatiotiedosto talteen /tmp hakemistoon, sillä päivitys kaatuu koska konfiguraatiotiedosto on erilainen kuin mitä GITistä löytyy:
[root]# mv /opt/zigbee2mqtt/data/configuration.yaml /tmp

Aja päivitys:
[root]# cd /opt/zigbee2mqtt
[root]# ./update.sh

Koska update tulee kaatumaan virheeseen puuttuvasta npm:stä ja pnpm:stä, aja seuraavat komennot:
[root]# npm install
[root]# npm install -g pnpm

Tämän jälkeen aja päivitys:
[root]# ./update.sh

Tämän jälkeen kopioi configuration.yaml /tmp hakemistosta takaisin data hakemistoon ja poista data/configuration.example.yaml.

Etsi koguraatiotiedostosta kohta serial: ja lisää adapter: zstack:
serial:
adapter: zstack
port: /dev/serial/by-id/usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_bcf4367f48b6ed11afa1de0ea8669f5d-if00-port0

adapter: zstack: Käytettävä Zigbee-adapteri on Texas Instrumentsin Z-Stack (yleistä esimerkiksi Sonoff Zigbee -tikuille).

Reboottaa kontti.

NodeRedin persistentit muuttujat

Oletusarvoisesti NodeRed pitää muuttujien arvot muistissa, joten jos NodeRed tai Home Assistant käynnistetään uudestaan, menetetään muuttujien arvot. Konfiguraatiomuutoksella voidaan muuttujien arvoja säilöä myös levylle, jolloin niiden arvot säilyvät restartin ylitse.

Home Assistantin NodeRed lisäosan konfiguraatiotiedosto löytyy polusta /root/addon_configs/a0d7b954_nodered/config.js. Ko. tiedoston editointi on helpointa käyttäen Home Assistantin lisäosaa (Add On) ”Advanced SSH & Web Terminal” ja käyttöjärjestelmän nano editoria.

Kun tiedosto on auki nano editorissa, siirry tiedoston loppuun kohtaan ennen lokimäärityksiä ja lisää seuraava määritys:

contextStorage: {
storeInFile: { module: ”localfilesystem”},
memoryOnly: { module: ”memory”},
default: ”memoryOnly”
},

Muutosten tallenuksen jälkeen reboottaa Home Assistant ja tämän jälkeen voit valita NodeRedissä esim. ”Change Node:ssa” mitä säilytyspaikkaa muuttujien arvoille käytetään.

Muuttujien arvot tallennetaan tiedostoon /root/addon_configs/a0d7b954_nodered/context/32cad8539d872c2e/flow.json esim. näin:

{
”harmo_finishing_time”: ”07:00:00”
}

Home Assistant Supervisor virheilmoitus konsolissa

Jos Supervisor ei käynnisty bootissa, vaan saat esim. seuraavanlaisen virheilmoituksen:”Supervisor: System is not ready with state: setup”, aja supervisorin korjausajo ja restartti.

ha > supervisor repair

ha > supervisor restart

Home Assistant – Zigbee verkon optimointi

Home Assistantin laajennuksessa ”Zigbee2MQTT” on mahdollista valita kanava, jota käytetään zigbee laitteiden välisessä kommunikoinnissa. Oletuksena se on 11, joka ei välttämättä ole paras valinta jos käytössä on Wifi, joka käyttää 2,4GHz taajuutta.


Kuvassa on merkitty vihreällä 2,4GHz Wifin käyttämät taajuudet. Punaiset palkit ovat Bluetoothin (BLE = Bluetooth Low Energy) ”mainoskanavia” (advertising channels). Zigbee kanavaksi kannattaa valita sellainen kanava, joka ei mene päällekkäin edellä mainittujen kanssa. Esim. 20 tai 25. Koska myös naapureiden zigbee verkot voivat häiritä tietoliikennettä, on paras kanava löydettävä kokeilemalla. Kannattaa kuitenkin aloittaa kokeilu kanavista 15, 20, 25 ja 26.

Zigbee2MQTT:ssa on voi käytettävän kanavan valita

Lähteet:
– https://www.researchgate.net/figure/Spectra-of-multiple-wireless-technologies-in-the-24-GHz-ISM-band-The-colors-indicate_fig4_326598630
– https://www.metageek.com/training/resources/zigbee-wifi-coexistence/

Huom! Kanavan vaihtaminen olemassa olevasta verkosta vaatii kaikkien laitteiden liittämisen uudelleen verkkoon. Tätä ennen pitää poistaa tiedosto ”/config/zigbee2mqtt/coordinator_backup.json”, koska muuten laitteet liittyvät verkkoon käyttäen vanhaa kanavaa.

Home Assistant – Asennus virtuaaliympäristöön

Lisäys 9.1.2025

Tämän artikkelin jälkeen olen siirtynyt käyttämään Proxmox virtuaaliympäristöä, jossa HomeAssistant toimii paremmin kuin VirtualBoxissa. Suosittelen Proxmoxia VirtualBoxin sijaan.

Home Assistant on avoimen lähdekoodin alusta älykodin automatisointiin ja hallintaan. Se tarjoaa keskitetyn tavan valvoa ja ohjata erilaisia älylaitteita, kuten valaistusta, lämmitystä, ilmastointia, turvajärjestelmiä, äänentoistoa ja monia muita.

Home Assistant tukee laajaa valikoimaa protokollia ja laitteita, kuten Zigbee, Z-Wave, Wi-Fi, Bluetooth, Philips Hue, Sonos ja monia muita. Se mahdollistaa näiden laitteiden integroimisen yhteen järjestelmään ja tarjoaa yhtenäisen käyttöliittymän niiden hallintaan.

Alusta on suunniteltu toimimaan itsenäisesti omassa ympäristössään, joten se ei vaadi jatkuvaa internet-yhteyttä toimiakseen. Home Assistantin avulla voit luoda automaatioita ja skenaarioita älylaitteiden välille, jotta kodin toiminnot voidaan muokata ja ohjata tarkasti halutun aikataulun tai tapahtumien mukaan.

Home Assistant on laajennettavissa lisäosien avulla, jotka tarjoavat lisäominaisuuksia ja integraatioita erilaisten palveluiden, alustojen ja laitteiden kanssa. Lisäksi Home Assistantilla on monipuoliset kehittäjäominaisuudet, joiden avulla voit mukauttaa ja laajentaa järjestelmää haluamallasi tavalla.

Alusta on suunniteltu toimimaan itsenäisesti omassa ympäristössään, joten se ei vaadi jatkuvaa internet-yhteyttä toimiakseen. Home Assistantin avulla voit luoda automaatioita ja skenaarioita älylaitteiden välille, jotta kodin toiminnot voidaan muokata ja ohjata tarkasti halutun aikataulun tai tapahtumien mukaan.

Home Assistant on laajennettavissa lisäosien avulla, jotka tarjoavat lisäominaisuuksia ja integraatioita erilaisten palveluiden, alustojen ja laitteiden kanssa. Lisäksi Home Assistantilla on monipuoliset kehittäjäominaisuudet, joiden avulla voit mukauttaa ja laajentaa järjestelmää haluamallasi tavalla.

Home Assistant tukee useita käyttöliittymiä, kuten mobiilisovelluksia ja web-käyttöliittymää, jotta voit valvoa ja hallita älykotiasi mistä tahansa. Se tarjoaa myös pilvipalvelun nimeltä ”Nabu Casa”, joka mahdollistaa etäyhteydenoton ja helpomman käyttöönoton ilman monimutkaisia verkkokonfiguraatioita.

Tavallisesti Home Assistantin alustana käytetään esim. Raspberry Pi:tä. Raspberryn etuja ovat edullinen hinta ja pieni sähkön kulutus. Haittapuolia ovat huono skaalautuvuus ja toimintavarmuus jos massamuistina käytetään SD-korttia. Itse päädyin virtuaaliympäristön käyttöön SD-kortin rikkoutumisen jälkeen. Virtuaaliympäristössä ”snap shotit” mahdollistavat nopean paluun lähtötilanteeseen jos Home Assistantissa tehdyt kokeilut sattuvat sekoittamaan sen.

Edellytykset
– VirtualBox on asennettuna Linux palvelimelle (esim. CentOS)

Asennuksen vaiheet
– Haetaan VirtualBox vdi-tiedosto osoitteesta: https://www.home-assistant.io/installation/linux
– Luodaan virtuaalikone Home Assistantille
– Importataan image luotuun virtuaalikoneeseen

Virtuaalikoneen luominen

Minimivaatimukset ympäristölle:
– 2 GB RAM
– 32 GB levytilaa
– 2 CPU:ta

Muistin ja CPU:iden lisääminen on jälkikäteen helppoa, mutta levytilan laajentaminen hieman hankalaa, joskin mahdollista.

Lisää uusi virtuaalikone painamalla ”New”
Oletuksena virtuaalikone luodaan käyttäjän kotihakemistoon
Valitse ”Enable EFI”, 3GB RAM ja 3 CPU:ta
Valitse ”Use an Existing Virtual Hard Disk File” ja valitse lataamasi disc image. Paina ”Finish”
Virtuaalikoneen luomisen jälkeen konfiguroidaan mm. verkkoasetukset. Paina ”Settings”
Valitse ”PS/2 Mouse”. Poista ”Floppy” valinta.
Valitse ”Use Host I/O Cache”
Valitse ”Intel HD Audio”

Valitse verkkoasetuksista ”Bridged Adapter”. Jos virtuaalihostissasi on useampia verkkokortteja, valitse oikea ”Name” alasvetovalikosta. Aseta ”MAC Address” palomuurisi DHCP palveluun ja anna Home Assistant koneelle staattinen ip-osoite, koska dynaamiset osoitteet voivat muuttua bootin yhteydessä.

Lisää seuraavaksi Zigbee koordinaattori.

Talleta muutokset ja starttaa virtuaalikone ”Start” nappulasta. Tarkkaile aukeavasta ikkunasta käynnistymisen edistymistä.

Kun Home Assistant on käynnistynyt avaa selain ja käytä osoitteena ip:tä, joka näkyy konsolissa.

Lähteet:
https://www.home-assistant.io/installation/linux