iRobot Roomba MQTT dock command is silently ignored during active cleaning (run phase). Use when: (1) dock commands return ok but robot keeps cleaning, (2) repeated dock calls have no effect, (3) dorita980 dock not working. Must send stop first, wait 2s, then dock.
iRobot's local MQTT API (used by dorita980) silently ignores dock commands while the robot is in the active run phase. The command returns {"ok":null} (success) but the robot continues cleaning. This caused a dog walk return monitor to loop infinitely — detecting return, sending dock, robot ignoring it, detecting return again.
phase: "run" and operatingMode: 6 (active cleaning)dock commands via dorita980 return {"ok":null} but robot continuesAlways send stop before :
dockstop commandrun to stop phase)dock commandIn the crosstown-roomba wrapper:
if [[ "$action" == "dock" ]]; then
run_one "$robot" "stop" >/dev/null 2>&1 || true
sleep 2
fi
run_one "$robot" "$action"
After stop+dock, check status — phase should transition from run → stop → hmUsrDock (returning to dock).
stop command itself always works, even during active cleaning