Remotec ZRC-90 Scene Master 8 button remote (zwave-js)

This is a blueprint for the Remotec ZRC-90. It’s rebuild for ZWAVE-JS based on a combination of the OZW integration from @simulot and zwave js addition from @bachya as a response to @troy OZW Aeotec ZWA003 NanoMote Quad.

EDIT April 10th thanks to @Johannes_Aloijsius feedback below to work after upgrade to HA 2021.4. More info see breaking changes (Z-Wave JS) here

Get started

Click the badge to import this Blueprint: (needs Home Assistant Core 2021.3 or higher)

Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint pre-filled.

Or import this Blueprint by using the forum topic URL:

blueprint:
  name: Remotec ZRC-90 Scene Master
  description: Create an automation for the Remotec ZRC-90 8 button remote using ZWAVE-JS integration
  domain: automation
  input:
    remotec_zrc90:
      name: Remotec ZRC-90
      description: The Remotec ZRC-90 to interact with.
      selector:
        device:
          integration: zwave_js
          manufacturer: Remotec
          model: BW8510
    button_1_1:
      name: Press Button One 1x
      description: Action to run on button press once.
      default: []
      selector:
        action: {}
    button_1_2:
      name: Press Button One 2x
      description: Action to run on button press twice.
      default: []
      selector:
        action: {}
    button_1_held:
      name: Hold Button One
      description: Action to run on button hold.
      default: []
      selector:
        action: {}
    button_2_1:
      name: Press Button Two 1x
      description: Action to run on button press once.
      default: []
      selector:
        action: {}
    button_2_2:
      name: Press Button Two 2x
      description: Action to run on button press twice.
      default: []
      selector:
        action: {}
    button_2_held:
      name: Hold Button Two
      description: Action to run on button hold.
      default: []
      selector:
        action: {}
    button_3_1:
      name: Press Button Three 1x
      description: Action to run on button press once.
      default: []
      selector:
        action: {}
    button_3_2:
      name: Press Button Three 2x
      description: Action to run on button press twice.
      default: []
      selector:
        action: {}
    button_3_held:
      name: Hold Button Three
      description: Action to run on button hold.
      default: []
      selector:
        action: {}
    button_4_1:
      name: Press Button Four 1x
      description: Action to run on button press once.
      default: []
      selector:
        action: {}
    button_4_2:
      name: Press Button Four 2x
      description: Action to run on button press twice.
      default: []
      selector:
        action: {}
    button_4_held:
      name: Hold Button Four
      description: Action to run on button hold.
      default: []
      selector:
        action: {}
    button_5_1:
      name: Press Button Five 1x
      description: Action to run on button press once.
      default: []
      selector:
        action: {}
    button_5_2:
      name: Press Button Five 2x
      description: Action to run on button press twice.
      default: []
      selector:
        action: {}
    button_5_held:
      name: Hold Button Five
      description: Action to run on button hold.
      default: []
      selector:
        action: {}
    button_6_1:
      name: Press Button Six 1x
      description: Action to run on button press once.
      default: []
      selector:
        action: {}
    button_6_2:
      name: Press Button Six 2x
      description: Action to run on button press twice.
      default: []
      selector:
        action: {}
    button_6_held:
      name: Hold Button Six
      description: Action to run on button hold.
      default: []
      selector:
        action: {}
    button_7_1:
      name: Press Button Seven 1x
      description: Action to run on button press once.
      default: []
      selector:
        action: {}
    button_7_2:
      name: Press Button Seven 2x
      description: Action to run on button press twice.
      default: []
      selector:
        action: {}
    button_7_held:
      name: Hold Button Seven
      description: Action to run on button hold.
      default: []
      selector:
        action: {}
    button_8_1:
      name: Press Button Eight 1x
      description: Action to run on button press once.
      default: []
      selector:
        action: {}
    button_8_2:
      name: Press Button Eight 2x
      description: Action to run on button press twice.
      default: []
      selector:
        action: {}
    button_8_held:
      name: Hold Button Eight
      description: Action to run on button hold.
      default: []
      selector:
        action: {}

mode: single

max_exceeded: silent

trigger:
  platform: event
  event_type: zwave_js_value_notification
  event_data:
    command_class_name: Central Scene
    device_id: !input remotec_zrc90
