Skip to content

Instantly share code, notes, and snippets.

@rchl
Last active May 5, 2022 15:09
Show Gist options
  • Save rchl/991c65bf0cb8b9431e7ff27f970308a1 to your computer and use it in GitHub Desktop.
Save rchl/991c65bf0cb8b9431e7ff27f970308a1 to your computer and use it in GitHub Desktop.
Enable NodOn Z-Wave 4 button wall switch (CWS-3-1-01) in Home Assistant

Home assistant doesn't properly support Central Scene events currently. This is how to make it recognize those events.

  1. Stop home assistant (From the UI, otherwise it might restart automatically).
  2. In zwcfg_0x*xml file in configuration folder, in block for NodOn switch (search for name="NodOn"), replace <CommandClass id="91" name="COMMAND_CLASS_CENTRAL_SCENE"... block with:
            <CommandClass id="91" name="COMMAND_CLASS_CENTRAL_SCENE" version="1" request_flags="4" innif="true" scenecount="4">
                <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="4" />
                <Value type="int" genre="user" instance="1" index="1" label="Button 1" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
                <Value type="int" genre="user" instance="1" index="2" label="Button 2" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
                <Value type="int" genre="user" instance="1" index="3" label="Button 3" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
                <Value type="int" genre="user" instance="1" index="4" label="Button 4" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
            </CommandClass>
  1. In automations.yaml file add automations below (un-comment whichever should be enabled and adjust actions to your setup):
### NodOn switch 1
# - id: nod_on_button_1_press
#   alias: On nod_on Button 1 Press
#   trigger:
#   - platform: event
#     event_type: zwave.scene_activated
#     event_data:
#       entity_id: zwave.nodon_cws3101_wall_switch
#       scene_id: 1
#       scene_data: 0
#   action:
#   - service: homeassistant.toggle
#     entity_id: light.living_room_ceiling_level

# - id: nod_on_button_1_long_press
#   alias: On nod_on Button 1 Long Press
#   trigger:
#   - event_data:
#       entity_id: zwave.nodon_cws3101_wall_switch
#       scene_id: 1
#       scene_data: 2
#     event_type: zwave.scene_activated
#     platform: event
#   action:
#   - data:
#       entity_id: media_player.mybraviatv
#     service: media_player.turn_off
#   - service: script.lights_off

# - id: nod_on_button_1_triple_press
#   alias: On nod_on Button 1 Triple Press
#   trigger:
#   - event_data:
#       entity_id: zwave.nodon_cws3101_wall_switch
#       scene_id: 1
#       scene_data: 3
#     event_type: zwave.scene_activated
#     platform: event
#   action:
#   - data:
#       entity_id: media_player.mybraviatv
#     service: media_player.turn_off
#   - service: script.lights_off

# - id: nod_on_button_2_press
#   alias: On nod_on Button 2 Press
#   trigger:
#   - platform: event
#     event_type: zwave.scene_activated
#     event_data:
#       entity_id: zwave.nodon_cws3101_wall_switch
#       scene_id: 2
#       scene_data: 0
#   action:
#   - service: homeassistant.toggle
#     entity_id: switch.telldus_tzwp100_plugin_switch_switch

# - id: nod_on_button_2_long_press
#   alias: On nod_on Button 2 Long Press
#   trigger:
#   - event_data:
#       entity_id: zwave.nodon_cws3101_wall_switch
#       scene_id: 2
#       scene_data: 2
#     event_type: zwave.scene_activated
#     platform: event
#   action:
#   - data:
#       entity_id: media_player.mybraviatv
#     service: media_player.turn_off
#   - service: script.lights_off

# - id: nod_on_button_2_triple_press
#   alias: On nod_on Button 2 Triple Press
#   trigger:
#   - event_data:
#       entity_id: zwave.nodon_cws3101_wall_switch
#       scene_id: 2
#       scene_data: 3
#     event_type: zwave.scene_activated
#     platform: event
#   action:
#   - data:
#       entity_id: media_player.mybraviatv
#     service: media_player.turn_off
#   - service: script.lights_off

# - id: nod_on_button_3_press
#   alias: On nod_on Button 3 Press
#   trigger:
#     platform: event
#     event_type: zwave.scene_activated
#     event_data:
#       entity_id: zwave.nodon_cws3101_wall_switch
#       scene_id: 3
#       scene_data: 0
#   action:
#   - service: homeassistant.toggle
#     entity_id: switch.tv_lamp_switch

# - id: nod_on_button_3_long_press
#   alias: On nod_on Button 3 Long Press
#   trigger:
#   - event_data:
#       entity_id: zwave.nodon_cws3101_wall_switch
#       scene_data: 2
#       scene_id: 3
#     event_type: zwave.scene_activated
#     platform: event
#   action:
#   - data:
#       entity_id: media_player.mybraviatv
#     service: media_player.turn_off
#   - service: script.lights_off

# - id: nod_on_button_3_triple_press
#   alias: On nod_on Button 3 Triple Press
#   trigger:
#   - event_data:
#       entity_id: zwave.nodon_cws3101_wall_switch
#       scene_id: 3
#       scene_data: 3
#     event_type: zwave.scene_activated
#     platform: event
#   action:
#   - data:
#       entity_id: media_player.mybraviatv
#     service: media_player.turn_off
#   - service: script.lights_off

# - id: nod_on_button_4_press
#   alias: On nod_on Button 4 Press
#   trigger:
#     platform: event
#     event_type: zwave.scene_activated
#     event_data:
#       entity_id: zwave.nodon_cws3101_wall_switch
#       scene_id: 4
#       scene_data: 0
#   action:
#   - service: homeassistant.toggle
#     entity_id: switch.nexa_wallplug_1_switch

# - id: nod_on_button_4_long_press
#   alias: On nod_on Button 4 Long Press
#   trigger:
#   - event_data:
#       entity_id: zwave.nodon_cws3101_wall_switch
#       scene_data: 2
#       scene_id: 4
#     event_type: zwave.scene_activated
#     platform: event
#   action:
#   - data:
#       entity_id: media_player.mybraviatv
#     service: media_player.turn_off
#   - service: script.lights_off

# - id: nod_on_button_4_triple_press
#   alias: On nod_on Button 4 Triple Press
#   trigger:
#   - event_data:
#       entity_id: zwave.nodon_cws3101_wall_switch
#       scene_id: 4
#       scene_data: 3
#     event_type: zwave.scene_activated
#     platform: event
#   action:
#   - data:
#       entity_id: media_player.mybraviatv
#     service: media_player.turn_off
#   - service: script.lights_off
  1. Start home assistant (I restart the computer)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment