Midea_dehumi Custom Component (Midea/Inventor Invmate EVA II PRO WiFi dehumidifier)

I suppose it could happened just like localtuya no flash needed…just local key device_id from the app.

Can you help me with this error?

2020-11-20 14:56:48 ERROR (SyncWorker_30) [root] MideaClient::send_api_request: errorCode=3123, errorMessage=“the appliance is off line.”
2020-11-20 14:56:48 ERROR (SyncWorker_30) [root] MideaClient::appliance_transparent_send: result=ERROR in API response: result key not found
2020-11-20 14:56:48 ERROR (SyncWorker_30) [root] MideaClient::get_device_status: invalid API response
2020-11-20 14:56:48 ERROR (MainThread) [custom_components.midea_dehumidifier.humidifier] midea-dehumidifier: get_device_status ERROR.

Hello.Does anyone know how to make the water tank status work? I got barban’s latest version. I can see in the home assistant’s logs that the water tank gets the value true or false but in the hassio entities gets unavaible , uknown or is invisible.
Also the deps/lib … has been disapeared from file editor but via samba is visible and i cant modify it… any idea? i am in 0.118.2 version

Hello Guys!

Firat of all I have to say that this is an amazing work. I bought the EVA II PRO WiFi just because of this (besides of course for being an excellent dehumidifier). I managed to get it to work in HA, but I’m having two issues:

  1. Can’t seem to get automations working, and therefore it lacks the option of changing the fan speed.

  2. I’m using homekit integration to expose the device into home app. It does show and work partially. The target humidity is showing a different and random number. Also, two different humidity sensor appear now, one is the: sensor.midea_dehumidifier_xxxxxxxxx and the other one is embedded with the dehumidifier icon in home app humidifier.midea_dehumidifier_xxxxxxxxx
    The main issue is that the humidifier.midea_dehumidifier_xxxxxxxxx is showing 0% and everytime I ask Siri for the humidity in home it says is not correct (the sensor.midea is working fine).

Do you guys know How can I disable the relative current relative humidity meassure from the humidifier.midea_dehumidifier_xxxxxxxxx or to link it to the real measure?

Also, How can the Target humidity shown in home app can be fixed?

Thank you in advance!

Hello everyone!

I’ve managed to get the automations working, but the following happens with homekit integration and the home app:

  1. There are two new accessories. One is a humidity sensor and the other one is the dehumidifier. Both have Current Relative Humidity measurements.

  2. The sensor works perfect, but the dehumidifier shows 0% as the current relative humidity meassure and the target humidity is very different as the shown in HA and the device itself.

Is someone knows how to fix this, or if there’s a way to manually set up the device for homekit in the configuration.yaml that would be great!

Where have you seen that exactly? I just had a full tank a little while ago and I have nothing in the Core log (Supervisor - System - Log provider - Core). I see it with debug log level.

@barban Why isn’t there a tank attribute? I see tankShow in humidifier.py, but not an attribute.

What is the “ion” attribute? Does it affect an Inventor Eva II PRO WiFi? I think not, but when in doubt, I ask.

Very good job, thanks!

Hello~

I have 2 Comfee MDDP-50DEN7 appliance however it seems that the component is only detecting one of them am I doing something wrong? hope you guys can help me.

I believe if it detects one it should detect both.

But i am a total noob :frowning:

Hope you guys can help me

Since I have 2 devices should i duplicate the custom component add one of my devices in a different account and this way I could control both. Did any of you tested this?

Hello everyone,

I’ve managed to make a small update on this library to make it compatible with multiple devices, unfortunately I am no developer therefore I don’t even know how to purpose the change on github.

