TapHome

Shelly Plug S

Packet Parser → MQTT
Beküldő
Utoljára frissítve: 04. 2026
Shelly Plug S

A Shelly Plug S egy kompakt Wi-Fi okos konnektor beépített energiaméréssel, 12A / 2500W névleges terheléssel. A TapHome MQTT-n keresztül kommunikál az eszközzel — a konnektor csatlakozik egy brokerhez, és közzéteszi a relé állapotát, az energiafogyasztást, az energiaszámlálót és a belső hőmérsékleti adatokat.

A sablon két eszközt tartalmaz: egy Villamos mérőt az energiafigyeléshez és egy Kapcsolót a relévezérléshez. Egy modulszintű szervizattribútum jelenti a belső eszközhőmérsékletet.

Konfiguráció

Device ID

Minden Shelly Plug S egyedi MQTT Device ID-val rendelkezik shellyplug-s-<MAC6> formátumban, ahol a <MAC6> a MAC-cím utolsó 6 karaktere kisbetűs hexadecimális formátumban (pl. shellyplug-s-112233).

A Device ID megtalálható:

  • A Shelly webes felületen: SettingsDevice InfoDevice ID (az első karakterláncot használd, ne a zárójelben lévőt)
  • API-n keresztül: GET http://<device-ip>/settingsmqtt.id mező
MQTT engedélyezése

Az MQTT engedélyezése a Shelly Plug S-en:

  1. Nyisd meg az eszköz webes felületét a böngészőben (navigálj az eszköz IP-címére)
  2. Menj az Internet and SecurityAdvanced - Developer Settings menüpontra
  3. Jelöld be az „Enable action execution via MQTT" opciót
  4. A „Server" mezőbe írd be: {MQTT broker IP}:{port} (alapértelmezett port: 1883)
  5. Nyomd meg a SAVE gombot
Sablon beállítása

A sablon TapHome-ba történő importálása után:

  1. Nyisd meg a Shelly Plug S MQTT modult
  2. Állítsd be az MQTT Broker IP-t és a Port-ot (alapértelmezett 1883)
  3. Állítsd be a deviceID változót a Shelly Plug S Device ID-jára (pl. 112233 — csak a MAC-cím utolsó 6 hexadecimális karaktere)

A modul feliratkozik a shellies/# topicra, és a listener szkriptek a konfigurált Device ID prefix (shellyplug-s-{deviceID}) alapján szűrik az üzeneteket.

Eszközképességek

Energiafigyelés

A Villamos mérő eszköz két értéket olvas a konnektorból:

  • Összfogyasztás — kumulatív energia a relay/0/energy topicból. Az eszköz wattperc-ben jelenti az energiát; a sablon kWh-ra konvertálja 60000-rel való osztással.
  • Pillanatnyi teljesítmény — aktuális teljesítményfelvétel a relay/0/power topicból. Az eszköz wattban jelenti a teljesítményt; a sablon kW-ra konvertálja 1000-rel való osztással.

Mindkét érték az MQTT jelentési intervallum szerint frissül (alapértelmezett 30 másodperc, a Shelly webes felületen konfigurálható a mqtt_update_period segítségével).

Az energiaszámláló az eszköz újraindításakor nullázódik. Tartós energiakövetéshez használd a TapHome beépített energianaplózását, amely az eszközszámlálótól függetlenül tárolja a kumulatív értékeket.

Relévezérlés

A Kapcsoló eszköz vezérli a konnektor reléjét:

  • Állapot olvasása — figyeli a shellies/shellyplug-s-{deviceID}/relay/0 topicot és az on → 1, off → 0 leképezést alkalmazza
  • Állapot írása — közzétesz a shellies/shellyplug-s-{deviceID}/relay/0/command topicra on vagy off értékkel

A relé legfeljebb 2500W / 12A terhelést támogat.

Hőmérsékletfigyelés

Egy modulszintű szervizattribútum jelenti a belső eszközhőmérsékletet °C-ban, a shellies/shellyplug-s-{deviceID}/temperature topicból olvasva. Ez a konnektor elektronikájának hőmérséklete, nem a szobahőmérséklet.

További képességek

A Shelly Plug S az MQTT LWT topicon keresztül online/offline állapotot is közzétesz, túlmelegedési figyelmeztetéseket (ha az eszköz meghaladja a biztonságos üzemi hőmérsékletet), olvasható hőmérsékletállapot-besorolást (Normal/High/Very High) és gombnyomás-eseményeket (rövid, hosszú, dupla nyomás). Ezek a képességek egy jövőbeli sablonfrissítésben hozzáadhatók.

Hibaelhárítás

