Philips Hue Dimmer Switch Zigbee2MQTT
Articolo

Home Assistant: Gestire il Philips Hue Dimmer Switch con Zigbee2MQTT e Device Triggers

Scopri come ottimizzare il Philips Hue Dimmer Switch in Home Assistant usando Zigbee2MQTT e Device Triggers per un controllo avanzato e personalizzato.

Introduzione al Philips Hue Dimmer Switch e Zigbee2MQTT

Philips Hue Dimmer Switch Zigbee2MQTT è al centro della novità: Il Philips Hue Dimmer Switch è un accessorio versatile per la gestione dell'illuminazione smart, ma la sua piena potenzialità può essere sbloccata attraverso integrazioni avanzate. Utilizzando Zigbee2MQTT (Z2M) con Home Assistant, è possibile superare le limitazioni native del dispositivo e configurare azioni personalizzate. La community di Home Assistant ha sviluppato soluzioni innovative, tra cui la blueprint "Ultimate Hue Remote Controller", che sfrutta i Device Triggers per semplificare la configurazione e aggiungere funzionalità come il doppio click sintetico, una caratteristica non supportata nativamente dall'hardware. Questo approccio elimina la necessità di gestire manualmente gli argomenti MQTT o di abilitare sensori nascosti, rendendo l'integrazione più intuitiva e "frustration-free".

La Blueprint "Ultimate Hue Remote Controller"

Philips Hue Dimmer Switch Zigbee2MQTT - La blueprint "Ultimate Hue Remote Controller" è stata progettata specificamente per il Philips Hue Dimmer Switch (sia Gen 1 che Gen 2) e opera tramite Zigbee2MQTT. Il suo punto di forza risiede nell'utilizzo dei Device Triggers, che permettono di selezionare il telecomando direttamente da un elenco a discesa, semplificando notevolmente il processo di configurazione. A differenza delle soluzioni precedenti, non è più necessario inserire manualmente gli argomenti MQTT o attivare sensori legacy. La blueprint gestisce in modo intelligente le azioni dei quattro pulsanti (Superiore, Su, Giù, Inferiore), consentendo di assegnare funzioni sia al singolo click che al doppio click, oltre alla pressione prolungata (hold).

Prerequisiti per l'installazione

Per poter utilizzare questa blueprint, sono necessari alcuni prerequisiti fondamentali:

  • Una installazione di Home Assistant (si raccomanda la versione 2024.x o più recente).
  • Zigbee2MQTT configurato e funzionante.
  • Un Philips Hue Dimmer Switch accoppiato correttamente tramite Zigbee2MQTT.

Philips Hue Dimmer Switch Zigbee2MQTT corpo

Configurazione della Blueprint

Philips Hue Dimmer Switch Zigbee2MQTT - Una volta soddisfatti i prerequisiti, è possibile importare la blueprint in Home Assistant. La configurazione è guidata e intuitiva. Si seleziona il dispositivo Philips Hue Remote dall'elenco dei dispositivi MQTT disponibili. Successivamente, è possibile personalizzare il ritardo per il doppio click (double_click_delay), regolando la sensibilità per facilitare l'esecuzione di questa azione. Infine, per ciascuno dei quattro pulsanti, si possono definire le azioni da eseguire con un singolo click, un doppio click o una pressione prolungata, utilizzando le opzioni di azione disponibili in Home Assistant.

