Aeotec wallmote quad zw130

It’s not that as it shows up all over HA and that is how I was able to do a group association to my living room light. And that light works fine.

No did not shut down. Let me try that and see if it shows up then. Thanks.

You always want to shutdown HA when it is necessary to edit zwcfg*.xml. The file is a cache and is stored in memory, until either you shutdown the Z-Wave network or click the “Save Configuration” button in the control panel. Shutting down HA also shuts down the Z-Wave network which saves the file.

You were right …after I shut down HA the wallmote and that “91” command class magically appeared.

Stupid ?: What is a good markup editor to use to do the copy paste?
Believe it or not they used to teach markup in library school- or at least they did 10 years ago.

It worked. Thanks for alll the help. Button 4 now closes garage door with 1 click and opens when you hold button 4.

Now on to the door lock…
Thanks again…

I don’t understand something. If I stop Home Assistant, I’ll loose the connection, my Samba Share and other thing.

So how is it possible to edit a file with Home Assistant stopped ?

Thanks a lot, I’m stuck on this part.

Nope, in hassio all components are dockerized and run independently. You will stop home assistant only, while other services will continue to work. If you have SSH enabled, it also runs in separate container, so even with stopped home assistant you should be able to connect to via ssh and start home assistant without restarting whole system.

Hi guys, I’m trying to install my first Wallmote and I’ve run into some trouble. I’ve paired it several times and edited my zwvcfg_xxx file several times. I followed instructions from @Kevbre from this comment. Thanks to him for putting all the instructions in one, easy-to-read place. However, at no point have I gotten anything from button presses from my Wallmote both physically on the “mote” or in the OZW logs. I feel like It’s paired correctly but it’s just not responding to button presses. Any help would be appreciated because I have two more of these that I’d really like to get working well.

They are Scene controllers. Scene ID : X is the button. Scene Data : X is Press or Hold or Release.

Did you add the necessary device specific stuff to its entry in zwave config?


Stop the zwave network, add it where it says, start zwave network.
1 Like

If anyone is interested, I have created my own script inspired by the one created by @janus

Instead of changing states of entities it emits zwave.scene_activated events with the same structure as original ones:

  • Scene ids:
    • Slide 1 -> 3 (slide down on a left side): 11
    • Slide 2 -> 4 (slide down on a right side): 12
    • Slide 3 -> 1 (slide up on a left side): 13
    • Slide 4 -> 2 (slide up on a right side): 14
  • Scene data:
    • Start of slide: 0
    • End of slide: 1
#!/usr/bin/env python3

import json
import requests
from subprocess import Popen, PIPE
from urllib3.exceptions import InsecureRequestWarning

######  HA INFO ######
URI = 'http://localhost:8123/api/events/zwave.scene_activated'
TOKEN = 'TOKEN'
OZW_LOG = '/home/homeassistant/.homeassistant/OZW_Log.txt'
ENTITY_ID = 'zwave.aeon_labs_zw130_wallmote_quad'
NODE_ID = 42
######  HA INFO ######

requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning)
MATCHER = 'Node{0:03d},   Received: 0x01, 0x0e, 0x00, 0x04, 0x00, 0x31, 0x08, 0x70, 0x06,'.format(NODE_ID, hex(NODE_ID))
if TOKEN:
    HEADERS = {'Authorization': 'Bearer {0}'.format(TOKEN), 'content-type': 'application/json'}
else:
    HEADERS = {'content-type': 'application/json'}
log = Popen(('tail', '-f', '-n', '0', OZW_LOG), stdout=PIPE)
while True:
    line = log.stdout.readline()
    if not line:
        break
    line = line.strip().decode('utf-8')
    if not MATCHER in line:
        continue
    first_or_second = 0 if line[107:111] == '0x09' else 1
    button = line[122]
    data = {"entity_id": ENTITY_ID, "node_id": NODE_ID, "scene_id": int(button) + 10, "scene_data": first_or_second }
    resp = requests.post(URI, data=json.dumps(data), headers=HEADERS, verify=False)

NIce, if it emits only the slide scene data that would negate a problem i fought in both smarthings and HA… that slide also emits the tap command to HA. causes issues. Though I start to question how well one can remember what function does wyat. 8 is easy enough when most are off/on. Can you differentiate between slide down and up? on my fan button it would be nice to control speed by up/down. though I really only expect to swtich between Med/High, never really using low. Right now I use a Node Red flow to control speed, each tap acts like a pull of the chain… Low goes to Med, Med to High. High to Low. Off when commanded on sets it to Med.

It emits only events described above, without any additional ones (if you perform a slide correctly). I use slide up/down to open/close covers and it works perfectly.