Nincs adat a konnektorból
  1. Ellenőrizd, hogy a Shelly Plug S csatlakozik a Wi-Fi-hez és az MQTT engedélyezve van az eszközbeállításokban (Internet and SecurityAdvanced - Developer Settings)
  2. Ellenőrizd, hogy a deviceID változó pontosan megegyezik a Device ID-val (pl. 112233)
  3. Használj MQTT klienst (pl. MQTT Explorer) a shellies/# feliratkozáshoz és ellenőrizd, hogy a konnektor küld-e üzeneteket
A teljesítményértékek nullát mutatnak
  1. Győződj meg róla, hogy a terhelés csatlakoztatva van és a relé be van kapcsolva
  2. Ellenőrizd a relay/0/power topicot egy MQTT klienssel — az értéknek nullánál nagyobbnak kell lennie, ha a terhelés áramot vesz fel
  3. Ellenőrizd, hogy a Villamos mérő eszköz mutat-e értékeket a TapHome-ban — összfogyasztás kWh-ban, teljesítmény kW-ban
A relé nem reagál a parancsokra
  1. Ellenőrizd, hogy az MQTT engedélyezve van és a broker címe helyes a Shelly webes felületen
  2. Ellenőrizd, hogy a TapHome eléri-e az MQTT brokert (helyes IP és port a modulbeállításokban)
  3. Teszteld on vagy off közzétételével a shellies/shellyplug-s-{deviceID}/relay/0/command topicra egy MQTT klienssel

A Shelly Gen1 eszközök nem támogatják az MQTT-t TLS-en keresztül. A konnektor és az MQTT broker közötti kommunikáció titkosítatlan (plain MQTT, 1883-as port). Győződj meg róla, hogy az MQTT broker megbízható helyi hálózaton üzemel.

Telepítés a TapHome-ban

