Sunricher 10 button remote controller

Hi,

I have a small problem with a Z-Wave remote controller.
The remote is a 10 button (4 groups, 2 scenes and one master On and Off button)

I want to use this remote to activate a scene, switch a group of lights on or off (and dim when holding down a button) etc.

When I add te node in the Z-wave configuration it say’s
Sunricher Unknown: type=0300, id=a107

With this topic I managed to change the Z-wave cfg yaml:

Now, when I press a button, the logfile shows:

2020-07-14 21:10:01.458 Detail, Node023, Received: 0x01, 0x0b, 0x00, 0x04, 0x00, 0x17, 0x05, 0x5b, 0x03, 0x35, 0x80, 0x03, 0x0c
2020-07-14 21:10:01.459 Detail,
2020-07-14 21:10:01.459 Info, Node023, Received Central Scene set from node 23: scene id=3 in 7680 seconds. Sending event notification.
2020-07-14 21:10:01.459 Warning, Node023, No ValueID created for Scene 3

My config is as follow:

node_id: 22
node_name: Remote
manufacturer_name: Sunricher
product_name: 'Unknown: type=0300, id=b302'
query_stage: Probe
is_awake: false
is_ready: false
is_failed: true
is_info_received: false
max_baud_rate: 40000
is_zwave_plus: true
capabilities:
  - routing
  - zwave_plus
  - beaming
sentCnt: 1
sentFailed: 1
retries: 0
receivedCnt: 0
receivedDups: 0
receivedUnsolicited: 0
sentTS: '2020-07-08 23:02:00:861 '
receivedTS: '2020-07-08 23:01:31:222 '
lastRequestRTT: 0
averageRequestRTT: 0
lastResponseRTT: 0
averageResponseRTT: 0
battery_level: 100
wake_up_interval: 3600
application_version: Unknown
friendly_name: Remote

zwaveconfig yaml:

