Issues Merten CONNECT radio system based on Z-wave

Hi!

I have the CONNECT radio system from Merten CONNECT radio system:
http://www.merten.com/Functional-principle.147.0.html

Unfortunate Schneider Electric say the Merten z-wave devices don’t support openzwave.com, but thy are listed as supported devices e.g Transmitter Move http://www.openzwave.com/device-database/007a:0001:0002

I mange to controll switches and wall plugs with home-assistant on hass.io but I strugle to get the push buttons to work e.g: “Transmitter Move” and “Transmitter 1-Gang Switch”

Now I hope some one in this forum has any experience with it.
Has any one got the CONNECT radio system buttons to work in Home-assistant?

To some extent … I’m using them both to toggle lights in rooms and groups by running automations based on event.

# Example from my automations.yaml
- alias: 'Kitchen'
  hide_entity: true
  trigger:
    - platform: event
      event_type: zwave.node_event
      event_data:
        entity_id: zwave.merten_transmitter_1gang_switch_3
  action:
    - service: homeassistant.toggle
      entity_id: light.kitchen'

That sounds good,are you arble to paste inn your xml code from zwcfg_*.xml regarding your “merten_transmitter_1gang_switch_3”?

My merten switchhes is missing a loot of xml tags.

I hope this helps:

<Node id="6" name="" location="" basic="1" generic="18" specific="0" type="Remote Switch" listening="false" frequentListening="false" beaming="false" routing="false" max_baud_rate="9600" version="3" query_stage="Complete">
<Manufacturer id="7a" name="Merten">
	<Product type="1" id="2" name="Transmitter 1-Gang Switch" />
</Manufacturer>
<CommandClasses>
	<CommandClass id="32" name="COMMAND_CLASS_BASIC" version="1" request_flags="4" after_mark="true" innif="true">
		<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="38" name="COMMAND_CLASS_SWITCH_MULTILEVEL" version="1" after_mark="true" innif="true">
		<Instance index="1" />
		<Value type="byte" genre="user" instance="1" index="0" label="Level" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
		<Value type="button" genre="user" instance="1" index="1" label="Bright" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0" />
		<Value type="button" genre="user" instance="1" index="2" label="Dim" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0" />
		<Value type="bool" genre="system" instance="1" index="3" label="Ignore Start Level" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="True" />
		<Value type="byte" genre="system" instance="1" index="4" label="Start Level" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
	</CommandClass>
	<CommandClass id="80" name="COMMAND_CLASS_BASIC_WINDOW_COVERING" version="1" request_flags="4" after_mark="true" innif="true">
		<Instance index="1" />
		<Value type="button" genre="user" instance="1" index="0" label="Open" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0" />
		<Value type="button" genre="user" instance="1" index="1" label="Close" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0" />
	</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="132" name="COMMAND_CLASS_WAKE_UP" version="0" request_flags="2">
		<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="3600" />
	</CommandClass>
	<CommandClass id="133" name="COMMAND_CLASS_ASSOCIATION" version="1" request_flags="4" innif="true">
		<Instance index="1" />
		<Associations num_groups="2">
			<Group index="1" max_associations="12" label="Group 1" auto="true" multiInstance="true">
				<Node id="1" />
			</Group>
			<Group index="2" max_associations="12" label="Group 2" auto="false" multiInstance="true" />
		</Associations>
	</CommandClass>
	<CommandClass id="134" name="COMMAND_CLASS_VERSION" version="1" request_flags="4" 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="2" />
		<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="2.27" />
		<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="1.08" />
	</CommandClass>
	<CommandClass id="142" name="COMMAND_CLASS_MULTI_CHANNEL_ASSOCIATION" version="1" request_flags="4" innif="true">
		<Instance index="1" />
		<Associations num_groups="2">
			<Group index="1" max_associations="12" label="Group 1" auto="true" multiInstance="true">
				<Node id="1" />
			</Group>
			<Group index="2" max_associations="12" label="Group 2" auto="false" multiInstance="true" />
		</Associations>
	</CommandClass>
</CommandClasses>

Thanks, this is a loot more xml tags then I got in my node section for “Remote Switch”

I will try to see if I can just stop hassio and update the xml file manually. Do you also have the “Transmitter Move” button?

Yes, I have the ‘Move’ Transmitter. But I can’t get then to work as smooth as the 1-gang switch. With ‘Move’ I have trouble with latency and also getting the level to set correctly. For 1-gang switches I normally listen for both level 0 and 255 to set lights on/off. Since i can’t get level to set in a good way with the ‘move’ switch I then remove ‘basic_level’ and use homeassistant.toggle insted of .turn_on and .turn_off

