Skip to main content

Meross EM-series Energy Monitor

GEM driver for the Meross EM-series multi-channel energy monitors — em01 (1-channel), em06 (6-channel), em16 / em16p (16-channel). Pairs once with the Meross cloud to extract the account key and the device uuid; thereafter every poll flows over signed HTTP /config on the device. Read-only — these meters have no relay/switching surface, so the driver exposes no on/off verbs.

Prerequisites

  • Meross EM-series device on the same LAN, already onboarded via the Meross app at least once.
  • Meross cloud account credentials (used only during the one-time pair to fetch the account key and the device uuid).

Setup steps

  1. Add the device. In Devices, create a new device with driver meross_em. Set ip, username (Meross email), password (Meross cloud password).
  2. Pair. Run the pair command to fetch and persist the account key + device uuid + model.
  3. Sync zones. Run sync_zones. The driver creates one read-only zone per active CT-clamp channel (1..N for the detected model).
  4. Verify. Zone attributes populate within one status_interval: power, current, voltage, power_factor, energy_today, energy_week, energy_month (and their _export siblings for back-feed). state flips to on when channel power exceeds 5 W, otherwise off.

Attributes

Device — required

NameTypeDescription
ipstringDevice 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 per-channel electricity.
http_timeoutint (ms)5000Local HTTP request timeout.
user_idstring (readonly)Populated by pair.
uuidstring (readonly)Populated by pair. 32-char hex.
keystring (secure, readonly)Per-account shared secret. Populated by pair; same key shared with any other Meross device on the account.
modelstring (readonly)Populated from the device hardware block (em01 / em06 / em16 / em16p). Determines how many channels the discovery sweep asks for.

Zone — address

FieldDescription
addressCT-clamp channel number (1..N). Auto-populated by sync_zones.

Commands

NameArgsDescription
pairOne-time cloud login to fetch the account key + device uuid. Re-runnable safely.
sync_zonesCreate one read-only zone per active CT-clamp channel.
refreshForce an immediate per-channel poll outside the regular status interval.
get_stateaddressFetch raw electricity reading for one channel.
get_allDump Appliance.System.All + per-channel electricity (raw).

Zone state attributes

AttributeUnitNotes
stateon / offFlips to on when power ≥ 5 W (clears the standby-load floor).
powerW
currentA
voltageVHistory-enabled by default — useful for brown-out hunting.
power_factor0..1History-enabled.
energy_today / energy_week / energy_monthWhCumulative. History-enabled on energy_today.
energy_today_export / _week_export / _month_exportWhNon-zero indicates back-feed (solar/generator).

Known quirks

  • Channels are 1..N on every model; channel 0 is reserved and silently filtered by firmware.
  • Polling Appliance.Control.ElectricityX with malformed payloads (e.g. empty electricity[]) causes the device to drop the TCP connection silently. The driver always sends {electricity:[{channel:1}..{channel:N}]}.
  • todayX / weekX / mConsumeX are signed export counters. The driver surfaces them as energy_*_export so the sign survives downstream.
  • The cloud login uses a hard-coded Meross app secret. Meross occasionally bumps this 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.
  • Commands return error 5001 "sign error". Stored key is stale (typically a password change). Re-run pair.
  • sync_zones creates fewer zones than expected. Run get_all and confirm hardware.type matches one of em01 / em06 / em16 / em16p. The driver bounds zone creation by model channel count.
  • All channels read 0. CT clamps may be installed backwards or not seated — verify in the Meross app first.