Giter VIP home page Giter VIP logo

meross_lan's Introduction

hacs GitHub last commit GitHub Workflow Status GitHub

Meross LAN

This homeassistant integration allows you to control your Meross devices in a very flexible way. Despite it's name (at the origin this was a project to only support local LAN connectivity) it now supports these communication layers:

  • direct HTTP connection (in LAN) for any reachable device
  • local MQTT broker (the one configured in HA)
  • Meross cloud MQTT brokers

These are the two main use cases:

  • Keep your devices paired with the offical Meross App (and cloud infrastructure) and communicate directly to them via HTTP. This will allow for greater flexibility and less configuration pain since you don't have to setup and configure the MQTT pairing of these devices. The integration will just 'side-communicate' over HTTP (or cloud MQTT) to the devices and poll them for status updates. Starting with release Cloudy (4.0.0) it is also able to communicate over the original Meross cloud account infrastructure by using the 'public' Meross MQTT brokers.
  • Bind your devices to your 'private' MQTT broker so to completely disconnect them from the Meross infrastructure and interact only locally (The procedure for MQTT binding is here: https://github.com/bytespider/Meross/wiki/MQTT or better, you can use the pairer app from @albertogeniola at https://github.com/albertogeniola/meross_pair). Private MQTT binding could prove to be a pain though (see the discussion here)

HAVE FUN! ๐Ÿ˜Ž

Installation

HACS

In your HA frontend go to HACS -> Integrations, search for 'Meross LAN' and hit 'Install' You'll have to restart HA to let it recognize the new integration.

Manual installation

Download and copy the custom_components/meross_lan directory into the custom_components folder on your homeassistant installation.

Depending on the type of HA installation you might have to follow specific instructions.

This is working for a standard 'core' installation but should work for any other flavour: remember to set the appropriate ownership and access rights on your copied files so the homeassistant user running your instance is able to read and execute the integration code.

Restart HA to let it play.

Setup

Once installed and restarted, your Meross devices should be automatically discovered by the HA dhcp integration and will then pop-up in your integrations panel ready to be configured.

โ„น๏ธ If device(s) are not automatically discovered, try powering them off for 10s and then powering them back on. A notification that new devices have been discovered should appear in notifications.

โ„น๏ธ To manually add your devices or Meross cloud account go to HA->Settings->Devices & Services->Add Integration->Meross LAN Here, choose what's appropriate and follow up

Depending on how your devices are configured you should proceed as follows:

  • Devices are paired to the Meross cloud account (this is the common use case when you buy and configure the devices with the manufacturer app): In this scenario your devices should be automatically discovered by dhcp or you can manually add their configuration. Configuring a Meross cloud account greatly simplifies the configuration of devices since this will automatically download all of the needed informations from your Meross account. You can still manually add your devices without the cloud account login but keep in mind you'd need the 'device key' which is a secret stored in your Meross profile.
  • Devices are 'privately MQTT binded' to the same HA MQTT configured broker: Here, devices are only automatically discovered as soon as they publish a new message to the broker. You would then need to enter the same device key you have configured when tinkering with the device re-bind config tools to complete the configuration.

You can also manually add your device by adding a new integration entry and providing the host address and device key (repeat this for every device to add).

When manually configuring a device entry you'll have the option to set:

  • host address: this is available when manually adding a device or when a device is discovered via DHCP: provide the ip address or a valid network host name. When you set the ip address, try to ensure it is 'stable' and not changing between re-boots else the integration could 'loose' access to the device. Starting from version 2.7.0 any dynamic ip change should be recognized by meross_lan so you don't have to manually fix this anymore.
  • device key: this is used to sign messages according to the official Meross protocol behaviour. This should be prefilled with a known key from other devices if you already configured any before. If you enter a wrong or empty key a menu will ask you if you want to manually retry entering a different key or if you want to recover the key from your Meross account. If your device is still paired to the Meross App, this is the way to recover the device key since it is managed by the Meross App and saved in your cloud profile.

These other options are available once the device is setup the first time. To access them just access the integration configuration UI by hitting 'CONFIGURE' on the device entry from the meross_lan integration page and then 'Configure' (again) from the menu:

  • protocol: the software is able to communicate both over http directly to the device or through an mqtt broker. When you configure an entry by ip address (either manually or dhcp discovered) it usually 'prefers' to talk http for obvious reasons but can nevertheless automatically switch to mqtt if it recognizes it is available (by 'sensing' mqtt messages flowing through). If you set 'Auto' (or leave empty/unconfigured) you'll have this automatic 'failover' switch in both directions (HTTP <-> MQTT) trying to always ensure the best available transport to communicate. If you force it (either HTTP or MQTT) no automatic protocol switching will occur and the integration will only talk that protocol for that configuration entry (some minor exceptions are in place at the moment and some commands are tried over HTTP first anyway).
  • polling: sets the polling period (default is 30 sec) for the device. Devices are generally polled to update their status. There are some optimizations so, for example, if the device is connected through MQTT many general status update requests are automatically 'dropped' since the integration can rely on the device 'PUSH' behaviour (this works if you set protocol 'AUTO' too). Some other status info anyway need to be polled (an example is power/energy readings for power metered plugs) even on MQTT and so the polling is in place 'lightly' even on MQTT. If the device is only reachable on HTTP the integration will nevertheless perform a 'full' status update on every polling cycle. Beware some info are polled on an internal (fixed and probably longer) timeout regardless of the configuration parameter you set.
  • time zone: you can enter your local time zone from the preset list so your device will be set accordingly. Every device tries to get the actual (UTC) time when booting but, expecially if you unpaired it from the Meross cloud service, its time-zone informations are empty since it doesn't know where it lives. This could give some issues so, in order to fix it, it is better to let them know where they live. The integration is not able at the moment to set the device time so ensure your appliances are able to reach an NTP server (they do so at startup).

Supported hardware

Most of this software has been developed and tested on my owned Meross devices which, over the time, are slowly expanding. I have tried to make it the more optimistic and generalistic as possible based on the work from @albertogeniola and @bytespider so it should work with most of the hardware out there but I did not test anything other than mines. There are some user reports confirming it works with other devices and the 'official' complete list is here (keep in mind some firmware versions might work while other not: this is the 'hell' of hw & sw):

  • Switches
    • MSS110: Smart Wifi plug mini
    • MSS210: Smart Wifi plug
    • MSS305: power plug with metering capabilities
    • MSS310: power plug with metering capabilities
    • MSS315: Matter power plug with metering capabilties
    • MSS425: Smart WiFi Surge Protector (multiple sockets power strip)
    • MSS510: Smart WiFi single pole switch
    • MSS550: Smart WiFi 2 way switch
    • MSS620: Smart WiFi Indoor/Outdoor Plug
    • MSS710: Smart WiFi DIY switch
  • Lights
    • MSL100: Smart bulb with dimmable light
    • MSL120: Smart RGB bulb with dimmable light
    • MSL320: Smart Wifi Light Strip
    • MSL420: Smart Ambient Light
  • Hub
  • Sensors
    • MS100: Smart Temperature/Humidity Sensor
    • MS200: Smart Door/Window Sensor
    • MS400: Smart Water Leak Sensor
    • GS559AH: Smart Smoke Sensor
  • Thermostats
    • MTS100: Smart Thermostat Valve
    • MTS150: Smart Thermostat Valve
    • MTS200: Smart Wifi Thermostat
    • MTS960: Smart Wifi Socket Thermostat
  • Covers
    • MRS100: Smart WiFi Roller Shutter
    • MSG100: Smart WiFi Garage Door Opener
    • MSG200: Smart WiFi Garage Door Opener (3 channels)
  • Humidifiers
    • MSXH0 [experimental]: Smart WiFi Humidifier
    • MOD100 [experimental]: Smart WiFi Essential Oil Diffuser
  • Smart Cherub Baby Machine
    • HP110A: Smart Cherub Baby Machine
  • Air Purifier
    • MAP100 [experimental]: Smart WiFi Air Purifier

Features

See the wiki for some behavior/implementation details on specific devices

The component exposes the basic functionality of the underlying device (toggle on/off, dimm, report consumption through sensors) without any other effort. It should be able to detect if the device goes offline suddenly by using a periodic heartbeat. It also features an automatic protocol switching capability so, if you have your MQTT setup and your broker dies or whatever, the integration will try to fallback to HTTP communication and keep the device available returning automatically to MQTT mode as soon as the MQTT infrastructure returns online. The same works for HTTP mode: when the device is not reachable it will try to use MQTT (provided it is available!). This feature is enabled by default for every new configuration entry and you can control it by setting the 'Protocol' field in the configration panel of the integration: setting 'AUTO' (or empty) will do the automatic switch. Setting any fixed protocol 'MQTT' or 'HTTP' will force the use of that option (useful if you're in trouble and want to isolate or investigate inconsistent behaviours). I'd say: leave it empty or 'AUTO' it works good in my tests.

If you have the MSH300 Hub working with this integration, every new subdevice (thermostat or sensor) can be automatically discovered once the subdevice is paired with the hub. When the hub is configured in this integration you don't need to switch back and forth to/from the Meross app in order to 'bind' new devices: just pair the thermostat or sensor to the hub by using the subdevice pairing procedure (fast double press on the hub).

In general, many device configuration options available in Meross app are not supported in meross_lan though some are. As an example, the thermostats preset temperatures (for heat, cool, eco/away) are accessible in HA/meross_lan exactly as if you were to set them manually on the device or via the app. These, and any other supported configuration options, are available as configuration entities (so they're not added to the default lovelace dashboard) and you can access them by going to the relevant device page in HA Configuration -> Devices

Service

There is a service called meross_lan.request exposed to simplify communication with the device and play with it a bit. It basically requires the needed informations to setup a command request and send it over MQTT or HTTP without the hassle of signatures and timestamps computations. You can check it in the 'Developer Tools' of the HA instance, everything should be enough self-explanatory there. Since version 4.4.0 the service allows you to receive the 'original' device response through the new HA service response feature

Troubleshooting

Check the wiki for detailed informations on how to gather diagnostics data for meross_lan devices

References

This integration has been made possible only with the contribution of the awesome work done by:

Have a look at their repositories to better understand how the Meross line of devices is working through MQTT. I really thank them for the inspiration and the knowledge that made it possible for me to develop this integration.

Special mention also for:

who greatly helped me fixing issues or developing nice enhancements to the component

meross_lan's People

Contributors

aicarmic avatar bernardpe avatar blakadder avatar blodjer avatar ertechdesign avatar gelokatil avatar ikoz avatar jugla avatar krahabb avatar nao-pon avatar ollo69 avatar patrick-blom avatar purcell-lab avatar wsw70 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

meross_lan's Issues

MSL120 problem when changing color temperature (always not executed the first time)

Version of the custom_component

v2.3.1

Configuration

service: light.turn_on
data:
  kelvin: 2700
target:
  entity_id: light.smart_rgb_bulb_2102081094806890842048e1e9xxxxxxxx

and

service: light.turn_on
data:
  kelvin: 6500
target:
  entity_id: light.smart_rgb_bulb_2102081094806890842048e1e9xxxxxxxx

Note: I have added the following property to light.py so that I can specify the correct color temperature.
It would be nice to be able to set these properties in the configuration.

    @property
    def max_mireds(self):
        return 371 # math.ceil(1/(2700/1000000))

    @property
    def min_mireds(self):
        return 153 # math.floor(1/(6500/1000000))

Describe the bug

When changing the color temperature, the first time is ignored and the second time is executed.
In the following log, the color temperature is changed from the lowest to the highest and then to the lowest in the HA service execution. In both cases, the first time was ignored and the second time was successful.

Debug log

2021/09/21 - 23:03:03	auto	GETACK	Appliance.System.All	{"system": {"hardware": {"type": "msl120d", "subType": "jp", "version": "2.0.0", "chipType": "mt7682", "uuid": "", "macAddress": ""}, "firmware": {"version": "2.1.2", "compileTime": "2020/07/24 09:51:36 GMT +08:00", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 4, "timezone": "", "timeRule": []}, "online": {"status": 1}}, "digest": {"togglex": [{"channel": 0, "onoff": 1, "lmTime": 1632228591}], "triggerx": [], "timerx": [], "light": {"capacity": 6, "channel": 0, "rgb": 16753920, "temperature": 1, "luminance": 60, "transform": 0}}}
2021/09/21 - 23:03:03	auto	GETACK	Appliance.System.Ability	{"Appliance.Config.Key": {}, "Appliance.Config.WifiList": {}, "Appliance.Config.Wifi": {}, "Appliance.Config.Trace": {}, "Appliance.System.All": {}, "Appliance.System.Hardware": {}, "Appliance.System.Firmware": {}, "Appliance.System.Debug": {}, "Appliance.System.Online": {}, "Appliance.System.Time": {}, "Appliance.System.Ability": {}, "Appliance.System.Runtime": {}, "Appliance.System.Report": {}, "Appliance.System.Position": {}, "Appliance.System.Factory": {}, "Appliance.Control.Multiple": {"maxCmdNum": 5}, "Appliance.Control.ToggleX": {}, "Appliance.Control.TimerX": {"sunOffsetSupport": 1}, "Appliance.Control.TriggerX": {}, "Appliance.Control.Bind": {}, "Appliance.Control.Unbind": {}, "Appliance.Control.Upgrade": {}, "Appliance.Control.Light": {"capacity": 7}, "Appliance.Digest.TriggerX": {}, "Appliance.Digest.TimerX": {}}
2021/09/21 - 23:03:03	http	GET	Appliance.System.Runtime	{"runtime": {}}
2021/09/21 - 23:03:03	http	GETACK	Appliance.System.Runtime	{"runtime": {"signal": 76}}
2021/09/21 - 23:03:08	http	GET	Appliance.System.Position	{"position": {}}
2021/09/21 - 23:03:08	http	GETACK	Appliance.System.Position	{"position": {"longitude": 0, "latitude": 0}}
2021/09/21 - 23:03:13	http	GET	Appliance.System.Factory	{"factory": {}}
2021/09/21 - 23:03:13	http	GETACK	Appliance.System.Factory	{"factory": {"test": {"ledAging": 0, "wifiTest": 1}}}
2021/09/21 - 23:03:18	http	GET	Appliance.Control.ToggleX	{"togglex": {}}
2021/09/21 - 23:03:18	http	GETACK	Appliance.Control.ToggleX	{"channel": 0, "togglex": {"channel": 0, "onoff": 1, "lmTime": 1632228591}}
2021/09/21 - 23:03:23	http	GET	Appliance.Control.TimerX	{"timerx": {}}
2021/09/21 - 23:03:23	http	GETACK	Appliance.Control.TimerX	{"digest": {}, "timerx": {}}
2021/09/21 - 23:03:28	http	GET	Appliance.Control.TriggerX	{"triggerx": {}}
2021/09/21 - 23:03:28	http	GETACK	Appliance.Control.TriggerX	{"digest": {}, "triggerx": {}}
2021/09/21 - 23:03:30	http	GET	Appliance.System.All	{"all": {}}
2021/09/21 - 23:03:30	http	GETACK	Appliance.System.All	{"all": {"system": {"hardware": {"type": "msl120d", "subType": "jp", "version": "2.0.0", "chipType": "mt7682", "uuid": "", "macAddress": ""}, "firmware": {"version": "2.1.2", "compileTime": "2020/07/24 09:51:36 GMT +08:00", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1632233010, "timezone": "", "timeRule": []}, "online": {"status": 1}}, "digest": {"togglex": [{"channel": 0, "onoff": 1, "lmTime": 1632228591}], "triggerx": [], "timerx": [], "light": {"capacity": 6, "channel": 0, "rgb": 16753920, "temperature": 1, "luminance": 60, "transform": 0}}}}
2021/09/21 - 23:03:33	http	GET	Appliance.Control.Light	{"light": {}}
2021/09/21 - 23:03:33	http	GETACK	Appliance.Control.Light	{"light": {"capacity": 6, "channel": 0, "rgb": 16753920, "temperature": 1, "luminance": 60, "transform": 0}}
2021/09/21 - 23:03:38	http	GET	Appliance.Digest.TriggerX	{"triggerx": {}}
2021/09/21 - 23:03:38	http	GETACK	Appliance.Digest.TriggerX	{"digest": []}
2021/09/21 - 23:03:43	http	GET	Appliance.Digest.TimerX	{"timerx": {}}
2021/09/21 - 23:03:43	http	GETACK	Appliance.Digest.TimerX	{"digest": []}
2021/09/21 - 23:04:00	http	GET	Appliance.System.All	{"all": {}}
2021/09/21 - 23:04:00	http	GETACK	Appliance.System.All	{"all": {"system": {"hardware": {"type": "msl120d", "subType": "jp", "version": "2.0.0", "chipType": "mt7682", "uuid": "", "macAddress": ""}, "firmware": {"version": "2.1.2", "compileTime": "2020/07/24 09:51:36 GMT +08:00", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1632233039, "timezone": "", "timeRule": []}, "online": {"status": 1}}, "digest": {"togglex": [{"channel": 0, "onoff": 1, "lmTime": 1632228591}], "triggerx": [], "timerx": [], "light": {"capacity": 6, "channel": 0, "rgb": 16753920, "temperature": 1, "luminance": 60, "transform": 0}}}}
2021/09/21 - 23:04:09	http	SET	Appliance.Control.Light	{"light": {"capacity": 6, "channel": 0, "temperature": 100, "luminance": 60, "transform": 0}}
2021/09/21 - 23:04:09	http	SETACK	Appliance.Control.Light	{"light": {"rgb": -1, "capacity": 6, "channel": 0, "temperature": 100, "luminance": 60, "transform": 0}}
2021/09/21 - 23:04:11	http	SET	Appliance.Control.Light	{"light": {"capacity": 6, "channel": 0, "temperature": 100, "luminance": 60, "transform": 0}}
2021/09/21 - 23:04:11	http	SETACK	Appliance.Control.Light	{"light": {"rgb": -1, "capacity": 6, "channel": 0, "temperature": 100, "luminance": 60, "transform": 0}}
2021/09/21 - 23:04:12	mqtt	PUSH	Appliance.Control.Light	{"light": {"capacity": 6, "channel": 0, "rgb": 16753920, "temperature": 100, "luminance": 60, "transform": 0}}
2021/09/21 - 23:04:14	mqtt	PUSH	Appliance.Control.Light	{"light": {"capacity": 6, "channel": 0, "rgb": 16753920, "temperature": 100, "luminance": 60, "transform": 0}}
2021/09/21 - 23:04:20	http	SET	Appliance.Control.Light	{"light": {"capacity": 6, "channel": 0, "temperature": 1, "luminance": 60, "transform": 0}}
2021/09/21 - 23:04:20	http	SETACK	Appliance.Control.Light	{"light": {"rgb": -1, "capacity": 6, "channel": 0, "temperature": 1, "luminance": 60, "transform": 0}}
2021/09/21 - 23:04:22	http	SET	Appliance.Control.Light	{"light": {"capacity": 6, "channel": 0, "temperature": 1, "luminance": 60, "transform": 0}}
2021/09/21 - 23:04:22	http	SETACK	Appliance.Control.Light	{"light": {"rgb": -1, "capacity": 6, "channel": 0, "temperature": 1, "luminance": 60, "transform": 0}}
2021/09/21 - 23:04:25	mqtt	PUSH	Appliance.Control.Light	{"light": {"capacity": 6, "channel": 0, "rgb": 16753920, "temperature": 1, "luminance": 60, "transform": 0}}

Unable to add devices by HTTP

Version of the custom_component

2.2.1

Configuration

N/A as it was added my HACS

Describe the bug

I am unable to add/discover devices via HTTP
I have about 12 devices and after installing Meross LAN none are getting auto discovered by dhcp (dhcp is turned on in config.yaml)
If I try to add Meross LAN integration manually it does not give me any option to add by IP just this:

image
How can I force discovery/add devices manually for HTTP method?

Debug log


No errors logged in the logs.

MSG100 slow to respond and other issues

Hi - Thanks for the integration. I have a garage door opener (MSG100) that's already integrated with HA through the Meross Cloud integration. I was looking at this integration instead hoping to get local, faster updates. Took me a while to figure out the device key, but finally got it to work successfully and now I can control the garage door through either integration.

I'm noticing few issues with the LAN integration:

  1. It's much slower to detect state changes than the Cloud integration. I assumed it would be the other way around.
  2. The "opening" state apparently relies on the "transition_duration" attributes, which is set to 35 seconds. This is way too long for my garage door. I've even set it to 10 seconds in the official Meross app. I can't figure out a way to change it in HA.
  3. Minor - It switches between "opening", "open", and "closed" states, but there's no "closing".

Any thoughts? Thanks again!

Different icons (compared to Meross-HomeAssistant) for TRVs

Version of the custom_component

2.1.0

Describe the bug

image
The image above shows what I see about the very same Meross TRV. On the left is the TRV reported by Meross-HomeAssistant integration and on the right is the TRV reported by Meross-LAN.
Let me know if I can help, or if there nothing to do ๐Ÿ˜„

msl120d eu MT7686 (hardware:4.0.0 firmware:4.1.8) mqtt fail

Hi! I have bought two msl120d eu MT7686 (hardware:4.0.0 firmware:4.1.8) , can connect using http, but mqtt does not work. My mosquitto broker dont say anything :(

My device mqtt info:

Setting up device with IP 192.168.1.166
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚Primary MQTT broker โ”‚192.168.1.238:8883 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚Failover MQTT broker โ”‚192.168.1.238:8883 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚Device โ”‚msl120d eu MT7686 (hardware:4.0.0 firmware:4.1.8) โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚UUID โ”‚2101262094902990840848e1e948xxx โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚Mac address โ”‚48:e1:e9:48:c9:xx โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚IP address โ”‚192.168.1.166 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚Current MQTT broker โ”‚192.168.1.238:8883 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚Credentials โ”‚User: 48:e1:e9:48:c9:xx โ”‚
โ”‚ โ”‚Password: 0_2199e093b19664c6e8e62a3a862399xx โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚MQTT topics โ”‚Publishes to: /appliance/2101262094902990840848e1e948xxxx/publish โ”‚
โ”‚ โ”‚Subscribes to: /appliance/2101262094902990840848e1e948xxxx/subscribe โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

I dont understand how the DHCP works to find my meross hardware

I have a HomeAssistant runing in docker, with network host.
I installed the Meross Lan integration and I can see it in the integrations.

But after some hours I cant see any Meross bulb I have in my network.

I dont use the HomeAssisntant DHCP, its this the problem?

Would enabling the discussion be possible?

I just discovered your great implementation thank to @Dizzyikea. I built my own some time ago (https://github.com/wsw70/meross-local-mqtt), it works, but yours is clearly more refined and integrated.

Would you be willing to enable the GitHub "Discussion" area - I would have a few questions about how you did things (with the idea to contribute if you do not mind), and I would like to avoid making noise in the Issue section.

Thanks for the great work!

MSS310H energy entity appears as "Unavailable"

I just upgraded to the latest beta and this is what I see about my MSS310H:
image

Basically, the entity sensor.meross_lan_2009224801331190830948e1e9342911_energy is now unavailable. Might this be a breaking change and it was replaced by sensor.meross_lan_2009224801331190830948e1e9342911_power?

Error in async_http_request: 'str' object has no attribute 'get'

Hi, I'm trying to replace Cloud integration with this one (LAN). I'm using the last one integration v2.0.1 on HASSIO.

Just for your info I still have installaed Meross Cloud IoT integration.

After added my two devices MSG100 cover garage I checked in the registry and there is this error:

Logger: custom_components.meross_lan
Source: custom_components/meross_lan/logger.py:29
Integration: Meross LAN (documentation, issues)
First occurred: 11:08:41 (2 occurrences)
Last logged: 11:08:41

MerossDevice(2008204790056336100448e1e92ceb3d) error in async_http_request: 'str' object has no attribute 'get'
MerossDevice(2008206126994936100448e1e92ce8b8) error in async_http_request: 'str' object has no attribute 'get'

Mss425f

Hi, I'm writing to you because the multicry in question, even though it works perfectly in the lanes, does not perform asynchronous synchronisation, in the sense that it does not update the states of the various exits until I refute integration. If the reloading, on the other hand, correctly updates the state. I must say that I use the HTTP mode and with a request of 30

MSS510X doesn't seem to work

Version of the custom_component

2.2.1

Configuration

# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:

# Text to speech
tts:
  - platform: google_translate

group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

mqtt:
  broker: "192.168.1.3"
  port: 1883

Describe the bug

It seems that when Meross LAN is configured in MQTT or Auto mode the switch will immediately start blinking with a connection issue. If I switch it to HTTP mode, the switch works and I can control HA with it but my automations no longer work. After some time it'll give the same connection issue. Usually once the automation finally kicks in. Automations that trigger the events from the switch work, just not ones that trigger the switch.

I have other 510k/s switches that work just fine as well as 2 550x and 560x

It seems that no matter how hard I try to get this device to use my local broker that it keeps on defaulting back to mqtt-us.meross.com:443

The image below shows a working one and the not working one.
I'm wondering if I should return the switch and get a new one and not apply any firmware updates.
image

Debug log

๏ฟฝ[36m2021-09-13 23:43:02 DEBUG (MainThread) [custom_components.meross_lan] MerossHttpClient(192.168.3.116): HTTP Response ({"header":{"messageId":"49f085b274a34ce99f5c06cf54b6d9f0","namespace":"Appliance.System.All","method":"ERROR","payloadVersion":1,"from":"/appliance/2103031270852255853448e1e9600f7e/publish","timestamp":1631594582,"timestampMs":750,"sign":"2a4c23ee6437d46ca38ef12484ca5f93"},"payload":{"error":{"code":5001,"detail":"sign error"}}}
)๏ฟฝ[0m
๏ฟฝ[36m2021-09-13 23:43:02 DEBUG (MainThread) [custom_components.meross_lan] Key error on 192.168.3.116 (GET:Appliance.System.All) -> retrying with key-reply hack๏ฟฝ[0m

after I forced the gateway to use my local mqtt broker a second time after it was already set up, I get these logs

[36m2021-09-14 00:00:54 DEBUG (MainThread) [custom_components.meross_lan] MerossApi: MQTT RECV device_id:(2103038929302755853448e1e9601b88) method:(ERROR) namespace:(Appliance.System.All)๏ฟฝ[0m
๏ฟฝ[36m2021-09-14 00:00:54 DEBUG (MainThread) [custom_components.meross_lan] MerossApi: MQTT RECV device_id:(2103038929302755853448e1e9601b88) method:(ERROR) namespace:(Appliance.System.All)๏ฟฝ[0m

Meross MSG100 Garage door opener time out errors

I am suddenly getting these error messages. Did an upgrade to v2.2.1 no change. The Meros App can still talk to the device.

2021-09-05 13:10:43 ERROR (MainThread) [meross_iot.manager] Timeout occurred while waiting a response for message b'{"header": {"from": "/app/1341446-de33846d1b02e25592107d1a1368e4f0/subscribe", "messageId": "843876df9821f2a13b8cd42213270d6b", "method": "SET", "namespace": "Appliance.GarageDoor.State", "payloadVersion": 1, "sign": "e9057b2e78e4cab050f9273ee59e74aa", "timestamp": 1630843838, "triggerSrc": "Android"}, "payload": {"state": {"channel": 0, "open": 1, "uuid": "2011123333504136100848e1e93b1f6b"}}}' sent to device uuid 2011123333504136100848e1e93b1f6b. Timeout was: 5 seconds.
2021-09-05 13:10:43 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection] [140331396815360]
Traceback (most recent call last):
File "/usr/local/lib/python3.9/asyncio/tasks.py", line 492, in wait_for
fut.result()
asyncio.exceptions.CancelledError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/meross_iot/manager.py", line 630, in _async_send_and_wait_ack
return await asyncio.wait_for(future, timeout, loop=self._loop)
File "/usr/local/lib/python3.9/asyncio/tasks.py", line 494, in wait_for
raise exceptions.TimeoutError() from exc
asyncio.exceptions.TimeoutError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 185, in handle_call_service
await hass.services.async_call(
File "/usr/src/homeassistant/homeassistant/core.py", line 1491, in async_call
task.result()
File "/usr/src/homeassistant/homeassistant/core.py", line 1526, in _execute_service
await handler.job.target(service_call)
File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 213, in handle_service
await self.hass.helpers.service.entity_service_call(
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 658, in entity_service_call
future.result() # pop exception if have
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 811, in async_request_call
await coro
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 695, in _handle_entity_call
await result
File "/config/custom_components/meross_cloud/cover.py", line 129, in async_open_cover
await self._device.async_open(channel=self._channel_id)
File "/usr/local/lib/python3.9/site-packages/meross_iot/controller/mixins/garage.py", line 67, in async_open
await self._async_operate(state=True, channel=channel, *args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/meross_iot/controller/mixins/garage.py", line 81, in _async_operate
await self._execute_command(method="SET",
File "/usr/local/lib/python3.9/site-packages/meross_iot/controller/device.py", line 227, in _execute_command
return await self._manager.async_execute_cmd(destination_device_uuid=self.uuid,
File "/usr/local/lib/python3.9/site-packages/meross_iot/manager.py", line 621, in async_execute_cmd
response = await self._async_send_and_wait_ack(future=fut,
File "/usr/local/lib/python3.9/site-packages/meross_iot/manager.py", line 634, in _async_send_and_wait_ack
raise CommandTimeoutError()
meross_iot.model.exception.CommandTimeoutError

Can you help?

Show renamed names instead of "cryptic" ones in Integrations

Is your feature request related to a problem? Please describe.
I started using Meross LAN "in production" ๐Ÿฅฐ and this is what I see in Integrations page:
image

image

But I already renamed that device to:
image

Describe the solution you'd like
I would really love to see "Presa studio (via LAN)" instead of "mss310r 19122468131046908074...".

Switch(es) are wrong, and light is inverted on mshx0 (smart humidifier)

Version of the custom_component

Version 2.2.1

Configuration

image

Describe the bug

After it was discovered (all of the sudden, it's been there for a long time), one switch was discovered, and it was set as inactive.
The switch turns the light in the humidifier on/off, and it is inverted, so if I turn it on in HA, the light goes off, and if I turn it off, the light goes on.
image
image

The humidifying function does not activate / deactivate at all.

It looks like the DND mode (light) is the only thing it discovers?

Debug log


2021/09/06 - 09:01:48	auto	GETACK	Appliance.System.All	{"system": {"hardware": {"type": "msxh0", "subType": "us", "version": "2.0.0", "chipType": "mt7682", "uuid": "", "macAddress": ""}, "firmware": {"version": "2.1.11", "compileTime": "2019/08/30 09:26:24 GMT +08:00", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630911706, "timezone": "Europe/Copenhagen", "timeRule": [[1616889600, 7200, 1], [1635634800, 3600, 0]]}, "online": {"status": 1}}, "digest": {"spray": [{"channel": 0, "mode": 0, "lmTime": 1629035486, "lastMode": 1, "onoffTime": 1629035486}], "triggerx": [], "timerx": []}}
2021/09/06 - 09:01:48	auto	GETACK	Appliance.System.Ability	{"Appliance.Config.Key": {}, "Appliance.Config.WifiList": {}, "Appliance.Config.Wifi": {}, "Appliance.Config.Trace": {}, "Appliance.System.All": {}, "Appliance.System.Hardware": {}, "Appliance.System.Firmware": {}, "Appliance.System.Debug": {}, "Appliance.System.Online": {}, "Appliance.System.Time": {}, "Appliance.System.Ability": {}, "Appliance.System.Runtime": {}, "Appliance.System.Report": {}, "Appliance.System.Position": {}, "Appliance.System.DNDMode": {}, "Appliance.Control.Multiple": {"maxCmdNum": 5}, "Appliance.Control.Spray": {}, "Appliance.Control.TimerX": {"sunOffsetSupport": 1}, "Appliance.Control.TriggerX": {}, "Appliance.Control.Bind": {}, "Appliance.Control.Unbind": {}, "Appliance.Control.Upgrade": {}, "Appliance.Digest.TriggerX": {}, "Appliance.Digest.TimerX": {}}
2021/09/06 - 09:01:59	http	SET	Appliance.System.DNDMode	{"DNDMode": {"mode": 0}}
2021/09/06 - 09:01:59	http	SETACK	Appliance.System.DNDMode	{}
2021/09/06 - 09:02:09	http	SET	Appliance.System.DNDMode	{"DNDMode": {"mode": 1}}
2021/09/06 - 09:02:09	http	SETACK	Appliance.System.DNDMode	{}
2021/09/06 - 09:02:17	http	GET	Appliance.System.All	{}
2021/09/06 - 09:02:18	http	GETACK	Appliance.System.All	{"all": {"system": {"hardware": {"type": "msxh0", "subType": "us", "version": "2.0.0", "chipType": "mt7682", "uuid": "", "macAddress": ""}, "firmware": {"version": "2.1.11", "compileTime": "2019/08/30 09:26:24 GMT +08:00", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630911736, "timezone": "Europe/Copenhagen", "timeRule": [[1616889600, 7200, 1], [1635634800, 3600, 0]]}, "online": {"status": 1}}, "digest": {"spray": [{"channel": 0, "mode": 0, "lmTime": 1629035486, "lastMode": 1, "onoffTime": 1629035486}], "triggerx": [], "timerx": []}}}
2021/09/06 - 09:02:18	http	GET	Appliance.System.DNDMode	{}
2021/09/06 - 09:02:18	http	GETACK	Appliance.System.DNDMode	{"DNDMode": {"mode": 1}}
2021/09/06 - 09:02:47	http	GET	Appliance.System.All	{}
2021/09/06 - 09:02:47	http	GETACK	Appliance.System.All	{"all": {"system": {"hardware": {"type": "msxh0", "subType": "us", "version": "2.0.0", "chipType": "mt7682", "uuid": "", "macAddress": ""}, "firmware": {"version": "2.1.11", "compileTime": "2019/08/30 09:26:24 GMT +08:00", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630911766, "timezone": "Europe/Copenhagen", "timeRule": [[1616889600, 7200, 1], [1635634800, 3600, 0]]}, "online": {"status": 1}}, "digest": {"spray": [{"channel": 0, "mode": 0, "lmTime": 1629035486, "lastMode": 1, "onoffTime": 1629035486}], "triggerx": [], "timerx": []}}}
2021/09/06 - 09:02:47	http	GET	Appliance.System.DNDMode	{}
2021/09/06 - 09:02:47	http	GETACK	Appliance.System.DNDMode	{"DNDMode": {"mode": 1}}
2021/09/06 - 09:03:17	http	GET	Appliance.System.All	{}
2021/09/06 - 09:03:17	http	GETACK	Appliance.System.All	{"all": {"system": {"hardware": {"type": "msxh0", "subType": "us", "version": "2.0.0", "chipType": "mt7682", "uuid": "", "macAddress": ""}, "firmware": {"version": "2.1.11", "compileTime": "2019/08/30 09:26:24 GMT +08:00", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630911796, "timezone": "Europe/Copenhagen", "timeRule": [[1616889600, 7200, 1], [1635634800, 3600, 0]]}, "online": {"status": 1}}, "digest": {"spray": [{"channel": 0, "mode": 0, "lmTime": 1629035486, "lastMode": 1, "onoffTime": 1629035486}], "triggerx": [], "timerx": []}}}
2021/09/06 - 09:03:17	http	GET	Appliance.System.DNDMode	{}
2021/09/06 - 09:03:17	http	GETACK	Appliance.System.DNDMode	{"DNDMode": {"mode": 1}}
2021/09/06 - 09:03:47	http	GET	Appliance.System.All	{}
2021/09/06 - 09:03:47	http	GETACK	Appliance.System.All	{"all": {"system": {"hardware": {"type": "msxh0", "subType": "us", "version": "2.0.0", "chipType": "mt7682", "uuid": "", "macAddress": ""}, "firmware": {"version": "2.1.11", "compileTime": "2019/08/30 09:26:24 GMT +08:00", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630911826, "timezone": "Europe/Copenhagen", "timeRule": [[1616889600, 7200, 1], [1635634800, 3600, 0]]}, "online": {"status": 1}}, "digest": {"spray": [{"channel": 0, "mode": 0, "lmTime": 1629035486, "lastMode": 1, "onoffTime": 1629035486}], "triggerx": [], "timerx": []}}}
2021/09/06 - 09:03:47	http	GET	Appliance.System.DNDMode	{}
2021/09/06 - 09:03:47	http	GETACK	Appliance.System.DNDMode	{"DNDMode": {"mode": 1}}
2021/09/06 - 09:04:17	http	GET	Appliance.System.All	{}
2021/09/06 - 09:04:17	http	GETACK	Appliance.System.All	{"all": {"system": {"hardware": {"type": "msxh0", "subType": "us", "version": "2.0.0", "chipType": "mt7682", "uuid": "", "macAddress": ""}, "firmware": {"version": "2.1.11", "compileTime": "2019/08/30 09:26:24 GMT +08:00", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630911856, "timezone": "Europe/Copenhagen", "timeRule": [[1616889600, 7200, 1], [1635634800, 3600, 0]]}, "online": {"status": 1}}, "digest": {"spray": [{"channel": 0, "mode": 0, "lmTime": 1629035486, "lastMode": 1, "onoffTime": 1629035486}], "triggerx": [], "timerx": []}}}
2021/09/06 - 09:04:17	http	GET	Appliance.System.DNDMode	{}
2021/09/06 - 09:04:17	http	GETACK	Appliance.System.DNDMode	{"DNDMode": {"mode": 1}}
2021/09/06 - 09:04:47	http	GET	Appliance.System.All	{}
2021/09/06 - 09:04:47	http	GETACK	Appliance.System.All	{"all": {"system": {"hardware": {"type": "msxh0", "subType": "us", "version": "2.0.0", "chipType": "mt7682", "uuid": "", "macAddress": ""}, "firmware": {"version": "2.1.11", "compileTime": "2019/08/30 09:26:24 GMT +08:00", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630911886, "timezone": "Europe/Copenhagen", "timeRule": [[1616889600, 7200, 1], [1635634800, 3600, 0]]}, "online": {"status": 1}}, "digest": {"spray": [{"channel": 0, "mode": 0, "lmTime": 1629035486, "lastMode": 1, "onoffTime": 1629035486}], "triggerx": [], "timerx": []}}}
2021/09/06 - 09:04:47	http	GET	Appliance.System.DNDMode	{}
2021/09/06 - 09:04:47	http	GETACK	Appliance.System.DNDMode	{"DNDMode": {"mode": 1}}
2021/09/06 - 09:05:17	http	GET	Appliance.System.All	{}
2021/09/06 - 09:05:17	http	GETACK	Appliance.System.All	{"all": {"system": {"hardware": {"type": "msxh0", "subType": "us", "version": "2.0.0", "chipType": "mt7682", "uuid": "", "macAddress": ""}, "firmware": {"version": "2.1.11", "compileTime": "2019/08/30 09:26:24 GMT +08:00", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630911916, "timezone": "Europe/Copenhagen", "timeRule": [[1616889600, 7200, 1], [1635634800, 3600, 0]]}, "online": {"status": 1}}, "digest": {"spray": [{"channel": 0, "mode": 0, "lmTime": 1629035486, "lastMode": 1, "onoffTime": 1629035486}], "triggerx": [], "timerx": []}}}
2021/09/06 - 09:05:17	http	GET	Appliance.System.DNDMode	{}
2021/09/06 - 09:05:17	http	GETACK	Appliance.System.DNDMode	{"DNDMode": {"mode": 1}}
2021/09/06 - 09:05:47	http	GET	Appliance.System.All	{}
2021/09/06 - 09:05:47	http	GETACK	Appliance.System.All	{"all": {"system": {"hardware": {"type": "msxh0", "subType": "us", "version": "2.0.0", "chipType": "mt7682", "uuid": "", "macAddress": ""}, "firmware": {"version": "2.1.11", "compileTime": "2019/08/30 09:26:24 GMT +08:00", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630911946, "timezone": "Europe/Copenhagen", "timeRule": [[1616889600, 7200, 1], [1635634800, 3600, 0]]}, "online": {"status": 1}}, "digest": {"spray": [{"channel": 0, "mode": 0, "lmTime": 1629035486, "lastMode": 1, "onoffTime": 1629035486}], "triggerx": [], "timerx": []}}}
2021/09/06 - 09:05:47	http	GET	Appliance.System.DNDMode	{}
2021/09/06 - 09:05:47	http	GETACK	Appliance.System.DNDMode	{"DNDMode": {"mode": 1}}
2021/09/06 - 09:06:17	http	GET	Appliance.System.All	{}
2021/09/06 - 09:06:17	http	GETACK	Appliance.System.All	{"all": {"system": {"hardware": {"type": "msxh0", "subType": "us", "version": "2.0.0", "chipType": "mt7682", "uuid": "", "macAddress": ""}, "firmware": {"version": "2.1.11", "compileTime": "2019/08/30 09:26:24 GMT +08:00", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630911976, "timezone": "Europe/Copenhagen", "timeRule": [[1616889600, 7200, 1], [1635634800, 3600, 0]]}, "online": {"status": 1}}, "digest": {"spray": [{"channel": 0, "mode": 0, "lmTime": 1629035486, "lastMode": 1, "onoffTime": 1629035486}], "triggerx": [], "timerx": []}}}
2021/09/06 - 09:06:17	http	GET	Appliance.System.DNDMode	{}
2021/09/06 - 09:06:17	http	GETACK	Appliance.System.DNDMode	{"DNDMode": {"mode": 1}}
2021/09/06 - 09:06:47	http	GET	Appliance.System.All	{}
2021/09/06 - 09:06:47	http	GETACK	Appliance.System.All	{"all": {"system": {"hardware": {"type": "msxh0", "subType": "us", "version": "2.0.0", "chipType": "mt7682", "uuid": "", "macAddress": ""}, "firmware": {"version": "2.1.11", "compileTime": "2019/08/30 09:26:24 GMT +08:00", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630912006, "timezone": "Europe/Copenhagen", "timeRule": [[1616889600, 7200, 1], [1635634800, 3600, 0]]}, "online": {"status": 1}}, "digest": {"spray": [{"channel": 0, "mode": 0, "lmTime": 1629035486, "lastMode": 1, "onoffTime": 1629035486}], "triggerx": [], "timerx": []}}}
2021/09/06 - 09:06:47	http	GET	Appliance.System.DNDMode	{}
2021/09/06 - 09:06:47	http	GETACK	Appliance.System.DNDMode	{"DNDMode": {"mode": 1}}
2021/09/06 - 09:07:17	http	GET	Appliance.System.All	{}
2021/09/06 - 09:07:17	http	GETACK	Appliance.System.All	{"all": {"system": {"hardware": {"type": "msxh0", "subType": "us", "version": "2.0.0", "chipType": "mt7682", "uuid": "", "macAddress": ""}, "firmware": {"version": "2.1.11", "compileTime": "2019/08/30 09:26:24 GMT +08:00", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630912036, "timezone": "Europe/Copenhagen", "timeRule": [[1616889600, 7200, 1], [1635634800, 3600, 0]]}, "online": {"status": 1}}, "digest": {"spray": [{"channel": 0, "mode": 0, "lmTime": 1629035486, "lastMode": 1, "onoffTime": 1629035486}], "triggerx": [], "timerx": []}}}
2021/09/06 - 09:07:17	http	GET	Appliance.System.DNDMode	{}
2021/09/06 - 09:07:17	http	GETACK	Appliance.System.DNDMode	{"DNDMode": {"mode": 1}}
2021/09/06 - 09:07:47	http	GET	Appliance.System.All	{}
2021/09/06 - 09:07:47	http	GETACK	Appliance.System.All	{"all": {"system": {"hardware": {"type": "msxh0", "subType": "us", "version": "2.0.0", "chipType": "mt7682", "uuid": "", "macAddress": ""}, "firmware": {"version": "2.1.11", "compileTime": "2019/08/30 09:26:24 GMT +08:00", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630912066, "timezone": "Europe/Copenhagen", "timeRule": [[1616889600, 7200, 1], [1635634800, 3600, 0]]}, "online": {"status": 1}}, "digest": {"spray": [{"channel": 0, "mode": 0, "lmTime": 1629035486, "lastMode": 1, "onoffTime": 1629035486}], "triggerx": [], "timerx": []}}}
2021/09/06 - 09:07:47	http	GET	Appliance.System.DNDMode	{}
2021/09/06 - 09:07:47	http	GETACK	Appliance.System.DNDMode	{"DNDMode": {"mode": 1}}
2021/09/06 - 09:08:17	http	GET	Appliance.System.All	{}
2021/09/06 - 09:08:17	http	GETACK	Appliance.System.All	{"all": {"system": {"hardware": {"type": "msxh0", "subType": "us", "version": "2.0.0", "chipType": "mt7682", "uuid": "", "macAddress": ""}, "firmware": {"version": "2.1.11", "compileTime": "2019/08/30 09:26:24 GMT +08:00", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630912096, "timezone": "Europe/Copenhagen", "timeRule": [[1616889600, 7200, 1], [1635634800, 3600, 0]]}, "online": {"status": 1}}, "digest": {"spray": [{"channel": 0, "mode": 0, "lmTime": 1629035486, "lastMode": 1, "onoffTime": 1629035486}], "triggerx": [], "timerx": []}}}
2021/09/06 - 09:08:17	http	GET	Appliance.System.DNDMode	{}
2021/09/06 - 09:08:17	http	GETACK	Appliance.System.DNDMode	{"DNDMode": {"mode": 1}}
2021/09/06 - 09:08:47	http	GET	Appliance.System.All	{}
2021/09/06 - 09:08:47	http	GETACK	Appliance.System.All	{"all": {"system": {"hardware": {"type": "msxh0", "subType": "us", "version": "2.0.0", "chipType": "mt7682", "uuid": "", "macAddress": ""}, "firmware": {"version": "2.1.11", "compileTime": "2019/08/30 09:26:24 GMT +08:00", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630912126, "timezone": "Europe/Copenhagen", "timeRule": [[1616889600, 7200, 1], [1635634800, 3600, 0]]}, "online": {"status": 1}}, "digest": {"spray": [{"channel": 0, "mode": 0, "lmTime": 1629035486, "lastMode": 1, "onoffTime": 1629035486}], "triggerx": [], "timerx": []}}}
2021/09/06 - 09:08:47	http	GET	Appliance.System.DNDMode	{}
2021/09/06 - 09:08:47	http	GETACK	Appliance.System.DNDMode	{"DNDMode": {"mode": 1}}
2021/09/06 - 09:09:17	http	GET	Appliance.System.All	{}
2021/09/06 - 09:09:17	http	GETACK	Appliance.System.All	{"all": {"system": {"hardware": {"type": "msxh0", "subType": "us", "version": "2.0.0", "chipType": "mt7682", "uuid": "", "macAddress": ""}, "firmware": {"version": "2.1.11", "compileTime": "2019/08/30 09:26:24 GMT +08:00", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630912156, "timezone": "Europe/Copenhagen", "timeRule": [[1616889600, 7200, 1], [1635634800, 3600, 0]]}, "online": {"status": 1}}, "digest": {"spray": [{"channel": 0, "mode": 0, "lmTime": 1629035486, "lastMode": 1, "onoffTime": 1629035486}], "triggerx": [], "timerx": []}}}
2021/09/06 - 09:09:17	http	GET	Appliance.System.DNDMode	{}
2021/09/06 - 09:09:17	http	GETACK	Appliance.System.DNDMode	{"DNDMode": {"mode": 1}}
2021/09/06 - 09:09:47	http	GET	Appliance.System.All	{}
2021/09/06 - 09:09:47	http	GETACK	Appliance.System.All	{"all": {"system": {"hardware": {"type": "msxh0", "subType": "us", "version": "2.0.0", "chipType": "mt7682", "uuid": "", "macAddress": ""}, "firmware": {"version": "2.1.11", "compileTime": "2019/08/30 09:26:24 GMT +08:00", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630912186, "timezone": "Europe/Copenhagen", "timeRule": [[1616889600, 7200, 1], [1635634800, 3600, 0]]}, "online": {"status": 1}}, "digest": {"spray": [{"channel": 0, "mode": 0, "lmTime": 1629035486, "lastMode": 1, "onoffTime": 1629035486}], "triggerx": [], "timerx": []}}}
2021/09/06 - 09:09:47	http	GET	Appliance.System.DNDMode	{}
2021/09/06 - 09:09:47	http	GETACK	Appliance.System.DNDMode	{"DNDMode": {"mode": 1}}
2021/09/06 - 09:10:17	http	GET	Appliance.System.All	{}
2021/09/06 - 09:10:17	http	GETACK	Appliance.System.All	{"all": {"system": {"hardware": {"type": "msxh0", "subType": "us", "version": "2.0.0", "chipType": "mt7682", "uuid": "", "macAddress": ""}, "firmware": {"version": "2.1.11", "compileTime": "2019/08/30 09:26:24 GMT +08:00", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630912216, "timezone": "Europe/Copenhagen", "timeRule": [[1616889600, 7200, 1], [1635634800, 3600, 0]]}, "online": {"status": 1}}, "digest": {"spray": [{"channel": 0, "mode": 0, "lmTime": 1629035486, "lastMode": 1, "onoffTime": 1629035486}], "triggerx": [], "timerx": []}}}
2021/09/06 - 09:10:17	http	GET	Appliance.System.DNDMode	{}
2021/09/06 - 09:10:17	http	GETACK	Appliance.System.DNDMode	{"DNDMode": {"mode": 1}}
2021/09/06 - 09:10:47	http	GET	Appliance.System.All	{}
2021/09/06 - 09:10:47	http	GETACK	Appliance.System.All	{"all": {"system": {"hardware": {"type": "msxh0", "subType": "us", "version": "2.0.0", "chipType": "mt7682", "uuid": "", "macAddress": ""}, "firmware": {"version": "2.1.11", "compileTime": "2019/08/30 09:26:24 GMT +08:00", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630912246, "timezone": "Europe/Copenhagen", "timeRule": [[1616889600, 7200, 1], [1635634800, 3600, 0]]}, "online": {"status": 1}}, "digest": {"spray": [{"channel": 0, "mode": 0, "lmTime": 1629035486, "lastMode": 1, "onoffTime": 1629035486}], "triggerx": [], "timerx": []}}}
2021/09/06 - 09:10:47	http	GET	Appliance.System.DNDMode	{}
2021/09/06 - 09:10:47	http	GETACK	Appliance.System.DNDMode	{"DNDMode": {"mode": 1}}
2021/09/06 - 09:11:17	http	GET	Appliance.System.All	{}
2021/09/06 - 09:11:17	http	GETACK	Appliance.System.All	{"all": {"system": {"hardware": {"type": "msxh0", "subType": "us", "version": "2.0.0", "chipType": "mt7682", "uuid": "", "macAddress": ""}, "firmware": {"version": "2.1.11", "compileTime": "2019/08/30 09:26:24 GMT +08:00", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630912276, "timezone": "Europe/Copenhagen", "timeRule": [[1616889600, 7200, 1], [1635634800, 3600, 0]]}, "online": {"status": 1}}, "digest": {"spray": [{"channel": 0, "mode": 0, "lmTime": 1629035486, "lastMode": 1, "onoffTime": 1629035486}], "triggerx": [], "timerx": []}}}
2021/09/06 - 09:11:17	http	GET	Appliance.System.DNDMode	{}
2021/09/06 - 09:11:17	http	GETACK	Appliance.System.DNDMode	{"DNDMode": {"mode": 1}}
2021/09/06 - 09:11:47	http	GET	Appliance.System.All	{}
2021/09/06 - 09:11:47	http	GETACK	Appliance.System.All	{"all": {"system": {"hardware": {"type": "msxh0", "subType": "us", "version": "2.0.0", "chipType": "mt7682", "uuid": "", "macAddress": ""}, "firmware": {"version": "2.1.11", "compileTime": "2019/08/30 09:26:24 GMT +08:00", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630912307, "timezone": "Europe/Copenhagen", "timeRule": [[1616889600, 7200, 1], [1635634800, 3600, 0]]}, "online": {"status": 1}}, "digest": {"spray": [{"channel": 0, "mode": 0, "lmTime": 1629035486, "lastMode": 1, "onoffTime": 1629035486}], "triggerx": [], "timerx": []}}}
2021/09/06 - 09:11:47	http	GET	Appliance.System.DNDMode	{}
2021/09/06 - 09:11:47	http	GETACK	Appliance.System.DNDMode	{"DNDMode": {"mode": 1}}

MSG100 (garage opener) stopped working after a firmware update (3.2.3)

Hi,

first of all, thanks for your job @krahabb

My MSG100 integration stopped working yesterday after a firmware update on the garage opener.

I tried to delete the integration and restart HA server

HA now discovers a generic "Meross LAN" integration (name and code of the hardware are not displayed)

Cattura1

and when I try to add/configure it, i get this error message

Cattura2

I checked the local assigned IP and it is correct.

My device data:
Firmware version 3.2.3
Hardware version 3.5.0

Debug log

2021-07-19 11:58:10 DEBUG (MainThread) [custom_components.meross_lan] MerossHttpClient(192.168.0.114): HTTP POST method:(GET) namespace:(Appliance.System.All)
2021-07-19 11:58:10 DEBUG (MainThread) [custom_components.meross_lan] MerossHttpClient(192.168.0.114): HTTP Response ({"header":{"messageId":"abc6144df0ec45bc9e81d582ba621821","namespace":"Appliance.System.All","method":"ERROR","payloadVersion":1,"from":"/appliance/1909032918797890800248e1e951406a/publish","timestamp":1626688690,"timestampMs":820,"sign":"9ea66f8bc516bc2b49b0a41be26cf51b"},"payload":{"error":{"code":5001,"detail":"sign error"}}}
)
2021-07-19 11:58:10 DEBUG (MainThread) [custom_components.meross_lan] Key error on 192.168.0.114 (GET:Appliance.System.All) -> retrying with key-reply hack
2021-07-19 11:58:10 DEBUG (MainThread) [custom_components.meross_lan] MerossHttpClient(192.168.0.114): HTTP Exception (Server disconnected)
2021-07-19 11:58:10 DEBUG (MainThread) [custom_components.meross_lan] Error (Server disconnected) connecting to meross device (host:192.168.0.114)

Ms100 Temperature wrong in 2.3.1

Updated from 2.2.1 and the temp from Ms100 reports in the 160's when it should be in the 70's (Fahrenheit).

Went back to 2.2 1 for now. Will try update again and post logs tonight if not already known issue.

Install/update is through HACS.

Error in log

I have this error in log

MerossDevice(2010231560181590832548e1e938aa98) has incorrect timestamp

Solution ???

Accidentally clicked "Ignore"

Latest version. I accidentally Ignored the new Meross device and now I cannot add it.

What do I need to do to get the device loaded?

Error after upgrading to 2021.8.0

After upgrading to the 2021.08 version I have these errors in the log:

ERROR (MainThread) [homeassistant.setup] Setup failed for meross_lan: Unable to import component: cannot import name 'ELECTRICAL_CURRENT_AMPERE' from 'homeassistant.const' (/usr/src/homeassistant/homeassistant/const.py)

ERROR (MainThread) [homeassistant.config_entries] Error occurred loading configuration flow for integration meross_lan: cannot import name 'ELECTRICAL_CURRENT_AMPERE' from 'homeassistant.const' (/usr/src/homeassistant/homeassistant/const.py)

and the component doesn't work anymore

Issue with cover and other handy sugestion

Great Job! Several switches are already working "offline".

MRS100 cover switch is recognized, but shows as unavailable, and donยดt let send any command.

Also would be very useful to add an entity to all switches to let us turn the presence LED light on and off.

Old MSS110s are discovered and added, but the devices are unavailable to HA

Hello,

I have some old MSS110 plugs that I have FINALLY (many thanks to @bytespider who made an update to his awesome utility in order to make it work) managed to successfully join to my local wifi and connect to my MQTT Add-on in Home Assistant.

Unfortunately, I now have a new problem...ย Your awesome utility is installed and running, but it only partially works. When I configure a new plug (or when I toggle the switch manually after re-installing), the meross-lan integration discovers it just fine and presents me with a configure screen. I click submit, and the new sub-integration appears to be successfully created -- but the associated devices all show status unavailable in lovelace, right from the get-go :(

I have tried creating Home Assistant users using the mac addresses as described in bytespider's wiki, and I've also tried putting the mac address logins in the configuration of the MQTT add-on itself. In both cases the result is the same: the connection appears successfully in the MQTT log, the integration discovers the new plug, but the device is unavailable to HA, and I can't interact with it in any way.

Here's the output of bytespider's verbose info command (it seems to gather the same info you want, and I'm afraid I don't quite understand MQTT well enough to figure out how to publish things manually, so hopefully this will give you what you need):

Getting info about device with IP <redacted>
> POST /config
> Host: <redacted>
> Accept: application/json, text/plain, */*
> Content-Type: application/json
>
{
  header: {
    method: 'GET',
    namespace: 'Appliance.System.All',
    messageId: 'ede61eac2ea6f5c4441ccb43710e41bf',
    timestamp: 1618807862,
    sign: 'c5ebaa3513ebbc43f34db898b666280d'
  },
  payload: {}
}

< 200 OK
< server: HTTPD
< date: Thu, 01 Jan 1970 02:10:37 GMT
< pragma: no-cache
< cache-control: no-cache
< content-type: application/json;charset=UTF-8
< connection: close
<
{
  header: {
    messageId: 'ede61eac2ea6f5c4441ccb43710e41bf',
    namespace: 'Appliance.System.All',
    method: 'GETACK',
    payloadVersion: 1,
    from: '/appliance/1712126291560325130734298f107d35/publish',
    timestamp: 1618807863,
    timestampMs: 30,
    sign: 'c453cc69afe61693faaf9b99c482233a'
  },
  payload: {
    all: {
      system: {
        hardware: {
          type: 'mss110',
          subType: 'us',
          version: '1.0.0',
          chipType: 'MT7688',
          uuid: '1712126291560325130734298f107d35',
          macAddress: '34:29:8f:10:7d:35'
        },
        firmware: {
          version: '1.1.28',
          compileTime: '2019-11-25 16:15:37',
          wifiMac: 'b0:6e:bf:b3:3d:60',
          innerIp: '<redacted>',
          server: '<redacted>',
          port: 8883,
          secondServer: '<redacted>',
          secondPort: 8883,
          userId: 0
        },
        time: { timestamp: 1618807863, timezone: '', timeRule: [] },
        online: { status: 1 }
      },
      control: {
        toggle: { onoff: 1, lmTime: 1618800038 },
        trigger: [],
        timer: []
      }
    }
  }
}

Here's the (trimmed) debug log, showing lines mentioning the meross_lan integration:

2021-04-18 22:23:14 INFO (MainThread) [homeassistant.setup] Setting up meross_lan
2021-04-18 22:23:14 INFO (MainThread) [homeassistant.setup] Setup of domain meross_lan took 0.0 seconds
2021-04-18 22:23:17 DEBUG (MainThread) [custom_components.meross_lan] async_setup_entry entry_id = 09d6219295f01d946e456f2127562df0
2021-04-18 22:23:17 DEBUG (MainThread) [custom_components.meross_lan] async_setup_entry entry_id = fd5175c727d61f369d2c343bd11df8e0
2021-04-18 22:23:17 DEBUG (MainThread) [custom_components.meross_lan] async_setup_entry device_id = 1712212107981725131434298f10c602
2021-04-18 22:23:17 DEBUG (MainThread) [custom_components.meross_lan] MerossDevice(1712212107981725131434298f10c602) init
2021-04-18 22:23:17 DEBUG (MainThread) [custom_components.meross_lan] async_setup_entry entry_id = 7542c666a64ec260e85e5750b5d65e38
2021-04-18 22:23:17 DEBUG (MainThread) [custom_components.meross_lan] async_setup_entry device_id = 1712123980953925130734298f107be5
2021-04-18 22:23:17 DEBUG (MainThread) [custom_components.meross_lan] MerossDevice(1712123980953925130734298f107be5) init
2021-04-18 22:23:17 DEBUG (MainThread) [custom_components.meross_lan] async_setup_entry entry_id = 75fcf1b07729235564a0d911c5de538a
2021-04-18 22:23:17 DEBUG (MainThread) [custom_components.meross_lan] async_setup_entry device_id = 1712120739176125130734298f108226
2021-04-18 22:23:17 DEBUG (MainThread) [custom_components.meross_lan] MerossDevice(1712120739176125130734298f108226) init
2021-04-18 22:23:17 DEBUG (MainThread) [custom_components.meross_lan] async_setup_entry entry_id = 7afabd597c0fb49e448ea6fedf0e455e
2021-04-18 22:23:17 DEBUG (MainThread) [custom_components.meross_lan] async_setup_entry device_id = 1712215696074825131434298f10c809
2021-04-18 22:23:17 DEBUG (MainThread) [custom_components.meross_lan] MerossDevice(1712215696074825131434298f10c809) init
2021-04-18 22:23:17 DEBUG (MainThread) [custom_components.meross_lan] async_setup_entry entry_id = 33699b669a1cf449db1c85ae3ce3043c
2021-04-18 22:23:17 DEBUG (MainThread) [custom_components.meross_lan] async_setup_entry device_id = 1712126291560325130734298f107d35
2021-04-18 22:23:17 DEBUG (MainThread) [custom_components.meross_lan] MerossDevice(1712126291560325130734298f107d35) init
2021-04-18 22:23:19 INFO (MainThread) [homeassistant.components.switch] Setting up switch.meross_lan
2021-04-18 22:23:19 INFO (MainThread) [homeassistant.components.switch] Setting up switch.meross_lan
2021-04-18 22:23:19 INFO (MainThread) [homeassistant.components.switch] Setting up switch.meross_lan
2021-04-18 22:23:19 INFO (MainThread) [homeassistant.components.switch] Setting up switch.meross_lan
2021-04-18 22:23:19 INFO (MainThread) [homeassistant.components.switch] Setting up switch.meross_lan
2021-04-18 22:23:19 DEBUG (MainThread) [custom_components.meross_lan] async_setup_entry device_id = 1712212107981725131434298f10c602 - platform = switch
2021-04-18 22:23:19 DEBUG (MainThread) [custom_components.meross_lan] async_setup_entry device_id = 1712123980953925130734298f107be5 - platform = switch
2021-04-18 22:23:19 DEBUG (MainThread) [custom_components.meross_lan] async_setup_entry device_id = 1712120739176125130734298f108226 - platform = switch
2021-04-18 22:23:19 DEBUG (MainThread) [custom_components.meross_lan] async_setup_entry device_id = 1712215696074825131434298f10c809 - platform = switch
2021-04-18 22:23:19 DEBUG (MainThread) [custom_components.meross_lan] async_setup_entry device_id = 1712126291560325130734298f107d35 - platform = switch
2021-04-18 22:23:47 DEBUG (MainThread) [custom_components.meross_lan] Finished fetching meross_lan data in 0.000 seconds
2021-04-18 22:23:48 DEBUG (MainThread) [custom_components.meross_lan] MerossDevice(1712126291560325130734298f107d35) back online!
2021-04-18 22:24:17 DEBUG (MainThread) [custom_components.meross_lan] Finished fetching meross_lan data in 0.000 seconds
2021-04-18 22:24:47 DEBUG (MainThread) [custom_components.meross_lan] Finished fetching meross_lan data in 0.000 seconds
2021-04-18 22:25:17 DEBUG (MainThread) [custom_components.meross_lan] Finished fetching meross_lan data in 0.000 seconds
2021-04-18 22:23:47 DEBUG (MainThread) [custom_components.meross_lan] Finished fetching meross_lan data in 0.000 seconds
2021-04-18 22:23:48 DEBUG (MainThread) [custom_components.meross_lan] MerossDevice(1712126291560325130734298f107d35) back online!
2021-04-18 22:24:17 DEBUG (MainThread) [custom_components.meross_lan] Finished fetching meross_lan data in 0.000 seconds

(That last line is repeated in my log every thirty seconds forever.)
(At this point only one of the devices was powered up, so that's why only the one shows online.)

I'm pretty new to MQTT and probably only know just enough to be dangerous at this point, so it's quite likely I'm doing something wrong. I'd be grateful for any troubleshooting suggestions. Please let me know if there's any further info you need.

Thank you so much in advance for any help!

Cannot add device manually

Version of the custom_component

2.2.1

Configuration

Default

Describe the bug

I did a fresh install using HACS of the latest 2.2.1.
Once restarted, 2 of my devices appeared to configure and work great.
But I have additional devices on another network using a VPN tunnel that I would like to connect providing the IP Address.
Documentation says: 'You can also manually add your device by adding a new integration entry and providing the host address.'
But where can I do this? When i try to add the integration manually It won't show up.
Did I miss something?

Debug log


None

Meross Lan integration with Meross Cloud iot

Hello,

I do use Meross Cloud since a lot of time.
However, there are more and more issues with some "random" errors, saying the devices are "unavailable" from time to time... a full reboot resolves this, but it is painful, especially with automation.

So i wanted to try this module, but i don't understand how to configure it, when i installed the repo through HACS.
if i go on "integration", i can add the installed module, but it is asking for information that i don't have (key + device ip address)

My question is : Is it compatible with Meross Cloud IOT, or Should i select only one of them?

thanks in advance,

MSS510x 3.2.2 Firmware appears to have broken Meross_LAN

Version of the custom_component

--> v2.2.1

Configuration

Nothing specific to Meross_LAN is configured here.

Describe the bug

A family member with the Meross app on their phone thought they would be nice and updated the three MSS510x switches for me yesterday. The three switches no longer respond to the Meross_LAN integration, but they do respond to the app as well as the other Meross HA cloud based integration.

The devices do appear on the network (their IP addresses are fixed) and are now at Firmware version 3.2.2 with Hardware version 3.0.0. I attempted to change the "version" tag in core.config_entries from 3.1.5 to 3.2.2, but after a HA reboot, the issue persisted. I then removed one of the switches from the integration and tried to manually add it back, however the response in the UI is "Unable to connect".

I am not using MQTT.

Debug log

The trace below is from one of the remaining MSS510x switches.
mss510x-1632057737.csv
`

Power consumption polling frequency

Hi @krahabb,

thanks for providing this, I actually used to manually create sensors/switches with mqtt templates after adding plugs (mss310). Do you believe it would be possible to make state/consumption polling more frequent? I'd like to track power usage every 10-15 seconds?

MSS425ex not discovered

Hi,
since yesterday my mss425ex is not discovered by Meross LAN (v 2.1.1). I'm running HA 2021.9.5.
I have a MSS425e also and it is discovered correctly.
Thanks.
Giorgio

Once timezone is set it cannot be cleared + antiquated pytz

It seems that once the timezone setting is set in the Web UI that it can't be cleared in the actual config itself. If you block the (MSG100) device from WAN entirely, this causes it to spam NTP requests repeatedly via outbound UDP port 123, but only requests 1 packet about once every hour if you allow just that port through. I was able to confirm it retains the setting by:

  1. Enabled debug tracing and noticed the timezone was still "America/Los_Angeles" despite the field being empty in the Web UI.
  2. I switched it to "US/Pacific" and reloaded the integration (not sure if necessary), then rebooted HA, and debug tracing reflected "US/Pacific."
  3. I then cleared the timezone setting again and did the same thing - reloaded the integration, rebooted HA, enabled debug tracing, and it retained the US/Pacific. setting.

(Debug tracing logs attached)
msg100-1632093061.csv
msg100-1632093469.csv
msg100-1632092798.csv

I tried looking through the code to see if I could somehow clear it but was unsuccessful, but I did notice something else.

It seems the integration is using "pytz" and for future proofing this addon, according to this:

https://developers.home-assistant.io/blog/2021/05/07/switch-pytz-to-python-dateutil/

HA 2021.6 switched from "pytz" to "python-dateutil" (EDIT: "zoneinfo" - see the bottom of the link above) so while it still works for now, it's probably best to switch for the sakes of future proofing the addon before it breaks in an HA update someday. Not sure if this was already in the plans but thought I'd bring it up just in case.

Automatic removal of stale devices

Is your feature request related to a problem? Please describe.

Plugs and strips come and go - they are sometimes connected and sometimes not. Unfortunately, once they are configured they stay in the system for good.

Describe the solution you'd like

A periodic check for devices that are offline for an extended time (say, an hour). These devices could be removed, and then advertise as new devices once they are plugged back.

MRS100 position support

Hi, I just tried the custom component, and all meross devices work great even offline.
I saw already an issue opened about mrs100 shutter switch position support. Is there any info about it?
I read on meross site that this switch at the moment doesn't support position feedback/control. Should we wait a firmware update from them?

Discovery OK but impossible to config mss310

I have 4 device Meross mss310 discovery+automatic configuration OK, bat the last device i buy mss310 is only discovered and not configure!

what is happening?
Meross LAN asks me for the key, before it was generated / discovered automatically

Meross Smart Plug MSS210 v.3 (EU socket) cannot connect (HTTP Exception (TimeoutError))

Version of the custom_component

Using v2.0.0

Configuration

Add your logs here.

Describe the bug

The smart plug MSS210 v.3 (EU socket with FW v.5.2.2) is automatically detected however; when I try to configure the plug in the integrations section with its IP I receive a red "Unable to connect" message. While connecting I hear the plug clicking twice.

The plug MSS210 is not on the official list of supported devices. Could this be the reason?

As a side note: My surge protector MSS425F is working fine with Meross LAN. When it gets discovered in the integrations section it displays the model name while the MSS210 does not do that.

Thank you for your work. I could not get my Meross devices working with any of the previous integrations and now at least the surge protector works.

Debug log


2021-06-25 19:22:32 DEBUG (MainThread) [custom_components.meross_lan] received dhcp discovery: {"ip": "192.168.2.199", "hostname": "meross_smart_plug", "macaddress": "48e1e9xxxxxx"}
2021-06-25 19:22:32 DEBUG (MainThread) [custom_components.meross_lan] MerossHttpClient(192.168.2.199): HTTP POST method:(GET) namespace:(Appliance.System.All)
2021-06-25 19:22:37 WARNING (MainThread) [custom_components.meross_lan] MerossHttpClient(192.168.2.199): HTTP Exception (TimeoutError)
2021-06-25 19:22:37 DEBUG (MainThread) [custom_components.meross_lan] Error () connecting to meross device (host:192.168.2.199)
2021-06-25 19:28:21 DEBUG (MainThread) [custom_components.meross_lan] MerossHttpClient(192.168.2.199): HTTP POST method:(GET) namespace:(Appliance.System.All)
2021-06-25 19:28:26 WARNING (MainThread) [custom_components.meross_lan] MerossHttpClient(192.168.2.199): HTTP Exception (TimeoutError)
2021-06-25 19:28:26 DEBUG (MainThread) [custom_components.meross_lan] Error () connecting to meross device (host:192.168.2.199)
2021-06-25 19:35:28 DEBUG (MainThread) [custom_components.meross_lan] MerossHttpClient(192.168.2.199): HTTP POST method:(GET) namespace:(Appliance.System.All)
2021-06-25 19:35:33 WARNING (MainThread) [custom_components.meross_lan] MerossHttpClient(192.168.2.199): HTTP Exception (TimeoutError)
2021-06-25 19:35:33 DEBUG (MainThread) [custom_components.meross_lan] Error () connecting to meross device (host:192.168.2.199)

MSG100 needs to be adjusted

I added 2 devices in my envirorment but the state is set as off or on and not as close or open.
I think that for this kind of device should be correct to have a different state compared to a switch or light devices.

Status Open (or on) never appears. When I open the cover I can see Opening state... but not Open (or Opened)

image

Another point is that I'm syncing these devices with HomeKit integration and they report a state opposite to the correct one.
When cover is off (closed) I get state Open in HomeKit.

image

Finding other MAC address

I have some Meross devices which has different MAC address.
The MAC address is "34:29:8f:xx:xx:xx".

So I modified "merossclient/const.py".
#MANUFACTURER = "Meross"
MANUFACTURER = "Sandemarine"
#MEROSS_MACADDRESS = '48:e1:e9:xx:xx:xx'
MEROSS_MACADDRESS = '34:29:8f:xx:xx:xx'

And also "manifest.json"
"dhcp": [{"hostname": "*", "macaddress": "48E1E9*"},{"hostname": "*", "macaddress": "34298F*"}],

I have successfully added a device and device works properly.

I would like to find multiple MAC addresses at same time.

MSS310 no sensor readings but switchable

Version of the custom_component

v2.1.1

Configuration

Mosquitto

logins:
  - username: mqtt
    password: mqtt
  - username: 48:e1:XX:XX:XX:XX
    password: 0_4684bc65ed8e066290f6ceadcac68b67
  - username: 48:e1:YY:YY:YY:YY
    password: 0_d47fbc97e0b43b3d1f027562adc425f8
customize:
  active: false
  folder: mosquitto
certfile: /data/server.crt
keyfile: /data/server.key
require_certificate: false
allow_anonymous: true
port: 8883
cafile: /data/ca.crt

Describe the bug

First of all thanks for all the effort you put into this component :)
I have some trouble to get it to work with two MSS310, that work with the official App and are able to read the power consumption. In HomeAssistant I can see the device but the sensor readings are always zero. Surprisingly I can switch it on and off without any problems. Any hint on how to fix this is appreciated. Thanks in advance ๐Ÿ‘

image

Debug log

The output I get running mosquitto_sub -h <IP> -u <USER> -P <PASSWORD> -v -t '#'
I've noticed that here I get the more values filled in Appliance.System.All than in the trace output.

appliance/2103098878720390845048e1e960d6bb/publish {"header":{"messageId":"9521817f6705e4c4a645422ecfd11ea8","namespace":"Appliance.Control.ToggleX","method":"PUSH","payloadVersion":1,"from":"/appliance/2103098878720390845048e1e960d6bb/publish","timestamp":1033,"timestampMs":727,"sign":"2a61c0d476df5a0a9966b06d43421183"},"payload":{"togglex":[{"channel":0,"onoff":0,"lmTime":1033}]}}
/appliance/2103098878720390845048e1e960d6bb/publish {"header":{"messageId":"80ae164d36546d28222f526cb2653a6a","namespace":"Appliance.Control.ToggleX","method":"PUSH","payloadVersion":1,"from":"/appliance/2103098878720390845048e1e960d6bb/publish","timestamp":1040,"timestampMs":855,"sign":"440612ed77e2331f6f8c2057025baee2"},"payload":{"togglex":[{"channel":0,"onoff":1,"lmTime":1040}]}}
/appliance/2103098878720390845048e1e960d6bb/subscribe {"header": {"messageId": "bbbbb1fe557b4a8cb9864b7bc55003f1", "namespace": "Appliance.System.All", "method": "GET", "payloadVersion": 1, "from": "/appliance/2103098878720390845048e1e960d6bb/publish", "timestamp": 1628230271, "timestampMs": 0, "sign": "865acc3a7ddee084d77a2f0746d89316"}, "payload": {}}
/appliance/2103098878720390845048e1e960d6bb/publish {"header":{"messageId":"bbbbb1fe557b4a8cb9864b7bc55003f1","namespace":"Appliance.System.All","method":"GETACK","payloadVersion":1,"from":"/appliance/2103098878720390845048e1e960d6bb/publish","timestamp":1120,"timestampMs":589,"sign":"51077886a393fa0ca9af3fe6168fe052"},"payload":{"all":{"system":{"hardware":{"type":"mss310","subType":"un","version":"6.0.0","chipType":"rtl8710cf","uuid":"2103098878720390845048e1e960d6bb","macAddress":"48:e1:e9:60:d6:bb"},"firmware":{"version":"6.1.4","compileTime":"2021/02/27-16:55:22","wifiMac":"f0:b0:14:17:78:99","innerIp":"192.168.178.65","server":"192.168.178.45","port":8883,"userId":0},"time":{"timestamp":1120,"timezone":"Europe/Berlin","timeRule":[[1616889600,7200,1],[1635634800,3600,0]]},"online":{"status":1}},"digest":{"togglex":[{"channel":0,"onoff":1,"lmTime":1040}],"triggerx":[],"timerx":[]}}}}
/appliance/2103098878720390845048e1e960d6bb/subscribe {"header": {"messageId": "2d509fcf7cd8416c9bc369e60819a8da", "namespace": "Appliance.Control.Electricity", "method": "GET", "payloadVersion": 1, "from": "/appliance/2103098878720390845048e1e960d6bb/publish", "timestamp": 1628230271, "timestampMs": 0, "sign": "a0386ae8af7e4d8d0c2eef27edf7c538"}, "payload": {}}
/appliance/2103098878720390845048e1e960d6bb/subscribe {"header": {"messageId": "fc056d764d804469ba24d5d0ab822362", "namespace": "Appliance.Control.ConsumptionX", "method": "GET", "payloadVersion": 1, "from": "/appliance/2103098878720390845048e1e960d6bb/publish", "timestamp": 1628230271, "timestampMs": 0, "sign": "c4339dc38ff5b5623f6be8989205217c"}, "payload": {}}
/appliance/2103098878720390845048e1e960d6bb/publish {"header":{"messageId":"2d509fcf7cd8416c9bc369e60819a8da","namespace":"Appliance.Control.Electricity","method":"GETACK","payloadVersion":1,"from":"/appliance/2103098878720390845048e1e960d6bb/publish","timestamp":1120,"timestampMs":793,"sign":"8d662f569a0cd7fb7fb9f292822f5f76"},"payload":{"electricity":{"channel":0,"current":0,"voltage":0,"power":0,"config":{"voltageRatio":188,"electricityRatio":102}}}}
/appliance/2103098878720390845048e1e960d6bb/publish {"header":{"messageId":"fc056d764d804469ba24d5d0ab822362","namespace":"Appliance.Control.ConsumptionX","method":"GETACK","payloadVersion":1,"from":"/appliance/2103098878720390845048e1e960d6bb/publish","timestamp":1120,"timestampMs":831,"sign":"2dc8cc655e187e8a34a3f683880db272"},"payload":{"consumptionx":[]}}
/appliance/2103098878720390845048e1e960d6bb/subscribe {"header": {"messageId": "51470cdd9fbc454980fec11049efa15a", "namespace": "Appliance.Control.Electricity", "method": "GET", "payloadVersion": 1, "from": "/appliance/2103098878720390845048e1e960d6bb/publish", "timestamp": 1628230289, "timestampMs": 0, "sign": "232c578327b7233e6df632731f496ea6"}, "payload": {}}
/appliance/2103098878720390845048e1e960d6bb/publish {"header":{"messageId":"51470cdd9fbc454980fec11049efa15a","namespace":"Appliance.Control.Electricity","method":"GETACK","payloadVersion":1,"from":"/appliance/2103098878720390845048e1e960d6bb/publish","timestamp":1137,"timestampMs":790,"sign":"bd85d8334d5c9c91bf86ed19d49f2046"},"payload":{"electricity":{"channel":0,"current":0,"voltage":0,"power":0,"config":{"voltageRatio":188,"electricityRatio":102}}}}
/appliance/2103098878720390845048e1e960d6bb/subscribe {"header": {"messageId": "a21708c8edf54323896e7a4690fa2a7f", "namespace": "Appliance.Control.Electricity", "method": "GET", "payloadVersion": 1, "from": "/appliance/2103098878720390845048e1e960d6bb/publish", "timestamp": 1628230319, "timestampMs": 0, "sign": "e2fdda8b7069eca0fd0f2741725ca760"}, "payload": {}}
/appliance/2103098878720390845048e1e960d6bb/publish {"header":{"messageId":"a21708c8edf54323896e7a4690fa2a7f","namespace":"Appliance.Control.Electricity","method":"GETACK","payloadVersion":1,"from":"/appliance/2103098878720390845048e1e960d6bb/publish","timestamp":1167,"timestampMs":793,"sign":"9dd4a9c9231fd147f19d34854171991b"},"payload":{"electricity":{"channel":0,"current":0,"voltage":0,"power":0,"config":{"voltageRatio":188,"electricityRatio":102}}}}

And here the output from the debug trace

2021/08/06 - 08:10:56   auto    GETACK  Appliance.System.All    {"system": {"hardware": {"type": "mss310", "subType": "un", "version": "6.0.0", "chipType": "rtl8710cf", "uuid": "", "macAddress": ""}, "firmware": {"version": "6.1.4", "compileTime": "2021/02/27-16:55:22", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 328, "timezone": "", "timeRule": []}, "online": {"status": 1}}, "digest": {"togglex": [{"channel": 0, "onoff": 0, "lmTime": 95}], "triggerx": [], "timerx": []}}
2021/08/06 - 08:10:56   auto    GETACK  Appliance.System.Ability        {"Appliance.Config.Key": {}, "Appliance.Config.WifiList": {}, "Appliance.Config.Wifi": {}, "Appliance.Config.Trace": {}, "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": 5}, "Appliance.Control.ToggleX": {}, "Appliance.Control.TimerX": {"sunOffsetSupport": 1}, "Appliance.Control.TriggerX": {}, "Appliance.Control.Bind": {}, "Appliance.Control.Unbind": {}, "Appliance.Control.Upgrade": {}, "Appliance.Control.ConsumptionX": {}, "Appliance.Control.Electricity": {}, "Appliance.Control.ConsumptionConfig": {}, "Appliance.Digest.TriggerX": {}, "Appliance.Digest.TimerX": {}}
2021/08/06 - 08:10:59   http    GET     Appliance.System.All    {}
2021/08/06 - 08:10:59   http    GET     Appliance.Control.Electricity   {}
2021/08/06 - 08:10:59   http    GET     Appliance.Control.ConsumptionX  {}
2021/08/06 - 08:10:59   http    GETACK  Appliance.System.All    {"all": {"system": {"hardware": {"type": "mss310", "subType": "un", "version": "6.0.0", "chipType": "rtl8710cf", "uuid": "", "macAddress": ""}, "firmware": {"version": "6.1.4", "compileTime": "2021/02/27-16:55:22", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1107, "timezone": "Europe/Berlin", "timeRule": [[1616889600, 7200, 1], [1635634800, 3600, 0]]}, "online": {"status": 1}}, "digest": {"togglex": [{"channel": 0, "onoff": 1, "lmTime": 1040}], "triggerx": [], "timerx": []}}}
2021/08/06 - 08:10:59   http    GETACK  Appliance.Control.Electricity   {"electricity": {"channel": 0, "current": 0, "voltage": 0, "power": 0, "config": {"voltageRatio": 188, "electricityRatio": 102}}}
2021/08/06 - 08:10:59   http    GETACK  Appliance.Control.ConsumptionX  {"consumptionx": []}

Add support for Meross lights (like the MSL120B)

I have a Meross light bulb model MSL120B.
It is not automatically detected by your component.
This is the message it publishes when powered on:

{
	"header": {
		"messageId": "78d740c90859d05fc18036e7fb9e6c75",
		"namespace": "Appliance.Control.Light",
		"method": "PUSH",
		"payloadVersion": 1,
		"from": "/appliance/1912126573785090806548e1e9131505/publish",
		"timestamp": 1616667203,
		"timestampMs": 450,
		"sign": "71d77e14018753b9de7a1e055d626e2f"
	},
	"payload": {
		"light": {
			"onoff": 1,
			"capacity": 6,
			"channel": 0,
			"rgb": 16753920,
			"temperature": 100,
			"luminance": 100,
			"transform": 0
		}
	}
}

msg100 not connecting

Hi. Thanks for the integration.

I have 7 meross devices, and 6 connected using only IP on HA.
One, msg100, cant connect with ip only, and I don't know how to get the device key.

I have all working out fine on Android app.

Confirmation Dialog Feature

Is your feature request related to a problem? Please describe.
Not necessarily a problem, but it would be a nice to have in case the button is inadvertently pressed.

Describe the solution you'd like
When pressing Up/Open for devices like the MSG100 smart garage door opener, it would be great to have a confirmation dialog option to prevent the garage door from opening in case the button is inadvertently pressed in the Lovelace UI.

Describe alternatives you've considered
An alternative option is to just place the device on a separate Lovelace view to reduce the chance of accidental press when scrolling via the mobile app.

MSS3110 Energy is UTC

Version of the custom_component

Master branch

Describe the bug

I am currently using an MSS310, it seems that home assistant is looking for the next day after midnight, but due to the device using UTC for "Appliance.Control.ConsumptionX", it seems to miss out on the first 10 hours of my day (UTC+10). I haven't had the time to look into the code to see where the problem is caused, but I have noticed it is still going up using MQTT to listen.

image

MSL430 keeps dropping offline.

2.2.0 (I think) - (local branch is still in sync with master)

Describe the bug

MSL 430 keeps dropping offline, It did this with both HTTP only polling (when it was still connected to meross cloud) and now when I've moved it to my own mosquitto broker.

Not world ending as I don't really use it that much, but still I thought I'd post incase the Debug reveals anything useful.

The MSS310's seem to behaving themselves.

2021/08/31 - 12:46:49   auto    GETACK  Appliance.System.All    {"system": {"hardware": {"type": "msl430", "subType": "un", "version": "4.0.0", "chipType": "MT7686", "uuid": "", "macAddress": ""}, "firmware": {"version": "4.1.13", "homekitVersion": "2.0.1", "compileTime": "Mar 24 2021 16:31:59", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630410351, "timezone": "Europe/London", "timeRule": [[1616893200, 3600, 1], [1635638400, 0, 0]]}, "online": {"status": 0, "bindId": "HAEH6GuXgtxK2FQY", "who": 1}}, "digest": {"togglex": [{"channel": 0, "onoff": 0, "lmTime": 1630280234}], "triggerx": [], "timerx": [], "light": {"capacity": 6, "channel": 0, "rgb": 16711808, "temperature": 1, "luminance": 18, "transform": 0}}}
2021/08/31 - 12:46:49   auto    GETACK  Appliance.System.Ability        {"Appliance.Config.Key": {}, "Appliance.Config.WifiList": {}, "Appliance.Config.Wifi": {}, "Appliance.Config.Trace": {}, "Appliance.Config.Info": {}, "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.Factory": {}, "Appliance.System.DNDMode": {}, "Appliance.Control.Multiple": {"maxCmdNum": 5}, "Appliance.Control.ToggleX": {}, "Appliance.Control.TimerX": {"sunOffsetSupport": 1}, "Appliance.Control.TriggerX": {}, "Appliance.Control.Bind": {}, "Appliance.Control.Unbind": {}, "Appliance.Control.Upgrade": {}, "Appliance.Control.Light": {"capacity": 7}, "Appliance.Digest.TriggerX": {}, "Appliance.Digest.TimerX": {}}
2021/08/31 - 12:47:04   http    GETACK  Appliance.System.All    {"all": {"system": {"hardware": {"type": "msl430", "subType": "un", "version": "4.0.0", "chipType": "MT7686", "uuid": "", "macAddress": ""}, "firmware": {"version": "4.1.13", "homekitVersion": "2.0.1", "compileTime": "Mar 24 2021 16:31:59", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630410408, "timezone": "Europe/London", "timeRule": [[1616893200, 3600, 1], [1635638400, 0, 0]]}, "online": {"status": 1, "bindId": "HAEH6GuXgtxK2FQY", "who": 1}}, "digest": {"togglex": [{"channel": 0, "onoff": 0, "lmTime": 1630280234}], "triggerx": [], "timerx": [], "light": {"capacity": 6, "channel": 0, "rgb": 16711808, "temperature": 1, "luminance": 18, "transform": 0}}}}
2021/08/31 - 12:47:04   auto    LOG     WARNING MerossDevice(2009109479497890829148e1e931e694) has incorrect timestamp
2021/08/31 - 12:47:04   auto    LOG     DEBUG   MerossDevice(2009109479497890829148e1e931e694) timedelta = 16
2021/08/31 - 12:47:04   auto    LOG     DEBUG   MerossDevice(2009109479497890829148e1e931e694) back online!
2021/08/31 - 12:47:18   http    GET     Appliance.System.All    {}
2021/08/31 - 12:47:23   auto    LOG     INFO    MerossDevice(2009109479497890829148e1e931e694) client connection error in async_http_request: TimeoutError
2021/08/31 - 12:47:23   auto    LOG     DEBUG   MerossDevice(2009109479497890829148e1e931e694) going offline!
2021/08/31 - 12:47:48   http    GET     Appliance.System.All    {}
2021/08/31 - 12:47:56   http    GETACK  Appliance.System.All    {"all": {"system": {"hardware": {"type": "msl430", "subType": "un", "version": "4.0.0", "chipType": "MT7686", "uuid": "", "macAddress": ""}, "firmware": {"version": "4.1.13", "homekitVersion": "2.0.1", "compileTime": "Mar 24 2021 16:31:59", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630410468, "timezone": "Europe/London", "timeRule": [[1616893200, 3600, 1], [1635638400, 0, 0]]}, "online": {"status": 0, "bindId": "HAEH6GuXgtxK2FQY", "who": 1}}, "digest": {"togglex": [{"channel": 0, "onoff": 0, "lmTime": 1630280234}], "triggerx": [], "timerx": [], "light": {"capacity": 6, "channel": 0, "rgb": 16711808, "temperature": 1, "luminance": 18, "transform": 0}}}}
2021/08/31 - 12:47:56   auto    LOG     WARNING MerossDevice(2009109479497890829148e1e931e694) has incorrect timestamp
2021/08/31 - 12:47:56   auto    LOG     DEBUG   MerossDevice(2009109479497890829148e1e931e694) timedelta = 8
2021/08/31 - 12:47:56   auto    LOG     DEBUG   MerossDevice(2009109479497890829148e1e931e694) back online!
2021/08/31 - 12:48:18   http    GET     Appliance.System.All    {}
2021/08/31 - 12:48:18   http    GETACK  Appliance.System.All    {"all": {"system": {"hardware": {"type": "msl430", "subType": "un", "version": "4.0.0", "chipType": "MT7686", "uuid": "", "macAddress": ""}, "firmware": {"version": "4.1.13", "homekitVersion": "2.0.1", "compileTime": "Mar 24 2021 16:31:59", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630410498, "timezone": "Europe/London", "timeRule": [[1616893200, 3600, 1], [1635638400, 0, 0]]}, "online": {"status": 1, "bindId": "HAEH6GuXgtxK2FQY", "who": 1}}, "digest": {"togglex": [{"channel": 0, "onoff": 0, "lmTime": 1630280234}], "triggerx": [], "timerx": [], "light": {"capacity": 6, "channel": 0, "rgb": 16711808, "temperature": 1, "luminance": 18, "transform": 0}}}}
2021/08/31 - 12:48:48   http    GET     Appliance.System.All    {}
2021/08/31 - 12:48:48   http    GETACK  Appliance.System.All    {"all": {"system": {"hardware": {"type": "msl430", "subType": "un", "version": "4.0.0", "chipType": "MT7686", "uuid": "", "macAddress": ""}, "firmware": {"version": "4.1.13", "homekitVersion": "2.0.1", "compileTime": "Mar 24 2021 16:31:59", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630410528, "timezone": "Europe/London", "timeRule": [[1616893200, 3600, 1], [1635638400, 0, 0]]}, "online": {"status": 1, "bindId": "HAEH6GuXgtxK2FQY", "who": 1}}, "digest": {"togglex": [{"channel": 0, "onoff": 0, "lmTime": 1630280234}], "triggerx": [], "timerx": [], "light": {"capacity": 6, "channel": 0, "rgb": 16711808, "temperature": 1, "luminance": 18, "transform": 0}}}}
2021/08/31 - 12:49:18   http    GET     Appliance.System.All    {}
2021/08/31 - 12:49:18   http    GETACK  Appliance.System.All    {"all": {"system": {"hardware": {"type": "msl430", "subType": "un", "version": "4.0.0", "chipType": "MT7686", "uuid": "", "macAddress": ""}, "firmware": {"version": "4.1.13", "homekitVersion": "2.0.1", "compileTime": "Mar 24 2021 16:31:59", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630410558, "timezone": "Europe/London", "timeRule": [[1616893200, 3600, 1], [1635638400, 0, 0]]}, "online": {"status": 1, "bindId": "HAEH6GuXgtxK2FQY", "who": 1}}, "digest": {"togglex": [{"channel": 0, "onoff": 0, "lmTime": 1630280234}], "triggerx": [], "timerx": [], "light": {"capacity": 6, "channel": 0, "rgb": 16711808, "temperature": 1, "luminance": 18, "transform": 0}}}}
2021/08/31 - 12:49:48   http    GET     Appliance.System.All    {}
2021/08/31 - 12:49:53   auto    LOG     INFO    MerossDevice(2009109479497890829148e1e931e694) client connection error in async_http_request: TimeoutError
2021/08/31 - 12:49:53   auto    LOG     DEBUG   MerossDevice(2009109479497890829148e1e931e694) going offline!
2021/08/31 - 12:50:18   http    GET     Appliance.System.All    {}
2021/08/31 - 12:50:19   http    GETACK  Appliance.System.All    {"all": {"system": {"hardware": {"type": "msl430", "subType": "un", "version": "4.0.0", "chipType": "MT7686", "uuid": "", "macAddress": ""}, "firmware": {"version": "4.1.13", "homekitVersion": "2.0.1", "compileTime": "Mar 24 2021 16:31:59", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630410619, "timezone": "Europe/London", "timeRule": [[1616893200, 3600, 1], [1635638400, 0, 0]]}, "online": {"status": 2, "bindId": "HAEH6GuXgtxK2FQY", "who": 1}}, "digest": {"togglex": [{"channel": 0, "onoff": 0, "lmTime": 1630280234}], "triggerx": [], "timerx": [], "light": {"capacity": 6, "channel": 0, "rgb": 16711808, "temperature": 1, "luminance": 18, "transform": 0}}}}
2021/08/31 - 12:50:19   auto    LOG     DEBUG   MerossDevice(2009109479497890829148e1e931e694) back online!
2021/08/31 - 12:50:48   http    GET     Appliance.System.All    {}
2021/08/31 - 12:50:48   http    GETACK  Appliance.System.All    {"all": {"system": {"hardware": {"type": "msl430", "subType": "un", "version": "4.0.0", "chipType": "MT7686", "uuid": "", "macAddress": ""}, "firmware": {"version": "4.1.13", "homekitVersion": "2.0.1", "compileTime": "Mar 24 2021 16:31:59", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630410648, "timezone": "Europe/London", "timeRule": [[1616893200, 3600, 1], [1635638400, 0, 0]]}, "online": {"status": 1, "bindId": "HAEH6GuXgtxK2FQY", "who": 1}}, "digest": {"togglex": [{"channel": 0, "onoff": 0, "lmTime": 1630280234}], "triggerx": [], "timerx": [], "light": {"capacity": 6, "channel": 0, "rgb": 16711808, "temperature": 1, "luminance": 18, "transform": 0}}}}
2021/08/31 - 12:51:18   http    GET     Appliance.System.All    {}
2021/08/31 - 12:51:18   http    GETACK  Appliance.System.All    {"all": {"system": {"hardware": {"type": "msl430", "subType": "un", "version": "4.0.0", "chipType": "MT7686", "uuid": "", "macAddress": ""}, "firmware": {"version": "4.1.13", "homekitVersion": "2.0.1", "compileTime": "Mar 24 2021 16:31:59", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630410678, "timezone": "Europe/London", "timeRule": [[1616893200, 3600, 1], [1635638400, 0, 0]]}, "online": {"status": 1, "bindId": "HAEH6GuXgtxK2FQY", "who": 1}}, "digest": {"togglex": [{"channel": 0, "onoff": 0, "lmTime": 1630280234}], "triggerx": [], "timerx": [], "light": {"capacity": 6, "channel": 0, "rgb": 16711808, "temperature": 1, "luminance": 18, "transform": 0}}}}
2021/08/31 - 12:51:48   http    GET     Appliance.System.All    {}
2021/08/31 - 12:51:48   http    GETACK  Appliance.System.All    {"all": {"system": {"hardware": {"type": "msl430", "subType": "un", "version": "4.0.0", "chipType": "MT7686", "uuid": "", "macAddress": ""}, "firmware": {"version": "4.1.13", "homekitVersion": "2.0.1", "compileTime": "Mar 24 2021 16:31:59", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630410708, "timezone": "Europe/London", "timeRule": [[1616893200, 3600, 1], [1635638400, 0, 0]]}, "online": {"status": 1, "bindId": "HAEH6GuXgtxK2FQY", "who": 1}}, "digest": {"togglex": [{"channel": 0, "onoff": 0, "lmTime": 1630280234}], "triggerx": [], "timerx": [], "light": {"capacity": 6, "channel": 0, "rgb": 16711808, "temperature": 1, "luminance": 18, "transform": 0}}}}
2021/08/31 - 12:52:18   http    GET     Appliance.System.All    {}
2021/08/31 - 12:52:18   http    GETACK  Appliance.System.All    {"all": {"system": {"hardware": {"type": "msl430", "subType": "un", "version": "4.0.0", "chipType": "MT7686", "uuid": "", "macAddress": ""}, "firmware": {"version": "4.1.13", "homekitVersion": "2.0.1", "compileTime": "Mar 24 2021 16:31:59", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630410738, "timezone": "Europe/London", "timeRule": [[1616893200, 3600, 1], [1635638400, 0, 0]]}, "online": {"status": 1, "bindId": "HAEH6GuXgtxK2FQY", "who": 1}}, "digest": {"togglex": [{"channel": 0, "onoff": 0, "lmTime": 1630280234}], "triggerx": [], "timerx": [], "light": {"capacity": 6, "channel": 0, "rgb": 16711808, "temperature": 1, "luminance": 18, "transform": 0}}}}
2021/08/31 - 12:52:48   http    GET     Appliance.System.All    {}
2021/08/31 - 12:52:48   http    GETACK  Appliance.System.All    {"all": {"system": {"hardware": {"type": "msl430", "subType": "un", "version": "4.0.0", "chipType": "MT7686", "uuid": "", "macAddress": ""}, "firmware": {"version": "4.1.13", "homekitVersion": "2.0.1", "compileTime": "Mar 24 2021 16:31:59", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630410768, "timezone": "Europe/London", "timeRule": [[1616893200, 3600, 1], [1635638400, 0, 0]]}, "online": {"status": 1, "bindId": "HAEH6GuXgtxK2FQY", "who": 1}}, "digest": {"togglex": [{"channel": 0, "onoff": 0, "lmTime": 1630280234}], "triggerx": [], "timerx": [], "light": {"capacity": 6, "channel": 0, "rgb": 16711808, "temperature": 1, "luminance": 18, "transform": 0}}}}
2021/08/31 - 12:53:18   http    GET     Appliance.System.All    {}
2021/08/31 - 12:53:23   auto    LOG     INFO    MerossDevice(2009109479497890829148e1e931e694) client connection error in async_http_request: TimeoutError
2021/08/31 - 12:53:23   auto    LOG     DEBUG   MerossDevice(2009109479497890829148e1e931e694) going offline!
2021/08/31 - 12:53:48   http    GET     Appliance.System.All    {}
2021/08/31 - 12:54:18   http    GET     Appliance.System.All    {}
2021/08/31 - 12:54:18   http    GETACK  Appliance.System.All    {"all": {"system": {"hardware": {"type": "msl430", "subType": "un", "version": "4.0.0", "chipType": "MT7686", "uuid": "", "macAddress": ""}, "firmware": {"version": "4.1.13", "homekitVersion": "2.0.1", "compileTime": "Mar 24 2021 16:31:59", "wifiMac": "", "innerIp": "", "server": "", "port": "", "userId": ""}, "time": {"timestamp": 1630410858, "timezone": "Europe/London", "timeRule": [[1616893200, 3600, 1], [1635638400, 0, 0]]}, "online": {"status": 1, "bindId": "HAEH6GuXgtxK2FQY", "who": 1}}, "digest": {"togglex": [{"channel": 0, "onoff": 0, "lmTime": 1630280234}], "triggerx": [], "timerx": [], "light": {"capacity": 6, "channel": 0, "rgb": 16711808, "temperature": 1, "luminance": 18, "transform": 0}}}}
2021/08/31 - 12:54:18   auto    LOG     DEBUG   MerossDevice(2009109479497890829148e1e931e694) back online!
2021/08/31 - 12:54:48   http    GET     Appliance.System.All    {}
2021/08/31 - 12:54:53   auto    LOG     INFO    MerossDevice(2009109479497890829148e1e931e694) client connection error in async_http_request: TimeoutError
2021/08/31 - 12:54:53   auto    LOG     DEBUG   MerossDevice(2009109479497890829148e1e931e694) going offline!
2021/08/31 - 12:55:18   http    GET     Appliance.System.All    {}
2021/08/31 - 12:56:18   http    GET     Appliance.System.All    {}

Document how to migrate from "trick" to "MQTT" mode

Since Meross has been heavily limiting API access, I decided to pull the plug and move to Meross LAN for my production environment, and it is working very well. In a few months we'll see how it works with TRVs, but, in the meantime (it's summer here), I can use it to see TRV temperatures and control a light bulb.
I didn't configure my devices to use MQTT, thus, as far as I understood, I'm leveraging the "flaw" in Meross protocol, and it is working great.
Now the question: what will happen when Meross will update the firmwares and, eventually, fix this flaw? I will be forced to configure them all for MQTT.
How difficult will the migration be?
Might it be useful if you write some document about it?

Old MSS510 not adding

I am attempting to connect to some fairly old MSS510s (hardware version 1.0.0, firmware 1.1.16), and they are throwing python errors and not adding the entities to Home Assistant.

Error message is below:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 236, in async_setup
    result = await component.async_setup_entry(hass, self)  # type: ignore
  File "/config/custom_components/meross_lan/__init__.py", line 75, in async_setup_entry
    hass.config_entries.async_setup_platforms(entry, device.platforms.keys())
AttributeError: 'ConfigEntries' object has no attribute 'async_setup_platforms'

I have them currently connected to Meross Cloud (as MQTT setup is also being a pain in the butt...), and have configured Meross LAN to access them via HTTP on an IP Address that is statically assigned via my DHCP server.

Power as an entity

Firstly thank you for this once i got the MQTT stuff done this bit was simple 3 MS310's working perfectly

Is it possible to have the the power, energy, voltage and current as entities?

I could do this as a template i guess something like this

  • platform: template
    sensors:
    Meross_Plug_Watts:
    friendly_name: "Dehumidifier Power"
    icon_template: mdi:air-filter
    unit_of_measurement: "w"
    value_template: '{% if states.switch.Meross_lanxxxxxxxx %}{{ states.switch.Meross_lanxxxxxxxx.attributes.current_power_w }}{% else %}Off{% endif %}'

I think it would be much nicer to have 5 entities per device

Wh should be 0 instead of unavailable

Hi, as far as I see, the Wh sensor for mss310 plugs becomes "unavailable" instead of 0 when the plug is shutdown or there is no power consumption (i.e. I saw that happening upon upon HA reboot and a plug of mine was ON but has no load connected).

Do you think it would be better set it to 0 since A and W are 0 as well?

Looking at the code might it be possible that it's not exposing values in these case, or am I wrong?

MSS310H appears to be working fine

If you're interested, I just tested your component with my MSS310H and it works fine.
This is it:
image

I'm writing this, just in case you want to create a list of supported devices ๐Ÿ˜ƒ

MSH300 support

This is a sort of "documentation" issue. If I missed something, please forgive me ๐Ÿ˜ƒ
I have an MSH300 with 4 MTS100v3 that are connected to the Meross cloud and app.
I just pulled the trigger and accepted your "Meross Lan" suggestion to add that newly discovered device. It then asked for an IP (that it automatically suggested, and I didn't touch it) and a "Device key". I left the "Device key" field empty. If this is the expected thing to do, I think that field should be hidden.

The question is: what can I do with the 4 MTS100v3 devices? Can I turn things on and off? Set target temperatures? Or is just for monitoring?

And how do things work? Since I didn't give your component any credential, I guess you can talk to the device, forcing it to do whatever you want. But... Will your commands force the MSH300 to access the cloud to execute your commands, or would everything work even if I disconnected the internet router?

Thank you ๐Ÿ˜ƒ

Add temperature entity to TRVs

Is your feature request related to a problem? Please describe.
These are the entities I see for my TRV using Meross LAN:
image

Describe the solution you'd like
I would really love to see the following additional one (the "current" temperature):
image

Intermittent "Meross device key error"s resulting in loss of control

Version of the custom_component

v2.1.1

Configuration

No configuration written in YAML by me, all done via the home assistant integrations UI.

Describe the bug

I have 6 MSS310 sockets setup via this integration, using your custom fork of the Mosquitto addon for home assistant supervisor. They all work fine 99% of the time, however, after approximately 24 hours of being on, I get, in the log, the following:

WARNING (MainThread) [custom_components.meross_lan] Meross device key error for device_id: 19121809795350251h2848e1e913e299

Which results in home assistant reporting the devices as unavailable for few minutes. However, the issue usually clears itself up, and the entities return to an "available" state, that is, on or off for the switches, and a reasonable value for the sensors.

However, I lose control of the switches at this point. Attempting to toggle the devices off, or switch DNDmode, results in no action being taken on the switch and the toggle returning to the previous state after about 2 seconds.

Debug log

DEBUG (MainThread) [custom_components.meross_lan] MerossApi: MQTT RECV device_id:(19121884072170251h2848e1e913e4ad) method:(ERROR) namespace:(Appliance.Control.ConsumptionX)
DEBUG (MainThread) [custom_components.meross_lan] MerossApi: mqtt_receive exception:('NoneType' object is not iterable) 

Of note immediately though, is the following, for each of my sockets. Not sure if this is intentional:

DEBUG (MainThread) [custom_components.meross_lan] MerossHttpClient(xxx.1.0.89): HTTP Response ({"header":{"messageId":"320990a1652946e8a9a2d08591536617","namespace":"Appliance.System.DNDMode","method":"ERROR","payloadVersion":1,"from":"/appliance/19121809795350251h2848e1e913e299/publish","timestamp":1628593827,"timestampMs":814,"sign":"6bbfac654c4f1d4461f34398c9e72cf8"},"payload":{"error":{"code":5001,"detail":"sign error"}}})
DEBUG (MainThread) [custom_components.meross_lan] Key error on xxx.1.0.89 (GET:Appliance.System.DNDMode) -> retrying with key-reply hack

followed then by

DEBUG (MainThread) [custom_components.meross_lan] MerossHttpClient(xxx.1.0.89): HTTP Response ({"header":{"messageId":"0bef25fee2fc43f29f52d88d46245fe6","namespace":"Appliance.System.All","method":"GETACK","payloadVersion":1,"from":"/appliance/19121809795350251h2848e1e913e299/publish","timestamp":1628593827,"timestampMs":524,"sign":"cf4325533324f07edeb5bf836054ec5a"},"payload":{"all":{"system":{"hardware":{"type":"mss310","subType":"un","version":"2.0.0","chipType":"mt7682","uuid":"19121809795350251h2848e1e913e299","macAddress":"48:e1:e9:xx:xx:xx"},"firmware":{"version":"2.1.16","compileTime":"2020/09/28 15:51:07 GMT +08:00","wifiMac":"2c:b0:5d:xx:xx:xx","innerIp":"xxx.1.0.89","server":"xxx.1.0.55","port":8883,"userId":0},"time":{"timestamp":1628593827,"timezone":"","timeRule":[]},"online":{"status":1}},"digest":{"togglex":[{"channel":0,"onoff":1,"lmTime":1628586000}],"triggerx":[],"timerx":[]}}}})
DEBUG (MainThread) [custom_components.meross_lan] MerossDevice(19121809795350251h2848e1e913e299) back online!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.