action:
  - variables:
      scene_id: "{{ trigger.event.data.property_key_name }}"
      scene_value_id: "{{ trigger.event.data.value }}"

  - choose:
      - conditions: "{{ scene_id == '001' and scene_value_id == 'KeyPressed' }}"
        sequence: !input button_1_1
      - conditions: "{{ scene_id == '001' and scene_value_id == 'KeyPressed2x' }}"
        sequence: !input button_1_2     
      - conditions: "{{ scene_id == '001' and scene_value_id == 'KeyHeldDown' }}"
        sequence: !input button_1_held
      - conditions: "{{ scene_id == '002' and scene_value_id == 'KeyPressed' }}"
        sequence: !input button_2_1
      - conditions: "{{ scene_id == '002' and scene_value_id == 'KeyPressed2x' }}"
        sequence: !input button_2_2     
      - conditions: "{{ scene_id == '002' and scene_value_id == 'KeyHeldDown' }}"
        sequence: !input button_2_held
      - conditions: "{{ scene_id == '003' and scene_value_id == 'KeyPressed' }}"
        sequence: !input button_3_1
      - conditions: "{{ scene_id == '003' and scene_value_id == 'KeyPressed2x' }}"
        sequence: !input button_3_2     
      - conditions: "{{ scene_id == '003' and scene_value_id == 'KeyHeldDown' }}"
        sequence: !input button_3_held
      - conditions: "{{ scene_id == '004' and scene_value_id == 'KeyPressed' }}"
        sequence: !input button_4_1
      - conditions: "{{ scene_id == '004' and scene_value_id == 'KeyPressed2x' }}"
        sequence: !input button_4_2     
      - conditions: "{{ scene_id == '004' and scene_value_id == 'KeyHeldDown' }}"
        sequence: !input button_4_held
      - conditions: "{{ scene_id == '005' and scene_value_id == 'KeyPressed' }}"
        sequence: !input button_5_1
      - conditions: "{{ scene_id == '005' and scene_value_id == 'KeyPressed2x' }}"
        sequence: !input button_5_2     
      - conditions: "{{ scene_id == '005' and scene_value_id == 'KeyHeldDown' }}"
        sequence: !input button_5_held
      - conditions: "{{ scene_id == '006' and scene_value_id == 'KeyPressed' }}"
        sequence: !input button_6_1
      - conditions: "{{ scene_id == '006' and scene_value_id == 'KeyPressed2x' }}"
        sequence: !input button_6_2     
      - conditions: "{{ scene_id == '006' and scene_value_id == 'KeyHeldDown' }}"
        sequence: !input button_6_held
      - conditions: "{{ scene_id == '007' and scene_value_id == 'KeyPressed' }}"
        sequence: !input button_7_1
      - conditions: "{{ scene_id == '007' and scene_value_id == 'KeyPressed2x' }}"
        sequence: !input button_7_2     
      - conditions: "{{ scene_id == '007' and scene_value_id == 'KeyHeldDown' }}"
        sequence: !input button_7_held
      - conditions: "{{ scene_id == '008' and scene_value_id == 'KeyPressed' }}"
        sequence: !input button_8_1
      - conditions: "{{ scene_id == '008' and scene_value_id == 'KeyPressed2x' }}"
        sequence: !input button_8_2     
      - conditions: "{{ scene_id == '008' and scene_value_id == 'KeyHeldDown' }}"
        sequence: !input button_8_held

Schermafbeelding 2021-02-08 om 21.15.43

In the new zwave-js integration my ZRC-90 got recognised as a BW8510 while in the zwave (deprecated) version it was recognised as ZRC-90. After adding the scene master simply select the button option and action.

5 Likes

Thanks! This is the remaining blueprint I was missing

Now all the scene enabled z-wave devices I own have working Z-Wave JS blueprints :smile:

1 Like

Thanks for that. I’m not ready to switch over zwave-js yet.

I keep getting fatal errors, using this blue print…

Logger: homeassistant.components.automation
Source: components/automation/init.py:523
Integration: Automatisering (documentation, issues)
First occurred: 17:06:45 (3 occurrences)
Last logged: 17:24:04

