[RELEASE] Neato (Connect) V1.2.6c (Botvac Connected Series)

Thanks for doing all this hard work.

I have a Botvac Connected and when I purchased it they were advertising “soon to have no-go lines…”

Turns out they’re not adding that feature anymore. They’ve moved the Connected to Legacy I suppose.

Any chance we can get no-go lines added for the Botvac Connected? I believe it’s on all the the D3+ series Botvacs.

@Saitac I don’t believe that Neato extended the function to the “Connected” series and only supports on the “D” series. We can’t update the application to do something that the Neato app itself would not be able to do.

I have a D4 that I purchased in March, and have been running this app with no issues until about a week ago. Now my vacuum won’t run on schedule (set to run every night because I dogs). I have tried deleting the app and reinstalling, but it’s still not working. Anyone else have the same issue?

I got a D7 last month. There were some initial problems so I didn’t try to integrate it into smartthings until now. I’ve got the code copied over and oauth is running. Connected to Neato. It showed my D7. The D7 shows on the device list, but when I try to pull up the tiles for “Right Now” it just sits spinning on the loading icon. The status icon on “My Home” update and triggers cleaning. I’m puzzled as to what might be causing this.

Never mind just saw the SmartThings notice about server issues.

I have the same issue. Based on the logs, the Neato rest post command is failing, I suspect they have change their api

Try and renew the OAuth token from within the Neato (Connect) smart app.

I have done that and the rest call is still failing. Note that the device is able to retrieve the map so not all calls to the rest api are failing. The call to ‘getRobotState’ is coming back with the following message from neato server: Could not find robot_serial for specified vendor_name (see logs below)

16:01:22: error Unexpected result in poll(): [404] [message:Could not find robot_serial for specified vendor_name]

16:01:22: debug Beginning API POST: https://nucleo.neatocloud.com:4443/vendors/neato/robots//messages, {“reqId”:“1”, “cmd”:“getRobotState”}

Can you verify the version of the app and device handler?

Hi @Alyc100, first of all, thanks for having developed this awesome app. Thanks to it, I configured my Neato D5 to turn on automatically when everyone leaves the home, using WebCoRE as the main brain behind my smart home. It worked like a charm for the past months.
Yesterday I arrived from a trip and plugged my Neato again, and the (official) app prompted me to update the firmware so I did (:frowning:), I’m not sure if that caused the problem because I didn’t check the status before the firmware upgrade, but after that SmartThings showed my Neato as OFFLINE in red saying something about an invalid serial number. I could see the maps but couldn’t control the vacuum. I tried many things, including deleting the SmartApp and Device Handler completely from my Samsung account and installing everything again, and now I cannot add the SmartApp in SmartThings app. I select it from the marketplace (under My Apps), log in with my Neato credentials, select the robot, but then a red “An unexpected error ocurred” appears on top. I followed the installing steps carefully with no success. I also tried removing the Samsung authorization from the Neato website and allowing the access again, with no success. Any recommendations?
Thanks!
Rodrigo

THanks for you help.

I have checked the version, smartApp is already on latest version but not the device handler. I have updated it. I still see the 404 (not page found) error returned by Neato with the message ‘Could not find robot_serial for specified vendor_name’

I can see the map retrieval is made from a different url and works fine.
https://beehive.neatocloud.com/users/me/robots//maps

Do yo have a developer access with neato? I have the first generation of Bovac connect.

Getting serial or secret is not correct? Haven’t changed anything but I did update the Neato app.
Have I goost it?

Also seeing the “Robot serial and/or secret is not correct - Not Connected To Neato” error. Tried reauthorizing the “Neato (Connect)” app to refresh the OAuth token, I was unable to save from inside there, just “Error saving page” once the BotVacs are selected. Smartapp is v1.2.4b and device handler is v1.12b.

Everything was working as expected on Friday, 2019-08-30, prior to a Neato firmware upgrade from v4.4.1-113 to v4.5.0-179. That upgrade is the only change to the environment prior to this morning when I started troubleshooting why my WebCORE automated cleaning schedule didn’t trigger.

