Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Request support for Carro VES1011 humidifier #1411

Closed
ninjajim17 opened this issue Dec 12, 2023 · 7 comments
Closed

Request support for Carro VES1011 humidifier #1411

ninjajim17 opened this issue Dec 12, 2023 · 7 comments

Comments

@ninjajim17
Copy link

Log Message

Logger: custom_components.tuya_local.config_flow
Source: custom_components/tuya_local/config_flow.py:97
Integration: Tuya Local ([documentation](https://github.com/make-all/tuya-local), [issues](https://github.com/make-all/tuya-local/issues))
First occurred: 6:10:55 PM (1 occurrences)
Last logged: 6:10:55 PM
Device matches kyvol_ea200_humidifier with quality of 38%. DPS: {"updated_at": 1702422654.439842, "1": true, "2": true, "5": true, "13": 40, "14": 40, "19": "cancel", "22": 0, "23": "level_1"}

Information about DPS mappings

ON/OFF - 1
Humidity - 2
Countdown - 19
Fault - 22 - (0 = no fault / tank not empty) - do not have other values but I would guess 1 = tank empty
Spray - 23 - three levels ("level 1", "level 2", "level 3")
Humidity Setting - 13 - range (40-90) in steps of 5

g5wedazavod2wg3h

basic humidifier with three degrees of spray, sleep mode, timer, etc.

https://secure.img1-ag.wfcdn.com/dm/document/5fd089fc-0c24-4a0f-a76c-50ca84195efe/49655-2718543-assembly_guide_ph-805-24__2022-05-19.pdf

@ninjajim17 ninjajim17 added the new device Unsupported device label Dec 12, 2023
@make-all make-all added the log provided Log of dps has been provided, though it is short of full info, so some guessing is needed label Dec 12, 2023
@mariustt
Copy link

mariustt commented Jan 24, 2024

I'm also a user of the Carro humidifier and am excited about the prospect of integrating it into the tuya local setup. I've noticed some vital information was missing in the original issue request, which I can contribute from my device.

{
  "result": [
    {
      "category": "jsq",
      "icon": "smart/icon/ay1521094467047NKhOJ/73eed19be2b8aa3758a7849c19f4bdfe.jpg",
      "id": "bf9e978e5500995f3achne",
      "model": "Re731",
      "name": "Smart Humidifier",
      "product_id": "g5wedazavod2wg3h",
      "product_name": "Smart Humidifier",
    }
  ],
  "success": true,
  "t": 1706076089949,
  "tid": "0478446bba7e11ee8b9b4ef73d358bf3"
}
{
  "result": {
    "model": "{\"modelId\":\"0000049ang\",\"services\":[{\"actions\":[],\"code\":\"\",\"description\":\"\",\"events\":[],\"name\":\"默认服务\",\"properties\":[
{\"abilityId\":1,\"accessMode\":\"rw\",\"code\":\"switch\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-dp_power\",\"attribute\":\"1152\"},\"name\":\"总开关\",\"typeSpec\":{\"type\":\"bool\",\"typeDefaultValue\":false}},
{\"abilityId\":2,\"accessMode\":\"rw\",\"code\":\"switch_spray\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-yanwu\",\"attribute\":\"1152\"},\"name\":\"湿度开关\",\"typeSpec\":{\"type\":\"bool\",\"typeDefaultValue\":false}},
{\"abilityId\":5,\"accessMode\":\"rw\",\"code\":\"switch_led\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-dp_light\",\"attribute\":\"1152\"},\"name\":\"睡眠\",\"typeSpec\":{\"type\":\"bool\",\"typeDefaultValue\":false}},
{\"abilityId\":13,\"accessMode\":\"rw\",\"code\":\"humidity_set\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-a_mode_dry\",\"attribute\":\"1152\"},\"name\":\"湿度设置\",\"typeSpec\":{\"max\":90,\"min\":40,\"scale\":0,\"step\":5,\"type\":\"value\",\"typeDefaultValue\":40,\"unit\":\"\"}},
{\"abilityId\":14,\"accessMode\":\"ro\",\"code\":\"humidity_current\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-shidu\",\"attribute\":\"1152\"},\"name\":\"当前湿度\",\"typeSpec\":{\"max\":100,\"min\":0,\"scale\":0,\"step\":1,\"type\":\"value\",\"typeDefaultValue\":0,\"unit\":\"\"}},
{\"abilityId\":16,\"accessMode\":\"rw\",\"code\":\"sleep\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-dp_sleep\",\"attribute\":\"1152\"},\"name\":\"睡眠\",\"typeSpec\":{\"type\":\"bool\",\"typeDefaultValue\":false}},
{\"abilityId\":19,\"accessMode\":\"rw\",\"code\":\"countdown_set\",\"description\":\"创建倒计时dp,枚举值cancel为必选项,且必须放在枚举值第一位。\",\"extensions\":{\"iconName\":\"icon-a_nav_timer\",\"attribute\":\"1152\"},\"name\":\"倒计时\",\"typeSpec\":{\"range\":[\"cancel\",\"1h\",\"2h\",\"3h\",\"4h\",\"5h\",\"6h\",\"7h\",\"8h\",\"9h\"],\"type\":\"enum\",\"typeDefaultValue\":\"cancel\"}},
{\"abilityId\":22,\"accessMode\":\"ro\",\"code\":\"fault\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-Panic\",\"scope\":\"fault\",\"attribute\":\"1152\"},\"name\":\"缺水上报\",\"typeSpec\":{\"label\":[\"lack_water\"],\"maxlen\":1,\"type\":\"bitmap\",\"typeDefaultValue\":0}},
{\"abilityId\":23,\"accessMode\":\"rw\",\"code\":\"level\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-dp_mode\",\"attribute\":\"1152\"},\"name\":\"喷雾档位\",\"typeSpec\":{\"range\":[\"level_1\",\"level_2\",\"level_3\"],\"type\":\"enum\",\"typeDefaultValue\":\"level_1\"}}]}]}"
  },
  "success": true,
  "t": 1706076198236,
  "tid": "45065349ba7e11ee8b9b4ef73d358bf3"
}

In addition, I plan to spend some time creating a YAML file for this purpose and test its functionality in a real-life environment. I look forward to sharing this with the community and would be grateful for any insights or feedback on the logic implemented.

@make-all make-all added full_info All info needed was provided and removed log provided Log of dps has been provided, though it is short of full info, so some guessing is needed labels Jan 24, 2024
make-all added a commit that referenced this issue Jan 25, 2024
@make-all make-all added awaiting confirmation Wating for confirmation the issue is solved unreleased Will be in next release and removed full_info All info needed was provided labels Jan 25, 2024
@mariustt
Copy link

@make-all Thank you for the config! I started doing my own config, but your logic was better, so I used it as a basis.

What I noticed/what changes I made:

  • I swapped dp 1 with dp 2, as they were controlling the wrong groups of functions
  • I changed light entity to switch entity because I couldn't think of any other way to do it. The problem is that false is led on and true is led off.
  • Minor things like names, icons

What else I would change is the file name, because VES1011 is not the code for this device. I would guess that it would be the reseller's interal code. The original code is in the link above, which I have also modified.

carro

Now I would like to mention the problem that I have not been able to solve and I don't know why this is happening. The timer is not displayed in the UI. When I use this config it is not there. Although the log returns dp: 19

name: Humidifier
products:
  - id: g5wedazavod2wg3h
    name: Carro PH-805-24
primary_entity:
  entity: humidifier
  class: humidifier
  name: Control by range
  dps:
    - id: 2
      type: boolean
      name: switch
    - id: 13
      name: humidity
      type: integer
      optional: true
      range:
        min: 40
        max: 90
    - id: 14
      name: current_humidity
      type: integer
secondary_entities:
  - entity: fan
    name: Level control
    icon: "mdi:sprinkler-variant"
    dps:
      - id: 1
        name: switch
        type: boolean
      - id: 23
        type: string
        name: speed
        mapping:
          - dps_val: level_1
            value: 33
          - dps_val: level_2
            value: 67
          - dps_val: level_3
            value: 100
  - entity: switch
    name: Display
    category: config
    dps:
      - id: 5
        name: switch
        type: boolean
        mapping:
          - dps_val: false
            icon: "mdi:led-on"
            value: On
          - dps_val: true
            icon: "mdi:led-off"
            value: Off
  - entity: switch
    name: Sleep
    icon: "mdi:power-sleep"
    category: config
    dps:
      - id: 16
        type: boolean
        name: switch
        optional: true
        mapping:
          - dps_val: null
            value: false
            hidden: true
  - entity: select
    name: Timer
    icon: "mdi:timer"
    category: config
    dps:
      - id: 19
        name: Timer
        type: string
        mapping:
          - dps_val: "cancel"
            value: "Off"
          - dps_val: "1h"
            value: "1 hour"
          - dps_val: "2h"
            value: "2 hours"
          - dps_val: "3h"
            value: "3 hours"
          - dps_val: "4h"
            value: "4 hours"
          - dps_val: "5h"
            value: "5 hours"
          - dps_val: "6h"
            value: "6 hours"
          - dps_val: "7h"
            value: "7 hours"
          - dps_val: "8h"
            value: "8 hours"
          - dps_val: "9h"
            value: "9 hours"
  - entity: binary_sensor
    name: Tank empty
    class: problem
    category: diagnostic
    dps:
      - id: 22
        type: bitfield
        name: sensor
        mapping:
          - dps_val: 0
            value: false
          - value: true
      - id: 22
        name: fault_code
        type: bitfield

When I add a config from two entities, then it shows

name: Humidifier
products:
  - id: g5wedazavod2wg3h
    name: Carro PH-805-24
primary_entity:
  entity: fan
  name: Humidifier
  icon: "mdi:sprinkler-variant"
  dps:
    - id: 1
      name: switch
      type: boolean
      mapping:
        - dps_val: true
          icon: "mdi:air-humidifier"
        - dps_val: false
          icon: "mdi:air-humidifier-off"
secondary_entities:
  - entity: select
    name: Timer
    icon: "mdi:timer"
    category: config
    dps:
      - id: 19
        name: option
        type: string
        mapping:
          - dps_val: "cancel"
            value: "Off"
          - dps_val: "1h"
            value: "1 hour"
          - dps_val: "2h"
            value: "2 hours"
          - dps_val: "3h"
            value: "3 hours"
          - dps_val: "4h"
            value: "4 hours"
          - dps_val: "5h"
            value: "5 hours"
          - dps_val: "6h"
            value: "6 hours"
          - dps_val: "7h"
            value: "7 hours"
          - dps_val: "8h"
            value: "8 hours"
          - dps_val: "9h"
            value: "9 hours"

Humidifier

@make-all
Copy link
Owner

make-all commented Jan 28, 2024

My expectation for dp 1 and 2 is that dp 1 affects the whole device, and dp 2 only affects the spray (so I put that together with spray level), leaving the light on. But I notice from your changes that the light is only a display light, so maybe I was mistaken.

Are you saying that they are the other way around? Or that you prefer to have the fan as the primary entity?

@mariustt
Copy link

Thank you for the additional information.
This is my first config file, so I may not have thought some things through. If we consider primary_entity to be the main entity without which nothing can work, then it should be dp 1, since it enables the humidifier. dp 2 in this case triggers the control of dp 13, i.e. it automatically increases or decreases the amount of steam according to the specified value.

This should probably be the case?

name: Humidifier
products:
  - id: g5wedazavod2wg3h
    name: Carro PH-805-24
primary_entity:
  entity: fan
  name: Level control
  icon: "mdi:sprinkler-variant"
  dps:
    - id: 1
      name: switch
      type: boolean
    - id: 23
      type: string
      name: speed
      mapping:
        - dps_val: level_1
          value: 33
        - dps_val: level_2
          value: 67
        - dps_val: level_3
          value: 100
secondary_entities:
  - entity: humidifier
    class: humidifier
    name: Control by range
    dps:
      - id: 2
        type: boolean
        name: switch
      - id: 13
        name: humidity
        type: integer
        optional: true
        range:
          min: 40
          max: 90
      - id: 14
        name: current_humidity
        type: integer
  - entity: switch
    name: Display
    category: config
    dps:
      - id: 5
        name: switch
        type: boolean
        mapping:
          - dps_val: false
            icon: "mdi:led-on"
            value: On
          - dps_val: true
            icon: "mdi:led-off"
            value: Off
  - entity: switch
    name: Sleep
    icon: "mdi:power-sleep"
    category: config
    dps:
      - id: 16
        type: boolean
        name: switch
        optional: true
        mapping:
          - dps_val: null
            value: false
            hidden: true
  - entity: select
    name: Timer
    icon: "mdi:timer"
    category: config
    dps:
      - id: 19
        name: Timer
        type: string
        mapping:
          - dps_val: "cancel"
            value: "Off"
          - dps_val: "1h"
            value: "1 hour"
          - dps_val: "2h"
            value: "2 hours"
          - dps_val: "3h"
            value: "3 hours"
          - dps_val: "4h"
            value: "4 hours"
          - dps_val: "5h"
            value: "5 hours"
          - dps_val: "6h"
            value: "6 hours"
          - dps_val: "7h"
            value: "7 hours"
          - dps_val: "8h"
            value: "8 hours"
          - dps_val: "9h"
            value: "9 hours"
  - entity: binary_sensor
    name: Tank empty
    class: problem
    category: diagnostic
    dps:
      - id: 22
        type: bitfield
        name: sensor
        mapping:
          - dps_val: 0
            value: false
          - value: true
      - id: 22
        name: fault_code
        type: bitfield

As for dp 5, it simply switches the humidifier display on/off. It does not perform any further function.

@make-all
Copy link
Owner

OK, I understand now. So in this case, dp 2 is more like a "Mode", switching between auto and constant spray. And dp is the power switch (for both fan and humidifier entities)

make-all added a commit that referenced this issue Jan 28, 2024
- product name changed
- dp 1 is switch for both humidifier and fan
- dp 2 is mode for humidifier
- dp 5 is inverted
- icons added, naming improved

Issue #1411
@mariustt
Copy link

I share the result of the latest updates. Everything looks great now!

carro

@mariustt
Copy link

@make-all just one more thing about the name of the file. Perhaps it should also be changed to carro_ph_805_24_humidifier.yaml?

make-all added a commit that referenced this issue Jan 28, 2024
@make-all make-all removed new device Unsupported device awaiting confirmation Wating for confirmation the issue is solved unreleased Will be in next release labels Jan 28, 2024
timlaing pushed a commit to timlaing/tuya-local that referenced this issue Aug 8, 2024
timlaing pushed a commit to timlaing/tuya-local that referenced this issue Aug 8, 2024
- product name changed
- dp 1 is switch for both humidifier and fan
- dp 2 is mode for humidifier
- dp 5 is inverted
- icons added, naming improved

Issue make-all#1411
timlaing pushed a commit to timlaing/tuya-local that referenced this issue Aug 8, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Archived in project
Development

No branches or pull requests

3 participants