Private Home Lab

Self-hosted · No cloud 

Aqara SP-EUC01 with Zigbee2MQTT: Full Local Power Monitoring in Home Assistant

Most smart plugs are a surveillance compromise waiting to happen. You buy them for energy monitoring, and they phone home to a cloud server you don’t control every time you flip a switch or pull a power reading. The Aqara SP-EUC01 is different — not because Aqara is particularly virtuous, but because it’s Zigbee. No Wi-Fi, no cloud account, no vendor API to deprecate. Just a Zigbee 3.0 device that pairs with Zigbee2MQTT, exposes every sensor it has, and stays entirely within your local network.

This guide walks through pairing the SP-EUC01 with Zigbee2MQTT, explains every entity it exposes in Home Assistant, shows you how to wire up the Energy dashboard, covers two practical automations (overload alerts and idle auto-off), and — critically — documents the firmware v42 router bug that most guides skip and that will silently break things if you don’t know about it.

This is an EU plug (Type F/Schuko, 230V). If you’re in North America, look at the SP-EUS01 instead. The pairing and software setup are identical; only the physical form factor and voltage rating differ.

Disclosure: Some links in this article may be affiliate links. We may earn a small commission at no extra cost to you.


Why the SP-EUC01 for a Local Setup

The smart plug market is dominated by Wi-Fi devices. They’re easy to set up, widely available, and work fine — until the vendor shuts down their cloud service, paywalls remote access, or quietly changes their privacy policy.

A Zigbee plug sidesteps all of that. Zigbee traffic stays on your local Zigbee mesh and never touches the internet. There’s no account to create, no outbound connection to block, and no dependency on anything outside your home network.

The SP-EUC01 earns its place for three specific reasons:

  1. Full power monitoring. It exposes power (W), energy (kWh), voltage (V), current (A), and device temperature — not just an on/off switch. Many cheaper Zigbee plugs skip the metering entirely or only expose watts.
  2. Zigbee router functionality. Unlike Zigbee end-devices, the SP-EUC01 actively routes traffic for other Zigbee devices nearby. Plugged into a wall outlet in a dead spot, it extends your mesh without any extra configuration.
  3. Clean Zigbee2MQTT integration. The device has a stable, well-documented fingerprint in Z2M. No quirks mode, no manual configuration — it just works.

Rated at 10A / 2300W maximum load. Do not run high-draw appliances like electric kettles at sustained load near the ceiling; the device temperature sensor will tell you when it’s getting warm.


Prerequisites

This guide assumes you already have:

  • A Zigbee coordinator (USB dongle or equivalent) connected to your Home Assistant host
  • Zigbee2MQTT installed and running, with a working MQTT broker (Mosquitto)
  • Home Assistant with the MQTT integration configured

If you need to set up Zigbee2MQTT from scratch, start with our Xiaomi/Zigbee2MQTT foundational setup guide before continuing here.

If you’re using an Aqara Hub M2 or M3 as your Zigbee coordinator instead of a USB dongle, see our Aqara Hub M2 vs M3 local control guide for notes specific to that setup.


Pairing the SP-EUC01

Step 1: Put Zigbee2MQTT into pairing mode

In the Zigbee2MQTT frontend, click Permit join (All) or permit join for a specific device. You have 255 seconds by default.

Alternatively, enable permit join via the MQTT topic directly:

Topic: zigbee2mqtt/bridge/request/permit_join
Payload: {"value": true, "time": 255}

Step 2: Put the SP-EUC01 into pairing mode

Plug it into a wall outlet. Press and hold the button on the side for 5 seconds until the LED blinks blue rapidly. Release. The device is now in pairing mode.

Step 3: Watch the interview

Within a few seconds, Zigbee2MQTT will discover the device. In the frontend, you’ll see a new entry appear under Devices with the interview status. The full interview typically takes 10–20 seconds. Once complete, the device will appear with its full fingerprint.

Expected interview output (Z2M log):

Interview successful
Vendor: Aqara
Model ID: lumi.plug.maeu01

Step 4: Rename the device

Give it a friendly name in the Z2M frontend — plug_desk, plug_server_rack, etc. This name becomes the MQTT topic base and the entity name in Home Assistant.


All Exposed Entities in Home Assistant

After pairing, the SP-EUC01 exposes the following entities via MQTT discovery. You’ll find them automatically in Home Assistant under the device entry.

Core entities

