Hey Marcus,
I do not know if you ever found out about the scenes, but I did, and I will show you the wordaround-style solution to it. I actually used the info you provided which was a helpful piece in the puzzle that I was caught up in for days.
Mind you, this only applies to the OpenZWave integration. Z-Wave JS does not suffer from the Z-Wave scene problem with the Smart Implant.
Here are the steps to get the Z-Wave scenes working on the Fibaro Smart Implant:
0 - Some remarks and considerations: I still use the Z-Wave (deprecated) integration and these steps are for everyone including the ones with just basic knowledge of this matter.
1 - In Home Assistant go to Configuration > Z-Wave integration > Configure and click Stop Network. This step is necessary to prevent the modification that are about to be made in the zwcfg_*.xml
file from being overwritten, which would render modifying the file meaningless.
2 - Stop Home Assistant.
3 - Locate the zwcfg_*.xml
file, where * equals an unique hex number that is probably derived from the Z-Wave integration, and make a copy somewhere else as a backup just in case you want to go back.
4 - Open it, search for Smart Implant
and locate the part <CommandClass id="91"
a little further down.
5 - Replace that part with this:
<CommandClass id="91" name="COMMAND_CLASS_CENTRAL_SCENE" version="1" request_flags="5" 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>
Make sure everything is lined up accordingly to the rest, copy/paste the spacings in the new lines from other existing lines if necessary. Best is to repeat these steps 4 and 5 for every Smart Implant that is part of the network.
6 - Restart Home Assistant. Mind that restarting the Z-Wave network may take a few minutes now, which can be checked at the integration itself.
7 - Identify which Node ID corresponds with the Smart Implant(s) you want to address at Configuration > Z-Wave integration > Configure, click Nodes and make note of the Node numbers that correspond with these.
8 - Check in the Smart Implant Operating Manual and consider what is possible with Parameter 40 and 41 and the necessary settings for Parameter 20 and/or 21, matching with what you want.
9 - The settings can be made e.g. at Developer Tools > Services > choose Z-Wave (deprecated): Set config parameter as service but there are various ways in doing so, even using a perhaps unconventional way like a totally other application (which might offer a better overview of the settings). The parameters settings are stored in the Z-Wave modules, as you may be aware of. Choose YAML mode and make the proper settings. In this example at Node ID 13 I am first setting Input 2 to be a monostable button. Click Call Service after:
service: zwave.set_config_parameter
data:
node_id: 13
parameter: 21
value: '2'
Then in the example I am setting Input 2 to respond to a double tap:
service: zwave.set_config_parameter
data:
node_id: 13
parameter: 41
value: '2'
10 - To check what is happening on the event bus go to Developer Tools > Events and at Listen to events enter zwave.scene_activated
and click Start Listening. If the button now is double tapped a JSON response will be received here, showing the involved details that we need later in Automations.
11 - The YAML of the Automation’s trigger for his Smart Implant would then be:
platform: event
event_type: zwave.scene_activated
event_data:
entity_id: zwave.fibaro_system_fgbs222_smart_implant
scene_id: 2
scene_data: 3
The correct entity ID can be found at Configuration > Z-Wave integration > Configure > select the node > click Node Information > the gear sign > in Settings you will find the Entity ID which you can copy.
12 - Overview of parameter 40/41 values that can be set at e.g. monostable buttons, the corresponding action to invoke the scene and the returning value of scene_data
to check on as trigger in Automations.
Value 8 is quite interesting as it results in 2 scenes, corresponding with the 2 states of the input: button pressed/contact closed and released/contact open.
1 = button tapped 1 time > scene_data: 0 (actually the use of this scene does not make sense to me)
2 = button tapped 2 times > scene_data: 3
3 = button tapped 3 times > scene_data: 4
8 = button hold down/closed > scene_data: 1 ... button released/open > scene_data: 2
Hope this all helps and please let me know if any questions arise, although I have to admit that my knowledge on the matter does not go that much deeper than mentioned here in the above. I had just put all the pieces of the puzzle together.
Mind that if you change something on the Z-Wave network the zwcfg_*.xml
could become overwritten, I have not tested this. This is due to the fact that the procedure above is based on a workaround.