mirror of
https://github.com/home-assistant/core.git
synced 2025-07-16 09:47:13 +00:00
Add vendor support for vorwerk robots and fix zone retrieval (#25200)
* Add vendor support for vorwerk robots and fix zone retrieval * Lint * Review comments * Lint * Review commeent * Remove unused variable * Review comment * Remove unused variable
This commit is contained in:
parent
93970b5621
commit
32e89dcbb6
@ -12,6 +12,7 @@ from homeassistant.util import Throttle
|
|||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
CONF_VENDOR = 'vendor'
|
||||||
DOMAIN = 'neato'
|
DOMAIN = 'neato'
|
||||||
NEATO_ROBOTS = 'neato_robots'
|
NEATO_ROBOTS = 'neato_robots'
|
||||||
NEATO_LOGIN = 'neato_login'
|
NEATO_LOGIN = 'neato_login'
|
||||||
@ -22,6 +23,8 @@ CONFIG_SCHEMA = vol.Schema({
|
|||||||
DOMAIN: vol.Schema({
|
DOMAIN: vol.Schema({
|
||||||
vol.Required(CONF_USERNAME): cv.string,
|
vol.Required(CONF_USERNAME): cv.string,
|
||||||
vol.Required(CONF_PASSWORD): cv.string,
|
vol.Required(CONF_PASSWORD): cv.string,
|
||||||
|
vol.Optional(CONF_VENDOR, default='neato'): vol.In(
|
||||||
|
['neato', 'vorwerk'])
|
||||||
})
|
})
|
||||||
}, extra=vol.ALLOW_EXTRA)
|
}, extra=vol.ALLOW_EXTRA)
|
||||||
|
|
||||||
@ -169,9 +172,13 @@ ALERTS = {
|
|||||||
|
|
||||||
def setup(hass, config):
|
def setup(hass, config):
|
||||||
"""Set up the Neato component."""
|
"""Set up the Neato component."""
|
||||||
from pybotvac import Account
|
from pybotvac import Account, Neato, Vorwerk
|
||||||
|
|
||||||
hass.data[NEATO_LOGIN] = NeatoHub(hass, config[DOMAIN], Account)
|
if config[DOMAIN][CONF_VENDOR] == 'neato':
|
||||||
|
hass.data[NEATO_LOGIN] = NeatoHub(hass, config[DOMAIN], Account, Neato)
|
||||||
|
elif config[DOMAIN][CONF_VENDOR] == 'vorwerk':
|
||||||
|
hass.data[NEATO_LOGIN] = NeatoHub(hass, config[DOMAIN], Account,
|
||||||
|
Vorwerk)
|
||||||
hub = hass.data[NEATO_LOGIN]
|
hub = hass.data[NEATO_LOGIN]
|
||||||
if not hub.login():
|
if not hub.login():
|
||||||
_LOGGER.debug("Failed to login to Neato API")
|
_LOGGER.debug("Failed to login to Neato API")
|
||||||
@ -186,15 +193,17 @@ def setup(hass, config):
|
|||||||
class NeatoHub:
|
class NeatoHub:
|
||||||
"""A My Neato hub wrapper class."""
|
"""A My Neato hub wrapper class."""
|
||||||
|
|
||||||
def __init__(self, hass, domain_config, neato):
|
def __init__(self, hass, domain_config, neato, vendor):
|
||||||
"""Initialize the Neato hub."""
|
"""Initialize the Neato hub."""
|
||||||
self.config = domain_config
|
self.config = domain_config
|
||||||
self._neato = neato
|
self._neato = neato
|
||||||
self._hass = hass
|
self._hass = hass
|
||||||
|
self._vendor = vendor
|
||||||
|
|
||||||
self.my_neato = neato(
|
self.my_neato = neato(
|
||||||
domain_config[CONF_USERNAME],
|
domain_config[CONF_USERNAME],
|
||||||
domain_config[CONF_PASSWORD])
|
domain_config[CONF_PASSWORD],
|
||||||
|
vendor)
|
||||||
self._hass.data[NEATO_ROBOTS] = self.my_neato.robots
|
self._hass.data[NEATO_ROBOTS] = self.my_neato.robots
|
||||||
self._hass.data[NEATO_PERSISTENT_MAPS] = self.my_neato.persistent_maps
|
self._hass.data[NEATO_PERSISTENT_MAPS] = self.my_neato.persistent_maps
|
||||||
self._hass.data[NEATO_MAP_DATA] = self.my_neato.maps
|
self._hass.data[NEATO_MAP_DATA] = self.my_neato.maps
|
||||||
@ -204,7 +213,9 @@ class NeatoHub:
|
|||||||
try:
|
try:
|
||||||
_LOGGER.debug("Trying to connect to Neato API")
|
_LOGGER.debug("Trying to connect to Neato API")
|
||||||
self.my_neato = self._neato(
|
self.my_neato = self._neato(
|
||||||
self.config[CONF_USERNAME], self.config[CONF_PASSWORD])
|
self.config[CONF_USERNAME],
|
||||||
|
self.config[CONF_PASSWORD],
|
||||||
|
self._vendor)
|
||||||
return True
|
return True
|
||||||
except HTTPError:
|
except HTTPError:
|
||||||
_LOGGER.error("Unable to connect to Neato API")
|
_LOGGER.error("Unable to connect to Neato API")
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
"name": "Neato",
|
"name": "Neato",
|
||||||
"documentation": "https://www.home-assistant.io/components/neato",
|
"documentation": "https://www.home-assistant.io/components/neato",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"pybotvac==0.0.13"
|
"pybotvac==0.0.15"
|
||||||
],
|
],
|
||||||
"dependencies": [],
|
"dependencies": [],
|
||||||
"codeowners": []
|
"codeowners": []
|
||||||
|
@ -187,11 +187,10 @@ class NeatoConnectedVacuum(StateVacuumDevice):
|
|||||||
if self._robot_has_map:
|
if self._robot_has_map:
|
||||||
if self._state['availableServices']['maps'] != "basic-1":
|
if self._state['availableServices']['maps'] != "basic-1":
|
||||||
if self._robot_maps[self._robot_serial]:
|
if self._robot_maps[self._robot_serial]:
|
||||||
robot_map_id = (
|
allmaps = self._robot_maps[self._robot_serial]
|
||||||
self._robot_maps[self._robot_serial][0]['id'])
|
for maps in allmaps:
|
||||||
|
|
||||||
self._robot_boundaries = self.robot.get_map_boundaries(
|
self._robot_boundaries = self.robot.get_map_boundaries(
|
||||||
robot_map_id).json()
|
maps['id']).json()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
|
@ -1051,7 +1051,7 @@ pyblackbird==0.5
|
|||||||
# pybluez==0.22
|
# pybluez==0.22
|
||||||
|
|
||||||
# homeassistant.components.neato
|
# homeassistant.components.neato
|
||||||
pybotvac==0.0.13
|
pybotvac==0.0.15
|
||||||
|
|
||||||
# homeassistant.components.nissan_leaf
|
# homeassistant.components.nissan_leaf
|
||||||
pycarwings2==2.8
|
pycarwings2==2.8
|
||||||
|
Loading…
x
Reference in New Issue
Block a user