This is possible with the official iRobot integration. You just have to do a little upfront work to get it to work and then call service: vacuum.send_command.
Instructions
-
Ensure you have Docker installed and running.
-
Replacing
IROBOT_USERNAMEandIROBOT_PASSWORDwith your iRobot cloud credentials, run the following:docker run -it node sh -c "npm install -g dorita980 && get-roomba-password-cloud IROBOT_USERNAME IROBOT_PASSWORD"Note your
BLID(username) andPASSWORDfrom the output. -
Open the iRobot mobile app and start a clean job for a specific room.
-
Close the iRobot mobile app and temporarily turn off the “Continuous” setting for the iRobot integration in Home Assistant. This will ensure nothing is connecting locally to the Roomba.

-
Replacing
BLID,PASSWORD, andROBOT_IPwith your own values, run the following:docker run -e BLID='1B166A0FNOTREALA9B1FA' -e PASSWORD=':1:1706623241:NOTREALUmdqQ' -e ROBOT_IP='192.168.1.78' -it -w /root node sh -c "npm install --silent --no-progress dorita980 && node -e \"var dorita980 = require('dorita980'); var robot = new dorita980.Local(process.env.BLID, process.env.PASSWORD, process.env.ROBOT_IP); robot.getRobotState(['lastCommand']).then((st)=> { console.log(st.lastCommand); process.exit(0); });\"" -
Note
pmap_id,regionsanduser_pmapv_idin the output. Theregionsobject will correspond to the room you started the vacuum job for in step #2 above. -
Turn back on the “Continuous” setting for the iRobot integration in Home Assistant.
-
Call the
vacuum.send_commandin Home Assistant using the following format:service: vacuum.send_command data: entity_id: vacuum.roombie command: start params: pmap_id: ohG_V5NOTREALRnAvsFkqw regions: - region_id: '27' type: rid user_pmapv_id: 1105NOTREAL07