Meross Door Opener / Branch

The original code from @ithinkdancan was built around an older Meross cloud login method and appeared to assume a multi-door Meross opener model where garage door channels started at 1.

The MSG100 exposes its garage door as channel 0. This meant the app could initially authenticate and detect the Meross device, but did not create or manage the child garage door device correctly.

Main app changes:

  • Moved from the older Meross login endpoint to the newer regional API flow.
  • Corrected request signing and encoding.
  • Improved parsing of Meross login and device-list responses.
  • Added clearer error handling so failures are reported directly instead of surfacing as misleading Hubitat errors.
  • Added support for MSG100 channel 0 during device discovery and child-device creation.

Driver changes

  • Removed the circular dependency where the driver waited to detect firmware version before deciding how to sign local Meross commands.
  • When a valid Meross key is available, the driver now uses the newer key-based signing path immediately.
  • Added channel 0 as a valid channel during open, close, refresh and status parsing.

The net result is that the updated app and driver now support Meross MSG100 garage door devices from Hubitat using the latest Meross endpoints, updated API flow, channel 0 handling and an enhanced driver signing path.

Wow, this is great. Forgive the noob question but does this driver still require UUID, key, userid, token, messageID and sign? For the life of me, I can’t get the UUID for my MSG100 though the rest does get sent back after using ithinkdancan’s script.

Interestingly, the driver revision for my non-homekit variant of the MSG100 is 8.1.2, way different than yours. Also, Dan’s original driver sees the MSG100, as well, I just don’t have the UUID for it to be used. The devices don’t show using his script.

This version only needs your Meross username (email), password and the device IP. The parent app then uses this to sign into Meross Cloud, acquires the token, calls devList to discover the Meross device UUID and then creates the child device and injects the deviceIp, uuid, key and channel, etc.

The key and UUID are then visible in the chlld device as per the below.

I read up about the HK version and apparently Meross maintains a different firmware branch to support HomeKit integration.

OK let me try this. Here’s mine, BTW. Hope that vastly different HW revision doesn’t require new or updated code.

OK, I updated to your driver and your companion app but it’s still not working. It says opening but goes right back to being closed. My MSG100 with this HW revision 8 was purchased at Amazon in the US. Maybe it’s the hardware itself? Not sure, the app pulled all the info correctly and created the new device properly.

Edit: OK everything is working, I had to muck around with some settings that are local to my C7 hub and it’s fine. You, my friend, have done a great service to our community. Thank you so much!

You’re welcome.

New app below, exclusively for the MSG100 series;

  • Meross cloud is only used once during setup, to retrieve your account's local-control key. After that, nothing goes through the cloud.
  • Setup can now find the device's IP for you: it scans your network and recognizes your MSG100 from how it responds to a probe. Manual IP entry is still there if you'd rather skip scanning.
  • Open/close control and live door/contact status now reports back to the Hubitat child device correctly with no stuck "opening"/"closing" states.

repo: https://github.com/GordonThelander/hubitat-msg100-garage-door https://github.com/GordonThelander/hubitat-msg100-garage-door

manifest: https://raw.githubusercontent.com/GordonThelander/hubitat-msg100-garage-door/main/packageManifest.jsonhttps://raw.githubusercontent.com/GordonThelander/hubitat-msg100-garage-door/main/packageManifest.json