Sonoff SWV water valve - auto-turn-off

ok thanks.
I just installed Home Assitant and added the device. Now how can I update its firmware ?

Confirmed, once the OTA settings in configuration.yaml are done, this device does need the extra things set using ZHA toolkit for ZHA to pick up the firmware

I can confirm that MaikaiLife Shaun’s method works correctly on Home Assistant 2025.12.3 after installing the ZHA Toolkit integration through HACS.

Just did the update config as mentioned above and after a restart of HA the update was already listed. The extra step with ZHA toolkit seems not to be required any more with 2026.4.2.

Hi there,

Does anyone know if it’s possible to configure the ā€œInchingā€ setting to automatically close the valve after xyz time?

I’m using the zha integration in home assistant, with the latest firmware version. In the UI … I only see the ā€œWater shortage auto-closeā€ switch. As it seems from this post (submittion) … the Zigbee2Mqtt has by far more options … but I’m wondering if we can send a command via the developer tools, like the one for updating the firmware to setup the inching mode and make the device to switch off on its own.

PS: I have a sonoff USB stick connected to home assistant, so I think can’t use the sonoff app to configure the valve unfortunatelly.

I can't seem to get the valve to turn on using this script, can anyone take a peek at it and let me know if there's an obvious reason why the script doesn't work? I can trigger the valve from HA directly, and it is set up with Zigbee2MQTT.

alias: Water the lawn (10 Minutes)
description: >-
  Directly runs the lawn sprinkler for 10 minutes using hardware-timed
  irrigation.
sequence:
  - action: notify.pushover
    data:
      message: Starting 10-minute watering cycle.
      title: Watering the lawn
  - action: mqtt.publish
    data:
      topic: zigbee2mqtt/backyard_lawn_smart_water_valve/set
      payload: |
        {
          "cyclic_timed_irrigation": {
            "current_count": 1,
            "total_number": 1,
            "irrigation_duration": 600,
            "irrigation_interval": 1
          }
        }
mode: single

My 5 min timer script for the Sonof is as follows

action: mqtt.publish
data:
  evaluate_payload: false
  qos: 0
  topic: zigbee2mqtt/Sonoff SWV/set
  payload: "{\"state\" : \"ON\", \"on_time\": 300}"

As I read it, the "irrigation_duration" setting is the time used for scheduled irrigation (automatic daily from within the Sonoff device /app itself)

I don't own one, but I think that's your problem. If the current_count = total_number, it means the max number of cycles has been reached so it won't run. Try setting "current_count": 0 instead (or leave as is and set "total_number": 2)

I figured it out by watching the Z2MQTT log... I had the wrong entity ID for the SWV. I must have renamed it at somepoing... really dumb on my part. It seems to work regardless of whether the current_count was set to 0 or 1... I haven't tested to see if setting it to 0 effectively makes it run twice... I will test that and update this later.