<Node id="23" name="" location="" basic="4" generic="18" specific="1" roletype="4" devicetype="5632" nodetype="0" type="Basic Wall Controller" listening="false" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="Versions">
		<Manufacturer id="330" name="Sunricher">
			<Product type="300" id="b302" name="Remote" />
		</Manufacturer>
		<CommandClasses>
			<CommandClass id="32" name="COMMAND_CLASS_BASIC" version="1" request_flags="4">
				<Instance index="1" />
				<Value type="byte" genre="basic" instance="1" index="0" label="Basic" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
			</CommandClass>
			<CommandClass id="90" name="COMMAND_CLASS_DEVICE_RESET_LOCALLY" version="1" request_flags="4" innif="true">
				<Instance index="1" />
			</CommandClass>
			<CommandClass id="91" name="COMMAND_CLASS_CENTRAL_SCENE" version="1" request_flags="4" 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" />
			</CommandClass>
			<CommandClass id="94" name="COMMAND_CLASS_ZWAVEPLUS_INFO" version="1" request_flags="4" innif="true">
				<Instance index="1" />
				<Value type="byte" genre="system" instance="1" index="0" label="ZWave+ Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="1" />
				<Value type="short" genre="system" instance="1" index="1" label="InstallerIcon" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="5632" />
				<Value type="short" genre="system" instance="1" index="2" label="UserIcon" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="5632" />
			</CommandClass>
			<CommandClass id="112" name="COMMAND_CLASS_CONFIGURATION" version="1" request_flags="4" innif="true">
				<Instance index="1" />
			</CommandClass>
			<CommandClass id="114" name="COMMAND_CLASS_MANUFACTURER_SPECIFIC" version="1" request_flags="4" innif="true">
				<Instance index="1" />
			</CommandClass>
			<CommandClass id="115" name="COMMAND_CLASS_POWERLEVEL" version="1" request_flags="4" innif="true">
				<Instance index="1" />
				<Value type="list" genre="system" instance="1" index="0" label="Powerlevel" units="dB" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
					<Item label="Normal" value="0" />
					<Item label="-1dB" value="1" />
					<Item label="-2dB" value="2" />
					<Item label="-3dB" value="3" />
					<Item label="-4dB" value="4" />
					<Item label="-5dB" value="5" />
					<Item label="-6dB" value="6" />
					<Item label="-7dB" value="7" />
					<Item label="-8dB" value="8" />
					<Item label="-9dB" value="9" />
				</Value>
				<Value type="byte" genre="system" instance="1" index="1" label="Timeout" units="seconds" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
				<Value type="button" genre="system" instance="1" index="2" label="Set Powerlevel" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0" />
				<Value type="byte" genre="system" instance="1" index="3" label="Test Node" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
				<Value type="list" genre="system" instance="1" index="4" label="Test Powerlevel" units="dB" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
					<Item label="Normal" value="0" />
					<Item label="-1dB" value="1" />
					<Item label="-2dB" value="2" />
					<Item label="-3dB" value="3" />
					<Item label="-4dB" value="4" />
					<Item label="-5dB" value="5" />
					<Item label="-6dB" value="6" />
					<Item label="-7dB" value="7" />
					<Item label="-8dB" value="8" />
					<Item label="-9dB" value="9" />
				</Value>
				<Value type="short" genre="system" instance="1" index="5" label="Frame Count" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="0" />
				<Value type="button" genre="system" instance="1" index="6" label="Test" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0" />
				<Value type="button" genre="system" instance="1" index="7" label="Report" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0" />
				<Value type="list" genre="system" instance="1" index="8" label="Test Status" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
					<Item label="Failed" value="0" />
					<Item label="Success" value="1" />
					<Item label="In Progress" value="2" />
				</Value>
				<Value type="short" genre="system" instance="1" index="9" label="Acked Frames" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="0" />
			</CommandClass>
			<CommandClass id="128" name="COMMAND_CLASS_BATTERY" version="1" request_flags="4" innif="true">
				<Instance index="1" />
				<Value type="byte" genre="user" instance="1" index="0" label="Battery Level" units="%" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="100" />
			</CommandClass>
			<CommandClass id="132" name="COMMAND_CLASS_WAKE_UP" version="1" request_flags="6" innif="true">
				<Instance index="1" />
				<Value type="int" genre="system" instance="1" index="0" label="Wake-up Interval" units="Seconds" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
			</CommandClass>
			<CommandClass id="133" name="COMMAND_CLASS_ASSOCIATION" version="1" request_flags="6" innif="true">
				<Instance index="1" />
				<Associations num_groups="0" />
			</CommandClass>
			<CommandClass id="134" name="COMMAND_CLASS_VERSION" version="1" request_flags="6" innif="true">
				<Instance index="1" />
				<Value type="string" genre="system" instance="1" index="0" label="Library Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="Unknown" />
				<Value type="string" genre="system" instance="1" index="1" label="Protocol Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="Unknown" />
				<Value type="string" genre="system" instance="1" index="2" label="Application Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="Unknown" />
			</CommandClass>
			<CommandClass id="142" name="COMMAND_CLASS_MULTI_CHANNEL_ASSOCIATION" version="1" request_flags="6" innif="true">
				<Instance index="1" />
				<Associations num_groups="0" />
			</CommandClass>
			<CommandClass id="152" name="COMMAND_CLASS_SECURITY" version="1" request_flags="4" innif="true">
				<Instance index="1" />
				<Value type="bool" genre="system" instance="1" index="0" label="Secured" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="False" />
			</CommandClass>
		</CommandClasses>
	</Node>

The user manual shows that the following CommandClasses are available:
• COMMAND_CLASS_ZWAVEPLUS_INFO_V2
• COMMAND_CLASS_ASSOCIATION_V2
• COMMAND_CLASS_MULTI_CHANNEL_ASSOCIATION_V3 • COMMAND_CLASS_CENTRAL_SCENE_V3
• COMMAND_CLASS_ASSOCIATION_GRP_INFO_V1
• COMMAND_CLASS_TRANSPORT_SERVICE_V2
• COMMAND_CLASS_VERSION_V2
• COMMAND_CLASS_MANUFACTURER_SPECIFIC_V2
• COMMAND_CLASS_DEVICE_RESET_LOCALLY_V1
• COMMAND_CLASS_FIRMWARE_UPDATE_MD_V4
• COMMAND_CLASS_POWERLEVEL_V1
• COMMAND_CLASS_BATTERY_V1
• COMMAND_CLASS_SECURITY_V1
• COMMAND_CLASS_SECURITY_2_V1
• COMMAND_CLASS_WAKE_UP_V2
• COMMAND_CLASS_SUPERVISION_V1

