TapHome

Shelly Plug S

Packet Parser → MQTT
Pridal
Posledná aktualizácia: 04. 2026
Shelly Plug S

Shelly Plug S je kompaktná Wi-Fi inteligentná zásuvka so zabudovaným meraním spotreby energie s menovitým zaťažením 12A / 2500W. TapHome komunikuje so zariadením cez MQTT — zásuvka sa pripája k brokeru a publikuje stav relé, spotrebu energie, počítadlo energie a údaje o vnútornej teplote.

Šablóna obsahuje dve zariadenia: Elektromer na monitorovanie energie a Spínač na ovládanie relé. Servisný atribút na úrovni modulu hlási vnútornú teplotu zariadenia.

Konfigurácia

Device ID

Každý Shelly Plug S má jedinečné MQTT Device ID vo formáte shellyplug-s-<MAC6>, kde <MAC6> je posledných 6 znakov MAC adresy v hexadecimálnom formáte s malými písmenami (napr. shellyplug-s-112233).

Device ID nájdete:

  • Vo webovom rozhraní Shelly: SettingsDevice InfoDevice ID (použite prvý reťazec znakov, nie v zátvorkách)
  • Cez API: GET http://<device-ip>/settings → pole mqtt.id
Povolenie MQTT

Povolenie MQTT na Shelly Plug S:

  1. Otvorte webové rozhranie zariadenia v prehliadači (zadajte IP adresu zariadenia)
  2. Prejdite na Internet and SecurityAdvanced - Developer Settings
  3. Zaškrtnite „Enable action execution via MQTT"
  4. Do poľa „Server" zadajte {IP MQTT brokera}:{port} (predvolený port 1883)
  5. Stlačte SAVE
Nastavenie šablóny

Po importe šablóny v TapHome:

  1. Otvorte modul Shelly Plug S MQTT
  2. Nastavte MQTT Broker IP a Port (predvolene 1883)
  3. Nastavte premennú deviceID na Device ID zariadenia Shelly Plug S (napr. 112233 — len posledných 6 hexadecimálnych znakov MAC adresy)

Modul sa prihlási na odber shellies/# a listener skripty filtrujú správy podľa nakonfigurovaného prefixu Device ID shellyplug-s-{deviceID}.

Schopnosti zariadenia

Monitorovanie energie

Zariadenie Elektromer číta dve hodnoty zo zásuvky:

  • Celková spotreba — kumulatívna energia z topicu relay/0/energy. Zariadenie hlási energiu vo watt-minútach; šablóna konvertuje na kWh delením 60000.
  • Okamžitý príkon — aktuálny odber z topicu relay/0/power. Zariadenie hlási príkon vo wattoch; šablóna konvertuje na kW delením 1000.

Obe hodnoty sa aktualizujú podľa intervalu MQTT hlásení (predvolene 30 sekúnd, nastaviteľné vo webovom rozhraní Shelly cez mqtt_update_period).

Počítadlo energie sa resetuje pri reštarte zariadenia. Pre trvalé sledovanie energie použite zabudované logovanie energie v TapHome, ktoré ukladá kumulatívne hodnoty nezávisle od počítadla zariadenia.

Ovládanie relé

Zariadenie Spínač ovláda relé zásuvky:

  • Čítanie stavu — počúva topic shellies/shellyplug-s-{deviceID}/relay/0 a mapuje on → 1, off → 0
  • Zápis stavu — publikuje na topic shellies/shellyplug-s-{deviceID}/relay/0/command hodnotu on alebo off

Relé podporuje záťaž do 2500W / 12A.

Monitorovanie teploty

Servisný atribút na úrovni modulu hlási vnútornú teplotu zariadenia v °C, čítanú z topicu shellies/shellyplug-s-{deviceID}/temperature. Ide o teplotu elektroniky zásuvky, nie o teplotu okolitého prostredia.

Ďalšie schopnosti

Shelly Plug S tiež publikuje stav online/offline cez MQTT LWT topic, upozornenia na prehrievanie (keď zariadenie prekročí bezpečnú prevádzkovú teplotu), čitateľnú klasifikáciu stavu teploty (Normal/High/Very High) a udalosti tlačidla (krátke stlačenie, dlhé stlačenie, dvojité stlačenie). Tieto schopnosti môžu byť pridané v budúcej aktualizácii šablóny.

Riešenie problémov

Žiadne dáta zo zásuvky
  1. Overte, že Shelly Plug S je pripojený k Wi-Fi a MQTT je povolené v nastaveniach zariadenia (Internet and SecurityAdvanced - Developer Settings)
  2. Skontrolujte, že premenná deviceID presne zodpovedá Device ID (napr. 112233)
  3. Použite MQTT klienta (napr. MQTT Explorer) na odber shellies/# a overte, či zásuvka publikuje správy
Hodnoty príkonu ukazujú nulu
  1. Potvrďte, že záťaž je pripojená a relé je zapnuté
  2. Skontrolujte topic relay/0/power cez MQTT klienta — hodnota by mala byť nenulová, keď záťaž odoberá energiu
  3. Overte, že zariadenie Elektromer zobrazuje hodnoty v TapHome — celková spotreba v kWh, príkon v kW
Relé nereaguje na príkazy
  1. Overte, že MQTT je povolené a adresa brokera je správna vo webovom rozhraní Shelly
  2. Skontrolujte, že TapHome sa vie pripojiť k MQTT brokeru (správna IP a port v nastaveniach modulu)
  3. Otestujte publikovaním on alebo off na topic shellies/shellyplug-s-{deviceID}/relay/0/command cez MQTT klienta

