Zigbee2MQTT - Controlling water valves but with unwanted auto-off behavior

I am trying to use some Moes ZWV-YC water valves with home assistant and zigbee2mqtt, I have added them to my z2m and am able to switch them on and off, as well as view their battery level. However they are showing some unwanted behavior where they always seem to switch themselves off 10 minutes after I switch them on.

This happens whether I use the device on/off switch in HA, or if I use the on/off in zigbee2MQTT WebUI on the device’s ‘exposes’ tab. Also if I publish a message to MQTTExplorer for the topic: zigbee2mqtt/watering_hose_2/set with payload: { "state": "ON" }

The devices are documented here:

The documentation says that “When setting the state to ON, it might be possible to specify an automatic shutoff after a certain amount of time. To do this add an additional property on_time to the payload which is the time in seconds the state should remain on…”

When I look at the ‘Exposes’ tab for the device on the zigbee2mqtt web ui, it only shows Battery, State and LinkQuality.

So I tried sending a command to the device with the dev console (I am not experienced with this stuff, used chatgpt to help with the hex codes, and trial and error to get the correct ontime and offwaittime field names)

Using the dev console to send such a message to cluster 0x0006 and command 0x42 with payload

{"ctrlbits": 0, "state" : "ON", "ontime": 300, "offwaittime": 120}

But the state does not change to ON. I am not sure whether these ontime or offwaittime are really supported, however if I just send the state:ON in the payload, I get an error back that the ontime and offtime parameters are missing.

I have also tried to publish a message to MQTTExplorer for the topic: zigbee2mqtt/watering_hose_2/set with payload: { "state": "ON", "on_time": 60 } (intending for 60 seconds) - this command has no effect. However if I change the payload to { "state": "ON", "ontime": 60 } then actually it does switch ON, but remains on for 10 minutes before switching off, so it just disregards the ontime.

Anyway, since I was stuck here, I tried writing a script that would send another ON message to the device after 9 minutes in the hope that it would reset the built in 10 minute OFF timer on the device.

Again, this didn’t work either. The messages were sent, but the device still switched itself off 10 minutes after the initial ON message.

The log output is as follows:

info 2025-05-14 15:52:36z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/watering_hose_1', payload '{"battery":47,"linkquality":255,"state":"ON"}'
info 2025-05-14 16:01:36z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/watering_hose_1', payload '{"battery":47,"linkquality":255,"state":"ON"}'
info 2025-05-14 16:02:36z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/watering_hose_1', payload '{"battery":47,"linkquality":255,"state":"OFF"}'

In the above, the ON messages correspond to my attempts to switch the device to ON, while the OFF message does not relate to any action in HA or z2m, so I can only assume it’s the device sending this. Note that it’s exactly 10min after the on message.

So now I am a bit stuck. The valves turning themselves off was not something I had expected, and it’s a problem for me, because I have a zigbee controlled electric pump supplying water to the system, so it’s bad for the pump and for my connections that the valves can just close themselves when they want.

What can I do? I don’t actually want to use on with timed off at all. Most of all I just wish that these valves would just stay on when I send them a command to be on, it seems like madness that they insist on only staying on for only 10 minutes.

My HA version info is:
Core 2025.4.4
Supervisor 2025.05.1
Operating System 15.2
Frontend 20250411.0
Zigbee2Mqtt version: 2.3.0-1

2 Likes

@fergus3000 did you find anything on this?
I am facing exactly the same issue.

What question did you pose to ChatGPT?