Előfeltételek

  • Shelly eszköz csatlakoztatva a Wi-Fi-hez (ha még nem, lásd a HTTP kapcsolódási útmutatót)
  • 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

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 & SecurityAdvanced — 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 SettingsMQTT 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

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 SettingsDevice InfoDevice 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: adja meg az MQTT broker IP-címét (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

Shelly Plug S MQTT Modul
Szerviz attribútumok
HőmérsékletBelső eszközhőmérséklet — nem a szobahőmérséklet
Egyéni változók
deviceID (string)A Shelly Plug S MQTT Device ID-ja — a MAC-cím utolsó 6 karaktere kisbetűs hexadecimális formátumban (a Shelly webes felületen található → Settings → Device Info)

Shelly plug S MQTT

Figyelő
VAR whatT := "shellies/shellyplug-s-"+deviceID+"/temperature";
IF (whatT = RECEIVEDMSG.TOPIC)
 temperatureC := TOSTRING(RECEIVEDMSG.PAYLOAD);
END
Szerviz attribútumok
Temperature [°C ]
temperatureC
Villamos mérő Villanyóra Csak olvasható

Energiafogyasztás mérése — pillanatnyi teljesítmény (kW) és kumulatív energia (kWh)

numeric Egység: kWh (total), kW (demand) energy: Watt-minutes /60000 = kWh; demand: Watts /1000 = kW

Villamos mérő

Összes fogyasztás olvasása
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/getValue");
# IF response.IsSuccess
#  VAR content := response.Content;
#  VAR responseHeaders := response.Headers;
#  RETURN(PARSEXML(content, "//element1/value1"));
# ELSE
#  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
#  RETURN(NaN);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/getValue", "GET", "some data", "header1:value1", "header2:value2", ...);
# OR
# VAR request := HTTPREQUEST("/example/getValue", "POST", "some data");
# request.headers := { "header1:value1", "header2:value2", ...};
# request.method := "GET";
# request.data := null;
# VAR response := SENDHTTPREQUEST(request);
#
#
# Send TCP, UDP data:
# VAR data1 := BYTECOLLECTION("0a bb ea df 01");
# SENDDATA(data1);
# VAR data2 := "{\"name\":\"John\", \"age\":32}";
# SENDDATA(data2);
# VAR data3 := TOBYTES("{\"name\":\"John\", \"age\":32}", "iso-8859-1");
# SENDDATA(data3);
# Process received TCP or UDP data and set device values in the Listener script
#
#
# Download data from FTP:
# FTPDOWNLOAD("filePath");
Igény olvasása
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/getValue");
# IF response.IsSuccess
#  VAR content := response.Content;
#  VAR responseHeaders := response.Headers;
#  RETURN(PARSEXML(content, "//element1/value1"));
# ELSE
#  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
#  RETURN(NaN);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/getValue", "GET", "some data", "header1:value1", "header2:value2", ...);
# OR
# VAR request := HTTPREQUEST("/example/getValue", "POST", "some data");
# request.headers := { "header1:value1", "header2:value2", ...};
# request.method := "GET";
# request.data := null;
# VAR response := SENDHTTPREQUEST(request);
#
#
# Send TCP, UDP data:
# VAR data1 := BYTECOLLECTION("0a bb ea df 01");
# SENDDATA(data1);
# VAR data2 := "{\"name\":\"John\", \"age\":32}";
# SENDDATA(data2);
# VAR data3 := TOBYTES("{\"name\":\"John\", \"age\":32}", "iso-8859-1");
# SENDDATA(data3);
# Process received TCP or UDP data and set device values in the Listener script
#
#
# Download data from FTP:
# FTPDOWNLOAD("filePath");
Figyelő
VAR whatTo := "shellies/shellyplug-s-"+deviceID+"/relay/0/energy";
IF (whatTo = RECEIVEDMSG.TOPIC)
 To := TODOUBLE(TOSTRING(RECEIVEDMSG.PAYLOAD))/60000;
END
VAR whatEd := "shellies/shellyplug-s-"+deviceID+"/relay/0/power";
IF (whatEd = RECEIVEDMSG.TOPIC)
 Ed := TODOUBLE(TOSTRING(RECEIVEDMSG.PAYLOAD))/1000;
END
Kapcsoló Kapcsoló
string on→1, off→0 (read); 1→on, 0→off (write)
Értékek / Állapotok: ON · OFF

Kapcsoló

Kapcsoló állapot olvasása
# Simple HTTP Request:
#VAR response := SENDHTTPREQUEST("/example/getValue");
#IF response.IsSuccess
# VAR content := response.Content;
# VAR responseHeaders := response.Headers;
# RETURN(PARSEXML(content, "//element1/value1"));
#ELSE
# ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
# RETURN(NaN);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/getValue", "GET", "some data", "header1:value1", "header2:value2", ...);
# OR
# VAR request := HTTPREQUEST("/example/getValue", "POST", "some data");
# request.headers := { "header1:value1", "header2:value2", ...};
# request.method := "GET";
# request.data := null;
# VAR response := SENDHTTPREQUEST(request);
#
#
# Send TCP, UDP data:
# VAR data1 := BYTECOLLECTION("0a bb ea df 01");
# SENDDATA(data1);
# VAR data2 := "{\"name\":\"John\", \"age\":32}";
# SENDDATA(data2);
# VAR data3 := TOBYTES("{\"name\":\"John\", \"age\":32}", "iso-8859-1");
# SENDDATA(data3);
# Process received TCP or UDP data and set device values in the Listener script
#
#
# Download data from FTP:
# FTPDOWNLOAD("filePath");
Kapcsoló állapot írása
# Simple HTTP Request:
MQTTPUBLISH("shellies/shellyplug-s-"+deviceID+ "/relay/0/command",if(St = 1, "on","off"));
# IF response.IsSuccess = false
#  ADDERROR(response.StatusCode);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/setValue", "GET", "value=" + St, "header1:value1", "header2:value2", ...);\r
# Or VAR request := HTTPREQUEST("/example/setValue");
# request.Method := "PUT";
# VAR response := SENDHTTPREQUEST(request);
#r
#
# Send TCP, UDP data:
# VAR data1 := "{\"name\":\"John\", \"age\":" + St + "}";
# SENDDATA(data1);
# VAR data2 := TOBYTES("{\"name\":\"John\", \"age\":" + St + "}", "iso-8859-1");
# SENDDATA(data2);
# You can process received TCP or UDP data in the Listener script
#
#
# Upload data to FTP:
# FTPUPLOAD("filePath", "somedata=" + St, "write"); # use "append" mode to append data to existing file






#MQTTPUBLISH(topic + "/relay/0/command",if());
Figyelő
VAR whatSt := "shellies/shellyplug-s-"+deviceID+"/relay/0";
IF (whatSt = RECEIVEDMSG.TOPIC)
 IF (TOSTRING(RECEIVEDMSG.PAYLOAD) = "on")
  St := 1;
 ELSE
  St := 0;
 END
END
Kapcsolat: Packet Parser → MQTT
Lehetséges fejlesztések (6)
  • Connection Status — LWT topic — true on connect, false on disconnect. Could detect offline device.
  • Overtemperature Alert — 1 = overheated, 0 = normal. Could trigger safety alarm when device exceeds safe operating temperature.
  • Temperature Status — String: Normal, High, or Very High. Human-readable temperature classification.
  • Button Input State — 0 or 1 — physical button state on the device.
  • Button Input Event — JSON payload with event type (S=short, L=long, SS=double, SSS=triple) and event counter.
  • Overpower State — Relay topic can report 'overpower' payload when load exceeds rating. Not parsed in listener script.

Források