OZW - Heatit ZDim scene controller (knob multi-click)

Supports multi-click behavior on the Heatit/Thermofloor ZDim rotary dimmer.

When the dimmer knob is clicked from 2-5 times rapidly, different scenes are triggered. This blueprint makes it easy to perform actions on those events.

Just select the light entity associated with the device, and the node_id is automatically handled.

Unmaintained: I’ve switched to ZWaveJS, so this is no longer updated. See my new blueprint here: ZWaveJS - Heatit ZDim scene controller (knob multi-click)

blueprint:
  name: OZW - Heatit ZDim scene controller
  description: |
    Perform actions when ZDim knob is multi-clicked.
    
    The release actions you probably do not want to define, as it is
    triggered after every multiple-click scene activation.

    Remember that 6 clicks in rapid succession puts the device into Z-Wave
    inclusion/exclusion mode, so quintuple clicks should probably be
    avoided.
        
  domain: automation
  input:
    ozw_entity:
      name: OZW Entity
      description: The Heatit ZDim light to listen for events on.
      selector:
        entity:
          domain: light
          integration: ozw
    click2_actions:
      name: Double Click Actions
      description: The actions to perform when the scene is activated.
      selector:
        action:
      default: []
    click3_actions:
      name: Triple Click Actions
      description: The actions to perform when the scene is activated.
      selector:
        action:
      default: []
    click4_actions:
      name: Quadruple Click Actions
      description: The actions to perform when the scene is activated.
      selector:
        action:
      default: []
    click5_actions:
      name: Quintuple Click Actions
      description: The actions to perform when the scene is activated.
      selector:
        action:
      default: []
    release_actions:
      name: Release Actions
      description: The actions to perform when the scene is activated.
      selector:
        action:
      default: []

mode: single

trigger:
  - platform: event
    event_type: ozw.scene_activated

variables:
  logger: blueprint.ozw_scene_activation
  ozw_entity: !input ozw_entity

action:
  - choose:
    # IF triggered node_id is ozw_entity node_id
      - conditions:
          - condition: template
            value_template: "{{ trigger.event.data.node_id == state_attr(ozw_entity, 'node_id') }}"
        sequence:
          - choose:
            # IF released after clicked
              - conditions:
                  - condition: template
                    value_template: "{{ trigger.event.data.scene_id == 1 and trigger.event.data.scene_value_id == 0 }}"
                sequence: !input release_actions
            # IF double clicked
              - conditions:
                  - condition: template
                    value_template: "{{ trigger.event.data.scene_id == 1 and trigger.event.data.scene_value_id == 4 }}"
                sequence: !input click2_actions
            # IF triple clicked
              - conditions:
                  - condition: template
                    value_template: "{{ trigger.event.data.scene_id == 1 and trigger.event.data.scene_value_id == 5 }}"
                sequence: !input click3_actions
            # IF quadruple clicked
              - conditions:
                  - condition: template
                    value_template: "{{ trigger.event.data.scene_id == 1 and trigger.event.data.scene_value_id == 6 }}"
                sequence: !input click4_actions
            # IF quintuple clicked
              - conditions:
                  - condition: template
                    value_template: "{{ trigger.event.data.scene_id == 1 and trigger.event.data.scene_value_id == 7 }}"
                sequence: !input click5_actions
            # ELSE: unhandled scene_id/scene_value_id
            default:
              - service: system_log.write
                data:
                  level: debug
                  logger: "{{ logger }}"
                  message: "Activated scene '{{ trigger.event.data.scene_label }}' ({{ trigger.event.data.scene_id }}) with value '{{ trigger.event.data.scene_value_label }}' ({{ trigger.event.data.scene_value_id }}) for node '{{ ozw_entity }}' ({{ trigger.event.data.node_id }})"
    # ELSE: unhandled ozw event
    default: []
1 Like