Giter Site home page Giter Site logo

benjaminpaap / home-assistant-myneato Goto Github PK

View Code? Open in Web Editor NEW
24.0 6.0 2.0 43 KB

Home Assistant integration to control a neato vacuum robot from D8 and up using the MyNeato App

Python 100.00%
home-assistant home-assistant-component home-automation neato vacuum vacuum-cleaner hacs homeassistant integration

home-assistant-myneato's People

Contributors

benjaminpaap avatar huubvh95 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

home-assistant-myneato's Issues

No controls from within Home Assistant

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

image

Error States not being cast?

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.

Unknown error occurred at setting up

Screenshot 2022-12-15 at 18 29 32

Well more info I haven't. App is working on my phone and does everything. Can't find anything back in the logs.

Neato D8 1.7.0-2933
Home Assistant 2022.12.6
Supervisor 2022.11.2
Frontend 20221213.0

Error setting up entry MyNeato for myneato

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.

Initialization Issues - D8

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

RobotActionEnum missing state 'cleaning_standby'

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

D8 cleaningmode not working proparly

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

Floorplans

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!

Can no longer login

I had an issue where I had to delete the app and reinstall it. Now it will not let me log in.

Using the correct credentials I receive this error.
2023-02-24 13_04_23-Settings โ€“ Home Assistant

Zone cleaning

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.

Allow specific rooms to be cleaned

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.

Unable to add Neato D10

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.

Entities?

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?)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.