TapHome

Shelly 3EM

Packet Parser → HTTP
Dodane przez
Ostatnia aktualizacja: 03. 2026
Shelly 3EM

Shelly 3EM to trójfazowy licznik energii Wi-Fi z trzema zaciskami CT (przekładników prądowych) 120 A i wbudowanym 10 A przekaźnikiem stycznikowym. Mierzy moc czynną, napięcie, prąd, współczynnik mocy i energię skumulowaną dla każdej fazy niezależnie. TapHome komunikuje się z urządzeniem przez sieć lokalną — połączenie z chmurą nie jest wymagane.

Dla tego urządzenia dostępne są dwa szablony TapHome: szablon HTTP (domyślny, wykorzystuje polling REST API) i szablon MQTT (wykorzystuje subskrypcję wiadomości przez brokera). Oba szablony udostępniają ten sam zestaw urządzeń — 3 liczniki energii (po jednym na fazę) i 1 przełącznik stycznika. Wybierz protokół odpowiedni do wymagań instalacji.

Podłączenie sprzętowe

Shelly 3EM wymaga zasilania sieciowego (110–230 V AC) podłączonego do zacisków L i N. Każdy z trzech dołączonych zacisków CT łączy się z zaciskami CT1, CT2 i CT3. Wyjście przekaźnika stycznikowego znajduje się na zacisku O (maks. 10 A).

Instalacja zacisków CT
  • Każdy zacisk CT zakłada się na przewód fazowy monitorowanego obwodu — nie wymaga cięcia przewodów
  • Strzałka na zacisku CT musi wskazywać kierunek przepływu prądu (od źródła do obciążenia)
  • Zaciski CT mogą monitorować system trójfazowy (L1, L2, L3) lub trzy niezależne obwody jednofazowe

NIE podłączaj zacisku CT do przewodu fazowego przed podłączeniem go do Shelly 3EM. Na kablach przyłączeniowych transformatora może być obecne wysokie napięcie nawet jeśli podłączony jest tylko transformator.

Sterowanie stycznikiem

Wyjście przekaźnika (zacisk O) jest wymiarowane na 10 A i może bezpośrednio przełączać małe obciążenia lub sterować cewką zewnętrznego stycznika do przełączania większych obciążeń.

Konfiguracja

Konfiguracja szablonu HTTP

Podczas importu szablonu podaj adres IP urządzenia. Szablon odpytuje trzy osobne endpointy (/emeter/0, /emeter/1, /emeter/2) w celu pobrania danych energetycznych na fazę oraz /relay/0 dla stanu stycznika. Odpowiedź każdej fazy jest buforowana we własnej zmiennej (emeter0, emeter1, emeter2), aby zminimalizować liczbę wywołań HTTP na cykl odpytywania.

Konfiguracja szablonu MQTT

Szablon MQTT wymaga trzech parametrów importu:

ParametrOpisPrzykład
MQTT Broker IPAdres brokera MQTT192.168.1.10
MQTT Broker PortPort brokera (domyślnie 1883)1883
Device IDSufiks adresu MAC używany w topicach MQTTB929CC

Device ID (dID) to ostatnie 6 znaków adresu MAC w formacie szesnastkowym wielkimi literami. Znajdziesz go w interfejsie webowym Shelly pod SettingsDevice Info lub przez GET http://{ip}/settings → pole mqtt.id.

Moduł subskrybuje shellies/shellyem3-{dID}/#, a skrypty nasłuchujące kierują wiadomości emeter i relay dla poszczególnych faz do odpowiednich urządzeń.

Szablon MQTT używa prefiksu topica shellyem3-{dID}, podczas gdy oficjalna dokumentacja API odnosi się do shelly3em-{id}. Oba formaty działają — zmienna dID jest konfigurowalna. Zweryfikuj rzeczywisty prefiks topica subskrybując shellies/# za pomocą klienta MQTT.

Na urządzeniach Shelly Gen1 włączenie MQTT wyłącza Shelly Cloud. Oba nie mogą działać jednocześnie. Jest to ograniczenie firmware.

Możliwości urządzenia

Pomiar energii na fazę

