rospogrigio / localtuya

local handling for Tuya devices
GNU General Public License v3.0
2.71k stars 530 forks source link

Add support for Tuya WIFI plugged Temp and Humidity sensors #856

Open poolMiniDomo opened 2 years ago

poolMiniDomo commented 2 years ago

Hello,

looking for support for Temp and Humidity sensors. I bought this device to work locally: https://www.amazon.fr/MOES-Commutation-Intelligent-temp%C3%A9rature-t%C3%A9l%C3%A9commande/dp/B09TBBT1CD/ref=sr_1_4?__mk_fr_FR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=13OM3XJQP117T&keywords=MOES+WiFi+Smart+Temperature+Sensor&qid=1655097785&sprefix=moes+wifi+smart+temperature+sensor%2Caps%2C127&sr=8-4

"category": "wkcz", "name": "Two-way temperature and humidity switch", "product_id": "dlsdk5zvkuuhufpy", "product_name": "Two-way temperature and humidity switch",

I need temperature in C° (switches don't interest me) I am new to HA, but I believe that this sensor is not yet supported.

thanks in advance

jeremysherriff commented 2 years ago

Please follow these instructions to obtain a DPs dump and report back the results: https://github.com/rospogrigio/localtuya/wiki/HOWTO-get-a-DPs-dump

The dev's are a little busy with bugs from the big v4 upgrade, but if you can get the DPs info it'll help a lot. We might even be able to set up some sensors that achieve what you need, without any changes.

poolMiniDomo commented 2 years ago

I excute the DPs Dump

DPS [1] VALUE [True] DPS [2] VALUE [False] DPS [3] VALUE [False] DPS [4] VALUE [manual] DPS [6] VALUE [241] DPS [8] VALUE [False] DPS [9] VALUE [0] DPS [11] VALUE [False] DPS [12] VALUE [0] DPS [18] VALUE [0] DPS [20] VALUE [0] DPS [21] VALUE [0] DPS [22] VALUE [0] DPS [24] VALUE [] DPS [101] VALUE [] DPS [102] VALUE [] DPS [103] VALUE [0] DPS [104] VALUE [0] DPS [105] VALUE [off] DPS [106] VALUE [mix]

MOES

jeremysherriff commented 2 years ago

Depending on what you are trying to achieve, I can see that you can set up a sensor device to capture temperature (DPS 6, scaling factor 0.1). Normally DPS 1 is a switch (on/off maps to true/false) but that may not be correct for your device.

You may need to capture the DPS values after making changes through the app, so that you can understand which DPS values map to which app functions.

poolMiniDomo commented 2 years ago

nformation obtained from DPs dump:

"interrupteur principal"(switch): dp1 on/off "Commutateur 1"(switch) - dp 2 : on/off "Commutateur 1"(switch) - dp 3 : on/off "Manuel / automatique" - dp 4 : auto/manuel "temperature" - dp 6 : integer (scale 0.1 ) "étalonnage temperature" - dp18 : integer (scale 0.1 ) "automatique Commutateur 1" dp 101 : somthing like 8000010000000101FFFFFFFF01 with auto selected and a rule set "automatique Commutateur 2" dp 102 : somthing like 0000010000000101FFFFFFFF01 with auto selected and a rule set "Compte à rebour 1" - dp 103 : integer (second) "Compte à rebour 2" - dp 104 : integer (second) "etat de redemarage" - dp 105 : on/off/memory

werdnum commented 1 year ago

I managed to get Tuya to add this to the official Tuya Cloud API (it was actually really easy!)

Passing the Tuya Cloud and DP dump values along in case that's helpful

    "status": {
      "switch_1": true,
      "countdown_1": 0,
      "cycle_time": "",
      "work_mode": "hot",
      "customize_mode_switch": false,
      "add_ele": 107,
      "cur_current": 2980,
      "cur_power": 7140,
      "cur_voltage": 2336,
      "voltage_coe": 584,
      "electric_coe": 25300,
      "power_coe": 14000,
      "electricity_coe": 2970,
      "power_limit": 36000,
      "test_bit": 1,
      "temp_unit_convert": "c",
      "temp_set_f": 770,
      "temp_set": 250,
      "temp_current": 265,
      "temp_current_f": 797,
      "vibration_value": 20,
      "temp_correction": 0,
      "humidity_set": 50,
      "hum_rangle": 4,
      "humidity_value": 63,
      "hum_calibration": 0,
      "fault": 0,
      "cold_delay": 2,
      "cold_delay_switch": false
    },
   "status_range": {
      "switch_1": {
        "type": "Boolean",
        "value": {}
      },
      "countdown_1": {
        "type": "Integer",
        "value": {
          "unit": "s",
          "min": 0,
          "max": 86400,
          "scale": 0,
          "step": 1
        }
      },
      "cycle_time": {
        "type": "String",
        "value": {}
      },
      "work_mode": {
        "type": "Enum",
        "value": {
          "range": [
            "hot",
            "dehumidify",
            "colding",
            "wet"
          ]
        }
      },
      "customize_mode_switch": {
        "type": "Boolean",
        "value": {}
      },
      "add_ele": {
        "type": "Integer",
        "value": {
          "unit": "kW\u00b7h",
          "min": 0,
          "max": 50000,
          "scale": 3,
          "step": 100
        }
      },
      "cur_current": {
        "type": "Integer",
        "value": {
          "unit": "mA",
          "min": 0,
          "max": 30000,
          "scale": 0,
          "step": 1
        }
      },
      "cur_power": {
        "type": "Integer",
        "value": {
          "unit": "W",
          "min": 0,
          "max": 80000,
          "scale": 1,
          "step": 1
        }
      },
      "cur_voltage": {
        "type": "Integer",
        "value": {
          "unit": "V",
          "min": 0,
          "max": 5000,
          "scale": 1,
          "step": 1
        }
      },
      "voltage_coe": {
        "type": "Integer",
        "value": {
          "min": 0,
          "max": 2147483647,
          "scale": 0,
          "step": 1
        }
      },
      "electric_coe": {
        "type": "Integer",
        "value": {
          "min": 0,
          "max": 2147483647,
          "scale": 0,
          "step": 1
        }
      },
      "power_coe": {
        "type": "Integer",
        "value": {
          "min": 0,
          "max": 2147483647,
          "scale": 0,
          "step": 1
        }
      },
      "electricity_coe": {
        "type": "Integer",
        "value": {
          "min": 0,
          "max": 2147483647,
          "scale": 0,
          "step": 1
        }
      },
      "power_limit": {
        "type": "Integer",
        "value": {
          "unit": "W",
          "min": 0,
          "max": 80000,
          "scale": 1,
          "step": 1
        }
      },
      "test_bit": {
        "type": "Integer",
        "value": {
          "min": 0,
          "max": 5,
          "scale": 0,
          "step": 1
        }
      },
      "temp_unit_convert": {
        "type": "Enum",
        "value": {
          "range": [
            "c",
            "f"
          ]
        }
      },
      "temp_set_f": {
        "type": "Integer",
        "value": {
          "unit": "\u2109",
          "min": -40,
          "max": 2210,
          "scale": 1,
          "step": 5
        }
      },
      "temp_set": {
        "type": "Integer",
        "value": {
          "unit": "\u2103",
          "min": -200,
          "max": 1050,
          "scale": 1,
          "step": 5
        }
      },
      "temp_current": {
        "type": "Integer",
        "value": {
          "unit": "\u2103",
          "min": -200,
          "max": 1050,
          "scale": 1,
          "step": 1
        }
      },
      "temp_current_f": {
        "type": "Integer",
        "value": {
          "unit": "\u2109",
          "min": -40,
          "max": 2100,
          "scale": 1,
          "step": 1
        }
      },
      "vibration_value": {
        "type": "Integer",
        "value": {
          "min": 10,
          "max": 90,
          "scale": 1,
          "step": 5
        }
      },
      "temp_correction": {
        "type": "Integer",
        "value": {
          "min": -9,
          "max": 9,
          "scale": 0,
          "step": 1
        }
      },
      "humidity_set": {
        "type": "Integer",
        "value": {
          "unit": "%",
          "min": 1,
          "max": 99,
          "scale": 0,
          "step": 1
        }
      },
      "hum_rangle": {
        "type": "Integer",
        "value": {
          "unit": "%",
          "min": 2,
          "max": 20,
          "scale": 0,
          "step": 2
        }
      },
      "humidity_value": {
        "type": "Integer",
        "value": {
          "unit": "%",
          "min": 1,
          "max": 99,
          "scale": 0,
          "step": 1
        }
      },
      "hum_calibration": {
        "type": "Integer",
        "value": {
          "unit": "%",
          "min": -9,
          "max": 9,
          "scale": 0,
          "step": 1
        }
      },
      "fault": {
        "type": "Bitmap",
        "value": {
          "label": [
            "ov_cr",
            "ov_vol",
            "ov_pwr",
            "ls_cr",
            "ls_vol",
            "ls_pow"
          ]
        }
      },
      "cold_delay": {
        "type": "Integer",
        "value": {
          "unit": "min",
          "min": 0,
          "max": 10,
          "scale": 0,
          "step": 1
        }
      },
      "cold_delay_switch": {
        "type": "Boolean",
        "value": {}
      }
    },

DPs:

{
  "2": true,
  "4": 0,
  "7": "",
  "8": "hot",
  "9": false,
  "10": 119,
  "11": 2980,
  "12": 7140,
  "13": 2336,
  "14": 584,
  "15": 25300,
  "16": 14000,
  "17": 2970,
  "18": 36000,
  "19": 1,
  "20": "c",
  "21": 770,
  "22": 250,
  "27": 272,
  "28": 809,
  "29": 20,
  "30": 0,
  "41": 50,
  "42": 4,
  "46": 61,
  "47": 0,
  "50": 0,
  "55": 2,
  "56": false
}