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_USERNAME
andIROBOT_PASSWORD
with 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) andPASSWORD
from 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_IP
with 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
,regions
anduser_pmapv_id
in the output. Theregions
object 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_command
in 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