Szablon tworzy trzy liczniki energii — po jednym dla każdej fazy. Każdy licznik mierzy:

  • Moc czynna — chwilowa moc w W, konwertowana na kW przez szablon (÷ 1000)
  • Całkowita zużyta energia — skumulowana energia w Wh, konwertowana na kWh przez szablon (÷ 1000)

W szablonie HTTP każda faza jest odczytywana z endpointu /emeter/{i}. W szablonie MQTT wartości przychodzą na topicach shellies/shellyem3-{dID}/emeter/{i}/power i .../total.

Parametry elektryczne na fazę

Każdy licznik energii udostępnia cztery atrybuty serwisowe:

  • Napięcie — napięcie skuteczne (V)
  • Prąd — prąd skuteczny (A)
  • Współczynnik mocy — stosunek mocy czynnej do pozornej (0,00–1,00)
  • Całkowita energia zwrócona — energia oddana do sieci w Wh, przydatna dla instalacji fotowoltaicznych z pomiarem dwukierunkowym
Reset licznika energii

Każda faza posiada akcję serwisową Reset total, która zeruje liczniki energii dla danej fazy. W trybie HTTP wywołuje /emeter/{i}?reset_totals; w trybie MQTT publikuje reset_totals na topicu shellies/shellyem3-{dID}/emeter/{i}/command.

Przełącznik stycznikowy

Szablon udostępnia przekaźnik stycznikowy jako przełącznik. Stan przekaźnika jest odczytywany z /relay/0ison (HTTP) lub z topica shellies/shellyem3-{dID}/relay/0 (MQTT) i sterowany przez /relay/0?turn=on|off (HTTP) lub topic .../relay/0/command (MQTT).

Dodatkowe możliwości

Shelly 3EM dostarcza również moc bierną (VAR), flagę ważności pomiaru na fazę (is_valid), sumę mocy trójfazowej (total_power z /status), siłę sygnału Wi-Fi, czas pracy urządzenia, status aktualizacji firmware, progi przeciążenia na fazę oraz eksport historycznych danych energetycznych (CSV). Na przekaźniku stycznikowym dostępny jest timer automatycznego wyłączenia. Te funkcje mogą zostać dodane w przyszłej aktualizacji szablonu.

Rozwiązywanie problemów

Urządzenie nie odpowiada (HTTP)
  1. Sprawdź, czy Shelly 3EM jest podłączony do Wi-Fi i ma prawidłowy adres IP
  2. Otwórz http://{device-ip}/shelly w przeglądarce — jeśli odpowiada, urządzenie jest osiągalne
  3. Upewnij się, że TapHome Core i Shelly 3EM są w tej samej sieci / VLAN
Brak wiadomości MQTT
  1. Potwierdź, że MQTT jest włączone w interfejsie webowym Shelly (Internet & SecurityAdvanced — MQTT)
  2. Sprawdź, czy adres i port brokera są poprawne zarówno w urządzeniu Shelly, jak i w szablonie TapHome
  3. Zweryfikuj, że zmienna dID odpowiada rzeczywistemu identyfikatorowi urządzenia — zasubskrybuj shellies/# za pomocą klienta MQTT, aby sprawdzić prefiks topica
  4. Upewnij się, że broker MQTT działa i jest dostępny zarówno ze Shelly, jak i z TapHome Core
Wartości energii pokazują zero lub NaN
  1. Potwierdź, że zaciski CT są prawidłowo podłączone do terminali Shelly 3EM (CT1, CT2, CT3) i założone na przewody fazowe
  2. Sprawdź, czy strzałka na zacisku CT wskazuje prawidłowy kierunek (od źródła do obciążenia)
  3. Ręcznie odpytaj /emeter/0, /emeter/1, /emeter/2 i sprawdź, czy pola power i total zawierają niezerowe wartości

Jak zainstalować w TapHome

Wymagania wstępne

  • Urządzenie Shelly zainstalowane i włączone
  • Lokalna sieć Wi-Fi (2,4 GHz)
  • TapHome CCU w tej samej sieci

Krok 1 — Podłącz Shelly do Wi-Fi

Opcja A — Aplikacja Shelly (zalecana):

  1. Pobierz aplikację Shelly (iOS / Android)
  2. Dotknij +Add Device i postępuj zgodnie z kreatorem parowania Bluetooth
  3. Wprowadź dane logowania Wi-Fi, gdy zostaniesz o to poproszony

