TapHome

Shelly EM

Packet Parser → HTTP
Přidal
Poslední aktualizace: 03. 2026
Shelly EM

Shelly EM je jednofázový elektroměr se dvěma nezávislými měřicími kanály a 2A relé výstupem pro ovládání stykače. Každý kanál se připojuje na externí CT (proudový transformátor) svorku — dostupnou v 50A a 120A variantě — což umožňuje neinvazivní monitorování dvou samostatných obvodů současně. TapHome se integruje se zařízením lokálně přes Wi-Fi pomocí HTTP REST API nebo MQTT. Není potřeba cloudové připojení.

K dispozici jsou dvě TapHome šablony: HTTP šablona, která polluje REST endpointy zařízení, a MQTT šablona, která přijímá data přes MQTT broker. Obě zpřístupňují stejná tři zařízení — dva elektroměry (jeden na kanál) a stykačový spínač.

Konfigurace

HTTP šablona

HTTP šablona vyžaduje pouze IP adresu zařízení (nebo mDNS hostname). TapHome polluje tři endpointy každých 15 sekund:

  • /emeter/0/ — energetická data kanálu 1
  • /emeter/1/ — energetická data kanálu 2
  • settings/relay/0 — stav relé a kontrola plánování

Čtecí skript na úrovni modulu ukládá každou odpověď do vlastní proměnné (emeterZero, emeterOne, status), takže skripty jednotlivých zařízení mohou parsovat data bez redundantních HTTP volání.

Šablona také kontroluje stav plánování relé z settings/relay/0. Pokud je interní plánování na Shelly zařízení povoleno, šablona vyhlásí chybu — vypněte plánování v Shelly webovém rozhraní, aby nedocházelo ke konfliktům s TapHome automatizacemi.

MQTT šablona

MQTT šablona vyžaduje IP brokeru, port a Shelly Device ID (formát: shellyem-XXXXXXXXXXXX, kde X = hexadecimální znaky MAC adresy). Device ID najdete v Shelly webovém rozhraní pod Settings > Device Info.

Po povolení MQTT na Shelly EM (Internet & Security > Advanced — MQTT) se TapHome přihlásí k odběru topiců shellies/shellyem-{deviceID}/ a přijímá data přes listener skripty.

Na Gen1 Shelly zařízeních zapnutí MQTT vypne Shelly Cloud. Obě služby nemohou běžet současně.

Možnosti zařízení

Měření energie (na kanál)

Každý kanál je v TapHome zpřístupněn jako nezávislý elektroměr, poskytující:

  • Okamžitý výkon — činný výkon v kW (konvertovaný z W dělením 1000)
  • Kumulativní energie — celková spotřebovaná energie v kWh (HTTP: konvertovaná z Wh; MQTT: používá persistentní topic total ve Wh)

HTTP šablona čte pole power a total z JSON odpovědi /emeter/{i}/. MQTT šablona naslouchá topicu emeter/{i}/energy (watt-minuty, děleno 60 000 pro kWh) a topicu emeter/{i}/total (watt-hodiny, persistentní přes restarty).

MQTT topic energy se vynuluje při restartu zařízení. Pro persistentní sledování energie šablona čte také topic total, který přežije restarty.

Každý kanál také zpřístupňuje tři servisní atributy:

AtributJednotkaPopis
NapětíVEfektivní síťové napětí
Vrácená energieWhCelková energie vrácená do sítě — pro solární/obousměrné měření
Jalový výkonVAROkamžitý jalový výkon

MQTT šablona zpřístupňuje pouze napětí jako servisní atribut na kanál. Jalový výkon a vrácená energie jsou dostupné pouze v HTTP šabloně.

Stykačový spínač

Relé výstup je v TapHome zpřístupněn jako spínač. Relé je dimenzováno na 2A / 230 VAC — je určeno výhradně pro ovládání stykače, ne pro přímé spínání zátěží.

  • HTTP: čte ison z settings/relay/0 a ovládá přes /relay/0?turn=on nebo /relay/0?turn=off
  • MQTT: čte z topicu shellies/shellyem-{id}/relay/0 a publikuje on/off na shellies/shellyem-{id}/relay/0/command

Relé je dimenzováno pouze na 2A. Pro zátěže přesahující toto jmenovité zatížení vždy použijte externí stykač. Přímé připojení výkonových zátěží poškodí relé.

Další možnosti

Shelly EM také poskytuje účiník (0,00–1,00) a příznak platnosti měření na kanál, konfiguraci kanálů (CT poměr, limit maximálního výkonu), reset počítadla energie, časovač automatického vypnutí na relé a sílu Wi-Fi signálu. Přes MQTT jsou k dispozici také další topicy pro výkon, jalový výkon a vrácenou energii v reálném čase na kanál. Tyto funkce mohou být přidány v budoucí aktualizaci šablony.

Řešení problémů

Zařízení neodpovídá (HTTP)
  1. Ověřte, že Shelly EM je připojen k Wi-Fi a má platnou IP adresu
  2. Otevřete http://{device-ip}/shelly v prohlížeči — pokud odpoví JSON obsahující "type":"SHEM", zařízení je dostupné
  3. Zkontrolujte, že TapHome CCU a Shelly EM jsou ve stejné síti / VLAN
Žádná data na jednom kanálu
  1. Ověřte, že CT svorka je připojena do správného 3,5mm jacku (kanál 0 nebo kanál 1)
  2. Zkontrolujte, že přes monitorovaný vodič protéká proud — CT svorka musí obepínat jednotlivý vodič, ne celý kabel
  3. Manuálně pollujte /emeter/0/ a /emeter/1/ a potvrďte nenulové hodnoty power
