Martin Koksrud Bekkelund

Martin Koksrud Bekkelund

Teknologi • Samfunn • Politikk

Intro til Home Assistant

01.02.19

I serien om smarthus skrev jeg i siste artikkel at jeg har satt opp en løsning basert på Home Assistant. I denne artikkelen deler jeg egne erfaringer med installasjon og oppsett.

Denne artikkelen begrenser seg til å få Home Assistant installert og satt opp på en Raspberry Pi 3 Model B. Tilkobling av utstyr omtales kun for eksempelets skyld.

Styrker og svakheter ved Home Assistant

Slik jeg ser det er Home Assistant et umodent produkt, noe som også gjenspeiles i versjonsnummeret, i skrivende stund versjon 0.84. Det er primært mangelen på brukervennlighet som er den store innvendingen. Litt kan gjøres i et brukergrensesnitt, men man kommer ikke utenom koding av YAML-filer i en tekst-editor. Begge deler burde være mulig, det er det ikke i dag.

Det Home Assistant mangler på brukervennlighet, tar det imidlertid igjen i fleksibilitet. Jeg har studert flere alternative plattformer, og så vidt jeg kan bedømme er det ingen plattform som har så bred støtte for forskjellige teknologier, produkter og tjenester som det Home Assistant har. Hente været fra Yr? Poste statusmeldinger til Slack? Lyspærer fra Philips Hue? Eller IKEA Trådfri? Apple HomeKit? Google Assistant? Koble til bilen? Ringeklokka? Strømforbruket? Pakkesporing? Listen er svært lang og den vokser raskt, takket være et svært aktivt community. Inntrykket mitt er at strategien til Home Assistant er å bygge bred støtte for utstyr først, så utbedre brukervennlighet senere.

Når jeg skriver at Home Assistant er umodent, reflekteres dette også i dokumentasjonen. Den er på sitt beste brukbar, på sitt verste uforståelig. Til tross for at det finnes en introduksjon, synes jeg også introduksjonen er ufullstendig. Den tar for eksempel ikke opp sikkerhet, mer enn å henvise til en mangelfull side, noe som for meg er helt grunnleggende i en slik løsning.

Jeg tenkte derfor å skrive en liten introduksjon til hva jeg selv har gjort for å sette opp Home Assistant. Jeg kommer ikke til å gjennomgå alt oppsett i detalj, men henvise til dokumentasjonen og supplere der den er dårlig.

Hvem er jeg?

Jeg som skriver dette er en privatperson som tester ut smarthus i eget hjem. Jeg arbeider ikke med dette til daglig og vil understreke at jeg på ingen måte er noen ekspert på Home Assistant. Jeg har brukt en del tid på å forstå det grunnleggende, og her deler jeg en nybegynners erfaringer. Har du innspill, tips, mener noe burde vært dekket eller jeg har skrevet noe feil, kan du gjerne sende meg en e-post.

Installasjon av Home Assistant

Jeg kjører, som tidligere omtalt, Home Assistant på en Raspberry Pi 3 Model B. I denne artikkelen finner du også litt annet utstyr jeg benytter.

Installasjon av Home Assistant på Raspberry Pi er er enkelt. Følg installasjonsveiledningen og etter en stund er Home Assistant tilgjengelig på http://hassio.local:8123/. Legg merke til at standardinstallasjonen er HTTP og ikke HTTPS. Mer om det senere.

I stedet for å følge de videre stegene i installasjonsveiledningen, bør du starte med å sikre installasjonen, for det kommer ikke rett ut av boksen. Home Assistant har sin egen guide til å sikre installasjonen, som jeg anbefaler at du leser, men som kan være noe abstrakt for den som tar i Home Assistant for første gang.

Angi så et langt passord for å sikre installasjonen din.

Når du er ferdig ser installasjonen omtrent ut som følger. Se godt på bildet, for du skal ofte innom flere av menyvalgene.

Home Assistant meny

Få tilgang til konfigurasjonsfilene med Samba

