I finally got it working so I thought I’d answer my own thread for anyone else that might be interested.
There where two issues with my initial script. First, as @touliloup mentioned, the duration should be set in milliseconds even if the documentation says seconds. Secondly, you need to add different delays to allow the vacuum to be ready for the different steps in the sequence.
I never got xiaomi_remote_control_move_step to work as it seems to have a duration limit of 10 seconds (with or without delays set). However I got the xiaomi_remote_control_move method to work. This is my script now:
vacuum_service_mode:
alias: "Kör fram Gunhild för service"
sequence:
- service: vacuum.xiaomi_remote_control_start
entity_id: vacuum.gunhild
- delay: '00:00:10'
- service: vacuum.xiaomi_remote_control_move
entity_id: vacuum.gunhild
data:
duration: 12000
velocity: 0.2
rotation: 0
- delay: '00:00:13'
- service: vacuum.xiaomi_remote_control_stop
As you can see I had to set a 10 sec delay for the start command to finish. I also had to set a delay after the move command of one second more (just to be safe) before triggering stop.
Thanks @touliloup and @eBoon for you support!