Home Assistant: Open source Python3 home automation - deel 3

Eerste deel: Home Assistant - Open source Python3 home automation (Pinned posts deel 1)
Tweede deel: Home Assistant: Open source Python3 home automation - deel 2 (Pinned posts deel 2)
Wat is Home Assistant?
Home Assistant (afgekort tot HA, soms ook HASS) is een open source automation platform gebouwd met Python 3. Het kan veel verschillende soorten en merken devices in huis (en daarbuiten) tracken en besturen. De installatie is ook vrij eenvoudig en er is een zeer snel groeiende community. Leuk detail is dat het project door een in de VS wonende Nederlander (Paulus Schoutsen) is gestart.Demo
Een werkende demo-omgeving is te vinden op https://demo.home-assistant.io/. Je kan daar door verschillende Lovelace (UI) setups klikken, zodat je een goed beeld krijgt bij alles wat mogelijk is met Home Assistant en Lovelace.
Ingebouwde UI
Home Assistant heeft een ingebouwde web UI geschikt voor mobiel, tablet en desktop. Om de interface te kunnen gebruiken hoef je dus geen app te installeren, maar dat kan wel. Er zijn apps voor iOS en Android. Het grote voordeel van deze apps is dat je meteen ingebouwde mogelijkheden hebt voor Device Tracking, Notificaties en dat je sensoren van je telefoon kan uitlezen. Een goed overzicht van de mogelijkheden per platform is hier te vinden.De standaard interface ziet er ongeveer zo uit, maar kan dus volledig naar eigen voorkeur opgezet worden:
:fill(white):strip_exif()/f/image/lo1i93OyGjcZd2xi05V5EJdy.png?f=user_large)
Verschillende varianten
Over de jaren heen is Home Assistant fors gegroeid. Waar het eerst 'enkel' een Python applicatie was kwam daar later een eigen OS en een management systeem bij. En als je dat dan allemaal combineerde in één systeem, dan had je de optie die "Hass.io" genoemd werd. Volg je het nog?Nu, omdat er vaak verwarring ontstond door deze tombola aan namen heeft het Home Assistant team begin 2020 besloten om iets aan deze verwarring te doen. Sindsdien worden de volgende termen gebruikt:
Home Assistant
Home Assistant is een alles-in-een home automation operating system voor je huis. Het is een veilig, makkelijk up-to-date te houden systeem wat het meest krachtige home automation platform ter wereld draait. And guess what? In de kern draait het Home Assistant Core - zie hieronder. Als je deze all-in-one oplossing draait kan je gebruik maken van Home Assistant add-ons.Legacy: dit complete systeem is wat eerder (voor 2020) werd aangeduid als "Hass.io".
Home Assistant Core
Home Assistant Core is (letterlijk) de kern van Home Assistant: dit is de Python applicatie die daadwerkelijk de aansturing van je huis voor zijn rekening neemt. Home Assistant Core is ook datgene wat je gebruikt als je zelf een Docker of Python venv installatie draait: deze maken gebruik van enkel de Python applicatie Home Assistant Core. Dit wordt ook wel eens een "stand-alone installatie" genoemd.Hoe te installeren?
Je kunt Home Assistant op allerlei platformen installeren waarvan de Raspberry Pi de meest gebruikte is. Let erop dat het installeren op een SD-Card met standaard logging en recording settings de card zwaar belast. Kijk bij de tips voor oplossingen hiervoor. Eind mei heeft Home Assistant geprobeerd duidelijkheid te scheppen in de verschillende officieel ondersteunde installatiemethodes in een blog: https://www.home-assistan...nd-community-guides-wiki/. Hieronder een overzicht daarvan:Recommended: Home Assistant
Home Assistant biedt een zeer eenvoudig te installeren "all-in-one" oplossing. Hiermee installeer je een volledige en kant-en-klare installatie van Home Assistant die je eenvoudig kan uitbreiden met add-ons. Het "Getting Started" stappenplan op de Home Assistant website leidt je door de benodigde stappen heen. Hiermee installeer je in een paar tellen Home Assistant op je Raspberry Pi 3 of 4, een Tinkerboard, Odroid, of een Intel NUC Dit is voor verreweg de meeste gebruikers de aanbevolen installatiemethode.Je kan ook gebruik maken van Home Assistant in een virtuele machine. Dit is een geavanceerde oplossing om de Home Assistant "all-in-one" oplossing met add-ons en het gemak van de supervisor te gebruiken zonder daar één fysiek apparaat helemaal voor vrij te maken. Je draait dan Home Assistant als virtual machine op je eigen ESXi of Proxmox server - hiervoor moet je natuurlijk wel al over zo'n server beschikken. Images / virtual disks voor deze oplossing zijn hier te vinden. (Dit is een geavanceerde oplossing. Als ESXi, Proxmox en vmdk je niets zegt dan is deze installatiemethode niet geschikt voor je.)
Home Assistant Container
Een andere populaire oplossing is het draaien van Home Assistant Core in een container (bijv Docker omgeving). Dit is bruikbaar als je zelf voldoende ervaring hebt met het opzetten van een besturingssysteem waarop Docker draait én je geen behoefte hebt aan de add-ons die je met de gewone Home Assistant wel zou krijgen, omdat je ze bijvoorbeeld zelf in een Docker container naast Home Assistant wil draaien. Met deze methode draai je enkel de kern van Home Assistant, zonder de extra Supervisor en OS lagen.Home Assistant Supervised
Dit is een soort van hybride oplossing tussen boven genoemde installatiemethodes. Hiermee installeer je de volledige Home Assistant op een bestaand Linux besturingssysteem. Hierbij heb je dus alle voordelen van het all-in-one systeem (zoals de Supervisor en add-ons) zonder dat je een systeem enkel en alleen voor Home Assistant moet gebruiken. Dit is ook een wat meer geavanceerde installatiemethode dan de generieke Home Assistant installatie, maar erg populair in de community omdat het toch de "full experience" geeft zonder er een apparaat volledig voor in te zetten.Home Assistant Core (aka Python venv)
Voor geavanceerde gebruikers / developers is er ook de mogelijkheid om Home Assistant Core te draaien in een virtual environment van Python, ook wel een venv installatie genoemd. Hiermee draai je Home Assistant rechtstreeks op een bestaande Python installatie. De aanwijzingen voor een venv-installatie op een Raspberry staan hier, terwijl de aanwijzingen voor een venv-installatie op andere omgevingen hier staan.Andere platformen
Voor andere installaties, zoals op een NAS, een standaard Linux omgeving, Mac of Windows, kun je hier terecht voor een beschrijving door community leden: https://community.home-assistant.io/c/community-guides/Configuratie van je eigen Home Automation
Configuratie van Home Assistant is tegenwoordig grotendeels webbased, maar kan ook via bestanden (YAML-formaat). Als onderdeel van de overgang naar versie 1.0 worden steeds meer configuratiemogelijkheden beschikbaar gemaakt via de front-end, waardoor Home Assistant ook voor mensen die niet in YAML code willen werken heel bruikbaar is.Een Home Assistant installatie bestaat uit een combinatie van integraties (om apparaten zoals lampen, speakers, media spelers aan te sturen) en automations (om op basis van bepaalde triggers een bepaalde action uit te voeren.
Integraties, custom components en add-ons
Officiële integraties
:fill(white):strip_exif()/f/image/E0AblXX4pcKXDLxom01UkkLR.png?f=user_large)
De services of apparaten waarmee Home Assistant "out-of-the-box" mee kan werken, worden integraties genoemd. Voor een complete lijst van zogenaamde integrations (inmiddels al meer dan 1500) zie:
https://www.home-assistant.io/integrations#all. Hieronder slechts een select aantal van mogelijke integraties met Home Assistant:
- Mediaspelers zoals Kodi, Spotify, Roku, Plex, Sonos
- ZWave (Voor o.a. Fibaro, Qubino, Aeotec)
- Zigbee (IKEA, Philips Hue, Xiaomi)
- Google Chromecast / Google Home / Google Assistant
- Amazon Alexa
- Smart thermostaten zoals Eneco Toon (als je een Toon op afstand abonnement hebt). Geroote Toon koppelen.
- Routers en device trackers (voor tracking van gebruikers, voor home/away status)
:fill(white):strip_exif()/f/image/2WXdqlhE4J5FD1BrQvsrWFDS.png?f=user_large)
Add-ons
Draai je het all-in-one Home Assistant (wat vroeger Hass.io genoemd werd), dan kan je gebruik maken van zogenaamde add-ons. Add-ons breiden de functionaliteit rondom Home Assistant uit, zoals bijvoorbeeld een MQTT server, een editor voor je configuratie of een Adblocker voor je netwerk. Hoewel deze add-ons misschien wel met Home Assistant praten en eenvoudig vanuit Home Assistant te configureren en bedienen zijn, zijn het geen nieuwe integraties of veranderen ze de werking van Home Assistant niet. Het is dus een stuk software wat je naast je Home Assistant draait, om zo je apparaat meer taken op zich te laten nemen.Een overzicht met beschikbare add-ons is hier te vinden.
HACS (Home Assistant Community Store)
HACS is een custom component die een soort marktplaats voor andere custom components implementeert. Oftewel: na het installeren van HACS krijg je toegang tot een enorme verzameling van custom components voor Home Assistant. Dit kan bestaan uit nieuwe integraties maar ook uit modules of cards en themes voor gebruik in Lovelace. Al deze items zijn vanuit HACS te installeren, bij te werken en weer te verwijderen. HACS (of custom_components) passen dus (in tegenstelling tot add-ons) wél de werking of mogelijkheden van Home Assistant aan. Iedere installatievorm kan gebruik maken van HACS.:fill(white):strip_exif()/f/image/PdHa7Fz3sh2SuBEzdXfrbjco.png?f=user_large)
(Klik voor een bewegende demo)
Community projecten
Home Assistant heeft een grote community en er komen regelmatig nieuwe componenten bij.Kijk daarvoor ook hier: https://community.home-assistant.io/c/projects
Automation
Een platform als Home Assistant wil je natuurlijk gebruiken om bepaalde taken in je huis te automatiseren. In Home Assistant werkt dat met Automations.Automations werken volgens het principe trigger -> condition -> action
Het is belangrijk dat je deze basis snapt, want ongeacht hoe je automations gaat invoeren (via de frontend of yaml), de basisstructuur blijft altijd hetzelfde.
Dus: "Als dit gebeurt" (trigger) -> "En aan deze voorwaarden wordt voldaan" (condition) -> "Voer dan dit uit" (action).
Simpel voorbeeld in yaml:
YAML:
1
2
3
4
5
6
7
8
| automation: alias: Turn on light when sun sets trigger: platform: sun event: sunset action: service: light.turn_on entity_id: light.livingroom |
Een uitgebreider voorbeeld:
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| # Example configuration.yaml entry group: living_room: - light.table_lamp - light.ceiling - switch.christmas_lights automation: alias: Turn on light when sun sets trigger: platform: sun event: sunset offset: "-01:00:00" condition: platform: state entity_id: device_tracker.paulus state: home action: service: homeassistant.turn_on entity_id: group.living_room |
YAML configuratie is over het algemeen "voor gevorderden". Automations zijn ook eenvoudig via de frontend aan te maken:

