iRobot Roomba i7+ Configuration using Rest980

@Syrius, since update to 2024.5 my log file is flooded with error repeating every 3 minutes:

2024-05-02 19:07:29.037 ERROR (MainThread) [homeassistant.components.hassio.handler] Client error on /addons/39c40414_php-nginx/changelog request 0, message='Attempt to decode JSON with unexpected mimetype: application/octet-stream', url=URL('http://172.30.32.2/addons/39c40414_php-nginx/changelog')
2024-05-02 19:07:29.037 WARNING (MainThread) [homeassistant.components.hassio.data] Could not fetch changelog for 39c40414_php-nginx: 

Additionaly at start of HA one time error is logged:

2024-05-02 11:56:35.765 ERROR (MainThread) [homeassistant.components.hassio.handler] Client error on /addons/39c40414_roombapw/changelog request 0, message='Attempt to decode JSON with unexpected mimetype: application/octet-stream', url=URL('http://172.30.32.2/addons/39c40414_roombapw/changelog')
2024-05-02 11:56:35.765 WARNING (MainThread) [homeassistant.components.hassio.data] Could not fetch changelog for 39c40414_roombapw: 

Otherwise eveything seems yo be fine… Any solution, especially to thes repeating ones?

Do you have a robot which supports mapping still? otherwise these automations can be removed as most robots no longer support this.

you might need to indent it to match the other lines - perhaps post your changes (or DM me) so we can review

have you deleted the yaml files? the rest services were created from within the yaml file so if its deleted, it should be removed? maybe use vs code or another code editor to search and see if its listed in a different file?

ive just published updated php-ngninx containers which contain a CHANGELOG file to fix this

1 Like

Perfect! Just installed update and all errors are gone! Thanks a lot for swift support!

1 Like

Does change in file sensor in recent HA 2024.6 make any influence on integration? I’ve seen that notify.vacuumfile sensor was converted automatically during setup and now has unknown value… Any extra steps required to make it working properly?

1 Like

I see this error in the File integration :

No such error in my case (though I removed manually this sensor from vacuum.yaml file):

###################################
# Notify
###################################

notify:
#    - name: VacuumFile
#      platform: file
#      filename: !secret vacuum_log

Yet this might not be the right action as while entity is created, its state remains unknown :frowning:

Add this to configuration.yaml:

homeassistant:
  allowlist_external_dirs:
    - "/config/vacuum"

After restart I created manually a File integration (I deleted it before…):

Like you suggested I removed the sensor in the vacuum.yaml file :

`###################################
# Notify
###################################

notify:
#    - name: VacuumFile
#      platform: file
#      filename: !secret vacuum_log
`

And changed the syntax where the sensor was used f.e. :

#      - service: notify.vacuumfile
#        data_template:
#          message: "{{ states('sensor.vacuum_location') }}"
      - service: notify.send_message
        target: 
          entity_id: notify.vacuumfile
        data:
          message: "{{ states('sensor.vacuum_location') }}"

Sensors are not updating and looking at the Rest980 logs, I am seeing 200 responses. Let me list some of my troubleshooting steps for context.

  1. Looking at devloper/states …

  2. Looking at settings/devices I did have an error in the file integration, added the /config/vacuum/ to it, and got rid of the error. Before doing this the sensors were not updating, but the Lovelace card would show some things but not accurate. After the fix, it now shows unavailable.

  3. This may be more of a question. In the integration, the iRobot is showing up but I have not configured it. I read in the FAQ that it does not play nice with the Rest980, so since I have not configured it, is it an issue? How do I make sure it does not fight us?

Not sure what my next troubleshooting step is, a nudge in some direction would be appreciated. :slight_smile:

edited with more info __________________________________
I used a local browser and hit the state and the response was empty. While other commands, wireless, mission, etc timeout.

edited a second time with more info…
Just out of curiosity, I copied the password from the Rest980 to configure the intergreations and it seemed to work. Then I disabled it.

Thanks for this! I finally got my J9+ roomba in HA controllable!

2 Likes

Im still running 2024.5… so havent hit this issue yet :see_no_evil:

unless you have a robot that still supports mapping, you can remove all references to the vacuum file as its not actually doing anything anymore.

good callout! thanks

running irobot and rest980 at the same time does not work. the robot only supports a single MQTT connection, so if you try then you will get you what are getting, which is just {} as a response

if you still have irobot disabled, try closing the app, and then restart rest980, potentially even a few times until you get data again.

The irobot was just to test the connection. It was rebooted several times. :slight_smile:

Not sure what all happened. Yesterday, 7/4, I deleted everything and reinstalled it and it started working.

I did take screenshots of all the configurations before I removed any of them. The only difference is the password, the BID was the same.
The only difference in the password is the last character. The old one was I and the new one is H. Does the Rest980 return a 200 response even if it can not connect or authenticate? Just strange.
Again, thank you for pulling this all together.

1 Like

@Syrius Something that I just learned in 24.6. They are creating a “notify” entities. They are “phasing in” certain notifications. The file is one that they have done. But not the companion apps, learned that one the hard way. Anyway, in the settings->update section, I got a migrate notify file to notify.send_message. The send_message does not support the data_template: all you have to do is change it to the data: Not sure how well all this is going to work, I will post a sample of my yaml and the reference link that I used for my “assumptions” :slight_smile:

