tox fixes
This commit is contained in:
@@ -34,11 +34,11 @@ class TuyaCloudApi:
|
||||
self._secret = secret
|
||||
self._user_id = user_id
|
||||
self._access_token = ""
|
||||
self._device_list = {}
|
||||
self.device_list = {}
|
||||
|
||||
def generate_payload(self, method, t, url, headers, body=None):
|
||||
def generate_payload(self, method, timestamp, url, headers, body=None):
|
||||
"""Generate signed payload for requests."""
|
||||
payload = self._client_id + self._access_token + t
|
||||
payload = self._client_id + self._access_token + timestamp
|
||||
|
||||
payload += method + "\n"
|
||||
# Content-SHA256
|
||||
@@ -60,13 +60,13 @@ class TuyaCloudApi:
|
||||
|
||||
async def async_make_request(self, method, url, body=None, headers={}):
|
||||
"""Perform requests."""
|
||||
t = str(int(time.time() * 1000))
|
||||
payload = self.generate_payload(method, t, url, headers, body)
|
||||
timestamp = str(int(time.time() * 1000))
|
||||
payload = self.generate_payload(method, timestamp, url, headers, body)
|
||||
default_par = {
|
||||
"client_id": self._client_id,
|
||||
"access_token": self._access_token,
|
||||
"sign": calc_sign(payload, self._secret),
|
||||
"t": t,
|
||||
"t": timestamp,
|
||||
"sign_method": "HMAC-SHA256",
|
||||
}
|
||||
full_url = self._base_url + url
|
||||
@@ -92,34 +92,34 @@ class TuyaCloudApi:
|
||||
data=json.dumps(body),
|
||||
)
|
||||
|
||||
r = await self._hass.async_add_executor_job(func)
|
||||
resp = await self._hass.async_add_executor_job(func)
|
||||
# r = json.dumps(r.json(), indent=2, ensure_ascii=False) # Beautify the format
|
||||
return r
|
||||
return resp
|
||||
|
||||
async def async_get_access_token(self):
|
||||
"""Obtain a valid access token."""
|
||||
r = await self.async_make_request("GET", "/v1.0/token?grant_type=1")
|
||||
resp = await self.async_make_request("GET", "/v1.0/token?grant_type=1")
|
||||
|
||||
if not r.ok:
|
||||
return "Request failed, status " + str(r.status)
|
||||
if not resp.ok:
|
||||
return "Request failed, status " + str(resp.status)
|
||||
|
||||
r_json = r.json()
|
||||
r_json = resp.json()
|
||||
if not r_json["success"]:
|
||||
return f"Error {r_json['code']}: {r_json['msg']}"
|
||||
|
||||
self._access_token = r.json()["result"]["access_token"]
|
||||
self._access_token = resp.json()["result"]["access_token"]
|
||||
return "ok"
|
||||
|
||||
async def async_get_devices_list(self):
|
||||
"""Obtain the list of devices associated to a user."""
|
||||
r = await self.async_make_request(
|
||||
resp = await self.async_make_request(
|
||||
"GET", url=f"/v1.0/users/{self._user_id}/devices"
|
||||
)
|
||||
|
||||
if not r.ok:
|
||||
return "Request failed, status " + str(r.status)
|
||||
if not resp.ok:
|
||||
return "Request failed, status " + str(resp.status)
|
||||
|
||||
r_json = r.json()
|
||||
r_json = resp.json()
|
||||
if not r_json["success"]:
|
||||
# print(
|
||||
# "Request failed, reply is {}".format(
|
||||
@@ -128,7 +128,7 @@ class TuyaCloudApi:
|
||||
# )
|
||||
return f"Error {r_json['code']}: {r_json['msg']}"
|
||||
|
||||
self._device_list = {dev["id"]: dev for dev in r_json["result"]}
|
||||
# print("DEV__LIST: {}".format(self._device_list))
|
||||
self.device_list = {dev["id"]: dev for dev in r_json["result"]}
|
||||
# print("DEV__LIST: {}".format(self.device_list))
|
||||
|
||||
return "ok"
|
||||
|
@@ -11,7 +11,6 @@ from homeassistant.const import (
|
||||
CONF_FRIENDLY_NAME,
|
||||
CONF_HOST,
|
||||
CONF_ID,
|
||||
CONF_MODEL,
|
||||
CONF_PLATFORM,
|
||||
CONF_SCAN_INTERVAL,
|
||||
)
|
||||
@@ -27,6 +26,7 @@ from . import pytuya
|
||||
from .const import (
|
||||
ATTR_UPDATED_AT,
|
||||
CONF_LOCAL_KEY,
|
||||
CONF_MODEL,
|
||||
CONF_PROTOCOL_VERSION,
|
||||
DATA_CLOUD,
|
||||
DOMAIN,
|
||||
@@ -221,7 +221,7 @@ class TuyaDevice(pytuya.TuyaListener, pytuya.ContextualLogger):
|
||||
"""Retrieve updated local_key from Cloud API and update the config_entry."""
|
||||
dev_id = self._dev_config_entry[CONF_DEVICE_ID]
|
||||
await self._hass.data[DOMAIN][DATA_CLOUD].async_get_devices_list()
|
||||
cloud_devs = self._hass.data[DOMAIN][DATA_CLOUD]._device_list
|
||||
cloud_devs = self._hass.data[DOMAIN][DATA_CLOUD].device_list
|
||||
if dev_id in cloud_devs:
|
||||
self._local_key = cloud_devs[dev_id].get(CONF_LOCAL_KEY)
|
||||
new_data = self._config_entry.data.copy()
|
||||
|
@@ -17,7 +17,6 @@ from homeassistant.const import (
|
||||
CONF_FRIENDLY_NAME,
|
||||
CONF_HOST,
|
||||
CONF_ID,
|
||||
CONF_MODEL,
|
||||
CONF_NAME,
|
||||
CONF_PLATFORM,
|
||||
CONF_REGION,
|
||||
@@ -35,6 +34,7 @@ from .const import (
|
||||
CONF_DPS_STRINGS,
|
||||
CONF_EDIT_DEVICE,
|
||||
CONF_LOCAL_KEY,
|
||||
CONF_MODEL,
|
||||
CONF_PRODUCT_NAME,
|
||||
CONF_PROTOCOL_VERSION,
|
||||
CONF_SETUP_CLOUD,
|
||||
@@ -375,7 +375,7 @@ class LocalTuyaOptionsFlowHandler(config_entries.OptionsFlow):
|
||||
if len(res) == 0:
|
||||
new_data = self.config_entry.data.copy()
|
||||
new_data.update(user_input)
|
||||
cloud_devs = cloud_api._device_list
|
||||
cloud_devs = cloud_api.device_list
|
||||
for dev_id, dev in new_data[CONF_DEVICES].items():
|
||||
if CONF_MODEL not in dev and dev_id in cloud_devs:
|
||||
model = cloud_devs[dev_id].get(CONF_PRODUCT_NAME)
|
||||
@@ -438,7 +438,7 @@ class LocalTuyaOptionsFlowHandler(config_entries.OptionsFlow):
|
||||
return self.async_show_form(
|
||||
step_id="add_device",
|
||||
data_schema=devices_schema(
|
||||
devices, self.hass.data[DOMAIN][DATA_CLOUD]._device_list
|
||||
devices, self.hass.data[DOMAIN][DATA_CLOUD].device_list
|
||||
),
|
||||
errors=errors,
|
||||
)
|
||||
@@ -463,7 +463,7 @@ class LocalTuyaOptionsFlowHandler(config_entries.OptionsFlow):
|
||||
return self.async_show_form(
|
||||
step_id="edit_device",
|
||||
data_schema=devices_schema(
|
||||
devices, self.hass.data[DOMAIN][DATA_CLOUD]._device_list, False
|
||||
devices, self.hass.data[DOMAIN][DATA_CLOUD].device_list, False
|
||||
),
|
||||
errors=errors,
|
||||
)
|
||||
@@ -479,7 +479,7 @@ class LocalTuyaOptionsFlowHandler(config_entries.OptionsFlow):
|
||||
# self.device_data[CONF_PRODUCT_KEY] = self.devices[
|
||||
# self.selected_device
|
||||
# ]["productKey"]
|
||||
cloud_devs = self.hass.data[DOMAIN][DATA_CLOUD]._device_list
|
||||
cloud_devs = self.hass.data[DOMAIN][DATA_CLOUD].device_list
|
||||
if dev_id in cloud_devs:
|
||||
self.device_data[CONF_MODEL] = cloud_devs[dev_id].get(
|
||||
CONF_PRODUCT_NAME
|
||||
@@ -530,7 +530,7 @@ class LocalTuyaOptionsFlowHandler(config_entries.OptionsFlow):
|
||||
defaults[CONF_HOST] = device.get("ip")
|
||||
defaults[CONF_DEVICE_ID] = device.get("gwId")
|
||||
defaults[CONF_PROTOCOL_VERSION] = device.get("version")
|
||||
cloud_devs = self.hass.data[DOMAIN][DATA_CLOUD]._device_list
|
||||
cloud_devs = self.hass.data[DOMAIN][DATA_CLOUD].device_list
|
||||
if dev_id in cloud_devs:
|
||||
defaults[CONF_LOCAL_KEY] = cloud_devs[dev_id].get(CONF_LOCAL_KEY)
|
||||
defaults[CONF_FRIENDLY_NAME] = cloud_devs[dev_id].get(CONF_NAME)
|
||||
@@ -577,7 +577,6 @@ class LocalTuyaOptionsFlowHandler(config_entries.OptionsFlow):
|
||||
data=new_data,
|
||||
)
|
||||
return self.async_create_entry(title="", data={})
|
||||
self.async_create_entry(title="", data={})
|
||||
|
||||
self.selected_platform = user_input[PLATFORM_TO_ADD]
|
||||
return await self.async_step_configure_entity()
|
||||
|
@@ -30,6 +30,7 @@ ATTR_UPDATED_AT = "updated_at"
|
||||
CONF_LOCAL_KEY = "local_key"
|
||||
CONF_PROTOCOL_VERSION = "protocol_version"
|
||||
CONF_DPS_STRINGS = "dps_strings"
|
||||
CONF_MODEL = "model"
|
||||
CONF_PRODUCT_KEY = "product_key"
|
||||
CONF_PRODUCT_NAME = "product_name"
|
||||
CONF_USER_ID = "user_id"
|
||||
|
@@ -29,7 +29,7 @@ async def async_get_config_entry_diagnostics(
|
||||
local_key = data[CONF_DEVICES][dev_id][CONF_LOCAL_KEY]
|
||||
local_key_obfuscated = f"{local_key[0:3]}...{local_key[-3:]}"
|
||||
data[CONF_DEVICES][dev_id][CONF_LOCAL_KEY] = local_key_obfuscated
|
||||
data[CLOUD_DEVICES] = tuya_api._device_list
|
||||
data[CLOUD_DEVICES] = tuya_api.device_list
|
||||
for dev_id, dev in data[CLOUD_DEVICES].items():
|
||||
local_key = data[CLOUD_DEVICES][dev_id][CONF_LOCAL_KEY]
|
||||
local_key_obfuscated = f"{local_key[0:3]}...{local_key[-3:]}"
|
||||
@@ -48,8 +48,8 @@ async def async_get_device_diagnostics(
|
||||
data[DEVICE_CONFIG][CONF_LOCAL_KEY] = f"{local_key[0:3]}...{local_key[-3:]}"
|
||||
|
||||
tuya_api = hass.data[DOMAIN][DATA_CLOUD]
|
||||
if dev_id in tuya_api._device_list:
|
||||
data[DEVICE_CLOUD_INFO] = tuya_api._device_list[dev_id]
|
||||
if dev_id in tuya_api.device_list:
|
||||
data[DEVICE_CLOUD_INFO] = tuya_api.device_list[dev_id]
|
||||
local_key = data[DEVICE_CLOUD_INFO][CONF_LOCAL_KEY]
|
||||
data[DEVICE_CLOUD_INFO][CONF_LOCAL_KEY] = f"{local_key[0:3]}...{local_key[-3:]}"
|
||||
# data["log"] = hass.data[DOMAIN][CONF_DEVICES][dev_id].logger.retrieve_log()
|
||||
|
Reference in New Issue
Block a user