For those of you wanting to have multiple devices in one single account replace the following code on init.py:

    for a in appliances:
        appliancesStr = "[id="+a["id"]+" type="+a["type"]+" name="+a["name"]+"]"
    if a["onlineStatus"] == "1":
        appliancesStr += " is online,"
    else:
        appliancesStr += " is offline,"
    if a["activeStatus"] == "1":
        appliancesStr += " is active.\n"
    else:
        appliancesStr += " is not active.\n"
		
    _LOGGER.info("midea-dehumi: "+appliancesStr)
    
    #The first appliance having type="0xA1" is returned for default (TODO: otherwise, 'deviceId' configuration option can be used)
    targetDevice = None
    if not deviceId:
        if appliances is not None:
            for a in appliances:
                if a["type"] == "0xA1":
                    deviceId = str(a["id"])
                    targetDevice = a
    else:
        if appliances is not None:
            for a in appliances:
                if a["type"] == "0xA1" and deviceID == str(a["id"]):
                    targetDevice = a


    if targetDevice:
        _LOGGER.info("midea-dehumidifier: device type 0xA1 found.")

        hass.data[MIDEA_API_CLIENT] = client
        _LOGGER.info("midea-dehumidifier: loading humidifier entity sub-component...")
        load_platform(hass, 'humidifier', DOMAIN, {MIDEA_TARGET_DEVICE: targetDevice}, config)

        _LOGGER.info("midea-dehumidifier: loading sensor entity sub-component...")
        load_platform(hass, 'sensor', DOMAIN, {MIDEA_TARGET_DEVICE: targetDevice}, config)

        _LOGGER.info("midea_dehumidifier: platform successfuly initialized.")
        return True
    else:
        _LOGGER.error("midea-dehumidifier: device type 0xA1 not found.")
        return False

to:

    for a in appliances:
        appliancesStr = "[id="+a["id"]+" type="+a["type"]+" name="+a["name"]+"]"
    if a["onlineStatus"] == "1":
        appliancesStr += " is online,"
    else:
        appliancesStr += " is offline,"
    if a["activeStatus"] == "1":
        appliancesStr += " is active.\n"
    else:
        appliancesStr += " is not active.\n"
		
    _LOGGER.info("midea-dehumi: "+appliancesStr)
    
    #The first appliance having type="0xA1" is returned for default (TODO: otherwise, 'deviceId' configuration option can be used)
    hass.data[MIDEA_API_CLIENT] = client
    targetDevice = None
    if not deviceId:
        if appliances is not None:
            for a in appliances:
                if a["type"] == "0xA1":
                    deviceId = str(a["id"])
                    targetDevice = a
                    hass.data[MIDEA_API_CLIENT] = client
                    _LOGGER.info("midea-dehumidifier: loading humidifier entity sub-component...")
                    load_platform(hass, 'humidifier', DOMAIN, {MIDEA_TARGET_DEVICE: targetDevice}, config)
                    _LOGGER.info("midea-dehumidifier: loading sensor entity sub-component...")
                    load_platform(hass, 'sensor', DOMAIN, {MIDEA_TARGET_DEVICE: targetDevice}, config)
                    _LOGGER.info("midea_dehumidifier: platform successfuly initialized.")
    else:
        if appliances is not None:
            for a in appliances:
                if a["type"] == "0xA1" and deviceID == str(a["id"]):
                    targetDevice = a


    if targetDevice:
 #       _LOGGER.info("midea-dehumidifier: device type 0xA1 found.")

#        hass.data[MIDEA_API_CLIENT] = client
#        _LOGGER.info("midea-dehumidifier: loading humidifier entity sub-component...")
#        load_platform(hass, 'humidifier', DOMAIN, {MIDEA_TARGET_DEVICE: targetDevice}, config)

#        _LOGGER.info("midea-dehumidifier: loading sensor entity sub-component...")
#        load_platform(hass, 'sensor', DOMAIN, {MIDEA_TARGET_DEVICE: targetDevice}, config)

#        _LOGGER.info("midea_dehumidifier: platform successfuly initialized.")
        return True
    else:
        _LOGGER.error("midea-dehumidifier: device type 0xA1 not found.")
        return False