I migrated to the new open-zwave integration which allowed me to implement another approach to the wallmote swipe. Its based on the other scripts/examples in this thread and the pattern described in https://community.openhab.org/t/wallmote-quad-zw130-sliding-does-not-work/91818/17:

  • automation to forward event payload from mqtt to python script.
  • python script parse payload
  • python script fire ‘ozw.scene_activated’ event

My automation:

- id: wallmote_swipe_handling
  trigger:
    platform: mqtt
    topic: "OpenZWave/1/node/+/instance/1/commandclass/112/value/+/"
  action:
    - service: python_script.wallmote_handler
      data_template:
        node_id: "{{trigger.payload_json['Node']}}"
        event: "{{trigger.payload_json['Event']}}"
        value: "{{trigger.payload_json['Value']}}"
        index: "{{trigger.payload_json['Index']}}"

And the python script:

event = data.get('event')
label = data.get('label')
index = data.get('index')
node_id = int(data.get('node_id'))

# we only care about index == 10, the end of the swipe 'parameter'
# and for safety we also only look at valueChanged
if (index == '10') and event == 'valueChanged':
    value = int(data.get('value', '0'))
    # unpack byte 2 (button id)
    scene_id = value >> 24 & 0xff

    # unpack byte 3 (direction)
    scene_value_id = value >> 16 & 0xff
    # offset by 10 to avoid colissions
    scene_value_id = scene_value_id + 10

    scene_value_label = 'Swipe Down'
    if scene_value_id == 11:
        scene_value_label = 'Swipe Up'

    hass.bus.fire('ozw.scene_activated', {
        'node_id': node_id,
        'scene_id': scene_id,
        'scene_value_id': scene_value_id,
        'scene_value_label': scene_value_label,
    })

I’m super excited, as I had this wallmote for a while and now I’m finally able to neatly use the swipe events. Thanks to everyone contributing to this and related threads!

5 Likes

Thanks for sharing, that’s great!

Cool, thanks for your input or the script.
With me no event (ozw.scene_activated) is generated.

Is there anything else that needs to be customized in the script or automation?

In the OZW-Admin I don’t see any entries for the performed slide movement in the event log. Only one event is generated when a key is pressed. Is this the same with you?
The slide function is activated on the remote control.

I do not understand this sentence, can someone explain it differently for me please, looks important.

First, I’ll say thanks for re-raising this, I haven’t looked at this thread in a while and looking at your post triggered me to research this out some for I never have been able to get the slide function to work. Now I having it working :slight_smile: .

If you are interested in using the “slide” (aka swipe up/down) function of the wallmote, apparently the only way the wallmote reports a slide is by sending out a “Configuration Report” command class. To get the wallmote to send this report, you have to set the configuration parameter #4 of the wallmote to value 3 which is the “Send Central Scene Command Notification and Configuration report”.

There doesn’t appear to be any official documentation on what the value of these reports mean, but various users have experimented and found that there are two configuration parameters being reported: #9 and #10 and have deduced that part of the values reported for #9 and #10 tells you which button was swiped, and whether the swipe was up or down.

Unfortunately, the configuration setting is the easy part. Making use of the reports once received takes a lot more work. If you’re using something like SmartThings for example, I’m not sure the App even knows about these values, much less how to interpret them. Some users in this thread are using Python scripts for example to get these values out of the OZW Log, or by using openzwave via mqtt to get the value out of a monitored specific topic.

I see, so it sounds like the reason I can’t find this is because I’m using the ST hub.

Would it benefit me to simply get a Z-Wave USB Stick? I’m running this on Virtualbox on an old laptop.

When I try the community made device handler on ST it stops transmitting the full info to the ST Hub.

Usually I would get this with the correct component_id:
“event_type”: “smartthings.button”,
“data”: {
“component_id”: “button1”,
“device_id”: “9b0e0155-a9e8-4887-ab4f-80c578dc3937”,
“location_id”: “xx”,
“value”: “pushed”,
“name”: “LR Aeotec Remote”,
“data”: {}

Now I only get the following, which is missing the component_id:
“event_type”: “smartthings.button”,
“data”: {
“component_id”: “main”,
“device_id”: “9b0e0155-a9e8-4887-ab4f-80c578dc3937”,
“location_id”: “xx”,
“value”: “pushed”,
“name”: “LR Aeotec Remote”,
“data”: {}

Is there another method I can use to change this parameter such as USB connection to PC. On the Hub I can see these:

They look like all the arameters except #4

I stopped using the ST Hub several months ago, and now use the USB Stick with ZWave2MQTT.

Okay, but why?