Opcja B — Tryb AP (bez aplikacji):

  1. Przy pierwszym uruchomieniu urządzenie tworzy hotspot: ShellyXXX-AABBCCDDEE
  2. Połącz telefon/PC z tym hotspotem
  3. Otwórz http://192.168.33.1Internet & SecurityWi-Fi Mode - Client
  4. Wprowadź SSID i hasło → Save

Shelly obsługuje tylko sieci 2,4 GHz. Sieci 5 GHz nie pojawią się podczas skanowania.

Krok 2 — Znajdź adres IP

Po połączeniu z Wi-Fi znajdź przypisany adres IP za pomocą jednej z poniższych metod:

  • Aplikacja Shelly: Szczegóły urządzenia → Device info → Adres IP
  • Interfejs webowy Shelly: Połącz się z AP urządzenia przed konfiguracją Wi-Fi — IP zostanie wyświetlone po zapisaniu
  • Tabela DHCP routera: Szukaj nazwy hosta takiej jak shelly1pm-AABBCCDDEE
  • mDNS: Pinguj shelly<model>-<mac>.local (np. shelly1pm-AABBCCDDEE.local) z tej samej sieci

Przypisz urządzeniu Shelly statyczny IP (rezerwację DHCP) w routerze, aby adres nie zmieniał się po ponownym uruchomieniu routera.

Krok 3 — Konfiguracja w TapHome

  1. W TapHome dodaj nowy moduł Packet Parser (HTTP)
  2. IP Address: wprowadź IP z kroku 2 (np. 192.168.1.50)
  3. Port: 80 (domyślny, nie wymaga zmiany)
  4. Zaimportuj szablon — TapHome będzie okresowo odpytywać /status w celu odczytu stanu urządzenia

Uwierzytelnianie HTTP jest domyślnie wyłączone na urządzeniach Shelly. Jeśli włączyłeś ochronę logowaniem, TapHome obecnie nie obsługuje HTTP Basic Auth — pozostaw uwierzytelnianie wyłączone dla integracji z TapHome.

Dostępne urządzenia

Shelly 3EM Moduł
Zmienne niestandardowe
Licznik energii (Faza 1) Licznik energii Tylko do odczytu

Monitorowanie energii fazy 1 — moc czynna (kW), energia skumulowana (kWh), napięcie, prąd, współczynnik mocy i energia zwrócona

numeric Jednostka: W / kWh
Atrybuty serwisowe
Współczynnik mocy
Prąd [A]
Napięcie [V]
Całkowita energia zwrócona [Wh]Energia oddana do sieci — istotne dla instalacji solarnych/FV z pomiarem dwukierunkowym
Akcje serwisowe
Zeruj licznik

Licznik energii (Faza 1)

Odczyt całkowitego zużycia
RETURN(todouble(PARSEjson(emeter0, "total"))/1000);
Odczyt zapotrzebowania
RETURN(todouble(PARSEjson(emeter0, "power"))/1000);
Odczyt (moduł)
VAR response := SENDHTTPREQUEST("/emeter/0");
IF response.IsSuccess
 emeter0 := response.Content;
ELSE
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
 RETURN(NaN);
END
Atrybuty serwisowe
power factor
RETURN(todouble(PARSEjson(emeter0, "pf")));
Current [A]
RETURN(PARSEjson(emeter0, "current"));
voltage [V]
RETURN(PARSEjson(emeter0, "voltage"));
Total returned energy [Wh]
RETURN(PARSEjson(emeter0, "total_returned"));
Akcje serwisowe
Reset total
sendhttprequest("/emeter/0?reset_totals");
Licznik energii (Faza 2) Licznik energii Tylko do odczytu

Monitorowanie energii fazy 2 — moc czynna (kW), energia skumulowana (kWh), napięcie, prąd, współczynnik mocy i energia zwrócona

numeric Jednostka: W / kWh
Atrybuty serwisowe
Współczynnik mocy
Prąd [A]
Napięcie [V]
Całkowita energia zwrócona [Wh]Energia oddana do sieci — istotne dla instalacji solarnych/FV z pomiarem dwukierunkowym
Akcje serwisowe
Zeruj licznik