blueprint:
  name: Ultimate Hue Remote Controller via Z2M
  description: >
    Configure Hue Remote buttons via Zigbee2MQTT with Device Triggers.
    
    **Features:**
    - Synthetic Double Click
    - Organized settings by button
    - Visual Section Headers
    
    **Compatible with:**
    - Gen 1 (Labels: "I", "O")
    - Gen 2 (Labels: "Power", "Hue")
  domain: automation

  input:
    remote:
      name: Philips Hue Remote
      description: Select your remote device.
      selector:
        device:
          integration: mqtt
          manufacturer: Philips
          model: Hue dimmer switch
    
    double_click_delay:
      name: Double Click Delay (ms)
      description: >
        Time to wait for a second click. 
        Lower = Lights turn on faster (less lag).
        Higher = Easier to perform a double click.
        Recommended: 400ms - 600ms.
      default: 500
      selector:
        number:
          min: 100
          max: 2000
          unit_of_measurement: ms
          mode: box

    # ----------------------------------------------------------------
    # TOP BUTTON
    # ----------------------------------------------------------------
    on_single_press:
      name: 🟢 Top Button - Single Click
      description: 'Symbol: "I" or "Power"'
      default: []
      selector: { action: {} }
    on_double_press:
      name: 🟢 Top Button - Double Click
      description: 'Symbol: "I" or "Power"'
      default: []
      selector: { action: {} }
    on_hold:
      name: 🟢 Top Button - Hold
      description: 'Symbol: "I" or "Power"'
      default: []
      selector: { action: {} }

    # ----------------------------------------------------------------
    # UP BUTTON
    # ----------------------------------------------------------------
    up_single_press:
      name: 🔆 Up Button - Single Click
      description: 'Symbol: Large Sun (Brighten)'
      default: []
      selector: { action: {} }
    up_double_press:
      name: 🔆 Up Button - Double Click
      description: 'Symbol: Large Sun (Brighten)'
      default: []
      selector: { action: {} }
    up_hold:
      name: 🔆 Up Button - Hold
      description: 'Symbol: Large Sun (Brighten)'
      default: []
      selector: { action: {} }

    # ----------------------------------------------------------------
    # DOWN BUTTON
    # ----------------------------------------------------------------
    down_single_press:
      name: 🔅 Down Button - Single Click
      description: 'Symbol: Small Sun (Dim)'
      default: []
      selector: { action: {} }
    down_double_press:
      name: 🔅 Down Button - Double Click
      description: 'Symbol: Small Sun (Dim)'
      default: []
      selector: { action: {} }
    down_hold:
      name: 🔅 Down Button - Hold
      description: 'Symbol: Small Sun (Dim)'
      default: []
      selector: { action: {} }

    # ----------------------------------------------------------------
    # BOTTOM BUTTON
    # ----------------------------------------------------------------
    off_single_press:
      name: 🔴 Bottom Button - Single Click
      description: 'Symbol: "O" or "Hue" Logo'
      default: []
      selector: { action: {} }
    off_double_press:
      name: 🔴 Bottom Button - Double Click
      description: 'Symbol: "O" or "Hue" Logo'
      default: []
      selector: { action: {} }
    off_hold:
      name: 🔴 Bottom Button - Hold
      description: 'Symbol: "O" or "Hue" Logo'
      default: []
      selector: { action: {} }

# Mode Single is required to prevent "Ghost Clicks" during double click detection
mode: single
max_exceeded: silent

trigger:
  # Triggers for Press (Release) and Hold
  - platform: device
    domain: mqtt
    device_id: !input remote
    type: action
    subtype: on_press_release
    id: on_press
  - platform: device
    domain: mqtt
    device_id: !input remote
    type: action
    subtype: on_hold
    id: on_hold

  - platform: device
    domain: mqtt
    device_id: !input remote
    type: action
    subtype: up_press_release
    id: up_press
  - platform: device
    domain: mqtt
    device_id: !input remote
    type: action
    subtype: up_hold
    id: up_hold

  - platform: device
    domain: mqtt
    device_id: !input remote
    type: action
    subtype: down_press_release
    id: down_press
  - platform: device
    domain: mqtt
    device_id: !input remote
    type: action
    subtype: down_hold
    id: down_hold

  - platform: device
    domain: mqtt
    device_id: !input remote
    type: action
    subtype: off_press_release
    id: off_press
  - platform: device
    domain: mqtt
    device_id: !input remote
    type: action
    subtype: off_hold
    id: off_hold

action:
  - choose:
      # --- TOP BUTTON LOGIC ---
      - conditions: "{{ trigger.id == 'on_press' }}"
        sequence:
          - wait_for_trigger:
              - platform: device
                domain: mqtt
                device_id: !input remote
                type: action
                subtype: on_press_release
            timeout: 
              milliseconds: !input double_click_delay
            continue_on_timeout: true
          - choose:
              - conditions: "{{ wait.trigger != none }}"
                sequence: !input on_double_press
              - conditions: "{{ wait.trigger == none }}"
                sequence: !input on_single_press
      - conditions: "{{ trigger.id == 'on_hold' }}"
        sequence: !input on_hold

      # --- UP BUTTON LOGIC ---
      - conditions: "{{ trigger.id == 'up_press' }}"
        sequence:
          - wait_for_trigger:
              - platform: device
                domain: mqtt
                device_id: !input remote
                type: action
                subtype: up_press_release
            timeout: 
              milliseconds: !input double_click_delay
            continue_on_timeout: true
          - choose:
              - conditions: "{{ wait.trigger != none }}"
                sequence: !input up_double_press
              - conditions: "{{ wait.trigger == none }}"
                sequence: !input up_single_press
      - conditions: "{{ trigger.id == 'up_hold' }}"
        sequence: !input up_hold

      # --- DOWN BUTTON LOGIC ---
      - conditions: "{{ trigger.id == 'down_press' }}"
        sequence:
          - wait_for_trigger:
              - platform: device
                domain: mqtt
                device_id: !input remote
                type: action
                subtype: down_press_release
            timeout: 
              milliseconds: !input double_click_delay
            continue_on_timeout: true
          - choose:
              - conditions: "{{ wait.trigger != none }}"
                sequence: !input down_double_press
              - conditions: "{{ wait.trigger == none }}"
                sequence: !input down_single_press
      - conditions: "{{ trigger.id == 'down_hold' }}"
        sequence: !input down_hold

      # --- BOTTOM BUTTON LOGIC ---
      - conditions: "{{ trigger.id == 'off_press' }}"
        sequence:
          - wait_for_trigger:
              - platform: device
                domain: mqtt
                device_id: !input remote
                type: action
                subtype: off_press_release
            timeout: 
              milliseconds: !input double_click_delay
            continue_on_timeout: true
          - choose:
              - conditions: "{{ wait.trigger != none }}"
                sequence: !input off_double_press
              - conditions: "{{ wait.trigger == none }}"
                sequence: !input off_single_press
      - conditions: "{{ trigger.id == 'off_hold' }}"
        sequence: !input off_hold

