diff --git a/custom_components/localtuya/__init__.py b/custom_components/localtuya/__init__.py index 4a6f1bf..9701b4a 100644 --- a/custom_components/localtuya/__init__.py +++ b/custom_components/localtuya/__init__.py @@ -5,27 +5,26 @@ import time from datetime import timedelta import homeassistant.helpers.config_validation as cv -from homeassistant.helpers.device_registry import DeviceEntry import homeassistant.helpers.entity_registry as er import voluptuous as vol - from homeassistant.config_entries import ConfigEntry from homeassistant.const import ( CONF_CLIENT_ID, CONF_CLIENT_SECRET, - CONF_REGION, CONF_DEVICE_ID, CONF_DEVICES, CONF_ENTITIES, CONF_HOST, CONF_ID, CONF_PLATFORM, + CONF_REGION, CONF_USERNAME, EVENT_HOMEASSISTANT_STOP, SERVICE_RELOAD, ) from homeassistant.core import HomeAssistant from homeassistant.exceptions import HomeAssistantError +from homeassistant.helpers.device_registry import DeviceEntry from homeassistant.helpers.event import async_track_time_interval from .cloud_api import TuyaCloudApi @@ -133,13 +132,11 @@ async def async_setup(hass: HomeAssistant, config: dict): # settings triggers a reload of the config entry, which tears down the device # so no need to connect in that case. if updated: - _LOGGER.debug("Updating keys for device %s: %s %s", - device_id, device_ip, product_key - ) - new_data[ATTR_UPDATED_AT] = str(int(time.time() * 1000)) - hass.config_entries.async_update_entry( - entry, data=new_data + _LOGGER.debug( + "Updating keys for device %s: %s %s", device_id, device_ip, product_key ) + new_data[ATTR_UPDATED_AT] = str(int(time.time() * 1000)) + hass.config_entries.async_update_entry(entry, data=new_data) device = hass.data[DOMAIN][TUYA_DEVICES][device_id] if not device.connected: device.async_connect() diff --git a/custom_components/localtuya/climate.py b/custom_components/localtuya/climate.py index 9d9358f..8474a21 100644 --- a/custom_components/localtuya/climate.py +++ b/custom_components/localtuya/climate.py @@ -11,18 +11,18 @@ from homeassistant.components.climate import ( ClimateEntity, ) from homeassistant.components.climate.const import ( + CURRENT_HVAC_HEAT, + CURRENT_HVAC_IDLE, HVAC_MODE_AUTO, HVAC_MODE_HEAT, HVAC_MODE_OFF, + PRESET_AWAY, + PRESET_ECO, + PRESET_HOME, + PRESET_NONE, SUPPORT_PRESET_MODE, SUPPORT_TARGET_TEMPERATURE, SUPPORT_TARGET_TEMPERATURE_RANGE, - CURRENT_HVAC_IDLE, - CURRENT_HVAC_HEAT, - PRESET_NONE, - PRESET_ECO, - PRESET_AWAY, - PRESET_HOME, ) from homeassistant.const import ( ATTR_TEMPERATURE, @@ -37,21 +37,21 @@ from homeassistant.const import ( from .common import LocalTuyaEntity, async_setup_entry from .const import ( CONF_CURRENT_TEMPERATURE_DP, - CONF_MAX_TEMP_DP, - CONF_MIN_TEMP_DP, - CONF_PRECISION, - CONF_TARGET_PRECISION, - CONF_TARGET_TEMPERATURE_DP, - CONF_TEMPERATURE_STEP, - CONF_HVAC_MODE_DP, - CONF_HVAC_MODE_SET, + CONF_ECO_DP, + CONF_ECO_VALUE, CONF_HEURISTIC_ACTION, CONF_HVAC_ACTION_DP, CONF_HVAC_ACTION_SET, - CONF_ECO_DP, - CONF_ECO_VALUE, + CONF_HVAC_MODE_DP, + CONF_HVAC_MODE_SET, + CONF_MAX_TEMP_DP, + CONF_MIN_TEMP_DP, + CONF_PRECISION, CONF_PRESET_DP, CONF_PRESET_SET, + CONF_TARGET_PRECISION, + CONF_TARGET_TEMPERATURE_DP, + CONF_TEMPERATURE_STEP, ) _LOGGER = logging.getLogger(__name__) diff --git a/custom_components/localtuya/cloud_api.py b/custom_components/localtuya/cloud_api.py index ac82c4e..b55c46f 100755 --- a/custom_components/localtuya/cloud_api.py +++ b/custom_components/localtuya/cloud_api.py @@ -3,9 +3,10 @@ import functools import hashlib import hmac import json -import requests import time +import requests + # Signature algorithm. def calc_sign(msg, key): diff --git a/custom_components/localtuya/common.py b/custom_components/localtuya/common.py index 7921383..d3e691b 100644 --- a/custom_components/localtuya/common.py +++ b/custom_components/localtuya/common.py @@ -1,8 +1,8 @@ """Code shared between all platforms.""" import asyncio import logging -from datetime import timedelta import time +from datetime import timedelta from homeassistant.const import ( CONF_DEVICE_ID, @@ -16,11 +16,11 @@ from homeassistant.const import ( CONF_SCAN_INTERVAL, ) from homeassistant.core import callback -from homeassistant.helpers.event import async_track_time_interval from homeassistant.helpers.dispatcher import ( async_dispatcher_connect, async_dispatcher_send, ) +from homeassistant.helpers.event import async_track_time_interval from homeassistant.helpers.restore_state import RestoreEntity from . import pytuya @@ -28,8 +28,8 @@ from .const import ( ATTR_UPDATED_AT, CONF_LOCAL_KEY, CONF_PROTOCOL_VERSION, - DOMAIN, DATA_CLOUD, + DOMAIN, TUYA_DEVICES, ) @@ -209,7 +209,7 @@ class TuyaDevice(pytuya.TuyaListener, pytuya.ContextualLogger): except Exception as e: # pylint: disable=broad-except self.exception(f"Connect to {self._dev_config_entry[CONF_HOST]} failed") - if 'json.decode' in str(type(e)): + if "json.decode" in str(type(e)): await self.update_local_key() if self._interface is not None: @@ -248,7 +248,7 @@ class TuyaDevice(pytuya.TuyaListener, pytuya.ContextualLogger): self._disconnect_task() self.debug( "Closed connection with device %s.", - self._dev_config_entry[CONF_FRIENDLY_NAME] + self._dev_config_entry[CONF_FRIENDLY_NAME], ) async def set_dp(self, state, dp_index): diff --git a/custom_components/localtuya/config_flow.py b/custom_components/localtuya/config_flow.py index 28c0b65..3de2284 100644 --- a/custom_components/localtuya/config_flow.py +++ b/custom_components/localtuya/config_flow.py @@ -9,6 +9,8 @@ import homeassistant.helpers.entity_registry as er import voluptuous as vol from homeassistant import config_entries, core, exceptions from homeassistant.const import ( + CONF_CLIENT_ID, + CONF_CLIENT_SECRET, CONF_DEVICE_ID, CONF_DEVICES, CONF_ENTITIES, @@ -18,10 +20,8 @@ from homeassistant.const import ( CONF_MODEL, CONF_NAME, CONF_PLATFORM, - CONF_SCAN_INTERVAL, - CONF_CLIENT_ID, - CONF_CLIENT_SECRET, CONF_REGION, + CONF_SCAN_INTERVAL, CONF_USERNAME, ) from homeassistant.core import callback @@ -29,18 +29,18 @@ from homeassistant.core import callback from .cloud_api import TuyaCloudApi from .common import pytuya from .const import ( + ATTR_UPDATED_AT, CONF_ACTION, CONF_ADD_DEVICE, + CONF_DPS_STRINGS, CONF_EDIT_DEVICE, - CONF_SETUP_CLOUD, CONF_LOCAL_KEY, CONF_PRODUCT_NAME, CONF_PROTOCOL_VERSION, + CONF_SETUP_CLOUD, CONF_USER_ID, - CONF_DPS_STRINGS, - ATTR_UPDATED_AT, - DATA_DISCOVERY, DATA_CLOUD, + DATA_DISCOVERY, DOMAIN, PLATFORMS, ) diff --git a/custom_components/localtuya/diagnostics.py b/custom_components/localtuya/diagnostics.py index 3d3cb95..9ea0f6c 100644 --- a/custom_components/localtuya/diagnostics.py +++ b/custom_components/localtuya/diagnostics.py @@ -1,24 +1,14 @@ """Diagnostics support for LocalTuya.""" from __future__ import annotations + from typing import Any from homeassistant.config_entries import ConfigEntry +from homeassistant.const import CONF_CLIENT_ID, CONF_CLIENT_SECRET, CONF_DEVICES from homeassistant.core import HomeAssistant from homeassistant.helpers.device_registry import DeviceEntry - -from homeassistant.const import ( - CONF_CLIENT_ID, - CONF_CLIENT_SECRET, - CONF_DEVICES, -) - -from .const import ( - DOMAIN, - DATA_CLOUD, - CONF_USER_ID, - CONF_LOCAL_KEY, -) +from .const import CONF_LOCAL_KEY, CONF_USER_ID, DATA_CLOUD, DOMAIN CLOUD_DEVICES = "cloud_devices" DEVICE_CONFIG = "device_config" diff --git a/custom_components/localtuya/vacuum.py b/custom_components/localtuya/vacuum.py index 9a14399..dc75044 100644 --- a/custom_components/localtuya/vacuum.py +++ b/custom_components/localtuya/vacuum.py @@ -7,41 +7,40 @@ from homeassistant.components.vacuum import ( DOMAIN, STATE_CLEANING, STATE_DOCKED, - STATE_IDLE, - STATE_RETURNING, - STATE_PAUSED, STATE_ERROR, + STATE_IDLE, + STATE_PAUSED, + STATE_RETURNING, SUPPORT_BATTERY, SUPPORT_FAN_SPEED, + SUPPORT_LOCATE, SUPPORT_PAUSE, SUPPORT_RETURN_HOME, SUPPORT_START, SUPPORT_STATE, SUPPORT_STATUS, SUPPORT_STOP, - SUPPORT_LOCATE, StateVacuumEntity, ) from .common import LocalTuyaEntity, async_setup_entry - from .const import ( - CONF_POWERGO_DP, - CONF_IDLE_STATUS_VALUE, - CONF_RETURNING_STATUS_VALUE, - CONF_DOCKED_STATUS_VALUE, CONF_BATTERY_DP, - CONF_MODE_DP, - CONF_MODES, - CONF_FAN_SPEED_DP, - CONF_FAN_SPEEDS, - CONF_CLEAN_TIME_DP, CONF_CLEAN_AREA_DP, CONF_CLEAN_RECORD_DP, - CONF_LOCATE_DP, + CONF_CLEAN_TIME_DP, + CONF_DOCKED_STATUS_VALUE, + CONF_FAN_SPEED_DP, + CONF_FAN_SPEEDS, CONF_FAULT_DP, + CONF_IDLE_STATUS_VALUE, + CONF_LOCATE_DP, + CONF_MODE_DP, + CONF_MODES, CONF_PAUSED_STATE, + CONF_POWERGO_DP, CONF_RETURN_MODE, + CONF_RETURNING_STATUS_VALUE, CONF_STOP_STATUS, )