TapHome

Shelly Pro 4PM

Packet Parser → HTTP
Dodane przez
Ostatnia aktualizacja: 03. 2026
Shelly Pro 4PM

Shelly Pro 4PM to 4-kanałowy inteligentny przekaźnik na szynę DIN z wbudowanym pomiarem mocy na kanał. Każde z czterech niezależnych wyjść może przełączać do 16 A (łącznie 40 A), co czyni go odpowiednim do sterowania obwodami oświetleniowymi, urządzeniami lub obciążeniami w rozdzielnicy z indywidualnym monitoringiem energii na kanał. TapHome komunikuje się z urządzeniem przez HTTP w sieci lokalnej — połączenie z chmurą nie jest wymagane.

Szablon wykorzystuje mieszane podejście do API: punkty końcowe Gen2+ RPC (/rpc/Switch.GetStatus?id=N) do odczytu pomiarów energii oraz punkty końcowe Gen1 (/relay/N?turn=on|off) do sterowania przekaźnikami. Obie generacje API są obsługiwane przez Pro 4PM w celu zachowania wstecznej kompatybilności. Urządzenie łączy się przez WiFi lub Ethernet (RJ45) i posiada 1,8-calowy kolorowy wyświetlacz LCD do lokalnego monitorowania stanu.

Konfiguracja

Shelly Pro 4PM łączy się przez WiFi lub Ethernet. Podczas importu szablonu TapHome podaj adres IP urządzenia (domyślny symbol zastępczy 192.168.0.1).