MQTT zprávy nepřicházejí
  1. Ověřte, že MQTT je povoleno v Shelly webovém rozhraní (Internet & Security > Advanced — MQTT)
  2. Potvrďte, že adresa a port brokeru jsou správné v Shelly zařízení i v nastavení TapHome modulu
  3. Zkontrolujte, že vlastní proměnná deviceID přesně odpovídá Shelly Device ID (např. B929CC)
  4. Použijte MQTT klienta (např. MQTT Explorer) pro přihlášení k shellies/# a ověření, že zařízení publikuje zprávy
Chyba konfliktu plánování

HTTP šablona kontroluje pole schedule v settings/relay/0. Pokud má Shelly zařízení povoleno interní plánování, šablona hlásí chybu. Vypněte plánování v Shelly webovém rozhraní (Settings > Relay > Schedule) — místo toho použijte TapHome automatizace.

Gen1 Shelly zařízení podporují pouze 2 současná HTTP připojení. Pokud TapHome a jiný systém (např. Home Assistant) pollují stejné zařízení současně, komunikace může být nespolehlivá. Zvažte přechod na MQTT šablonu pro prostředí s více systémy.

Jak nainstalovat v TapHome

Předpoklady

  • Zařízení Shelly nainstalované a zapnuté
  • Lokální Wi-Fi síť (2,4 GHz)
  • TapHome CCU ve stejné síti

Krok 1 — Připojte Shelly k Wi-Fi

Možnost A — Aplikace Shelly (doporučeno):

  1. Stáhněte si aplikaci Shelly (iOS / Android)
  2. Klepněte na +Add Device a postupujte podle průvodce Bluetooth párováním
  3. Po výzvě zadejte své Wi-Fi přihlašovací údaje

Možnost B — AP režim (bez aplikace):

  1. Při prvním zapnutí zařízení vytvoří hotspot: ShellyXXX-AABBCCDDEE
  2. Připojte telefon/PC k tomuto hotspotu
  3. Otevřete http://192.168.33.1Internet & SecurityWi-Fi Mode - Client
  4. Zadejte SSID a heslo → Save

Shelly podporuje pouze 2,4 GHz sítě. 5 GHz sítě se při skenování nezobrazí.

Krok 2 — Zjistěte IP adresu

Po připojení k Wi-Fi zjistěte přiřazenou IP adresu jedním z následujících způsobů:

  • Aplikace Shelly: Detail zařízení → Device info → IP adresa
  • Webové rozhraní Shelly: Připojte se k AP zařízení před nastavením Wi-Fi — IP se zobrazí po uložení
  • DHCP tabulka routeru: Hledejte hostname jako shelly1pm-AABBCCDDEE
  • mDNS: Pingněte shelly<model>-<mac>.local (např. shelly1pm-AABBCCDDEE.local) ze stejné sítě

Přiřaďte zařízení Shelly statickou IP (DHCP rezervaci) ve vašem routeru, aby se adresa nezměnila po restartu routeru.

Krok 3 — Konfigurace v TapHome

  1. V TapHome přidejte nový modul Packet Parser (HTTP)
  2. IP Address: zadejte IP z kroku 2 (např. 192.168.1.50)
  3. Port: 80 (výchozí, není potřeba měnit)
  4. Importujte šablonu — TapHome bude pravidelně číst /status pro zjištění stavu zařízení

HTTP autentifikace je na zařízeních Shelly standardně vypnutá. Pokud jste povolili ochranu přihlášením, TapHome momentálně nepodporuje HTTP Basic Auth — pro integraci s TapHome ponechte autentifikaci vypnutou.

Dostupná zařízení

Shelly EM Modul
Vlastní proměnné

Shelly EM

Čtení (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
Elektroměr — Kanál 1 Elektroměr Pouze ke čtení

Okamžitý výkon (kW) a kumulativní energie (kWh) z CT svorky na kanálu 1

numeric Jednotka: kW / kWh json_path
Servisní atributy
Napětí
Vrácená energieCelková energie vrácená do sítě na kanálu 1 — pro solární a obousměrné měřicí sestavy
Jalový výkon

Elektroměr — Kanál 1

Čtení celkové spotřeby
RETURN(PARSEJSON(emeterZero, "total")/1000);
Čtení odběru
RETURN(PARSEJSON(emeterZero, "power")/1000);
Servisní atributy
Voltage [V]
RETURN(PARSEJSON(emeterZero, "voltage"));
backward [Wh]
RETURN(PARSEJSON(emeterZero, "total_returned"));
reactive [W]
RETURN(PARSEJSON(emeterZero, "reactive"));
Elektroměr — Kanál 2 Elektroměr Pouze ke čtení

Okamžitý výkon (kW) a kumulativní energie (kWh) z CT svorky na kanálu 2

numeric Jednotka: kW / kWh json_path
Servisní atributy
Napětí
Vrácená energieCelková energie vrácená do sítě na kanálu 2 — pro solární a obousměrné měřicí sestavy
Jalový výkon

Elektroměr — Kanál 2

Čtení celkové spotřeby
RETURN(PARSEJSON(emeterOne, "total")/1000);
Čtení odběru
RETURN(PARSEJSON(emeterOne, "power")/1000);
Servisní atributy
Voltage [V]
RETURN(PARSEJSON(emeterOne, "voltage"));
backward [Wh]
RETURN(PARSEJSON(emeterOne, "total_returned"));
reactive [W]
RETURN(PARSEJSON(emeterOne, "reactive"));
Stykačový spínač Přepínač

2A relé výstup pro ovládání stykače — není dimenzován na přímé spínání zátěží

boolean
Hodnoty / Stavy: ON · OFF

Stykačový spínač

Čtení stavu přepínače
RETURN(PARSEJSON(status, "ison"));
Zápis stavu přepínače
# 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
Připojení: Packet Parser → HTTP
Možná vylepšení (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