benjaminpaap / home-assistant-myneato Goto Github PK
View Code? Open in Web Editor NEWHome Assistant integration to control a neato vacuum robot from D8 and up using the MyNeato App
Home Assistant integration to control a neato vacuum robot from D8 and up using the MyNeato App
First, thank you for working on this, nice to see some support for the D8/D9/D10's.
Second, I have a D10, was able to add it just fine, however, I'm only seeing (1) entity, and that's the battery level. Shouldn't see a bit more than that, like schedules, camera/map, etc? and have options to trigger/stop cleaning? (current status?)
Hi,
Thanks for this great integration!
I own a D8 and after a year owning it I finally saw this repository.
Installation and login into myneato went flawlessly
Controlling the vacuum is also without without problems.
But is there a way seeing the floorplan in home assistant?
Thanks!
v0.0.5
Neato D8 Vacuum
Having some issues that appear to be related to retrieval of floorplans.
The vacuum is responsive to commands on a reboot or re-initialization of the integration. I'm able to call the service direct from HA. However, once the vacuum completes one command and returns to the dock, it appears to somehow lose the original floorplan (or that's my guess), resulting in this error on any call utilizing the myneato.custom_cleaning service:
File "/config/custom_components/myneato/vacuum.py", line 397, in myneato_custom_cleaning
floorplan = self._floorplans.pop()
IndexError: pop from empty list
If I attempt to run a full clean with the simple start service it throws a slightly different, but seemingly related, error:
File "/config/custom_components/myneato/vacuum.py", line 326, in start
self.robot.start_cleaning(self._floorplans[0])
IndexError: list index out of range
Really appreciate the work on this, happy to work with any suggestions or provide whatever additional information is useful. -TIA
I just added this integration while my robot was mid-clean and it seems to error out on a missing state cleaning_standby
. I can submit a PR if that would be preferred.
myneato: Error on device update!
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 575, in _async_add_entity
await entity.async_device_update(warning=False)
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 961, in async_device_update
await hass.async_add_executor_job(self.update)
File "/usr/local/lib/python3.11/concurrent/futures/thread.py", line 58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/myneato/vacuum.py", line 156, in update
self._state = self.robot.state
^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/pyneato/robot.py", line 316, in state
return self.get_state()
^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/pyneato/robot.py", line 262, in get_state
RobotActionEnum(json["action"]),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/enum.py", line 712, in __call__
return cls.__new__(cls, value)
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/enum.py", line 1135, in __new__
raise ve_exc
ValueError: 'cleaning_standby' is not a valid RobotActionEnum
Has anybody found a " local" option I still like my D7 to run on schedule and don't care much about maps etc..
i want to change the default mode for my D9 from ECO to Turbo. but i cant
Love the project real life saver
I was able to add my vacuums without issue to home assistant using this integration, I added cards to my desktop and can see the status/battery life information. However when I try to run any commands I receive an error "Failed to Call Service Vacuum/Start. List index is out of range. Pressing the locate button works and makes the vacuum ping itself so I can find it But start does not work.
I have ran the vacuum in the neato phone app and that works without issue.
I do have two vacuums added to home assistant using two different neato accounts since their app only allows one vacuum per account. My models are D8 and D10.
Thanks
Firstly, I'd just like to say thank you for putting your time into making this custom component, really isnfar better to be able to use my D10 through HA rather than the app.
I haven't had time to look in detail into it yet however there seems to be an issue with the D10 thinking it's state is cleaning even though it's in an Error state? Had this for a stuck brush, stuck wheel and uneven drop (still setting up for life with a robot vacuum hence the issues).
Great work regardless of the issues.
Hi, thanks for the integration, but I get the error below from HA when I try to add my device :
Logger: homeassistant.config_entries
Source: util/async_.py:168
First occurred: 1:49:57 AM (2 occurrences)
Last logged: 1:52:20 AM
Error setting up entry MyNeato for myneato
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/config_entries.py", line 365, in async_setup
result = await component.async_setup_entry(hass, self)
File "/config/custom_components/myneato/__init__.py", line 59, in async_setup_entry
await hub.update_floorplans()
File "/config/custom_components/myneato/hub.py", line 31, in update_floorplans
for floorplan in self.account.floorplans:
File "/usr/local/lib/python3.10/site-packages/pyneato/account.py", line 96, in floorplans
self.refresh_floorplans()
File "/usr/local/lib/python3.10/site-packages/pyneato/account.py", line 159, in refresh_floorplans
self.get_floorplan(robot)
File "/usr/local/lib/python3.10/site-packages/pyneato/account.py", line 164, in get_floorplan
resp = self._session.get("/robots/%s/floorplans"%robot.id)
File "/usr/local/lib/python3.10/site-packages/pyneato/session.py", line 99, in get
response = requests.get(url, headers=headers, **kwargs)
File "/usr/local/lib/python3.10/site-packages/requests/api.py", line 73, in get
return request("get", url, params=params, **kwargs)
File "/usr/local/lib/python3.10/site-packages/requests/api.py", line 59, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/local/lib/python3.10/site-packages/requests/sessions.py", line 587, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python3.10/site-packages/requests/sessions.py", line 701, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python3.10/site-packages/requests/adapters.py", line 489, in send
resp = conn.urlopen(
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 703, in urlopen
httplib_response = self._make_request(
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 398, in _make_request
conn.request(method, url, **httplib_request_kw)
File "/usr/local/lib/python3.10/site-packages/urllib3/connection.py", line 239, in request
super(HTTPConnection, self).request(method, url, body=body, headers=headers)
File "/usr/local/lib/python3.10/http/client.py", line 1282, in request
self._send_request(method, url, body, headers, encode_chunked)
File "/usr/local/lib/python3.10/http/client.py", line 1293, in _send_request
self.putrequest(method, url, **skips)
File "/usr/local/lib/python3.10/site-packages/urllib3/connection.py", line 219, in putrequest
return _HTTPConnection.putrequest(self, method, url, *args, **kwargs)
File "/usr/src/homeassistant/homeassistant/util/async_.py", line 180, in protected_loop_func
check_loop(func, strict=strict)
File "/usr/src/homeassistant/homeassistant/util/async_.py", line 168, in check_loop
raise RuntimeError(
RuntimeError: Blocking calls must be done in the executor or a separate thread; Use `await hass.async_add_executor_job()`; at custom_components/myneato/hub.py, line 31: for floorplan in self.account.floorplans:
Not sure if it is a bug or am I using wrong version of HA.
Thank you for doing this work - it's awesome!
On my D9 I can't seem to get "Zone cleaning" from HA working.
I am testing use a HA Script, seen below.
vacuum.ursulaservice: myneato.custom_cleaning
data:
mode: eco
zone: Living Room
target:
entity_id: vacuum.ursula`
And I have defined "Living Room" as an area to be cleaned in the Neato app.
Am I doing something wrong, is this not supported or is it a bug?
From this comment it seems like I'm doing something wrong?
#2 (comment)
I'm not much of a developer myself, but I'll be happy to test stuff.
Hi, I'm also using your integration for the botvac D8, works like a charm! sofar, very happy with this integration. I willing to help you testing and troubleshoot any bugs. guide me on what logging you need. At the moment the turbo function is not working for the D8.
I think this has to do with the json schema, the D8 does not have three but just two cleaning modes: 'eco' and 'turbo', it has no 'max' mode
Thank you very much for your work on this! However, I'm struggling to add my D10. After adding the integration and logging in to my account I get this error and am unable to add any entities:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/config_entries.py", line 365, in async_setup
result = await component.async_setup_entry(hass, self)
File "/config/custom_components/myneato/init.py", line 59, in async_setup_entry
await hub.update_floorplans()
File "/config/custom_components/myneato/hub.py", line 32, in update_floorplans
await self._hass.async_add_executor_job(
File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run
result = self.fn(*self.args, **self.kwargs)
File "/usr/local/lib/python3.10/site-packages/pyneato/floorplan.py", line 76, in refresh_tracks
cleaning_mode = CleaningModeEnum(track["cleaning_mode"])
File "/usr/local/lib/python3.10/enum.py", line 385, in call
return cls.new(cls, value)
File "/usr/local/lib/python3.10/enum.py", line 710, in new
raise ve_exc
ValueError: 'auto' is not a valid CleaningModeEnum
Anyone have any thoughts? Am I missing a step? Another user mentioned a similar issue that corrected itself after a cleaning run but unfortunately this hasn't worked for me.
first of all big thanks for making the Netto vacs work in home assistant! D8 user here. Integration works. Map works (shows). But: starting via control buttons make the vac start cleaning everything. Would be great to either make use of predefined zones from the app, or define new ones. In an ideal world these correlate with rooms that are already set up in home assistant.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.