TapHome

Shelly Plug S

Packet Parser → MQTT
Pridal
Posledná aktualizácia: 06. 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

Našli ste problém s touto šablónou zariadenia?

Napíšte nám, čo nefunguje, čo chýba, alebo ako by sa mala šablóna správať. Vaša spätná väzba nám pomáha udržiavať katalóg presný.

Overené TapHomom

Chcete to použiť vo svojom TapHome jadre?

Otvorte túto šablónu v Customer Portali a aplikujte ju na svoj domov, alebo navrhnite zmenu a odošlite ju späť do katalógu.

Otvoriť v portáli