More to the point …

  - alias: Vacuum Log Position
    id: Vacuum Log Position
    initial_state: true
    trigger:
        platform: state
        entity_id: sensor.vacuum_location
    condition: 
      condition: or
      conditions:
        - condition: state
          entity_id: sensor.vacuum
          state: 'Clean'
        - condition: state
          entity_id: sensor.vacuum
          state: 'Train'
    action:
      - service: notify.send_message
        data: 
          entity_id: notify.vacuumfile
          message: "{{ states('sensor.vacuum_location') }}"

Hi,
I am currently trying to configure the Roomba Addon.
I own an i7+ and a house with several floors. The setup instructions only deal with the brava and several floors. I want to use only the i7+ with several floors.
Can anyone help me here? I think the lovelace template has to be adjusted.
Do I add the other rooms on other floors just in the secrets/vacuum.yaml or is additional configuration needed.

Thanks in advance!

thanks for posting - my setup no longer as maps, so ill add these changes but probably comment out all the relevant sections for those to uncomment only if needed for the older models that still support this.

correct, I just added the braava with multiple floors as an example, you can quite easily replace the bravva reference with roomba for this to work just the same.

I can’t get the map or log working.
For the map, when pulling this:
http://192.168.1.90:3001/image.php (3001 is the port for php-nginx)
up directly, I get this:
Warning : file_get_contents(): php_network_getaddresses: getaddrinfo for http failed: Name has no usable address in /config/vacuum/image.php on line 57.

vaccuum.log file is empty

I have ran a full clean room cycle successfully multiple times.

my image.php has this (i removed the long code for the token):

// ADJUST THESE PARAMETERS

#$robot_log = 'http://192.168.1.90:3001/config/vacuum/vacuum.log'; # Could also be HTTPS, or mop.log

$robot_log = 'http://192.168.1.90:3001/vacuum.log'; # Could also be HTTPS, or mop.log

$file_append = ''; # Allows differentiation of files for different floors or robots

$robot_type = 'roomba'; # Select between roomba and braava for different icons

$set_first_coordinate = 3; # Ability to skip initial coordinate(s) if incorrect data logged

$overlay_image = 'floor.png'; # Background Layer

$overlay_walls = false; # Allows overlaying of walls, used in fill mode to cover 'spray'

$walls_image = 'walls.png'; # Walls Image must contain transparent floor

$show_stuck_positions = true;

$line_thickness = 2; # Default 2, Set to ~60 for Fill Mode

$map_width = 1050; # Ensure overlay and wall images match this size

$map_height = 900; # Ensure overlay and wall images match this size

$x_offset = 220;

$y_offset = 220;

$flip_vertical = false;

$flip_horizontal = false;

$render_status_text = true;

$rotate_angle = 0; # Allows rotating of the robot lines

$x_scale=1.00; # Allows scaling of roomba x lines

$y_scale=1.00; # Allows scaling of roomba y lines

$ha_rest980 = 'http://192.168.1.90:8123/api/states/sensor.rest980'; # sensor.rest980_2, if configured for Mop

$ha_token = '< long token code here, not the name of the token>';

$ha_timezone = 'America/Chicago'; # Supported Timezones https://www.php.net/manual/en/timezones.php

$ha_text_delimiter = " \n"; # How text is displayed on the map top " \n" --> New Line ## " |" --> Show on one line

Hey Jeremy @Syrius, first thank you very much for all the work you put into this. I’m one of the (many?) refugees whose iRobot Roomba no longer work on the core roomba integration. I’ve been struggling for months to get it working once again. I stupidly accepted an upgrade robot from the iRobot people, and ever since my integration has been kaput.

So, again, props to you. Looks like a tremendous amount of work.

I’ve just begun attempting to setup your integration. My initial question is simple: is there any reason this wouldn’t work given I’m running HA Yellow? It looks to me from your documentation that you are offering Docker and Addon each as alternatives, rather than requiring both (correct?), and that if I focus on the latter instructions, in theory I should be good to go.

Am I missing anything out of the gate?

this is covered in the intro

thats correct, you can use either the addon or docker - you dont need both.

it should work for you - hopefully!

dont bother with the php addon, and you can delete all the mapping related parts in the yaml/lovelace as this is long gone from working :frowning:

2 Likes

Can someone provide example of script yaml for these commands:

  • pause
  • start
  • stop
  • dock

Hi @kwalkington,

If you are using rest980, these commands can be issued from the local api

To configure these in HA - I use the rest-command integration

Example from vacuum.yaml

Hello altogether,
I am a litte stuck in the rest commands, I managed to initiate the standard commands like start, pause, dock etc for automations, but I need to manage the cleanRoom command which should be available from the local api.
But for whatever reason, this won’t work, logs always says:

Error. Url: /api/local/action/cleanroom. Status code 404. Payload: None

Example of my test in the developers console:

action: rest_command.vacuum_action
data:
  command: cleanroom
  params:
    pmap_id: ***
    user_pmapv_id: ***
    regions:
      - region: "8"
        type: rid

I am quite new to coding and my knowledge is fairly poor, and I guess, I have a mistake somewhere in my thoughts, maybe someone can help me.

What do I want to do with that?
We have cats and when they leave their litter boxes, they have some litter left in their paw and they spread it in the first two rooms they pass.
I want to install a motion sensor and once this is triggered, my vac should clean the rooms closest to the box.

Any suggestions in solving this in using the commands are welcome.

Thanks in advance