Controlled Command Classes

• COMMAND_CLASS_CENTRAL_SCENE_V3
• COMMAND_CLASS_BASIC_V2
• COMMAND_CLASS_SWITCH_MULTILEVEL_V4
• COMMAND_CLASS_SCENE_ACTIVATION_V1
• COMMAND_CLASS_SCENE_ACTUATOR_CONF_V1 • Multi Channel V3
• Security_V1
• Security_2_V1

Who can help me with this remote?

Thanx!

I don’t have the sunricher but I have gotten the wallmote and gocontrol remotes to work. The no valueID is because the CommandClass needs to be modified with home assistant stopped. You have to try the CommandClass modifications listed here:

https://www.home-assistant.io/docs/z-wave/device-specific/

Search the community for wallmote or gocontrol and there is a lot of info.

Hello, did you succeed? I have the same concerns but with the 8-key model.

Still no luck. I even can’t get the remote to work with a stand alone z-wave switch.

I have similar problem with SR-ZV9001K8-DIM-G4 switch. Did you manage to get it work in your setup?

No.
But I must say that I have 't tried it again sinds a long time.

Maybe the new HA ZWave integration will do some magic.
I will give it a try soon.

YES… Found it.

Stop the Z-Wave network. Edit your zwcfg_* file.
scroll to the right node
Find the line <CommandClass id=“91”
Replace / add 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 1" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="1" />
				<Value type="int" genre="system" instance="1" index="2" label="Button 2" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="2" />
				<Value type="int" genre="system" instance="1" index="3" label="Button 3" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="3" />
				<Value type="int" genre="system" instance="1" index="4" label="Button 4" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="4" />
				<Value type="int" genre="system" instance="1" index="5" label="Button 5" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="5" />
				<Value type="int" genre="system" instance="1" index="6" label="Button 6" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="6" />
				<Value type="int" genre="system" instance="1" index="7" label="Button 7" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="7" />
				<Value type="int" genre="system" instance="1" index="8" label="Button 8" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="8" />
				<Value type="int" genre="system" instance="1" index="9" label="Button 9" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="9" />
				<Value type="int" genre="system" instance="1" index="10" label="Button 10" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="10" />
				<Value type="int" genre="system" instance="1" index="11" label="Button 11" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="11" />
				<Value type="int" genre="system" instance="1" index="12" label="Button 12" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="12" />
			</CommandClass>

Save and start the Z-Wave network.

Now, every button sends a scene ID. Starting from Scene ID 1 and 2 (the 2 big buttons on top) to scene ID 12. With an Automation, you can now use this.

alias: Remote test
description: ''
trigger:
  - platform: event
    event_type: zwave.scene_activated
    event_data:
      entity_id: zwave.sunricher_remote
      node_id: 39
      scene_id: 3
      scene_data: 7680
condition: []
action:
  - type: turn_on
    device_id: b84b14a600e311eba5dac19562a2e09d
    entity_id: light.kitchen
    domain: light
mode: single

scene data is used for how long you press the button. Have to figure this part out but I’m sure you get it.

Good luck

Hi R-v-E
Thanks for the information on how to get the SunRIcher into HASS and use this in automations.
How would this translate to the latest changes in the HASS Z-Wave stack using ZWaveJS. THe zwcfg_* file has become a JSON file and leverages a complete different format.

in my case for a SR-ZV9001K8-DIM-G4 switch I have the following settings that can be set in nodes.json

