Home Assistant custom integration for controlling Powered by Tuya (PBT) devices using Tuya Open API, officially maintained by the Tuya Developer Team.

Overview

Tuya Home Assistant Integration

Home Assistant custom integration for controlling Powered by Tuya (PBT) devices using Tuya Open API, officially maintained by the Tuya Developer Team.

Supported Tuya Device Types

The following Tuya Device types are currently supported by this integration:

  • Light: Supports Tuya Wi-Fi light devices.
  • Switch & Socket: Supports Tuya Wi-Fi switch & socket devices.

Please check the Develop Tuya-Compatible Home Assistant Drivers and Home Assistant Entity tutorials to develop more drivers for the Tuya Home Assistant Integration and support more Tuya devices.

Workflow

Sequence Diagram

Installation

1. Home Assistant Installation

Please refer to the Home Assistant Official Installation documentation to install Home Assistant Core.

You can also get help from Set up Home Assistant Development Environment on Raspberry Pi in Tuya Developer Demo Center.

2. Tuya Home Assistant Integration Installation

There are two methods to install the integration:

  1. Home Assistant Custom Components Installation
  2. Install by HACS

2.1 Home Assistant Custom Components Installation

Download this tuya-home-assistant repo, unzip it, and copy the custom_components/tuya/ folder to the HomeAssistant configuration directory, e.g. ~/.homeassistant

2.2 Install by HACS

1. HACS Install

2. HACS Initial Configuration

3. HACS -> Integrations -> ... -> Custom repositories

4. Input the tuya-home-assistant GitHub URL: https://github.com/tuya/tuya-home-assistant.git and select Integration as the Category type, then click ADD.

5. Click INSTALL

2.3 Restart Home Assistant

Configuration -> Server Controls -> RESTART

2.4 Activate tuya-home-assistant

Configuration -> Integrations -> ADD INTEGRATION -> Tuya Integration

3. Enter your Tuya credential

Please get the Tuya credential info by following the Configure Cloud Development Project part in Tuya IoT Platform Configuration Guide.

Start Home Assistant

Go to the home assistant installation folder ~/hass and use the following command to activate it and run the hass service:

➜  hass source bin/activate
(hass) ➜  hass hass

For more information, please refer to the Home Assistant Core tutorial for the startup process and run hass.

Link Tuya Devices to Home Assistant

Please download and use the Tuya Device Manager App to pair Tuya devices to the Home Assistant for controlling.

You can check Tuya Device Manager App (Android) part of the Tuya IoT Platform Configuration Guide for more information.

Contributing

Please refer to the Contributing.md for contributing guide.

Issue feedback

You can give feedback on issues you encounter via GitHub Issue.

LICENSE

For more information, please refer to the LICENSE file

