Compare commits

..

No commits in common. "main" and "v1.2.8" have entirely different histories.
main ... v1.2.8

3 changed files with 37 additions and 11 deletions

View File

@ -14,7 +14,6 @@
"""Config flow for Eufy Robovac integration."""
from __future__ import annotations
import json
import logging
from typing import Any, Optional
@ -139,6 +138,7 @@ def get_eufy_vacuums(self):
if item["device"]["product"]["appliance"] == "Cleaning":
try:
device = tuya_client.get_device(item["device"]["id"])
_LOGGER.debug("Robovac schema: {}".format(device["schema"]))
vac_details = {
CONF_ID: item["device"]["id"],
@ -153,11 +153,10 @@ def get_eufy_vacuums(self):
self[CONF_VACS][item["device"]["id"]] = vac_details
except:
_LOGGER.debug(
"Skipping vacuum {}: found on Eufy but not on Tuya. Eufy details:".format(
"Vacuum {} found on Eufy, but not on Tuya. Skipping.".format(
item["device"]["id"]
)
)
_LOGGER.debug(json.dumps(item["device"], indent=2))
return response

View File

@ -209,7 +209,7 @@ def get_region_by_phone_code(phone_code):
def get_phone_code_by_region(region):
country = next((item for item in COUNTRIES if item["tuya_region"] == region), None)
country = next((item for item in COUNTRIES if item["region"] == region), None)
if country is None:
return "44"

View File

@ -89,16 +89,28 @@ UPDATE_RETRIES = 3
class TUYA_CODES(StrEnum):
BATTERY_LEVEL = "104"
STATE = "15"
ERROR_CODE = "106"
MODE = "5"
FAN_SPEED = "102"
CLEANING_AREA = "110"
STATE = "15"
# FAN_SPEED = "102"
FAN_SPEED = "130"
BATTERY_LEVEL = "104"
ERROR_CODE = "106"
CLEANING_TIME = "109"
AUTO_RETURN = "135"
CLEANING_AREA = "110"
DO_NOT_DISTURB = "107"
DO_NOT_DISTURB2 = "139"
BOOST_IQ = "118"
AUTO_RETURN = "135"
RETURN_HOME = "101" # boolean
A_111 = "111" # 65?
A_122 = "122" # continue
A_131 = "131" # false
A_137 = "137" # 0
HARDWARE_CODE = "115" # decoded
A_112 = "112" # decoded clean record?
A_113 = "113" # decoded
CLEAN_STATISTIC = "114" # decoded
MULTI_MAPS = "117" # decoded
TUYA_CONSUMABLES_CODES = ["142", "116"]
@ -352,7 +364,14 @@ class RoboVacEntity(StateVacuumEntity):
# self.map_data = self.tuyastatus.get("121")
# self.erro_msg? = self.tuyastatus.get("124")
if self.robovac_supported & RoboVacEntityFeature.CONSUMABLES:
_LOGGER.debug("Support Consumables")
for CONSUMABLE_CODE in TUYA_CONSUMABLES_CODES:
_LOGGER.debug("Consumable code is: {}".format(CONSUMABLE_CODE))
_LOGGER.debug(
"Consumables value is: {}".format(
self.tuyastatus.get(CONSUMABLE_CODE)
)
)
if (
CONSUMABLE_CODE in self.tuyastatus
and self.tuyastatus.get(CONSUMABLE_CODE) is not None
@ -362,10 +381,18 @@ class RoboVacEntity(StateVacuumEntity):
"ascii"
)
)
_LOGGER.debug(
"Consumables decoded value is: {}".format(consumables)
)
if (
"consumable" in consumables
and "duration" in consumables["consumable"]
):
_LOGGER.debug(
"Consumables encoded value is: {}".format(
consumables["consumable"]["duration"]
)
)
self._attr_consumables = consumables["consumable"]["duration"]
async def async_locate(self, **kwargs):
@ -405,7 +432,7 @@ class RoboVacEntity(StateVacuumEntity):
fan_speed = "Boost_IQ"
elif fan_speed == "Pure":
fan_speed = "Quiet"
await self.vacuum.async_set({"102": fan_speed})
await self.vacuum.async_set({"130": fan_speed})
async def async_send_command(
self, command: str, params: dict | list | None = None, **kwargs