Add support for irobot roomba clean specific room

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

  1. Ensure you have Docker installed and running.

  2. Replacing IROBOT_USERNAME and IROBOT_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) and PASSWORD from the output.

  3. Open the iRobot mobile app and start a clean job for a specific room.

  4. 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.CleanShot 2021-09-21 at 12.15.56

  5. Replacing BLID , PASSWORD, and ROBOT_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); });\""
    
  6. Note pmap_id, regions and user_pmapv_id in the output. The regions object will correspond to the room you started the vacuum job for in step #2 above.

  7. Turn back on the “Continuous” setting for the iRobot integration in Home Assistant.

  8. 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
    
17 Likes