De Philips Hue Tap Dial heeft vier knoppen en een draaiknop. In de Hue-app kun je daar al veel mee, maar met Home Assistant wordt hij een stuk slimmer. Bij mij doet de draaiknop steeds iets anders, afhankelijk van welke knop je het laatst hebt ingedrukt: dimmen in de keuken, boven de eettafel of in de woonkamer.

Het idee: een actieve groep

De kern is één helper: een keuzelijst (input_select) die onthoudt wat de draaiknop op dit moment bedient. Elke knop zet die keuzelijst op de juiste waarde. De draaiknop kijkt alleen naar de keuzelijst.

Knop Kort indrukken Lang indrukken
1 Lamp A aan, draaiknop dimt lamp A Lamp A uit, draaiknop dimt groep C
2 Lamp B aan, draaiknop dimt lamp B Lamp B uit
3 Volgende scène van lamp A Lamp A uit
4 Volgende scène van lamp B Lamp B uit

Zo hoef je niet te onthouden wat de draaiknop doet: hij dimt wat je net hebt aangezet.

Knoppen

De Hue-integratie maakt voor elke knop een event-entiteit. Een automation per knop reageert op short_release en long_release, zet het licht aan of uit en wijzigt de actieve groep.

triggers:
  - trigger: state
    entity_id: event.tap_dial_button_1
    attribute: event_type
    to: short_release
    id: kort
  - trigger: state
    entity_id: event.tap_dial_button_1
    attribute: event_type
    to: long_release
    id: lang
actions:
  - choose:
      - conditions: [{ condition: trigger, id: kort }]
        sequence:
          - action: light.turn_on
            target: { entity_id: light.lamp_a }
            data: { brightness_pct: 50 }
          - action: input_select.select_option
            target: { entity_id: input_select.tap_dial_groep }
            data: { option: Lamp A }

Draaiknop

De draaiknop heeft ook een event-entiteit. Die geeft de richting (clock_wise of counter_clock_wise) en hoe ver je draait (steps). Daar maak ik een dimstap van tussen 1% en 15%. Langzaam draaien dimt dus fijn, snel draaien grof.

variables:
  richting: "{{ trigger.to_state.attributes.event_type }}"
  pct: >
    {% set stappen = trigger.to_state.attributes.get('steps', 15) | int(15) %}
    {{ [[(stappen / 15) | round(0, 'floor'), 1] | max, 15] | min }}

Een choose kiest daarna op basis van de actieve groep welke lamp er dimt, met light.turn_on en brightness_step_pct (negatief bij terugdraaien).

Zet de automation op mode: restart. Draai je snel, dan telt alleen de laatste beweging en stapelen de acties niet op.

Scènes uit de Hue-app actueel uitlezen

Knop 3 en 4 bladeren door de scènes van een lampgroep. Ik wilde die lijst niet met de hand bijhouden. Een vaste keuzelijst met scènenamen loopt achter zodra je in de Hue-app een scène toevoegt, verwijdert of hernoemt.

De Hue-integratie maakt voor elke scène in de Hue-app al een scene-entiteit aan. De naam begint altijd met de ruimte en de lampgroep, bijvoorbeeld scene.lamp_a_ontspannen en scene.lamp_a_lezen. Verandert er iets in de Hue-app, dan werkt de integratie die entiteiten vanzelf bij.

Daar maak ik gebruik van. Op het moment dat je op de knop drukt, haalt de automation de lijst live op:

variables:
  scenes: >
    {{ states.scene | selectattr('entity_id', 'match', '^scene\.lamp_a_')
       | map(attribute='entity_id') | sort | list }}

Dit pakt alle scènes, houdt alleen die van de juiste lampgroep over en zet ze op alfabetische volgorde. Zo is de volgorde bij elke druk op de knop hetzelfde.

Daarna bepaalt de automation welke scène de volgende is:

  huidige: >
    {{ scenes.index(states('input_text.lamp_a_scene'))
       if states('input_text.lamp_a_scene') in scenes else -1 }}
  volgende: "{{ scenes[(huidige + 1) % (scenes | length)] }}"
  • Een input_text-helper onthoudt welke scène het laatst aan stond.
  • De % zorgt ervoor dat je na de laatste scène weer bij de eerste begint.
  • Is de onthouden scène inmiddels verwijderd of hernoemd in de Hue-app, dan staat hij niet meer in de lijst. De automation begint dan gewoon bij de eerste scène, zonder foutmelding.

Daarna zet hij de scène aan met scene.turn_on en slaat hij de naam op in de input_text. Maak je in de Hue-app een nieuwe scène voor die lampgroep, dan zit hij bij de volgende druk op de knop al in de cyclus. Je hoeft in Home Assistant niets aan te passen.

Wat heb je nodig

  • Een Philips Hue Tap Dial, gekoppeld via de Hue-integratie
  • Eén input_select met de groepen die de draaiknop kan bedienen
  • Per lampgroep met scènes één input_text, en scènes in de Hue-app die met de naam van die lampgroep beginnen
  • Vijf automations: één per knop en één voor de draaiknop