- alias: 'Tänd hallampa'
  hide_entity: true
  trigger:
    - platform: event
      event_type: zwave.node_event
      event_data:
          entity_id: zwave.merten_transmitter_1gang_switch_2
          basic_level: 255
    action:
      - service: homeassistant.turn_on
        entity_id: light.hue_ambiance_candle_1
- alias: 'Släck hallampa'
  hide_entity: true
  trigger:
    - platform: event
      event_type: zwave.node_event
      event_data:
        entity_id: zwave.merten_transmitter_1gang_switch_2
        basic_level: 0
  action:
    - service: homeassistant.turn_off
      entity_id: light.hue_ambiance_candle_1

zwcfg for ‘Move’:

<Node id="8" name="" location="" basic="1" generic="18" specific="0" type="Remote Switch" listening="false" frequentListening="false" beaming="false" routing="false" max_baud_rate="9600" version="3" query_stage="Complete">
<Manufacturer id="7a" name="Merten">
	<Product type="2" id="1" name="Transmitter Move" />
</Manufacturer>
<CommandClasses>
	<CommandClass id="32" name="COMMAND_CLASS_BASIC" version="1" request_flags="4" after_mark="true" innif="true">
		<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="38" name="COMMAND_CLASS_SWITCH_MULTILEVEL" version="1" after_mark="true" innif="true">
		<Instance index="1" />
		<Value type="byte" genre="user" instance="1" index="0" label="Level" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
		<Value type="button" genre="user" instance="1" index="1" label="Bright" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0" />
		<Value type="button" genre="user" instance="1" index="2" label="Dim" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0" />
		<Value type="bool" genre="system" instance="1" index="3" label="Ignore Start Level" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="True" />
		<Value type="byte" genre="system" instance="1" index="4" label="Start Level" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
	</CommandClass>
	<CommandClass id="80" name="COMMAND_CLASS_BASIC_WINDOW_COVERING" version="1" request_flags="4" after_mark="true" innif="true">
		<Instance index="1" />
		<Value type="button" genre="user" instance="1" index="0" label="Open" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0" />
		<Value type="button" genre="user" instance="1" index="1" label="Close" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0" />
	</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="132" name="COMMAND_CLASS_WAKE_UP" version="0" request_flags="2">
		<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="3600" />
	</CommandClass>
	<CommandClass id="133" name="COMMAND_CLASS_ASSOCIATION" version="1" request_flags="4" innif="true">
		<Instance index="1" />
		<Associations num_groups="1">
			<Group index="1" max_associations="12" label="Group 1" auto="true" multiInstance="true">
				<Node id="1" />
			</Group>
		</Associations>
	</CommandClass>
	<CommandClass id="134" name="COMMAND_CLASS_VERSION" version="1" request_flags="4" 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="2" />
		<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="2.27" />
		<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="1.08" />
	</CommandClass>
	<CommandClass id="142" name="COMMAND_CLASS_MULTI_CHANNEL_ASSOCIATION" version="1" request_flags="4" innif="true">
		<Instance index="1" />
		<Associations num_groups="1">
			<Group index="1" max_associations="12" label="Group 1" auto="true" multiInstance="true">
				<Node id="1" />
			</Group>
		</Associations>
	</CommandClass>
</CommandClasses>

Thanks you have saved me :slight_smile:
I can finally get some more progress on the merten devices.

It would bee nice to gett the dimming function working also, now I only get 0 or 255 when I press the button.

> 2018-10-18 13:38:46.257 Detail, 
> 2018-10-18 13:38:46.258 Info, Node045, Received Basic set from node 45: level=0.  Sending event notification.
> 2018-10-18 13:38:46.258 Detail, Node045, Notification: NodeEvent
> 2018-10-18 13:39:26.819 Detail, Node045,   Received: 0x01, 0x09, 0x00, 0x04, 0x08, 0x2d, 0x03, 0x20, 0x01, 0xff, 0x0a
> 2018-10-18 13:39:26.819 Detail, 
> 2018-10-18 13:39:26.819 Info, Node045, Received Basic set from node 45: level=255.  Sending event notification.
> 2018-10-18 13:39:26.820 Detail, Node045, Notification: NodeEvent
> 2018-10-18 13:39:26.892 Detail, Node045,   Received: 0x01, 0x09, 0x00, 0x04, 0x00, 0x2d, 0x03, 0x20, 0x01, 0xff, 0x02

From home assistant /states panel I can make adjustments in the “level” and it set in the log file:

