make-all / tuya-local

Local support for Tuya devices in Home Assistant
MIT License
1.25k stars 498 forks source link

[New device] Support for PNI CT400 - 2 zone thermostat with gateway #2345

Closed robex2005 closed 3 hours ago

robex2005 commented 3 hours ago

Log message

{
  "home_assistant": {
    "installation_type": "Home Assistant Container",
    "version": "2024.9.3",
    "dev": false,
    "hassio": false,
    "virtualenv": false,
    "python_version": "3.12.4",
    "docker": true,
    "arch": "x86_64",
    "timezone": "Europe/Bucharest",
    "os_name": "Linux",
    "os_version": "6.1.0-25-amd64",
    "run_as_root": true
  },
  "custom_components": {
    "tplink_router": {
      "documentation": "https://github.com/menahishayan/Home-Assistant-TP-Link-Router",
      "version": "0.0.7",
      "requirements": [
        "tplinkrouter>=1.0.0"
      ]
    },
    "scheduler": {
      "documentation": "https://github.com/nielsfaber/scheduler-component",
      "version": "v0.0.0",
      "requirements": []
    },
    "imou_life": {
      "documentation": "https://github.com/user2684/imou_life",
      "version": "1.0.15",
      "requirements": [
        "imouapi==1.0.15"
      ]
    },
    "tuya_local": {
      "documentation": "https://github.com/make-all/tuya-local",
      "version": "2024.9.1",
      "requirements": [
        "tinytuya==1.15.1",
        "tuya-device-sharing-sdk>=0.1.9,<=0.2.99"
      ]
    },
    "browser_mod": {
      "documentation": "https://github.com/thomasloven/hass-browser_mod/blob/master/README.md",
      "version": "2.3.1",
      "requirements": []
    },
    "hikvision_next": {
      "documentation": "https://github.com/maciej-or/hikvision_next",
      "version": "1.0.17",
      "requirements": [
        "xmltodict==0.13.0",
        "hikvisionapi==0.3.2",
        "requests-toolbelt==1.0.0"
      ]
    },
    "powercalc": {
      "documentation": "https://docs.powercalc.nl",
      "version": "v1.14.9",
      "requirements": [
        "numpy>=1.21.1"
      ]
    },
    "localtuya": {
      "documentation": "https://github.com/xZetsubou/hass-localtuya/",
      "version": "2024.9.0",
      "requirements": []
    },
    "hacs": {
      "documentation": "https://hacs.xyz/docs/configuration/start",
      "version": "2.0.1",
      "requirements": [
        "aiogithubapi>=22.10.1"
      ]
    },
    "watchman": {
      "documentation": "https://github.com/dummylabs/thewatchman",
      "version": "0.6.3",
      "requirements": [
        "prettytable==3.10.0"
      ]
    },
    "virtual": {
      "documentation": "https://github.com/twrecked/hass-virtual/blob/master/README.md",
      "version": "0.8.0.1",
      "requirements": []
    },
    "dahua": {
      "documentation": "https://github.com/rroller/dahua",
      "version": "0.9.60",
      "requirements": []
    },
    "webrtc": {
      "documentation": "https://github.com/AlexxIT/WebRTC",
      "version": "v3.5.2",
      "requirements": []
    }
  },
  "integration_manifest": {
    "domain": "tuya_local",
    "name": "Tuya Local",
    "codeowners": [
      "make-all"
    ],
    "config_flow": true,
    "dependencies": [],
    "documentation": "https://github.com/make-all/tuya-local",
    "integration_type": "device",
    "iot_class": "local_push",
    "issue_tracker": "https://github.com/make-all/tuya-local/issues",
    "requirements": [
      "tinytuya==1.15.1",
      "tuya-device-sharing-sdk>=0.1.9,<=0.2.99"
    ],
    "version": "2024.9.1",
    "is_built_in": false
  },
  "setup_times": {
    "null": {
      "setup": 5.217129364609718e-05
    },
    "dd79d94214bd471d8d5d016927751e28": {
      "wait_import_platforms": -7.233800454065204,
      "config_entry_setup": 8.279217539355159
    },
    "58ebc1d6fac48275df90fb4c1eb5a0e8": {
      "wait_import_platforms": -7.238736346829683,
      "config_entry_setup": 8.279266916681081
    },
    "d12a02625451d728caafc4e1b60c4ab4": {
      "wait_import_platforms": -7.323434611782432,
      "config_entry_setup": 8.297544728964567
    },
    "e3cd91280f4bfca8a5ce3d921760bc26": {
      "wait_import_platforms": -7.326100453734398,
      "config_entry_setup": 8.283666010014713
    },
    "ff7fc0b6af2169b421b83665ba330dd9": {
      "wait_import_platforms": -7.326446097809821,
      "config_entry_setup": 8.287361241877079
    },
    "01ef5ffc070be8fb286a13204a5e3a6c": {
      "wait_import_platforms": -7.3267826633527875,
      "config_entry_setup": 8.287855648435652
    },
    "891593273f8163822993c0ee8336b542": {
      "wait_import_platforms": -7.3269274439662695,
      "config_entry_setup": 8.288229300174862
    },
    "bee3338d0e3983c6780a8c0d12b7bd5e": {
      "wait_import_platforms": -7.326943995896727,
      "config_entry_setup": 8.291247279848903
    },
    "5b38acd90bc7aaef27bbf9bb460bf581": {
      "wait_import_platforms": -7.330758168362081,
      "config_entry_setup": 8.291546202264726
    },
    "861840c157f7283442426460df0d229a": {
      "wait_import_platforms": -7.364822133909911,
      "config_entry_setup": 8.291567991953343
    },
    "828633252b8a3d1d8f93f091e92f3b0c": {
      "wait_import_platforms": -7.380086574237794,
      "config_entry_setup": 8.291588595137
    },
    "01J8W8SH47MF5AC0MT6BNX3Y8V": {
      "wait_import_platforms": -7.391615482978523,
      "config_entry_setup": 8.290908758994192
    },
    "31edc989f384675ed970f7046326da00": {
      "wait_import_platforms": -7.663098871242255,
      "config_entry_setup": 8.326423609163612
    }
  },
  "data": {
    "name": "Termostat Daria",
    "type": "etop_ht_01ac__thermostat",
    "device_id": "**REDACTED**",
    "device_cid": "**REDACTED**",
    "local_key": "**REDACTED**",
    "host": "**REDACTED**",
    "protocol_version": 3.3,
    "tinytuya_version": "1.15.1",
    "api_version_set": 3.3,
    "api_version_used": 3.3,
    "api_working": true,
    "status": {},
    "cached_state": {
      "updated_at": 1727526870.861745,
      "1": false,
      "2": "eco",
      "3": "idle",
      "8": true,
      "10": false,
      "16": 100,
      "19": 215,
      "24": 229,
      "26": 100,
      "27": 0,
      "40": false,
      "45": 0,
      "101": 2
    },
    "pending_state": {},
    "connected": true,
    "force_dps": [],
    "home_assistant": {
      "name": "Termostat Daria",
      "name_by_user": null,
      "disabled": false,
      "disabled_by": null,
      "entities": [
        {
          "disabled": false,
          "disabled_by": null,
          "entity_category": "config",
          "device_class": null,
          "original_device_class": null,
          "icon": null,
          "unit_of_measurement": null,
          "state": {
            "entity_id": "switch.termostat_daria_anti_frost",
            "state": "off",
            "attributes": {
              "icon": "mdi:snowflake-melt",
              "friendly_name": "Termostat Daria Anti-frost"
            },
            "last_changed": "2024-09-28T12:18:45.196815+00:00",
            "last_reported": "2024-09-28T12:18:45.196815+00:00",
            "last_updated": "2024-09-28T12:18:45.196815+00:00"
          }
        },
        {
          "disabled": false,
          "disabled_by": null,
          "entity_category": "config",
          "device_class": null,
          "original_device_class": "temperature",
          "icon": null,
          "unit_of_measurement": "\u00b0C",
          "state": {
            "entity_id": "number.termostat_daria_setpoint_min",
            "state": "10.0",
            "attributes": {
              "min": 0.0,
              "max": 100.0,
              "step": 0.5,
              "mode": "slider",
              "unit_of_measurement": "\u00b0C",
              "device_class": "temperature",
              "friendly_name": "Termostat Daria Setpoint min."
            },
            "last_changed": "2024-09-28T12:18:45.195417+00:00",
            "last_reported": "2024-09-28T12:18:45.195417+00:00",
            "last_updated": "2024-09-28T12:18:45.195417+00:00"
          }
        },
        {
          "disabled": false,
          "disabled_by": null,
          "entity_category": "config",
          "device_class": null,
          "original_device_class": "temperature",
          "icon": null,
          "unit_of_measurement": "\u00b0C",
          "state": {
            "entity_id": "number.termostat_daria_setpoint_max",
            "state": "21.5",
            "attributes": {
              "min": 5.0,
              "max": 100.0,
              "step": 0.5,
              "mode": "slider",
              "unit_of_measurement": "\u00b0C",
              "device_class": "temperature",
              "friendly_name": "Termostat Daria Setpoint max."
            },
            "last_changed": "2024-09-28T12:18:45.195959+00:00",
            "last_reported": "2024-09-28T12:18:45.195959+00:00",
            "last_updated": "2024-09-28T12:18:45.195959+00:00"
          }
        },
        {
          "disabled": false,
          "disabled_by": null,
          "entity_category": "config",
          "device_class": null,
          "original_device_class": null,
          "icon": null,
          "unit_of_measurement": "\u00b0C",
          "state": {
            "entity_id": "number.termostat_daria_temperature_correction",
            "state": "0.0",
            "attributes": {
              "min": -10.0,
              "max": 10.0,
              "step": 0.5,
              "mode": "slider",
              "unit_of_measurement": "\u00b0C",
              "friendly_name": "Termostat Daria Temperature correction"
            },
            "last_changed": "2024-09-28T12:18:45.196435+00:00",
            "last_reported": "2024-09-28T12:18:45.196435+00:00",
            "last_updated": "2024-09-28T12:18:45.196435+00:00"
          }
        },
        {
          "disabled": false,
          "disabled_by": null,
          "entity_category": "config",
          "device_class": null,
          "original_device_class": null,
          "icon": null,
          "unit_of_measurement": null,
          "state": {
            "entity_id": "lock.termostat_daria_child_lock",
            "state": "unlocked",
            "attributes": {
              "icon": "mdi:hand-back-right",
              "friendly_name": "Termostat Daria Child lock",
              "supported_features": 0
            },
            "last_changed": "2024-09-28T12:18:45.189783+00:00",
            "last_reported": "2024-09-28T12:18:45.189783+00:00",
            "last_updated": "2024-09-28T12:18:45.189783+00:00"
          }
        },
        {
          "disabled": false,
          "disabled_by": null,
          "entity_category": "diagnostic",
          "device_class": null,
          "original_device_class": "problem",
          "icon": null,
          "unit_of_measurement": null,
          "state": {
            "entity_id": "binary_sensor.termostat_daria_error",
            "state": "off",
            "attributes": {
              "device_class": "problem",
              "friendly_name": "Termostat Daria Error"
            },
            "last_changed": "2024-09-28T12:18:45.189361+00:00",
            "last_reported": "2024-09-28T12:18:45.189361+00:00",
            "last_updated": "2024-09-28T12:18:45.189361+00:00"
          }
        },
        {
          "disabled": false,
          "disabled_by": null,
          "entity_category": null,
          "device_class": null,
          "original_device_class": null,
          "icon": null,
          "unit_of_measurement": null,
          "state": {
            "entity_id": "climate.termostat_daria_thermostat",
            "state": "off",
            "attributes": {
              "hvac_modes": [
                "off",
                "heat"
              ],
              "min_temp": 10.0,
              "max_temp": 21.5,
              "target_temp_step": 0.5,
              "preset_modes": [
                "Manual",
                "Eco",
                "Auto"
              ],
              "current_temperature": 22.9,
              "temperature": 10.0,
              "hvac_action": "idle",
              "preset_mode": "Eco",
              "fault_code": 0,
              "icon": "mdi:sprout",
              "friendly_name": "Termostat Daria",
              "supported_features": 401
            },
            "last_changed": "2024-09-28T12:18:45.194525+00:00",
            "last_reported": "2024-09-28T12:18:45.194525+00:00",
            "last_updated": "2024-09-28T12:18:45.194525+00:00"
          }
        }
      ]
    }
  }
}

