What happened
When publishing the documented payload to disable the inching function on a SONOFF S60ZBTPF smart plug, Zigbee2MQTT acknowledges the command (the inching_control_set value appears in the retained state) but the device's internal inching timer is not actually disabled — the relay continues to auto-turn-off after ~11 seconds every time it is switched ON.
This makes the plug unusable for any continuous load (e.g. washing machine, fridge), because power is interrupted every 11s.
What did you expect to happen
After publishing {"inching_control_set":{"inching_control":"DISABLE","inching_time":0.5,"inching_mode":"OFF"}} and then turning the relay ON, the plug should remain ON until commanded OFF.
How to reproduce it (minimal and precise)
- Have an
S60ZBTPF paired to Z2M (firmware 1.0.2, date_code 20250411, manufacturerName SONOFF).
- Publish to
zigbee2mqtt/<name>/set:
{"inching_control_set":{"inching_control":"DISABLE","inching_time":0.5,"inching_mode":"OFF"}}
- Wait 1–2s, publish
{"state":"ON"}.
- Observe: the relay turns ON, then auto-OFF after exactly ~10.9–11.0s. Repeat indefinitely, regardless of LQI (tested on 4 units in different positions, LQI from 21 to 133).
Tried variants (none work):
{"inching_control":"OFF"} (incorrect value name, but tried for completeness)
{"inching_control":"DISABLE"} (flat, no wrapper)
{"inching_control_set":{"inching_control":"DISABLE","inching_mode":"OFF"}} (without inching_time)
{"inching_control_set":{"inching_control":"DISABLE","inching_time":0.5,"inching_mode":"OFF"}} (full payload as documented at https://www.zigbee2mqtt.io/devices/S60ZBTPF.html)
- Repeated retries 5x with delays
- Followed by
device/configure request — no change
The retained state published by Z2M after each set looks like:
[2026-04-26 20:07:40] info: z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/Presa lavatrice', payload '{"...","inching_control_set":{"inching_control":"DISABLE","inching_mode":"OFF"},...,"state":"OFF","update":{"installed_version":4098,"latest_release_notes":null,"latest_source":null,"latest_version":4098,"state":"idle"},...}'
So Z2M echoes the new value into device state, but the next ON cycle still auto-stops at 11s.
inching_control is exposed with access: 2 (write-only), so it's not possible to read the actual value from the device for verification.
Zigbee2MQTT version
2.9.2-1 (Home Assistant addon 45df7312_zigbee2mqtt)
Adapter
HA Yellow integrated radio (Silicon Labs EFR32MG21, ZStack/EmberZNet)
Adapter firmware version
(integrated, controlled by HAOS)
Debug log
(not enabled by default — happy to enable log_level: debug and provide additional cluster-level traces if useful)
Affected devices
4× S60ZBTPF, all firmware 1.0.2, all manifesting the same behavior. endpoint 1 clusters include customClusterEwelink (0xFC11), which I assume is where the inching attribute is supposed to be written.
Note
Documentation example payload at https://www.zigbee2mqtt.io/devices/S60ZBTPF.html does not behave as described — either the converter does not actually emit the right cluster command for this firmware, or the inching_control_set action is not implemented on the write side. Looking at the converter would help confirm whether the write-side is wired up.
Thanks!
What happened
When publishing the documented payload to disable the inching function on a
SONOFF S60ZBTPFsmart plug, Zigbee2MQTT acknowledges the command (theinching_control_setvalue appears in the retained state) but the device's internal inching timer is not actually disabled — the relay continues to auto-turn-off after ~11 seconds every time it is switched ON.This makes the plug unusable for any continuous load (e.g. washing machine, fridge), because power is interrupted every 11s.
What did you expect to happen
After publishing
{"inching_control_set":{"inching_control":"DISABLE","inching_time":0.5,"inching_mode":"OFF"}}and then turning the relay ON, the plug should remain ON until commanded OFF.How to reproduce it (minimal and precise)
S60ZBTPFpaired to Z2M (firmware1.0.2, date_code20250411, manufacturerNameSONOFF).zigbee2mqtt/<name>/set:{"inching_control_set":{"inching_control":"DISABLE","inching_time":0.5,"inching_mode":"OFF"}}{"state":"ON"}.Tried variants (none work):
{"inching_control":"OFF"}(incorrect value name, but tried for completeness){"inching_control":"DISABLE"}(flat, no wrapper){"inching_control_set":{"inching_control":"DISABLE","inching_mode":"OFF"}}(withoutinching_time){"inching_control_set":{"inching_control":"DISABLE","inching_time":0.5,"inching_mode":"OFF"}}(full payload as documented at https://www.zigbee2mqtt.io/devices/S60ZBTPF.html)device/configurerequest — no changeThe retained state published by Z2M after each set looks like:
So Z2M echoes the new value into device state, but the next ON cycle still auto-stops at 11s.
inching_controlis exposed withaccess: 2(write-only), so it's not possible to read the actual value from the device for verification.Zigbee2MQTT version
2.9.2-1(Home Assistant addon45df7312_zigbee2mqtt)Adapter
HA Yellow integrated radio (Silicon Labs EFR32MG21, ZStack/EmberZNet)
Adapter firmware version
(integrated, controlled by HAOS)
Debug log
(not enabled by default — happy to enable
log_level: debugand provide additional cluster-level traces if useful)Affected devices
4× S60ZBTPF, all firmware
1.0.2, all manifesting the same behavior.endpoint 1clusters includecustomClusterEwelink(0xFC11), which I assume is where the inching attribute is supposed to be written.Note
Documentation example payload at https://www.zigbee2mqtt.io/devices/S60ZBTPF.html does not behave as described — either the converter does not actually emit the right cluster command for this firmware, or the
inching_control_setaction is not implemented on the write side. Looking at the converter would help confirm whether the write-side is wired up.Thanks!