For å kunne gjøre noe som helst med Home Assistant, er du som nevnt nødt til å ha tilgang til konfigurasjonsfilene. I webgrensesnittet, trykk på Hass.io og Add-on store. Installer deretter Samba share. Etter installasjon av Samba bør du angi et brukernavn og passord for Samba-tilgang.

Når Samba er installert og kjører, vil du finne et Samba-share som heter hassio.

Home Assistant Samba share

Du logger inn med brukernavnet og passordet du akkurat anga. Straks du har logget inn vil du finne flere mapper, blant annet et som heter config. De andre kommer vi tilbake til. Inne i denne mappen finner du flere filer med filendelsen .yaml, blant annet configuration.yaml. Denne åpner du i en tekst-editor.

Mitt inntrykk av denne add-on-en er at den fungerer stabilt, men er veldig treg med å dukke opp i Finder etter omstart.

Sikkerhet først

Sikkerhet først. Alltid sikkerhet først! Det gjelder ikke bare ved oppsett, men også ved bruk og når man skal koble nye dingser til huset. Still deg selv alltid følgende spørsmål før du starter med noe nytt: Hvilke sikkerhetsutfordringer medfører det jeg nå tenker å gjøre? For eksempel, den smartlåsen du tenker å installere, og styre med stemmestyring, hva kan skje hvis uvedkommende får tak i telefonen din? Klarer de å åpne døra?

Derfor starter også denne artikkelen med sikkerhet.

2FA

Det første jeg gjorde var å sikre innloggingen med tofaktorautentisering (2FA). Jeg har skrevet en artikkel om 2FA tidligere som du kan lese.

secrets.yaml

I den samme mappen finner du en fil som heter secrets.yaml. I denne lagrer du hemmeligheter som brukernavn og passord, i stedet for å lagre dem i configuration.yaml. Følg dokumentasjonen.

Nettverk, dynamisk DNS og HTTPS

Installasjonen du har satt opp er kun tilgjengelig fra det lokale nettverket, og kan ikke nås fra internett. Først registrerer du en konto hos Duck DNS, deretter går du til menyvalget Hass.io, velger Add-on store og finner tillegget Duck DNS og installerer dette. Så følger du dokumentasjonen.

For å få dynamisk DNS til å fungere eksternt, må du også gi Home Assistant en fast IP-adresse. Akkurat nå er ikke det mulig å gjøre i Home Assistant sitt brukergrensesnitt, så da er det enkleste å binde Home Assistant til en fast IP-adresse i ruteren din.

Dernest må du ha port forwarding av ekstern port 443 til den interne IP-adressen på port 8123, som er den Home Assistant er satt opp med ut av boksen..

Svarteliste mislykkede innlogginger

Dersom utenforstående forsøker å logge inn i din Home Assistant-installasjon, er det i utgangspunktet ingenting som hindrer dem utover tiden det tar. Nå har du forhåpentligvis vært flink og aktivert 2FA, men i tillegg bør du følge dokumentasjonen for http-komponenten og legge til følgende:

http:
  ip_ban_enabled: true
  login_attempts_threshold: 5

Backup

Hvis du har gjort som meg, har du installert Home Assistant på en Raspberry Pi. Det er billig og enkelt. Men det kommer med en kostnad: å bruke et minnekort av typen microSD er mindre pålitelig enn en tradisjonell harddisk. Før eller siden vil det feile, og da sannsynligvis før.

I skrivende stund er vårt smarthus ikke spesielt smart, fordi Home Assistant er nede nettopp på grunn av korrupt minnekort.

Et alternativ til å kjøre Home Assistant på en Raspberry Pi er en NUC. Høyere kompleksitet med tanke på installasjon, men bedre driftssikkerhet. En annen ting som kan vurderes, som jeg selv vurderer, er å benytte en ekstern disk som tilkobles Raspberry Pi-en hvor Home Assistant kjører, som beskrevet på community-sidene til Home Assistant. Jeg har også vurdert en UPS, siden microSD-kort ikke er spesielt glade i å bli avbrutt midt i operasjoner og dermed kan bli korrupte.