Funzionalità Avanzate: Double Click e Gestione Hold

Una delle caratteristiche più apprezzate di questa blueprint è la capacità di implementare il doppio click per tutti e quattro i pulsanti, una funzionalità che il telecomando di per sé non offre. Questo viene realizzato attraverso un meccanismo di attesa (wait_for_trigger) con un timeout configurabile. Se un secondo click viene rilevato entro questo intervallo di tempo, viene attivata l'azione di doppio click; altrimenti, viene eseguita l'azione di singolo click. Inoltre, la blueprint gestisce in modo intelligente il conflitto tra "pressione" (press) e "pressione prolungata" (hold), assicurando che i singoli click vengano attivati solo al rilascio del pulsante, evitando così attivazioni accidentali durante un'intenzione di hold. La modalità "single" è utilizzata per prevenire "ghost clicks" durante il rilevamento del doppio click.

blueprint:
  name: Ultimate Hue Remote Controller via Z2M
  description: >
    Configure Hue Remote buttons via Zigbee2MQTT with Device Triggers.
    
    **Features:**
    - Synthetic Double Click
    - Organized settings by button
    - Visual Section Headers
    
    **Compatible with:**
    - Gen 1 (Labels: "I", "O")
    - Gen 2 (Labels: "Power", "Hue")
  domain: automation

  input:
    remote:
      name: Philips Hue Remote
      description: Select your remote device.
      selector:
        device:
          manufacturer: Philips
    
    double_click_delay:
      name: Double Click Delay (ms)
      description: >
        Time to wait for a second click. 
        Lower = Lights turn on faster (less lag).
        Higher = Easier to perform a double click.
        Recommended: 400ms - 600ms.
      default: 500
      selector:
        number:
          min: 100
          max: 2000
          unit_of_measurement: ms
          mode: box

    # ----------------------------------------------------------------
    # TOP BUTTON
    # ----------------------------------------------------------------
    on_single_press:
      name: 🟢 Top Button - Single Click
      description: 'Symbol: "I" or "Power"'
      default: []
      selector: { action: {} }
    on_double_press:
      name: 🟢 Top Button - Double Click
      description: 'Symbol: "I" or "Power"'
      default: []
      selector: { action: {} }
    on_hold:
      name: 🟢 Top Button - Hold
      description: 'Symbol: "I" or "Power"'
      default: []
      selector: { action: {} }

    # ----------------------------------------------------------------
    # UP BUTTON
    # ----------------------------------------------------------------
    up_single_press:
      name: 🔆 Up Button - Single Click
      description: 'Symbol: Large Sun (Brighten)'
      default: []
      selector: { action: {} }
    up_double_press:
      name: 🔆 Up Button - Double Click
      description: 'Symbol: Large Sun (Brighten)'
      default: []
      selector: { action: {} }
    up_hold:
      name: 🔆 Up Button - Hold
      description: 'Symbol: Large Sun (Brighten)'
      default: []
      selector: { action: {} }

    # ----------------------------------------------------------------
    # DOWN BUTTON
    # ----------------------------------------------------------------
    down_single_press:
      name: 🔅 Down Button - Single Click
      description: 'Symbol: Small Sun (Dim)'
      default: []
      selector: { action: {} }
    down_double_press:
      name: 🔅 Down Button - Double Click
      description: 'Symbol: Small Sun (Dim)'
      default: []
      selector: { action: {} }
    down_hold:
      name: 🔅 Down Button - Hold
      description: 'Symbol: Small Sun (Dim)'
      default: []
      selector: { action: {} }

    # ----------------------------------------------------------------
    # BOTTOM BUTTON
    # ----------------------------------------------------------------
    off_single_press:
      name: 🔴 Bottom Button - Single Click
      description: 'Symbol: "O" or "Hue" Logo'
      default: []
      selector: { action: {} }
    off_double_press:
      name: 🔴 Bottom Button - Double Click
      description: 'Symbol: "O" or "Hue" Logo'
      default: []
      selector: { action: {} }
    off_hold:
      name: 🔴 Bottom Button - Hold
      description: 'Symbol: "O" or "Hue" Logo'
      default: []
      selector: { action: {} }

