Configuratie Home Assistant

Home Assistant

Nadat ik de Arduino's had geconfigureerd met MQTT en op een raspberry pi de MQTT server had draaien, koos ik voor een platform om alles te regelen, en kwam uit op 'Home Assistant'.
De support is fantastisch, bijna alles wat mogelijk was is beschikbaar, en het configureren is redelijk makkelijk, ook al struikel ik soms over de structuur van de configuratiefiles (YAML).
De belangrijkste zaken die je moet configureren zijn:
  • inputs (sensors en mqtt queues)
  • outputs (lights en switches)
Update: deze configuratie is met de laatste versies van Home Assistant eenvoudiger gemaakt door middel van 'MQTT Discovery', hiermee kun je de meeste apparaten zichzelf laten configureren.

Hierna kun je met behulp van 'automation' de boel aan elkaar koppelen, door middel van logica:
  • Onder welke voorwaarde moet iets gebeuren, bijvoorbeeld alleen na zonsondergang (Conditions)
  • Wanneer moet er iets gebeuren, bij welke gebeurtenis (Triggers)
  • Wat moet er gebeuren (Actions)
De software kan ook gekoppeld worden aan Apple's Homekit, door een extra instelling aan te zetten in de configuratie, hierdoor worden alle apparaten ook zichtbaar voor Apple's Homekit.

Andere ondersteunde mogelijkheden zijn:
  • device tracking: middels je router, bluetooth of nmap op je netwerk kunnen al je devices worden gedetecteerd, waardoor je 'geofencing' kunt implementeren: als je smartphone in de buurt is, kun je acties triggeren, of omgekeerd als je weggaat.
  • IFTTT: middels een koppeling met deze website kun je allerlei acties laten triggeren op je smartphone of andere apps
  • alarmering: op basis van sensoren (beweging, warmte, CO/CO2) kun je alarms laten genereren en bijvoorbeeld notificaties op je smartphone krijgen als er iets onverwachts gebeurt.

Praktijkervaringen

Bij het werken met Home Assistant hou ik de volgende werkwijze aan:
  1. Bijwerken inputs en outputs: dit gebeurt eigenlijk alleen als er hardware wordt veranderd, dus als ik extra sensoren en schakelaars aanmaak. Ik gebruik meestal de bestaande als sjabloon, kopieer ze en pas ze aan. Door middel van de controlefunctie bij 'instellingen' check ik de syntax, en dan herstart ik Home Assistant. Hierna kun je ze terugvinden onder de 'dev-state' pagina, waar je alle items en hun eigenschappen kunt controleren.
    Ook dit is nu grotendeels vervangen door de 'MQTT Discovery' functie.
  2. Scripts, Groups en Automations: deze kunnen worden aangepast zonder herstart, en hier gaat het meer om het gebruikersgemak: welke logische groepen wil ik gebruiken, welke acties wil ik scripten, en welke schakellogica wil ik gebruiken. Dit proces is veel meer een continue leerervaring: wat werkt, wat niet, hoe automatisch wil ik het hebben, etc.
Ik probeer hierbij de Arduino's zo generiek mogelijk te houden, d.w.z. aangepast aan de hardware, maar geen schakellogica: de Arduino heeft geen weet van de relaties tussen de inputs en de outputs.

De Arduino's zijn inmiddels zodanig geconfigureerd, dat ze zelf hun configuratie publiceren via MQTT, zodat Home Assistant zelf de items kan configureren middels 'MQTT Discovery'. Een schakelaar ziet er dan bijvoorbeeld als volgt uit:

{
"name":"Stopcontact Huiskamer",
"uniq_id":"hk_switch1",
"stat_t":"domus/hk/stat/relay",
"cmd_t":"domus/hk/in",
"pl_on":"R01",
"pl_off":"R00",
"stat_on":"on",
"stat_off":"off",
"val_tpl":"{{value_json.POWER0}}",
"dev":{"ids":["domus_huiskamer"],
"cns":[["ip","192.168.178.27"],
["mac","00:01:02:03:04:06"]],
"name":"Domus Huiskamer",
"mdl":"Mega 2560",
"mf":"Arduino"}
}

In deze xml syntax worden alle velden geconfigureerd die normaal via een configuratiebestand worden opgegeven. In Home Assistant wordt dan direct een schakelaar aangemaakt volgens deze configuratie.

Referenties:

https://www.home-assistant.io/docs/mqtt/discovery/
https://github.com/pmansvelder/arduino-sketches/tree/master/libraries/Domus_by_PM
https://github.com/pmansvelder/arduino-sketches/tree/master/domus_librarytest

Reacties

Populaire posts van deze blog

Automatisering in Home Assistant

NFC Scanner voor toegangscontrole