Entity Type What it gives you
switch Switch On/off control
power Sensor (W) Real-time power draw
energy Sensor (kWh) Cumulative energy consumption
voltage Sensor (V) Mains voltage at the plug
current Sensor (A) Current draw
device_temperature Sensor (°C) Internal plug temperature

Control and protection entities

Entity Type What it does
consumer_connected Binary sensor Detects whether a physical load is plugged in
overload_protection Switch Cuts power if load exceeds rated maximum
auto_off Number/Switch Automatically cuts power after a set idle period
button_lock Switch Disables physical button on the plug
led_disabled_night Switch Turns off the status LED during configured night hours

A note on consumer_connected: This entity reports whether a device is physically connected to the plug, not whether the connected device is actively drawing power. A phone charger with no phone will typically still register as consumer_connected: true. Exact detection sensitivity varies by load — test with your specific appliances.

All entities are available immediately after pairing. No additional YAML configuration required.


Energy Dashboard Integration

The energy sensor (kWh) feeds directly into Home Assistant’s Energy dashboard for long-term statistics.

Step 1: Confirm the sensor is logging long-term statistics

In Home Assistant, go to Settings → Devices & Services → Entities, find your plug’s energy sensor (e.g., sensor.plug_desk_energy), and confirm that:

  • State class: total_increasing
  • Unit of measurement: kWh

If both are correct, Home Assistant is already recording long-term statistics for this sensor. You don’t need to do anything else to enable it.

Step 2: Add to Energy dashboard

Go to Settings → Dashboards → Energy (or navigate to the Energy dashboard and click the configure button).

Under Individual devices, click Add device. Select your plug’s energy sensor from the list.

Home Assistant will begin displaying consumption data. Note that historical data only accumulates from the point the sensor was added — there’s no back-fill of pre-integration data.

Step 3: Tariff configuration (optional)

If you want cost tracking, enter your electricity tariff under the Energy dashboard settings. Home Assistant will calculate running cost per device based on the kWh sensor and your tariff rate.


Practical Automations

Overload alert notification

Trigger a notification if power draw exceeds a threshold. Useful for circuits where you want to know if something is pulling unexpectedly high wattage.

alias: "Desk Plug Overload Alert"
trigger:
  - platform: numeric_state
    entity_id: sensor.plug_desk_power
    above: 2000
    for:
      seconds: 10
action:
  - service: notify.mobile_app
    data:
      title: "Overload Warning"
      message: "Desk plug exceeding 2000W for 10+ seconds"

Adjust the threshold and duration to match your appliance. Set above to something below the 2300W hardware cutoff so you get a warning before the plug trips.

Auto-off on idle (low-power detection)

Useful for device chargers: cut power when the connected device is fully charged and drawing near zero.

alias: "Plug Auto-Off When Idle"
trigger:
  - platform: numeric_state
    entity_id: sensor.plug_desk_power
    below: 5
    for:
      minutes: 30
condition:
  - condition: state
    entity_id: switch.plug_desk
    state: "on"
action:
  - service: switch.turn_off
    target:
      entity_id: switch.plug_desk

The threshold of 5W and 30-minute duration works well for laptop chargers and phone chargers. Adjust for your use case.

Power outage memory behavior: By default, the SP-EUC01 is reported to restore its last known state after a power outage, though this has not been independently verified on all firmware versions. If predictable power-on state matters for your use case (e.g., a server or UPS bypass), test this on your specific firmware and configure Z2M device options accordingly.


Known Issue: Firmware v42 Router Bug

This is the section most guides skip. If you’re running firmware v42 on your SP-EUC01, you will experience intermittent, unexplained state changes — the plug will toggle on or off without any automation triggering it.