# Mode Single is required to prevent "Ghost Clicks" during double click detection
mode: single
max_exceeded: silent

trigger:
  # Triggers for Press (Release) and Hold
  - platform: device
    domain: mqtt
    device_id: !input remote
    type: action
    subtype: on_press_release
    id: on_press
  - platform: device
    domain: mqtt
    device_id: !input remote
    type: action
    subtype: on_hold
    id: on_hold

  - platform: device
    domain: mqtt
    device_id: !input remote
    type: action
    subtype: up_press_release
    id: up_press
  - platform: device
    domain: mqtt
    device_id: !input remote
    type: action
    subtype: up_hold
    id: up_hold

  - platform: device
    domain: mqtt
    device_id: !input remote
    type: action
    subtype: down_press_release
    id: down_press
  - platform: device
    domain: mqtt
    device_id: !input remote
    type: action
    subtype: down_hold
    id: down_hold

  - platform: device
    domain: mqtt
    device_id: !input remote
    type: action
    subtype: off_press_release
    id: off_press
  - platform: device
    domain: mqtt
    device_id: !input remote
    type: action
    subtype: off_hold
    id: off_hold

action:
  - choose:
      # --- TOP BUTTON LOGIC ---
      - conditions: "{{ trigger.id == 'on_press' }}"
        sequence:
          - wait_for_trigger:
              - platform: device
                domain: mqtt
                device_id: !input remote
                type: action
                subtype: on_press_release
            timeout: 
              milliseconds: !input double_click_delay
            continue_on_timeout: true
          - choose:
              - conditions: "{{ wait.trigger != none }}"
                sequence: !input on_double_press
              - conditions: "{{ wait.trigger == none }}"
                sequence: !input on_single_press
      - conditions: "{{ trigger.id == 'on_hold' }}"
        sequence: !input on_hold

      # --- UP BUTTON LOGIC ---
      - conditions: "{{ trigger.id == 'up_press' }}"
        sequence:
          - wait_for_trigger:
              - platform: device
                domain: mqtt
                device_id: !input remote
                type: action
                subtype: up_press_release
            timeout: 
              milliseconds: !input double_click_delay
            continue_on_timeout: true
          - choose:
              - conditions: "{{ wait.trigger != none }}"
                sequence: !input up_double_press
              - conditions: "{{ wait.trigger == none }}"
                sequence: !input up_single_press
      - conditions: "{{ trigger.id == 'up_hold' }}"
        sequence: !input up_hold

      # --- DOWN BUTTON LOGIC ---
      - conditions: "{{ trigger.id == 'down_press' }}"
        sequence:
          - wait_for_trigger:
              - platform: device
                domain: mqtt
                device_id: !input remote
                type: action
                subtype: down_press_release
            timeout: 
              milliseconds: !input dou

Integrazione con Home Assistant

L'integrazione della blueprint in Home Assistant è diretta. Dopo averla importata, si procede alla configurazione selezionando il proprio Philips Hue Dimmer Switch accoppiato tramite MQTT. La blueprint utilizza i Device Triggers specifici per il dominio MQTT, associando le azioni come `on_press_release`, `on_hold`, `up_press_release`, ecc., ai rispettivi input configurabili. Questo approccio basato sui Device Triggers rende la configurazione più robusta e meno soggetta a errori rispetto alla gestione diretta degli argomenti MQTT, garantendo un'esperienza utente fluida e personalizzabile per il controllo della domotica.

Aggiornamento e Personalizzazione

La blueprint "Ultimate Hue Remote Controller" offre un elevato grado di personalizzazione. Gli utenti possono definire liberamente le azioni per ogni tipo di pressione (singolo, doppio, hold) per ciascun pulsante, collegandole a scenari domotici complessi, all'attivazione di luci, alla regolazione della luminosità o a qualsiasi altra automazione disponibile in Home Assistant. La possibilità di regolare il ritardo del doppio click permette di adattare il comportamento del telecomando alle preferenze individuali.

Approfondisci

 

DS

Dario Scarfina

Fondatore e autore di TecnologiaDigitale.net

Fondatore di TecnologiaDigitale.net. Appassionato di tecnologia, cybersecurity, intelligenza artificiale, domotica e innovazione digitale.

Visualizza profilo autore

Commenti

Ancora nessun commento. Sii il primo a partecipare.

L'email non verrà pubblicata. Il commento sarà visibile solo dopo approvazione.