TapHome

Shelly Plug S

Packet Parser → MQTT
Autor
Posljednje ažuriranje: 03. 2026
Shelly Plug S

Shelly Plug S je kompaktna pametna Wi-Fi utičnica s ugrađenim praćenjem energije, nazivnih vrijednosti 12 A / 2500 W. TapHome s uređajem komunicira preko MQTT-a: utičnica se spaja na broker i objavljuje stanje releja, potrošnju snage, brojač energije i unutarnju temperaturu.

Predložak daje dva uređaja: brojilo energije za praćenje energije i sklopku za upravljanje relejem. Servisni atribut na razini modula prikazuje unutarnju temperaturu uređaja.

Konfiguracija

Device ID

Svaki Shelly Plug S ima jedinstveni MQTT Device ID u obliku shellyplug-s-<MAC6>, gdje je <MAC6> zadnjih 6 znakova MAC adrese malim slovima u heksadecimalnom zapisu (npr. shellyplug-s-112233).

Device ID možete pronaći:

  • U web-sučelju Shelly: Settings → Device Info → Device ID (koristite prvi niz znakova, ne onaj u zagradama)
  • Preko API-ja: GET http://<device-ip>/settings → polje mqtt.id
Omogućivanje MQTT-a

Da biste na utičnici Shelly Plug S omogućili MQTT:

  1. U pregledniku otvorite web-sučelje uređaja (idite na IP adresu uređaja)
  2. Idite na Internet and Security → Advanced - Developer Settings
  3. Označite „Enable action execution via MQTT”
  4. U polje „Server” upišite {MQTT broker IP}:{port} (zadani port 1883)
  5. Pritisnite SAVE
Postavljanje predloška

Nakon uvoza predloška u TapHome:

  1. Otvorite modul Shelly Plug S MQTT
  2. Postavite MQTT Broker IP i Port (zadano 1883)
  3. Korisničku varijablu deviceID postavite na Device ID utičnice Shelly Plug S (npr. 112233, samo zadnjih 6 heksadecimalnih znakova MAC adrese)

Modul se pretplaćuje na shellies/#, a skripte za primanje poruka filtriraju poruke prema postavljenom prefiksu Device ID-a shellyplug-s-{deviceID}.

Mogućnosti uređaja

Praćenje energije

Uređaj brojila energije čita dvije vrijednosti iz utičnice:

  • Ukupna potrošnja — ukupna energija iz teme relay/0/energy. Uređaj javlja energiju u vat-minutama, a predložak je pretvara u kWh dijeljenjem sa 60000.
  • Trenutačna snaga — trenutačna potrošnja snage iz teme relay/0/power. Uređaj javlja snagu u vatima, a predložak je pretvara u kW dijeljenjem s 1000.

Obje se vrijednosti ažuriraju prema intervalu slanja MQTT poruka (zadano 30 sekundi, može se podesiti u web-sučelju Shelly preko mqtt_update_period).

Brojač energije poništava se pri ponovnom pokretanju uređaja. Za trajno praćenje energije koristite ugrađeno bilježenje energije u sustavu TapHome, koje ukupne vrijednosti sprema neovisno o brojaču uređaja.

Upravljanje relejem

Uređaj vrste „Sklopka” upravlja relejem utičnice:

  • Čitanje stanja — prima poruke iz shellies/shellyplug-s-{deviceID}/relay/0 i pretvara on → 1, off → 0
  • Upis stanja — objavljuje on ili off na shellies/shellyplug-s-{deviceID}/relay/0/command

Relej podržava trošila do 2500 W / 12 A.

Praćenje temperature

Servisni atribut na razini modula prikazuje unutarnju temperaturu uređaja u °C, koja se čita iz teme shellies/shellyplug-s-{deviceID}/temperature. To je temperatura elektronike utičnice, a ne temperatura zraka u prostoriji.

Dodatne mogućnosti

Shelly Plug S objavljuje i stanje online/offline preko MQTT teme LWT, upozorenja o pregrijavanju (kada uređaj prijeđe sigurnu radnu temperaturu), opisnu oznaku stanja temperature (Normal/High/Very High) i događaje tipke (kratki i dugi pritisak te dvostruki klik). Te se mogućnosti mogu dodati u budućem ažuriranju predloška.

Rješavanje problema

Utičnica ne šalje podatke
  1. Provjerite je li Shelly Plug S spojen na Wi-Fi i je li MQTT omogućen u postavkama uređaja (Internet and Security → Advanced - Developer Settings)
  2. Provjerite odgovara li korisnička varijabla deviceID točno Device ID-ju (npr. 112233)
  3. MQTT klijentom (npr. MQTT Explorer) pretplatite se na shellies/# i provjerite objavljuje li utičnica poruke
Očitanje snage je nula
  1. Provjerite je li spojeno trošilo i je li relej uključen
  2. MQTT klijentom provjerite temu relay/0/power: vrijednost treba biti različita od nule kada trošilo troši snagu
  3. Provjerite prikazuje li uređaj brojila energije vrijednosti u sustavu TapHome: ukupnu potrošnju u kWh i trenutačnu snagu u kW
