revert async to push minimal change update for release

has StateVacuumEntity but no async, will push release like this that should work and push another release with async
This commit is contained in:
bittles
2024-04-27 17:35:41 -05:00
parent d1bb42c769
commit ba0a2f9ed8
2 changed files with 43 additions and 48 deletions
+36 -40
View File
@@ -1,3 +1,4 @@
"""Support for Ecovacs Deebot vacuums."""
import random
import string
@@ -44,60 +45,55 @@ ECOVACS_API_DEVICEID = "".join(
random.choice(string.ascii_uppercase + string.digits) for _ in range(8)
)
async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
def setup(hass: HomeAssistant, config: ConfigType) -> bool:
"""Set up the Ecovacs component."""
LOGGER.debug("Creating new Ecovacs component")
def get_devices() -> list[VacBot]:
ecovacs_api = EcoVacsAPI(
ECOVACS_API_DEVICEID,
config[DOMAIN].get(CONF_USERNAME),
EcoVacsAPI.md5(config[DOMAIN].get(CONF_PASSWORD)),
config[DOMAIN].get(CONF_COUNTRY),
config[DOMAIN].get(CONF_CONTINENT),
)
ecovacs_devices = ecovacs_api.devices()
_LOGGER.debug("Ecobot devices: %s", ecovacs_devices)
hass.data[ECOVACS_DEVICES] = []
SERVER_ADDRESS = None
devices: list[VacBot] = []
for device in ecovacs_devices:
_LOGGER.info(
"Discovered Ecovacs device on account: %s with nickname %s",
device.get("did"),
device.get("nick"),
)
vacbot = VacBot(
ecovacs_api.uid,
ecovacs_api.REALM,
ecovacs_api.resource,
ecovacs_api.user_access_token,
device,
config[DOMAIN].get(CONF_CONTINENT).lower(),
config[DOMAIN].get(CONF_VERIFY_SSL), # add to class call
monitor=True,
)
ecovacs_api = EcoVacsAPI(
ECOVACS_API_DEVICEID,
config[DOMAIN].get(CONF_USERNAME),
EcoVacsAPI.md5(config[DOMAIN].get(CONF_PASSWORD)),
config[DOMAIN].get(CONF_COUNTRY),
config[DOMAIN].get(CONF_CONTINENT),
config[DOMAIN].get(CONF_VERIFY_SSL), # add to class call
)
devices.append(vacbot)
return devices
devices = ecovacs_api.devices()
LOGGER.debug("Ecobot devices: %s", devices)
hass.data[ECOVACS_DEVICES] = await hass.async_add_executor_job(get_devices)
for device in devices:
LOGGER.info(
"Discovered Ecovacs device on account: %s with nickname %s",
device.get("did"),
device.get("nick"),
)
vacbot = VacBot(
ecovacs_api.uid,
ecovacs_api.REALM,
ecovacs_api.resource,
ecovacs_api.user_access_token,
device,
config[DOMAIN].get(CONF_CONTINENT).lower(),
SERVER_ADDRESS, # include server address in class, if it's null should be no effect
config[DOMAIN].get(CONF_VERIFY_SSL), # add to class call
monitor=True
)
hass.data[ECOVACS_DEVICES].append(vacbot)
async def async_stop(event: object) -> None:
def stop(event: object) -> None:
"""Shut down open connections to Ecovacs XMPP server."""
devices: list[VacBot] = hass.data[ECOVACS_DEVICES]
for device in devices:
for device in hass.data[ECOVACS_DEVICES]:
LOGGER.info(
"Shutting down connection to Ecovacs device %s",
device.vacuum.get("did"),
)
await hass.async_add_executor_job(device.disconnect)
device.disconnect()
# Listen for HA stop to disconnect.
hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, async_stop)
hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP, stop)
if hass.data[ECOVACS_DEVICES]:
LOGGER.debug("Starting vacuum components")
hass.async_create_task(
discovery.async_load_platform(hass, Platform.VACUUM, DOMAIN, {}, config)
)
discovery.load_platform(hass, Platform.VACUUM, DOMAIN, {}, config)
return True
+6 -7
View File
@@ -21,20 +21,18 @@ ATTR_ERROR = "error"
ATTR_COMPONENT_PREFIX = "component_"
async def async_setup_platform(
def setup_platform(
hass: HomeAssistant,
config: ConfigType,
async_add_entities: AddEntitiesCallback,
add_entities: AddEntitiesCallback,
discovery_info: DiscoveryInfoType | None = None,
) -> None:
"""Set up the Ecovacs vacuums."""
vacuums = []
devices: list[sucks.VacBot] = hass.data[ECOVACS_DEVICES]
for device in devices:
await hass.async_add_executor_job(device.connect_and_wait_until_ready)
for device in hass.data[ECOVACS_DEVICES]:
vacuums.append(EcovacsVacuum(device))
_LOGGER.debug("Adding Ecovacs Vacuums to Home Assistant: %s", vacuums)
async_add_entities(vacuums)
add_entities(vacuums, True)
class EcovacsVacuum(StateVacuumEntity):
@@ -58,7 +56,7 @@ class EcovacsVacuum(StateVacuumEntity):
def __init__(self, device: sucks.VacBot) -> None:
"""Initialize the Ecovacs Vacuum."""
self.device = device
self.device.connect_and_wait_until_ready()
if self.device.vacuum.get("nick") is not None:
self._attr_name = str(self.device.vacuum["nick"])
else:
@@ -66,6 +64,7 @@ class EcovacsVacuum(StateVacuumEntity):
self._attr_name = str(format(self.device.vacuum["did"]))
self._error = None
_LOGGER.debug("Vacuum initialized: %s", self.name)
async def async_added_to_hass(self) -> None:
"""Set up the event listeners now that hass is ready."""