Home Assistant is een uitgebreid domoticaprogramma dat onder andere gebruikt kan worden op een Raspberry Pi, een mini-computer die vaak op Linux draait. De Home Assistant-community heeft een groot aantal componenten ontwikkeld waarmee Home Assistant kan communiceren met andere systemen. Te denken valt aan systemen waarmee apparaten en verlichting geschakeld kunnen worden, zoals KlikAanKlikUit (via bijvoorbeeld een RFXcom-transceiver), IKEA Tradfri en Philips Hue.
In dit artikel combineren we KlikAanKlikUit met Philips Hue via Home Assistant om verlichting te schakelen. KlikAanKlikUit biedt onder andere inbouwontvangers aan die bijvoorbeeld in een centraaldoos of plafondlamp geplaatst kunnen worden. Ook zijn stopcontactontvangers verkrijgbaar. Het voordeel van KlikAanKlikUit is dat per armatuur één KlikAanKlikUit-ontvanger volstaat. Met Philips Hue is het noodzakelijk om alle lampen van het armatuur te vervangen. Vooral bij armaturen waarin veel lichtbronnen/lampen geplaatst worden, is Hue een kostbare oplossing.
In dit artikel hanteren we een inbouwontvanger van KlikAanKlikUit. De inbouw- en stopcontactontvangers van KlikAanKlikUit werken op basis van 1-weg-communicatie (433,92 MHz). In de praktijk blijkt een RFXcom goed in staat te zijn deze ontvangers betrouwbaar te schakelen. De RFXcom-transceiver (samentrekking van transmitter en receiver) is een USB-device dat berichten van 433,92 MHz-apparaten kan ontvangen en versturen.
Via de rfxtrx-component van Home Assistant is het mogelijk om KlikAanKlikUit-ontvangers te schakelen en te dimmen. Vaak is het ook wenselijk om verlichting met een fysieke wandschakelaar te bedienen. KlikAanKlikUit biedt hiervoor draadloze wandschakelaars aan die op een muur bevestigd kunnen worden, maar helaas blijkt het signaal van die schakelaars vaak niet aan te komen bij de RFXcom. Waarschijnlijk zijn de KlikAanKliKUit-wandschakelaars bedoeld om een lamp binnen dezelfde ruimte te bedienen, terwijl de RFXcom vaak verder weg is geplaatst, bijvoorbeeld in de meterkast. Dit heeft als gevolg dat meerdere keren op de KlikAanKlikUit-wandschakelaar gedrukt moet worden om de lamp via Home Assistant te schakelen. Het kan ook zijn dat de lamp via KlikAanKlikUit is gekoppeld aan de wandschakelaar. Mocht het signaal wel aankomen bij de lamp, maar niet bij de RFXcom, dan ziet Home Assistant niet dat de lamp in werkelijkheid is in- of uitgeschakeld.
Een oplossing is om Zigbee-schakelaars te gebruiken. Zigbee is een systeem dat over 2-weg-communicatie beschikt. Philips Hue biedt betaalbare Zigbee-wandschakelaars aan, genaamd Hue Dimmer, die los of gemonteerd aan een muur gebruikt kunnen worden. De uitdaging is om deze Hue-wandschakelaars te koppelen aan Home Assistant zodat via de RFXcom een KlikAanKlikUit-ontvanger in-/uitgeschakeld kan worden na het indrukken van een knop op de Hue-wandschakelaar.
Home Assistant beschikt over een RESTful-sensor die de status van de sensor in de Hue Bridge kan uitlezen via de Hue API. We raden aan 2 sensoren uit te lezen, namelijk buttonevent en lastupdated. De eerste toont welke knop van de Hue Dimmer is ingedrukt en de laatste toont het tijdstip van de laatste keer dat op een knop is gedrukt. De sensor lastupdated leent zich goed voor eventuele troubleshooting omdat in Home Assistant direct zichtbaar is of een druk op de knop is aangekomen. Maak beide sensors als volgt aan in het configuratiebestand van Home Assistant.
- platform: rest
resource: http://192.168.178.18/api/gebruikersnaam/sensors/2
name: dimmer1_state
value_template: '{{ value_json.state.buttonevent }}'
scan_interval: 1
- platform: rest
resource: http://192.168.178.18/api/gebruikersnaam/sensors/2
name: dimmer1_updated
value_template: '{{ value_json.state.lastupdated }}'
scan_interval: 1
Vul hierboven het IP-adres van de Hue Bridge (bij 192.168.178.18) en de in stap 1 aangemaakte gebruikersnaam in. Wijzig eventueel ook het sensor-ID van de Hue Dimmer, dat hierboven is ingesteld op 2. Overigens betekent scan_interval 1 dat Home Assistant iedere seconde de status van de Hue Dimmer opzoekt in de Hue Bridge. Dit wordt ‘pollen’ genoemd. Na het drukken op een knop op de Hue Dimmer kan het zodoende maximaal 1 seconde duren voordat Home Assistant weet dat op een knop is gedrukt.
Herstart Home Assistant, druk op een knop op de Hue Dimmer en controleer of de sensoren goed worden weergegeven. De sensor dimmer1_state dient één van de volgende statussen te hebben: 1002 indien op knop 1 is gedrukt, 2002 indien op knop 2 is gedrukt, enzovoort. Sensor dimmer1_updated bevat bijvoorbeeld 2017-08-06T18:38:39. Maak de volgende automation aan:
- id: hue_dimmer1
alias: 'Dimmer1'
trigger:
platform: state
entity_id: sensor.dimmer1_state
action:
service_template: >
{% if is_state('sensor.dimmer1_state', '1002') %}
switch.turn_on
{% elif is_state('sensor.dimmer1_state', '4002') %}
switch.turn_off
{% else %}
{% endif %}
data:
entity_id: switch.lamp1, switch.lamp2
Het bovenstaande betekent: indien de status van sensor dimmer1_state wijzigt, kijk of de waarde gelijk is aan 1002 en zo ja, schakel dan de volgende lampen in: switch.lamp1 en switch.lamp2. Indien de status 4002 is, schakel dan de genoemde lampen uit.
Bij het drukken op bijvoorbeeld de aan-knop is de status 1000 totdat de knop is losgelaten. Na het loslaten is de status 1002. Zodoende kan het voorkomen dat Home Assistant bijvoorbeeld de status 1000 ziet. In dat geval doet de automation niets; er is niets vermeld onder de bovenstaande else-instructie. Dat is met opzet gedaan om te voorkomen dat een aan-commando wordt gestuurd omdat status 1000 gedetecteerd wordt en kort daarna nogmaals een aan-commando omdat status 1002 gedetecteerd is. Als snel achter elkaar 2 aan-commando’s naar een KlikAanKlikUit-dimmer worden gestuurd, gaat de lamp in de dimmodus. In deze modus wijzigt de lamp langzaam de lichtsterkte van laag naar hoog en vice versa. Deze modus wordt normaal gesproken gebruikt om de dimwaarde in te stellen met een gewone wandschakelaar. In deze automation willen we niet onbedoeld de dimmodus inschakelen, vandaar dat we alleen de statussen 1002 en 4002 verwerken.
Mocht u echter de KlikAanKlikUit-wandschakelaar (AWST-8800 of AWST-8802) willen gebruiken in plaats van een Hue dimmer switch en het belangrijk vinden dat Home Assistant de schakeling doet (omdat anders de lamp in Home Assistant niet de juiste status heeft indien het signaal van de wandschakelaar niet is aangekomen bij de RFXcom), schakel dan automatic_add van rfxtrx in en vang de code van de wandschakelaar op, bijvoorbeeld 0b110003011d11920b010f40. Maak vervolgens als volgt een virtuele switch aan voor de wandschakelaar.
- platform: rfxtrx
automatic_add: True
devices:
0b110003011d11920b010f40:
name: schakel1
fire_event: True
De onderstaande automation leest de bovenstaande virtuele switch uit. Zodra Home Assistant ziet dat op een knop van de wandschakelaar is gedrukt, wordt gekeken op welke knop is gedrukt en afhankelijk daarvan wordt een lamp in- of uitgeschakeld.
- id: schakel1
trigger:
platform: event
event_type: button_pressed
event_data: {"entity_id": "switch.schakel1"}
action:
service_template: >
{% if states.switch.schakel1.state == "on" %}
switch.turn_on
{% elif states.switch.schakel1.state == "off" %}
switch.turn_off
{% endif %}
data:
entity_id: switch.lamp1
Na het doorlopen van dit artikel heeft u via 2 RESTful-sensors een Hue Bridge gekoppeld aan Home Assistant zodat de status van een Hue Dimmer-wandschakelaar iedere seconde gepolld wordt. Hiermee beschikt u over een betaalbare en betrouwbare oplossing om uw KlikAanKlikUit-ontvangers, IKEA Tradfri-lampen of andere zaken te bedienen via Home Assistant.