Home Assistant: KlikAanKlikUit met Philips Hue dimmer switch

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.

Benodigdheden

  • Hue Bridge: dit is een klein device waaraan de Hue-apparaten, zoals de Hue Dimmer, gekoppeld worden. De Hue Bridge slaat de status van de Hue Dimmer op. Home Assistant kan de Hue Bridge via een API uitlezen (application programming interface). In dit artikel gebruiken we de Hue Bridge 2.
  • Hue Dimmer: dit is de afstandsbediening die over 4 knoppen beschikt: de aan-knop, 2 dimknoppen en een uit-knop.
  • Home Assistant (freeware), bijvoorbeeld op een Raspberry Pi.

Deel 1: Hue Bridge installeren en Hue API toegankelijk maken

  1. Sluit de Hue Bridge aan op het netwerk en start de Hue-app op uw telefoon op. Waarschijnlijk vraagt de app om een software-update te installeren op de Hue Bridge. Na de software-update wordt gezocht naar een Hue-lamp. Sluit de app af indien u niet over een Hue-lamp beschikt.
  2. Zoek het IP-adres van de Hue Bridge in de app op. Dit kan alleen indien u een Hue-lamp gekoppeld hebt. Als u geen Hue-lamp hebt, kunt u de installatie in de app niet afronden. Log in dat geval in op uw router om te zien welk IP-adres via DHCP is toegewezen aan de Hue Bridge.
  3. Toets het IP-adres van de Hue Bridge in uw browser in, gevolgd door /debug/clip.html, bijvoorbeeld: http://192.168.178.18/debug/clip.html
  4. Vraag een gebruikersnaam aan via URL /api met message: {"devicetype":"homeassistant"} en klik op POST. De melding Link button not pressed verschijnt. Druk op de ronde knop op de Hue Bridge en klik nogmaals op POST. De Hue Bridge weet dan dat u fysiek toegang heeft tot de bridge en genereert een gebruikersnaam, bijvoorbeeld uP974lPdzKiosP9iB1vla89kwgK532CiMUlagsjB. Meer informatie over deze procedure staat op https://developers.meethue.com/documentation/getting-started.
  5. Mogelijk wordt de wandschakelaar automatisch gekoppeld aan de Hue Bridge. De Hue Bridge vermeldt de Hue Dimmer in de groep sensors. Controleer via het volgende adres of de wandschakelaar aan de Hue Bridge gekoppeld is: http://192.168.178.18/api/uP974lPdzKiosP9iB1vla89kwgK532CiMUlagsjB/sensors. U ziet dan JSON-data die u bijvoorbeeld op https://jsonlint.com kunt plakken om de informatie eenvoudiger leesbaar te maken. De Hue Dimmer herkent u aan de code RWL021.

Deel 2: sensoren aanmaken in Home Assistant

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.

Deel 3: automation aanmaken in Home Assistant

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.

KlikAanKlikUit-wandschakelaar in Home Assistant

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

Conclusie

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.