Root cause: In firmware v42, the SP-EUC01 exhibits a bug in its Zigbee routing behavior. When the plug is actively routing traffic for other nearby Zigbee devices, it occasionally misinterprets routing-layer messages as commands and toggles its own relay state. This is a confirmed, widely-reported issue (Z2M GitHub issue #13903). Newer firmware versions v43 and v45 have been released; some users report v45 resolves the problem, but results vary — if you’re on a version higher than v42 and not experiencing this issue, you likely don’t need to act.

Symptom checklist:

  • Plug toggles state without any automation or manual trigger
  • Toggles correlate with other Zigbee devices sending messages (motion sensors, door sensors, etc.)
  • Issue stops if you place the plug in a location with no nearby Zigbee devices to route for

How to check your firmware version:

In the Zigbee2MQTT frontend, open the SP-EUC01 device page and look for the OTA or firmware version field. The build number will indicate v42 (or the equivalent build string).

Workaround: Downgrade to v32

v32 is the recommended stable target. The downgrade requires a modified .ota file — the standard v32 firmware will be rejected by the device’s downgrade protection. The modified file reports itself as v99, which satisfies the version check while installing the v32 codebase. The modified firmware file and full procedure are documented in Z2M GitHub issue #13903.

For Z2M users:

  1. Obtain the modified v32 .ota file from the Z2M GitHub issue #13903 discussion.
  2. Place the file in Z2M’s data/ directory.
  3. Trigger the OTA update via the Z2M frontend (OTA tab on the device page) or via the MQTT OTA topic.
  4. After flashing completes, confirm the firmware version in the device page.
  5. Remove the .ota file from data/ after successful flash — leaving it in place will cause Z2M to offer it as an update again on restart.

The v32 firmware loses no meaningful functionality. Router capability remains intact, just without the misrouting bug.


Network and Mesh Contribution

Because the SP-EUC01 is a Zigbee router, it actively relays messages from nearby Zigbee end-devices (sensors, buttons, remotes) back to your coordinator. This is free mesh extension — no hub, no bridge, just a plug doing double duty.

Placement tips for mesh coverage:

  • Position the plug roughly midway between your coordinator and any devices that have weak signal or intermittent connectivity.
  • The Z2M network map (found under Map in the frontend) will show routing paths before and after adding a new router. Use this to confirm the plug is actually being used as a route.
  • Plugs placed behind metal enclosures (server racks, electrical panels) will have reduced RF performance. Prefer open wall outlets.
  • Mains-powered Zigbee devices (like this plug) are always routers. Battery-powered devices are almost always end-devices. A good mesh has routers distributed throughout the space.

The firmware v42 bug described above specifically affects routing behavior — another reason to resolve firmware version before relying on this plug as a mesh backbone.


No Cloud Blocking Required

Unlike Wi-Fi smart plugs — where you often need to firewall DNS or block outbound connections to vendor servers — the SP-EUC01 requires no cloud blocking. It’s a Zigbee device. It has no IP address. It cannot reach the internet.

The only cloud-adjacent consideration: if you’re using the Aqara mobile app separately for other Aqara devices on the same network, ensure those devices are configured for local-only mode. Our Aqara local mode and privacy policy overview covers this in detail.

IoT VLAN note: Since the SP-EUC01 communicates only via Zigbee, your VLAN topology doesn’t directly affect it. What matters is that your Home Assistant host, Zigbee coordinator, and MQTT broker are on the same logical network — or that MQTT traffic can traverse VLANs. The Zigbee mesh itself is layer-0 radio, not IP.


SP-EUC01 vs SP-EUS01: Region Note

SP-EUC01 — EU version. Type F/Schuko plug. 230V. This is what this guide covers.

SP-EUS01 — US version. Type A/B plug. 120V. The US model number has not been independently verified at time of writing — confirm before purchasing.

The Zigbee pairing process, Z2M configuration, and Home Assistant entities are identical between the two. The only differences are the physical plug format and the voltage/amperage ratings. If you’re in North America, buy the US variant — everything in this guide applies directly.


The Bottom Line

The SP-EUC01 is one of the better-value Zigbee plugs for a privacy-conscious Home Assistant setup. Full power monitoring, Zigbee routing, and no cloud dependency are a strong combination at this price point.

The one thing you must handle before deploying it: check your firmware version. The v42 router bug is real, reproducible, and will cost you debugging time if you don’t address it upfront. Downgrade to v32 using the modified .ota file (see GitHub issue #13903), or confirm you’re on a patched newer build before relying on this plug in production.

For energy monitoring specifically, the combination of the energy (kWh) sensor and HA’s Energy dashboard gives you per-device consumption tracking that’s genuinely useful for identifying power hogs. This is the main reason to choose the SP-EUC01 over a simpler Zigbee switch.

For broader context on why a local Zigbee plug beats a cloud-dependent Wi-Fi plug in a privacy-first setup, see our Aqara privacy and local mode overview. For pairing other Zigbee devices in the same stack, the Aqara P1 motion sensor guide follows the same Zigbee2MQTT workflow.


Have a firmware version not mentioned here, or a different behavior on consumer_connected? The Z2M GitHub issues page for SP-EUC01 is the best place to track ongoing device-specific bugs.

.
On this page
.

Read Next

If you found this useful, try these.