“21”:{“name”:“EcoBright_ED10020_01”,“hassDevices”:{“sensor_scene_state_slowrefresh”:{“type”:“sensor”,“object_id”:“scene_state_slowrefresh”,“discovery_payload”:{“state_topic”:“zwave/EcoBright_ED10020_01/91/0/slowRefresh”,“value_template”:"{{ value_json.value | default(’’) }}",“json_attributes_topic”:“zwave/EcoBright_ED10020_01/91/0/slowRefresh”,“device”:{“identifiers”:[“zwavejs2mqtt_0xf0397188_node21”],“manufacturer”:“Sunricher”,“model”:“2 group single color wall mounted remote (ZV9001K4-DIM-G2)”,“name”:“EcoBright_ED10020_01”,“sw_version”:“1.28”},“name”:“EcoBright_ED10020_01_scene_state_slowrefresh”,“unique_id”:“zwavejs2mqtt_0xf0397188_21-91-0-slowRefresh”},“discoveryTopic”:“sensor/EcoBright_ED10020_01/scene_state_slowrefresh/config”,“values”:[“91-0-slowRefresh”],“persistent”:true,“ignoreDiscovery”:false},“sensor_scene_state_scene_001”:{“type”:“sensor”,“object_id”:“scene_state_scene_001”,“discovery_payload”:{“state_topic”:“zwave/EcoBright_ED10020_01/91/0/scene/001”,“value_template”:"{{ value_json.value | default(’’) }}",“json_attributes_topic”:“zwave/EcoBright_ED10020_01/91/0/scene/001”,“device”:{“identifiers”:[“zwavejs2mqtt_0xf0397188_node21”],“manufacturer”:“Sunricher”,“model”:“2 group single color wall mounted remote (ZV9001K4-DIM-G2)”,“name”:“EcoBright_ED10020_01”,“sw_version”:“1.28”},“name”:“EcoBright_ED10020_01_scene_state_scene_001”,“unique_id”:“zwavejs2mqtt_0xf0397188_21-91-0-scene-001”},“discoveryTopic”:“sensor/EcoBright_ED10020_01/scene_state_scene_001/config”,“values”:[“91-0-scene-001”],“persistent”:true,“ignoreDiscovery”:false},“sensor_scene_state_scene_002”:{“type”:“sensor”,“object_id”:“scene_state_scene_002”,“discovery_payload”:{“state_topic”:“zwave/EcoBright_ED10020_01/91/0/scene/002”,“value_template”:"{{ value_json.value | default(’’) }}",“json_attributes_topic”:“zwave/EcoBright_ED10020_01/91/0/scene/002”,“device”:{“identifiers”:[“zwavejs2mqtt_0xf0397188_node21”],“manufacturer”:“Sunricher”,“model”:“2 group single color wall mounted remote (ZV9001K4-DIM-G2)”,“name”:“EcoBright_ED10020_01”,“sw_version”:“1.28”},“name”:“EcoBright_ED10020_01_scene_state_scene_002”,“unique_id”:“zwavejs2mqtt_0xf0397188_21-91-0-scene-002”},“discoveryTopic”:“sensor/EcoBright_ED10020_01/scene_state_scene_002/config”,“values”:[“91-0-scene-002”],“persistent”:true,“ignoreDiscovery”:false},“sensor_scene_state_scene_003”:{“type”:“sensor”,“object_id”:“scene_state_scene_003”,“discovery_payload”:{“state_topic”:“zwave/EcoBright_ED10020_01/91/0/scene/003”,“value_template”:"{{ value_json.value | default(’’) }}",“json_attributes_topic”:“zwave/EcoBright_ED10020_01/91/0/scene/003”,“device”:{“identifiers”:[“zwavejs2mqtt_0xf0397188_node21”],“manufacturer”:“Sunricher”,“model”:“2 group single color wall mounted remote (ZV9001K4-DIM-G2)”,“name”:“EcoBright_ED10020_01”,“sw_version”:“1.28”},“name”:“EcoBright_ED10020_01_scene_state_scene_003”,“unique_id”:“zwavejs2mqtt_0xf0397188_21-91-0-scene-003”},“discoveryTopic”:“sensor/EcoBright_ED10020_01/scene_state_scene_003/config”,“values”:[“91-0-scene-003”],“persistent”:true,“ignoreDiscovery”:false},“sensor_scene_state_scene_004”:{“type”:“sensor”,“object_id”:“scene_state_scene_004”,“discovery_payload”:{“state_topic”:“zwave/EcoBright_ED10020_01/91/0/scene/004”,“value_template”:"{{ value_json.value | default(’’) }}",“json_attributes_topic”:“zwave/EcoBright_ED10020_01/91/0/scene/004”,“device”:{“identifiers”:[“zwavejs2mqtt_0xf0397188_node21”],“manufacturer”:“Sunricher”,“model”:“2 group single color wall mounted remote (ZV9001K4-DIM-G2)”,“name”:“EcoBright_ED10020_01”,“sw_version”:“1.28”},“name”:“EcoBright_ED10020_01_scene_state_scene_004”,“unique_id”:“zwavejs2mqtt_0xf0397188_21-91-0-scene-004”},“discoveryTopic”:“sensor/EcoBright_ED10020_01/scene_state_scene_004/config”,“values”:[“91-0-scene-004”],“persistent”:true,“ignoreDiscovery”:false},“sensor_battery_level”:{“type”:“sensor”,“object_id”:“battery_level”,“discovery_payload”:{“value_template”:"{{ value_json.value }}",“device_class”:“battery”,“unit_of_measurement”:"%",“state_topic”:“zwave/EcoBright_ED10020_01/128/0/level”,“json_attributes_topic”:“zwave/EcoBright_ED10020_01/128/0/level”,“device”:{“identifiers”:[“zwavejs2mqtt_0xf0397188_node21”],“manufacturer”:“Sunricher”,“model”:“2 group single color wall mounted remote (ZV9001K4-DIM-G2)”,“name”:“EcoBright_ED10020_01”,“sw_version”:“1.28”},“name”:“EcoBright_ED10020_01_battery_level”,“unique_id”:“zwavejs2mqtt_0xf0397188_21-128-0-level”},“discoveryTopic”:“sensor/EcoBright_ED10020_01/battery_level/config”,“values”:[“128-0-level”],“persistent”:true,“ignoreDiscovery”:false},“binary_sensor_battery_islow”:{“type”:“binary_sensor”,“object_id”:“battery_islow”,“discovery_payload”:{“payload_on”:true,“payload_off”:false,“value_template”:"{{ value_json.value }}",“device_class”:“battery”,“state_topic”:“zwave/EcoBright_ED10020_01/128/0/isLow”,“json_attributes_topic”:“zwave/EcoBright_ED10020_01/128/0/isLow”,“device”:{“identifiers”:[“zwavejs2mqtt_0xf0397188_node21”],“manufacturer”:“Sunricher”,“model”:“2 group single color wall mounted remote (ZV9001K4-DIM-G2)”,“name”:“EcoBright_ED10020_01”,“sw_version”:“1.28”},“name”:“EcoBright_ED10020_01_battery_islow”,“unique_id”:“zwavejs2mqtt_0xf0397188_21-128-0-isLow”},“discoveryTopic”:“binary_sensor/EcoBright_ED10020_01/battery_islow/config”,“values”:[“128-0-isLow”],“persistent”:true,“ignoreDiscovery”:false}}}