Uwierzytelnianie musi być wyłączone na urządzeniu Shelly dla integracji z TapHome. TapHome nie obsługuje HTTP Digest Auth używanego przez urządzenia Gen2. Otwórz interfejs webowy Shelly (http://{ip-urzadzenia}) → Settings → Authentication i upewnij się, że jest wyłączone.

Kabel LAN wolno podłączać lub odłączać tylko gdy urządzenie jest wyłączone. Podłączanie kabla Ethernet podczas pracy może powodować problemy.

Jeśli tryb ECO jest włączony na urządzeniu Shelly, może powodować przekroczenia czasu komunikacji ze względu na szybkie interwały odpytywania szablonu (2,5–15 sekund). Wyłącz tryb ECO w interfejsie webowym Shelly, jeśli występują sporadyczne problemy z łącznością.

Możliwości urządzenia

Pomiar energii

Szablon udostępnia cztery niezależne urządzenia licznika energii, po jednym na kanał. Każdy licznik odczytuje z /rpc/Switch.GetStatus?id=N (gdzie N to 0–3):

  • Moc w czasie rzeczywistymapower w watach, szablon konwertuje na kW
  • Całkowite zużycieaenergy.total w watogodzinach, szablon konwertuje na kWh

Kanał 1 odpytuje co 2,5 sekundy dla szybszej odpowiedzi. Kanały 2–4 odpytują co 15 sekund.

Liczniki są tylko do odczytu — aktualizują się automatycznie z każdym cyklem odpytywania.

Sterowanie przekaźnikiem

Szablon udostępnia cztery urządzenia przełączające przekaźnikowe, po jednym na kanał. Każdy przekaźnik jest sterowany przez punkt końcowy Gen1 /relay/N?turn=on|off (gdzie N to 0–3).

Przełączniki przekaźnikowe są tylko do zapisu — szablon nie odczytuje stanu przekaźnika z urządzenia. Aktualny stan przekaźnika można wywnioskować z odpowiedniego licznika energii: jeśli kanał raportuje niezerowe zużycie, przekaźnik jest włączony. Przyszła aktualizacja szablonu mogłaby dodać odczyt stanu przekaźnika za pomocą pola Gen2+ /rpc/Switch.GetStatus?id=Noutput.

Czujnik mocy

Samodzielne urządzenie czujnika mocy udostępnia surową moc czynną w watach dla kanału 1 (odczytaną z /rpc/Switch.GetStatus?id=0apower). W przeciwieństwie do licznika energii, który konwertuje na kW, ten czujnik raportuje wartość w watach bez konwersji, co jest przydatne dla automatyzacji wymagających precyzji na poziomie watów.

Diagnostyka serwisowa

Szablon udostępnia 13 atrybutów serwisowych do monitorowania urządzenia:

  • Informacje o urządzeniu — hostname, adres MAC, czas urządzenia, uptime, wykorzystanie RAM
  • Ochrona termiczna — temperatura wewnętrzna (°C), status temperatury (Normal / High / Very High), flaga przegrzania
  • Łączność — chmura włączona/połączona, MQTT połączony, dostępna aktualizacja firmware
  • Ochrona mocy — aktualny maksymalny limit mocy (odczytany z /settings)
Akcje serwisowe

Dostępne są trzy akcje serwisowe:

  • Ustaw ochronę mocy — ustawia maksymalny limit mocy (1–3500 W). Przekaźnik automatycznie się wyłącza, jeśli zużycie przekroczy tę wartość.
  • Włącz chmurę — włącza lub wyłącza łączność z Shelly Cloud
  • Restart — uruchamia restart urządzenia
Dodatkowe możliwości

Shelly Pro 4PM udostępnia również napięcie, prąd, współczynnik mocy, częstotliwość i temperaturę wewnętrzną na kanał w odpowiedzi /rpc/Switch.GetStatus. Stany fizycznych wejść przełączników/przycisków (S1–S4), status Ethernetu, WiFi RSSI i natywne sterowanie przekaźnikiem Gen2+ z timerem automatycznego wyłączania są dostępne przez RPC API. Te możliwości mogą zostać dodane w przyszłej aktualizacji szablonu.

Rozwiązywanie problemów

Urządzenie nie odpowiada
  1. Sprawdź, czy Shelly jest połączony z WiFi lub Ethernet i ma prawidłowy adres IP
  2. Spróbuj użyć nazwy hosta mDNS (shellypro4pm-AABBCCDDEE.local) zamiast adresu IP — IP mógł się zmienić po odnowieniu DHCP
  3. Otwórz http://{ip-urzadzenia}/rpc/Shelly.GetDeviceInfo w przeglądarce — jeśli odpowiada JSON, urządzenie jest osiągalne
  4. Sprawdź, czy TapHome Core i Shelly są w tej samej sieci / VLAN
  5. Upewnij się, że uwierzytelnianie jest wyłączone na urządzeniu Shelly
Odczyty mocy pokazują zero
  1. Potwierdź, że obciążenie jest podłączone przez wyjście przekaźnikowe Shelly (O1–O4), nie jest obejściem
  2. Sprawdź, czy przekaźnik jest włączony — licznik mierzy tylko gdy prąd przepływa przez przekaźnik
  3. Ręcznie odpytaj /rpc/Switch.GetStatus?id=0 i sprawdź, czy apower zwraca wartość niezerową
  4. Sprawdź poprawne ID kanału (id=0 dla Wyjścia 1, id=1 dla Wyjścia 2 itd.)
Nieznany stan przekaźnika

Przełączniki przekaźnikowe w tym szablonie są tylko do zapisu — wysyłają komendy włączenia/wyłączenia, ale nie odczytują stanu przekaźnika. Aby zweryfikować rzeczywisty stan przekaźnika:

  1. Sprawdź odpowiedni licznik energii — niezerowa moc oznacza, że przekaźnik jest włączony
  2. Sprawdź wskaźniki LED przekaźników na panelu przednim urządzenia
  3. Przetestuj ręcznie przez przeglądarkę: http://{ip-urzadzenia}/relay/0 zwraca aktualny stan przekaźnika w JSON
Ostrzeżenie o przegrzaniu

Shelly Pro 4PM posiada wewnętrzną ochronę termiczną. Jeśli temperatura urządzenia przekroczy bezpieczne limity, temperature_status zmienia się na “High” lub “Very High”, a overtemperature staje się true. Zapewnij odpowiednią wentylację w rozdzielnicy, szczególnie przy jednoczesnym przełączaniu dużych obciążeń na wielu kanałach.

Sprzęt V1 vs V2

Obie wersje używają tego samego firmware i API. V2 (SPSW-104PE16EU) ma ulepszone złącza — pięć indywidualnych zacisków śrubowych zamiast czterech bloków 2-zaciskowych — i lepszą izolację elektryczną LAN. Między wersjami nie są potrzebne żadne zmiany szablonu.

Urządzenia Shelly Gen2 obsługują do 6 jednoczesnych połączeń HTTP. Szablon Shelly Pro 4PM używa do 5 jednoczesnych punktów końcowych na cykl odpytywania (4 liczniki energii + status modułu), co pozostawia ograniczony zapas. Unikaj jednoczesnego odpytywania z zbyt wielu systemów.

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 Pro 4PM Moduł
Akcje serwisowe
Ustaw ochronę mocyUstaw maksymalny limit mocy (1–3500 W) — przekaźnik wyłącza się automatycznie, gdy zużycie przekroczy tę wartość
Włącz chmuręWłącz lub wyłącz łączność z Shelly Cloud
RestartUruchom restart urządzenia
Zmienne niestandardowe
StatusJson (string)
SettingsJson (string)
status (string) = 0

Shelly 4 Pro

Odczyt (moduł)
VAR response := SENDHTTPREQUEST("/status", "GET");
StatusJson := response.Content;
Akcje serwisowe
Set power protection
Parametry: Maximum power (1–3500 Watts)
VAR response := SENDHTTPREQUEST("settings?max_power=" + Watts);
VAR contentJson := response.Content;
VAR limitSet := PARSEJSON(contentJson, "max_power");

"Power limit set to " + limitSet + "W"
Enable cloud
Parametry: Enable (Enable / Disable)
VAR response := SENDHTTPREQUEST("/settings/cloud?enabled=" + enable);
VAR contentJson := response.Content;
VAR wasEnabled := PARSEJSON(contentJson, "enabled");

IF(wasEnabled, "Cloud enabled", "Cloud disabled");
Reboot
VAR response := SENDHTTPREQUEST("/reboot");
VAR contentJson := response.Content;
VAR wasRebooted := PARSEJSON(contentJson, "ok");

IF(wasRebooted, "Reboot successful", "Error");
Licznik energii kanał 1 Licznik energii Tylko do odczytu

Pomiar mocy i energii per kanał dla wyjścia 1 — moc chwilowa (kW) i energia skumulowana (kWh)

numeric Jednostka: W / kWh

Licznik energii kanał 1

Odczyt całkowitego zużycia
return(parsejson(parsejson(status,"aenergy"), "total")/1000);
Odczyt zapotrzebowania
return(parsejson(status,"apower")/1000);
Odczyt (moduł)
var x := (sendhttprequest("/rpc/Switch.GetStatus?id=0"));
status := x.Content;
Licznik energii kanał 2 Licznik energii Tylko do odczytu

Pomiar mocy i energii per kanał dla wyjścia 2 — moc chwilowa (kW) i energia skumulowana (kWh)

numeric Jednostka: W / kWh

Licznik energii kanał 2

Odczyt całkowitego zużycia
return(parsejson(parsejson(status,"aenergy"), "total")/1000);
Odczyt zapotrzebowania
return(parsejson(status,"apower")/1000);
Odczyt (moduł)
var x := (sendhttprequest("/rpc/Switch.GetStatus?id=1"));
status := x.Content;
Licznik energii kanał 3 Licznik energii Tylko do odczytu

Pomiar mocy i energii per kanał dla wyjścia 3 — moc chwilowa (kW) i energia skumulowana (kWh)

numeric Jednostka: W / kWh

Licznik energii kanał 3

Odczyt całkowitego zużycia
return(parsejson(parsejson(status,"aenergy"), "total")/1000);
Odczyt zapotrzebowania
return(parsejson(status,"apower")/1000);
Odczyt (moduł)
var x := (sendhttprequest("/rpc/Switch.GetStatus?id=2"));
status := x.Content;
Licznik energii kanał 4 Licznik energii Tylko do odczytu

Pomiar mocy i energii per kanał dla wyjścia 4 — moc chwilowa (kW) i energia skumulowana (kWh)

numeric Jednostka: W / kWh

Licznik energii kanał 4

Odczyt całkowitego zużycia
return(parsejson(parsejson(status,"aenergy"), "total")/1000);
Odczyt zapotrzebowania
return(parsejson(status,"apower")/1000);
Odczyt (moduł)
var x := (sendhttprequest("/rpc/Switch.GetStatus?id=3"));
status := x.Content;
Przekaźnik kanał 2 Przełącznik

Sterowanie przekaźnikiem tylko zapis dla wyjścia 2 — stan nie jest odczytywany, wnioskować z licznika energii

boolean
Wartości / Stany: ON · OFF

Przekaźnik kanał 2

Zapis stanu przełącznika
VAR path := "relay/1?turn=" + SWITCH(St, 0, "off", 1, "on","off");
SENDHTTPREQUEST(path);
Przekaźnik kanał 1 Przełącznik

Sterowanie przekaźnikiem tylko zapis dla wyjścia 1 — stan nie jest odczytywany, wnioskować z licznika energii

boolean
Wartości / Stany: ON · OFF

Przekaźnik kanał 1

Zapis stanu przełącznika
VAR path := "relay/0?turn=" + SWITCH(St, 0, "off", 1, "on","off");
SENDHTTPREQUEST(path);
Czujnik mocy kanał 1 Zmienna Tylko do odczytu

Surowa moc czynna w watach dla kanału 1 — samodzielna wartość czujnika bez konwersji na kW

numeric Jednostka: W

Czujnik mocy kanał 1

Odczyt
return(parsejson(status,"apower"));
Odczyt (moduł)
var x := (sendhttprequest("/rpc/Switch.GetStatus?id=0"));
status := x.Content;
Przekaźnik kanał 3 Przełącznik

Sterowanie przekaźnikiem tylko zapis dla wyjścia 3 — stan nie jest odczytywany, wnioskować z licznika energii

boolean
Wartości / Stany: ON · OFF

Przekaźnik kanał 3

Zapis stanu przełącznika
VAR path := "relay/2?turn=" + SWITCH(St, 0, "off", 1, "on","off");
SENDHTTPREQUEST(path);
Przekaźnik kanał 4 Przełącznik

Sterowanie przekaźnikiem tylko zapis dla wyjścia 4 — stan nie jest odczytywany, wnioskować z licznika energii

boolean
Wartości / Stany: ON · OFF

Przekaźnik kanał 4

Zapis stanu przełącznika
VAR path := "relay/3?turn=" + SWITCH(St, 0, "off", 1, "on","off");
SENDHTTPREQUEST(path);
Połączenie: Packet Parser → HTTP
Możliwe ulepszenia (10)
  • Relay State Read — Switches have no readswitchstate script — relay state is not read back. Gen2+ /rpc/Switch.GetStatus?id=N provides output (boolean) for state feedback.
  • Voltage — Per-channel line voltage in V, available in /rpc/Switch.GetStatus response
  • Current — Per-channel load current in A, available in /rpc/Switch.GetStatus response
  • Power Factor — Per-channel power factor, available in /rpc/Switch.GetStatus response
  • Frequency — Network frequency in Hz, available in /rpc/Switch.GetStatus response
  • Per-Channel Temperature — Internal temperature in °C per switch component, available in /rpc/Switch.GetStatus response
  • Input States (S1-S4) — 4 physical switch/button inputs, available via /rpc/Input.GetStatus?id=0..3
  • Gen2+ Relay Control — Native Gen2+ relay control with toggle_after timer support. Template uses Gen1 /relay/N instead.
  • WiFi Status (SSID, IP, RSSI) — WiFi status including signal strength, available via Gen2+ RPC
  • Ethernet Status — Pro 4PM has RJ45 LAN port; Ethernet status (IP, link) available via /rpc/Ethernet.GetStatus

Źródła