---
title: "Shelly Plus i4"
description: "Shelly Plus i4 Wi-Fi 4 csatornás digitális bemeneti modul. Nyomógomb- és kapcsolóállapot-érzékelés MQTT-n a TapHome-ból — relé nélkül, tiszta bemenet."
url: "https://taphome.com/hu/compatibility/shelly-plus-i4/"
language: hu
lastmod: 2026-03-29
generator: hugo
ai:
  topics: ["mqtt","i/o-module","wifi","digital-input","push-button","reed-contact","4-channel"]
  questions: ["Hogyan integrálható a Shelly Plus i4 a TapHome-mal?","Hogyan érzékelhetők a gombnyomások a Shelly Plus i4-gyel a TapHome-ban?","Hogyan csatlakoztatható a Shelly Plus i4 MQTT-n a TapHome-hoz?","Mi a különbség a nyomógomb és a kapcsoló mód között a Shelly Plus i4-en?","Hogyan konfigurálhatók a Shelly Plus i4 bemenetei nyomógombként vagy kapcsolóként?","Miért jelenik meg a \"Device is set as switch\" hiba a Shelly Plus i4-nél a TapHome-ban?","Képes a Shelly Plus i4 közvetlenül relét vezérelni?"]
---

# Shelly Plus i4

Kommunikáció: Packet Parser → MQTT