DPS information

{
  "result": {
    "properties": [
      {
        "code": "switch",
        "custom_name": "",
        "dp_id": 1,
        "time": 1727027484843,
        "type": "bool",
        "value": false
      },
      {
        "code": "mode",
        "custom_name": "",
        "dp_id": 2,
        "time": 1725297275753,
        "type": "enum",
        "value": "eco"
      },
      {
        "code": "work_state",
        "custom_name": "",
        "dp_id": 3,
        "time": 1725297276732,
        "type": "enum",
        "value": "idle"
      },
      {
        "code": "window_check",
        "custom_name": "",
        "dp_id": 8,
        "time": 1725297277732,
        "type": "bool",
        "value": true
      },
      {
        "code": "frost",
        "custom_name": "",
        "dp_id": 10,
        "time": 1725297278724,
        "type": "bool",
        "value": false
      },
      {
        "code": "temp_set",
        "custom_name": "",
        "dp_id": 16,
        "time": 1727524233553,
        "type": "value",
        "value": 100
      },
      {
        "code": "upper_temp",
        "custom_name": "",
        "dp_id": 19,
        "time": 1725297280727,
        "type": "value",
        "value": 230
      },
      {
        "code": "temp_current",
        "custom_name": "",
        "dp_id": 24,
        "time": 1727524234009,
        "type": "value",
        "value": 245
      },
      {
        "code": "lower_temp",
        "custom_name": "",
        "dp_id": 26,
        "time": 1725297282884,
        "type": "value",
        "value": 100
      },
      {
        "code": "temp_correction",
        "custom_name": "",
        "dp_id": 27,
        "time": 1725297283889,
        "type": "value",
        "value": 0
      },
      {
        "code": "week_program2",
        "custom_name": "",
        "dp_id": 37,
        "time": 1727241186609,
        "type": "raw",
        "value": "CB4AyAweAM0RAADNFgAAzQgeAMgMHgDNEQAAzRYAAM0IHgDIDB4AzREAAM0WAADNCB4AyAweAM0RAADNFgAAzQgeAMgMHgDNEQAAzRYAAM0IHgDIDB4AzREAAM0WAADNCB4AyAweAM0RAADNFgAAzQ=="
      },
      {
        "code": "factory_reset",
        "custom_name": "",
        "dp_id": 39,
        "time": 1682160502184,
        "type": "bool",
        "value": false
      },
      {
        "code": "child_lock",
        "custom_name": "",
        "dp_id": 40,
        "time": 1725297285873,
        "type": "bool",
        "value": false
      },
      {
        "code": "fault",
        "custom_name": "",
        "dp_id": 45,
        "time": 1725297286884,
        "type": "bitmap",
        "value": 0
      },
      {
        "code": "dead_zone",
        "custom_name": "",
        "dp_id": 101,
        "time": 1725297287882,
        "type": "value",
        "value": 2
      }
    ]
  },
  "success": true,
  "t": 1727524346851,
  "tid": "21d2cebf7d9011ef88b02ac421ecbce6"
}