Det er enkelt å ta en manuell backup av Home Assistant under menyvalget Hass.io og Snapshots. Velg Full snapshot og trykk Create, så tas det en fullstendig backup av hele installasjonen.

Det er imidlertid to problemer med backup-funksjonen: det viktigste er at backupene du tar lagres på det samme minnekortet som Home Assistant kjører. Dermed er du like langt — eller kort — når minnekortet ryker. Det andre problemet er at det ikke er trivielt å sette opp automatisk backup til ekstern lagring. Selv om det er shell-tilgang til Home Assistant, er det så langt mine ferdigheter strekker ikke mulig å sette opp rsync eller scp av backup.

Jeg har derfor funnet en løsning som tar full backup en gang i uka til Dropbox. Det første du trenger er et tillegg i Add-on store som heter Dropbox Sync. Følg deretter kapittelet Configuration i dokumentasjonen til tillegget for å hente et OAuth-token fra Dropbox.

Det neste er å automatisere prosessen med å ta en snapshot og laste den opp til Dropbox ved hjelp av tillegget. I mappen config finner du en fil som heter automations.yaml. Denne filen inneholder alle automatiske oppgaver Home Assistant gjør, enten det er å skru på lyset når det blir mørkt, eller å ta en backup. I configuration.yaml har jeg først følgende:

automation: !include automations.yaml

Dernest har jeg i automations.yaml jeg følgende kode:

# Ukentlig snapshot med opplasting til Dropbox
- alias: 'Ukentlig snapshot'
  initial_state: 'on'
  trigger:
    platform: time
    at: '00:01:00'
  condition:
  - condition: time
    weekday:
      - mon
  action:
  - service: hassio.snapshot_full
    data_template:
      name: >
        {{ now().strftime('%Y%m%d') }} Ukentlig backup
  - delay: '02:30'
  - service: hassio.addon_stdin
    data:
      addon: "7be23ff5_dropbox_sync"
      input:
        command: "upload"

Jeg skal ikke gå i detalj på hva all koden gjør, men hver mandag klokken 01.00 tas et snapshot med et filnavn lik aktuell dato. Deretter venter den to og en halv time, fordi en snapshot tar lang tid, før den laster den opp til Dropbox. Litt hack-ish, men det fungerer. Hver mandag morgen ser jeg en ny fil i Dropbox.

Til slutt må du lære deg hvordan du gjenoppretter en installasjon til et nytt minnekort. Community-et til Home Assistant hjelper deg.

SSH

Ingen boks er komplett uten shell-tilgang. Et shell er en uvurderlig verktøykasse for både konfigurasjon og automasjon. Det finnes en add-on som heter SSH server. Jeg anbefaler at du bytter ut innlogging med brukernavn og passord til innlogging med en krypteringsnøkkel, som jeg har skrevet om tidligere.

Orden i konfigurasjonsfilene

Hvis du har kommet så langt, har du sikkert stiftet bekjentskap med inntil flere YAML-filer, og du ser sannsynligvis en viss logikk i standardoppsettet. I configuration.yaml finner du flere henvisninger som likner på dette eksempelet som vi har sett tidligere:

automation: !include automations.yaml

I stedet for at du får en configuration.yaml som blir lang og uoversiktlig, kan du trekke ut forskjellige funksjoner eller elementer fra filen og over i andre filer, på samme måte som secrets.yaml. Selv har jeg følgende:

automation: !include automations.yaml
group: !include groups.yaml
script: !include scripts.yaml

Det vil si at koden som står i disse filene blir lastet på det stedet i configuration.yaml hvor de er skrevet.

Jeg anbefaler at du tidlig putter flytter ut kode i aktuelle filer, slik at du får et ryddig oppsett.

Databasestørrelse