Blueprint Remotec ZRC-90 Scene Master generated invalid automation with inputs OrderedDict([(‘remotec_zrc90’, ‘e472b757c813b9d5984be8eeef9ea588’), (‘button_1_1’, [OrderedDict([(‘scene’, ‘scene.woonkamer_lampen_aan’)])]), (‘button_1_2’, [OrderedDict([(‘scene’, ‘scene.woonkamer_lampen_uit’)])]), (‘button_2_1’, [OrderedDict([(‘type’, ‘turn_on’), (‘device_id’, ‘761c9590f655b66f526db76b92d0b08c’), (‘entity_id’, ‘light.lamp_serre_level_light_color_on_off’), (‘domain’, ‘light’)])]), (‘button_2_2’, [OrderedDict([(‘type’, ‘turn_off’), (‘device_id’, ‘761c9590f655b66f526db76b92d0b08c’), (‘entity_id’, ‘light.lamp_serre_level_light_color_on_off’), (‘domain’, ‘light’)])]), (‘button_3_1’, [OrderedDict([(‘scene’, ‘scene.lampen_stakamer_aan’)])]), (‘button_3_2’, [OrderedDict([(‘scene’, ‘scene.lampen_stakamer_uit’)])]), (‘button_4_1’, [OrderedDict([(‘scene’, ‘scene.woonkamer_lampen_aan’)]), OrderedDict([(‘delay’, OrderedDict([(‘hours’, 0), (‘minutes’, 0), (‘seconds’, 1), (‘milliseconds’, 0)]))]), OrderedDict([(‘scene’, ‘scene.lampen_stakamer_aan’)]), OrderedDict([(‘scene’, ‘scene.lampen_keuken_aan’)]), OrderedDict([(‘delay’, OrderedDict([(‘hours’, 0), (‘minutes’, 0), (‘seconds’, 1), (‘milliseconds’, 0)]))]), OrderedDict([(‘type’, ‘turn_on’), (‘device_id’, ‘761c9590f655b66f526db76b92d0b08c’), (‘entity_id’, ‘light.lamp_serre_level_light_color_on_off’), (‘domain’, ‘light’)])]), (‘button_4_2’, [OrderedDict([(‘scene’, ‘scene.woonkamer_lampen_uit’)]), OrderedDict([(‘delay’, OrderedDict([(‘hours’, 0), (‘minutes’, 0), (‘seconds’, 1), (‘milliseconds’, 0)]))]), OrderedDict([(‘scene’, ‘scene.lampen_keuken_uit’)]), OrderedDict([(‘scene’, ‘scene.lampen_stakamer_uit’)]), OrderedDict([(‘delay’, OrderedDict([(‘hours’, 0), (‘minutes’, 0), (‘seconds’, 0), (‘milliseconds’, 0)]))]), OrderedDict([(‘type’, ‘turn_off’), (‘device_id’, ‘761c9590f655b66f526db76b92d0b08c’), (‘entity_id’, ‘light.lamp_serre_level_light_color_on_off’), (‘domain’, ‘light’)])]), (‘button_5_1’, [OrderedDict([(‘scene’, ‘scene.alle_lampen_helder’)])]), (‘button_5_2’, [OrderedDict([(‘scene’, ‘scene.alle_lampen_oranje’)])]), (‘button_8_1’, [OrderedDict([(‘scene’, ‘scene.woonkamer_lampen_aan’)]), OrderedDict([(‘delay’, OrderedDict([(‘hours’, 0), (‘minutes’, 0), (‘seconds’, 1), (‘milliseconds’, 0)]))]), OrderedDict([(‘scene’, ‘scene.lampen_stakamer_aan’)]), OrderedDict([(‘scene’, ‘scene.lampen_keuken_aan’)]), OrderedDict([(‘delay’, OrderedDict([(‘hours’, 0), (‘minutes’, 0), (‘seconds’, 1), (‘milliseconds’, 0)]))]), OrderedDict([(‘type’, ‘turn_on’), (‘device_id’, ‘761c9590f655b66f526db76b92d0b08c’), (‘entity_id’, ‘light.lamp_serre_level_light_color_on_off’), (‘domain’, ‘light’)]), OrderedDict([(‘service’, ‘sonos.play_queue’), (‘data’, OrderedDict())]), OrderedDict([(‘service’, ‘tts.google_translate_say’), (‘data’, ‘Good morning me lovelies’)])])]): expected dict for dictionary value @ data[‘action’][1][‘choose’][21][‘sequence’][7][‘data’]. Got None

mmm I think it was my own fault , by adding arg not recognized by HA…

1 Like

cheers for that ,1st automation ,1st blueprint imported and it onlys works :smiley:
do you think i could adapt to a “nod on” 4 button soft remote ?

Yes this is pretty doable, but also depending on your yaml knowledge of course. If your nod on remote is added to your zwave JS network go to developer tools, events and listen to wave_js_event. In the example below I started listening and pressed button 1 on the ZRC-Remote. The next image shows how this integrates in the blueprint. I hope this makes sense.

2

cheers fella unfortunately i’m way off that level atm but i can understand just a few lessons off implementing :+1:

Thank you so much. Works perfectly! :slight_smile:

1 Like

is it possible with last update (wave-js) this stopped working??

I’m sorry @Johannes_Aloijsius I don’t own a zrc-90 anymore so I’m not able to check

Maybe you celp me figure it out. The device seems to be registering the key pushes :frowning:

2021-04-09T12:18:00.626Z CNTRLR « [Node 022] received CentralScene notification {
                                      "nodeId": 22,
                                      "ccId": "Central Scene",
                                      "ccCommand": "0x03",
                                      "payload": "0x990001"
                                  }

did something change ??

Solved it :slight_smile:

in the Blueprint :

event_type: zwave_js_event is replaced by event_type: zwave_js_value_notification

Cool, I’ll change that in the blueprint. It’s just that 1 line you changed? Or also the event_data?

Yust that one thing. And it works again

1 Like

Thanks for this, it worked perfectly. Made the process much simpler :slight_smile:

1 Like

This works great and is making things much easier. Thank you :+1:

1 Like

Thank you so much. This is so useful! :smile:

1 Like

Thank you rule, this works perfect :grinning:

1 Like

The Remotec remote also supports the “KeyReleased” event, if you want to trigger something if the held keys are released. Maybe OP could also add that as well:

Example for key one within the "input part

button_1_released:
      name: Release Button One after hold
      description: Action to run on button release after hold.
      default: []
      selector:
        action: {}

- conditions: "{{ scene_id == '001' and scene_value_id == 'KeyReleased' }}"
        sequence: !input button_1_released
1 Like