Product ID

tsnkt6albivl8vaf

Product Name

PNI CT400

Information about how the device functions

Gateway: { "result": { "category": "wg2", "functions": [] }, "success": true, "t": 1727524714991, "tid": "fd4205767d9011efb77736033862a1ba" }

Thermostats: { "result": { "category": "wk", "functions": [ { "code": "switch", "desc": "switch", "name": "switch", "type": "Boolean", "values": "{}" }, { "code": "mode", "desc": "mode", "name": "mode", "type": "Enum", "values": "{\"range\":[\"manual\",\"eco\",\"program\"]}" }, { "code": "window_check", "desc": "window check", "name": "window check", "type": "Boolean", "values": "{}" }, { "code": "frost", "desc": "frost", "name": "frost", "type": "Boolean", "values": "{}" }, { "code": "temp_set", "desc": "temp set", "name": "temp set", "type": "Integer", "values": "{\"unit\":\"℃\",\"min\":50,\"max\":350,\"scale\":1,\"step\":5}" }, { "code": "upper_temp", "desc": "upper temp", "name": "upper temp", "type": "Integer", "values": "{\"unit\":\"℃\",\"min\":50,\"max\":800,\"scale\":1,\"step\":5}" }, { "code": "lower_temp", "desc": "lower temp", "name": "lower temp", "type": "Integer", "values": "{\"unit\":\"℃\",\"min\":50,\"max\":500,\"scale\":1,\"step\":5}" }, { "code": "temp_correction", "desc": "temp correction", "name": "temp correction", "type": "Integer", "values": "{\"unit\":\"\",\"min\":-80,\"max\":80,\"scale\":1,\"step\":1}" }, { "code": "factory_reset", "desc": "factory reset", "name": "factory reset", "type": "Boolean", "values": "{}" }, { "code": "child_lock", "desc": "child lock", "name": "child lock", "type": "Boolean", "values": "{}" } ] }, "success": true, "t": 1727524674944, "tid": "e562c4db7d9011efbc016e7818a0f8a2" }

Full working config file:

name: ETOP-HT-01AC thermostat products:

primary_entity: entity: climate name: Thermostat dps:

robex2005 commented 3 hours ago

Attached full yaml (renamed to txt) pni_ct_400_thermostat.txt