Home Assistant: Open source Python3 home automation - deel 4

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)
Derde deel: Home Assistant: Open source Python3 home automation - deel 3 (Pinned posts deel 3)
Wat is Home Assistant?
Home Assistant (afgekort tot HA, soms ook HASS) is een open source automation platform gebouwd met Python 3, met als belangrijkste uitgangspunten "local control and privacy first". Het integreert veel verschillende soorten, merken en systemen in je slimme huis (en daarbuiten) zodat je al deze apparaten centraal kan besturen. De installatie is ook vrij eenvoudig op een Raspberry Pi3 of home server 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 ook 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?Om dit te versimpelen worden er momenteel 4 installatiemethodes officieel ondersteund, met ieder hun eigen voor- en nadelen:
:fill(white):strip_exif()/f/image/Uh26gAMXQqz7RZo1JCL8g31Y.png?f=user_large)
Recommended: Home Assistant / Home Assistant OS
Home Assistant biedt een zeer eenvoudig te installeren "all-in-one" oplossing. Het is een veilig, makkelijk up-to-date te houden systeem wat het meest krachtige home automation platform ter wereld draait. Hiermee installeer je een volledig en kant-en-klaar OS met Home Assistant, welke je eenvoudig kan uitbreiden met add-ons. Hiermee installeer je in een paar tellen Home Assistant op je Raspberry Pi 3 of 4, een Tinkerboard, Odroid of een Intel NUC. Een OS is inbegrepen, dus deze installatiemethode is voor verreweg de meeste gebruikers de aanbevolen installatiemethode.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 of snapshots 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 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. Voor geavanceerde gebruikers / developers is dit dan ook de mogelijkheid om Home Assistant Core te draaien in een virtual environment van Python, ook wel een venv installatie genoemd.Home Assistant Supervised
Dit is een soort van hybride oplossing tussen boven genoemde installatiemethodes. Hiermee installeer je de volledige Home Assistant op een bestaande Debian installatie (andere Linux varianten worden niet ondersteund). Hierbij heb je dus alle voordelen van het all-in-one systeem (zoals de Supervisor en add-ons) maar heb je wel volledige controle over het operating system. Wel geldt er een strikte set voorwaarden waaraan moet worden voldaan om een ondersteunde installatie te zijn. Zo is het officieel niet toegestaan de installatie voor iets anders dan Home Assitant te gebruiken. In praktijk kan je wel wat naast Home Assistant draaien maari in geval van problemen heb je geen support en ben je op jezelf aangewezen.Dit is dan 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 terwijl het OS open is voor de gebruiker. Bijvoorbeeld om Home Assistant volledig van een SSD te draaien of andere zaken te draaien op hetzelfde systeem.Hoe te installeren?
Je kunt Home Assistant op allerlei platformen installeren, zelfs al op een Raspberry Pi. 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.De installatie instructies van alle varianten staan per platform (Odroid, Pi, NUC, Windows, MacOS, Linux) gegroepeerd op de HA website:
:fill(white):strip_exif()/f/image/HzxQOGHUWaL5TbpDw8GDcmme.png?f=user_large)
Andere platformen
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.). Ook voor andere installaties, zoals op een QNAP of Synology NAS kun je hier terecht bij de alternatieve installatiemethodes.Configuratie van je eigen Home Automation
Configuratie van Home Assistant is tegenwoordig grotendeels webbased, maar kan ook via bestanden (YAML-formaat). 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/gPzHcL82US1bQTeKzppQk9De.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 1750) 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/ANxu66EDNigbFxfhXKs3bm52.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
Een mede-tweaker heeft een opensource Windows client uitgebracht voor Home Assistant: HASS.Agent. Met deze client kan je sensors vanuit je PC in HA toevoegen en commando's aanmaken om je PC vanuit HA te bedienen. Daarnaast kun je (icm een integration, staat op HACS) notificaties vanuit HA sturen, zowel tekst als met een afbeelding.
Alle info en screenshots staan op Github: https://github.com/LAB02-Research/HASS.Agent.
Automation
Basisprincipe van automatiseren
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).
Automations via de UI
Automations zijn eenvoudig via de frontend aan te maken:
.
Blueprints
Nóg eenvoudiger is het om gebruik te maken van blueprints::fill(white):strip_exif()/f/image/yF3qsno8wVUX9JBYw547YlgF.png?f=user_large)
Een blueprint is een vooraf gemaakte automatisering met door de gebruiker in te stellen opties. Dit maakt een scheiding mogelijk tussen de logica en inputs van een automatisering. Het klinkt een beetje ingewikkeld, maar in feite maakt het dingen herbruikbaar en gemakkelijker.
Stel je een blueprint voor die een licht bestuurt op basis van beweging, waarmee je de bewegingssensor kunt configureren om te activeren en het licht kunt regelen. Het is nu mogelijk om twee automatiseringen te creëren die elk hun eigen configuratie hebben voor deze blauwdruk en volledig onafhankelijk opereren, maar toch gebaseerd zijn op dezelfde automatiseringsconfiguratie.
Blueprints zijn geweldig om je automatiseringen en ideeën met de community te delen. Er is een blueprint categorie op het HA forum waar Blueprints gedeeld kunnen worden. Een blueprint kan bijvoorbeeld worden gedeeld voor een specifieke Zigbee-afstandsbediening die alle knoppen aan een lamp koppelt, of een blueprint die een melding stuurt wanneer er lege batterijen zijn gevonden. Of een blueprint voor het dempen van muziek wanneer je je Android-telefoon oppakt. The sky is the limit!
Blueprints importeer je door de URL van het forumonderwerp of vanuit GitHub naar de gebruikersinterface te kopiëren. Vervolgens kan je van deze blueprint automatiseringen maken door de vereiste invoer in te vullen.
Automations in YAML
Onder water zijn blueprints en in de UI gemaakte automatiseringen ook gewoon gebaseerd op YAML - dat betekent dat je zelf ook nog steeds YAML kan gebruiken als je dat wil. 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".
Sharing is caring
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. Het is een goed idee om met de "include" opties te werken: hiermee leg je alleen vast wat je echt vastgelegd wil hebben.
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 dit doen met de DuckDNS of NGINX addons.
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: $ 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
- Bovenaan deze topic start staan links naar pinned posts in vorige Home Assistant topics 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
- HASS.agent, een HA Windows client van LAB02 Research
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!
[ Voor 204% gewijzigd door Hmmbob op 11-11-2022 08:35 . Reden: Typo ]
Sometimes you need to plan for coincidence