Building up a new OH 5.0.1 system. Got an Aeotec Z-Stick 10 Pro. Decided to switch over to the JS UI binding. Got the nanomote quad added but it doesn’t behave nearly as well as it did on my old setup. These events were me clicking on the four buttons sequentially and then going through it a second time. Only on button 4 (the middle one) did it see a button press. All the other presses only triggered the battery state. I do have all four button items linked:
```
2025-10-07 11:12:18.345 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item ‘Nanomote_LR_Battery’ changed from 95 % to 94 %
2025-10-07 11:12:20.433 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item ‘Nanomote_LR_Battery’ changed from 94 % to 95 %
2025-10-07 11:12:23.076 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item ‘Nanomote_LR_Battery’ changed from 95 % to 94 %
2025-10-07 11:12:23.540 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item ‘Nanomote_LR_B4’ changed from 1 to 0
2025-10-07 11:12:27.093 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item ‘Nanomote_LR_Battery’ changed from 94 % to 95 %
2025-10-07 11:15:01.936 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item ‘Nanomote_LR_Battery’ changed from 95 % to 93 %
2025-10-07 11:15:04.660 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item ‘Nanomote_LR_Battery’ changed from 93 % to 96 %
2025-10-07 11:15:06.255 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item ‘Nanomote_LR_Battery’ changed from 96 % to 94 %
2025-10-07 11:15:08.093 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item ‘Nanomote_LR_Battery’ changed from 94 % to 89 %
I have two nanomote quads connected via Z-wave-js-ui, and they both work as expected. You didn’t share your thing, channel, or link configurations, but I strongly suspect that the issue is somewhere in there.
In the OH Zwave configuration all scene modifying buttons are aggregated into one channel which proves the scene number as the integer and the button action as a decimal. With Zwave-js-ui each of the scene buttons is it’s own channel that just reports the button action. Some user have chosen to reconfigure how they are using the scene buttons and have individual items for each scene. I preferred, instead, to keep my other configurations the same and I have a profile that connects all four scene channels to the same item and formats the item state in the same way as the Z-wave binding.
Getting distracted with real work stuff but I will get back on this in the next day or two. What’s the best to retrieve the details about the thing and items?
I have a second quad that’s still working on my old setup through the standard zwave binding so I can compare that setup if it might reveal any clues. For all I know I could have had both setup to work but not in the best config.
For UI managed things and items, just go to the code tab for each of the configurations and paste the yaml version of the configuration. For channels and links it’s a little harder but you post one demonstration screen shot and the just double check for yourself that the others are all similarly configured.
For text config, just paste those thing config lines and the items (with the channel links).
Honestly it looks like there’s just a small issue where you’ve linked the battery channel to each of the items instead of changing each of the links to the correct channel (cut and paste error?) so just trying to rule that out first before going into anything more technical. The other option is that something went wrong reading the thing config during the initial install of the thing which is where seeing if your thing config matches what’s expected will help.
UID: zwavejs:node:wopr3:Nanomote_LR
label: Nanomote LR
thingTypeUID: zwavejs:node
configuration:
id: 19
configuration-low-battery-buzzer: 0
wake-up-wake-up-interval: 0
configuration-multilevel-command-duration: 255
configuration-level-of-low-battery: 20
wake-up-controller-node-id: 1
bridgeUID: zwavejs:gateway:wopr3
location: Living Room
channels:
- id: central-scene-slow-refresh
channelTypeUID: zwavejs:c546973fb1a1ddbd38cdf0f5ed9b0a01
label: Send Held Down Notifications At A Slow Rate
configuration:
writePropertyStr: slowRefresh
endpoint: 0
commandClassId: 91
commandClassName: Central Scene
factor: 1
inverted: false
- id: central-scene-scene-001
channelTypeUID: zwavejs:cf1fd28a8c9930fbffd9f3b355d892ea
label: Scene 001
configuration:
propertyKeyStr: "001"
endpoint: 0
readProperty: scene
commandClassId: 91
commandClassName: Central Scene
factor: 1
inverted: false
- id: battery-level
channelTypeUID: zwavejs:3df7dca5721df41f12c58095d481acf7
label: Battery Level
configuration:
incomingUnit: "%"
endpoint: 0
readProperty: level
commandClassId: 128
commandClassName: Battery
factor: 1
inverted: false
- id: central-scene-scene-002
channelTypeUID: zwavejs:cf1fd28a8c9930fbffd9f3b355d892ea
label: Scene 002
configuration:
propertyKeyStr: "002"
endpoint: 0
readProperty: scene
commandClassId: 91
commandClassName: Central Scene
factor: 1
inverted: false
- id: central-scene-scene-003
channelTypeUID: zwavejs:cf1fd28a8c9930fbffd9f3b355d892ea
label: Scene 003
configuration:
propertyKeyStr: "003"
endpoint: 0
readProperty: scene
commandClassId: 91
commandClassName: Central Scene
factor: 1
inverted: false
- id: central-scene-scene-004
channelTypeUID: zwavejs:cf1fd28a8c9930fbffd9f3b355d892ea
label: Scene 004
configuration:
propertyKeyStr: "004"
endpoint: 0
readProperty: scene
commandClassId: 91
commandClassName: Central Scene
factor: 1
inverted: false
On my older setup that I’m migrating from:
UID: zwave:device:wopr:node40
label: NanoMote P
thingTypeUID: zwave:aeotec_zwa003_00_000
configuration:
config_32_1: 20
config_43_1: 0
group_9: []
group_8: []
group_5: []
group_4: []
group_7: []
group_6: []
wakeup_interval: 0
group_1:
- controller
binding_pollperiod: 10800
group_3: []
group_2: []
wakeup_node: 1
node_id: 40
bridgeUID: zwave:serial_zstick:wopr
channels:
- id: switch_dimmer
channelTypeUID: zwave:switch_dimmer
label: Dimmer
description: The brightness channel allows to control the brightness of a light.
It is also possible to switch the light on and off.
configuration:
config_restorelastvalue: true
- id: scene_number
channelTypeUID: zwave:scene_number
label: Scene Number
description: Triggers when a scene button is pressed
configuration: {}
- id: battery-level
channelTypeUID: system:battery-level
label: Battery Level
description: Battery level as a percentage (0-100%)
configuration: {}
I’ve linked the 4 scene items and the battery level. I can sometimes get an event that the scene changed from NULL to 0, but after that first event for the item they stop showing up. I get the battery state with almost every button press. These four events are me pressing the buttons in sequence 1 through 4, had to press 4 twice before the battery level showed up.
2025-10-09 15:54:09.073 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Nanomote_LR_Battery' changed from 79 % to 75 %
2025-10-09 15:54:12.101 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Nanomote_LR_Battery' changed from 75 % to 78 %
2025-10-09 15:54:15.016 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Nanomote_LR_Battery' changed from 78 % to 80 %
2025-10-09 15:54:22.083 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Nanomote_LR_Battery' changed from 80 % to 72 %
Your thing configuration looks correct. If you are sure that your items are linked to the correct channels then I see only two likely possibilities. 1) The nanomote is not fully configured in Zwave-js-ui or 2) sometimes things don’t update properly when you update a binding if there’s a big change in the way the binding handles the thing?
Have you tried deleting the thing and re-adding it? (As long as you create the thing with the same thing ID you won’t have to change anything else the channels will reconnect correctly.)
Do you see the button endpoints correctly change in the zwave-js-ui interface when clicking? (If not you could try to use the “re-interview node” commend in zwave-js-ui to see if you can get the proper behavior there.)
So I excluded it from the network, and re-included with no security. (I’ve seen more than a few references that security can cause some issues.)
The behavior seems to be pretty much the same. Button presses only trigger an event of “changed from NULL to 0” for the four buttons. Battery seems to come across on most all button presses, but not 100%.
Seems like once the state is set with a button press it never sees any changes.
UID: zwavejs:node:wopr3:Nanomote_LR
label: Nanomote LR
thingTypeUID: zwavejs:node
configuration:
id: 21
configuration-low-battery-buzzer: 0
wake-up-wake-up-interval: 0
configuration-multilevel-command-duration: 255
configuration-level-of-low-battery: 20
wake-up-controller-node-id: 1
bridgeUID: zwavejs:gateway:wopr3
channels:
- id: central-scene-slow-refresh
channelTypeUID: zwavejs:c546973fb1a1ddbd38cdf0f5ed9b0a01
label: Send Held Down Notifications At A Slow Rate
configuration:
endpoint: 0
writePropertyStr: slowRefresh
commandClassId: 91
commandClassName: Central Scene
factor: 1
inverted: false
- id: central-scene-scene-001
channelTypeUID: zwavejs:cf1fd28a8c9930fbffd9f3b355d892ea
label: Scene 001
configuration:
propertyKeyStr: "001"
endpoint: 0
readProperty: scene
commandClassId: 91
commandClassName: Central Scene
factor: 1
inverted: false
- id: battery-level
channelTypeUID: zwavejs:3df7dca5721df41f12c58095d481acf7
label: Battery Level
configuration:
incomingUnit: "%"
endpoint: 0
readProperty: level
commandClassId: 128
commandClassName: Battery
factor: 1
inverted: false
- id: central-scene-scene-002
channelTypeUID: zwavejs:cf1fd28a8c9930fbffd9f3b355d892ea
label: Scene 002
configuration:
propertyKeyStr: "002"
endpoint: 0
readProperty: scene
commandClassId: 91
commandClassName: Central Scene
factor: 1
inverted: false
- id: central-scene-scene-003
channelTypeUID: zwavejs:cf1fd28a8c9930fbffd9f3b355d892ea
label: Scene 003
configuration:
propertyKeyStr: "003"
endpoint: 0
readProperty: scene
commandClassId: 91
commandClassName: Central Scene
factor: 1
inverted: false
- id: central-scene-scene-004
channelTypeUID: zwavejs:cf1fd28a8c9930fbffd9f3b355d892ea
label: Scene 004
configuration:
propertyKeyStr: "004"
endpoint: 0
readProperty: scene
commandClassId: 91
commandClassName: Central Scene
factor: 1
inverted: false
Scenes work differently in zwave-js than in the OH ZW binding. Generally the topic is null and momentarily changes but returns to null. I don’t have this device, but one press can mean 0, press and hold 1, double press 2, etc. Also not using zwave-js binding at this moment but using zwave-js via generic Mqtt things I need to use String items. Don’t know if that is the case with the zwave-js OH binding. I had trouble with Number items because of the null. For instance, if you press once and get 0 with a number item, OH rejects the null update, so the item stays a 0. If you have a rule that uses “changed to” it will not be triggered. As @JustinG suggested look at the ZUI Central Scene Section while pressing the button.
Edit: Just freshed my memory. I reset the string to ““
when
Item Key_Fob_Scene_Two_Text changed to "0"
then
// Do stuff
Key_Fob_Scene_Two_Text.postUpdate("")
end
I use number items, and also did when I had zwjsui connected via MQTT. But, the way I aggregate the multiple different scene channels into something akin to the old zwave single scene channel probably masks any misbehavior, so I don’t know if string items would make this more reliable. (And my scene button rules have always used update instead of changed, again going back to the original Zwave binding.)
Unless you have changed the logging, item updates (with no change in state) are filtered out of the event logs. I think that is what this means in the log4j2.xml
Single clicks on the nanomote are working. I figure hold and release can similarly work if I need to set that sequence as a trigger.
I dug back into this and figured out I have to set the state for each button to 99 (or anything not 0, 1 or 2) at the end of any rule. This seems to insure that any subsequent button presses will always show up and be usable as a trigger.