---
title: "IKEA TRADFRI E1810"
description: "IKEA TRADFRI E1810 5-button Zigbee remote control integrated with TapHome via MQTT through a Zigbee2Tasmota gateway. Use button presses to trigger scenes and automations."
url: "https://taphome.com/en/compatibility/zigbee2tasmota-ikea-tradfri-e1810/"
language: en
lastmod: 2026-03-29
generator: hugo
ai:
  topics: ["mqtt","zigbee","remote-control","tasmota","button","scene-trigger","other"]
  questions: ["How to integrate IKEA TRADFRI remote with TapHome?","How to use IKEA E1810 buttons to trigger TapHome scenes?","How to pair IKEA TRADFRI E1810 with Zigbee2Tasmota?","What buttons does the IKEA E1810 remote have?","Can I use IKEA TRADFRI remote to control lights in TapHome?","How to detect button presses from a Zigbee remote in TapHome?"]
---

# IKEA TRADFRI E1810

Communication: Packet Parser → MQTT

- [IKEA E1810 — Zigbee2MQTT](https://www.zigbee2mqtt.io/devices/E1524_E1810.html)
- [IKEA E1810 — Blakadder Zigbee Database](https://zigbee.blakadder.com/Ikea_E1810.html)

> Network address
> 
> With the MQTT broker built into TapHome, enter `127.0.0.1` as the broker address in TapHome. In the device, enter the IP address of the TapHome Core and give the Core an IP reservation in the router.
> 
> [Network Preparation](https://taphome.com/en/docs/setup/network-preparation/)

## Integration guide

> [!IMPORTANT]
> This device communicates via **Zigbee** through a Tasmota gateway. Make sure you have the [Zigbee2Tasmota Gateway](https://taphome.com/en/compatibility/zigbee2tasmota-gateway/) template imported and your device paired before proceeding.

The IKEA TRADFRI E1810 is a compact 5-button Zigbee remote control (also known as E1524 in some regions). TapHome detects button presses via the Zigbee2Tasmota gateway over MQTT and exposes each button as a separate Push Button device — allowing you to trigger scenes, control dimmers, operate blinds, or run any Smart Rule automation.

The remote is battery-powered (CR2032) and sleeps between button presses to conserve energy. TapHome monitors battery level and device connectivity through the gateway.

## Configuration

### Pairing the remote

1. Ensure the [Zigbee2Tasmota Gateway](https://taphome.com/en/compatibility/zigbee2tasmota-gateway/) is set up and the **Permit Join** switch is ON in TapHome
2. Open the battery compartment on the back of the remote
3. Press the small **pairing button** (next to the CR2032 battery) **4 times within 5 seconds**
4. The red LED on the remote will flash a few times — the device has joined the Zigbee network
5. Note the **Device ID** (e.g., `0x1234`) from the gateway's service attributes

### Template import parameters

The device template requires 4 parameters:

| Parameter | Description | Example |
|-----------|-------------|---------|
| **MQTT Broker IP Address** | IP of your MQTT broker | `192.168.1.10` |
| **MQTT Broker Port** | Broker port (default 1883) | `1883` |
| **Gateway name** | Tasmota MQTT topic (same as gateway template) | `tasmota_XXXXX` |
| **Device ID** | Zigbee short address from pairing | `0x1234` |

After import, 5 Push Button devices appear in TapHome — one for each button on the remote.

## Device capabilities

### Button mapping

The template creates 5 Push Button devices that detect button presses:

| TapHome Device | Remote Button | Zigbee Event |
|----------------|---------------|--------------|
| **Dimmer Down** | Bottom (−) | `DimmerStepDown` |
| **Dimmer Up** | Top (+) | `DimmerUp` |
| **Left** | Left arrow (◀) | `ArrowClick` = 1 |
| **Right** | Right arrow (▶) | `ArrowClick` = 0 |
| **Toggle** | Center (●) | `Power` |

Each button uses pulse detection — the button state resets to 0 and briefly pulses to 1 when pressed. This makes them ideal for triggering Smart Rules in TapHome.

> [!TIP]
> The E1810 also supports hold and release events in Zigbee2MQTT, but the TapHome template detects **click events only**. This is sufficient for most automation use cases like scene switching and toggle control.

### Use cases with Smart Rules

Since this is a remote control, it does not directly control TapHome devices. Instead, TapHome **detects** each button press and you can **react** using Smart Rules:

- **Toggle** → switch lights on/off, toggle a scene
- **Dimmer Up / Down** → adjust light brightness, change thermostat setpoint
- **Left / Right** → cycle through scenes, control blinds (open/close)

Configure Smart Rules to trigger on the Push Button state change for each button device.

### Battery and connectivity monitoring

The module polls the gateway every hour (`ZbInfo` command) and monitors:

- **Battery Percentage** — estimated battery level. A **warning** is triggered when the level drops below 30%
- **Battery Voltage** — raw voltage of the CR2032 cell
- **Link Quality** — Zigbee signal strength (0–100%)
- **Offline detection** — a **warning** appears if the device has not been seen for more than 12 hours, and an **error** after 24 hours

Service attributes also include the device's IEEE address, Zigbee model ID, manufacturer string, and active endpoints.

## Troubleshooting

### Button presses not detected

1. Verify the Device ID in the template matches the Zigbee short address assigned during pairing (check the gateway's service attributes or use `ZbStatus` in the Tasmota console)
2. Press the pairing button once to wake the remote — it sleeps between presses and the first press after a long idle may not register
3. Check the Tasmota console for `ZbReceived` messages when pressing buttons — this confirms the gateway receives Zigbee events

### Remote not pairing

1. Factory reset the remote: press the pairing button 4 times quickly, then hold it for 10+ seconds until the LED pulses
2. Move the remote within 2–3 meters of the Zigbee gateway during pairing
3. Ensure Permit Join is active on the gateway before starting the pairing sequence

### Battery draining quickly

1. The CR2032 battery typically lasts 1–2 years under normal use
2. If battery warnings appear frequently, check the Link Quality — a weak Zigbee signal causes more retransmissions and faster battery drain
3. Consider adding a Zigbee router device (any mains-powered Zigbee device) near the remote to improve signal quality

## How to install in TapHome

### Prerequisites

- Zigbee gateway with Tasmota firmware (e.g., Sonoff ZBBridge, eWeLink ZB-GW03)
- MQTT broker running on your local network (TapHome built-in broker or external)
- TapHome CCU on the same network

> [!TIP]
> TapHome has a built-in MQTT broker — enable it in **Settings** → **Hardware** → **MQTT Broker**. No additional software is needed.

### Step 1 — Set Up the Tasmota Zigbee Gateway

1. Flash [Tasmota firmware](https://tasmota.github.io/docs/Getting-Started/) on a supported Zigbee coordinator (e.g., Sonoff ZBBridge, eWeLink ZB-GW03)
2. Connect the gateway to your Wi-Fi network via the Tasmota web UI
3. Navigate to **Configuration** → **Configure MQTT** and set:
   - **Host:** the IP address of the TapHome Core for the built-in broker (with an IP reservation in the router → [Network Preparation](https://taphome.com/en/docs/setup/network-preparation/)), or your broker IP (e.g., `192.168.1.10`)
   - **Port:** `1883`
   - **Topic:** note down the topic name (e.g., `tasmota_XXXXX`) — you will need it during template import

For detailed instructions, see the [Tasmota Zigbee documentation](https://tasmota.github.io/docs/Zigbee/).

### Step 2 — Import the Gateway Template in TapHome

1. Download the gateway template from the [Zigbee2Tasmota Gateway](https://taphome.com/en/compatibility/zigbee2tasmota-gateway/) compatibility page
2. In TapHome, go to **Settings** → **Hardware** → **Packet Parser** → **Import**
3. Import the template with these parameters:
   - **MQTT Broker IP Address:** `127.0.0.1` for the TapHome built-in broker, otherwise your broker IP (e.g., `192.168.1.10`)
   - **MQTT Broker Port:** `1883`
   - **Gateway name:** the Tasmota MQTT topic from Step 1 (e.g., `tasmota_XXXXX`)

After import, you will see two devices: **Permit Join** (switch) and **Devices Found** (counter).

### Step 3 — Pair a Zigbee Device

1. In TapHome, turn on the **Permit Join** switch — this opens a 60-second pairing window
2. On the Zigbee device, start the pairing procedure (typically hold the reset button for 5 seconds until the LED blinks)
3. Watch the **Devices Found** counter — it increments when a new device joins
4. Check the **Service Attributes** of the gateway to see the new device's ID (e.g., `0x1234`), manufacturer, and model
5. The pairing mode deactivates automatically after the timeout

### Step 4 — Import the Device Template

1. Download the device-specific template from the corresponding compatibility page
2. Import the template with these parameters:
   - **MQTT Broker IP Address:** same as the gateway
   - **MQTT Broker Port:** `1883`
   - **Gateway name:** same Tasmota MQTT topic as above
   - **Device ID:** the short address from pairing (e.g., `0x1234`)

## Available devices 5

These devices appear in TapHome after import.

IKEA TRADFRI E1810 Module

Service Attributes

|                    |                                                   |
|--------------------|---------------------------------------------------|
| IEEE Address       | Zigbee IEEE address (64-bit unique identifier)    |
| Model ID           | Zigbee model identifier reported by the device    |
| Manufacturer       | Zigbee manufacturer string reported by the device |
| Endpoints          | Active Zigbee endpoints on the device             |
| Link Quality       | Zigbee link quality indicator (0–100%)            |
| Battery Voltage    | CR2032 battery voltage                            |
| Battery Percentage | Estimated battery level (warning at &lt;30%)      |

Custom Variables

`GWname` (string) Tasmota MQTT topic name of the Zigbee gateway (found in Configuration → MQTT → Topic) 

`ID` (string) Zigbee short address of the sensor (assigned during pairing)

After pairing the sensor via Permit Join, find the device short address in the gateway's Devices Found service attribute or via Tasmota console command ZbStatus

Read (module)

```taphome
MQTTPUBLISH("cmnd/" + GWname+ "/ZbInfo", ID)
```

Listener

```taphome
if INDEXOF(RECEIVEDMSG.Topic, "SENSOR") > 0
	var ZbReceived := PARSEJSON(TOSTRING(RECEIVEDMSG.Payload), "ZbReceived." + ID, true);
    var bat := PARSEJSON(ZbReceived, "BatteryPercentage", true);
    if(!ISNULL(bat), BatteryPercentage := bat);
    var volt := PARSEJSON(ZbReceived, "BatteryVoltage", true);
    if(!ISNULL(volt), BatteryVoltage := volt);
    
    var deviceInfo := PARSEJSON(TOSTRING(RECEIVEDMSG.Payload), "ZbInfo." + ID, true);
    if !ISNULL(deviceInfo)
    	LastSeenEpoch := PARSEJSON(deviceInfo, "LastSeenEpoch");
        COMPLETESERVICEATTRIBUTE("IEEEAddr", PARSEJSON(deviceInfo, "IEEEAddr"));
        COMPLETESERVICEATTRIBUTE("ModelId", PARSEJSON(deviceInfo, "ModelId"));
        COMPLETESERVICEATTRIBUTE("Manufacturer", PARSEJSON(deviceInfo, "Manufacturer"));
        COMPLETESERVICEATTRIBUTE("Endpoints", PARSEJSON(deviceInfo, "Endpoints"));
        #COMPLETESERVICEATTRIBUTE("Config", PARSEJSON(deviceInfo, "Config"));
        COMPLETESERVICEATTRIBUTE("Link Quality", ROUND(LINEAR(PARSEJSON(deviceInfo, "LinkQuality"), 0,0, 254, 100)) + "%");
    end
end

if BatteryPercentage < 30
	ADDWARNING("Low battery (<30%)");
end

if !ISNAN(LastSeenEpoch)
	DATETIME now := NOW();
	var secondsSeen := now.UNIXTIME - LastSeenEpoch;
	if secondsSeen > 12 * 60 * 60
		if secondsSeen > 24 * 60 * 60
			ADDERROR("Device is offline > 24H");
		else
			ADDWARNING("Device is offline > 12H");        
		end
	end
end
```

Service Attributes

IEEEAddr

```taphome
MQTTPUBLISH("cmnd/" + GWname+ "/ZbInfo", ID)
```

ModelId

```

```

Manufacturer

```

```

Endpoints

```

```

Link Quality

```

```

Battery Voltage

```taphome
BatteryVoltage + " V"
```

Battery Percentage

```taphome
BatteryPercentage + "%"
```

Dimmer Down Push Button Read-only

Detects bottom button press — triggers on DimmerStepDown Zigbee event

boolean pulse

Listener

```taphome
Bp := 0;
if INDEXOF(RECEIVEDMSG.Topic, "SENSOR") > 0
	var ZbReceived := PARSEJSON(RECEIVEDMSG.Payload, "ZbReceived." + ID, true);
    var button := PARSEJSON(ZbReceived, "DimmerStepDown", true);
    if(!ISNULL(button), Bp := 1);
end
```

Dimmer Up Push Button Read-only

Detects top button press — triggers on DimmerUp Zigbee event

boolean pulse

Listener

```taphome
Bp := 0;
if INDEXOF(RECEIVEDMSG.Topic, "SENSOR") > 0
	var ZbReceived := PARSEJSON(RECEIVEDMSG.Payload, "ZbReceived." + ID, true);
    var button := PARSEJSON(ZbReceived, "DimmerUp", true);
    if(!ISNULL(button), Bp := 1);
end
```

Left Push Button Read-only

Detects left arrow press — triggers on ArrowClick Zigbee event

boolean pulse

Listener

```taphome
Bp := 0;
if INDEXOF(RECEIVEDMSG.Topic, "SENSOR") > 0
	var ZbReceived := PARSEJSON(RECEIVEDMSG.Payload, "ZbReceived." + ID, true);
    var button := PARSEJSON(ZbReceived, "ArrowClick", true);
    if(!ISNULL(button) and button = 1, Bp := 1);
end
```

Right Push Button Read-only

Detects right arrow press — triggers on ArrowClick Zigbee event

boolean pulse

Listener

```taphome
Bp := 0;
if INDEXOF(RECEIVEDMSG.Topic, "SENSOR") > 0
	var ZbReceived := PARSEJSON(RECEIVEDMSG.Payload, "ZbReceived." + ID, true);
    var button := PARSEJSON(ZbReceived, "ArrowClick", true);
    if(!ISNULL(button) and button = 0, Bp := 1);
end
```

Toggle Push Button Read-only

Detects center button press — triggers on Power Zigbee event

boolean pulse

Listener

```taphome
Bp := 0;
if INDEXOF(RECEIVEDMSG.Topic, "SENSOR") > 0
	var ZbReceived := PARSEJSON(RECEIVEDMSG.Payload, "ZbReceived." + ID, true);
    var button := PARSEJSON(ZbReceived, "Power", true);
    if(!ISNULL(button), Bp := 1);
end
```

**Connection:** Packet Parser → MQTT

Possible improvements (3)

- Dimmer Down Hold — brightness\_down\_hold event — long press detection not implemented in TapHome template
- Dimmer Up Hold — brightness\_up\_hold event — long press detection not implemented
- Arrow Left/Right Hold — arrow\_left\_hold / arrow\_right\_hold — long press events not implemented

## Import parameters

Enter these values when you import the XML.

| Asked in the app                                            | Default         |
|-------------------------------------------------------------|-----------------|
| Mqtt Broker IP address                                      | `192.168.0.1`   |
| Mqtt Broker port                                            | `1883`          |
| Gateway name (Tasmota-&gt;Configuration-&gt;MQTT-&gt;Topic) | `tasmota_XXXXX` |
| Device ID                                                   | `0xFFFF`        |

## Sources

- Tasmota Zigbee Documentation
  
  [tasmota.github.io](https://tasmota.github.io/docs/Zigbee/)
- Zigbee Compatible Devices Database
- IKEA E1810 — Blakadder Zigbee Database
  
  [zigbee.blakadder.com](https://zigbee.blakadder.com/Ikea_E1810.html) 2026-03-29
- IKEA E1524/E1810 — Zigbee2MQTT Device Page
  
  [www.zigbee2mqtt.io](https://www.zigbee2mqtt.io/devices/E1524_E1810.html) 2026-03-29

## Related Documentation

- [MQTT Integration](https://taphome.com/en/compatibility/mqtt-guide/)
- [Packet Parser (HTTP, TCP, UDP, FTP, MQTT)](https://taphome.com/en/docs/integration/packet-parser/)
- [Packet parser functions](https://taphome.com/en/docs/script/packet-parser/)
- [Parsing functions](https://taphome.com/en/docs/script/parsing-functions/)
- [MQTT Broker](https://taphome.com/en/docs/integration/packet-parser/mqtt-broker/)
- [Listener scripts](https://taphome.com/en/docs/script/listener-scripts/)