I’ve also removed the lines:

_LOGGER.info("midea-dehumidifier: loading sensor entity sub-component...")
                    load_platform(hass, 'sensor', DOMAIN, {MIDEA_TARGET_DEVICE: targetDevice}, config)

and used the hass to fetch the sensor from the humidifier as it is more stable.

I’ve updated as well with tank_show and made a commit let’s hope it is approved.

1 Like

hello and thanx for your info. Does the water_tank status work?

1 Like

It does not work very well actually I’ve noticed that since I have 2 devices the custom component is able to set properly all the actions but sometimes gets the same values from the sensors . And to be honest this goes above my knowledge.

In fact, I too noticed the problem of the same values of the% of humidity. I want to thank you sincerely because you solved my initial problem anyway … You have been very kind.

No issues, unfortunately I am no developer and the humidifier.py is totally out of my league… I will try to find some python dev that can help me understand the logic but not sure how soon I will be able to do it. Anyhow I will keep you posted.

try this configuration of homekit parte

link the sensor to umidificier

homekit:

  • name: HASS
    port: 51829
    filter:
    include_domains:
    - humidifier

    entity_config:
    humidifier.midea_dehumidifier_19791209341795:
    linked_humidity_sensor: sensor.sensore_umidita_sotto

Has anyone managed to create a full tank sensor?

this configuration didn’ work

  • platform: template
    sensors:
    dehumidifier_19791209341795_tank:
    friendly_name: “Serbatoio deumidificatore”
    value_template: “{{ state_attr(‘humidifier.midea_dehumidifier_19791209341795’, ‘water_tank’) }}”
    device_class: problem

Thank you for your reply, however placing the linked_humidity_sensor gives an error in the config file:

Invalid config for [homekit]: [linked_humidty_sensor] is an invalid option for [homekit]. Check: homekit->homekit->0->entity_config->linked_humidty_sensor. (See /home/homeassistant/.homeassistant/configuration.yaml, line 29).

It seems that linked_humidity_sensor is not a valid setting for the accessory. I’ve read the documentation of the Homekit integration and the linked_xxxxxx_sensor seems to work more with motion, doorbell, obstruction…

Nevertheless, this is the approach I’m looking for, a manual way to direct the sensor to the real one.

For me is ok

Interesting. I’m using the EVA II Pro Wifi 16L, is this the same as yours?

Also, do you have in homekit two different accessories? the dehumidifier and a sensor?

I’ve installed the integration via HACS, and Homekit recognised the device without any special configuration.

Thanks in advance for all your help!

Yes I have EVA II Pro Wifi 16Lù

in homekit I publish 1 one object but I can do both

I resoved the problem with this modify in humidifier.py

#States Attributes
ATTR_ION_SET_SWITCH = “ion”
#ATTR_MODE = “mode”
ATTR_FAN_SPEED_MODE = “fan_speed_mode”
#ATTR_FAN_SPEED = “fan_speed”
ATTR_CURRRENT_HUMIDITY = “current_humidity”
ATTR_TANK="tank_show"
PROP_TO_ATTR = {
“ionSetSwitch”: ATTR_ION_SET_SWITCH,
“mode”: ATTR_MODE,
“windSpeedMode”: ATTR_FAN_SPEED_MODE,
“windSpeed”: ATTR_FAN_SPEED,
“current_humidity”: ATTR_CURRRENT_HUMIDITY,
"tank_show":ATTR_TANK
}

@property
def tank_show(self):
    """Return the current tank vakue."""
    return self._tankShow

and I create a sensor so:

  • platform: template
    sensors:
    dehumidifier_xxxxxxx_tank:
    friendly_name: “Serbatoio deumidificatore”
    value_template: “{{ states.humidifier.midea_dehumidifier_xxxxxx.attributes.tank_show==true }}”
    device_class: problem
1 Like