En sak jeg aldri ble klok på var størrelsen på databasen hvor Home Assistant lagrer sine data. Den vokste og vokste og vokste og vokste. Skulle det aldri stoppe? Jeg fant liksom aldri svaret, men jeg fant en løsning. Det finnes en komponent som heter recorder og er den som lagrer data i databasen, slik dokumentasjonen forklarer. Denne har funksjonalitet som gir deg mulighet til å si hvor langt tilbake i tid du skal lagre hendelser og hvor ofte data skal slettes fra databasen.

Jeg har satt opp som følger:

# Sletting av database-records
recorder:
  purge_keep_days: 7
  purge_interval: 1

Jeg beholder altså data fra den siste uken, men sletter hver natt. Databasestørrelsen min holder seg for tiden på drøye 4 GB.

Hvordan koble til utstyr?

Så til selve godsakene. Hvordan kobler man utstyr til Home Assistant? Et sted må man starte.

Z-wave

Selv startet jeg med å kjøpe en USB-stick fra Aeotec for å styre Z-wave-basert utstyr. Deretter kjøpte jeg en stikkontakt som lot seg fjernstyre over Z-wave. Fikk jeg ikke dette til å fungere, så fikk jeg ingenting til å fungere.

Gå til hass.io, System og Hardware og noter deg det som står der. Ta ned Home Assistant via menyvalget Hass.io og System og Shutdown. Koble sticken i en ledig port. Koble i strømmen og du er oppe og kjøre igjen. Legg inn følgende i configuration.yaml:

zwave:
  usb_path: /dev/ttyACM0
  network_key: "[din key her]"

Sjekk hass.io, System og Hardware igjen og bruk den nye enheten til usb_path.

Merk den siste, den er ikke omtalt i dokumentasjonen andre steder enn der man leser om hvordan man legger til nye enheter.

Du vil se den nye sticken i brukergrensesnittet. Følg deretter dokumentasjonen for hvordan man legger til nye Z-wave-enheter. Min erfaring er at straks en enhet er lagt til, bør du gå til menyvalget Konfigurasjon og Z-wave, og deretter velge Heal network. I tillegg opplever jeg fra tid til annen at nye Z-wave-enheter ikke vises skikkelig før Home Assistant har fått en omstart via Konfigurasjon og Generelt og Start på nytt. Av og til fullstendig, via Hass.io og System og Reboot.

Du kan trykke på Z-wave-enhetene dine for å gi dem mer forståelige navn, eller du kan titte i filen customize.yaml.

Zigbee

Der det er enkelt å få Z-wave opp og kjøre, er Zigbee motstykket. Ikke på grunn av teknologien, men fordi det ikke er laget god nok native-støtte i Home Assistant ennå. Det var Guttorm Hveem som tipset meg om følgende fremgangsmåte.

  1. Først trenger du en ConBee Zigbee-kontroller.
  2. Gå til hass.io, System og Hardware og noter deg det som står der.
  3. Ta ned Home Assistant, koble ut strømmen, sett inn ConBee i en ledig USB-port og sett i strømmen igjen.
  4. I Home Assistant må du aktivere deCONZ add-on.
  5. Gå til hass.io, System og Hardware og se hvilken port ConBee har fått. Det er den som ikke stod der sist du var innom.
  6. På konfigurasjonssiden til den nye add-on-en du akkurat installerte, legger du inn den nye porten, for eksempel "/dev/ttyACM0" med anførselstegn.
  7. Du skal nå kunne besøke adressen http://hassio.local:8080/ som er brukergrensesnittet til Phoscon som er verktøyet du må bruke for å administrere Zigbee-enheter.
  8. Gå til http://hassio.local:8080/pwa/settings-gateway.html for å gi Home Assistant tilgang til Phoscon og gå deretter til http://hassio.local:8123/config/integrations/dashboard for å søke om tilgang.
  9. Legg til nye enheter. Dette kan være noe buggy. Selv fikk jeg bare lagt til fire enheter om gangen, før Home Assistant måtte rebootes fullstendig.
  10. Etter at du har lagt til nye enheter, vil de bli synlige under http://hassio.local:8123/config/integrations/dashboard og du kan behandle dem som hvilke som helst andre enheter i Home Assistant.

Et ryddig brukergrensesnitt