2018-10-18 13:44:12.441 Info, Node045, Value::Set - COMMAND_CLASS_SWITCH_MULTILEVEL - Level - 0 - 1 - 21
2018-10-18 13:44:12.441 Info, Node045, SwitchMultilevel::Set - Setting to level 21
2018-10-18 13:44:12.441 Detail,

1 Like

Have you gotten the dimmin function to work? I have managed to associate the transmitter to a dimmer. But it only turns on and off. I get this to work in telldus. But there I have to manually set the “config bytes” settings. To get the hold to dim and so on to work… Would be nice to be able to set these in homeassistant too…

No, sorry I haven’t had time to play with it yet. I guess maybe modifying the zwcfg*xml file and include the proper attributes will help.
If I look in the z-wave configuration, I only get “level” as an option, and in the user manuall the move is supporting several
Supports classes

<!--Transmitter (1-gang, battery-powered) – 5051xx/5061xx/5071xx
Device type: 12H Controller
Supports classes: 72, 86, 70, 85, 8E, EF, 85, 20, 26, 50
Manufacturer ID: 07A Type: 01 ID: 02
Learn mode:Triple click on operating surface LED flashes approx 6 seconds. Used for include/exclude the device by the primary.
Transmit Node info frame: Triple click on operating surface Wait until the red LED goes out. Used to identify, associate and configure the device. 

Single surface push button:
Top button: 	Associaton Group = 1 Parameter no = 0
Bottom button:	Associaton Group = 2 Parameter no = 1
Dual surface push button:
Left top button: 		Associaton Group = 1 Parameter no = 0
Left bottom button:		Associaton Group = 2 Parameter no = 1
Right top button: 		Associaton Group = 3 Parameter no = 2
Right bottom button:	Associaton Group = 4 Parameter no = 3

Functions and parameter number:
Switching/dimming/shutters dual-surface:				0
Switching single surface:								4
Retrieve/save scene										60
Doorbell function										44
Move shutter single-surface,
(direction of movement changes after each switching):	54
LOWER shutter as long as button is pressed:				52
RAISE shutter as long as button is pressed: 			55

Z-Wave device version: Lib: 2.23 App: 1.60 -->

Too bad, I tried with the set_config_parameter, and tried with the openzwave control panel. But doesn’t seem like its possible to set these values…

I am not sure how openzwave works in detail, but I think it is now using the default “Level” in COMMAND_CLASS_SWITCH_MULTILEVEL
<Value type="byte" genre="user" instance="1" index="0" label="Level" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />

Instead it should call the value for dimming instance=“1” and index=“2”

<Value type="button" genre="user" instance="1" index="2" label="Dim" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0" />

Hmm. Let me know If you find a way to get it working…

yes, I will share as soon as I get time to test more, I am hoping it will be this side of new year.

I have bought several ESP8266 and ESP32, so now I try to finish some of those projects with https://esphomelib.com. Fantastic project if you want a easy way to try to build your own IoT devices, and include them to home-assistant.

I’ll let you know too if I manage to get it to work too… i really need them to work… so have to use the Telldus to control them until i find a way in HASS

I think we need to modify the xml file, I notice some issues compared to this document:

  1. The “type” is wrong in some of the ellements

  2. Now I can only set the first one label=“Level”

     		<CommandClass id="38" name="COMMAND_CLASS_SWITCH_MULTILEVEL" version="1" after_mark="true" innif="true">
     			<Instance index="1" />
     			<Value type="byte" genre="user" instance="1" index="0" label="Level" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
     			<Value type="byte" genre="user" instance="1" index="1" label="Bright" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0" />
     			<Value type="byte" genre="user" instance="1" index="2" label="Dim" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="100" />
     			<Value type="bool" genre="system" instance="1" index="3" label="Ignore Start Level" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="True" />
     			<Value type="byte" genre="system" instance="1" index="4" label="Start Level" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
     		</CommandClass>
    

We also need to update the commandClass id 142 to get the proper groups.

<CommandClass id="142" name="COMMAND_CLASS_MULTI_CHANNEL_ASSOCIATION" version="1" request_flags="4" innif="true">

I think the main problem is that I can’t set the proper dim value, when I associate my light source with the physical button. Now I only set it as “Level” instance=“1” index=“0”.
I might need to reset the button first, it is already added to a group, not sure. Do you know?

hmm… I don’t know… But I dunno if this might help either… I got it working well with telldus. There I did like this. The upper rocker is “group 1” and the lower rocker is “group 2” I did associate both this with the dimmer I wanted it to control.

When I did this it was exatcly like it is now with home assistant. When pressing the upper it turns on, when pressing the lower it turns off.

To make this work I had to dial in the config byte value in telldus. See the pictures. When I did this it worked perfecty to dim up when holding the upper part and dim down when holding the lower part.