I have an old Z-Wave scene controller: the Vitrum / Think Simple IV BS Scenari Wireles (model code 03B040010, manufacturer ID 0x0317). It has 4 physical buttons but no Central Scene support.
After pairing it with Z-Wave JS, I can see it only exposes a Root Endpoint and Endpoint 1, with a single association group (max 21 nodes). When I press each of the 4 buttons in turn and watch the Z-Wave JS log at silly level, all four produce byte-for-byte identical commands:
[MultiChannelCCCommandEncapsulation]
source: 1
destination: 0
[BasicCCSet]
target value: 99
The only thing that varies between button presses is the RSSI (just signal noise). There is no device config file for this device in the Z-Wave JS database.
It seems like this device was designed to broadcast to directly-associated Z-Wave nodes rather than to send distinguishable per-button events to a hub. I'm wondering if anyone has experience with this device or similar and found a way to get meaningful per-button events into Home Assistant — whether through configuration parameters, a custom device config file, or any other approach. I'm on Home Assistant (HA Green) Core 2026.6.3, OS17.3, zwave-js-ui: 11.19.1 and zwave-js: 15.24.2. Thanks for any help and ideas!
Solved — scene memorisation works without a Home Master
Posting back in case this helps anyone else with a Vitrum IV BS Scenari Wireless (or similar Vitrum scene controller).
The short version: the 4 buttons are genuinely indistinguishable at the hub in normal operation — that's by design. The device was built to control lights directly via Z-Wave association, not to send per-button events to a hub. But you can programme each button to recall a different dimming scene, and you don't need the Vitrum Home Master remote to do it.
What I worked out:
The original Vitrum workflow had the Home Master respond to a brief memorisation frame the device sends during button-hold mode. Without the Home Master, Z-Wave JS drops that frame (it's an empty/invalid MultiChannel packet). However, the device is actually waiting for a MultiChannelAssociationCC addDestinations command while it's beeping — and you can send that manually via the zwave_js.invoke_cc_api HA service.
Programming a button (one-time per scene):
- Set your lights to the desired levels via HA
- Hold the target button on the scene controller until it flashes magenta and starts beeping
- Immediately call this service:
action: zwave_js.invoke_cc_api
data:
command_class: "142"
method_name: addDestinations
parameters:
- groupId: 1
nodeIds: [6, 7, 10] # node IDs of your DIN dimmers
endpoints: [] # use if any DIN has multiple endpoints
target:
entity_id: switch.your_scene_controller
- Two beeps confirm the scene is stored.
The addDestinations call during memorisation mode is a replacement — whatever nodes you list become that button's scene at their current levels. Repeat for each button with different light levels set beforehand.
A few gotchas:
- Scene data is stored in proprietary memory and is wiped on Z-Wave exclusion/re-inclusion. You'll need to re-programme after re-pairing.
- All buttons share a global association pool. Add all nodes to the pool first (with no button held), then programme each button's levels independently.
Hope this saves someone else a few hours of log-watching!