Relej ne reagira na naredbe
  1. Provjerite je li MQTT omogućen i je li adresa brokera ispravna u web-sučelju Shelly
  2. Provjerite može li se TapHome povezati s MQTT brokerom (ispravni IP i port u postavkama modula)
  3. Testirajte tako da MQTT klijentom objavite on ili off na shellies/shellyplug-s-{deviceID}/relay/0/command

Uređaji Shelly Gen1 ne podržavaju MQTT preko TLS-a. Komunikacija između utičnice i MQTT brokera nije šifrirana (običan MQTT, port 1883). Provjerite je li MQTT broker u pouzdanoj lokalnoj mreži.

Kako ga instalirati u TapHome

Preduvjeti

  • Uređaj Shelly spojen na Wi-Fi (2,4 GHz), npr. putem aplikacije Shelly ili vlastite pristupne točke uređaja
  • MQTT broker koji radi u vašoj lokalnoj mreži (npr. Mosquitto, Home Assistant ili ugrađeni broker TapHome)
  • TapHome CCU u istoj mreži kao broker

Na uređajima Gen1 uključivanje MQTT-a isključuje Shelly Cloud. MQTT i Shelly Cloud ne mogu raditi istodobno. Na uređajima Gen2/Plus to ograničenje ne vrijedi.

Korak 1 — Uključite MQTT na uređaju Shelly

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

  1. Otvorite web-sučelje Shelly: http://<device-ip>/
  2. Idite na Internet & Security → Advanced — MQTT
  3. Uključite MQTT
  4. Postavite MQTT Server: <broker-ip>:<port> (npr. 192.168.1.10:1883)
  5. Ako vaš broker zahtijeva autentifikaciju, postavite MQTT User i MQTT Password
  6. Kliknite Save — uređaj će se ponovno pokrenuti i spojiti na broker

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

  1. Otvorite web-sučelje Shelly: http://<device-ip>/
  2. Idite na Settings → MQTT
  3. Uključite MQTT
  4. Postavite Server: <broker-ip>:<port> (npr. 192.168.1.10:1883)
  5. Client ID je unaprijed popunjen ID-jem uređaja (npr. shellyplus1pm-AABBCCDDEE) — ostavite ga takvim, osim ako ga iz određenog razloga trebate promijeniti
  6. Kliknite Save i ponovno pokrenite uređaj

Za provjeru rada MQTT-a koristite MQTT klijent (npr. MQTT Explorer) i pretplatite se na shellies/# (Gen1) ili <device-id>/# (Gen2). Trebali biste vidjeti statusne poruke uređaja.

Korak 2 — Pronađite Device ID / MQTT Client ID

Neki predlošci zahtijevaju parametar Device ID ili MQTT Client ID. To je jedinstveni identifikator koji se koristi u MQTT temama (topics).

  • Gen1: nalazi se na naljepnici kao MAC adresa (npr. AABBCCDDEE). Device ID = shelly<model>-<mac>, npr. shelly1pm-AABBCCDDEE
  • Gen2/Plus: nalazi se u web-sučelju Shelly pod Settings → Device Info → Device ID ili na naljepnici uređaja

Korak 3 — Konfiguracija u sustavu TapHome

  1. U sustavu TapHome dodajte novi modul Packet Parser (MQTT)
  2. IP adresa: unesite IP adresu MQTT brokera (npr. 192.168.1.10)
  3. Port: 1883 (zadano; za TLS koristite 8883)
  4. Device ID / MQTT Client ID: unesite vrijednost iz koraka 2 (ako je predložak zahtijeva)
  5. Uvezite predložak — TapHome će se automatski pretplatiti na teme uređaja

Dostupni uređaji

Shelly Plug S MQTT Modul
Servisni atributi
TemperaturaUnutarnja temperatura uređaja — ne temperatura zraka u prostoriji
Prilagođene varijable
deviceID (string)MQTT Device ID utičnice Shelly Plug S — zadnjih 6 znakova MAC adrese malim slovima u heksadecimalnom zapisu (pronađite ga u web-sučelju 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
Servisni atributi
Temperature [°C ]
temperatureC
Brojilo energije Brojilo električne energije Samo za čitanje

Mjerenje potrošnje snage i energije — trenutačna snaga (kW) i ukupna energija (kWh)

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

Brojilo energije

Čitanje ukupne potrošnje
# 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");
Čitanje zahtjeva
# 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
Sklopka Sklopka
string on→1, off→0 (read); 1→on, 0→off (write)
Vrijednosti / stanja: ON · OFF

Sklopka

Čitanje stanja sklopke
# 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");
Zapis stanja sklopke
# 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
Povezivanje: Packet Parser → MQTT
Moguća poboljšanja (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.

Izvori

Pronašli ste problem s ovim predloškom uređaja?

Recite nam što ne radi, što nedostaje ili kako bi se predložak trebao ponašati. Vaše povratne informacije pomažu nam da katalog bude točan.

Provjerio TapHome

Želite ovo koristiti u svojoj centralnoj jedinici TapHome Core?

Otvorite ovaj predložak na portalu Customer Portal kako biste ga primijenili na jedan od svojih domova ili predložili poboljšanje i poslali ga natrag u katalog.

Otvorite na portalu