Licznik energii (Faza 2)

Odczyt całkowitego zużycia
RETURN(todouble(PARSEjson(emeter1, "total"))/1000);
Odczyt zapotrzebowania
RETURN(todouble(PARSEjson(emeter1, "power"))/1000);
Odczyt (moduł)
VAR response := SENDHTTPREQUEST("/emeter/1");
IF response.IsSuccess
 emeter1 := response.Content;
ELSE
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
 RETURN(NaN);
END
Atrybuty serwisowe
power factor
RETURN(PARSEjson(emeter1, "pf"));
current [A[
RETURN(PARSEjson(emeter1, "current"));
voltage [V]
RETURN(PARSEjson(emeter1, "voltage"));
total returned energy [Wh]
RETURN(PARSEjson(emeter1, "total_returned"));
Akcje serwisowe
reset total
sendhttprequest("/emeter/1?reset_totals");
Licznik energii (Faza 3) Licznik energii Tylko do odczytu

Monitorowanie energii fazy 3 — moc czynna (kW), energia skumulowana (kWh), napięcie, prąd, współczynnik mocy i energia zwrócona

numeric Jednostka: W / kWh
Atrybuty serwisowe
Współczynnik mocy
Prąd [A]
Napięcie [V]
Całkowita energia zwrócona [Wh]Energia oddana do sieci — istotne dla instalacji solarnych/FV z pomiarem dwukierunkowym
Akcje serwisowe
Zeruj licznik

Licznik energii (Faza 3)

Odczyt całkowitego zużycia
RETURN(todouble(PARSEjson(emeter2, "total"))/1000);
Odczyt zapotrzebowania
RETURN(todouble(PARSEjson(emeter2, "power"))/1000);
Odczyt (moduł)
var response := SENDHTTPREQUEST("/emeter/2");
IF response.IsSuccess
 emeter2 := response.Content;
ELSE
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
 RETURN(NaN);
END
Atrybuty serwisowe
power factor
RETURN(PARSEjson(emeter2, "pf"));
current [A]
RETURN(PARSEjson(emeter2, "current"));
voltage [V]
RETURN(PARSEjson(emeter2, "voltage"));
Total returned energy [Wh]
RETURN(PARSEjson(emeter2, "total_returned"));
Akcje serwisowe
reset total
sendhttprequest("/emeter/2?reset_totals");
Przełącznik stycznikowy Przełącznik

Wbudowany przekaźnik stycznikowy 10 A do przełączania obciążeń lub sterowania zewnętrznym stycznikiem

boolean
Wartości / Stany: ON · OFF

Przełącznik stycznikowy

Odczyt stanu przełącznika
VAR response := SENDHTTPREQUEST("/relay/0");
IF response.IsSuccess
 VAR content := response.Content;
 VAR responseHeaders := response.Headers;
 RETURN(PARSEjson(content, "ison"));
ELSE
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
 RETURN(NaN);
END
Zapis stanu przełącznika
VAR response := SENDHTTPREQUEST("/relay/0?turn=" + switch(St,1,"on","off"));
IF response.IsSuccess = false
 ADDERROR(response.StatusCode);
END
Połączenie: Packet Parser → HTTP
Możliwe ulepszenia (10)
  • Reactive Power — Per-phase reactive power in VAR; available in /emeter/ response and via MQTT topic .../emeter/{i}/reactive_power
  • Measurement Validity — Boolean flag indicating whether CT clamp measurement is valid; useful for detecting disconnected CT
  • Total Power (3-phase sum) — Sum of active power across all 3 phases in W; available in /status but not in per-phase /emeter/ endpoints
  • WiFi Signal Strength — WiFi RSSI in dBm
  • Uptime — Device uptime in seconds; available in /status but template only polls /emeter/ endpoints, not /status
  • FW Update Available — Firmware update flag from /status
  • Auto-off Timer — Auto-off timer in seconds on contactor relay
  • Per-phase Power Protection — Per-phase overpower threshold; could be exposed as service attribute + action
  • Historical Energy Data (CSV) — Per-phase historical data export as CSV; not applicable for real-time integration
  • Reset All Energy History — Clears ALL stored energy history across all 3 phases; more destructive than per-phase reset_totals

Źródła