Setting a zwave parameter

I use a data template to set the volume parameter of a doorbell and it works for me. try something like this:

  - service: zwave.set_config_parameter
    data_template: {
      "node_id": 39,
      "parameter": 8,
      "value": 10

but as previously posted, battery powered devices may or may not respond properly. I have a Kwikset lock and it’s hit or miss if it receives commands properly and it’s a direct neighbor of the z wave controller. My mains powered devices don’t have an issue with commands.

It’s a schlage lock. Battery powered. I am a precious Smartthings user and was able to make these sort of changes. So i know that’s it’s not a hardware limitation.

It’s all good just trying to determine what i can and cannot do.

I think you have to wait for the lock to wake up and check-in then the OZW stack will send the config (on some battery powered devices).

Sounds possible, but if that’s the case its an HA/OWZ limitation not a limitation of the schlage locks. Unless there is a way to Wake the lock up with zwave and then send the code. I definitely had a few smartthings automations that changed zwave settings on these locks. One good example of a useful automation would be to enable the alarm at night or when you’re away, etc.


Here is the xml

				<Value type="list" genre="config" instance="1" index="7" label="Lock Alarm Mode" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
					<Help>The alarm is turned off by default. After installation, you will need to turn on your alarm. Activity Alarms when the door opens or closes. Perfect for monitoring doors while you re at home. After the alarm is triggered, there is a built-in 3-second delay for it to reset. Sounds two short beeps. Tamper Alarms when the lock is disturbed, while locked. Senses subtle activity at the lock. Sounds 15 second Alarm (90 dB) Forced Entry Alarms when significant force pushes against the door, while locked. Perfect for nighttime or when you re away from home. Least sensitive mode Sounds three-minute shrill, steady alarm (90 dB)</Help>
					<Item label="Alarm Off" value="0" />
					<Item label="Activity" value="1" />
					<Item label="Tamper" value="2" />
					<Item label="Forced Entry" value="3" />

and here is the auotmation I’m trying to use

- alias: 'Lock and Leave for Front Door Test'
  - platform: state
    entity_id: input_boolean.test_switch
    from: 'off'
    to: 'on'
  - service: zwave.set_config_parameter
      node_id: 81
# Parameter 7 is Alarm      
      parameter: 7
      value: 1
      size: 1

This does not work when I run it manually to with a valid trigger. I see nothing in the zwave logs at all, so I’m thinking maybe its something else?

I think I am doing something wrong, or that this is just not working. I tried just using the call service as a test, and I tried chanigng a value on another non battery device. Same thing

      "node_id": 18,
      "parameter": 3,
      "value": 2

I tried this under the services call zwave.set_config_parameter

These settings are for a simple ge light switch. turning on or off an LED light. Works in the zwave UI panel, but not with the set_config_parameter.

This is from the owz log when I change the setting above from the UI

2018-06-03 11:34:08.849 Info, Node018, Value::Set - COMMAND_CLASS_CONFIGURATION - LED Light - 3 - 1 - LED always off
2018-06-03 11:34:08.849 Info, Node018, Configuration::Set - Parameter=3, Value=2 Size=1
2018-06-03 11:34:08.849 Detail, Node018, Queuing (Send) ConfigurationCmd_Set (Node=18): 0x01, 0x0c, 0x00, 0x13, 0x12, 0x05, 0x70, 0x04, 0x03, 0x01, 0x02, 0x25, 0x33, 0x95
2018-06-03 11:34:08.849 Detail, Node018, Queuing (Send) ConfigurationCmd_Get (Node=18): 0x01, 0x0a, 0x00, 0x13, 0x12, 0x03, 0x70, 0x05, 0x03, 0x25, 0x34, 0x90
2018-06-03 11:34:08.849 Detail, 

Again, using the automation or just calling the service shows nothing at all in the logs, its like it never even gets processed.

Just to be clear, the code above is only from when i make the change in the UI. nothing happens when trying to do this with automations

Sounds like a bug. Might need to report it on github.

I’d be happy to report it, can anyone else confirm that they are also unable to make any changes to zwave devices using the



1 Like

What version and install method are you using? I run 0.69.1 in a docker container on a Synology. No issues setting a z-wave device parameter for a mains powered device or my battery powered Kwikset lock or a door sensor. I had to wake up my battery powered door sensor before it would take a parameter change. Used the services tab, the z wave node management page, and an automation and all of them worked. One note is the services tab is touchy when it comes to JSON formatting. There are different styles of double quotes. I’m using my iPhone and the HA app so I had to long press on the double quote on the keyboard to select the correct one, otherwise it complained my JSON was not properly formatted.

1 Like

Running home assistant on Ubuntu.
Version .70
Not using a docker container.

1 Like

This also happens to me. I can NOT set zwave.set_config_parameter in my automations.yaml file. I am NOT running in docker.

I have been able to set config parameters in automation. I am running 81.6 at the moment, but I believe it has worked for a while. I don’t do much with it though at the moment. Here is the info on my lock manager

I added zwave control to this last week. The wave part of the automation is fairly straight forward, and might help you to come up with some ideas. Main thing for me is that it passes the ascii text, which OWZ converts to the value when it actually sets the value.

Good luck


After some struggle I found out how to configure a zwave device using zwave.set_config_parameter from an automation, please see this post.
HA 0.84.6, not using Docker.

Sorry to revive this thread but I’ve been having some trouble with this command so did some searches.
I now have my problem solved but your post is the first of two I found (datewise) includind the “size:” parameter. Not sure what this means i.e. size: 1
Is that meaning just “1 off parameter” or is it a byte size or … (Can’t find any reference to it).
The parameter I am ‘sending’ is as below (it works so only interested in the applicabilitly of size: in this instance)

    alias: Siren 01 Fur Elise
      - service: zwave.set_config_parameter
        data_template: {
          "node_id": 41,
          "parameter": 6,
          "value": "Fur Elise"
      - delay: "00:00:01"
      - service: switch.turn_on
        entity_id: switch.shenzen_siren01_switch
      - delay: "00:00:{{ states('input_number.in_siren01_drtn') | int }}"
      - service: switch.turn_off
        entity_id: switch.shenzen_siren01_switch

Cheers In Advance

It’s the number of bytes being set, so that you pass the right amount of data.

So in the example above (“Fur Elise”) are we on 1 byte characters, or 2 byte extended characters ?
Do I have to send the " " " aswell ?
So is this 9, 11, 18 or 22 ???
I assume knowing how much data allows the z-wave network to continue rather than have it time out on the message, so this is ‘more efficient ?’
Thanks again

I’d check the manual of the device - it’ll tell you, hopefully. I’d expect that you don’t pass "Fur Elise" but a number indicating which “slot” is used.

It’s more about not passing 9 as 00010001 (8 bits) when the field takes 16 bits and needs to have 0000000000010001 (I suspect).

Have Tried just the number to no avail, The “words” work fine though.
I was pointed this way by a number of posts on this forum : -

Both use “words”
I found this following post interesting (it led to a manual) the manual says that you can send a music index (so I’m going to try that again) but the size is 1 even if you send “10” which lends credence to the multiples of 16 bits (it uses numbers, though I assume - not in quotes)

The manual I’ve got on my siren decribes setting the parameters manually via “your z-wave interface” and is generally a bit light on actual detail.

Yep just tested numbers on a copy of the working script, no change to the music index when passed a number with no quotes.

You must use the words in this case. OZW converts the words into the proper number. You don’t need to set the size, it isn’t used (OZW already knows it). This is all due to the definition of the config parameters in the device config file.

        <Value type="list" genre="config" instance="1" index="6" label="Door Bell Music Index" min="1" max="10" size="1" value="9">
            <Help>This parameter defines the door bell music index for siren play different music when alarm occurs.
                There are 10 different music for user selection.</Help>
            <Item label="Doorbell" value="1"/>
            <Item label="Fur Elise" value="2"/>
            <Item label="Doorbell Extended" value="3"/>
            <Item label="Alert" value="4"/>
            <Item label="William Tell" value="5"/>
            <Item label="Rondo Alla Turca" value="6"/>
            <Item label="Police Siren" value="7"/>
            <Item label="Evacuation" value="8"/>
            <Item label="Beep Beep" value="9"/>
            <Item label="Beep" value="10"/>

The XML defines this config parameter as a “list” type. When the parameter is a list, OZW (or perhaps the Python OZW API that Home Assistant is using) expects to be given the item label, not the raw value. It will do the job of converting the string “Fur Elise” to the appropriate native value, which would be the 1-byte integer value of 2. In this case, Home Assistant would not even use the size value in the service call if you set it, it will just be ignored.

I think the size is needed when a device does not have a config parameter defined in the XML file. It will pass the raw parameter value (which must be an integer) to the low level OZW API. The size parameter must match what the device is programmed to expect.


Brilliant, that’s just what the doctor ordered.
I now know what I’m using and why
Thanks to you both