Thanks for any suggestion
ME

Hi,

Just did the migration to Z-WaveJS a few days ago.

You can create an automation that looks like this:

alias: Turn on kitchen lights with remote button 1
description: ''
mode: single
trigger:
  - platform: device
    device_id: 3cef40c0ab7b11b47e479aa54f91de97
    domain: zwave_js
    type: event.value_notification.central_scene
    property: scene
    property_key: '001'
    endpoint: 0
    command_class: 91
    subtype: Endpoint 0 Scene 001
condition: []
action:
  - type: turn_on
    device_id: 7511f4186568a049e94ee56890dbc9da
    entity_id: light.kitchen
    domain: light

You can create pre defined automations directly from the device tab.

Hi,

I got the remote last weekend and made a blueprint to access all the buttons from the automation UI.
It is a little messy with all the buttons having a push and hold/release functions but it is all in there.
Just pair the remote with zwave-js and it should show up in the form.

https://raw.githubusercontent.com/rwaarts/home-assistant-extras/main/blueprints/remote/ZV9001K12-DIM-Z4.yaml

Robin

Thanks… this Blueprint works like a charm

Helped me out. Thank you :slight_smile:

I used it on a Zim Z wave 4 groups + 2 scenarios. This is produced by Sunricher. In Norway I believe they go under Namron remote aswell.

The trick that made it work for me was to force inclusion without encryption (S0).

image

During the inclusion process I also clicked all buttons, as I read on one of the other fora that the button scene commands are only added once they are pressed for the first time.

Success looks like this in ZwaveJS UI:

and when you press / hold / release the button the ‘undefined’ scene value changes to:
[0] KeyPressed
[2] KeyHeldDown
[1] KeyReleased

Home Assistant Log looks like this:
image

Automations are configured very easy, the scene values are translated:
image

Or you can use the blueprint of Robin

1 Like