krahabb / meross_lan

Home Assistant integration for Meross devices
MIT License
387 stars 46 forks source link

Recent MSS110 Firmware Update Broke meross_lan #456

Open brianschrameck opened 3 weeks ago

brianschrameck commented 3 weeks ago

Version of the custom_component

5.2.1

Configuration


Configured using UI with cloud login.

Describe the bug

I have a number of mss110 devices. Some are hardware version 4.0.0, some are 7.0.0. Recently, a firmware update for hardware 7.0.0 was rolled out. The firmware notes said something like "improve security of local control". After updating, meross_lan can no longer control these devices at all. My hardware version 4.0.0 devices (firmware 4.2.14) are still working.

Debug log


2024-06-08 20:50:12.858 DEBUG (MainThread) [custom_components.meross_lan.mss110_###############################1] Polling begin
2024-06-08 20:50:12.858 DEBUG (MainThread) [custom_components.meross_lan.mss110_###############################1] TX(http) SET Appliance.Control.Multiple (messageId:16f92586dde44e63bb5fc070ff490771)
2024-06-08 20:50:12.908 DEBUG (MainThread) [custom_components.meross_lan.mss110_###############################1] RX(http) SETACK Appliance.Control.Multiple (messageId:16f92586dde44e63bb5fc070ff490771)
2024-06-08 20:50:12.908 DEBUG (MainThread) [custom_components.meross_lan.mss110_###############################1] Appliance.Control.Multiple requests=2 (responses=2) expected size=930 (actual=982)
2024-06-08 20:50:12.908 DEBUG (MainThread) [custom_components.meross_lan.mss110_###############################1] Polling end
2024-06-08 20:50:14.981 DEBUG (MainThread) [custom_components.meross_lan.mss110_###############################0] Polling begin
2024-06-08 20:50:14.981 DEBUG (MainThread) [custom_components.meross_lan.mss110_###############################0] TX(http) GET Appliance.System.All (messageId:7df7f3f0106f4cddb0e530fac65c2ea3)
2024-06-08 20:50:15.081 DEBUG (MainThread) [custom_components.meross_lan.mss110_###############################0] RX(http) GETACK Appliance.System.All (messageId:7df7f3f0106f4cddb0e530fac65c2ea3)
2024-06-08 20:50:15.081 DEBUG (MainThread) [custom_components.meross_lan.mss110_###############################0] Polling end
2024-06-08 20:50:15.081 DEBUG (MainThread) [custom_components.meross_lan.mss110_###############################0] TX(http) GET Appliance.System.Debug (messageId:1462cbbda37e4577ad69837e4d1a9bef)
2024-06-08 20:50:15.138 DEBUG (MainThread) [custom_components.meross_lan.mss110_###############################0] HTTP ERROR GET Appliance.System.Debug (messageId:1462cbbda37e4577ad69837e4d1a9bef ServerDisconnectedError:Server disconnected)
2024-06-08 20:50:15.327 DEBUG (MainThread) [custom_components.meross_lan.mss110_###############################4] Polling begin
2024-06-08 20:50:15.328 DEBUG (MainThread) [custom_components.meross_lan.mss110_###############################4] TX(http) GET Appliance.System.All (messageId:43480e9a7dde4a649222269109652371)
2024-06-08 20:50:15.426 DEBUG (MainThread) [custom_components.meross_lan.mss110_###############################4] RX(http) GETACK Appliance.System.All (messageId:43480e9a7dde4a649222269109652371)
2024-06-08 20:50:15.426 DEBUG (MainThread) [custom_components.meross_lan.mss110_###############################4] Polling end
2024-06-08 20:50:15.426 DEBUG (MainThread) [custom_components.meross_lan.mss110_###############################4] TX(http) GET Appliance.System.Debug (messageId:bfc110b44b8346379e0f6dda312df42a)
2024-06-08 20:50:15.486 DEBUG (MainThread) [custom_components.meross_lan.mss110_###############################4] HTTP ERROR GET Appliance.System.Debug (messageId:bfc110b44b8346379e0f6dda312df42a ServerDisconnectedError:Server disconnected)
brianschrameck commented 3 weeks ago

Enabling diagnostic entities on this firmware populates three new sensors: Name: Suite_ds Value: [null] — Name: Suite_ka Value: ecdhe256 — Name: Suite_se Value: mrskey

Judging by ecdhe256 above and the patch notes, it looks like they may have started encrypting local connections, if they weren't already.

brianschrameck commented 3 weeks ago

I'm still able to issue some commands to the /config endpoint. For example these still work:

But these result in an immediate socket hangup (I've validated that these same commands still work on the older firmware):

krahabb commented 3 weeks ago

This could explain a similar issue as in https://github.com/krahabb/meross_lan/issues/430#issuecomment-2131930662.

I think it would need some reverse engineering on the app <-> device communication in order to extract the eventual 'key' needed for correctly setting up those failing requests/responses.

I could guess the header would need some extra field carrying an added signature or the standard signature algorithm has been updated to a new version. Or, there's an extra 'encapsulation' of the whole payload which is no more sent as a plain json

brianschrameck commented 3 weeks ago

Yup, looks like the same exact behavior.

I tried sniffing traffic last night but couldn’t get my Mac to pick up the eapol packets for some reason. I’ll try running tcpdump on my UniFi router and/or access point to see if I can grab the traffic that way.

There are also two new capabilities for encryption listed; one to return the encryption suite, and the other presumably for initial key exchange.

brianschrameck commented 3 weeks ago

Not looking good, seems like the payload and header are both completely encrypted now. Here's what the traffic looks like between my app and the plug when toggling power:

Host: 192.168.3.121
Content-Type: text/plain
Connection: keep-alive
Accept: */*
User-Agent: intellect_socket/3.26.0 (iPhone; iOS 17.5.1; Scale/3.00)
Accept-Language: en-US;q=1
Content-Length: 472
Accept-Encoding: gzip, deflate

YmN73xCvPUw/BHOupPbpPjpMSxiEShfVguENAx/zy/Z8xX1FnoKzroF890DXonAErMliiwpwW6K8h61u8VG+tx6El2AtYP3muv3TK/pg3/zcsaTcTSPE+D4wl8paVwdXSujOmcbvzwcIxkZGzGpqBiteeK8qTh0KxNnbDc80Q89i29AjlVsrC9oZJXSFOUkgAUTX+6GjmZiJb0YoDefIU8YHR5l881Z3PzZ+IW7fIP8ZlPUsXxKTV+cpKyx/HcT+ZX5uFiA5KnvUmNM3NxfKlTc37IAsA02L4jTF4p86Q3g1j4VQPtIFb8iVLTOWnZdupfsjkgJS58QYoDSeYg3k/ETzdfoBxsyb++q6NoPcw5GlImf3kaz0QESBFo9kcBRIcIYpG9YjEjlQ4eYBOB8xQs660AnZupQQgvII5ntaAnevgNLTk6y9K5K7TE7l7RcXx9p6o+E+3i+0A7Oq/DLYxA==
brianschrameck commented 3 weeks ago

I'm going to request that Meross roll back my firmware to the previous version on these plugs.

But my other question is: why isn't cloud connectivity working? The meross-homeassistant (a.k.a. meross_cloud) HA integration seems to work OK via cloud. I guess they use different mechanisms, but I thought they were both using the Meross MQTT broker to send/receive messages.

krahabb commented 3 weeks ago

Hello @brianschrameck , Today I've checked the merossiot repo which is the foundation of that other component and it looks like it is supporting encryption...so the solution for meross_lan would be to 'copy' that implementation along. @albertogeniola is always doing a damn good job with Meross...I (we) surely owe him some coffee or beer ;)

albertogeniola commented 3 weeks ago

Hi @krahabb , Didn't notice this thread. You are right, the newest firmware does add encryption capabilities for local lan communication.

Communication with local devices is required but only if the device exposes the encryption ability within the GET ABILITIES command. Note that mqtt is not affected and should continue working in clear text.

Feel free to get inspiration from my repo 🙂

krahabb commented 3 weeks ago

Hello @brianschrameck, I've ported the support for encryption from https://github.com/albertogeniola/MerossIot and it is now implemented in the dev branch. I could sooner or later release an alpha but I guess you'd have no problems directly downloading the branch (tell me, I can anyway quickly 'pre-release' during the day).

Or, take inspiration if you want to try 'manually' encode/decode payloads and see if everything fits.

It looks as even if ECDHE256 is mentioned as 'ka' (key algorithm ?) encryption is basically an AES CBC with a 'parameterized' key and a fixed iv. Meross uses this techninque here and there to compute secrets based off some unique/intrinsic device properties (uuid/mac) and the device/account key (signature key).

The fix itself is pretty simple and you'll easily check the diff in #2920018 (mainly in httpclient.py)

brianschrameck commented 3 weeks ago

That was fast! I pulled the dev branch and things look to be working well. 👍 Thanks!

krahabb commented 3 weeks ago

Awesome ;)

rxin commented 2 weeks ago

Do you have an ETA on when you will make a release with this? Asking so I can make sure I check back and update :) Thanks!

krahabb commented 2 weeks ago

Hello @rxin. The 'pre-release' channel already has an update with the feature which has already been tested in the field and looks promising. You can enable 'beta releases' in HACS for the repo so to get access to the download.

Else I think I could release an official version in the next weekend

stefmde commented 1 week ago

image Sadly Alpha 2 is still not working for me and I think the Sensors changed. I can see the current state bug can't switch it in HA. Hope that helps :)

JosephRDawson commented 1 week ago

I moved to 5.3.0-alpha.2 but my issues with the mini plugs on hardware platform 7.0 is still no go.

krahabb commented 6 days ago

This is puzzling me a bit. By the look of it the issue is strictly connected to this incoming new fw for v7 hw which is introducing (mandatory?) encryption for HTTP traffic which is the default meross_lan uses. Some queries though are still supported in clear and that's why some state from the device gets refreshed (typically the switch state) but obviously the commands are not (and many other queries: this explains @stefmde dashboard view)

What I don't understand is why the patch (5.3.0-alpha.2) worked for @brianschrameck and is not working for others exposing the same kind of issue/behavior. If I could get a 'Download diagnostic' (with 5.3.0-alpha.2) from any of these devices I could try better figure out. In the meantime, you could try re-configure the device (no need to remove and re-add the device). Just enter CONFIGURE from meross_lan integration UI and without any change hit the SUBMIT button so that the component tries/checks the device configuration (do this for any device still exposing the issue on alpha.2). This might be needed since the device abilities are only read once when the device is configured and the integration needs to know if, among those abilities, encryption is supported or not.

brianschrameck commented 6 days ago

FWIW I had completely removed and reinstalled the integration, so that would seem to make sense for the need to reconfigure.

JosephRDawson commented 6 days ago

This is the raw data from one of the devices that is not working in Alpha 2

{ "home_assistant": { "installation_type": "Home Assistant OS", "version": "2024.6.4", "dev": false, "hassio": true, "virtualenv": false, "python_version": "3.12.2", "docker": true, "arch": "aarch64", "timezone": "America/St_Johns", "os_name": "Linux", "os_version": "6.6.33-haos", "supervisor": "2024.06.2", "host_os": "Home Assistant OS 12.4", "docker_version": "26.1.4", "chassis": "embedded", "run_as_root": true }, "custom_components": { "pyscript": { "documentation": "https://github.com/custom-components/pyscript", "version": "1.5.0", "requirements": [ "croniter==1.3.8", "watchdog==2.3.1" ] }, "meross_lan": { "documentation": "https://github.com/krahabb/meross_lan", "version": "5.3.0-alpha.2", "requirements": [] }, "hacs": { "documentation": "https://hacs.xyz/docs/configuration/start", "version": "1.34.0", "requirements": [ "aiogithubapi>=22.10.1" ] }, "meross_cloud": { "documentation": "https://www.home-assistant.io/components/meross_cloud", "version": "1.3.2", "requirements": [ "meross_iot==0.4.7.2b3" ] }, "sinope": { "documentation": "https://github.com/claudegel/sinope-gt125", "version": "1.6.8", "requirements": [ "crc8==0.1.0" ] }, "neviweb": { "documentation": "https://github.com/claudegel/sinope-1", "version": "2.2.1", "requirements": [] } }, "integration_manifest": { "domain": "meross_lan", "name": "Meross LAN", "after_dependencies": [ "mqtt", "dhcp", "recorder", "persistent_notification" ], "codeowners": [ "krahabb" ], "config_flow": true, "dhcp": [ { "hostname": "", "macaddress": "48E1E9" }, { "hostname": "", "macaddress": "C4E7AE" }, { "hostname": "", "macaddress": "34298F1" }, { "registered_devices": true } ], "documentation": "https://github.com/krahabb/meross_lan", "integration_type": "hub", "iot_class": "local_polling", "issue_tracker": "https://github.com/krahabb/meross_lan/issues", "loggers": [ "custom_components.meross_lan" ], "mqtt": [ "/appliance/+/publish" ], "requirements": [], "version": "5.3.0-alpha.2", "is_built_in": false }, "setup_times": { "null": { "setup": 9.595799929229543e-05 }, "5facaa17d15da6786588cda63012676d": { "wait_import_platforms": -0.00013970799773233011, "config_entry_setup": 0.13238459500280442 }, "5487551d6e2301668a0c658a8454544f": { "wait_import_platforms": -0.0002295419981237501, "wait_base_component": -17.50815853200038, "config_entry_setup": 18.160321740004292 }, "43c8fa579c1f9fba9ebd9837bf3434dd": { "wait_import_platforms": -0.0002450009997119196, "wait_base_component": -17.471636823000154, "config_entry_setup": 18.158324693002214 }, "b23b90b3aa40466c909c880789b37998": { "wait_import_platforms": -0.0003590420019463636, "wait_base_component": -17.43496782299917, "config_entry_setup": 18.20350163099647 }, "369679a0ec61f2b4123e4066137e5123": { "wait_base_component": -17.458617377000337, "config_entry_setup": 18.15588868800114 }, "d00445cae8a6103543a229f958e5b76c": { "wait_base_component": -17.44835447800142, "config_entry_setup": 18.154161433994886 }, "88ad65f5238005719418ec45af88a23f": { "wait_base_component": -17.440699376995326, "config_entry_setup": 18.20782997400238 }, "a03666194118864e8ba54050794c6b13": { "wait_base_component": -17.439782084002218, "config_entry_setup": 18.20374575599999 }, "be26019096d2700a7de0c43684092920": { "wait_base_component": -17.37868506799714, "config_entry_setup": 18.203088045993354 }, "55aa7176d15601398a2090c0651d62d8": { "wait_base_component": -17.353665261005517, "config_entry_setup": 18.204670924998936 }, "57c03035bd9b46b570f5f7a6c3dfdbe4": { "wait_base_component": -17.3253067379992, "config_entry_setup": 18.207901433001098 }, "ebabf095514c6a0c40913719a106e5ce": { "wait_base_component": -17.304023480995966, "config_entry_setup": 18.206789304997073 }, "ff3fc9be763a3ccf76badc0e526a2e32": { "wait_base_component": -17.285623645999294, "config_entry_setup": 18.206181469999137 }, "3d251a541f7e229c5bca76d488ff8687": { "wait_base_component": -17.282749557001807, "config_entry_setup": 18.2056305110018 }, "f933e3b0f0d03b6e46b52f114281d3a5": { "wait_base_component": -17.278159588000563, "config_entry_setup": 18.205279050998797 } }, "data": { "host": "########0", "payload": { "all": { "system": { "hardware": { "type": "mss110", "subType": "un", "version": "7.0.0", "chipType": "rtl8710cm", "uuid": "##############################13", "macAddress": "################0" }, "firmware": { "version": "7.3.37", "homekitVersion": "6.3", "compileTime": "2024/04/12-19:13:08", "encrypt": 1, "wifiMac": "################0", "innerIp": "########0", "server": "###################0", "port": "@0", "userId": "@0" }, "time": { "timestamp": 1719577765, "timezone": "America/St_Johns", "timeRule": [ [ 1647149400, -9000, 1 ], [ 1667709000, -12600, 0 ], [ 1678599000, -9000, 1 ], [ 1699158600, -12600, 0 ], [ 1710048600, -9000, 1 ], [ 1730608200, -12600, 0 ], [ 1741498200, -9000, 1 ], [ 1762057800, -12600, 0 ], [ 1772947800, -9000, 1 ], [ 1793507400, -12600, 0 ], [ 1805002200, -9000, 1 ], [ 1825561800, -12600, 0 ], [ 1836451800, -9000, 1 ], [ 1857011400, -12600, 0 ], [ 1867901400, -9000, 1 ], [ 1888461000, -12600, 0 ], [ 1899351000, -9000, 1 ], [ 1919910600, -12600, 0 ], [ 1930800600, -9000, 1 ], [ 1951360200, -12600, 0 ] ] }, "online": { "status": 1, "bindId": "YKL1WiEdsQl2htET", "who": 1 } }, "digest": { "togglex": [ { "channel": 0, "onoff": 1, "lmTime": 1719577653 } ], "triggerx": [], "timerx": [] } }, "payloadVersion": 1, "ability": { "Appliance.Config.Key": {}, "Appliance.Config.WifiList": {}, "Appliance.Config.Wifi": {}, "Appliance.Config.WifiX": {}, "Appliance.Config.Trace": {}, "Appliance.Config.Info": {}, "Appliance.Config.OverTemp": {}, "Appliance.Config.NtpSite": {}, "Appliance.Encrypt.Suite": {}, "Appliance.Encrypt.ECDHE": {}, "Appliance.System.All": {}, "Appliance.System.Hardware": {}, "Appliance.System.Firmware": {}, "Appliance.System.Debug": {}, "Appliance.System.Online": {}, "Appliance.System.Time": {}, "Appliance.System.Clock": {}, "Appliance.System.Ability": {}, "Appliance.System.Runtime": {}, "Appliance.System.Report": {}, "Appliance.System.Position": {}, "Appliance.System.DNDMode": {}, "Appliance.Control.Multiple": { "maxCmdNum": 3 }, "Appliance.Control.Bind": {}, "Appliance.Control.Unbind": {}, "Appliance.Control.Upgrade": {}, "Appliance.Control.OverTemp": {}, "Appliance.Control.ToggleX": {}, "Appliance.Control.TimerX": { "sunOffsetSupport": 1 }, "Appliance.Digest.TimerX": {}, "Appliance.Control.TriggerX": {}, "Appliance.Digest.TriggerX": {} } }, "key": "###############################0", "device_id": "##############################13", "device": { "class": "MerossDevice", "conf_protocol": "auto", "pref_protocol": "http", "curr_protocol": "http", "polling_period": 30, "device_response_size_min": 1450, "device_response_size_max": 5000, "MQTT": { "cloud_profile": true, "locally_active": false, "mqtt_connection": true, "mqtt_connected": true, "mqtt_publish": true, "mqtt_active": true }, "HTTP": { "http": true, "http_active": true }, "namespace_handlers": { "Appliance.System.All": { "lastrequest": 1719577766.139646, "lastresponse": 1719577766.6335526, "polling_strategy": "async_poll_all" }, "Appliance.Control.ToggleX": { "lastrequest": 0.0, "lastresponse": 1719577855.9870756, "polling_strategy": null }, "Appliance.Config.OverTemp": { "lastrequest": 1719584070.4392803, "lastresponse": 1719584070.5916905, "polling_strategy": "async_poll_lazy" }, "Appliance.System.DNDMode": { "lastrequest": 1719584070.4392803, "lastresponse": 1719584070.5916905, "polling_strategy": "async_poll_lazy" }, "Appliance.System.Runtime": { "lastrequest": 1719584070.4392803, "lastresponse": 1719584070.5916905, "polling_strategy": "async_poll_lazy" }, "Appliance.System.Debug": { "lastrequest": 0.0, "lastresponse": 1719577766.947002, "polling_strategy": null } }, "namespace_pushes": { "Appliance.Control.ToggleX": { "togglex": [ { "lmTime": 1719577853, "channel": 0, "onoff": 1 } ] } }, "device_info": { "uuid": "##############################13", "onlineStatus": 1, "devName": "August Connect Front", "devIconId": "device001", "bindTime": 1672589788, "deviceType": "mss110", "subType": "us", "channels": [ {} ], "region": "us", "fmwareVersion": "7.3.37", "hdwareVersion": "7.0.0", "userDevIcon": "", "iconType": 1, "domain": "###################0", "reservedDomain": "###################0", "hardwareCapabilities": [] } }, "trace": [ [ "time", "rxtx", "protocol", "method", "namespace", "data" ], [ "2024/06/28 - 11:45:47", "", "auto", "GETACK", "Appliance.System.All", { "system": { "hardware": { "type": "mss110", "subType": "un", "version": "7.0.0", "chipType": "rtl8710cm", "uuid": "##############################13", "macAddress": "################0" }, "firmware": { "version": "7.3.37", "homekitVersion": "6.3", "compileTime": "2024/04/12-19:13:08", "encrypt": 1, "wifiMac": "################0", "innerIp": "########0", "server": "###################0", "port": "@0", "userId": "@0" }, "time": { "timestamp": 1719577765, "timezone": "America/St_Johns", "timeRule": [ [ 1647149400, -9000, 1 ], [ 1667709000, -12600, 0 ], [ 1678599000, -9000, 1 ], [ 1699158600, -12600, 0 ], [ 1710048600, -9000, 1 ], [ 1730608200, -12600, 0 ], [ 1741498200, -9000, 1 ], [ 1762057800, -12600, 0 ], [ 1772947800, -9000, 1 ], [ 1793507400, -12600, 0 ], [ 1805002200, -9000, 1 ], [ 1825561800, -12600, 0 ], [ 1836451800, -9000, 1 ], [ 1857011400, -12600, 0 ], [ 1867901400, -9000, 1 ], [ 1888461000, -12600, 0 ], [ 1899351000, -9000, 1 ], [ 1919910600, -12600, 0 ], [ 1930800600, -9000, 1 ], [ 1951360200, -12600, 0 ] ] }, "online": { "status": 1, "bindId": "YKL1WiEdsQl2htET", "who": 1 } }, "digest": { "togglex": [ { "channel": 0, "onoff": 1, "lmTime": 1719577653 } ], "triggerx": [], "timerx": [] } } ], [ "2024/06/28 - 11:45:47", "", "auto", "GETACK", "Appliance.System.Ability", { "Appliance.Config.Key": {}, "Appliance.Config.WifiList": {}, "Appliance.Config.Wifi": {}, "Appliance.Config.WifiX": {}, "Appliance.Config.Trace": {}, "Appliance.Config.Info": {}, "Appliance.Config.OverTemp": {}, "Appliance.Config.NtpSite": {}, "Appliance.Encrypt.Suite": {}, "Appliance.Encrypt.ECDHE": {}, "Appliance.System.All": {}, "Appliance.System.Hardware": {}, "Appliance.System.Firmware": {}, "Appliance.System.Debug": {}, "Appliance.System.Online": {}, "Appliance.System.Time": {}, "Appliance.System.Clock": {}, "Appliance.System.Ability": {}, "Appliance.System.Runtime": {}, "Appliance.System.Report": {}, "Appliance.System.Position": {}, "Appliance.System.DNDMode": {}, "Appliance.Control.Multiple": { "maxCmdNum": 3 }, "Appliance.Control.Bind": {}, "Appliance.Control.Unbind": {}, "Appliance.Control.Upgrade": {}, "Appliance.Control.OverTemp": {}, "Appliance.Control.ToggleX": {}, "Appliance.Control.TimerX": { "sunOffsetSupport": 1 }, "Appliance.Digest.TimerX": {}, "Appliance.Control.TriggerX": {}, "Appliance.Digest.TriggerX": {} } ], [ "2024/06/28 - 11:45:47", "TX", "http", "GET", "Appliance.Config.Info", { "info": {} } ], [ "2024/06/28 - 11:45:47", "RX", "http", "GETACK", "Appliance.Config.Info", { "info": { "homekit": { "model": "MSS110", "sn": "##############0", "category": 7, "setupId": "###0", "setupCode": "#########0", "uuid": "##################################14", "token": "###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################0" } } } ], [ "2024/06/28 - 11:45:47", "TX", "http", "GET", "Appliance.Config.OverTemp", { "overTemp": {} } ], [ "2024/06/28 - 11:45:47", "RX", "http", "GETACK", "Appliance.Config.OverTemp", { "overTemp": { "enable": 1, "type": -1 } } ], [ "2024/06/28 - 11:45:47", "TX", "http", "GET", "Appliance.Config.NtpSite", { "ntpSite": {} } ], [ "2024/06/28 - 11:45:47", "", "auto", "LOG", "debug", "HTTP ERROR GET Appliance.Config.NtpSite (messageId:53c020437d2a41b393f80edc390a9f41 ServerDisconnectedError:Server disconnected)" ], [ "2024/06/28 - 11:45:47", "TX", "http", "PUSH", "Appliance.Config.NtpSite", {} ], [ "2024/06/28 - 11:45:47", "RX", "http", "SET", "Appliance.Config.NtpSite", {} ], [ "2024/06/28 - 11:45:47", "", "auto", "LOG", "debug", "Handler undefined for method:SET namespace:Appliance.Config.NtpSite payload:{}" ], [ "2024/06/28 - 11:45:47", "TX", "http", "GET", "Appliance.Encrypt.Suite", { "suite": {} } ], [ "2024/06/28 - 11:45:48", "RX", "http", "GETACK", "Appliance.Encrypt.Suite", { "suite": { "ka": "ecdhe256", "se": "mrskey", "ds": "" } } ], [ "2024/06/28 - 11:45:48", "", "auto", "LOG", "debug", "Handler undefined for method:GETACK namespace:Appliance.Encrypt.Suite payload:{'suite': {'ka': 'ecdhe256', 'se': 'mrskey', 'ds': ''}}" ], [ "2024/06/28 - 11:45:48", "TX", "http", "GET", "Appliance.Encrypt.ECDHE", { "eCDHE": {} } ], [ "2024/06/28 - 11:45:48", "", "auto", "LOG", "debug", "HTTP ERROR GET Appliance.Encrypt.ECDHE (messageId:82bef6b6c23f487698d1581c5b3607f2 ServerDisconnectedError:Server disconnected)" ], [ "2024/06/28 - 11:45:48", "TX", "http", "PUSH", "Appliance.Encrypt.ECDHE", {} ], [ "2024/06/28 - 11:45:48", "", "auto", "LOG", "debug", "HTTP ERROR PUSH Appliance.Encrypt.ECDHE (messageId:1b49af4fd6644fae943c6dc868155fdd ServerDisconnectedError:Server disconnected)" ], [ "2024/06/28 - 11:45:48", "TX", "http", "GET", "Appliance.System.Debug", { "debug": {} } ], [ "2024/06/28 - 11:45:48", "RX", "http", "GETACK", "Appliance.System.Debug", { "debug": { "system": { "version": "7.3.37", "homekitVersion": "6.3", "sysUpTime": "17h43m18s", "UTC": 1719584147, "localTimeOffset": -9000, "localTime": "Fri Jun 28 11:45:47 2024", "suncalc": "5:5;21:2", "memTotal": 3611680, "memFree": 3320864, "memMini": 3312192 }, "network": { "linkStatus": "connected", "snr": 36, "channel": 4, "signal": 100, "rssi": -33, "ssid": "########0", "gatewayMac": "################0", "innerIp": "########0", "wifiDisconnectCount": 0, "wifiDisconnectDetail": { "totalCount": 0, "detials": [] } }, "cloud": { "linkStatus": "connected", "activeServer": "###################0", "mainServer": "###################0", "mainPort": "@0", "secondServer": "###################1", "secondPort": "@0", "userId": "@0", "sysConnectTime": "Thu Jun 27 20:32:40 2024", "sysOnlineTime": "17h43m7s", "sysDisconnectCount": 0, "iotDisconnectDetail": { "totalCount": 0, "detials": [] } } } } ], [ "2024/06/28 - 11:45:48", "TX", "http", "GET", "Appliance.System.Runtime", { "runtime": {} } ], [ "2024/06/28 - 11:45:48", "RX", "http", "GETACK", "Appliance.System.Runtime", { "runtime": { "signal": 100, "ssid": "########0" } } ], [ "2024/06/28 - 11:45:48", "TX", "http", "GET", "Appliance.Control.OverTemp", { "overTemp": {} } ], [ "2024/06/28 - 11:45:48", "", "auto", "LOG", "debug", "HTTP ERROR GET Appliance.Control.OverTemp (messageId:aa526945917f44b0a636307941fbefc6 ServerDisconnectedError:Server disconnected)" ], [ "2024/06/28 - 11:45:48", "TX", "http", "PUSH", "Appliance.Control.OverTemp", {} ], [ "2024/06/28 - 11:45:48", "", "auto", "LOG", "debug", "HTTP ERROR PUSH Appliance.Control.OverTemp (messageId:638274d41c9743c3a812f141254b1627 ServerDisconnectedError:Server disconnected)" ], [ "2024/06/28 - 11:45:48", "TX", "http", "GET", "Appliance.Control.ToggleX", { "togglex": [] } ], [ "2024/06/28 - 11:45:48", "RX", "http", "GETACK", "Appliance.Control.ToggleX", { "channel": 4294967295, "togglex": [ { "channel": 0, "onoff": 1, "lmTime": 1719584085 } ] } ] ] } }

JosephRDawson commented 6 days ago

By the way I tried uninstalling the HACS intergration and rebooting and re-adding. No change. I did break down and install the Merros Cloud integration and that works as a backup while I am waiting for this issue to be resolved. https://github.com/albertogeniola/meross-homeassistant

stefmde commented 6 days ago

image

First I had an old Version (don't know the Version) manually installed. After that I had HACS. So I removed the old version manually and installed the beta 2 via HACS and restarted HA. Now I noticed that there comes a additional popup wenn I hit the "Configure?" button on the device. I clicked the "Configure?" button in the first popup and the second popup is the same then as in the old version I had. I then submitted as you sayed without changing something. Doesn't work. I checked all the Connectiontypes. MQTT can't be submitted. Auto/Http made no difference.

krahabb commented 6 days ago

@JosephRDawson: Your diagnostic seems promising as everything (except some new/unknown messages which are irrelevant for the general behavior) looks like working good. If I'm not wrong you previously posted/opened an issue (#467 - now closed) with some logs where almost 99% of the HTTP connections were failing while now the queries are working ok. So, the alpha.2 looks like working 'in general' in order to address the encrypted protocol support. The issue you have now might be different, or related but at a different level.

JosephRDawson commented 6 days ago

Hi ... I closed 467 because it was a duplicate to this issue and I wanted to respect the bug tracking. I didn't close it because it was resolved.

The log data may look better but the end result is the same... Not working. :) Is their any additional captures or anything i could do to give you more data.

stefmde commented 6 days ago

Do I need to open an own issue? Thought it was the same as here ^^ Unfortunately I don't know where I can find logs or something to provide mir insights.

JosephRDawson commented 6 days ago

Ok... I turned on debug and flicked it on and off a few times and downloaded the diagnostics. If their is something more useful i can do please let me know.

{ "home_assistant": { "installation_type": "Home Assistant OS", "version": "2024.6.4", "dev": false, "hassio": true, "virtualenv": false, "python_version": "3.12.2", "docker": true, "arch": "aarch64", "timezone": "America/St_Johns", "os_name": "Linux", "os_version": "6.6.33-haos", "supervisor": "2024.06.2", "host_os": "Home Assistant OS 12.4", "docker_version": "26.1.4", "chassis": "embedded", "run_as_root": true }, "custom_components": { "pyscript": { "documentation": "https://github.com/custom-components/pyscript", "version": "1.5.0", "requirements": [ "croniter==1.3.8", "watchdog==2.3.1" ] }, "meross_lan": { "documentation": "https://github.com/krahabb/meross_lan", "version": "5.2.2", "requirements": [] }, "hacs": { "documentation": "https://hacs.xyz/docs/configuration/start", "version": "1.34.0", "requirements": [ "aiogithubapi>=22.10.1" ] }, "meross_cloud": { "documentation": "https://www.home-assistant.io/components/meross_cloud", "version": "1.3.2", "requirements": [ "meross_iot==0.4.7.2b3" ] }, "sinope": { "documentation": "https://github.com/claudegel/sinope-gt125", "version": "1.6.8", "requirements": [ "crc8==0.1.0" ] }, "neviweb": { "documentation": "https://github.com/claudegel/sinope-1", "version": "2.2.1", "requirements": [] } }, "integration_manifest": { "domain": "meross_lan", "name": "Meross LAN", "after_dependencies": [ "mqtt", "dhcp", "recorder", "persistent_notification" ], "codeowners": [ "krahabb" ], "config_flow": true, "dhcp": [ { "hostname": "", "macaddress": "48E1E9" }, { "hostname": "", "macaddress": "C4E7AE" }, { "hostname": "", "macaddress": "34298F1" }, { "registered_devices": true } ], "documentation": "https://github.com/krahabb/meross_lan", "integration_type": "hub", "iot_class": "local_polling", "issue_tracker": "https://github.com/krahabb/meross_lan/issues", "loggers": [ "custom_components.meross_lan" ], "mqtt": [ "/appliance/+/publish" ], "requirements": [], "version": "5.2.2", "is_built_in": false }, "setup_times": { "null": { "setup": 0.00010062500001595254 }, "5facaa17d15da6786588cda63012676d": { "wait_import_platforms": -0.00015020900002582493, "config_entry_setup": 0.13967065000002776 }, "5487551d6e2301668a0c658a8454544f": { "wait_import_platforms": -0.00022458400002278722, "wait_base_component": -15.021828568999979, "config_entry_setup": 15.688359437000031 }, "43c8fa579c1f9fba9ebd9837bf3434dd": { "wait_import_platforms": -0.00022370900001078553, "wait_base_component": -15.018911891000016, "config_entry_setup": 15.688577312999996 }, "b23b90b3aa40466c909c880789b37998": { "wait_import_platforms": -0.00032900200000085533, "wait_base_component": -14.991269665000004, "config_entry_setup": 15.733747026999993 }, "369679a0ec61f2b4123e4066137e5123": { "wait_base_component": -15.008456478000028, "config_entry_setup": 15.688269311999989 }, "d00445cae8a6103543a229f958e5b76c": { "wait_base_component": -14.998731984000017, "config_entry_setup": 15.685461135000025 }, "88ad65f5238005719418ec45af88a23f": { "wait_base_component": -14.998177231999989, "config_entry_setup": 15.735422655999969 }, "a03666194118864e8ba54050794c6b13": { "wait_base_component": -14.995308096999963, "config_entry_setup": 15.732610104000003 }, "be26019096d2700a7de0c43684092920": { "wait_base_component": -14.967768535000005, "config_entry_setup": 15.733833069000013 }, "55aa7176d15601398a2090c0651d62d8": { "wait_base_component": -14.970194628000002, "config_entry_setup": 15.740974262999998 }, "57c03035bd9b46b570f5f7a6c3dfdbe4": { "wait_base_component": -14.962858601999983, "config_entry_setup": 15.742457102999992 }, "ebabf095514c6a0c40913719a106e5ce": { "wait_base_component": -14.960336257999984, "config_entry_setup": 15.745732824000015 }, "ff3fc9be763a3ccf76badc0e526a2e32": { "wait_base_component": -14.956675537000024, "config_entry_setup": 15.747446664000051 }, "3d251a541f7e229c5bca76d488ff8687": { "wait_base_component": -14.95347856699999, "config_entry_setup": 15.744509569999991 }, "f933e3b0f0d03b6e46b52f114281d3a5": { "wait_base_component": -14.950121180000053, "config_entry_setup": 15.744561778000048 } }, "data": { "host": "#########0", "payload": { "all": { "system": { "hardware": { "type": "mss110", "subType": "un", "version": "7.0.0", "chipType": "rtl8710cm", "uuid": "##############################11", "macAddress": "################0" }, "firmware": { "version": "7.3.37", "homekitVersion": "6.3", "compileTime": "2024/04/12-19:13:08", "encrypt": 1, "wifiMac": "################0", "innerIp": "#########0", "server": "###################0", "port": "@0", "userId": "@0" }, "time": { "timestamp": 1719588479, "timezone": "America/St_Johns", "timeRule": [ [ 1647149400, -9000, 1 ], [ 1667709000, -12600, 0 ], [ 1678599000, -9000, 1 ], [ 1699158600, -12600, 0 ], [ 1710048600, -9000, 1 ], [ 1730608200, -12600, 0 ], [ 1741498200, -9000, 1 ], [ 1762057800, -12600, 0 ], [ 1772947800, -9000, 1 ], [ 1793507400, -12600, 0 ], [ 1805002200, -9000, 1 ], [ 1825561800, -12600, 0 ], [ 1836451800, -9000, 1 ], [ 1857011400, -12600, 0 ], [ 1867901400, -9000, 1 ], [ 1888461000, -12600, 0 ], [ 1899351000, -9000, 1 ], [ 1919910600, -12600, 0 ], [ 1930800600, -9000, 1 ], [ 1951360200, -12600, 0 ] ] }, "online": { "status": 1, "bindId": "XpqA1zpbqHU0wxZe", "who": 1 } }, "digest": { "togglex": [ { "channel": 0, "onoff": 0, "lmTime": 1719543347 } ], "triggerx": [], "timerx": [] } }, "payloadVersion": 1, "ability": { "Appliance.Config.Key": {}, "Appliance.Config.WifiList": {}, "Appliance.Config.Wifi": {}, "Appliance.Config.WifiX": {}, "Appliance.Config.Trace": {}, "Appliance.Config.Info": {}, "Appliance.Config.OverTemp": {}, "Appliance.Config.NtpSite": {}, "Appliance.Encrypt.Suite": {}, "Appliance.Encrypt.ECDHE": {}, "Appliance.System.All": {}, "Appliance.System.Hardware": {}, "Appliance.System.Firmware": {}, "Appliance.System.Debug": {}, "Appliance.System.Online": {}, "Appliance.System.Time": {}, "Appliance.System.Clock": {}, "Appliance.System.Ability": {}, "Appliance.System.Runtime": {}, "Appliance.System.Report": {}, "Appliance.System.Position": {}, "Appliance.System.DNDMode": {}, "Appliance.Control.Multiple": { "maxCmdNum": 3 }, "Appliance.Control.Bind": {}, "Appliance.Control.Unbind": {}, "Appliance.Control.Upgrade": {}, "Appliance.Control.OverTemp": {}, "Appliance.Control.ToggleX": {}, "Appliance.Control.TimerX": { "sunOffsetSupport": 1 }, "Appliance.Digest.TimerX": {}, "Appliance.Control.TriggerX": {}, "Appliance.Digest.TriggerX": {} } }, "key": "###############################0", "device_id": "##############################11", "timestamp": 1718788266.4211953, "device": { "class": "MerossDevice", "conf_protocol": "auto", "pref_protocol": "http", "curr_protocol": "http", "polling_period": 30, "device_response_size_min": 1449, "device_response_size_max": 1449, "MQTT": { "cloud_profile": true, "locally_active": false, "mqtt_connection": true, "mqtt_connected": true, "mqtt_publish": true, "mqtt_active": true }, "HTTP": { "http": true, "http_active": true }, "namespace_handlers": { "Appliance.System.All": { "lastrequest": 1719588480.758611, "lastresponse": 1719588481.0832298, "polling_strategy": "async_poll_all" }, "Appliance.Control.ToggleX": { "lastrequest": 0.0, "lastresponse": 1719588531.177938, "polling_strategy": null }, "Appliance.Config.OverTemp": { "lastrequest": 1719588661.095082, "lastresponse": 1719588661.4489262, "polling_strategy": "async_poll_lazy" }, "Appliance.System.DNDMode": { "lastrequest": 1719588661.095082, "lastresponse": 1719588661.4489262, "polling_strategy": "async_poll_lazy" }, "Appliance.System.Runtime": { "lastrequest": 1719588661.095082, "lastresponse": 1719588661.4489262, "polling_strategy": "async_poll_lazy" }, "Appliance.Encrypt.Suite": { "lastrequest": 0.0, "lastresponse": 1719588612.9674473, "polling_strategy": null } }, "namespace_pushes": { "Appliance.Control.ToggleX": { "togglex": [ { "onoff": 0, "lmTime": 1719588529, "channel": 0 } ] } }, "device_info": { "uuid": "##############################11", "onlineStatus": 1, "devName": "Fan", "devIconId": "device001", "bindTime": 1672581968, "deviceType": "mss110", "subType": "us", "channels": [ {} ], "region": "us", "fmwareVersion": "7.3.37", "hdwareVersion": "7.0.0", "userDevIcon": "", "iconType": 1, "domain": "###################0", "reservedDomain": "###################0", "hardwareCapabilities": [] } }, "trace": [ [ "time", "rxtx", "protocol", "method", "namespace", "data" ], [ "2024/06/28 - 13:01:24", "", "auto", "GETACK", "Appliance.System.All", { "system": { "hardware": { "type": "mss110", "subType": "un", "version": "7.0.0", "chipType": "rtl8710cm", "uuid": "##############################11", "macAddress": "################0" }, "firmware": { "version": "7.3.37", "homekitVersion": "6.3", "compileTime": "2024/04/12-19:13:08", "encrypt": 1, "wifiMac": "################0", "innerIp": "#########0", "server": "###################0", "port": "@0", "userId": "@0" }, "time": { "timestamp": 1719588479, "timezone": "America/St_Johns", "timeRule": [ [ 1647149400, -9000, 1 ], [ 1667709000, -12600, 0 ], [ 1678599000, -9000, 1 ], [ 1699158600, -12600, 0 ], [ 1710048600, -9000, 1 ], [ 1730608200, -12600, 0 ], [ 1741498200, -9000, 1 ], [ 1762057800, -12600, 0 ], [ 1772947800, -9000, 1 ], [ 1793507400, -12600, 0 ], [ 1805002200, -9000, 1 ], [ 1825561800, -12600, 0 ], [ 1836451800, -9000, 1 ], [ 1857011400, -12600, 0 ], [ 1867901400, -9000, 1 ], [ 1888461000, -12600, 0 ], [ 1899351000, -9000, 1 ], [ 1919910600, -12600, 0 ], [ 1930800600, -9000, 1 ], [ 1951360200, -12600, 0 ] ] }, "online": { "status": 1, "bindId": "XpqA1zpbqHU0wxZe", "who": 1 } }, "digest": { "togglex": [ { "channel": 0, "onoff": 0, "lmTime": 1719543347 } ], "triggerx": [], "timerx": [] } } ], [ "2024/06/28 - 13:01:24", "", "auto", "GETACK", "Appliance.System.Ability", { "Appliance.Config.Key": {}, "Appliance.Config.WifiList": {}, "Appliance.Config.Wifi": {}, "Appliance.Config.WifiX": {}, "Appliance.Config.Trace": {}, "Appliance.Config.Info": {}, "Appliance.Config.OverTemp": {}, "Appliance.Config.NtpSite": {}, "Appliance.Encrypt.Suite": {}, "Appliance.Encrypt.ECDHE": {}, "Appliance.System.All": {}, "Appliance.System.Hardware": {}, "Appliance.System.Firmware": {}, "Appliance.System.Debug": {}, "Appliance.System.Online": {}, "Appliance.System.Time": {}, "Appliance.System.Clock": {}, "Appliance.System.Ability": {}, "Appliance.System.Runtime": {}, "Appliance.System.Report": {}, "Appliance.System.Position": {}, "Appliance.System.DNDMode": {}, "Appliance.Control.Multiple": { "maxCmdNum": 3 }, "Appliance.Control.Bind": {}, "Appliance.Control.Unbind": {}, "Appliance.Control.Upgrade": {}, "Appliance.Control.OverTemp": {}, "Appliance.Control.ToggleX": {}, "Appliance.Control.TimerX": { "sunOffsetSupport": 1 }, "Appliance.Digest.TimerX": {}, "Appliance.Control.TriggerX": {}, "Appliance.Digest.TriggerX": {} } ], [ "2024/06/28 - 13:01:24", "TX", "http", "GET", "Appliance.Config.Info", { "info": {} } ], [ "2024/06/28 - 13:01:24", "", "auto", "LOG", "debug", "TX(http) GET Appliance.Config.Info (messageId:cd29461b3f60482fbea7404390a936e6)" ], [ "2024/06/28 - 13:01:24", "", "auto", "LOG", "debug", "HTTP ERROR GET Appliance.Config.Info (messageId:cd29461b3f60482fbea7404390a936e6 ServerDisconnectedError:Server disconnected)" ], [ "2024/06/28 - 13:01:24", "TX", "http", "PUSH", "Appliance.Config.Info", {} ], [ "2024/06/28 - 13:01:24", "", "auto", "LOG", "debug", "TX(http) PUSH Appliance.Config.Info (messageId:11bfdf84876b4739bd98f4b19d97ff25)" ], [ "2024/06/28 - 13:01:24", "", "auto", "LOG", "debug", "HTTP ERROR PUSH Appliance.Config.Info (messageId:11bfdf84876b4739bd98f4b19d97ff25 ServerDisconnectedError:Server disconnected)" ], [ "2024/06/28 - 13:01:24", "TX", "http", "GET", "Appliance.Config.OverTemp", { "overTemp": {} } ], [ "2024/06/28 - 13:01:24", "", "auto", "LOG", "debug", "TX(http) GET Appliance.Config.OverTemp (messageId:8dc951a0a3a94825870d70977a97b18f)" ], [ "2024/06/28 - 13:01:24", "", "auto", "LOG", "debug", "HTTP ERROR GET Appliance.Config.OverTemp (messageId:8dc951a0a3a94825870d70977a97b18f ServerDisconnectedError:Server disconnected)" ], [ "2024/06/28 - 13:01:24", "TX", "http", "GET", "Appliance.Config.NtpSite", { "ntpSite": {} } ], [ "2024/06/28 - 13:01:24", "", "auto", "LOG", "debug", "TX(http) GET Appliance.Config.NtpSite (messageId:2345c6da652d4067a6aaa21bb7dca0d9)" ], [ "2024/06/28 - 13:01:24", "", "auto", "LOG", "debug", "HTTP ERROR GET Appliance.Config.NtpSite (messageId:2345c6da652d4067a6aaa21bb7dca0d9 ServerDisconnectedError:Server disconnected)" ], [ "2024/06/28 - 13:01:24", "TX", "http", "PUSH", "Appliance.Config.NtpSite", {} ], [ "2024/06/28 - 13:01:24", "", "auto", "LOG", "debug", "TX(http) PUSH Appliance.Config.NtpSite (messageId:6ee605eb0ce3485f99a1a7aa868f89d4)" ], [ "2024/06/28 - 13:01:24", "", "auto", "LOG", "debug", "HTTP ERROR PUSH Appliance.Config.NtpSite (messageId:6ee605eb0ce3485f99a1a7aa868f89d4 ServerDisconnectedError:Server disconnected)" ], [ "2024/06/28 - 13:01:24", "TX", "http", "GET", "Appliance.Encrypt.Suite", { "suite": {} } ], [ "2024/06/28 - 13:01:24", "", "auto", "LOG", "debug", "TX(http) GET Appliance.Encrypt.Suite (messageId:9740d6f9df744c5d94c25f7614e318d8)" ], [ "2024/06/28 - 13:01:24", "RX", "http", "GETACK", "Appliance.Encrypt.Suite", { "suite": { "ka": "ecdhe256", "se": "mrskey", "ds": "" } } ], [ "2024/06/28 - 13:01:24", "", "auto", "LOG", "debug", "RX(http) GETACK Appliance.Encrypt.Suite (messageId:9740d6f9df744c5d94c25f7614e318d8)" ], [ "2024/06/28 - 13:01:24", "", "auto", "LOG", "debug", "Handler undefined for method:GETACK namespace:Appliance.Encrypt.Suite payload:{'suite': {'ka': 'ecdhe256', 'se': 'mrskey', 'ds': ''}}" ], [ "2024/06/28 - 13:01:24", "TX", "http", "GET", "Appliance.Encrypt.ECDHE", { "eCDHE": {} } ], [ "2024/06/28 - 13:01:24", "", "auto", "LOG", "debug", "TX(http) GET Appliance.Encrypt.ECDHE (messageId:1cf3b5ed87b943dc94b216d2ca47c146)" ], [ "2024/06/28 - 13:01:24", "", "auto", "LOG", "debug", "HTTP ERROR GET Appliance.Encrypt.ECDHE (messageId:1cf3b5ed87b943dc94b216d2ca47c146 ServerDisconnectedError:Server disconnected)" ], [ "2024/06/28 - 13:01:24", "TX", "http", "PUSH", "Appliance.Encrypt.ECDHE", {} ], [ "2024/06/28 - 13:01:24", "", "auto", "LOG", "debug", "TX(http) PUSH Appliance.Encrypt.ECDHE (messageId:2064bcc681c140cf9cdac775eb70ece6)" ], [ "2024/06/28 - 13:01:24", "", "auto", "LOG", "debug", "HTTP ERROR PUSH Appliance.Encrypt.ECDHE (messageId:2064bcc681c140cf9cdac775eb70ece6 ServerDisconnectedError:Server disconnected)" ], [ "2024/06/28 - 13:01:24", "TX", "http", "GET", "Appliance.System.Debug", { "debug": {} } ], [ "2024/06/28 - 13:01:24", "", "auto", "LOG", "debug", "TX(http) GET Appliance.System.Debug (messageId:19363a67ce144dcda3aa9a4c8b75473f)" ], [ "2024/06/28 - 13:01:24", "", "auto", "LOG", "debug", "HTTP ERROR GET Appliance.System.Debug (messageId:19363a67ce144dcda3aa9a4c8b75473f ServerDisconnectedError:Server disconnected)" ], [ "2024/06/28 - 13:01:24", "TX", "http", "PUSH", "Appliance.System.Debug", {} ], [ "2024/06/28 - 13:01:24", "", "auto", "LOG", "debug", "TX(http) PUSH Appliance.System.Debug (messageId:2a4272fe52204ebeb1ac4279064f0b82)" ], [ "2024/06/28 - 13:01:24", "", "auto", "LOG", "debug", "HTTP ERROR PUSH Appliance.System.Debug (messageId:2a4272fe52204ebeb1ac4279064f0b82 ServerDisconnectedError:Server disconnected)" ], [ "2024/06/28 - 13:01:24", "TX", "http", "GET", "Appliance.System.Runtime", { "runtime": {} } ], [ "2024/06/28 - 13:01:24", "", "auto", "LOG", "debug", "TX(http) GET Appliance.System.Runtime (messageId:c36985427cf640bfa8b2919849ab4bfe)" ], [ "2024/06/28 - 13:01:24", "", "auto", "LOG", "debug", "HTTP ERROR GET Appliance.System.Runtime (messageId:c36985427cf640bfa8b2919849ab4bfe ServerDisconnectedError:Server disconnected)" ], [ "2024/06/28 - 13:01:24", "TX", "http", "GET", "Appliance.Control.OverTemp", { "overTemp": {} } ], [ "2024/06/28 - 13:01:24", "", "auto", "LOG", "debug", "TX(http) GET Appliance.Control.OverTemp (messageId:0f134d00811b4138bb5777c92be6fff6)" ], [ "2024/06/28 - 13:01:24", "", "auto", "LOG", "debug", "HTTP ERROR GET Appliance.Control.OverTemp (messageId:0f134d00811b4138bb5777c92be6fff6 ServerDisconnectedError:Server disconnected)" ], [ "2024/06/28 - 13:01:24", "TX", "http", "PUSH", "Appliance.Control.OverTemp", {} ], [ "2024/06/28 - 13:01:24", "", "auto", "LOG", "debug", "TX(http) PUSH Appliance.Control.OverTemp (messageId:7f644a78ea2c4c578ddc78aaea055684)" ], [ "2024/06/28 - 13:01:24", "", "auto", "LOG", "debug", "HTTP ERROR PUSH Appliance.Control.OverTemp (messageId:7f644a78ea2c4c578ddc78aaea055684 ServerDisconnectedError:Server disconnected)" ], [ "2024/06/28 - 13:01:24", "TX", "http", "GET", "Appliance.Control.ToggleX", { "togglex": [] } ], [ "2024/06/28 - 13:01:24", "", "auto", "LOG", "debug", "TX(http) GET Appliance.Control.ToggleX (messageId:0c7ecccee0a246f3a636cd1a2b2f38a7)" ], [ "2024/06/28 - 13:01:24", "", "auto", "LOG", "debug", "HTTP ERROR GET Appliance.Control.ToggleX (messageId:0c7ecccee0a246f3a636cd1a2b2f38a7 ServerDisconnectedError:Server disconnected)" ], [ "2024/06/28 - 13:01:24", "TX", "http", "PUSH", "Appliance.Control.ToggleX", {} ], [ "2024/06/28 - 13:01:24", "", "auto", "LOG", "debug", "TX(http) PUSH Appliance.Control.ToggleX (messageId:e2cbdd4968184554ad967bd3c9727e57)" ], [ "2024/06/28 - 13:01:24", "", "auto", "LOG", "debug", "HTTP ERROR PUSH Appliance.Control.ToggleX (messageId:e2cbdd4968184554ad967bd3c9727e57 ServerDisconnectedError:Server disconnected)" ] ] } }

JosephRDawson commented 6 days ago

Oh you get the debug logs when you turn debug off! Ok I have them.

home-assistant_switch_as_x_2024-06-28T15-48-30.325Z.log

home-assistant_meross_lan_2024-06-28T15-49-19.821Z.log

JosephRDawson commented 6 days ago

I question if this item should be flagged as "fixed" ;)

krahabb commented 6 days ago

@JosephRDawson, Yeah..this issue is still ongoing of course even if flagged as fixed ;) At any rate, there's some 'confusion' in your logs since:

krahabb commented 6 days ago

Do I need to open an own issue? Thought it was the same as here ^^ Unfortunately I don't know where I can find logs or something to provide mir insights.

Hello @stefmde, I think your issue could be the same since your device dashboard shows the state for the switch while nothing else and this is 'typical' when the issue is about encryption. Since your mss210 is on fw 7.3.5 it is hard to say if your device works the same as those mss110 with fw 7.3.37 but we'll try detect the issue in the same way: First of all, ensure you have 5.3.0-alpha.2 installed (see my previous post ). After that, try to get a 'diagnostic' for the device i.e. from your device dashboard (DOWNLOAD MEROSS_LAN DIAGNOSTICS) and post a link (try to not copy/paste here the full diagnostic since it would clutter the thread ;)

JosephRDawson commented 6 days ago

LOL good catch!

Ok after I did the uninstall and reinstall I didn't know beta was turned off.

Ok so new logs and debug info from alpha2.

Still not working...

home-assistant_meross_lan_2024-06-28T21-46-28.428Z.log meross_lan-d00445cae8a6103543a229f958e5b76c-August Connect Front-62fa7daf6730043e0a4f3463430feb19(1).json

krahabb commented 5 days ago

Hello @JosephRDawson, Something has changed since it looks you've tried toggling your mss110 (marked with the obfuscated id "##############################13") and those messages are working so it looks like your device should actually toggling when you use HA to switch it. Also, both the log and the diagnostic trace show the device is being queried correctly. What is the specific issue with this particular device ? (you have many mss in your log so it's hard to say which one is behaving how). In 5.2.2 it was not working at all (replies disconnection) while, on 5.3.0-alpha.2 it looks like behaving correctly (protocol-wise)

In the log you've posted, there are many connections errors about other mss110 devices but these errors look different ("Connect call failed") than the typical error due to wrong encryption ("Server disconnected"). Also, these other devices are not replying on MQTT too so it looks like they're internally 'stalling' not being able to reply to any query from any protocol. Either, their IP is not correct (and so HTTP fails since it cannot find a device at the provided address) but this doesn't explain why they're not reachable via MQTT. In my experience inferred from similar issues in the past, this happens and is usually fixed with some 'old style reboot' of the device so that any internal bugged state gets reset.

JosephRDawson commented 5 days ago

Hi @krahabb,

I power cycled a plug that is not working just to be sure and no change. Let me give you more information. The plug I tested just then was August Connect Front and it's Entity ID ends with eab_outlet when you look at the logs.

In the log data I am providing you now using your integration tried to turned on and off the plug in HA 5 times. And it says in HA that it is working but the device is NOT changing state. Then I also turn it on and off five times locally via HomeKit. And you could see in your integration that it is capturing the change and showing it going on and off. So your integration even when I was using 5.2.2 was always seeing state changes in the plugs without issue. Something that I think is odd if it wasn't doing encryption before. Unless viewing state is still done without encryption and changing state requires encryption. I would have thought both would have and when they made that change you wouldn't see anything. But your integration has always see state changes just no ability to control.

The device is working in HA using the the https://github.com/albertogeniola/meross-homeassistant/issues integration that works via the cloud. (But obviously as a HA user I want it done locally.) The fact the devices have always worked via every method of control made me think that rebooting wouldn't help but i did it anyway just to make 100% sure and give you as good a chance as possible.

I hope this additional information is helpful.

Here are the new logs. If you need something else please let me know. I assume you don't have any of the newer plugs yourself or you would have tried this. ;)

meross_lan-d00445cae8a6103543a229f958e5b76c-August Connect Front-62fa7daf6730043e0a4f3463430feb19.json home-assistant_meross_lan_2024-06-29T12-29-33.049Z.log

krahabb commented 5 days ago

So your integration even when I was using 5.2.2 was always seeing state changes in the plugs without issue.

Yes, this is explained by the fact that MQTT traffic is not being encrypted in new fw so it is correctly decoded even in 5.2.2. Your config has a 'Meross cloud profile' configured so in most cases your devices are being reached over MQTT when HTTP fails for any reason. In general, when you see 'instant' updates to the switch state, that's because meross_lan is configured to receive MQTT traffic (through Meross cloud) and as stated aboce, MQTT traffic is not encrypted anyway.

Regarding encryption, at the moment it is only being enforced over HTTP, and, by the look of your traces it seems working...just the commands are not executed at the device so maybe there's an another issue..I'll further investigate those toggle commands being accepted by the device but not sorting any effect..

JosephRDawson commented 5 days ago

@krahabb Ok sir... Just giving you all the info i know for now.

If their is anything additional i can provide don't hesitate to ask.

All the best,

Joe

krahabb commented 4 days ago

Hello @JosephRDawson, I really can't figure out where the issue lies. We can try a different approach to further investigate it:

Since you have the Meross cloud profile setup, we could try force the protocol to (cloud) MQTT in order to see if the issue is in the HTTP transport or somewhere else:

When configured this way you might incur throttling in 'message rate' (maximum 6 messages over a 1 minute span) but, unless you're repeatedtly 'fast switching' your plug this shouldn't occur very often ;)

JosephRDawson commented 3 days ago

Hi @krahabb ...

I assume your talking about this set of options in the cloud version.

1

All three methods work equally as well.

krahabb commented 3 days ago

Hello @JosephRDawson , That's the config for the Meross integration from @albertogeniola ;) It will affect devices connected with that... meross_lan 'cloud profile' is accessible from the meross_lan integration page

JosephRDawson commented 3 days ago

Ok I just installed 5.3.0-beta.0

Still not working but I assume you have more logging information.

It is now faster to notice that it is NOT working and the LOGBOOK next to each device when you flick it is not showing success. So Meross LAN now knows it is NOT working.

I made a short video so you could see it. To the right is my Home Kit so you can see HomeKit the device is not moving and at the end i turn off and on in HomeKit and Meross LAN shows it working.

https://www.youtube.com/watch?v=KRDaTtKV63g

home-assistant_meross_lan_2024-07-01T12-23-52.212Z.log meross_lan-d00445cae8a6103543a229f958e5b76c-August Connect Front-62fa7daf6730043e0a4f3463430feb19.json

JosephRDawson commented 3 days ago

@krahabb ... Ok I thought you wanted to know if making that change in their integration broke their system. Sorry.

Turning on and off the MQTT configuration in 5.3.0-beta.0 has no change that i can see.

krahabb commented 3 days ago

Thank you @JosephRDawson, The video is awesome :) good job!

At any rate, I've tried gambling with this fix but I wasn't really confident...my old mss310 accept both the previous version and this new one but in general, and the @albertogeniola integration does that too, the 'supposed correct way' was the previous one. Now, this is no more an issue about encryption since it looks very stable overall..just this 'toggle command' which is not working. This looks anyway similar to the issue @stefmde is having on its mss210.

Right now we should consider the 5.3.0-beta.0 as surely buggy (with this new implementation) so I'll revert that fix rightaway.

At the moment I'm like 'bumbing my head into the wall' (not sure if this is the correct way to say that...) What I would do, with the device available, is to try manually issuing some commands using the HA services interface UI (Developer tools -> SERVICES) so I'll ask you to do so if you like:

In the HA 'SERVICES' UI select the meross_lan.request service call and fill it like this:

The payload is the one which usually worked (swapping "onoff" -> 0/1 for toggling) and is the one used in 5.3.0-alpha.2 or any previous version. The device should reply with a SETACK and an empty payload (this too is the usual reply when the command works).

Beside trying issuing that command for toggling (I'm expecting it gets replied with SETACK meaning success - but the device doesn't really toggle...) what I would test now is to try this payload: {"togglex":{"channel":4294967295, "onoff": 1}} and see what's the outcome. This is because in the logs/diagnostics you've uploaded, the ToggleX message carries this 'strange' channel value for the channel in an unusual place and I might suspect it could have some meaning.

Also, since you're there, try issuing those messages by setting the Protocol to MQTT for the service call (don't use AUTO else we would not know if and where the message worked since the code would decide the transport on its own).

JosephRDawson commented 3 days ago

I am showing you the HTTP tries but the MQTT results are the same no effect but here is the data.

You should pick up a plug so you can try yourself they are dirt cheap. What country are you in and do you have Amazon Prime?

1 2 3 4

krahabb commented 3 days ago

You should pick up a plug so you can try yourself they are dirt cheap. What country are you in and do you have Amazon Prime?

Sure that's no issue.. But since I wont use them anyway that would be a bit of a waste. I hoped we could get around this by simple tries but it looks very enigmatic so far. At any rate, even having the plugs I would be at lost since these commands are the only reasonable ones and they used to work before.... Also, the other component (meross_cloud) is working right and it uses the same commands so I really don't understand

JosephRDawson commented 3 days ago

@krahabb The Meross cloud system is always sending to Meross cloud. So I guess they are using a dedicated system with extra authentication to Meross. And now you need that... perhaps they are using the users password with the local authentication now and maybe that has changed and is causing it to be broken.

I just hate to think this integration will get dropped once they update the firmware on all devices. You put so much work into it... it will be sad to see it go.

Also is this normal? To have it show no devices here? 1

krahabb commented 3 days ago

Also is this normal? To have it show no devices here?

The 'no devices' is ok since that config entry is just a kind of 'connector' to the Meross api in order to query devices config and broker addresses.

@krahabb The Meross cloud system is always sending to Meross cloud. So I guess they are using a dedicated system with extra authentication to Meross. And now you need that... perhaps they are using the users password with the local authentication now and maybe that has changed and is causing it to be broken.

I don't think so. Everything else is working, just the issued commands which are somehow ignored (even though the device accepts it with the SETACK confirmation). We'll further investigate

JosephRDawson commented 3 days ago

I see you made another 5.3.0-beta.1... :) No change.. I will keep trying as long as you have things you want me to try.

krahabb commented 3 days ago

Yep..the beta.1 is just reverting the toggle command to what it was before...since the implementation in beta.0 was just a 'drastic' attempt.