En av de første tingene som overrasket meg veldig var at alt man kobler til Home Assistant automatisk dukket opp på hovedsiden i brukergrensesnittet. Og da ble det veldig raskt veldig fullt.

I stedet for å skrive langt og mye, anbefaler jeg å se følgende video for hvordan du forholder deg til groups, views og friendly names. Disse tre er nøkkelen til å skreddersy ditt eget brukergrensesnitt. Det tok litt tid å forstå konseptet og få det riktig, men nå har jeg en god løsning.

Siri ❤️ Z-wave og Zigbee

Nå har du fått Home Assistant på beina. Du har sikret det, fått din første dings til å skru seg av og på, og du har forstått hvordan brukergrensesnittet kan tilpasses. Nå til noe annet artig: stemmestyring. Hos oss er vi Apple-brukere og da er det stemmestyring gjennom Siri som gjelder.

Stemmestyring med Home Assistant er litt som trolldom. Ikke fordi stemmestyringen i seg selv er trolldom, men fordi dette faktisk er noe som er enkelt å sette opp og som bare fungerer.

Den som har Z-wave-enheter i smarthuset sitt, vet at det ofte tar litt tid før alle sammen vises skikkelig i Home Assistant etter en omstart, gjerne flere minutter. I stedet for å følge dokumentasjonen, setter du i configuration.yaml følgende:

# HomeKit startes ikke automatisk, men venter til Z-wave er klart, se automations.yaml
homekit:
  auto_start: False
  filter:
    exclude_entities:
      - automation.start_homekit

HomeKit, som er integrasjonskomponenten mot Siri, startes altså ikke ved oppstart av Home Assistant, men gjennom en handling i automations.yaml som følger:

# Start HomeKit straks Z-wave er klart
- alias: 'Start HomeKit'
  trigger:
    - platform: event
      event_type: zwave.network_ready
    - platform: event
      event_type: zwave.network_complete
    - platform: event
      event_type: zwave.network_complete_some_dead
  action:
    - service: homekit.start

Vi venter altså med å starte HomeKit til Z-wave-nettverket er klart.

Når dette er gjort kan du åpne Hjem-appen på Mac-en, på telefonen eller iPad-en. Og, som ved trolldom, dukker enhetene dine opp her. Nå kan du opprette rom og soner, og plassere enhetene dine der de hører hjemme.

For vårt vedkommende bruker vi Hjem-appen som brukergrensesnitt i smarthuset, ikke Home Assistant sin app. Den brukes kun som administrasjonsverktøy. Når vi skal skru av og på lys, låse opp dører og tilsvarende, bruker vi Hjem-appen eller snakker med Siri. Hjem-appen er også tilgjengelig fra låst skjerm, så er den alltid for hånden.

Dernest er det bare å snakke til Siri.

Oppsummert

Hvis du liker å fikle med teknologi og ikke er redd for å skru og kode og plukke på ting, så er Home Assistant det desidert mest fleksible verktøyet. Men det kommer som nevnt med en nedside. Sørg for at du har tid til det som kreves for å få Home Assistant til å fungere skikkelig, og sørg for god backup! Hvis dette ikke frister er Homey visstnok et godt alternativ.

Martin skriver regelmessig om teknologiledelse og hvordan teknologi, samfunn og politikk påvirker hverandre. Få nye artikler via e-post:

Flere artikler

Enda flere artikler? Besøk arkivet.

Om Martin

Martin Koksrud Bekkelund

Dette er Martin Koksrud Bekkelund sitt private nettsted, hvor han skriver om teknologiledelse og hvordan teknologi, samfunn og politikk påvirker hverandre. Martin arbeider til daglig som direktør for produkt- og forretningsutvikling i Posten Norge AS. Les mer...

 

Facebook Twitter Instagram LinkedIn GitHub SlideShare Martin Koksrud Bekkelunds RSS-kanal Send Martin penger via PayPal

© 1995-2019 Martin Koksrud Bekkelund
OpphavsrettRSS og abonnementKontakt