TapHome

Shelly Plug S

Packet Parser → MQTT
Přidal
Poslední aktualizace: 06. 2026
Shelly Plug S

Shelly Plug S je kompaktní Wi-Fi chytrá zásuvka s vestavěným měřením spotřeby energie s jmenovitým zatížením 12A / 2500W. TapHome komunikuje se zařízením přes MQTT — zásuvka se připojuje k brokeru a publikuje stav relé, spotřebu energie, počítadlo energie a údaje o vnitřní teplotě.

Šablona obsahuje dvě zařízení: Elektroměr pro monitorování energie a Spínač pro ovládání relé. Servisní atribut na úrovni modulu hlásí vnitřní teplotu zařízení.

Konfigurace

Device ID

Každý Shelly Plug S má jedinečné MQTT Device ID ve formátu shellyplug-s-<MAC6>, kde <MAC6> je posledních 6 znaků MAC adresy v hexadecimálním formátu s malými písmeny (např. shellyplug-s-112233).

Device ID najdete:

  • Ve webovém rozhraní Shelly: SettingsDevice InfoDevice ID (použijte první řetězec znaků, ne v závorkách)
  • Přes API: GET http://<device-ip>/settings → pole mqtt.id
Povolení MQTT

Povolení MQTT na Shelly Plug S:

  1. Otevřete webové rozhraní zařízení v prohlížeči (zadejte IP adresu zařízení)
  2. Přejděte na Internet and SecurityAdvanced - Developer Settings
  3. Zaškrtněte „Enable action execution via MQTT"
  4. Do pole „Server" zadejte {IP MQTT brokeru}:{port} (výchozí port 1883)
  5. Stiskněte SAVE
Nastavení šablony

Po importu šablony v TapHome:

  1. Otevřete modul Shelly Plug S MQTT
  2. Nastavte MQTT Broker IP a Port (výchozí 1883)
  3. Nastavte proměnnou deviceID na Device ID zařízení Shelly Plug S (např. 112233 — jen posledních 6 hexadecimálních znaků MAC adresy)

Modul se přihlásí k odběru shellies/# a listener skripty filtrují zprávy podle nakonfigurovaného prefixu Device ID shellyplug-s-{deviceID}.

Schopnosti zařízení

Monitorování energie

Zařízení Elektroměr čte dvě hodnoty ze zásuvky:

  • Celková spotřeba — kumulativní energie z topicu relay/0/energy. Zařízení hlásí energii ve watt-minutách; šablona konvertuje na kWh dělením 60000.
  • Okamžitý příkon — aktuální odběr z topicu relay/0/power. Zařízení hlásí příkon ve wattech; šablona konvertuje na kW dělením 1000.

Obě hodnoty se aktualizují podle intervalu MQTT hlášení (výchozí 30 sekund, nastavitelné ve webovém rozhraní Shelly přes mqtt_update_period).

Počítadlo energie se resetuje při restartu zařízení. Pro trvalé sledování energie použijte vestavěné logování energie v TapHome, které ukládá kumulativní hodnoty nezávisle na počítadle zařízení.

Ovládání relé

Zařízení Spínač ovládá relé zásuvky:

  • Čtení stavu — naslouchá topicu 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 nebo off

Relé podporuje zátěž do 2500W / 12A.

Monitorování teploty

Servisní atribut na úrovni modulu hlásí vnitřní teplotu zařízení v °C, čtenou z topicu shellies/shellyplug-s-{deviceID}/temperature. Jde o teplotu elektroniky zásuvky, ne o teplotu okolního prostředí.

Další schopnosti

Shelly Plug S také publikuje stav online/offline přes MQTT LWT topic, upozornění na přehřívání (když zařízení překročí bezpečnou provozní teplotu), čitelnou klasifikaci stavu teploty (Normal/High/Very High) a události tlačítka (krátké stisknutí, dlouhé stisknutí, dvojité stisknutí). Tyto schopnosti mohou být přidány v budoucí aktualizaci šablony.

Řešení problémů

Žádná data ze zásuvky
  1. Ověřte, že Shelly Plug S je připojen k Wi-Fi a MQTT je povoleno v nastavení zařízení (Internet and SecurityAdvanced - Developer Settings)
  2. Zkontrolujte, že proměnná deviceID přesně odpovídá Device ID (např. 112233)
  3. Použijte MQTT klienta (např. MQTT Explorer) pro odběr shellies/# a ověřte, zda zásuvka publikuje zprávy
Hodnoty příkonu ukazují nulu
  1. Potvrďte, že zátěž je připojena a relé je zapnuto
  2. Zkontrolujte topic relay/0/power přes MQTT klienta — hodnota by měla být nenulová, když zátěž odebírá energii
  3. Ověřte, že zařízení Elektroměr zobrazuje hodnoty v TapHome — celková spotřeba v kWh, příkon v kW