1 Like

I just noticed that it was asking me to upgrade the firmware, Im going to wait. Can anyone who has updated send the log files from the ide?

Sanitized log below, this is after removing all devices and the “Neato (Connect)” SmartApp and starting from scratch. Anything that appeared to be sensitive has been replaced with two upper-case X. Let me know if more info or unsanitized logging is needed, I can provide it via PM, GitHub private gist, etc.

XX  3:05:20 PM: debug getChildDevices(false), children=0
XX  3:05:20 PM: info Uninstalling, removing child devices...
XX  3:05:16 PM: debug selectors: [OPS44217-XX|XX, OPS38318-XX|XX]
XX  3:05:15 PM: debug Executing 'updateDevices'
XX  3:05:16 PM: debug Beginning API GET: https://beehive.neatocloud.com/users/me/robots, [Accept:application/vnd.neato.nucleo.v1, Content-Type:application/*+json, X-Agent:0.11.3-142, Authorization:Bearer XX]
XX  3:05:15 PM: debug Executing 'addBotvacs'
XX  3:05:09 PM: info Status: 200
XX  3:05:09 PM: debug Beginning API GET: https://beehive.neatocloud.com/users/me/robots, [Accept:application/vnd.neato.nucleo.v1, Content-Type:application/*+json, X-Agent:0.11.3-142, Authorization:Bearer XX]
XX  3:05:09 PM: debug Executing 'updateDevices'
XX  3:05:09 PM: info Adding Neato Botvac device OPS44217-XX|XX: Neato Botvac - XX
XX  3:05:09 PM: debug getChildDevices(false), children=0
XX  3:05:09 PM: info Body: [[firmware:4.5.0-179, linked_at:2019-08-30T16:49:14Z, model:BotVacD3Connected, name:XX, nucleo_url:https://nucleo.neatocloud.com:4443, prefix:null, purchased_at:null, secret_key:XX, serial:OPS44217-XX, timezone:America/Phoenix, traits:[maps, persistent_maps]], [firmware:4.5.0-179, linked_at:2019-08-30T16:51:55Z, model:BotVacD5Connected, name:XX, nucleo_url:https://nucleo.neatocloud.com:4443, prefix:null, purchased_at:null, secret_key:XX, serial:OPS38318-XX, timezone:America/Denver, traits:[maps, persistent_maps]]]
XX  3:05:09 PM: error org.springframework.dao.DataIntegrityViolationException: Could not execute JDBC batch update; SQL [insert into device (version, completed_setup, component_label, component_name, date_created, device_network_id, error_state, firmware_version_id, group_id, handler_version, hub_id, is_component, join_fingerprint_id, label, last_updated, location_id, name, parent_device_id, parent_smart_app_id, previous_handler, previous_zigbee_id, primary_tile_name, profile_id, profile_type, protocol_connection, raw_description, sort_order, type_id, virtual_smart_app_id, zigbee_id, id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]; nested exception is org.hibernate.exception.DataException: Could not execute JDBC batch update @line 678 (doCall)
XX  3:05:09 PM: debug Installed with settings: [selectedBotvacs:[OPS44217-XX|XX, OPS38318-XX|XX]]
XX  3:05:04 PM: debug selectors: [OPS44217-XX|XX, OPS38318-XX|XX]
XX  3:05:04 PM: debug Executing 'updateDevices'
XX  3:04:57 PM: debug getChildDevices(false), children=0
XX  3:04:57 PM: debug selectors: [OPS44217-XX|XX, OPS38318-XX|XX]
XX  3:04:57 PM: info Body: [[firmware:4.5.0-179, linked_at:2019-08-30T16:49:14Z, model:BotVacD3Connected, name:XX, nucleo_url:https://nucleo.neatocloud.com:4443, prefix:null, purchased_at:null, secret_key:XX, serial:OPS44217-XX, timezone:America/Phoenix, traits:[maps, persistent_maps]], [firmware:4.5.0-179, linked_at:2019-08-30T16:51:55Z, model:BotVacD5Connected, name:XX, nucleo_url:https://nucleo.neatocloud.com:4443, prefix:null, purchased_at:null, secret_key:XX, serial:OPS38318-XX, timezone:America/Denver, traits:[maps, persistent_maps]]]
XX  3:04:57 PM: info Status: 200
XX  3:04:57 PM: debug Beginning API GET: https://beehive.neatocloud.com/users/me/robots, [Accept:application/vnd.neato.nucleo.v1, Content-Type:application/*+json, X-Agent:0.11.3-142, Authorization:Bearer XX]
XX  3:04:57 PM: debug Executing 'updateDevices'
XX  3:04:53 PM: debug Beginning API GET: https://beehive.neatocloud.com/users/me/robots, [Accept:application/vnd.neato.nucleo.v1, Content-Type:application/*+json, X-Agent:0.11.3-142, Authorization:Bearer XX]
XX  3:04:53 PM: debug selectors: [OPS44217-XX|XX, OPS38318-XX|XX]
XX  3:04:53 PM: info Body: [[firmware:4.5.0-179, linked_at:2019-08-30T16:49:14Z, model:BotVacD3Connected, name:XX, nucleo_url:https://nucleo.neatocloud.com:4443, prefix:null, purchased_at:null, secret_key:XX, serial:OPS44217-XX, timezone:America/Phoenix, traits:[maps, persistent_maps]], [firmware:4.5.0-179, linked_at:2019-08-30T16:51:55Z, model:BotVacD5Connected, name:XX, nucleo_url:https://nucleo.neatocloud.com:4443, prefix:null, purchased_at:null, secret_key:XX, serial:OPS38318-XX, timezone:America/Denver, traits:[maps, persistent_maps]]]
XX  3:04:53 PM: debug RedirectUrl = https://graph.api.smartthings.com/oauth/initialize?appId=XX&access_token=XX&apiServerUrl=https://graph-na04-useast2.api.smartthings.com:443
XX  3:04:53 PM: info Status: 200
XX  3:04:53 PM: debug authPage()
XX  3:04:53 PM: debug authPage()
XX  3:04:50 PM: debug callback()>> params: [apiServerUrl:https://graph-na04-useast2.api.smartthings.com:443, proxied:true, appId:XX, origin:https://graph.api.smartthings.com:443, state:XX, authQueryString:appId=XX&access_token=XX&apiServerUrl=https://graph-na04-useast2.api.smartthings.com:443, code:XX, controller:OAuthApi, access_token:XX], params.code XX
XX  3:04:26 PM: debug oauthInitUrl with callback: https://graph.api.smartthings.com/oauth/callback
XX  3:04:23 PM: debug RedirectUrl = https://graph.api.smartthings.com/oauth/initialize?appId=XX&access_token=XX&apiServerUrl=https://graph-na04-useast2.api.smartthings.com:443
XX  3:04:23 PM: debug authPage()

Have you selected any of the devices from the smart app, I’m seeing the following:

XX 3:04:57 PM: debug getChildDevices(false), children=0

It fails saving after selecting devices with an error in the SmartApp - “Error saving page”. The XX 3:05:09 PM: error org.springframework.dao.DataIntegrityViolationException appeared at the same time.

Looking into it now. Will update when i find out what’s going on.

Fixed!

Please do the following steps:

  1. Remove all Neato device smart app dependencies.
  2. Remove Neato devices.
  3. Update SmartApp to Neato (Connect) v1.2.5 and Device Handler to Neato Connected Series v1.13 from Github.
  4. Re-add your Neato Botvacs.
  5. Reconfigure your SmartSchedules as they probably will be deleted.

Let me know if that works.

For those that are interested, the new firmware seems to generate a very long secret key that cannot be stored as the device network id in SmartThings so you get the database error when the SmartApp tried to add the new secret key to the existing device.

2 Likes

My Neato robot is working again with WebCoRE, thank you!

Did you make any code changes?