Use Graber z-wave remote (came w/Bali blinds) as 2 button remote?

I recently purchased a couple Bali blinds that came with Graber VCZ-1 z-wave 2 button remotes. They were originally bound to the blinds (to control up/down). I’ve reset them and bound them to my HA controller and I am hoping to use them as 2 button remotes to control other things, but I’m afraid I have no idea how to do that. The only place I find them are in the z-wave section:

node_id: 48
node_name: Graber VCZ1 Virtual Cord Remote Control
manufacturer_name: Graber
product_name: VCZ1 Virtual Cord Remote Control
query_stage: Complete
is_awake: false
is_ready: true
is_failed: false
is_info_received: true
max_baud_rate: 40000
is_zwave_plus: true
capabilities: beaming,zwave_plus
sentCnt: 18
sentFailed: 0
retries: 0
receivedCnt: 14
receivedDups: 0
receivedUnsolicited: 2
sentTS: 2018-12-22 19:43:22:148
receivedTS: 2018-12-22 19:43:22:167
lastRequestRTT: 38
averageRequestRTT: 31
lastResponseRTT: 39
averageResponseRTT: 39
battery_level: 50
friendly_name: Graber VCZ1 Virtual Cord Remote Control

1 Like

I’ve figured out what to do (after reading “Central Scene” Command Class - Fibaro Swipe, HomeSeer WS-100D Switches):

  1. Stop Home Assistant

  2. edit zwcfg_*.xml - find the node that matches the id assigned to the Bali remote and replace the CommandClass id=“91” section with:

<CommandClass id=“91” name=“COMMAND_CLASS_CENTRAL_SCENE” version=“1” request_flags=“1” innif=“true” scenecount=“0”>
  <Instance index=“1” />
  <Value type=“int” genre=“system” instance=“1” index=“0” label=“Scene Count” units=“” read_only=“true” write_only=“false” verify_changes=“false” poll_intensity=“0” min=“-2147483648” max=“2147483647” value=“0” />
  <Value type=“int” genre=“system” instance=“1” index=“1” label=“Button One” units=“” read_only=“true” write_only=“false” verify_changes=“false” poll_intensity=“0” min=“-2147483648” max=“2147483647” value=“0” />
  <Value type=“int” genre=“system” instance=“1” index=“2” label=“Button Two” units=“” read_only=“true” write_only=“false” verify_changes=“false” poll_intensity=“0” min=“-2147483648” max=“2147483647” value=“0” />
</CommandClass>

  1. create an automation based on the button:

    - alias: Test on
      trigger:
        - platform: event
          event_type: zwave.scene_activated
          event_data:
            entity_id: zwave.bali_remote_1
            scene_id: 1
      action:
        service: homeassistant.turn_on
        entity_id: light.master_bedroom

I’ve been unable to get this to work. I got the node added, just like you did, but when I edited my XML and added the same snippet and restarted HA, the remote node would get stuck in “CacheLoad” and I ended up having to reset everything.

Did this ever happen to you? How did you figure out what this XML is anyway? :stuck_out_tongue: For you do you have “entities” associated with the zwave node like you do with your shade (ex: cover.xxx)?

1 Like

Update: It totally works. I had a typo in my automation trigger. To answer some of my own questions for anyone that finds this post in the future:

  • The status of the remote can be “CacheLoad” or “Probe” any things will still work.
  • There are no entities associated with the zwave remote. We’re just looking for the zwave scene event to trigger.
  • The XML edits called out definitely are required before the scene events will fire properly.

Woo hoo thank you for this. You are literally the only person on the internet who has talked about getting Bali remotes working with HomeAssistant :slight_smile:

I glad you were able to get it to work. Considering the pricing of these blinds, I’m surprised more folks aren’t using them.

Does this work with the Z-Wave JS integration. I can’t find the zwcfg_*.xml file.

Got it working.

alias: Bali Bottom Button
description: Bottom Button
trigger:
  - platform: event
    event_type: zwave_js_value_notification
    event_data:
      property_key: '002'
      value: 1
      node_id: 57
condition: []
action:
  - service: notify.paul_iphone_only
    data:
      message: bali bottom button
mode: single

@loafbread How did you get this working? I found my zwcfg_* file, but it doesn’t appear to have been updated since I switched to zwave_js so it doesn’t contain the blinds I recently added. Is the code you shown an automation? Where did you get the values you used?

@volvo you don’t need zwcfg_* if you are using the latest Z-Wave JS integration. The code above is an automation. Assuming you have added the remote to your Z-Wave network, you should be able to view the remote in the Settings → Devices page. That page will show the “Device_id” which is the “node_id:” in the automation. The top button is “property_key: 001” the bottom button is “property_key: 002”. There is no sensor or switch or binary_switch for the remote buttons. You have to use the event platform in an automation to use the buttons.

Here are some more details: Installation Experiences: Using Bali VCZ1 Z-Wave Remote with Home Assistant

@loafbread My remote is 12 channel. Watching the logs (below), when I press then up / down buttons on Channel 1 I see.

Subscribed to Z-Wave JS Log Messages…
2022-08-19T12:24:12.977Z DRIVER « [Node 024] [REQ] [ApplicationCommand]
└─[CentralSceneCCNotification]
sequence number: 118
key attribute: KeyPressed
scene number: 1
2022-08-19T12:24:12.986Z CNTRLR « [Node 024] received CentralScene notification {
“nodeId”: 24,
“ccId”: “Central Scene”,
“ccCommand”: “0x03”,
“payload”: “0x768001”
}
2022-08-19T12:24:21.748Z DRIVER « [Node 024] [REQ] [ApplicationCommand]
└─[CentralSceneCCNotification]
sequence number: 119
key attribute: KeyPressed
scene number: 13
2022-08-19T12:24:21.755Z CNTRLR « [Node 024] received CentralScene notification {
“nodeId”: 24,
“ccId”: “Central Scene”,
“ccCommand”: “0x03”,
“payload”: “0x77800d”
}
However when I try and use 1 or 13 for the value in the automation (when on Channel 1), I’m not getting any results.

After doing a little more digging, I found the Developer Tools > Events UI and could monitor zwave_js_value_notification when I pressed the up/down buttons to see what parameter/values I should look for. It now works. Thanks for your help @loafbread