- [Shelly Plus i4 termékoldal](https://www.shelly.com/en/products/shop/shelly-plus-i4)
- [Shelly Gen2+ Input Component API](https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/Input/)

> Hálózati cím
> 
> A TapHome-ba épített MQTT bróker esetén a TapHome-ban brókercímként adja meg a `127.0.0.1` címet. Az eszközben a TapHome Core IP-címét adja meg, és a Core-nak állítson be IP-foglalást a routerben.
> 
> [A hálózat előkészítése](https://taphome.com/hu/docs/setup/network-preparation/)

## Integrációs útmutató

A Shelly Plus i4 egy kompakt Wi-Fi 4 csatornás digitális bemeneti modul. Nincsenek benne relék vagy kimenetek — kizárólag bemeneti eszközként működik, amely nyomógomb-lenyomásokat és kapcsolóállapotokat érzékel négy független kapocson (SW1–SW4). Elfér egy szabványos fali kapcsoló mögött (37 x 42 x 16 mm), és 110–240 VAC-ról táplálkozik. A TapHome MQTT-n keresztül kommunikál az eszközzel Gen2+ JSON-RPC 2.0 értesítések segítségével a helyi hálózaton — felhőkapcsolat nem szükséges.

A négy bemenet mindegyike függetlenül konfigurálható **nyomógomb módra** (egyszeri nyomás, dupla nyomás, hosszú nyomás érzékelése) vagy **kapcsoló módra** (nyitott/zárt állapot érzékelése). A TapHome sablon minden bemenethez létrehoz egy nyomógomb- és egy reedkontakt-eszközt — azt használja, amelyik megfelel a bemenet Shelly webes felületén beállított konfigurációjának.

## Konfiguráció

### MQTT-broker beállítása

A Shelly Plus i4 MQTT-n keresztül kommunikál. MQTT-brokerre van szükség a hálózatban (pl. Mosquitto). A Shelly webes felületén (`http://{eszkoz-ip}`) navigáljon a Beállítások → MQTT menüpontra, és engedélyezze az MQTT-t a broker IP-címének és portjának megadásával.

### Sablonimport paraméterei

A TapHome sablonimportálás során adjon meg három paramétert:

| Paraméter | Leírás | Példa |
|-----------|--------|-------|
| **MQTT Broker IP** | Az MQTT-broker IP-címe | `192.168.1.10` |
| **MQTT Broker Port** | Broker port (alapértelmezett 1883) | `1883` |
| **Shelly ID** | MQTT client ID a Shelly webes felületéről → Beállítások → MQTT | `shellyplusi4-xxxxxxxxxxxx` |

### Bemeneti mód konfigurálása

A sablon importálása után konfigurálja az egyes bemeneteket a Shelly webes felületén (`http://{eszkoz-ip}`) → Bemenetek:

- **Nyomógomb mód** — pillanatnyi nyomógombokhoz. Használja a megfelelő Gomb 1–4 eszközt a TapHome-ban.
- **Kapcsoló mód** — billenőkapcsolókhoz vagy reedkontaktokhoz. Használja a megfelelő Kapcsoló 1–4 eszközt a TapHome-ban.

Minden fizikai bemenet egyszerre csak egy típusú lehet. Ha egy bemenet kapcsoló módra van állítva, de a TapHome gombnyomás-eseményt kap (vagy fordítva), a listener szkript hibát jelez az eltérés miatt.

## Eszközképességek

### Gombnyomás-érzékelés (Gomb 1–4)

Négy nyomógomb-eszköz figyeli az MQTT `NotifyEvent` üzeneteket a `{device_id}/events/rpc` topikon. Minden gomb háromféle nyomást érzékel, és numerikus értékekhez rendeli őket:

| Nyomás típusa | Érték |
|---------------|-------|
| Egyszeri nyomás | 1 |
| Hosszú nyomás | 2 |
| Dupla nyomás | 3 |

A gombeszközök csak olvashatók — az utolsó érzékelt eseményt jelentik. Minden gomb a megfelelő bemeneti komponens (`input:0`–`input:3`) eseményeit figyeli.

### Kapcsoló/reedkontakt-érzékelés (Kapcsoló 1–4)

Négy reedkontakt-eszköz figyeli az MQTT `NotifyStatus` üzeneteket. Minden kapcsoló a megfelelő bemenet bináris állapotát olvassa:

| Állapot | Érték |
|---------|-------|
| Zárt (aktív) | 1 |
| Nyitott (inaktív) | 0 |

A kapcsolóeszközök csak olvashatók, 2,5 másodperces lekérdezési intervallummal. Alkalmasak billenőkapcsolókhoz, mágneses reedkontaktokhoz vagy bármilyen bináris be/ki érzékelőhöz, amely a bemeneti kapocsokra csatlakozik.

### További képességek

A Shelly Plus i4 API támogatja a háromszoros nyomás érzékelését, nyers button-down/button-up eseményeket és egy programozható `Input.Trigger` metódust (az i4 eszközökre egyedi), amely fizikai bemenet nélkül is képes eseményeket kiváltani. Rendszerdiagnosztika (üzemidő, MAC, WiFi RSSI) HTTP RPC-n keresztül elérhető, de ebben a kizárólag MQTT-alapú sablonban nincs kitéve. Ezek a képességek egy jövőbeli sablonfrissítésben adhatók hozzá.

## Hibaelhárítás

### A gombnyomások nem érzékelhetők

1. Ellenőrizze, hogy a bemenet **nyomógomb** módra van konfigurálva a Shelly webes felületén → Bemenetek
2. Ellenőrizze, hogy a TapHome csatlakozik az MQTT-brokerhez, és a Shelly ID megegyezik az eszköz MQTT client ID-jával
3. Ha a TapHome "Device is set as switch" hibát jelez, a bemenet kapcsoló módban van — váltsa nyomógomb módra a Shelly webes felületén, vagy használja helyette a Kapcsoló 1–4 eszközt

### A kapcsoló állapota nem frissül

1. Ellenőrizze, hogy a bemenet **kapcsoló** módra van konfigurálva a Shelly webes felületén → Bemenetek
2. Ha a TapHome "Device is set as button" hibát jelez, a bemenet nyomógomb módban van — váltsa kapcsoló módra, vagy használja helyette a Gomb 1–4 eszközt
3. Kapcsolja át a fizikai kapcsolót, és ellenőrizze az MQTT-brokert, hogy érkeznek-e `NotifyStatus` üzenetek a `shellyplusi4-{id}/events/rpc` topikon

### Az eszköz nem elérhető

1. Ellenőrizze, hogy a Shelly csatlakozik a Wi-Fi-hez — a kék LED-nek folyamatosan világítania kell
2. Győződjön meg róla, hogy az MQTT engedélyezve van a Shelly webes felületén → Beállítások → MQTT, és a broker címe helyes
3. Próbálja meg az mDNS hosztnevet (`shellyplusi4-AABBCCDDEE.local`) a Shelly webes felületének eléréséhez
4. Ellenőrizze, hogy az MQTT-broker fut, és elérhető mind a TapHome Core-ból, mind a Shelly eszközből

> [!NOTE]
> A Shelly Plus i4 MQTT sebességkorlátja **80 értesítés 60 másodperces ablakban**. A gyors ismételt gombnyomások túlléphetik ezt a korlátot, és egyes események elveszhetnek. Ez firmware-szintű korlátozás.

## Telepítés a TapHome-ban

### Előfeltételek

- Shelly eszköz csatlakoztatva a Wi-Fi-hez (2,4 GHz), pl. a Shelly alkalmazással vagy az eszköz saját hozzáférési pontján keresztül
- MQTT broker fut a helyi hálózaton (pl. Mosquitto, Home Assistant vagy a TapHome beépített brokere)
- TapHome CCU ugyanazon a hálózaton, mint a broker

> [!WARNING]
> A **Gen1** eszközökön az MQTT engedélyezése **letiltja a Shelly Cloudot**. A kettő nem futhat egyszerre. A Gen2/Plus eszközökön ez a korlátozás nem érvényes.

### 1. lépés — MQTT engedélyezése a Shelly eszközön

#### Gen1 eszközök (Shelly 1, 1PM, 2.5, EM, 3EM, Plug S, RGBW2, Dimmer, TRV…)

1. Nyissa meg a Shelly webes felületet: `http://<device-ip>/`
2. Navigáljon az **Internet & Security** → **Advanced — MQTT** menüpontra
3. Engedélyezze az **MQTT**-t
4. Állítsa be az **MQTT Server**-t: `<broker-ip>:<port>` (pl. `192.168.1.10:1883`)
5. Opcionálisan állítsa be az **MQTT User** és **MQTT Password** mezőket, ha a broker hitelesítést igényel
6. Kattintson a **Save** gombra — az eszköz újraindul és csatlakozik a brokerhez

#### Gen2 / Plus eszközök (Shelly Plus 1, Plus 1PM, Plus 2PM, Plus Plug S, Plus H&T, Pro 3EM…)

1. Nyissa meg a Shelly webes felületet: `http://<device-ip>/`
2. Navigáljon a **Settings** → **MQTT** menüpontra
3. Engedélyezze az **MQTT**-t
4. Állítsa be a **Server**-t: `<broker-ip>:<port>` (pl. `192.168.1.10:1883`)
5. A **Client ID** előre ki van töltve az eszköz azonosítójával (pl. `shellyplus1pm-AABBCCDDEE`) — hagyja így, hacsak nincs konkrét oka a változtatásra
6. Kattintson a **Save** gombra és indítsa újra az eszközt

A beépített TapHome broker esetén a `<broker-ip>` a TapHome Core IP-címe. Adjon a Core-nak IP-foglalást a routerben, különben az eszköz elveszíti a brokert, amikor a router megváltoztatja a címet → [A hálózat előkészítése](https://taphome.com/hu/docs/setup/network-preparation/).

> [!TIP]
> Az MQTT működésének ellenőrzéséhez használjon egy MQTT klienst (pl. MQTT Explorer), és iratkozzon fel a `shellies/#` (Gen1) vagy `<device-id>/#` (Gen2) topikra. Látnia kell az eszköz állapotüzeneteit.

### 2. lépés — Device ID / MQTT Client ID megkeresése

Egyes sablonok **Device ID** vagy **MQTT Client ID** paramétert igényelnek. Ez az egyedi azonosító, amelyet az MQTT topikokban használnak.

- **Gen1:** a címkén MAC-címként található (pl. `AABBCCDDEE`). Device ID = `shelly<model>-<mac>`, pl. `shelly1pm-AABBCCDDEE`
- **Gen2/Plus:** a Shelly webes felületén a **Settings** → **Device Info** → **Device ID** alatt található, vagy az eszköz címkéjén

### 3. lépés — Konfigurálás a TapHome-ban

1. A TapHome-ban adjon hozzá egy új **Packet Parser (MQTT)** modult
2. **IP Address:** a beépített TapHome brokerhez `127.0.0.1` (a vezérlőegység saját magához csatlakozik, a cím soha nem változik); külső broker esetén annak IP-címe (pl. `192.168.1.10`)
3. **Port:** `1883` (alapértelmezett; TLS esetén használjon `8883`-at)
4. **Device ID / MQTT Client ID:** adja meg a 2. lépésben kapott értéket (ha a sablon megköveteli)
5. Importálja a sablont — a TapHome automatikusan feliratkozik az eszköz topikjaira

## Elérhető eszközök 8

Ezek az eszközök az importálás után jelennek meg a TapHome-ban.

Shelly Plus i4 Modul

Egyéni változók

|               |
|---------------|
| `ID` (string) |

Gomb 1 Nyomógomb Csak olvasható

Nyomógomb az input:0 bemeneten — egyszerű nyomás (1), hosszú nyomás (2), dupla nyomás (3)

numeric JSON-RPC event

Változó: `Button`

Figyelő

```taphome
Bp := 0;
#index of shelly
if INDEXOF(RECEIVEDMSG.TOPIC, ID) = 0
    VAR method := PARSEJSON(RECEIVEDMSG.PAYLOAD, "method", true);
    VAR params := PARSEJSON(RECEIVEDMSG.PAYLOAD, "params", true);

    IF method = "NotifyEvent"
        VAR zero := PARSEJSON(PARSEJSON(params, "events"),"[0]");
        VAR component := PARSEJSON(zero, "component");
        VAR event := PARSEJSON(zero, "event");
    
        if component = "input:0"
            Bp := SWITCH(event, "single_push", Bp := 1, "double_push", Bp :=3,  "long_push", Bp := 2, Bp := 0 );
            #RETURN(Bp);
        END
    elseif method = "NotifyStatus"
        IF( INDEXOF(params, "input:0") > -1, ADDERROR("Device is set as switch"));
    END
END
```

Gomb 2 Nyomógomb Csak olvasható

Nyomógomb az input:1 bemeneten — egyszerű nyomás (1), hosszú nyomás (2), dupla nyomás (3)

numeric JSON-RPC event

Figyelő

```taphome
Bp := 0;

#index of shelly
if INDEXOF(RECEIVEDMSG.TOPIC, ID) = 0

    VAR method := PARSEJSON(RECEIVEDMSG.PAYLOAD, "method", true);
    VAR params := PARSEJSON(RECEIVEDMSG.PAYLOAD, "params", true);

    IF method = "NotifyEvent"
        VAR zero := PARSEJSON(PARSEJSON(params, "events"),"[0]");
        VAR component := PARSEJSON(zero, "component");
        VAR event := PARSEJSON(zero, "event");
    
        if component = "input:1"
            Bp := SWITCH(event, "single_push", Bp := 1, "double_push", Bp :=3,  "long_push", Bp := 2, Bp := 0 );
            #RETURN(Bp);
        END
    elseif method = "NotifyStatus"
        IF( INDEXOF(params, "input:0") > -1, ADDERROR("Device is set as switch"));
    END
END
```

Gomb 3 Nyomógomb Csak olvasható

Nyomógomb az input:2 bemeneten — egyszerű nyomás (1), hosszú nyomás (2), dupla nyomás (3)

numeric JSON-RPC event

Figyelő

```taphome
Bp := 0;

#index of shelly
if INDEXOF(RECEIVEDMSG.TOPIC, ID) = 0

    VAR method := PARSEJSON(RECEIVEDMSG.PAYLOAD, "method", true);
    VAR params := PARSEJSON(RECEIVEDMSG.PAYLOAD, "params", true);

    IF method = "NotifyEvent"
        VAR zero := PARSEJSON(PARSEJSON(params, "events"),"[0]");
        VAR component := PARSEJSON(zero, "component");
        VAR event := PARSEJSON(zero, "event");
    
        if component = "input:2"
            Bp := SWITCH(event, "single_push", Bp := 1, "double_push", Bp :=3,  "long_push", Bp := 2, Bp := 0 );
            #RETURN(Bp);
        END
    elseif method = "NotifyStatus"
        IF( INDEXOF(params, "input:0") > -1, ADDERROR("Device is set as switch"));
    END
END
```

Gomb 4 Nyomógomb Csak olvasható

Nyomógomb az input:3 bemeneten — egyszerű nyomás (1), hosszú nyomás (2), dupla nyomás (3)

numeric JSON-RPC event

Figyelő

```taphome
Bp := 0;

#index of shelly
if INDEXOF(RECEIVEDMSG.TOPIC, ID) = 0

    VAR method := PARSEJSON(RECEIVEDMSG.PAYLOAD, "method", true);
    VAR params := PARSEJSON(RECEIVEDMSG.PAYLOAD, "params", true);

    IF method = "NotifyEvent"
        VAR zero := PARSEJSON(PARSEJSON(params, "events"),"[0]");
        VAR component := PARSEJSON(zero, "component");
        VAR event := PARSEJSON(zero, "event");
    
        if component = "input:3"
            Bp := SWITCH(event, "single_push", Bp := 1, "double_push", Bp :=3,  "long_push", Bp := 2, Bp := 0 );
            #RETURN(Bp);
        END
    elseif method = "NotifyStatus"
        IF( INDEXOF(params, "input:0") > -1, ADDERROR("Device is set as switch"));
    END
END
```

Kapcsoló 1 Reed kontaktus Csak olvasható

Reed-érintkező az input:0 bemeneten — zárt (1), nyitott (0)

boolean JSON-RPC status

Figyelő

```taphome
#index of shelly
if INDEXOF(RECEIVEDMSG.TOPIC, ID) = 0

    VAR method := PARSEJSON(RECEIVEDMSG.PAYLOAD, "method", true);
    VAR params := PARSEJSON(RECEIVEDMSG.PAYLOAD, "params", true);

    IF(method ="NotifyEvent")
    VAR zero := PARSEJSON(PARSEJSON(params, "events"),"[0]");
    VAR component := PARSEJSON(zero, "component");
    
    if component = "input:0"
    ADDERROR("Device is set as button");
    END
    
    IF(method = "NotifyStatus")
    IF( INDEXOF(params, "input:0") > -1)
        VAR input := PARSEJSON(params, "input:0");
        SWITCH(PARSEJSON(input, "state"), true, Rc := 1, Rc := 0);
    END  
    END
END
END
```

Kapcsoló 2 Reed kontaktus Csak olvasható

Reed-érintkező az input:1 bemeneten — zárt (1), nyitott (0)

boolean JSON-RPC status

Figyelő

```taphome
#index of shelly
if INDEXOF(RECEIVEDMSG.TOPIC, ID) = 0

    VAR method := PARSEJSON(RECEIVEDMSG.PAYLOAD, "method", true);
    VAR params := PARSEJSON(RECEIVEDMSG.PAYLOAD, "params", true);

    IF(method ="NotifyEvent")
    VAR zero := PARSEJSON(PARSEJSON(params, "events"),"[0]");
    VAR component := PARSEJSON(zero, "component");
    
    if component = "input:1"
    ADDERROR("Device is set as button");
    END
    
    IF(method = "NotifyStatus")
    IF( INDEXOF(params, "input:1") > -1)
    VAR input := PARSEJSON(params, "input:1");
        SWITCH(PARSEJSON(input, "state"), true, Rc := 1, Rc := 0);
    END  
    END
END
END
```

Kapcsoló 3 Reed kontaktus Csak olvasható

Reed-érintkező az input:2 bemeneten — zárt (1), nyitott (0)

boolean JSON-RPC status

Figyelő

```taphome
#index of shelly
if INDEXOF(RECEIVEDMSG.TOPIC, ID) = 0

    VAR method := PARSEJSON(RECEIVEDMSG.PAYLOAD, "method", true);
    VAR params := PARSEJSON(RECEIVEDMSG.PAYLOAD, "params", true);

    IF(method ="NotifyEvent")
    VAR zero := PARSEJSON(PARSEJSON(params, "events"),"[0]");
    VAR component := PARSEJSON(zero, "component");
    
    if component = "input:2"
    ADDERROR("Device is set as button");
    END
    
    IF(method = "NotifyStatus")
    IF( INDEXOF(params, "input:2") > -1)
    VAR input := PARSEJSON(params, "input:2");
        SWITCH(PARSEJSON(input, "state"), true, Rc := 1, Rc := 0);
    END  
    END
END
END
```

Kapcsoló 4 Reed kontaktus Csak olvasható

Reed-érintkező az input:3 bemeneten — zárt (1), nyitott (0)

boolean JSON-RPC status

Figyelő

```taphome
#index of shelly
if INDEXOF(RECEIVEDMSG.TOPIC, ID) = 0

    VAR method := PARSEJSON(RECEIVEDMSG.PAYLOAD, "method", true);
    VAR params := PARSEJSON(RECEIVEDMSG.PAYLOAD, "params", true);

    IF(method ="NotifyEvent")
    VAR zero := PARSEJSON(PARSEJSON(params, "events"),"[0]");
    VAR component := PARSEJSON(zero, "component");
    
    if component = "input:3"
    ADDERROR("Device is set as button");
    END
    
    IF(method = "NotifyStatus")
    IF( INDEXOF(params, "input:3") > -1)
    VAR input := PARSEJSON(params, "input:3");
        SWITCH(PARSEJSON(input, "state"), true, Rc := 1, Rc := 0);
    END  
    END
END
END
```

**Kapcsolat:** Packet Parser → MQTT • Hostname: `shellyplusi4-{MAC}.local`

Lehetséges fejlesztések (7)

- Triple Push Detection — Input component supports triple\_push events but template only maps single\_push, double\_push, long\_push
- Button Press/Release Events — Raw button-down and button-up events available via MQTT but not captured by template
- Programmatic Input Trigger — Input.Trigger method allows emitting events without physical input — unique to i4/i4 Gen3 devices
- System Status (uptime, RAM, MAC, time) — Available via HTTP /rpc/Sys.GetStatus but template uses MQTT only — no HTTP polling configured
- WiFi Status (SSID, IP, RSSI) — Available via HTTP /rpc/WiFi.GetStatus but template uses MQTT only
- Analog Input Mode — Input component supports analog mode (0-100%) but template does not implement it — Plus i4 hardware supports digital inputs only
- Counter/Pulse Input Mode — Input component supports pulse counting mode but template does not implement it

## Importálási paraméterek

Ezeket az értékeket az XML importálásakor adja meg.

| Az alkalmazás kéri | Alapérték                   |
|--------------------|-----------------------------|
| Mqtt Broker IP-cím | `192.168.0.1`               |
| Mqtt Broker port   | `1883`                      |
| Shelly ID          | `shellyplusi4-xxxxxxxxxxxx` |

## Források

- Shelly Gen2+ RPC API Reference
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen2/) 2026-03-29
- Shelly Gen2+ System Component API
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/Shelly/) 2026-03-29
- Shelly Gen2+ WiFi Component API
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/Wifi/) 2026-03-29
- Shelly Gen2+ MQTT Component API
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/Mqtt/) 2026-03-29
- Home Assistant Shelly Integration
  
  [www.home-assistant.io](https://www.home-assistant.io/integrations/shelly/) 2026-03-29
- Shelly Gen2+ Input Component API
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/Input/) 2026-03-29
- Shelly Plus i4 Knowledge Base
  
  [kb.shelly.cloud](https://kb.shelly.cloud/knowledge-base/shelly-plus-i4) 2026-03-29

## Kapcsolódó dokumentáció

- [MQTT Integration](https://taphome.com/hu/compatibility/mqtt-guide/)
- [Packet Parser (HTTP, TCP, UDP, FTP, MQTT)](https://taphome.com/hu/docs/integration/packet-parser/)
- [Packet parser függvények](https://taphome.com/hu/docs/script/packet-parser/)
- [Elemző függvények](https://taphome.com/hu/docs/script/parsing-functions/)
- [MQTT bróker](https://taphome.com/hu/docs/integration/packet-parser/mqtt-broker/)
- [Listener szkriptek](https://taphome.com/hu/docs/script/listener-scripts/)

