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

Device request: Eeese Otto dehumidifier #306

Closed
cnrd opened this issue Dec 10, 2022 · 10 comments
Closed

Device request: Eeese Otto dehumidifier #306

cnrd opened this issue Dec 10, 2022 · 10 comments

Comments

@cnrd
Copy link

cnrd commented Dec 10, 2022

Hi

EDIT: See next comment for a partially working config.

Tuya product: Not sure where to get this?
OEM-name: Eesee Adam
URL: https://eeese-aircare.com/eeese_sortiment/dehumidifier/otto-dehumidifier-60-m2-suitibile-for-wet-rooms-wifi-google-assistant-35-db_1

Tried adding my Eeese Otto dehumidifier, I had expected it to work with the same config as the adam (https://github.com/make-all/tuya-local/blob/main/custom_components/tuya_local/devices/eesee_adam_dehumidifier.yaml)
It was added in this PR: #180

There is a spelling mistake in that one btw, it should be Eeese not Eesee 😄

Information from Hass

Device matches mirabella_genio_usb with quality of 22%. DPS: {'1': True, '2': 25, '5': 'Manual', '6': 55, '8': True, '10': False, '16': False, '17': 'cancel', '19': 0, 'updated_at': 1670694781.640623}

Information from Tuya device specification.

{
  "result": {
    "category": "cs",
    "functions": [
      {
        "code": "switch",
        "type": "Boolean",
        "values": "{}"
      },
      {
        "code": "dehumidify_set_value",
        "type": "Integer",
        "values": "{\"unit\":\"%\",\"min\":25,\"max\":80,\"scale\":0,\"step\":5}"
      },
      {
        "code": "swing",
        "type": "Boolean",
        "values": "{}"
      },
      {
        "code": "anion",
        "type": "Boolean",
        "values": "{}"
      },
      {
        "code": "child_lock",
        "type": "Boolean",
        "values": "{}"
      },
      {
        "code": "countdown_set",
        "type": "Enum",
        "values": "{\"range\":[\"cancel\",\"1h\",\"2h\",\"3h\"]}"
      }
    ],
    "status": [
      {
        "code": "switch",
        "type": "Boolean",
        "values": "{}"
      },
      {
        "code": "dehumidify_set_value",
        "type": "Integer",
        "values": "{\"unit\":\"%\",\"min\":25,\"max\":80,\"scale\":0,\"step\":5}"
      },
      {
        "code": "humidity_indoor",
        "type": "Integer",
        "values": "{\"unit\":\"%\",\"min\":0,\"max\":100,\"scale\":0,\"step\":1}"
      },
      {
        "code": "swing",
        "type": "Boolean",
        "values": "{}"
      },
      {
        "code": "anion",
        "type": "Boolean",
        "values": "{}"
      },
      {
        "code": "child_lock",
        "type": "Boolean",
        "values": "{}"
      },
      {
        "code": "countdown_set",
        "type": "Enum",
        "values": "{\"range\":[\"cancel\",\"1h\",\"2h\",\"3h\"]}"
      },
      {
        "code": "fault",
        "type": "Bitmap",
        "values": "{\"label\":[\"E1\",\"E2\"]}"
      }
    ]
  },
  "success": true,
  "t": 1670695212706,
  "tid": "7e41b5eb78b411edb7f63a1ad91050e8"
}

It seems like the dp_ids have been removed, so I have gotten them using the zigbee2mqtt "log" way.

Child lock: 16
Power: 1
Timer off: 17
Dehumidify: 2
Error code: 19
Working mode: 5
Indoor Humidity: 6
Swing: 8
Anion: 10

These were all the types of device logs listed.

Using diagnostics in hass I was able to get the following values for dp_id 5:

Manual
Clothdrying
SLeeping (Yes with that capitalization)

Please let me know if there is anything else I can supply.

@cnrd
Copy link
Author

cnrd commented Dec 10, 2022

I decided to cut up the existing Eeese Adam config and created the following (partially working) config

name: Eesee Otto dehumidifier
primary_entity:
  entity: humidifier
  class: dehumidifier
  dps:
    - id: 1
      name: switch
      type: boolean
      mapping:
        - dps_val: false
          icon: mdi:air-humidifier-off
          icon_priority: 1
        - dps_val: true
          icon: mdi:air-humidifier
          icon_priority: 4
    - id: 2
      name: humidity
      type: integer
      range:
        min: 25
        max: 80
      mapping:
        - step: 5
    - id: 19
      type: bitfield
      name: error
      mapping:
        - dps_val: 1
          icon: mdi:cup-water
          icon_priority: 2
      hidden: true
secondary_entities:
  - entity: sensor
    name: Current humidity
    class: humidity
    dps:
      - id: 6
        type: integer
        name: sensor
        unit: "%"
        class: measurement
  - entity: binary_sensor
    name: Tank
    class: problem
    category: diagnostic
    dps:
      - id: 19
        type: bitfield
        name: sensor
        mapping:
          - dps_val: 0
            value: false
          - value: true
  - entity: switch
    name: swing
    category: config
    dps:
      - id: 8
        name: swing
        type: boolean
        mapping:
          - dps_val: false
            icon: mdi:cached
            icon_priority: 1
          - dps_val: true
            icon: mdi:cached
            icon_priority: 4
  - entity: switch
    name: anion
    category: config
    dps:
      - id: 10
        name: anion
        type: boolean
        mapping:
          - dps_val: false
            icon: mdi:atom-variant
            icon_priority: 1
          - dps_val: true
            icon: mdi:atom-variant
            icon_priority: 4
  - entity: lock
    name: Child lock
    category: config
    dps:
      - id: 16
        type: boolean
        name: lock
        mapping:
          - dps_val: true
            icon: mdi:hand-back-right-off
          - dps_val: false
            icon: mdi:hand-back-right
  - entity: select
    name: Timer
    icon: mdi:timer
    category: config
    dps:
      - id: 17
        type: string
        name: option
        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
          - dps_val: 10h
            value: 10 hours
          - dps_val: 11h
            value: 11 hours
          - dps_val: 12h
            value: 12 hours
          - dps_val: 13h
            value: 13 hours
          - dps_val: 14h
            value: 14 hours
          - dps_val: 15h
            value: 15 hours
          - dps_val: 16h
            value: 16 hours
          - dps_val: 17h
            value: 17 hours
          - dps_val: 18h
            value: 18 hours
          - dps_val: 19h
            value: 19 hours
          - dps_val: 20h
            value: 20 hours
          - dps_val: 21h
            value: 21 hours
          - dps_val: 22h
            value: 22 hours
          - dps_val: 23h
            value: 23 hours
          - dps_val: 24h
            value: 24 hours

Neither swing nor anion shows up as switches, I probably missed something there...
Getting the following error in the System log:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 281, in _async_setup_platform
    await asyncio.shield(task)
  File "/config/custom_components/tuya_local/switch.py", line 10, in async_setup_entry
    await async_tuya_setup_platform(
  File "/config/custom_components/tuya_local/helpers/config.py", line 38, in async_tuya_setup_platform
    data[ecfg.config_id] = entity_class(device, ecfg)
  File "/config/custom_components/tuya_local/generic/switch.py", line 23, in __init__
    self._switch_dps = dps_map.pop("switch")
KeyError: 'switch'

I am also not completely sure on how to implement dp_id 5?

@make-all
Copy link
Owner

The "name" of the switch dp should be "switch". Also, the icon-priorities are not needed for the switches since there is only one place where the icons are set, and the icon can be moved up a level since it does not change with the state.

dp 5 can be implemented in the humidifier entity as

    - id: 5
      name: mode
      type: string
      mapping:
        - dps_val: Manual
          value: Manual
        - dps_val: Clothdrying
          value: Dry Clothes
          icon: "mdi:t-shirt-crew"
          icon_priority: 3
        - dps_val: SLeeping
          value: Sleep
          icon: "mdi:sleep"
          icon_priority: 3

@make-all make-all added new device Unsupported device config provided Config included by reporter labels Dec 11, 2022
make-all added a commit that referenced this issue Dec 11, 2022
Issue #306

- correct spelling of Eeese Adam (except in config filename which will need migration for existing installs using it).
@make-all make-all added awaiting confirmation Wating for confirmation the issue is solved unreleased Will be in next release and removed config provided Config included by reporter new device Unsupported device unreleased Will be in next release labels Dec 11, 2022
@cnrd
Copy link
Author

cnrd commented Dec 11, 2022

Just tested all functionality using the file from your PR, everything seems to be working, thanks!

The device does have some quirks (Just wanted to list them in case someone hits them):

  • Sending multiple commands in quick succession seems to lock it up for a little while (For example switching Ionizer and swing quickly)
  • Sending commands while the child lock is active is not possible, I guess it just emulates button presses, so one has to unlock the child lock as the first command in an automation and relock as the last.

@make-all make-all removed the awaiting confirmation Wating for confirmation the issue is solved label Dec 11, 2022
@make-all
Copy link
Owner

I might add your first point to the README, as this is a common limitation of Tuya devices (they seem to be single threaded and get overloaded easily if you try to send more commands when they are still processing the previous one, often crashing the device). This is mainly a concern for automations where you need to add delays between commands.

The second one seems to be a quirk of this device - most seem to implement the child lock on the device buttons, and still accept remote commands.

@mrlidstrom
Copy link

I havs added the integration via HACS (Home Assistant 2023.5.3) and found the static local ip, the device-ID and the Local Key. Still my integration does not find the Eeese Otto when I try to add it. What can be done to solve this? I have even tried to delete all .yaml-files except the Otto-file (in folder devices)🤬🤬🤬

@mrlidstrom
Copy link

mrlidstrom commented Sep 4, 2023

Update: this code worked for me. Had to erase error handling parts.

Change file type to ".yaml".
eeese_otto.txt

@Pastar243
Copy link

Pastar243 commented Oct 27, 2023

Hi,
I´m kind of new to this but I will give it a try and see how it works. I have a eeese luna dehumidifier & air purifier and Tuya Local can´t find it when I try to add it (the alternatives I can choose from does not match).
I have been trying to follow instructions as far as I understand (getting the dp_id etc), and also It seems to return somewhat the same things that in this setup above for eease otto or the eease Adam that is done before.

I get:
1":"Power"
2":"Humidify Setting"
4":"Mode"
6":"Indoor Humidity",
8":"Swing",
10":"Anion",
17":"Timer Off"
18":"Countdown Left"
19":"Error Code"

Unfortunately I´m not so good at this, but is there anyway I can get support for this device within the capabilities I have (kind of limited)

Best regards //Patrik

@Privatecoder
Copy link
Contributor

Hi Patrik,

this is a bit off-topic but I would try and install the LocalTuya integration, enter your tuya-cloud-details and then use its assistant to get the parameters for your device i.e.

image 2) image 3) image

Then enter these details in this – Tuya local – integration and see if it gives you the option to select a device.

Only after that (and selecting one of the existing eeese humidifiers) I would check whats working and what is not.

Cheers

@Pastar243
Copy link

Thanks for the quick reply.
I gave it a try and all the data that was shown in local-tuya (host,device id, local key and protocoll version) I already had put in the Tuya local app but it still only gives me opportunity to choose from.

feit_dimmer
co2_box
inkbird_pth9cw_airquality
mirabella_genio_usb
nedis_openclose_sensor
simple_lightbulb
simple_switch

I understand that I might do something wrong here.
What I could see in Local tuya was.
image

@make-all
Copy link
Owner

It is not that you are doing something wrong when configuring, your device is different than the one this issue is for, and is not a supported device.

Rather than trying to get help by commenting on a closed issue for a different device, I suggest that you file a new issue for a "New Device", and fill out the requested log and dps information there. The log message from Home assistant log is required, and If possible include the "Query Things Data Model" result from iot.tuya.com, as that has required information on ranges and options supported.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants