TapHome

Shelly EM

Packet Parser → HTTP
Pridal
Posledná aktualizácia: 03. 2026
Shelly EM

Shelly EM je jednofázový elektromer s dvoma nezávislými meracími kanálmi a 2A relé výstupom na ovládanie stykača. Každý kanál sa pripája na externú CT (prúdový transformátor) svorku — dostupnú v 50A a 120A variante — čo umožňuje neinvazívne monitorovanie dvoch samostatných obvodov súčasne. TapHome sa integruje so zariadením lokálne cez Wi-Fi pomocou HTTP REST API alebo MQTT. Nie je potrebné cloudové pripojenie.

K dispozícii sú dve TapHome šablóny: HTTP šablóna, ktorá polluje REST endpointy zariadenia, a MQTT šablóna, ktorá prijíma dáta cez MQTT broker. Obe sprístupňujú rovnaké tri zariadenia — dva elektromery (jeden na kanál) a stykačový spínač.

Konfigurácia

HTTP šablóna

HTTP šablóna vyžaduje len IP adresu zariadenia (alebo mDNS hostname). TapHome polluje tri endpointy každých 15 sekúnd:

  • /emeter/0/ — energetické dáta kanálu 1
  • /emeter/1/ — energetické dáta kanálu 2
  • settings/relay/0 — stav relé a kontrola plánovania

Čítací skript na úrovni modulu ukladá každú odpoveď do vlastnej premennej (emeterZero, emeterOne, status), takže skripty jednotlivých zariadení môžu parsovať dáta bez redundantných HTTP volaní.

Šablóna tiež kontroluje stav plánovania relé z settings/relay/0. Ak je interné plánovanie na Shelly zariadení povolené, šablóna vyhlási chybu — vypnite plánovanie v Shelly webovom rozhraní, aby nedochádzalo ku konfliktom s TapHome automatizáciami.

MQTT šablóna

MQTT šablóna vyžaduje IP brokera, port a Shelly Device ID (formát: shellyem-XXXXXXXXXXXX, kde X = hexadecimálne znaky MAC adresy). Device ID nájdete v Shelly webovom rozhraní pod Settings > Device Info.

Po povolení MQTT na Shelly EM (Internet & Security > Advanced — MQTT) sa TapHome prihlási na odber topicov shellies/shellyem-{deviceID}/ a prijíma dáta cez listener skripty.

Na Gen1 Shelly zariadeniach zapnutie MQTT vypne Shelly Cloud. Obe služby nemôžu bežať súčasne.

Možnosti zariadenia

Meranie energie (na kanál)

Každý kanál je v TapHome sprístupnený ako nezávislý elektromer, poskytujúci:

  • Okamžitý výkon — činný výkon v kW (konvertovaný z W delením 1000)
  • Kumulatívna energia — celková spotrebovaná energia v kWh (HTTP: konvertovaná z Wh; MQTT: používa persistentný topic total vo Wh)

HTTP šablóna číta polia power a total z JSON odpovede /emeter/{i}/. MQTT šablóna počúva topic emeter/{i}/energy (watt-minúty, delené 60 000 pre kWh) a topic emeter/{i}/total (watt-hodiny, persistentné naprieč reštartami).

MQTT topic energy sa vynuluje pri reštarte zariadenia. Pre persistentné sledovanie energie šablóna číta aj topic total, ktorý prežije reštarty.

Každý kanál tiež sprístupňuje tri servisné atribúty:

AtribútJednotkaPopis
NapätieVEfektívne sieťové napätie
Vrátená energiaWhCelková energia vrátená do siete — pre solárne/obojsmerné meranie
Jalový výkonVAROkamžitý jalový výkon

MQTT šablóna sprístupňuje len napätie ako servisný atribút na kanál. Jalový výkon a vrátená energia sú dostupné len v HTTP šablóne.

Stykačový spínač

Relé výstup je v TapHome sprístupnený ako spínač. Relé je dimenzované na 2A / 230 VAC — je určené výhradne na ovládanie stykača, nie na priame spínanie záťaží.

  • HTTP: číta ison z settings/relay/0 a ovláda cez /relay/0?turn=on alebo /relay/0?turn=off
  • MQTT: číta z topicu shellies/shellyem-{id}/relay/0 a publikuje on/off na shellies/shellyem-{id}/relay/0/command

Relé je dimenzované len na 2A. Na záťaže presahujúce toto menovité zaťaženie vždy použite externý stykač. Priame pripojenie výkonových záťaží poškodí relé.

Ďalšie možnosti

Shelly EM tiež poskytuje účinník (0,00–1,00) a príznak platnosti merania na kanál, konfiguráciu kanálov (CT pomer, limit maximálneho výkonu), reset počítadla energie, časovač automatického vypnutia na relé a silu Wi-Fi signálu. Cez MQTT sú k dispozícii aj ďalšie topicy pre výkon, jalový výkon a vrátenú energiu v reálnom čase na kanál. Tieto funkcie môžu byť pridané v budúcej aktualizácii šablóny.

Riešenie problémov

Zariadenie neodpovedá (HTTP)
  1. Overte, že Shelly EM je pripojený k Wi-Fi a má platnú IP adresu
  2. Otvorte http://{device-ip}/shelly v prehliadači — ak odpovie JSON obsahujúci "type":"SHEM", zariadenie je dostupné
  3. Skontrolujte, že TapHome CCU a Shelly EM sú v rovnakej sieti / VLAN
Žiadne dáta na jednom kanáli
  1. Overte, že CT svorka je pripojená do správneho 3,5mm jacku (kanál 0 alebo kanál 1)
  2. Skontrolujte, že cez monitorovaný vodič preteká prúd — CT svorka musí obklopovať jednotlivý vodič, nie celý kábel
  3. Manuálne pollujte /emeter/0/ a /emeter/1/ a potvrďte nenulové hodnoty power
MQTT správy neprichádzajú
  1. Overte, že MQTT je povolené v Shelly webovom rozhraní (Internet & Security > Advanced — MQTT)
  2. Potvrďte, že adresa a port brokera sú správne v Shelly zariadení aj v nastaveniach TapHome modulu
  3. Skontrolujte, že vlastná premenná deviceID presne zodpovedá Shelly Device ID (napr. B929CC)
  4. Použite MQTT klienta (napr. MQTT Explorer) pre prihlásenie na shellies/# a overenie, že zariadenie publikuje správy
Chyba konfliktu plánovania

HTTP šablóna kontroluje pole schedule v settings/relay/0. Ak má Shelly zariadenie povolené interné plánovanie, šablóna hlási chybu. Vypnite plánovanie v Shelly webovom rozhraní (Settings > Relay > Schedule) — namiesto toho použite TapHome automatizácie.

Gen1 Shelly zariadenia podporujú len 2 súbežné HTTP pripojenia. Ak TapHome a iný systém (napr. Home Assistant) pollujú rovnaké zariadenie súčasne, komunikácia môže byť nespoľahlivá. Zvážte prechod na MQTT šablónu pre prostredia s viacerými systémami.

Ako nainštalovať v TapHome

Predpoklady

  • Zariadenie Shelly nainštalované a zapnuté
  • Lokálna Wi-Fi sieť (2,4 GHz)
  • TapHome CCU v rovnakej sieti

Krok 1 — Pripojte Shelly k Wi-Fi

Možnosť A — Aplikácia Shelly (odporúčané):

  1. Stiahnite si aplikáciu Shelly (iOS / Android)
  2. Klepnite na +Add Device a postupujte podľa sprievodcu Bluetooth párovaním
  3. Po výzve zadajte svoje Wi-Fi prihlasovacie údaje

Možnosť B — AP režim (bez aplikácie):

  1. Pri prvom zapnutí zariadenie vytvorí hotspot: ShellyXXX-AABBCCDDEE
  2. Pripojte telefón/PC k tomuto hotspotu
  3. Otvorte http://192.168.33.1Internet & SecurityWi-Fi Mode - Client
  4. Zadajte SSID a heslo → Save

Shelly podporuje iba 2,4 GHz siete. 5 GHz siete sa pri skenovaní nezobrazia.

Krok 2 — Zistite IP adresu

Po pripojení k Wi-Fi zistite priradenú IP adresu jedným z nasledujúcich spôsobov:

  • Aplikácia Shelly: Detail zariadenia → Device info → IP adresa
  • Webové rozhranie Shelly: Pripojte sa k AP zariadenia pred nastavením Wi-Fi — IP sa zobrazí po uložení
  • DHCP tabuľka routera: Hľadajte hostname ako shelly1pm-AABBCCDDEE
  • mDNS: Pingnite shelly<model>-<mac>.local (napr. shelly1pm-AABBCCDDEE.local) z rovnakej siete

Priraďte zariadeniu Shelly statickú IP (DHCP rezerváciu) vo vašom routeri, aby sa adresa nezmenila po reštarte routera.

