Skip to main content

Meross Garage Door Opener

GEM driver for the Meross standalone garage door openers — msg100 (single door) and msg200 (up to three doors). The opener keeps talking to the Meross cloud — the Meross mobile app continues to work alongside GEM — but every GEM command and state read flows over signed HTTP /config on the opener's LAN address.

Prerequisites

  • Meross garage opener on the same LAN, already onboarded via the Meross app at least once.
  • Meross cloud account credentials. Used only during the one-time pair command to fetch the per-account key and the device uuid; not used afterward.

Setup steps

  1. Add the device. In Devices, create a new device with driver meross_garage. Set ip, username (Meross email), and password (Meross cloud password).
  2. Pair. Run the pair command. The driver logs into the Meross cloud, fetches the account key and this opener's uuid, and persists them as secure device attributes. After a successful pair the password can be cleared if desired. Pair runs automatically on first connect when credentials are present.
  3. Sync zones. Run sync_zones to enumerate garage door channels and auto-create matching GEM zones — one zone for an msg100, up to three for an msg200. Zones land on the garages subsystem (falls back to gates if garages doesn't exist), with zone.address set to the channel number (0/1/2).
  4. Verify. State polling fires every status_interval (default 10 s) and writes state (open / closed) onto each zone based on the door's reed switch.

Attributes

Device — required

NameTypeDescription
ipstringOpener LAN IP.
usernamestringMeross cloud email. Only used during pair.
passwordstring (secure)Meross cloud password. Only used during pair; can be cleared after.

Device — optional

NameTypeDefaultDescription
cloud_basestringhttps://iotx-us.meross.comRegion: US/EU/AP.
status_intervalint (ms)10000Polling cadence for door state.
http_timeoutint (ms)5000Local HTTP request timeout.
user_idstring (readonly)Populated by pair.
uuidstring (readonly)Populated by pair. 32-char hex. Required in every SET payload.
keystring (secure, readonly)Per-account shared secret. Populated by pair; used to sign every HTTP request.
modelstring (readonly)Auto-detected from hardware block (msg100 / msg200).

Zone — address

FieldDescription
addressGarage door channel number — 0 for msg100; 0/1/2 for msg200. Auto-populated by sync_zones.

Commands

NameArgsDescription
pairOne-time cloud login to fetch the account key + device uuid. Re-runnable safely (e.g. after a password change).
sync_zonesEnumerate door channels on the device and auto-create matching GEM zones.
open / onaddressOpen the door on this channel.
close / offaddressClose the door on this channel.
stopaddressNo-op — the opener does not support mid-cycle stop. Kept so generic macros don't fault.
get_stateaddressFetch current open/closed state of one channel.
get_allDump Appliance.System.All for diagnostics.

Known quirks

  • Appliance.GarageDoor.State SET requires the device uuid in each state entry; without it the firmware silently no-ops. The driver always includes it, but commands fail with a clear error if pair hasn't run.
  • The opener does not support a true mid-cycle stop. The stop verb is implemented as a no-op so macros don't fault.
  • State polling reflects the door reed switch: open=1 → zone state open, open=0 → zone state closed. There is no intermediate "moving" state on the wire.
  • The cloud login signs with a hard-coded Meross app secret. Meross occasionally bumps that contract; if pair fails after a Meross app update the constant may need refreshing.

Troubleshooting

  • pair fails with bad credentials. Verify email/password against the Meross app and confirm cloud_base matches your region (iotx-us / iotx-eu / iotx-ap).
  • Commands return error 5001 "sign error". The stored key is stale (typically because the user changed their Meross password). Re-run pair.
  • open/close returns no error but the door doesn't move. The uuid attribute is empty. Re-run pair to populate it.
  • Door state never updates. Confirm the reed switch is installed and seated; verify status in the Meross app.