Een aantal tweakers hebben hun config gedeeld: kijk daar ook eens ter inspiratie.
Tips en aanbevelingen
Yaml: spatiegevoelig...
YAML is extreem gevoelig voor spaties en tabs. Als vuistregel: inspringen doe je altijd per even aantal spaties en tabs worden niet gebruikt. Hoewel een tool als yamllint misschien aan kan geven dat je "valid yaml" hebt, wil dat nog niet zeggen dat het ook "valid configuration" is voor Home Assistant. Als je wijzigingen in yaml bestanden hebt gemaakt, kan je eenvoudig je wijzigingen controleren door in de frontend naar "Instellingen" -> "Serverbeheer" -> "Controleer configuratie" te gaan voordat je (op hetzelfde tabblad) delen van je configuratie kan herladen of Home Assistant herstarten.Tip bij gebruik van een SD-Card
Als je gaat installeren op een SD-Card is het aan te raden om de database en log van Home Assistant weg te laten schrijven naar een usb-stick of andere externe locatie, omdat de vele schrijfacties die hierbij komen kijken niet goed zijn voor de levensduur van je SD-Card. Hier een handleiding betreft het gebruik van een usb-stick.Het lezen/schrijven naar de database kun je sowieso beperken als je de Recorder en Logbook wat beperkter opzet. Het is vaak helemaal niet nodig om bepaalde zaken te loggen.
Externe toegang en beveiliging
Als je je Home Assistant platform ook van buitenaf wilt kunnen benaderen is het aan te raden om de verbinding goed te beveiligen.Indien je Home Assistant (de all-in-one oplossing) gebruikt kun je die doen met de DuckDNS Addon.
Andere losse tips & aanbevelingen
Sommige van onderstaande tips zijn onnodig of verlopen op een andere manier als je van de all-in-one Home Assistant installatie gebruik maakt!- Om makkelijk je Home Assistant configuratie bestanden aan te passen maak je een samba share aan.
Uitleg hierover vind je in deze video rond 6:30 - Het is sterk aan te raden om je bestanden te bewerken met Notepad++ of Atom. In deze editors kun je de Code Taal dan op YAML zetten waardoor het makkelijker leesbaar is en je fouten sneller ontdekt. Met Atom kan je ook via SSH rechtstreeks met je host verbinden, zodat je geen samba share hoeft aan te maken.
- Een iets geavanceerder alternatief kan VS Code zijn - zowel te gebruiken als losse installatie op je pc maar ook als add-on als je de volledige Home Assistant draait. Installeer je ook de Home Assistant plugin (zit al in de add-on), dan krijg je auto complete voor entiteiten en veel voorkomende stukken code. De plugin is te downloaden via https://marketplace.visua...art.vscode-home-assistant.
- Vaak is het zo dat het herstarten van Home Assistant via de GUI of zelfs via de commandline erg lang kan duren. Je kunt Hassctl gebruiken om te herstarten. Als het afsluiten namelijk te lang duurt wordt het hiermee na 1 minuut hard gestopt. Dit heeft tot nu toe nog nooit voor problemen gezorgd.
- Nadat je configuratie bestanden hebt aangepast moet je Home Assistant herstarten, maar om zeker te zijn dat dat niet mislukt vanwege incorrecte code kun je eerst een "check config" doen (instellingen -> server beheer -> controleer configuratie). In een terminal kan je ook dit commando runnen (vanaf versie 0.29): $ hass --script check_config.
- Bij Templates (onder Developer Tools) http://JOUWHASSURL/dev-template kun je ook templates controleren.
- De ingebouwde icons die je kan gebruiken komen van https://materialdesignicons.com/, waar je ook voorbeelden kan zien.
Inspiratie / voorbeelden van anderen
Home Assistant Community resources
- Awesome Home Assistant - Een verzameling van interessante Home Assistant bronnen/toepassingen.
- Voorbeelden van configuraties van anderen kun je hier vinden.
- Home Assistant Community Forum
- Home Assistant Discord chat
- Home Assistant Reddit forum
- Home Assistant Podcast
Configuraties en componenten van en door Tweakers
- Pinned posts in het vorige Home Assistant topic met vaak handige configuratievoorbeelden
- ThinkPad's configuratie op BitBucket
- ThinkPad: Universele IR afstandsbediening m.b.v. ESP8266
- ThinkPad: Value template om een random ID te maken voor KlikAanKlikUit-switches (AC-protocol)
- nicky2b: Philips Hue Motion sensor toevoegen (Lux, Temp en Motion) en een Engelse vertaling.
- Home Automations van PuckStar
- Hmmbob's configuratie op GitHub
- Aan/Uit thermostaat via Hass, door PerinNoise
- Repsect's wallmounted tablet met Home Assistant
- Homekit Infused Lovelace interface van Jimzz
Andere relevante topics
Tweakers: Show je eigen Home Assistant setup
Er is een speciaal "show je eigen Home Assistant setup" topic waar vele prachtige voorbeelden staan van mede-tweakers. In dit topic zie je goed wat voor een sterk en flexibel product Home Assistant is met zijn goed configureerbare Lovelace frontend.Zigbee2Mqtt
Er is nu een specifiek Zigbee2mqtt topic!. Zigbee2mqtt is open source software waarmee je je zigbee apparaten via MQTT kunt uitlezen en aansturen. Met deze software en relatief goedkope hardware die je ervoor nodig hebt, heb je in principe geen andere Zigbee hubs meer nodig zoals Philips Hue, Xiaomi Gateway of Trädfri. Dat scheelt dus geld en extra devices.deCONZ - Zigbee gateway van Dresden Elektronik
Een andere zigbee Gateway oplossing is deCONZ. deCONZ is een Zigbee gateway ontwikkeld door Dresden Elektronik. Met deze gateway kun je Zigbee devices van verschillende fabrikanten aansturen door middel van de Phoscon web-app. De deCONZ gateway is los te gebruiken maar ook in combinatie met verschillende domotica applicaties zoals Home Assistant.Node-RED
Een alternatief systeem voor het bouwen van automatiseringen binnen Home Assistant is Node-RED. Node-RED is een applicatie waarmee je zonder (veel) programmeerervaring toch krachtige automatiseringen kan maken vanuit je browser, met een eenvoudige grafische interface. Daarnaast heeft het volledige ondersteuning voor Javascript ingebouwd, zodat je in zogenaamde 'function nodes' eigen krachtige logica kan programmeren indien gewenst.Heb je ook een configuratie die je met ons wilt delen? Of misschien heb je zelf een handig component gemaakt? Laat het een van de topicstarters weten dan kunnen we de link hier opnemen!
Topicstart overgenomen uit de vorige topics, kudo's voor @Hmmbob en daarvoor weer @BKJ en @PuckStar
[ Voor 101% gewijzigd door Hmmbob op 19-08-2020 10:15 ]