ZHA - icasa Pulse S8 Keypad remote

This is a blueprint for the icasa Pulse S8 Keypad remote, specifically for use with ZHA.

Available Actions (10 Actions):

  • Short press On-Button
  • Long press On-Button
  • Short press Off-Button
  • Long press Off-Button
  • Short Press on Button S1
  • Long Press on Button S1
  • Short Press on Button S2
  • Long Press on Button S2
  • Short Press on Button S3
  • Long Press on Button S3
  • Short Press on Button S4
  • Long Press on Button S4
  • Short Press on Button S5
  • Long Press on Button S5
  • Short Press on Button S6
  • Long Press on Button S6

Blueprint

blueprint:
  name: icasa PULSE 8S keypad (ZHA)
  description: 'Control anything using icasa Pulse 8S keypad'
  domain: automation

  input:
    icasa_remote:
      name: Keypad
      description: Keypad to use
      selector:
        device:
          integration: zha
          manufacturer: icasa
          model: ICZB-KPD18S
    button_on:
      name: On Button (short pressed)
      description: Action to run on short press on On button
      default: []
      selector:
        action: {}
    button_on_long:
      name: On Button (long pressed)
      description: Action to run on press on On button
      default: []
      selector:
        action: {}
    button_off:
      name: Off Button (short pressed)
      description: Action to run on short press on Off button
      default: []
      selector:
        action: {}
    button_off_long:
      name: Off Button (long pressed)
      description: Action to run on press on Off button
      default: []
      selector:
        action: {}
    button_1:
      name: Button S1 (short pressed)
      description: Action to run on short press on Button S1
      default: []
      selector:
        action: {}
    button_1_long:
      name: Button S1 (long pressed)
      description: Action to run on long press on Button S1
      default: []
      selector:
        action: {}
    button_2:
      name: Button S2 (short pressed)
      description: Action to run on short press on Button S2
      default: []
      selector:
        action: {}
    button_2_long:
      name: Button S2 (long pressed)
      description: Action to run on long press on Button S2
      default: []
      selector:
        action: {}
    button_3:
      name: Button S3 (short pressed)
      description: Action to run on short press on Button S3
      default: []
      selector:
        action: {}
    button_3_long:
      name: Button S3 (long pressed)
      description: Action to run on long press on Button S3
      default: []
      selector:
        action: {}
    button_4:
      name: Button S4 (short pressed)
      description: Action to run on short press on Button S4
      default: []
      selector:
        action: {}
    button_4_long:
      name: Button S4 (long pressed)
      description: Action to run on long press on Button S4
      default: []
      selector:
        action: {}
    button_5:
      name: Button S5 (short pressed)
      description: Action to run on short press on Button S5
      default: []
      selector:
        action: {}
    button_5_long:
      name: Button S5 (long pressed)
      description: Action to run on long press on Button S5
      default: []
      selector:
        action: {}
    button_6:
      name: Button S6 (short pressed)
      description: Action to run on short press on Button S6
      default: []
      selector:
        action: {}
    button_6_long:
      name: Button S6 (long pressed)
      description: Action to run on long press on Button S6
      default: []
      selector:
        action: {}


mode: restart
max_exceeded: silent

trigger:
- platform: event
  event_type: zha_event
  event_data:
    device_id: !input icasa_remote
    