Relé nereaguje na příkazy
  1. Ověřte, že MQTT je povoleno a adresa brokeru je správná ve webovém rozhraní Shelly
  2. Zkontrolujte, že TapHome se může připojit k MQTT brokeru (správná IP a port v nastavení modulu)
  3. Otestujte publikováním on nebo off na topic shellies/shellyplug-s-{deviceID}/relay/0/command přes MQTT klienta

Zařízení Shelly Gen1 nepodporují MQTT přes TLS. Komunikace mezi zásuvkou a MQTT brokerem je nešifrovaná (plain MQTT, port 1883). Zajistěte, aby MQTT broker byl v důvěryhodné lokální síti.

Jak nainstalovat v TapHome

Předpoklady

  • Zařízení Shelly připojené k Wi-Fi (pokud ještě ne, podívejte se na návod na HTTP připojení)
  • MQTT broker běžící ve vaší lokální síti (např. Mosquitto, Home Assistant nebo vestavěný broker TapHome)
  • TapHome CCU ve stejné síti jako broker

Na zařízeních Gen1 povolení MQTT vypne Shelly Cloud. Obojí nemůže běžet současně. Na zařízeních Gen2/Plus toto omezení neplatí.

Krok 1 — Povolte MQTT na zařízení Shelly

Zařízení Gen1 (Shelly 1, 1PM, 2.5, EM, 3EM, Plug S, RGBW2, Dimmer, TRV…)

  1. Otevřete webové rozhraní Shelly: http://<device-ip>/
  2. Přejděte na Internet & SecurityAdvanced — MQTT
  3. Povolte MQTT
  4. Nastavte MQTT Server: <broker-ip>:<port> (např. 192.168.1.10:1883)
  5. Volitelně nastavte MQTT User a MQTT Password, pokud váš broker vyžaduje autentifikaci
  6. Klikněte na Save — zařízení se restartuje a připojí k brokeru

Zařízení Gen2 / Plus (Shelly Plus 1, Plus 1PM, Plus 2PM, Plus Plug S, Plus H&T, Pro 3EM…)

  1. Otevřete webové rozhraní Shelly: http://<device-ip>/
  2. Přejděte na SettingsMQTT
  3. Povolte MQTT
  4. Nastavte Server: <broker-ip>:<port> (např. 192.168.1.10:1883)
  5. Client ID je předvyplněné ID zařízení (např. shellyplus1pm-AABBCCDDEE) — ponechte tak, pokud nemáte konkrétní důvod ke změně
  6. Klikněte na Save a restartujte zařízení

Pro ověření funkčnosti MQTT použijte MQTT klienta (např. MQTT Explorer) a přihlaste se k odběru shellies/# (Gen1) nebo <device-id>/# (Gen2). Měli byste vidět stavové zprávy ze zařízení.

Krok 2 — Zjistěte Device ID / MQTT Client ID

Některé šablony vyžadují parametr Device ID nebo MQTT Client ID. Jde o jedinečný identifikátor používaný v MQTT topicích.

  • Gen1: nachází se na štítku jako MAC adresa (např. AABBCCDDEE). Device ID = shelly<model>-<mac>, např. shelly1pm-AABBCCDDEE
  • Gen2/Plus: nachází se ve webovém rozhraní Shelly v části SettingsDevice InfoDevice ID, nebo na štítku zařízení

Krok 3 — Konfigurace v TapHome

  1. V TapHome přidejte nový modul Packet Parser (MQTT)
  2. IP Address: zadejte IP adresu MQTT brokeru (např. 192.168.1.10)
  3. Port: 1883 (výchozí; pro TLS použijte 8883)
  4. Device ID / MQTT Client ID: zadejte hodnotu z kroku 2 (pokud to šablona vyžaduje)
  5. Importujte šablonu — TapHome se automaticky přihlásí k odběru topiců zařízení

Dostupná zařízení

Shelly Plug S MQTT Modul
Servisní atributy
TeplotaVnitřní teplota zařízení — ne teplota okolního prostředí
Vlastní proměnné
deviceID (string)MQTT Device ID zařízení Shelly Plug S — posledních 6 znaků MAC adresy v hexadecimálním formátu s malými písmeny (najdete ve webovém 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í atributy
Temperature [°C ]
temperatureC
Elektroměr Elektroměr Pouze ke čtení

Měření spotřeby energie — okamžitý příkon (kW) a kumulativní energie (kWh)

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

Elektroměr

Čtení celkové spotřeby
# 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");
Čtení odběru
# 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č Přepínač
string on→1, off→0 (read); 1→on, 0→off (write)
Hodnoty / Stavy: ON · OFF

Spínač

Čtení stavu přepínače
# 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 přepínače
# 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
Připojení: Packet Parser → MQTT
Možná vylepšení (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 jste problém s touto šablonou zařízení?

Napište nám, co nefunguje, co chybí, nebo jak by se měla šablona chovat. Vaše zpětná vazba nám pomáhá udržet katalog přesný.

Ověřeno TapHome

Chcete to použít ve svém TapHome jádře?

Otevřete tuto šablonu v zákaznickém portálu a použijte ji ve svém domově, nebo navrhněte úpravu a odešlete ji zpět do katalogu.

Otevřít v portálu