Zariadenia Shelly Gen1 nepodporujú MQTT cez TLS. Komunikácia medzi zásuvkou a MQTT brokerom je nešifrovaná (plain MQTT, port 1883). Zabezpečte, aby MQTT broker bol na dôveryhodnej lokálnej sieti.

Ako nainštalovať v TapHome

Predpoklady

  • Zariadenie Shelly pripojené k Wi-Fi (ak ešte nie, pozrite návod na HTTP pripojenie)
  • MQTT broker bežiaci vo vašej lokálnej sieti (napr. Mosquitto, Home Assistant alebo vstavaný broker TapHome)
  • TapHome CCU v rovnakej sieti ako broker

Na zariadeniach Gen1 povolenie MQTT vypne Shelly Cloud. Oboje nemôže bežať súčasne. Na zariadeniach Gen2/Plus toto obmedzenie neplatí.

Krok 1 — Povoľte MQTT na zariadení Shelly

Zariadenia Gen1 (Shelly 1, 1PM, 2.5, EM, 3EM, Plug S, RGBW2, Dimmer, TRV…)

  1. Otvorte webové rozhranie Shelly: http://<device-ip>/
  2. Prejdite na Internet & SecurityAdvanced — MQTT
  3. Povoľte MQTT
  4. Nastavte MQTT Server: <broker-ip>:<port> (napr. 192.168.1.10:1883)
  5. Voliteľne nastavte MQTT User a MQTT Password, ak váš broker vyžaduje autentifikáciu
  6. Kliknite na Save — zariadenie sa reštartuje a pripojí k brokeru

Zariadenia Gen2 / Plus (Shelly Plus 1, Plus 1PM, Plus 2PM, Plus Plug S, Plus H&T, Pro 3EM…)

  1. Otvorte webové rozhranie Shelly: http://<device-ip>/
  2. Prejdite na SettingsMQTT
  3. Povoľte MQTT
  4. Nastavte Server: <broker-ip>:<port> (napr. 192.168.1.10:1883)
  5. Client ID je predvyplnené ID zariadenia (napr. shellyplus1pm-AABBCCDDEE) — ponechajte tak, pokiaľ nemáte konkrétny dôvod na zmenu
  6. Kliknite na Save a reštartujte zariadenie

Na overenie funkčnosti MQTT použite MQTT klienta (napr. MQTT Explorer) a prihláste sa na odber shellies/# (Gen1) alebo <device-id>/# (Gen2). Mali by ste vidieť stavové správy zo zariadenia.

Krok 2 — Zistite Device ID / MQTT Client ID

Niektoré šablóny vyžadujú parameter Device ID alebo MQTT Client ID. Ide o jedinečný identifikátor používaný v MQTT topicoch.

  • Gen1: nachádza sa na štítku ako MAC adresa (napr. AABBCCDDEE). Device ID = shelly<model>-<mac>, napr. shelly1pm-AABBCCDDEE
  • Gen2/Plus: nachádza sa vo webovom rozhraní Shelly v časti SettingsDevice InfoDevice ID, alebo na štítku zariadenia

Krok 3 — Konfigurácia v TapHome

  1. V TapHome pridajte nový modul Packet Parser (MQTT)
  2. IP Address: zadajte IP adresu MQTT brokera (napr. 192.168.1.10)
  3. Port: 1883 (predvolený; pre TLS použite 8883)
  4. Device ID / MQTT Client ID: zadajte hodnotu z kroku 2 (ak to šablóna vyžaduje)
  5. Importujte šablónu — TapHome sa automaticky prihlási na odber topicov zariadenia

Dostupné zariadenia

Shelly Plug S MQTT Modul
Servisné atribúty
TeplotaVnútorná teplota zariadenia — nie teplota okolitého prostredia
Vlastné premenné
deviceID (string)MQTT Device ID zariadenia Shelly Plug S — posledných 6 znakov MAC adresy v hexadecimálnom formáte s malými písmenami (nájdete vo webovom rozhraní Shelly → Settings → Device Info)

Shelly plug S MQTT

Listener
VAR whatT := "shellies/shellyplug-s-"+deviceID+"/temperature";
IF (whatT = RECEIVEDMSG.TOPIC)
 temperatureC := TOSTRING(RECEIVEDMSG.PAYLOAD);
END
Servisné atribúty
Temperature [°C ]
temperatureC
Elektromer Elektromer Len na čítanie

Meranie spotreby energie — okamžitý príkon (kW) a kumulatívna energia (kWh)

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

Elektromer

Čítanie celkovej spotreby
# 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");
Čítanie odberu
# 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");
Listener
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
Spínač Prepínač
string on→1, off→0 (read); 1→on, 0→off (write)
Hodnoty / Stavy: ON · OFF

Spínač

Čítanie stavu prepínača
# 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");
Zápis stavu prepínača
# 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());
Listener
VAR whatSt := "shellies/shellyplug-s-"+deviceID+"/relay/0";
IF (whatSt = RECEIVEDMSG.TOPIC)
 IF (TOSTRING(RECEIVEDMSG.PAYLOAD) = "on")
  St := 1;
 ELSE
  St := 0;
 END
END
Pripojenie: Packet Parser → MQTT
Možné vylepšenia (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.

Zdroje