Closed PskNorz closed 2 years ago
Hi @PskNorz, if it is running firmware v3 or later it should work (e.g. v3.0.8). For previous versions, not at the moment. I'm working on adding v2 support, but I can't test it as all my devices are v3.
Hi there, i seem to have a dehumidifier with a version 2 firmware, so i can help with testing. I also commented here https://github.com/nbogojevic/midea-beautiful-dehumidifier/issues/1#issuecomment-1001249715
@kskarlatos version 0.4.1 should have initial support for v2. As I can't test it, I'd appreciate any feedback.
Hi @nbogojevic , thanks for the update. it Failed to set up. here are some logs:
`This error originated from a custom integration.
Logger: custom_components.midea_dehumidifier_lan Source: custom_components/midea_dehumidifier_lan/init.py:99 Integration: Midea Dehumidifier (LAN) (documentation, issues) First occurred: 18:07:00 (1 occurrences) Last logged: 18:07:00
Appliance Dehumidifier15AF has no token, trying to get it from Midea cloud API `
`This error originated from a custom integration.
Logger: homeassistant.config_entries Source: custom_components/midea_dehumidifier_lan/init.py:118 Integration: Midea Dehumidifier (LAN) (documentation, issues) First occurred: 18:07:01 (1 occurrences) Last logged: 18:07:01
Error setting up entry Midea Dehumidifiers for midea_dehumidifier_lan Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/config_entries.py", line 313, in async_setup result = await component.async_setup_entry(hass, self) # type: ignore File "/config/custom_components/midea_dehumidifier_lan/init.py", line 56, in async_setup_entry await hub.start(hass, entry) File "/config/custom_components/midea_dehumidifier_lan/init.py", line 118, in start appliance = await hass.async_add_executor_job( File "/usr/local/lib/python3.9/concurrent/futures/thread.py", line 52, in run result = self.fn(*self.args, **self.kwargs) File "/usr/local/lib/python3.9/site-packages/midea_beautiful_dehumidifier/init.py", line 79, in appliance_state return get_appliance_state( File "/usr/local/lib/python3.9/site-packages/midea_beautiful_dehumidifier/lan.py", line 784, in get_appliance_state raise MideaError("Missing cloud credentials") midea_beautiful_dehumidifier.exceptions.MideaError: Missing cloud credentials `
thanks @kskarlatos
could you get debug logs for the library via configuration.yaml
, and then set-up integration again it may help diagnose the problem
# ...
logger:
# ... your regular logger conf
logs:
custom_components.midea_dehumidifier_lan: debug
midea_beautiful_dehumidifier: debug
# ...
Here are some logs:
2021-12-28 19:25:43 DEBUG (MainThread) [homeassistant.components.websocket_api.http.connection] [139803220902912] Received {'type': 'frontend/get_translations', 'language': 'en', 'category': 'config', 'integration': 'midea_dehumidifier_lan', 'id': 54}
2021-12-28 19:25:43 DEBUG (MainThread) [homeassistant.components.websocket_api.http.connection] [139803220902912] Received {'type': 'frontend/get_translations', 'language': 'en', 'category': 'title', 'integration': 'midea_dehumidifier_lan', 'id': 55}
2021-12-28 19:25:43 DEBUG (MainThread) [homeassistant.components.websocket_api.http.connection] [139803220902912] Sending {"id": 54, "type": "result", "success": true, "result": {"resources": {"component.midea_dehumidifier_lan.config.step.user.data.username": "Account", "component.midea_dehumidifier_lan.config.step.user.data.password": "Password", "component.midea_dehumidifier_lan.config.step.user.data.mobile_app": "Mobile app", "component.midea_dehumidifier_lan.config.step.user.data.advanced_options": "Advanced options", "component.midea_dehumidifier_lan.config.step.user.description": "Please enter username and password that you use to connect with the selected Midea mobile application.", "component.midea_dehumidifier_lan.config.step.user.title": "Sign-in with Midea app account", "component.midea_dehumidifier_lan.config.step.advanced_options.data.username": "Account", "component.midea_dehumidifier_lan.config.step.advanced_options.data.password": "Password", "component.midea_dehumidifier_lan.config.step.advanced_options.data.appkey": "Mobile app key", "component.midea_dehumidifier_lan.config.step.advanced_options.data.appid": "Mobile app id", "component.midea_dehumidifier_lan.config.step.advanced_options.data.network_range": "Appliance address or network range", "component.midea_dehumidifier_lan.config.step.advanced_options.data.use_cloud": "Use cloud API to poll devices", "component.midea_dehumidifier_lan.config.step.advanced_options.description": "You can provide specific Midea mobile app key and app id if the default ones don't work.\n\nYou can also specify network address (e.g. 192.0.1.2) or range (e.g. 192.0.3.4/24) to search for specific appliance(s) if regular discovery doesn't work.", "component.midea_dehumidifier_lan.config.step.advanced_options.title": "Advanced options", "component.midea_dehumidifier_lan.config.step.unreachable_appliance.data.ip_address": "IPv4 address", "component.midea_dehumidifier_lan.config.step.unreachable_appliance.data.name": "Device name", "component.midea_dehumidifier_lan.config.step.unreachable_appliance.data.token": "Token", "component.midea_dehumidifier_lan.config.step.unreachable_appliance.data.token_key": "Token key", "component.midea_dehumidifier_lan.config.step.unreachable_appliance.data.ignore_appliance": "Ignore this appliance", "component.midea_dehumidifier_lan.config.step.unreachable_appliance.data.use_cloud": "Use cloud API to poll this device", "component.midea_dehumidifier_lan.config.step.unreachable_appliance.description": "We were unable to discover an appliance called {name} with the id {id} on the local network.\n\nIf you know appliance's IPv4 address, please enter it below to add it to Home Assistant.\n\nYou can also provide token and key if you have them. If not, we will obtain them from Midea cloud.", "component.midea_dehumidifier_lan.config.step.unreachable_appliance.title": "Appliance IPv4 address is missing", "component.midea_dehumidifier_lan.config.step.reauth_confirm.data.username": "Account", "component.midea_dehumidifier_lan.config.step.reauth_confirm.data.password": "Password", "component.midea_dehumidifier_lan.config.step.reauth_confirm.data.appkey": "Mobile app key", "component.midea_dehumidifier_lan.config.step.reauth_confirm.data.appid": "Mobile app id", "component.midea_dehumidifier_lan.config.step.reauth_confirm.data.network_range": "Appliance address or network range", "component.midea_dehumidifier_lan.config.step.reauth_confirm.title": "[%key:common::config_flow::title::reauth%]", "component.midea_dehumidifier_lan.config.step.reauth_confirm.description": "The Midea dehumidifier (LAN) integration needs to re-authenticate your account", "component.midea_dehumidifier_lan.config.error.cannot_connect": "Unnable to connect to appliance ({cause}).", "component.midea_dehumidifier_lan.config.error.connection_error": "Connection error ({cause}).", "component.midea_dehumidifier_lan.config.error.invalid_app_name": "Unsupported application name ({cause}). See log for more information.", "component.midea_dehumidifier_lan.config.error.invalid_appkey": "Please provide Midea mobile app key and app id", "component.midea_dehumidifier_lan.config.error.invalid_auth": "Invalid username or password ({cause})", "component.midea_dehumidifier_lan.config.error.invalid_ip_address": "Invalid IPv4 address ({cause}), please enter a valid IPv4 address (e.g. 192.0.1.2)", "component.midea_dehumidifier_lan.config.error.invalid_ip_range": "Invalid IPv4 network address or network range ({cause}). Expected formats are 192.0.1.2 or 192.0.3.4/24", "component.midea_dehumidifier_lan.config.error.invalid_state": "Unexpected state of configuration flow. See log for more information.", "component.midea_dehumidifier_lan.config.error.no_cloud": "Unable to connect to Midea cloud API", "component.midea_dehumidifier_lan.config.error.not_discovered": "Unable to find appliance at specified IPv4 address.", "component.midea_dehumidifier_lan.config.error.unknown": "An unknown error has occurred. See log for more information.", "component.midea_dehumidifier_lan.config.abort.single_instance_allowed": "Already defined a Midea app account. Only a single account is supported for Midea dehumidifier (LAN).", "component.midea_dehumidifier_lan.config.abort.reauth_successful": "Re-authentication was successful"}}}
2021-12-28 19:25:43 DEBUG (MainThread) [homeassistant.components.websocket_api.http.connection] [139803220902912] Sending {"id": 55, "type": "result", "success": true, "result": {"resources": {"component.midea_dehumidifier_lan.title": "Midea Dehumidifier (LAN)"}}}
2021-12-28 19:25:59 DEBUG (SyncWorker_3) [midea_beautiful_dehumidifier.scanner] Library version=0.5.1
2021-12-28 19:25:59 DEBUG (SyncWorker_3) [midea_beautiful_dehumidifier.scanner] Network 192.168.101.13, broadcast address 192.168.101.13
2021-12-28 19:25:59 DEBUG (SyncWorker_3) [midea_beautiful_dehumidifier.scanner] Scanning for midea dehumidifier appliances via ['192.168.101.13']
2021-12-28 19:25:59 DEBUG (SyncWorker_3) [midea_beautiful_dehumidifier.scanner] Starting LAN discovery
2021-12-28 19:26:00 DEBUG (SyncWorker_3) [midea_beautiful_dehumidifier.cloud] Midea home group query result={'list': [{'number': '205890', 'isDefault': '1', 'createUserId': '205890', 'des': '', 'address': '', 'coordinate': '', 'createTime': '2017-01-31 10:07:59', 'roleId': '1001', 'name': '', 'nickname': '', 'id': '205890'}]}
2021-12-28 19:26:00 DEBUG (SyncWorker_3) [midea_beautiful_dehumidifier.cloud] Midea appliance list results=[{'masterId': '', 'des': '', 'activeStatus': '1', 'onlineStatus': '1', 'name': 'Dehumidifier15AF', 'modelNumber': '0', 'id': '18691697700532', 'sn': '55b2b0c189476448390441f9ddefc35f737ade2c80a90e3ee2e6d18ad2cf9761ee50ea1376d1e12e962aa03c94e5a1ac', 'type': '0xA1', 'tsn': '', 'mac': ''}, {'masterId': '', 'des': '', 'activeStatus': '1', 'onlineStatus': '1', 'name': 'Ν. υπνοδωμάτιο', 'modelNumber': '0', 'id': '16492674462341', 'sn': '55b2b0c189476448390441f9ddefc35fcc29908394cbf2a7bffd0063c9043665ee50ea1376d1e12e962aa03c94e5a1ac', 'type': '0xAC', 'tsn': '', 'mac': ''}]
2021-12-28 19:26:00 DEBUG (SyncWorker_3) [midea_beautiful_dehumidifier.scanner] Broadcast attempt 1 of max 2
2021-12-28 19:26:00 DEBUG (SyncWorker_3) [midea_beautiful_dehumidifier.scanner] Broadcasting to 192.168.101.13
2021-12-28 19:26:00 DEBUG (SyncWorker_3) [midea_beautiful_dehumidifier.lan] Descriptor data from id=18691697700532 ip=192.168.101.13:6444 version=2: {id=18691697700532, ip=192.168.101.13, port=6444, version=2, name=18691697700532, online=True, type=a1, subtype=0, flags=0, extra=0, reserved=0, mac=F0C9D14315AF0000, ssid=net_a1_15AF, udp_version=0, protocol=None, version=None, sn=000000P0000000Q1F0C9D14315AF0000, state=[Dehumidifier]{id=18691697700532, type=a1, mode=0, running=False, target_humidity=50, fan_speed=40, tank_full=False current_humidity=45, current_temperature=0 error_code=0}}
2021-12-28 19:26:03 DEBUG (SyncWorker_3) [midea_beautiful_dehumidifier.scanner] Finished broadcast collection
2021-12-28 19:26:03 DEBUG (SyncWorker_3) [midea_beautiful_dehumidifier.lan] Attempting new connection to id=18691697700532 ip=192.168.101.13:6444 version=2
2021-12-28 19:26:05 DEBUG (SyncWorker_3) [midea_beautiful_dehumidifier.appliance] Decoded response {'is_on': False, 'fault': 0, 'run_status': 0, 'i_mode': 0, 'timing_mode': 0, 'quick_check': 0, 'mode': 1, 'mode_fc': 160, 'fan_speed': 0, '_on_timer_value': 0, '_on_timer_minutes': 0, '_off_timer_value': 0, '_off_timer_minutes': 0, 'target_humidity': 0.1875, 'filter_indicator': False, 'ion_mode': False, 'sleep_switch': False, 'pump_switch': False, 'defrosting': False, 'tank_full': False, 'current_humidity': 0.0, 'indoor_temperature': -7.0, 'err_code': 0}
2021-12-28 19:26:05 DEBUG (SyncWorker_3) [midea_beautiful_dehumidifier.lan] Appliance data: {id=18691697700532, ip=192.168.101.13, port=6444, version=2, name=18691697700532, online=True, type=a1, subtype=0, flags=0, extra=0, reserved=0, mac=F0C9D14315AF0000, ssid=net_a1_15AF, udp_version=0, protocol=None, version=None, sn=000000P0000000Q1F0C9D14315AF0000, state=[Dehumidifier]{id=18691697700532, type=a1, mode=1, running=False, target_humidity=0, fan_speed=0, tank_full=False current_humidity=0, current_temperature=-7.0 error_code=0}}
2021-12-28 19:26:05 INFO (SyncWorker_3) [midea_beautiful_dehumidifier.scanner] Found appliance id=18691697700532 ip=192.168.101.13:6444 version=2
2021-12-28 19:26:05 INFO (SyncWorker_3) [midea_beautiful_dehumidifier.scanner] Found 1 of 1 appliance(s)
2021-12-28 19:26:05 DEBUG (MainThread) [custom_components.midea_dehumidifier_lan] devconf: {'username': '<redacted>', 'password': '<redacted>', 'mobile_app': 'NetHome Plus', 'advanced_options': True, 'use_cloud': False, 'appkey': '3742e9e5842d4ad59c2db887e12449f9', 'appid': 1017, 'network_range': '192.168.101.13', 'devices': [{'ip_address': '192.168.101.13', 'id': '18691697700532', 'name': 'Dehumidifier15AF', 'type': 'a1', 'token': '', 'token_key': '', 'use_cloud': False}]}
2021-12-28 19:26:05 DEBUG (MainThread) [custom_components.midea_dehumidifier_lan] devconf: {'ip_address': '192.168.101.13', 'id': '18691697700532', 'name': 'Dehumidifier15AF', 'type': 'a1', 'token': '', 'token_key': '', 'use_cloud': False}
2021-12-28 19:26:05 WARNING (MainThread) [custom_components.midea_dehumidifier_lan] Appliance Dehumidifier15AF has no token, trying to get it from Midea cloud API
2021-12-28 19:26:06 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry Midea Dehumidifiers for midea_dehumidifier_lan
File "/config/custom_components/midea_dehumidifier_lan/__init__.py", line 56, in async_setup_entry
File "/config/custom_components/midea_dehumidifier_lan/__init__.py", line 118, in start
File "/usr/local/lib/python3.9/site-packages/midea_beautiful_dehumidifier/__init__.py", line 79, in appliance_state
File "/usr/local/lib/python3.9/site-packages/midea_beautiful_dehumidifier/lan.py", line 784, in get_appliance_state
midea_beautiful_dehumidifier.exceptions.MideaError: Missing cloud credentials
2021-12-28 19:26:08 DEBUG (MainThread) [homeassistant.components.websocket_api.http.connection] [139803220902912] Sending {"id": 59, "type": "result", "success": true, "result": [{"domain": "webhook", "name": "Webhook", "documentation": "https://www.home-assistant.io/integrations/webhook", "dependencies": ["http"], "codeowners": [], "quality_scale": "internal", "is_built_in": true}, {"domain": "trace", "name": "Trace", "documentation": "https://www.home-assistant.io/integrations/automation", "codeowners": ["@home-assistant/core"], "quality_scale": "internal", "is_built_in": true}, {"domain": "binary_sensor", "name": "Binary Sensor", "documentation": "https://www.home-assistant.io/integrations/binary_sensor", "codeowners": [], "quality_scale": "internal", "is_built_in": true}, {"domain": "onboarding", "name": "Home Assistant Onboarding", "documentation": "https://www.home-assistant.io/integrations/onboarding", "after_dependencies": ["hassio"], "dependencies": ["analytics", "auth", "http", "person"], "codeowners": ["@home-assistant/core"], "quality_scale": "internal", "is_built_in": true}, {"domain": "scene", "name": "Scenes", "documentation": "https://www.home-assistant.io/integrations/scene", "codeowners": ["@home-assistant/core"], "quality_scale": "internal", "is_built_in": true}, {"domain": "http", "name": "HTTP", "documentation": "https://www.home-assistant.io/integrations/http", "requirements": ["aiohttp_cors==0.7.0"], "codeowners": ["@home-assistant/core"], "quality_scale": "internal", "iot_class": "local_push", "is_built_in": true}, {"domain": "gree", "name": "Gree Climate", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/gree", "requirements": ["greeclimate==0.12.5"], "codeowners": ["@cmroche"], "iot_class": "local_polling", "is_built_in": true}, {"domain": "config", "name": "Configuration", "documentation": "https://www.home-assistant.io/integrations/config", "dependencies": ["http"], "codeowners": ["@home-assistant/core"], "quality_scale": "internal", "is_built_in": true}, {"domain": "device_automation", "name": "Device Automation", "documentation": "https://www.home-assistant.io/integrations/device_automation", "codeowners": ["@home-assistant/core"], "quality_scale": "internal", "is_built_in": true}, {"domain": "analytics", "name": "Analytics", "documentation": "https://www.home-assistant.io/integrations/analytics", "codeowners": ["@home-assistant/core", "@ludeeus"], "dependencies": ["api", "websocket_api"], "after_dependencies": ["energy"], "quality_scale": "internal", "iot_class": "cloud_push", "is_built_in": true}, {"domain": "wake_on_lan", "name": "Wake on LAN", "documentation": "https://www.home-assistant.io/integrations/wake_on_lan", "requirements": ["wakeonlan==2.0.1"], "codeowners": ["@ntilley905"], "iot_class": "local_push", "is_built_in": true}, {"domain": "zeroconf", "name": "Zero-configuration networking (zeroconf)", "documentation": "https://www.home-assistant.io/integrations/zeroconf", "requirements": ["zeroconf==0.38.1"], "dependencies": ["network", "api"], "codeowners": ["@bdraco"], "quality_scale": "internal", "iot_class": "local_push", "is_built_in": true}, {"domain": "cloud", "name": "Home Assistant Cloud", "documentation": "https://www.home-assistant.io/integrations/cloud", "requirements": ["hass-nabucasa==0.50.0"], "dependencies": ["http", "webhook"], "after_dependencies": ["google_assistant", "alexa"], "codeowners": ["@home-assistant/cloud"], "iot_class": "cloud_push", "is_built_in": true}, {"domain": "input_select", "name": "Input Select", "documentation": "https://www.home-assistant.io/integrations/input_select", "codeowners": ["@home-assistant/core"], "quality_scale": "internal", "is_built_in": true}, {"domain": "home_connect", "name": "Home Connect", "documentation": "https://www.home-assistant.io/integrations/home_connect", "dependencies": ["http"], "codeowners": ["@DavidMStraub"], "requirements": ["homeconnect==0.6.3"], "config_flow": true, "iot_class": "cloud_push", "is_built_in": true}, {"domain": "light", "name": "Light", "documentation": "https://www.home-assistant.io/integrations/light", "codeowners": [], "quality_scale": "internal", "is_built_in": true}, {"domain": "stream", "name": "Stream", "documentation": "https://www.home-assistant.io/integrations/stream", "requirements": ["ha-av==8.0.4-rc.1"], "dependencies": ["http"], "codeowners": ["@hunterjm", "@uvjustin", "@allenporter"], "quality_scale": "internal", "iot_class": "local_push", "is_built_in": true}, {"domain": "person", "name": "Person", "documentation": "https://www.home-assistant.io/integrations/person", "dependencies": ["image"], "after_dependencies": ["device_tracker"], "codeowners": [], "quality_scale": "internal", "iot_class": "calculated", "is_built_in": true}, {"domain": "filter", "name": "Filter", "documentation": "https://www.home-assistant.io/integrations/filter", "dependencies": ["recorder"], "codeowners": ["@dgomes"], "quality_scale": "internal", "iot_class": "local_push", "is_built_in": true}, {"domain": "water_heater", "name": "Water Heater", "documentation": "https://www.home-assistant.io/integrations/water_heater", "codeowners": [], "quality_scale": "internal", "is_built_in": true}, {"domain": "climate", "name": "Climate", "documentation": "https://www.home-assistant.io/integrations/climate", "codeowners": [], "quality_scale": "internal", "is_built_in": true}, {"domain": "notify", "name": "Notifications", "documentation": "https://www.home-assistant.io/integrations/notify", "codeowners": ["@home-assistant/core"], "quality_scale": "internal", "is_built_in": true}, {"domain": "history", "name": "History", "documentation": "https://www.home-assistant.io/integrations/history", "dependencies": ["http", "recorder"], "codeowners": ["@home-assistant/core"], "quality_scale": "internal", "is_built_in": true}, {"domain": "dhcp", "name": "DHCP Discovery", "documentation": "https://www.home-assistant.io/integrations/dhcp", "requirements": ["scapy==2.4.5", "aiodiscover==1.4.5"], "codeowners": ["@bdraco"], "quality_scale": "internal", "iot_class": "local_push", "is_built_in": true}, {"domain": "workday", "name": "Workday", "documentation": "https://www.home-assistant.io/integrations/workday", "requirements": ["holidays==0.11.3.1"], "codeowners": ["@fabaff"], "quality_scale": "internal", "iot_class": "local_polling", "is_built_in": true}, {"domain": "command_line", "name": "Command Line", "documentation": "https://www.home-assistant.io/integrations/command_line", "codeowners": [], "iot_class": "local_polling", "is_built_in": true}, {"domain": "logger", "name": "Logger", "documentation": "https://www.home-assistant.io/integrations/logger", "codeowners": ["@home-assistant/core"], "quality_scale": "internal", "is_built_in": true}, {"domain": "sensor", "name": "Sensor", "documentation": "https://www.home-assistant.io/integrations/sensor", "codeowners": [], "quality_scale": "internal", "after_dependencies": ["recorder"], "is_built_in": true}, {"domain": "frontend", "name": "Home Assistant Frontend", "documentation": "https://www.home-assistant.io/integrations/frontend", "requirements": ["home-assistant-frontend==20211227.0"], "dependencies": ["api", "auth", "config", "device_automation", "http", "lovelace", "onboarding", "search", "system_log", "websocket_api"], "codeowners": ["@home-assistant/frontend"], "quality_scale": "internal", "is_built_in": true}, {"domain": "api", "name": "Home Assistant API", "documentation": "https://www.home-assistant.io/integrations/api", "dependencies": ["http"], "codeowners": ["@home-assistant/core"], "quality_scale": "internal", "is_built_in": true}, {"domain": "usb", "name": "USB Discovery", "documentation": "https://www.home-assistant.io/integrations/usb", "requirements": ["pyudev==0.22.0", "pyserial==3.5"], "codeowners": ["@bdraco"], "dependencies": ["websocket_api"], "quality_scale": "internal", "iot_class": "local_push", "is_built_in": true}, {"domain": "energy", "name": "Energy", "documentation": "https://www.home-assistant.io/integrations/energy", "codeowners": ["@home-assistant/core"], "iot_class": "calculated", "dependencies": ["websocket_api", "history", "recorder"], "quality_scale": "internal", "is_built_in": true}, {"domain": "template", "name": "Template", "documentation": "https://www.home-assistant.io/integrations/template", "codeowners": ["@PhracturedBlue", "@tetienne", "@home-assistant/core"], "quality_scale": "internal", "after_dependencies": ["group"], "iot_class": "local_push", "is_built_in": true}, {"domain": "homeassistant", "name": "Home Assistant Core Integration", "documentation": "https://www.home-assistant.io/integrations/homeassistant", "codeowners": ["@home-assistant/core"], "quality_scale": "internal", "is_built_in": true}, {"domain": "mqtt", "name": "MQTT", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/mqtt", "requirements": ["paho-mqtt==1.6.1"], "dependencies": ["http"], "codeowners": ["@emontnemery"], "iot_class": "local_push", "is_built_in": true}, {"domain": "media_source", "name": "Media Source", "documentation": "https://www.home-assistant.io/integrations/media_source", "dependencies": ["http"], "codeowners": ["@hunterjm"], "quality_scale": "internal", "is_built_in": true}, {"domain": "met", "name": "Meteorologisk institutt (Met.no)", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/met", "requirements": ["pyMetno==0.9.0"], "codeowners": ["@danielhiversen", "@thimic"], "iot_class": "cloud_polling", "is_built_in": true}, {"domain": "mobile_app", "name": "Mobile App", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/mobile_app", "requirements": ["PyNaCl==1.4.0", "emoji==1.5.0"], "dependencies": ["http", "webhook", "person", "tag", "websocket_api"], "after_dependencies": ["cloud", "camera", "notify"], "codeowners": ["@robbiet480"], "quality_scale": "internal", "iot_class": "local_push", "is_built_in": true}, {"domain": "recorder", "name": "Recorder", "documentation": "https://www.home-assistant.io/integrations/recorder", "requirements": ["sqlalchemy==1.4.27"], "codeowners": ["@home-assistant/core"], "quality_scale": "internal", "iot_class": "local_push", "is_built_in": true}, {"domain": "lovelace", "name": "Lovelace", "documentation": "https://www.home-assistant.io/integrations/lovelace", "codeowners": ["@home-assistant/frontend"], "is_built_in": true}, {"domain": "device_tracker", "name": "Device Tracker", "documentation": "https://www.home-assistant.io/integrations/device_tracker", "dependencies": ["zone"], "after_dependencies": [], "codeowners": [], "quality_scale": "internal", "is_built_in": true}, {"domain": "blueprint", "name": "Blueprint", "documentation": "https://www.home-assistant.io/integrations/blueprint", "codeowners": ["@home-assistant/core"], "quality_scale": "internal", "is_built_in": true}, {"domain": "epson", "name": "Epson", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/epson", "requirements": ["epson-projector==0.4.2"], "codeowners": ["@pszafer"], "iot_class": "local_polling", "is_built_in": true}, {"domain": "search", "name": "Search", "documentation": "https://www.home-assistant.io/integrations/search", "dependencies": ["websocket_api"], "after_dependencies": ["scene", "group", "automation", "script"], "codeowners": ["@home-assistant/core"], "quality_scale": "internal", "is_built_in": true}, {"domain": "default_config", "name": "Default Config", "documentation": "https://www.home-assistant.io/integrations/default_config", "dependencies": ["automation", "cloud", "counter", "dhcp", "energy", "frontend", "history", "input_boolean", "input_datetime", "input_number", "input_select", "input_text", "logbook", "map", "media_source", "mobile_app", "my", "network", "person", "scene", "script", "ssdp", "sun", "system_health", "tag", "timer", "usb", "updater", "webhook", "zeroconf", "zone"], "codeowners": [], "quality_scale": "internal", "is_built_in": true}, {"domain": "midea_dehumidifier_lan", "name": "Midea Dehumidifier (LAN)", "version": "0.4.1", "config_flow": true, "documentation": "https://github.com/nbogojevic/homeassistant-midea-dehumidifier-lan/blob/main/README.md", "issue_tracker": "https://github.com/nbogojevic/homeassistant-midea-dehumidifier-lan/issues", "codeowners": ["@nbogojevic"], "requirements": ["midea-beautiful-dehumidifier==0.5.1"], "iot_class": "local_polling", "is_built_in": false}, {"domain": "scheduler", "name": "Scheduler integration", "documentation": "https://github.com/nielsfaber/scheduler-component", "issue_tracker": "https://github.com/nielsfaber/scheduler-component/issues", "version": "v0.0.0", "dependencies": ["http"], "codeowners": ["@nielsfaber"], "requirements": [], "config_flow": true, "iot_class": "local_push", "is_built_in": false}, {"domain": "persistent_notification", "name": "Persistent Notification", "documentation": "https://www.home-assistant.io/integrations/persistent_notification", "codeowners": ["@home-assistant/core"], "quality_scale": "internal", "iot_class": "local_push", "is_built_in": true}, {"domain": "melcloud", "name": "MELCloud", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/melcloud", "requirements": ["pymelcloud==2.5.6"], "codeowners": ["@vilppuvuorinen"], "iot_class": "cloud_polling", "is_built_in": true}, {"domain": "fan", "name": "Fan", "documentation": "https://www.home-assistant.io/integrations/fan", "codeowners": [], "quality_scale": "internal", "is_built_in": true}, {"domain": "input_text", "name": "Input Text", "documentation": "https://www.home-assistant.io/integrations/input_text", "codeowners": ["@home-assistant/core"], "quality_scale": "internal", "is_built_in": true}, {"domain": "script", "name": "Scripts", "documentation": "https://www.home-assistant.io/integrations/script", "dependencies": ["blueprint", "trace"], "codeowners": ["@home-assistant/core"], "quality_scale": "internal", "is_built_in": true}, {"domain": "hassio", "name": "Home Assistant Supervisor", "documentation": "https://www.home-assistant.io/integrations/hassio", "dependencies": ["http"], "after_dependencies": ["panel_custom"], "codeowners": ["@home-assistant/supervisor"], "iot_class": "local_polling", "quality_scale": "internal", "is_built_in": true}, {"domain": "input_datetime", "name": "Input Datetime", "documentation": "https://www.home-assistant.io/integrations/input_datetime", "codeowners": ["@home-assistant/core"], "quality_scale": "internal", "is_built_in": true}, {"domain": "sun", "name": "Sun", "documentation": "https://www.home-assistant.io/integrations/sun", "codeowners": ["@Swamp-Ig"], "quality_scale": "internal", "iot_class": "calculated", "is_built_in": true}, {"domain": "image", "name": "Image", "config_flow": false, "documentation": "https://www.home-assistant.io/integrations/image", "requirements": ["pillow==8.2.0"], "dependencies": ["http"], "codeowners": ["@home-assistant/core"], "quality_scale": "internal", "is_built_in": true}, {"domain": "input_boolean", "name": "Input Boolean", "documentation": "https://www.home-assistant.io/integrations/input_boolean", "codeowners": ["@home-assistant/core"], "quality_scale": "internal", "is_built_in": true}, {"domain": "midea_ac", "name": "Midea Smart Aircon", "version": "0.1.35", "documentation": "", "requirements": ["msmart==0.1.35", "pycryptodome", "pycryptodomex", "click"], "dependencies": [], "codeowners": ["@mac-zhou"], "is_built_in": false}, {"domain": "websocket_api", "name": "Home Assistant WebSocket API", "documentation": "https://www.home-assistant.io/integrations/websocket_api", "dependencies": ["http"], "codeowners": ["@home-assistant/core"], "quality_scale": "internal", "is_built_in": true}, {"domain": "withings", "name": "Withings", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/withings", "requirements": ["withings-api==2.3.2"], "dependencies": ["http", "webhook"], "codeowners": ["@vangorra"], "iot_class": "cloud_polling", "is_built_in": true}, {"domain": "group", "name": "Group", "documentation": "https://www.home-assistant.io/integrations/group", "codeowners": ["@home-assistant/core"], "quality_scale": "internal", "iot_class": "calculated", "is_built_in": true}, {"domain": "camera", "name": "Camera", "documentation": "https://www.home-assistant.io/integrations/camera", "dependencies": ["http"], "requirements": ["PyTurboJPEG==1.6.3"], "after_dependencies": ["media_player"], "codeowners": [], "quality_scale": "internal", "is_built_in": true}, {"domain": "denonavr", "name": "Denon AVR Network Receivers", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/denonavr", "requirements": ["denonavr==0.10.9"], "codeowners": ["@ol-iver", "@starkillerOG"], "ssdp": [{"manufacturer": "Denon", "deviceType": "urn:schemas-upnp-org:device:MediaRenderer:1"}, {"manufacturer": "DENON", "deviceType": "urn:schemas-upnp-org:device:MediaRenderer:1"}, {"manufacturer": "DENON PROFESSIONAL", "deviceType": "urn:schemas-upnp-org:device:MediaRenderer:1"}, {"manufacturer": "Marantz", "deviceType": "urn:schemas-upnp-org:device:MediaRenderer:1"}, {"manufacturer": "Denon", "deviceType": "urn:schemas-upnp-org:device:MediaServer:1"}, {"manufacturer": "DENON", "deviceType": "urn:schemas-upnp-org:device:MediaServer:1"}, {"manufacturer": "DENON PROFESSIONAL", "deviceType": "urn:schemas-upnp-org:device:MediaServer:1"}, {"manufacturer": "Marantz", "deviceType": "urn:schemas-upnp-org:device:MediaServer:1"}, {"manufacturer": "Denon", "deviceType": "urn:schemas-denon-com:device:AiosDevice:1"}, {"manufacturer": "DENON", "deviceType": "urn:schemas-denon-com:device:AiosDevice:1"}, {"manufacturer": "DENON PROFESSIONAL", "deviceType": "urn:schemas-denon-com:device:AiosDevice:1"}, {"manufacturer": "Marantz", "deviceType": "urn:schemas-denon-com:device:AiosDevice:1"}], "iot_class": "local_polling", "is_built_in": true}, {"domain": "logbook", "name": "Logbook", "documentation": "https://www.home-assistant.io/integrations/logbook", "dependencies": ["frontend", "http", "recorder"], "codeowners": [], "quality_scale": "internal", "is_built_in": true}, {"domain": "ssdp", "name": "Simple Service Discovery Protocol (SSDP)", "documentation": "https://www.home-assistant.io/integrations/ssdp", "requirements": ["async-upnp-client==0.23.1"], "dependencies": ["network"], "after_dependencies": ["zeroconf"], "codeowners": [], "quality_scale": "internal", "iot_class": "local_push", "is_built_in": true}, {"after_dependencies": ["integration", "utility_meter"], "codeowners": ["@bramstroker"], "dependencies": ["device_tracker", "hue", "fan", "switch", "binary_sensor", "light", "group", "template"], "documentation": "https://github.com/bramstroker/homeassistant-powercalc", "domain": "powercalc", "iot_class": "local_polling", "issue_tracker": "https://github.com/bramstroker/homeassistant-powercalc/issues", "name": "Power consumption", "requirements": ["numpy>=1.21.1"], "version": "v0.14.0-beta.1", "is_built_in": false}, {"domain": "zone", "name": "Zone", "config_flow": false, "documentation": "https://www.home-assistant.io/integrations/zone", "codeowners": ["@home-assistant/core"], "quality_scale": "internal", "is_built_in": true}, {"domain": "tag", "name": "Tags", "documentation": "https://www.home-assistant.io/integrations/tag", "codeowners": ["@balloob", "@dmulcahey"], "quality_scale": "internal", "is_built_in": true}, {"domain": "weather", "name": "Weather", "documentation": "https://www.home-assistant.io/integrations/weather", "codeowners": ["@fabaff"], "quality_scale": "internal", "is_built_in": true}, {"domain": "my", "name": "My Home Assistant", "documentation": "https://www.home-assistant.io/integrations/my", "dependencies": ["frontend"], "codeowners": ["@home-assistant/core"], "quality_scale": "internal", "is_built_in": true}, {"domain": "hue", "name": "Philips Hue", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/hue", "requirements": ["aiohue==3.0.10"], "ssdp": [{"manufacturer": "Royal Philips Electronics", "modelName": "Philips hue bridge 2012"}, {"manufacturer": "Royal Philips Electronics", "modelName": "Philips hue bridge 2015"}, {"manufacturer": "Signify", "modelName": "Philips hue bridge 2015"}], "homekit": {"models": ["BSB002"]}, "zeroconf": ["_hue._tcp.local."], "codeowners": ["@balloob", "@marcelveldt"], "quality_scale": "platinum", "iot_class": "local_push", "is_built_in": true}, {"domain": "auth", "name": "Auth", "documentation": "https://www.home-assistant.io/integrations/auth", "dependencies": ["http"], "codeowners": ["@home-assistant/core"], "quality_scale": "internal", "is_built_in": true}, {"domain": "media_player", "name": "Media Player", "documentation": "https://www.home-assistant.io/integrations/media_player", "dependencies": ["http"], "codeowners": [], "quality_scale": "internal", "is_built_in": true}, {"domain": "google_translate", "name": "Google Translate Text-to-Speech", "documentation": "https://www.home-assistant.io/integrations/google_translate", "requirements": ["gTTS==2.2.3"], "codeowners": [], "iot_class": "cloud_push", "is_built_in": true}, {"domain": "tts", "name": "Text-to-Speech (TTS)", "documentation": "https://www.home-assistant.io/integrations/tts", "requirements": ["mutagen==1.45.1"], "dependencies": ["http"], "after_dependencies": ["media_player"], "codeowners": ["@pvizeli"], "quality_scale": "internal", "is_built_in": true}, {"domain": "network", "name": "Network Configuration", "documentation": "https://www.home-assistant.io/integrations/network", "requirements": ["ifaddr==0.1.7"], "codeowners": [], "dependencies": ["websocket_api"], "quality_scale": "internal", "iot_class": "local_push", "is_built_in": true}, {"codeowners": ["@ludeeus"], "config_flow": true, "dependencies": ["http", "websocket_api", "frontend", "persistent_notification", "lovelace"], "documentation": "https://hacs.xyz/docs/configuration/start", "domain": "hacs", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/hacs/integration/issues", "name": "HACS", "requirements": ["aiogithubapi>=21.11.0"], "version": "1.18.0", "is_built_in": false}, {"domain": "switch", "name": "Switch", "documentation": "https://www.home-assistant.io/integrations/switch", "codeowners": [], "quality_scale": "internal", "is_built_in": true}, {"domain": "map", "name": "Map", "documentation": "https://www.home-assistant.io/integrations/map", "dependencies": ["frontend"], "codeowners": [], "quality_scale": "internal", "is_built_in": true}, {"domain": "input_number", "name": "Input Number", "documentation": "https://www.home-assistant.io/integrations/input_number", "codeowners": ["@home-assistant/core"], "quality_scale": "internal", "is_built_in": true}, {"domain": "system_health", "name": "System Health", "documentation": "https://www.home-assistant.io/integrations/system_health", "dependencies": ["http"], "codeowners": [], "quality_scale": "internal", "is_built_in": true}, {"domain": "timer", "name": "Timer", "documentation": "https://www.home-assistant.io/integrations/timer", "codeowners": [], "quality_scale": "internal", "is_built_in": true}, {"domain": "counter", "name": "Counter", "documentation": "https://www.home-assistant.io/integrations/counter", "codeowners": ["@fabaff"], "quality_scale": "internal", "is_built_in": true}, {"domain": "heos", "name": "Denon HEOS", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/heos", "requirements": ["pyheos==0.7.2"], "ssdp": [{"st": "urn:schemas-denon-com:device:ACT-Denon:1"}], "codeowners": ["@andrewsayre"], "iot_class": "local_push", "is_built_in": true}, {"domain": "vacuum", "name": "Vacuum", "documentation": "https://www.home-assistant.io/integrations/vacuum", "codeowners": [], "quality_scale": "internal", "is_built_in": true}, {"domain": "updater", "name": "Updater", "documentation": "https://www.home-assistant.io/integrations/updater", "codeowners": ["@home-assistant/core"], "quality_scale": "internal", "iot_class": "cloud_polling", "is_built_in": true}, {"domain": "automation", "name": "Automation", "documentation": "https://www.home-assistant.io/integrations/automation", "dependencies": ["blueprint", "trace"], "after_dependencies": ["device_automation", "webhook"], "codeowners": ["@home-assistant/core"], "quality_scale": "internal", "is_built_in": true}, {"domain": "system_log", "name": "System Log", "documentation": "https://www.home-assistant.io/integrations/system_log", "dependencies": ["http"], "codeowners": [], "quality_scale": "internal", "is_built_in": true}]}
Thanks for the logs @kskarlatos . The good news is that library detected the device and got the status, the problem is in integration code.
@kskarlatos : I've just pushed new version v0.4.2. Could you check it?
Hi @nbogojevic , thanks for the quick update! it worked, and it found the dehumidifier. some sensors are not working at this time, but it is a good start!
same thing
Could you run again with notset logging enabled and attach the logs?
For this one, I'd need more detailed log (debug):
# ...
logger:
# ... your regular logger conf
logs:
custom_components.midea_dehumidifier_lan: debug
midea_beautiful_dehumidifier: debug
# ...
Hello, attached are the logs with the settings you specified logs.txt
Ok I think I know where the problem is - it is in https://github.com/nbogojevic/midea-beautiful-dehumidifier/blob/main/midea_beautiful_dehumidifier/lan.py#L564 as the header of the response is not stripped.
I've published new version of that library and new version of this integration (v0.4.3). Give it a try. If it doesn't work, try to get again notset level of logs.
thanks for the fix, i think its working now
its working thanks, but it seems when you make changes for example humidity, fan speed, mode etc, the humidifier doesnt make the "beep" noise.
@PskNorz it may be possible to add beep, but can you open a feature request describing how would you see that functionality - e.g. only for some entities, per device, per some actions...
We can keep this issue for protocol v2 validation.
No luck so far here: Logger: midea_beautiful_dehumidifier.scanner Source: /usr/local/lib/python3.9/site-packages/midea_beautiful_dehumidifier/scanner.py:136 First occurred: 00:03:36 (2 occurrences) Last logged: 00:15:56
Unable to discover registered appliance name=Entfeuchter oben, id=1759218611xxxx, type=0xA1
@user45876 can you attach your debug logs?
Will do, but it is offline in the app as well - so I need to check. Can do that on the 5th of january, not at home until then. Thanks for your work!!!
There are a few things that are not working in home assistant but can be used from midea-beautiful-dehumidifier-cli 1) continuous mode (mode 2) 2) medium fan (it only goes from silent to turbo) 3) ion not available
Ion for me is working, the other two having problem also
ok I enabled ion and it worked for me. Maybe it should be enabled by default?
No its the normal behaviour, if you turn on Humi manually it is not on, you must turn it on
Hi @kskarlatos can you double check the mode settings:
On my side I see different behavior on my development and real-world platforms. On development one it always worked. On the production one, the update is done in entity and on device, but not visible in humidifier UI:
Then after fully reloading UI on production side it started working:
Medium fan I couldn't reproduce on my v3 devices - well I could, but I don't think it is same - when I have two platforms running, the mode switching doesn't always work - there is race condition. If it persists, could you
For ION mode, by default the switch is disabled as some (many) dehumidifiers don't have it, you need to enable it manually. I have one that has it (Inventor) and one that doesn't have it (Comfee').
@nbogojevic when i turn on the fan its going back to off state
@PskNorz could you try to run command line from https://github.com/nbogojevic/midea-beautiful-dehumidifier
midea_beautiful_dehumidifier-cli --log 5 set --ip APPLIANCE_IP_ADDRESS --account EMAIL --password PASSWORD --fan 40
You can test with different values for --fan
argument between 0 and 100
I think something weird is happening, sometimes when i set ion to on it gets turned on but in the interface the switch goes back to off. i also can now set it to medium, when previously i couldnt.
Hello, everything worked, deleted and reinstalled, including the integration.
@kskarlatos that looks exactly like the problem I had with two running installations in parallel when they try to access same device, but for me, stopping one of the home assistance instances solves the issue. Can you check if you have some settings in your mobile app that can interact?
@nbogojevic I did the same as @Bimboboy007, deleted and reinstalled and now everything works perfectly. So something in the update messed things up (maybe this should be added to the readme). So, thank you again @nbogojevic for your outstanding plugin!
@nbogojevic you are right i was using parallel two integrations, yours and https://github.com/barban-dev/homeassistant-midea-dehumidifier.
Now seems to working, but on fan mode "Silent" the fan entity goes off
It is by design - as there are only 3 settings I assume that Silent is off (even if it is not) and all the others are on. Otherwise switch would have no effect at all.
I also have questions about how many devices can be integrated at the same time and how does it work with the EVA II and can I remove the devices from the cloud now?
There is no limit in the integration but there may be a limit on Midea/msmart cloud, but I don't think so. I have EVA ION PRO, EVA II PRO is the same thing without Ion mode. It may however have v2 protocol firmware, but that is supported now in v0.5.0.
So the following problem now occurs in the logs. Logger: midea_beautiful_dehumidifier.lan Source: /usr/local/lib/python3.9/site-packages/midea_beautiful_dehumidifier/lan.py:545 First occurred: 20:11:51 (18 occurrences) Last logged: 22:08:26
Unable to send data after 3 retries, last error [Errno 32] Broken pipe for id=17592186114862 ip=192.168.178.37:6444 version=2 Unable to send data after 3 retries, last error for id=17592186114862 ip=192.168.178.37:6444 version=2
Logger: midea_beautiful_dehumidifier.lan Source: /usr/local/lib/python3.9/site-packages/midea_beautiful_dehumidifier/lan.py:361 First occurred: 20:11:47 (36 occurrences) Last logged: 22:08:26
Connection error: id=17592186114862 ip=192.168.178.37:6444 version=2 for timed out Connection error: id=17592186114862 ip=192.168.178.37:6444 version=2 for [Errno 113] Host is unreachable Traceback (most recent call last): File "/usr/local/lib/python3.9/site-packages/midea_beautiful_dehumidifier/lan.py", line 358, in _connect self._socket.connect((self.ip, self.port)) socket.timeout: timed out Logger: midea_beautiful_dehumidifier.lan Source: /usr/local/lib/python3.9/site-packages/midea_beautiful_dehumidifier/lan.py:515 First occurred: 20:56:18 (1 occurrences) Last logged: 20:56:18
Unable to send data after 3 retries, last error for id=18691697852469 ip=192.168.178.52:6444 version=3
That is due to something on the network. Both errors are system errors, coming from Linux and not from integration itself.
First error means that socket connection was probably closed or cut on the other side (dehumidifier), second one would mean that actually dehumidifier is no longer reachable over network - which probably means it is down or that network connection between it and router was cut.
Hello, a short report. Today I updated again to the latest version and the same problem as last time, update does not work. It is best to delete everything and reinstall and restart after uninstalling and reinstalling. In addition to the logs, the devices are not in direct contact with the Rooter, I also have 2 networks with Powerlan in operation that explains the logs. The devices are likely to connect to the Devolo WiFi adapters. Everything is a network but therefore the errors.
Hello, somehow there are still problems, because today I entered something in the file editor so that I had to restart the server, the integration was not loaded and the devices were gone only after deactivating and reactivating with a subsequent server restart helped.
Hi @Bimboboy007 , it is difficult have any idea without logs. Can you get logs as described above?
Hello, I'll get in touch and pass the log on if the error occurs again.
Hello, do you know someone who has already dealt with wechat mini-programs integration in HA.
Hello I have the same Dehumidifier but my firmware in the app INVMATE II shows 056004051538. What kind of version is this ? Could I try this specific integration in HA or not ? Thanks
Doesn't matter best the latest should work. The integration has a bit of a peculiarity, however, no matter which version, whenever I change something in HA and have to restart, I usually have to delete this integration and then reinstall it so that my devices are available again. Sometimes even several times because it doesn't work the first time.
Ok. I will try it just for the feedback to the creator then.
Hello
Does Inventor EVA II PRO EP3-WiFi20L supported?