Comments
  • No devices detected when switched to the official integration

    No devices detected when switched to the official integration

    Describe the bug Removed the integration from HACS and unconfigured it and replaced it with the official one. No devices were detected there.

    Expected behavior I should be able to use the devices which were present in the HACS version of the integration.

    Screenshots image

    Home Assistant Version core-2021.10.0

    Device info (please complete the following information, which can be found in log): Two mcs door switches.

    Additional context Add any other context or logs about the problem here. In the official version there's no choice to pick which app was used to set the devices, I suspect it might be picking Smart life instead of Tuya.

    bug 
    opened by strasharo 61
  • New Driver - Kogan Smart Heater

    New Driver - Kogan Smart Heater

    while this shows up in HA now, i have no control over its state

    Device normal info

    • Kogan

    • Kogan Panel Heater - KAWFHTP15BA / KAHTP15WALA

      { "active_time": 1627895893, "biz_type": 0, "category": "qn", "create_time": 1627895893, "icon": "smart/icon/1470624702_0.jpeg", "id": “xxxx ", "ip": "***", "lat": "***", "local_key": "***", "lon": "***", "name": "Bedroom heater", "online": true, "owner_id": "23484236", "product_id": "ynjanlglr4qa6dxf", "product_name": "Panel heater", "status": [ { "code": "switch", "value": false }, { "code": "temp_set", "value": 25 }, { "code": "temp_current", "value": 19 } ], "sub": false, "time_zone": "+10:00", "uid": "***", "update_time": 1631720829, "uuid": "0014083010521c49f20a" },

      "sub": false,
      "time_zone": "+10:00",
      "uid": "***",
      "update_time": 1631720829,
      "uuid": "0014083010521c49f20a"
      

      },

    Device specifications 2021-09-18 08:26:33 DEBUG (SyncWorker_6) [tuya iot] Request: method = GET, url = https://openapi.tuyaeu.com/v1.0/devices/xxxxx/specifications, params = None, body = None, t = 1631917593164 2021-09-18 08:26:33 DEBUG (Thread-25) [tuya iot] _on_log: Received PUBLISH (d0, q0, r0, m0), 'cloud/token/in/ebc1d658bf210987387c9f4d12782ce2', ... (284 bytes) 2021-09-18 08:26:33 DEBUG (Thread-25) [tuya iot] payload-> b'{"data":"JFYot1AkACi8/Ur2AvTCi3qltBYwgPLSJE1YUp2CUYLVDfkFVEIu0HrN+DDEC/uA30I2NnsvKp0PqavUK5p6+2QiO6QlCEtkkzxqFzKYNWxMrTh7bOcdtlB60wzimmmtVhPwPLhtAwgQaCu5WeOT9m6lumAfCbOsThm8glBZvTgjlDYEccpKuYPzJEOBdMLP","protocol":4,"pv":"2.0","sign":"60e1f36e5c5c57e0246d96ace8e56e37","t":1631917592}' 2021-09-18 08:26:33 DEBUG (Thread-25) [tuya iot] on_message: {'data': {'dataId': 'c8013806-594e-4521-ba79-685fc9d3270a', 'devId': '7312002040f5201c02cc', 'productKey': 'GXoLAzy1gQUbckKe', 'status': [{'5': 53}]}, 'protocol': 4, 'pv': '2.0', 'sign': '60e1f36e5c5c57e0246d96ace8e56e37', 't': 1631917592} 2021-09-18 08:26:33 DEBUG (Thread-25) [tuya iot] mq receive-> {'data': {'dataId': 'c8013806-594e-4521-ba79-685fc9d3270a', 'devId': '7312002040f5201c02cc', 'productKey': 'GXoLAzy1gQUbckKe', 'status': [{'5': 53}]}, 'protocol': 4, 'pv': '2.0', 'sign': '60e1f36e5c5c57e0246d96ace8e56e37', 't': 1631917592} 2021-09-18 08:26:33 DEBUG (Thread-25) [tuya iot] mq _on_device_report-> [{'5': 53}] 2021-09-18 08:26:33 DEBUG (SyncWorker_6) [tuya iot] Response: { "result": { "category": "qn", "functions": [ { "code": "switch", "type": "Boolean", "values": "{}" }, { "code": "temp_set", "type": "Integer", "values": "{"unit":"℃","min":5,"max":40,"scale":0,"step":1}" } ], "status": [ { "code": "switch", "type": "Boolean", "values": "{}" }, { "code": "temp_set", "type": "Integer", "values": "{"unit":"℃","min":5,"max":40,"scale":0,"step":1}" }, { "code": "temp_current", "type": "Integer", "values": "{"unit":"℃","min":0,"max":100,"scale":0,"step":1}" } ] }, "success": true, "t": 163191759334

    enhancement help wanted 
    opened by rodgrech 38
  • 2406 skill id invalid

    2406 skill id invalid

    Hello! Following the instructions, I created a new account and a new project. When I try to log in, I get an error: Invalid authentication. In logs: 2021-10-21 10:33:31 ERROR (MainThread) [custom_components.tuya_v2.config_flow] Login failed: {'code': 2406, 'msg': 'skill id invalid', 'success': False, 't': 1634801611400}. The SmartLife account is linked, the devices on the Tuya website are visible. "Central Europe Data Center" is selected in the project settings, country code for authorization is 7.

    bug 
    opened by mifrith 34
  • TypeError: unsupported operand type(s) for +: 'int' and 'str'

    TypeError: unsupported operand type(s) for +: 'int' and 'str'

    After migrating to HA Core 2022.9.7 (on docker-debian) the Tuya integration cannot setup and i see this error in the log:

    Logger: homeassistant.config_entries Source: components/tuya/init.py:79 First occurred: 9:35:56 AM (1 occurrences) Last logged: 9:35:56 AM

    Error setting up entry [email protected] for tuya Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/config_entries.py", line 357, in async_setup result = await component.async_setup_entry(hass, self) File "/usr/src/homeassistant/homeassistant/components/tuya/init.py", line 79, in async_setup_entry response = await hass.async_add_executor_job( File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, **self.kwargs) File "/usr/local/lib/python3.10/site-packages/tuya_iot/openapi.py", line 222, in connect self.token_info = TuyaTokenInfo(response) File "/usr/local/lib/python3.10/site-packages/tuya_iot/openapi.py", line 41, in init token_response.get("t", 0) TypeError: unsupported operand type(s) for +: 'int' and 'str'

    Any help?

    bug 
    opened by galtamur 29
  • AC shows incorrect temperature

    AC shows incorrect temperature

    Hey, this is a great integration, however I have a small problem with my AC unit showing incorrect temps.

    kuva

    Inspecting the logs, I can see that the correct temps are visible there ("temp_set": 22, "temp_current": 21):

    kuva

    However in the UI, instead of the correct values, it shows "-17.8":

    kuva

    Also, trying to adjust the temp value in the UI is not working:

    kuva

    bug 
    opened by Zaiban 26
  • Thermostat wrong temperature

    Thermostat wrong temperature

    Hi, I try to set up this Thermostat model : https://www.aliexpress.com/item/1005001874317882.html?spm=a2g0s.9042311.0.0.40d74c4d5VSqTv

    Should be possible to see the actual temperature, to set a temperatore, switch on/stand-by the thermostat but unfortunately none of this options are possible with the Thermostat standar card into lovelace and the current temperature is completely wrong.

    Here the card image immagine

    Home Assistant Version core-2021.9.7 supervisor-2021.09.4

    Device info ** 2021-09-29 11:26:22 DEBUG (SyncWorker_0) [tuya iot] Response: { "result": [ { "active_time": 1628280192, "biz_type": 18, "category": "wk", "create_time": 1622049142, "icon": "smart/icon/15264583415nnlzwfs1qd2wqz6i937op3nmi_0.png", "id": "878608518caab5e502f5", "ip": "", "lat": "", "local_key": "", "lon": "", "model": "", "name": "Termostato01", "online": true, "owner_id": "35277597", "product_id": "IAYz2WK1th0cMLmL", "product_name": "thermostat", "status": [ { "code": "switch", "value": false }, { "code": "temp_set", "value": 30 }, { "code": "upper_temp", "value": 45 }, { "code": "eco", "value": false }, { "code": "child_lock", "value": false } ], "sub": false, "time_zone": "+01:00", "uid": "*", "update_time": 1632846559, "uuid": "878608518caab5e502f5" } ], "success": true, "t": 1632907582148 }

    Tks for your support

    bug 
    opened by flayy73 24
  • Climate device bug (DUUX threesixty )

    Climate device bug (DUUX threesixty )

    Describe the bug Can not control the device, operation button is no option in it

    Expected behavior It get detected, i can control the temp, but when its on it says it's off, and not able to select an operation.

    Screenshots image

    thermostat module image

    Home Assistant Version

    • 2021.9.6

    **Device info (please complete the following information, which can be found in [log](https://github.com/tuya/tuya-home-

     {
          "active_time": 1632234486,
          "biz_type": 0,
          "category": "qn",
          "create_time": 1632234486,
          "icon": "smart/icon/ay1546498252458MDNjl/9344e65d792a4d564c734381d7c3dce1.png",
          "id": "31300661483fda835c80",
          "ip": "***",
          "lat": "***",
          "local_key": "***",
          "lon": "***",
          "model": "",
          "name": "ThreeSixty",
          "online": true,
          "owner_id": "10107869",
          "product_id": "2vcy8zacjqw3olsq",
          "product_name": "",
          "status": [
            {
              "code": "switch",
              "value": false
            },
            {
              "code": "temp_set",
              "value": 30
            },
            {
              "code": "level",
              "value": "1"
            }
          ],
          "sub": false,
          "time_zone": "+01:00",
          "uid": "***",
          "update_time": 1632263147,
          "uuid": "31300661483fda835c80"
        },
    
    

    **Device specifications

    2021-09-22 13:54:16 INFO (MainThread) [custom_components.tuya_v2.climate] climate init
    2021-09-22 13:54:16 INFO (MainThread) [custom_components.tuya_v2.climate] climate add->['31300661483fda835c80']
    }
    2021-09-22 13:54:09 DEBUG (SyncWorker_1) [tuya iot] Request: method = GET, url = https://openapi.tuyaeu.com/v1.0/devices/31300661483fda835c80/specifications, params = None, body = None, t = 1632311649045 
    2021-09-22 13:54:09 DEBUG (SyncWorker_1) [tuya iot] Response: {
      "result": {
        "category": "qn",
        "functions": [
          {
            "code": "switch",
            "type": "Boolean",
            "values": "{}"
          },
          {
            "code": "temp_set",
            "type": "Integer",
            "values": "{\"unit\":\"℃\",\"min\":18,\"max\":30,\"scale\":0,\"step\":1}"
          },
          {
            "code": "level",
            "type": "Enum",
            "values": "{\"range\":[\"1\",\"2\",\"3\"]}"
          }
        ],
        "status": [
          {
            "code": "switch",
            "type": "Boolean",
            "values": "{}"
          },
          {
            "code": "temp_set",
            "type": "Integer",
            "values": "{\"unit\":\"℃\",\"min\":18,\"max\":30,\"scale\":0,\"step\":1}"
          },
          {
            "code": "level",
            "type": "Enum",
            "values": "{\"range\":[\"1\",\"2\",\"3\"]}"
          }
        ]
      },
      "success": true,
      "t": 1632311649167
    }
    

    Additional context

    bug 
    opened by malosaa 23
  • Bluetooth PIR Sensors

    Bluetooth PIR Sensors

    My Arlec Bluetooth gateway is being detected and it's sensors by the integration. I have a Arlec PIR sensor paired which physically detects the motion (red light) and logged in SmartLife app but not coming through to Home Assistant.

    bug 
    opened by iotinkognito 21
  • Cameras?

    Cameras?

    Are Cameras on the list for supported devices in the future?

    I have some Tuya based cameras that I want to be intergrated, even if it's just as a motion sensor, but ideally with the feed.

    Thanks, Sam

    new driver wanted 
    opened by sambarlick 21
  • Dehumidifier not supported

    Dehumidifier not supported

    Describe the bug Using the Tuya integration in Home Assistant. Adding the Tuya account and linking to the app works fine (in Home Assistant - integration). In the Integrations under Tuya when viewing the devices it says "Dehumidifier (unsupported)"

    Home Assistant Version Core_2021.12.10 Supervisor-2021.12.2

    Tuya Service API IOT Core Authorization Smart Home Scene Linkage Data Dashboard Service Device Status Notification Tuya1

    Device info (please complete the following information, which can be found in log): like this: I do not the the suggested output. I only get the errorlog (see futher down)

    Additional context 2022-01-26 15:50:34 ERROR (MainThread) [homeassistant.components.humidifier] Error while setting up tuya platform for humidifier Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 249, in _async_setup_platform await asyncio.shield(task) File "/usr/src/homeassistant/homeassistant/components/tuya/humidifier.py", line 72, in async_setup_entry async_discover_device([*hass_data.device_manager.device_map]) File "/usr/src/homeassistant/homeassistant/components/tuya/humidifier.py", line 68, in async_discover_device TuyaHumidifierEntity(device, hass_data.device_manager, description) File "/usr/src/homeassistant/homeassistant/components/tuya/humidifier.py", line 114, in init self._attr_min_humidity = int(type_data.min_scaled) File "/usr/src/homeassistant/homeassistant/components/tuya/base.py", line 39, in min_scaled return self.scale_value(self.min) File "/usr/src/homeassistant/homeassistant/components/tuya/base.py", line 48, in scale_value return value * 1.0 / (10 ** self.scale) TypeError: can't multiply sequence by non-int of type 'float'

    bug 
    opened by mortendok 20
  • Add Support for DS02 / DS02F Fan Controls

    Add Support for DS02 / DS02F Fan Controls

    This adds support for DS02F (Treatlife brand, and others) type dedicated fan controls. See issues #345 and #138.

    Product Name: Smart Ceiling Fan Switch-DS02F Product Category: fskg

    opened by schonfeld 18
  • Add support for smart water quality meter Yieryi YY-W9909

    Add support for smart water quality meter Yieryi YY-W9909

    Please add support for smart water quality meter Yieryi YY-W9909. It currently only shows water temperature and I wish it would also show pH, TDS, EC, Salinity, and Proportion (specific gravity).

    Data shows up in the Tuya IOT platform Device Debugging

    image

    The tuya integeration data diagnostics shows the following:

    "data": { "endpoint": "https://openapi.tuyaus.com", "auth_type": 0, "country_code": "1", "app_type": "tuyaSmart", "mqtt_connected": true, "disabled_by": null, "disabled_polling": false, "devices": [ { "name": "FishTank", "model": "YY-9909", "category": "dgnbj", "product_id": "5ok0wq7drlqyo2hb", "product_name": "YY-9909", "online": true, "sub": false, "time_zone": "-06:00", "active_time": "2022-09-19T18:52:33+00:00", "create_time": "2022-09-19T18:45:50+00:00", "update_time": "2022-09-19T18:56:55+00:00", "function": { "ph_warn_max": { "type": "Integer", "value": { "unit": "", "min": 0, "max": 1500, "scale": 2, "step": 1 } }, "ph_warn_min": { "type": "Integer", "value": { "unit": "", "min": 0, "max": 1500, "scale": 2, "step": 1 } }, "temp_warn_max": { "type": "Integer", "value": { "unit": "\u2103", "min": -100, "max": 1100, "scale": 1, "step": 1 } }, "temp_warn_min": { "type": "Integer", "value": { "unit": "\u2103", "min": -100, "max": 1100, "scale": 1, "step": 1 } }, "tds_warn_max": { "type": "Integer", "value": { "unit": "ppm", "min": 0, "max": 199999, "scale": 0, "step": 1 } }, "tds_warn_min": { "type": "Integer", "value": { "unit": "ppm", "min": 0, "max": 199999, "scale": 0, "step": 1 } }, "ec_warn_max": { "type": "Integer", "value": { "unit": "us", "min": 0, "max": 199999, "scale": 0, "step": 1 } }, "ec_warn_min": { "type": "Integer", "value": { "unit": "us", "min": 0, "max": 199999, "scale": 0, "step": 1 } }, "salinity_warn_max": { "type": "Integer", "value": { "unit": "ppm", "min": 0, "max": 199999, "scale": 0, "step": 1 } }, "salinity_warn_min": { "type": "Integer", "value": { "unit": "ppm", "min": 0, "max": 199999, "scale": 0, "step": 1 } }, "pro_warn_max": { "type": "Integer", "value": { "unit": "S.G", "min": 500, "max": 2000, "scale": 3, "step": 1 } }, "pro_warn_min": { "type": "Integer", "value": { "unit": "S.G", "min": 500, "max": 2000, "scale": 3, "step": 1 } }, "orp_warn_max": { "type": "Integer", "value": { "unit": "mV", "min": -2000, "max": 2000, "scale": 0, "step": 1 } }, "orp_warn_min": { "type": "Integer", "value": { "unit": "mV", "min": -2000, "max": 2000, "scale": 0, "step": 1 } }, "cf_warn_max": { "type": "Integer", "value": { "unit": "CF", "min": 0, "max": 199999, "scale": 2, "step": 1 } }, "cf_warn_min": { "type": "Integer", "value": { "unit": "CF", "min": 1, "max": 199999, "scale": 2, "step": 1 } }, "rh_warn_max": { "type": "Integer", "value": { "unit": "%", "min": 0, "max": 100, "scale": 0, "step": 1 } }, "rh_warn_min": { "type": "Integer", "value": { "unit": "%", "min": 0, "max": 100, "scale": 0, "step": 1 } } }, "status_range": { "temp_current": { "type": "Integer", "value": { "unit": "\u2103", "min": -100, "max": 1100, "scale": 1, "step": 1 } }, "sensor_list": { "type": "Raw", "value": {} }, "ph_current": { "type": "Integer", "value": { "unit": "", "min": 0, "max": 1500, "scale": 2, "step": 1 } }, "ph_warn_max": { "type": "Integer", "value": { "unit": "", "min": 0, "max": 1500, "scale": 2, "step": 1 } }, "ph_warn_min": { "type": "Integer", "value": { "unit": "", "min": 0, "max": 1500, "scale": 2, "step": 1 } }, "temp_warn_max": { "type": "Integer", "value": { "unit": "\u2103", "min": -100, "max": 1100, "scale": 1, "step": 1 } }, "temp_warn_min": { "type": "Integer", "value": { "unit": "\u2103", "min": -100, "max": 1100, "scale": 1, "step": 1 } }, "tds_current": { "type": "Integer", "value": { "unit": "ppm", "min": 0, "max": 199999, "scale": 0, "step": 1 } }, "tds_warn_max": { "type": "Integer", "value": { "unit": "ppm", "min": 0, "max": 199999, "scale": 0, "step": 1 } }, "tds_warn_min": { "type": "Integer", "value": { "unit": "ppm", "min": 0, "max": 199999, "scale": 0, "step": 1 } }, "ec_current": { "type": "Integer", "value": { "unit": "us", "min": 0, "max": 199999, "scale": 0, "step": 1 } }, "ec_warn_max": { "type": "Integer", "value": { "unit": "us", "min": 0, "max": 199999, "scale": 0, "step": 1 } }, "ec_warn_min": { "type": "Integer", "value": { "unit": "us", "min": 0, "max": 199999, "scale": 0, "step": 1 } }, "salinity_current": { "type": "Integer", "value": { "unit": "ppm", "min": 0, "max": 199999, "scale": 0, "step": 1 } }, "salinity_warn_max": { "type": "Integer", "value": { "unit": "ppm", "min": 0, "max": 199999, "scale": 0, "step": 1 } }, "salinity_warn_min": { "type": "Integer", "value": { "unit": "ppm", "min": 0, "max": 199999, "scale": 0, "step": 1 } }, "pro_current": { "type": "Integer", "value": { "unit": "S.G", "min": 500, "max": 2000, "scale": 3, "step": 1 } }, "pro_warn_max": { "type": "Integer", "value": { "unit": "S.G", "min": 500, "max": 2000, "scale": 3, "step": 1 } }, "pro_warn_min": { "type": "Integer", "value": { "unit": "S.G", "min": 500, "max": 2000, "scale": 3, "step": 1 } }, "orp_current": { "type": "Integer", "value": { "unit": "mV", "min": -2000, "max": 2000, "scale": 0, "step": 1 } }, "orp_warn_max": { "type": "Integer", "value": { "unit": "mV", "min": -2000, "max": 2000, "scale": 0, "step": 1 } }, "orp_warn_min": { "type": "Integer", "value": { "unit": "mV", "min": -2000, "max": 2000, "scale": 0, "step": 1 } }, "cf_current": { "type": "Integer", "value": { "unit": "CF", "min": 0, "max": 199999, "scale": 2, "step": 1 } }, "cf_warn_max": { "type": "Integer", "value": { "unit": "CF", "min": 0, "max": 199999, "scale": 2, "step": 1 } }, "cf_warn_min": { "type": "Integer", "value": { "unit": "CF", "min": 1, "max": 199999, "scale": 2, "step": 1 } }, "rh_current": { "type": "Integer", "value": { "unit": "%", "min": 0, "max": 100, "scale": 0, "step": 1 } }, "rh_warn_max": { "type": "Integer", "value": { "unit": "%", "min": 0, "max": 100, "scale": 0, "step": 1 } }, "rh_warn_min": { "type": "Integer", "value": { "unit": "%", "min": 0, "max": 100, "scale": 0, "step": 1 } } }, "status": { "temp_current": 240, "sensor_list": "AQEBAQEBAA==", "ph_current": 864, "ph_warn_max": 0, "ph_warn_min": 0, "temp_warn_max": 315, "temp_warn_min": -100, "tds_current": 266, "tds_warn_max": 0, "tds_warn_min": 0, "ec_current": 532, "ec_warn_max": 0, "ec_warn_min": 0, "salinity_current": 310, "salinity_warn_max": 0, "salinity_warn_min": 0, "pro_current": 984, "pro_warn_max": 500, "pro_warn_min": 500, "orp_current": 0, "orp_warn_max": -2000, "orp_warn_min": -2000 }, "home_assistant": { "name": "FishTank", "name_by_user": null, "disabled": false, "disabled_by": null, "entities": [ { "disabled": false, "disabled_by": null, "entity_category": null, "device_class": null, "original_device_class": "temperature", "icon": null, "original_icon": null, "unit_of_measurement": "\u00b0F", "state": { "entity_id": "sensor.fishtank_temperature", "state": "75.2", "attributes": { "state_class": "measurement", "unit_of_measurement": "\u00b0F", "device_class": "temperature", "friendly_name": "FishTank Temperature" }, "last_changed": "2022-12-22T21:54:06.684172+00:00", "last_updated": "2022-12-22T21:54:06.684172+00:00" } } ] } }

    Device specifications (please complete the following information, which can be found in log): Same device's id, like this: [2021-07-01 10:18:01,351] [tuya-openapi] Request: method = GET, url = https://openapi.tuyacn.com/v1.0/devices/aaaaaaaaaaa/specifications, params = None, body = None, headers = {'client_id': 'xxxxxxxxxxxx', 'sign': 'xxxxxxxxxxxx', 'sign_method': 'HMAC-SHA256', 'access_token': '213e2d4af5e8d217abc0b104462a9f72', 't': '1625105881351', 'lang': 'en'} 2021-07-01 10:18:01 DEBUG (SyncWorker_1) [tuya iot] Response: { "result": { "category": "cz", "functions": [ { "code": "countdown_1", "type": "Integer", "values": "{"unit":"s","min":0,"max":86400,"scale":0,"step":1}" }, { "code": "switch", "type": "Boolean", "values": "{}" } ], "status": [ { "code": "cur_voltage", "type": "Integer", "values": "{"unit":"V","min":0,"max":2500,"scale":0,"step":1}" }, { "code": "cur_current", "type": "Integer", "values": "{"unit":"mA","min":0,"max":30000,"scale":0,"step":1}" }, { "code": "switch", "type": "Boolean", "values": "{}" }, { "code": "cur_power", "type": "Integer", "values": "{"unit":"W","min":0,"max":50000,"scale":0,"step":1}" }, { "code": "countdown_1", "type": "Integer", "values": "{"unit":"s","min":0,"max":86400,"scale":0,"step":1}" } ] }, "success": true, "t": 1625105881348 }

    Device specifications (please complete the following information, which can be found in log): Same device's id, like this: [2021-07-01 10:18:01,351] [tuya-openapi] Request: method = GET, url = https://openapi.tuyacn.com/v1.0/devices/aaaaaaaaaaa/specifications, params = None, body = None, headers = {'client_id': 'xxxxxxxxxxxx', 'sign': 'xxxxxxxxxxxx', 'sign_method': 'HMAC-SHA256', 'access_token': '213e2d4af5e8d217abc0b104462a9f72', 't': '1625105881351', 'lang': 'en'} 2021-07-01 10:18:01 DEBUG (SyncWorker_1) [tuya iot] Response: {

    { "result": [ { "code": "temp_current", "value": 240 }, { "code": "sensor_list", "value": "AQEBAQEBAA==" }, { "code": "ph_current", "value": 863 }, { "code": "ph_warn_max", "value": 0 }, { "code": "ph_warn_min", "value": 0 }, { "code": "temp_warn_max", "value": 315 }, { "code": "temp_warn_min", "value": -100 }, { "code": "tds_current", "value": 268 }, { "code": "tds_warn_max", "value": 0 }, { "code": "tds_warn_min", "value": 0 }, { "code": "ec_current", "value": 536 }, { "code": "ec_warn_max", "value": 0 }, { "code": "ec_warn_min", "value": 0 }, { "code": "salinity_current", "value": 312 }, { "code": "salinity_warn_max", "value": 0 }, { "code": "salinity_warn_min", "value": 0 }, { "code": "pro_current", "value": 984 }, { "code": "pro_warn_max", "value": 500 }, { "code": "pro_warn_min", "value": 500 }, { "code": "orp_current", "value": 0 }, { "code": "orp_warn_max", "value": -2000 }, { "code": "orp_warn_min", "value": -2000 } ], "success": true, "t": 1671743814900, "tid": "f5dbf708823d11edb95a32baeb959352" }

    enhancement help wanted 
    opened by sleepingsparrow 0
  • [Bug] Tuya no longer offer free yearly trial.

    [Bug] Tuya no longer offer free yearly trial.

    So it was just last month when I added the integration to HAOS. It apparently now just 30 days now and even then you can't renew that subscription as a free trial. Due to this, my tuya devices no longer show up in the tuya integration. I wonder everyone who signed up before hand if they might be grandfathered in or something?

    bug 
    opened by Dvalin21 2
  • Smart Socket being imported as unsupported

    Smart Socket being imported as unsupported

    Device normal info

    • Tuya
    • Smart Socket Sold by amazon under the [TECKIN Smart Plug Mini WiFi Outlet Wireless Socket Compatible with Alexa, Echo,Google Home and Siri, WiFi Socket with Timer Function, IC ETL and FCC Certified, No Hub Required, White (4 Pack)] Device info (please complete the following information, which can be found in log): like this: { "home_assistant": { "installation_type": "Home Assistant OS", "version": "2022.12.7", "dev": false, "hassio": true, "virtualenv": false, "python_version": "3.10.7", "docker": true, "arch": "x86_64", "timezone": "America/Toronto", "os_name": "Linux", "os_version": "5.15.80", "supervisor": "2022. tuya tuya tuya-e0c902bbcc7eeac61089a707a91ec948-Basement Table Light-1bf6e2d01561bdaf8a7a900d3aa9d0c4.json.txt tuya-eed417a407ee112f7694a1bcf630d3f1-Basement Table Light-1bf6e2d01561bdaf8a7a900d3aa9d0c4.json.txt 11.2", "host_os": "Home Assistant OS 9.4", "docker_version": "20.10.19", "chassis": "vm", "run_as_root": true }, "custom_components": { "hacs": { "version": "1.28.4", "requirements": [ "aiogithubapi>=22.2.4" ] }, "dwains_dashboard": { "version": "3.3.0", "requirements": [] }, "watchman": { "version": "0.5.1", "requirements": [ "prettytable==3.0.0" ] } }, "integration_manifest": { "domain": "tuya", "name": "Tuya", "documentation": "https://www.home-assistant.io/integrations/tuya", "requirements": [ "tuya-iot-py-sdk==0.6.6" ], "dependencies": [ "ffmpeg" ], "codeowners": [ "@Tuya", "@zlinoliver", "@frenck" ], "config_flow": true, "iot_class": "cloud_push", "dhcp": [ { "macaddress": "105A17*" }, { "macaddress": "10D561*" }, { "macaddress": "1869D8*" }, { "macaddress": "381F8D*" }, { "macaddress": "508A06*" }, { "macaddress": "68572D*" }, { "macaddress": "708976*" }, { "macaddress": "7CF666*" }, { "macaddress": "84E342*" }, { "macaddress": "D4A651*" }, { "macaddress": "D81F12*" } ], "integration_type": "hub", "loggers": [ "tuya_iot" ], "is_built_in": true }, "data": { "endpoint": "https://openapi.tuyaus.com", "auth_type": 0, "country_code": "1", "app_type": "smartlife", "mqtt_connected": true, "disabled_by": null, "disabled_polling": false, "name": "Basement Table Light", "model": null, "category": "cz", "product_id": "octeoqhuayzof69q", "product_name": "Smart Socket", "online": true, "sub": false, "time_zone": "-05:00", "active_time": "2020-12-31T23:17:48+00:00", "create_time": "2020-12-31T23:17:48+00:00", "update_time": "2022-06-25T01:29:15+00:00", "function": { "switch_1": { "type": "Boolean", "value": {} }, "countdown_1": { "type": "Integer", "value": { "unit": "s", "min": 0, "max": 86400, "scale": 0, "step": 1 } } }, "status_range": { "switch_1": { "type": "Boolean", "value": {} }, "countdown_1": { "type": "Integer", "value": { "unit": "s", "min": 0, "max": 86400, "scale": 0, "step": 1 } } }, "status": { "switch_1": false, "countdown_1": 0 }, "home_assistant": { "name": "Basement Table Light", "name_by_user": null, "disabled": true, "disabled_by": "config_entry", "entities": [ { "disabled": true, "disabled_by": "config_entry", "entity_category": null, "device_class": null, "original_device_class": "outlet", "icon": null, "original_icon": null, "unit_of_measurement": null, "state": null } ] } } } tuya-eed417a407ee112f7694a1bcf630d3f1-Basement Table Light-1bf6e2d01561bdaf8a7a900d3aa9d0c4.json.txt tuya-e0c902bbcc7eeac61089a707a91ec948-Basement Table Light-1bf6e2d01561bdaf8a7a900d3aa9d0c4.json.txt
    enhancement help wanted 
    opened by eclizotte 1
  • Zigbee Door sensor shown as unsupported

    Zigbee Door sensor shown as unsupported

    Describe the bug

    Hello, i have 4 zigbee door sensor (by sonoff) and they are shown as unsupported in Home Assistant. I can see the device, but no entities are associated to the device Expected behavior

    Having the entity created for the device will be great

    Diagnostics for integrations and devices

    { "home_assistant": { "installation_type": "Home Assistant OS", "version": "2022.11.5", "dev": false, "hassio": true, "virtualenv": false, "python_version": "3.10.7", "docker": true, "arch": "aarch64", "timezone": "Europe/Paris", "os_name": "Linux", "os_version": "5.15.74", "supervisor": "2022.11.2", "host_os": "Home Assistant OS 9.3", "docker_version": "20.10.18", "chassis": "embedded", "run_as_root": true }, "custom_components": { "gazpar": { "version": "1.3.3", "requirements": [ "pygazpar==1.1.6", "pandas" ] }, "enphase_envoy": { "version": "0.1.2", "requirements": [ "envoy-utils" ] }, "hacs": { "version": "1.28.4", "requirements": [ "aiogithubapi>=22.2.4" ] }, "spotcast": { "version": "v3.6.30", "requirements": [ "spotify_token==1.0.0" ] }, "rte_ecowatt": { "version": "0.1.1", "requirements": [ "Async-OAuthlib==0.0.9" ] }, "rental_control": { "version": "v0.8.1", "requirements": [ "icalendar==4.0.7" ] }, "tesla_custom": { "version": "3.5.2", "requirements": [ "teslajsonpy==3.3.0" ] }, "govee": { "version": "0.2.2", "requirements": [ "govee-api-laggat==0.2.2", "dacite==1.6.0" ] }, "tuya": { "version": "1.0.0", "requirements": [ "tuya-iot-py-sdk==0.6.6" ] }, "landroid_cloud": { "version": "2.3.4", "requirements": [ "pyworxcloud==2.1.23" ] } }, "integration_manifest": { "domain": "tuya", "name": "Tuya", "documentation": "https://www.home-assistant.io/integrations/tuya", "requirements": [ "tuya-iot-py-sdk==0.6.6" ], "dependencies": [ "ffmpeg" ], "codeowners": [ "@Tuya", "@zlinoliver", "@frenck" ], "config_flow": true, "iot_class": "cloud_push", "dhcp": [ { "macaddress": "105A17*" }, { "macaddress": "10D561*" }, { "macaddress": "1869D8*" }, { "macaddress": "381F8D*" }, { "macaddress": "508A06*" }, { "macaddress": "68572D*" }, { "macaddress": "708976*" }, { "macaddress": "7CF666*" }, { "macaddress": "84E342*" }, { "macaddress": "D4A651*" }, { "macaddress": "D81F12*" } ], "loggers": [ "tuya_iot" ], "version": "1.0.0", "is_built_in": false }, "data": { "endpoint": "https://openapi.tuyaeu.com", "auth_type": 0, "country_code": "33", "app_type": "smartlife", "mqtt_connected": true, "disabled_by": null, "disabled_polling": false, "name": "porte bois", "model": "", "category": "mcs", "product_id": "7jIGJAymiH8OsFFb", "product_name": "Door Sensor", "online": true, "sub": true, "time_zone": "+01:00", "active_time": "2022-12-04T18:28:05+00:00", "create_time": "2022-12-04T18:28:05+00:00", "update_time": "2022-12-04T18:28:26+00:00", "function": {}, "status_range": { "switch": { "type": "Boolean", "value": {} }, "battery": { "type": "Integer", "value": { "unit": "", "min": 0, "max": 500, "scale": 0, "step": 1 } } }, "status": { "switch": false, "battery": 100 }, "home_assistant": { "name": "porte bois", "name_by_user": null, "disabled": false, "disabled_by": null, "entities": [] } } }

    Screenshots

    If applicable, add screenshots to help explain your problem.

    Home Assistant Version

    • 2022.11.5

    Device info (please complete the following information, which can be found in log):

    like this: { "active_time": 1623229189, "biz_type": 18, "category": "cz", "create_time": 1560491945, "icon": "smart/product_icon/cz.png", "id": "aaaaaaaaaaa", "ip": "xxxxxxxxxxxxxxxx", "lat": "xxxxxxxxxx", "local_key": "xxxxxxxxxxxxx", "lon": "xxxxxxx", "model": "", "name": "Living Room Socket", "online": false, "owner_id": "34794909", "product_id": "yfemiswbgjhddhcf", "product_name": "Switch Product", "status": [ { "code": "switch", "value": false }, { "code": "countdown_1", "value": 0 }, { "code": "cur_current", "value": 0 }, { "code": "cur_power", "value": 0 }, { "code": "cur_voltage", "value": 2343 } ], "sub": false, "time_zone": "+08:00", "uid": "xxxxxxxxxxxxxxxxxxx", "update_time": 1625101929, "uuid": "xxxxxxxxxxxxxxxxxx" }

    Device specifications (please complete the following information, which can be found in log):

    Additional context

    Add any other context or logs about the problem here.

    bug 
    opened by Sdelos 0
  • Smart Life device reconnection creates duplicate id in HA

    Smart Life device reconnection creates duplicate id in HA

    If a Smart Life WiFi device goes offline, or if the WiFi credentials change, it is reconnected using “add device” in Smart Life. Smart Life recognises the device as existing and reconnects it to the same id as before. However the Tuya integration does not correctly connect it to the existing HA device id. Instead HA reports a “duplicate id”, which makes the device unusable.

    The integration should make the device reappear in HA as before.

    Home Assistant Version 2022.11.1

    bug 
    opened by AndySymons 0
  • Smart Life Scenes lost to Alexa routines after HA reboot

    Smart Life Scenes lost to Alexa routines after HA reboot

    The Tuya integration makes Smart Life scenes visible in HA. If Alexa is linked to HA (through the HA skill) the scenes can be seen and accessed through Alexa routines. However, if HA is restarted the scenes are deleted in Alexa. They should be persisted in the same way as HA native scenes and scripts. The Smart Life scenes in HA can be rediscovered by Alexa, but then it is necessary to rebuild all the Alexa routines.

    A workaround is to write an HA script or scene for every Smart Life scene -- HA scripts and scenes are reflected as Scenes in Alexa and are persisted when HA restarts.

    Home Assistant Version 2022.11.1

    bug 
    opened by AndySymons 1
Releases(v1.6.0)
  • v1.6.0(Oct 15, 2021)

    Important Note

    This release is mainly for code refactoring based on HA Core Tuya PRs: https://github.com/home-assistant/core/pulls?q=tuya

    The Tuya v2 integration is finally released on Home Assistant platform on October 7th, you can check this link for details: Tuya HA Core version

    But for now, the Tuya HA core version is not as powerful as the Tuya v2 in this Github repo, we will continue to cooperate with the Home Assistant team to add more products support and fix bugs for the Tuya HA core version.

    Please note that you cannot use Tuya v2 and Tuya HA core version at the same time.

    You can get more details from the sheet below:

    supported_version Source code(tar.gz)
    Source code(zip)
  • v1.5.0(Aug 11, 2021)

    New Supported Products

    • Garage Door Opener (ckmkzq)
    • Dehumidifier (cs)
    • Smart Electricity Meter (zndb)
    • Coffee Maker (kfj)

    New Features

    New Language Support

    • Hindi

    Fixed issues

    • Fan light [#263]
    • Cover can't up [#261][#313]
    • Don't print sensitive info in the log [#207]
    • New driver for kogan smart heater [#249]
    • Support Garage Door Opener [#231][#215]
    • Support Dehumidifier [#222]
    • Climate mode error [#266][#206]
    • Single status value PIR [#140][#144]
    • Setup error [#272][#321]

    Thanks

    • skynetua for Smart Electricity Meter
    • rishabmehta7 for support Hindi
    • Sthopeless for Coffee Maker
    Source code(tar.gz)
    Source code(zip)
  • v1.4.2(Jul 28, 2021)

    Important Note

    Please update to v1.4.2 as the previous version has serious issues on the initialization which breaks the integration.

    Fixed Important Issue

    • Integration startup error after update [#209]
    Source code(tar.gz)
    Source code(zip)
  • v1.4.1(Jul 27, 2021)

  • v1.4.0(Jul 23, 2021)

    New Feature

    • Scene
    • Ceiling Light (xdd)
    • Diffuser full capabilities (xxj)
    • NL translation
    • German translation

    Fixed Issues

    • Ceiling Light [#116]
    • Adding Scene [#30]

    Thanks

    • Jhonattan-Souza for Diffusers
    • frankosborne for Smart Kettle
    • JohanBraeken for NL translation
    • pfefferle for German translation
    • Nardol for French Translation
    • osk2 for Traditional Chinese Translation
    • gelokatil for Spanish Translation
    • dougiteixeira for Portuguese Translation
    Source code(tar.gz)
    Source code(zip)
  • v1.3.2(Jul 16, 2021)

    Important Notes

    Use v1.3.1 version must update to v1.3.2 or later version as the Tuya Open API Login API is updated.

    New Supported Products

    • Air Purifier (kj)
    • Lock (ms)
    • Diffuser (xxj)

    Fixed Issues

    • Pir sensor [#72 ]
    • Smoke sensor [#151 ]
    • Battery state [#120 ]

    Thanks

    • Michal Duda for Air Purifer
    • Jhonattan Souza for Select Entity
    • Sthopeless for Lock
    Source code(tar.gz)
    Source code(zip)
  • v1.3.1(Jul 4, 2021)

    New Supported Products

    • Circuit Breaker (dlq)
    • Luminance Sensor (ldcg)

    Fixed Issues

    • Fixed the issue where contact sensors cannot be added. [#14][#37]
    • Fixed the issues where some color lights cannot be turned on. [#42]
    • Fixed the issues where some humidifiers cannot work correctly. [#36]

    New Features

    • Removed the Region field that is previously required when you set up your Tuya credential.
    Source code(tar.gz)
    Source code(zip)
  • v1.3(Jun 30, 2021)

    Important Notes

    New IoT projects created after 2021-06-30 must use v1.3 or later version as the Tuya Open API sign algorithm is updated.

    Supported New Products

    • cwysj: Pet water feeder
    • sd: Robot Vaccum
    • wk: Thermostat

    Fixed Issues

    • Support current, power, voltage on some device, like socket, power strip and switch #17
    • Support vacuum #9
    • Support Thermostat #7
    • Support Pet Water Feeder #23
    • Fix AC shows incorrect temperature #15

    New Features

    Source code(tar.gz)
    Source code(zip)
  • v1.2(Jun 16, 2021)

  • v1.1(May 27, 2021)

    • Added support for Tuya smart home project type
    • Support new Tuya device types: Cover, Fan and Climate
    • Support new device pairing status refresh
    Source code(tar.gz)
    Source code(zip)
  • v1.0(Apr 25, 2021)

Owner
Tuya
Tuya
Project glow is an open source bot worked on by many people to create a good and safe moderation bot for all

Project Glow Greetings, I see you have stumbled upon project glow. Project glow is an open source bot worked on by many people to create a good and sa

Glowstikk 24 Sep 29, 2022
Telegram client written in GTK & Python

Meowgram GTK Telegram Client 🐱 Why Meogram? Meowgram = Meow + Gram :D Meow - Talking cats sound. It's a symbol of unique and user friendly UI of clie

Artem Prokop 71 May 04, 2022
Async boto3 with Autogenerated Data Classes

awspydk Async boto3 with Autogenerated JIT Data Classes Motivation This library is forked from an internal project that works with a lot of backend AW

1 Dec 05, 2021
DadBot 2.0 is an interactive bot that reflects the personality of a typical dad

DadBot 2.0 is an interactive bot that reflects the personality of a typical dad! You can start by running main while all directories are maintained as they are on this GitHub.

1 Dec 04, 2021
Código que verifica se o grafo é Hamiltoniano (Em Python)

Código para encontrar um ciclo de Hamilton em um dado grafo e a partir daí verificar se o grafo é hamiltoniano. Um ciclo hamiltoniano é um ciclo gerad

Hemili Beatriz 1 Jan 08, 2022
可基于【腾讯云函数】/【GitHub Actions】/【Docker】的每日签到脚本(支持多账号使用)签到列表: |爱奇艺|全民K歌|腾讯视频|有道云笔记|网易云音乐|一加手机社区官方论坛|百度贴吧|Bilibili|V2EX|咔叽网单|什么值得买|AcFun|天翼云盘|WPS|吾爱破解|芒果TV|联通营业厅|Fa米家|小米运动|百度搜索资源平台|每日天气预报|每日一句|哔咔漫画|和彩云|智友邦|微博|CSDN|王者营地|

每日签到集合 基于【腾讯云函数】/【GitHub Actions】/【Docker】的每日签到脚本 支持多账号使用 特别声明: 本仓库发布的脚本及其中涉及的任何解锁和解密分析脚本,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。

87 Nov 12, 2022
EZPZ-PGP: This is a simple and easy to use PGP tool.

EZPZ-PGP This is a simple and easy to use PGP tool. Features [X] Create new PGP Keypairs, able to choose between 4096 and 8192 bit keys.\n [X] Import

6 Dec 30, 2022
ClassesMD5-64 - Get whatsapp md5 code using python

Hello Installation Clone Repo & install bash $ git clone https://github.com/Pito

PitoDev 1 Jan 03, 2022
wyscoutapi is an extremely basic API client for the Wyscout API (v2 & v3) for Python

wyscoutapi wyscoutapi is an extremely basic API client for the Wyscout API (v2 & v3). Usage Install with pip install wyscoutapi. To connect to the Wys

Ben Torvaney 11 Nov 22, 2022
The python SDK for Eto, the AI focused data platform for teams bringing AI models to production

Eto Labs Python SDK This is the python SDK for Eto, the AI focused data platform for teams bringing AI models to production. The python SDK makes it e

5 Apr 21, 2022
Busty - A bot for the Busty Discord server

Busty Discord bot used for the Busty server. Install You'll need at least Python

Andrew Morgan 7 Dec 05, 2022
The raid botnet for Telegram

telegram-raid-botnet The raid botnet for Telegram Что нужно сделать перед запуском? Установить модули pip3 install -r requirements.txt Добавить аккаун

Maxim 68 Jan 03, 2023
Programa de código abierto para probar el API de Bitso, el exchange más importante de América Latina.

Bitso Semiautomático Programa de código abierto para probar el API de Bitso, el exchange más importante de América Latina. Desarrollador Fernando Mire

Fernando Mireles 17 Dec 07, 2022
A Python wrapper around the Soundcloud API

soundcloud-python A friendly wrapper around the Soundcloud API. Installation To install soundcloud-python, simply: pip install soundcloud Or if you'r

SoundCloud 83 Dec 12, 2022
Repo-cloner - Script takes user public liked repos and clone it to a local folder

Liked repos cloner Script takes user public liked repos and clone it to a local

Aleksei 2 Jun 18, 2022
Low-level, feature rich and easy to use discord python wrapper

PWRCord Low-level, feature rich and easy to use discord python wrapper Important Note: At this point, this library API is considered unstable and can

MIguel Lopes 1 Dec 26, 2021
A Python implementation of a Youtube Subscription manager & feed viewer, also does thumbnails

BUILDING Building requires python3.10, and the build package, which can be installed via pip: python3.10 -m pip install build To install, run python3.

2 Feb 28, 2022
Simple Bot With Python 3.8+ For Converstaion Your Media

Media-Conversation Simple Bot With Python 3.8+ For Converstaion Your Media

Farzin 2 Dec 06, 2021
A Python SDK for Tinybird 🐦

Verdin Verdin is a tiny bird, and also a Python SDK for Tinybird . Install pip install verdin Usage Query a Pipe # the tinybird module exposes all im

LocalStack 13 Dec 14, 2022
Project developed as part of a selection process for the company Denox

📝 Tabela de conteúdos Sobre Requisitos para rodar o projeto Instalação Rotas da API Observações 🧐 Sobre Projeto desenvolvido como parte de um proces

Ícaro Sant'Ana 1 Mar 01, 2022