Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Recent MSS110 Firmware Update Broke meross_lan #456

Open
brianschrameck opened this issue Jun 9, 2024 · 49 comments
Open

Recent MSS110 Firmware Update Broke meross_lan #456

brianschrameck opened this issue Jun 9, 2024 · 49 comments
Labels
enhancement New feature or request fixed Upcoming fix/feature already on dev

Comments

@brianschrameck
Copy link

brianschrameck commented Jun 9, 2024

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
Copy link
Author

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
Copy link
Author

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

  • Appliance.System.All
  • Appliance.System.Ability

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

  • Appliance.Control.ToggleX
  • Appliance.System.Debug

@krahabb
Copy link
Owner

krahabb commented Jun 9, 2024

This could explain a similar issue as in #430 (comment).

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
Copy link
Author

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
Copy link
Author

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
Copy link
Author

brianschrameck commented Jun 9, 2024

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
Copy link
Owner

krahabb commented Jun 9, 2024

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
Copy link

albertogeniola commented Jun 9, 2024

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 added a commit that referenced this issue Jun 11, 2024
@krahabb
Copy link
Owner

krahabb commented Jun 11, 2024

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
Copy link
Author

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

@krahabb
Copy link
Owner

krahabb commented Jun 11, 2024

Awesome ;)

@krahabb krahabb added the enhancement New feature or request label Jun 12, 2024
@rxin
Copy link

rxin commented Jun 18, 2024

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
Copy link
Owner

krahabb commented Jun 19, 2024

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
Copy link

stefmde commented Jun 27, 2024

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
Copy link

JosephRDawson commented Jun 28, 2024

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
Copy link
Owner

krahabb commented Jun 28, 2024

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
Copy link
Author

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

@JosephRDawson
Copy link

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
Copy link

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
Copy link

stefmde commented Jun 28, 2024

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
Copy link
Owner

krahabb commented Jun 28, 2024

@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
Copy link

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
Copy link

stefmde commented Jun 28, 2024

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
Copy link

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
Copy link

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
Copy link

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

@krahabb
Copy link
Owner

krahabb commented Jun 28, 2024

@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:

  • here you've posted a diagnostic with 5.3.0-alpha.2 version and that diagnostic looks like working in general (this diagnostic was grabbed at around "2024/06/28 - 11:45:47"
  • here the 'same' diagnostic states that the component version is 5.2.2 (clearly not supporting encryption and so not working 'by design') and was grabbed at around "2024/06/28 - 13:01:24"

So it looks like after installing 5.3.0-alpha.2 somehow you reverted to 5.2.2 which is obviously not working

@krahabb
Copy link
Owner

krahabb commented Jun 28, 2024

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
Copy link

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
Copy link
Owner

krahabb commented Jun 29, 2024

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
Copy link

JosephRDawson commented Jun 29, 2024

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
Copy link
Owner

krahabb commented Jun 29, 2024

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
Copy link

@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
Copy link
Owner

krahabb commented Jul 1, 2024

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:

  • ensure your Meross cloud profile has "Allow cloud MQTT publish" set
  • enter your "August Connect Front" device config in HA/meross_lan and set the "Connection protocol" to MQTT

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
Copy link

Hi @krahabb ...

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

1

All three methods work equally as well.

@krahabb
Copy link
Owner

krahabb commented Jul 1, 2024

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
Copy link

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
Copy link

@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
Copy link
Owner

krahabb commented Jul 1, 2024

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:

  • Device identifier: provide the 32 alphanumerics identifying the device (in the trace it is obscurated but you'll have it)
  • alternatively use the correct Host address (I would prefer the first but they're somewhat equal methods)
  • Protocol: set as HTTP
  • Method: set as SET
  • Namespace: select 'Appliance.Control.ToggleX'
  • Payload: enter {"togglex":{"channel":0, "onoff": 1}}

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
Copy link

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
Copy link
Owner

krahabb commented Jul 1, 2024

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
Copy link

@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
Copy link
Owner

krahabb commented Jul 1, 2024

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
Copy link

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
Copy link
Owner

krahabb commented Jul 1, 2024

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.

@JosephRDawson
Copy link

Any progress?

@krahabb
Copy link
Owner

krahabb commented Jul 6, 2024

Hello @JosephRDawson,
I'm a bit busy lately and didn't go any further on the topic. I'll try come up with a trick for the matter...
Anyway I'm just curious and would like to have a confirmation from @brianschrameck since in the initial fix, he confirmed it was working flawlessly. If that's true the issue you're having would likely be not related to encryption but something else.

This was referenced Jul 7, 2024
@JosephRDawson
Copy link

JosephRDawson commented Jul 9, 2024

I see a new update for it was released a few hours ago. No change in it not working... Should I open a new ticket as you think it maybe unrelated?

@krahabb
Copy link
Owner

krahabb commented Jul 9, 2024

Hello @JosephRDawson,
As previously confirmed I have really no idea where this issue lies. The fact the issue might not be related to encryption would also be confirmed by the fact @phhoef in #470 verified the beta (which is still not toggling your mss(s)) has correctly fixed its somewhat related issue.
So, at the moment I strongly guess your issue might be different (and so better open a new thread) but still out of ideas about how to fix :(

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request fixed Upcoming fix/feature already on dev
Projects
None yet
Development

No branches or pull requests

6 participants