action:
- choose:
  - conditions:
    - condition: template
      value_template: '{%if trigger.event.data.command == "off"%}true{%else%}false{%endif%}'
    sequence: !input 'button_off'
  - conditions:
    - condition: template
      value_template: '{%if trigger.event.data.command == "move_with_on_off" and trigger.event.data.args == [1,50]%}true{%else%}false{%endif%}'
    sequence: !input 'button_off_long'
  - conditions:
    - condition: template
      value_template: '{%if trigger.event.data.command == "on"%}true{%else%}false{%endif%}'
    sequence: !input 'button_on'
  - conditions:
    - condition: template
      value_template: '{%if trigger.event.data.command == "move_with_on_off" and trigger.event.data.args == [0,50]%}true{%else%}false{%endif%}'
    sequence: !input 'button_on_long'
  - conditions:
    - condition: template
      value_template: '{%if trigger.event.data.command == "recall" and trigger.event.data.args == [0,1]%}true{%else%}false{%endif%}'
    sequence: !input 'button_1'
  - conditions:
    - condition: template
      value_template: '{%if trigger.event.data.command == "store" and trigger.event.data.args == [0,1]%}true{%else%}false{%endif%}'
    sequence: !input 'button_1_long'
  - conditions:
    - condition: template
      value_template: '{%if trigger.event.data.command == "recall" and trigger.event.data.args == [0,2]%}true{%else%}false{%endif%}'
    sequence: !input 'button_2'
  - conditions:
    - condition: template
      value_template: '{%if trigger.event.data.command == "store" and trigger.event.data.args == [0,2]%}true{%else%}false{%endif%}'
    sequence: !input 'button_2_long'
  - conditions:
    - condition: template
      value_template: '{%if trigger.event.data.command == "recall" and trigger.event.data.args == [0,3]%}true{%else%}false{%endif%}'
    sequence: !input 'button_3'
  - conditions:
    - condition: template
      value_template: '{%if trigger.event.data.command == "store" and trigger.event.data.args == [0,3]%}true{%else%}false{%endif%}'
    sequence: !input 'button_3_long'
  - conditions:
    - condition: template
      value_template: '{%if trigger.event.data.command == "recall" and trigger.event.data.args == [0,4]%}true{%else%}false{%endif%}'
    sequence: !input 'button_4'
  - conditions:
    - condition: template
      value_template: '{%if trigger.event.data.command == "store" and trigger.event.data.args == [0,4]%}true{%else%}false{%endif%}'
    sequence: !input 'button_4_long'
  - conditions:
    - condition: template
      value_template: '{%if trigger.event.data.command == "recall" and trigger.event.data.args == [0,5]%}true{%else%}false{%endif%}'
    sequence: !input 'button_5'
  - conditions:
    - condition: template
      value_template: '{%if trigger.event.data.command == "store" and trigger.event.data.args == [0,5]%}true{%else%}false{%endif%}'
    sequence: !input 'button_5_long'
  - conditions:
    - condition: template
      value_template: '{%if trigger.event.data.command == "recall" and trigger.event.data.args == [0,6]%}true{%else%}false{%endif%}'
    sequence: !input 'button_6'
  - conditions:
    - condition: template
      value_template: '{%if trigger.event.data.command == "store" and trigger.event.data.args == [0,6]%}true{%else%}false{%endif%}'
    sequence: !input 'button_6_long'
3 Likes

Thanks - Seems to work fine!

Thanks for this blueprint, it works with my Conbee2 stick and ZHA.

The only issue I am facing is a delay/lag of approx 1-2 seconds.
Am I the only one, or is it just me?

I used this blueprint and it worked like a charm. The last update (2022.4) ruined it however.

With the latest update installed I can only use the ON and OFF button, but S1 trough S6 lost their functions. Does anyone, by any chance, know how to fix this? I’m far from a programmer, so an update would be much appreciated!

Same here, I was able to fix it with the following modification (but it broke again with 2022.4.1 :frowning: ).

I just had another look at it seems for the short push (recall), it is sending another param now (transition_time), so I changed the above blueprint a little bit to work around it, by changing the “store” value templates.

I.e.

value_template: '{%if trigger.event.data.command == "recall" and trigger.event.data.args == [0,6]%}true{%else%}false{%endif%}'

To:

value_template: '{%if trigger.event.data.command == "recall" and trigger.event.data.args == [0,6,0]%}true{%else%}false{%endif%}'

Hope it helps you too.

I think we eventually need to have a dedicated zhaquirk for this device, but have not yet firgured out how to actually do it.

1 Like

Thanks for your quick answer. At this moment I’ve downgraded to the last working version.

Do I understand correctly that the quick fix you provided only works on 2022.4, but won’t work anymore if I install 2022.4.1 (or later)? Or am I save to update my HA and implement your fix, even after installing 2022.4.1? Sorry for not understanding completely.

This blueprint works realy wel, but is there a way to convert the “scene” buttons like S1, S2 to “on/off” buttons.

The Icasa Pulse S8 comes in different configurations. Example 4way zigbee switch

All of my “on” buttons respond to the same action under the “on” setting from the blueprint. I have no idea how i can convert for example the S1 to a different “on” than the standart “on” function.

Hope my question is clear

Hi I have a question;

I have 3 of these buttons but i face a problem with 2 of them;

I have connected the buttons with the zigbee connector from llama. But the first connector i CAN switch lamps on but the other 2 it cannot turn lamps on. It does work with turning lamps off.

I have made a scene for every room. on is short press and off is long press. But it seems impossible to turn lamps on. Anybody else faces this problem?

I just updated to the newest Home Assistant software

Hi,
This great blueprint(thnx) always worked fine, but since i migrated my conbee 2 to the home assistant yellow radio the long press is not working anymore.
Could this be related to the blueprint itself or should i look elsewhere for a solution?

Please check the trace of the automatisation. There you can see what is sent and what conditions are expected.
I switched to Z2M so I cannot help anymore…

@sebastian.n.lotz, @Sebastian_Lotz I also switched to Z2M and of course this blueprint is not working anymore. Did you create a new blueprint for Z2M? Or is there a way to migrate the ZHA to a Z2M blueprint?

This device works natively with Z2M for me:
Screenshot_2023-07-22-20-22-54-96_c3a231c25ed346e59462e84656a70e50|225x500