Krok 3 — Konfigurácia v TapHome

  1. V TapHome pridajte nový modul Packet Parser (HTTP)
  2. IP Address: zadajte IP z kroku 2 (napr. 192.168.1.50)
  3. Port: 80 (predvolený, nie je potrebné meniť)
  4. Importujte šablónu — TapHome bude pravidelne čítať /status pre zistenie stavu zariadenia

HTTP autentifikácia je na zariadeniach Shelly štandardne vypnutá. Ak ste povolili ochranu prihlásením, TapHome momentálne nepodporuje HTTP Basic Auth — pre integráciu s TapHome ponechajte autentifikáciu vypnutú.

Dostupné zariadenia

Shelly EM Modul
Vlastné premenné

Shelly EM

Čítanie (modul)
VAR response := SENDHTTPREQUEST("settings/relay/0");
IF response.IsSuccess
 status := response.Content;
 IF PARSEJSON(status, "schedule")
  ADDERROR("Internal scheduling on");
 END
ELSE
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
 RETURN(NaN);
END
response := SENDHTTPREQUEST("/emeter/0/");
IF response.IsSuccess
 emeterZero := response.Content;
ELSE
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
 RETURN(NaN);
END
response := SENDHTTPREQUEST("/emeter/1/");
IF response.IsSuccess
 emeterOne := response.Content;
ELSE
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
 RETURN(NaN);
END
Elektromer — Kanál 1 Elektromer Len na čítanie

Okamžitý výkon (kW) a kumulatívna energia (kWh) z CT svorky na kanáli 1

numeric Jednotka: kW / kWh json_path
Servisné atribúty
Napätie
Vrátená energiaCelková energia vrátená do siete na kanáli 1 — pre solárne a obojsmerné meracie zostavy
Jalový výkon

Elektromer — Kanál 1

Čítanie celkovej spotreby
RETURN(PARSEJSON(emeterZero, "total")/1000);
Čítanie odberu
RETURN(PARSEJSON(emeterZero, "power")/1000);
Servisné atribúty
Voltage [V]
RETURN(PARSEJSON(emeterZero, "voltage"));
backward [Wh]
RETURN(PARSEJSON(emeterZero, "total_returned"));
reactive [W]
RETURN(PARSEJSON(emeterZero, "reactive"));
Elektromer — Kanál 2 Elektromer Len na čítanie

Okamžitý výkon (kW) a kumulatívna energia (kWh) z CT svorky na kanáli 2

numeric Jednotka: kW / kWh json_path
Servisné atribúty
Napätie
Vrátená energiaCelková energia vrátená do siete na kanáli 2 — pre solárne a obojsmerné meracie zostavy
Jalový výkon

Elektromer — Kanál 2

Čítanie celkovej spotreby
RETURN(PARSEJSON(emeterOne, "total")/1000);
Čítanie odberu
RETURN(PARSEJSON(emeterOne, "power")/1000);
Servisné atribúty
Voltage [V]
RETURN(PARSEJSON(emeterOne, "voltage"));
backward [Wh]
RETURN(PARSEJSON(emeterOne, "total_returned"));
reactive [W]
RETURN(PARSEJSON(emeterOne, "reactive"));
Stykačový spínač Prepínač

2A relé výstup na ovládanie stykača — nie je dimenzovaný na priame spínanie záťaží

boolean
Hodnoty / Stavy: ON · OFF

Stykačový spínač

Čítanie stavu prepínača
RETURN(PARSEJSON(status, "ison"));
Zápis stavu prepínača
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/set/value=" + St);
VAR response := SENDHTTPREQUEST("/relay/0?turn="+ 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
Pripojenie: Packet Parser → HTTP
Možné vylepšenia (9)
  • Power Factor — Power factor (0.00–1.00) per channel, available in /emeter/{i} and /status response. Not available via MQTT.
  • Measurement Validity — Boolean flag indicating if the measurement is valid. Available per channel in /emeter/{i}.
  • Per-Channel Configuration — CT ratio (ctrafos: 50/120), max_power limit, appliance_type. Could be exposed as service actions.
  • Reset Energy Counters — Resets accumulated energy data for both channels. Available via HTTP GET and MQTT command topic.
  • Auto-off Timer — Auto-off timer in seconds on relay endpoint. Could be added as service action parameter.
  • WiFi Signal Strength — WiFi RSSI in dBm, available in /status response
  • MQTT Real-time Power — Instantaneous power via MQTT (W). MQTT template uses energy+total topics instead.
  • MQTT Reactive Power — Reactive power via MQTT (VAR). HTTP template has it as service attribute, MQTT template does not.
  • MQTT Energy Returned — Energy returned to grid via MQTT (Wh). HTTP template has it as service attribute (backward), MQTT template does not.

Zdroje