TapHome

Shelly 1PM Gen3

Packet Parser → HTTP
Dodane przez
Ostatnia aktualizacja: 03. 2026
Shelly 1PM Gen3

Shelly 1PM Gen3 to kompaktowy przekaźnik Wi-Fi z wbudowanym pomiarem mocy. Mieści się za standardowym włącznikiem ściennym i może sterować jednym obwodem o obciążeniu do 16 A (3500 W przy 230 V AC) lub 10 A (przy 24–30 V DC). TapHome komunikuje się z urządzeniem przez HTTP za pomocą API Gen2+/Gen3 JSON-RPC 2.0 w sieci lokalnej — połączenie z chmurą nie jest wymagane.

W przeciwieństwie do oryginalnego Shelly 1PM (Gen1), który korzysta z REST API z endpointem /status, wersja Gen3 wykorzystuje RPC API z wywołaniami metod, takimi jak /rpc/Switch.GetStatus. Sprzęt Gen3 wyposażony jest w szybszy procesor ESP z 8 MB pamięci flash, obsługuje do 6 jednoczesnych połączeń HTTP (w porównaniu z 2 w Gen1) i jest przygotowany na Matter.

Szablon zapewnia sterowanie przekaźnikiem oraz licznik energii, który odczytuje bieżące zużycie mocy i skumulowane zużycie energii.

Konfiguracja

Shelly 1PM Gen3 łączy się przez Wi-Fi. Podczas importu szablonu do TapHome wprowadź 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 stosowanego przez urządzenia Gen2+/Gen3. Otwórz interfejs webowy Shelly (http://{device-ip}) → Ustawienia → Uwierzytelnianie i upewnij się, że jest wyłączone.

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–3 sekundy). Wyłącz tryb ECO w interfejsie webowym Shelly, jeśli występują przerywane problemy z łącznością.

Możliwości urządzenia

Sterowanie przekaźnikiem

Szablon udostępnia przekaźnik jako przełącznik. Stan przekaźnika jest odczytywany z odpowiedzi /rpc/Switch.GetStatus?id=0 (pole output, boolean) i sterowany przez /rpc/Switch.Set?id=0&on=true lub on=false.

Pomiar mocy

Wbudowany licznik energii odczytuje dwie wartości z odpowiedzi /rpc/Switch.GetStatus?id=0:

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

Licznik udostępnia również trzy atrybuty serwisowe:

  • Prąd elektryczny — prąd obciążenia w amperach (pole current)
  • Napięcie elektryczne — napięcie zasilania w woltach (pole voltage)
  • Temperatura — wewnętrzna temperatura urządzenia w °C (pole temperature.tC)

Licznik jest tylko do odczytu — aktualizuje się automatycznie przy każdym cyklu odpytywania (interwał 15 sekund).

Diagnostyka serwisowa

Szablon udostępnia atrybuty serwisowe na poziomie modułu do monitorowania urządzenia:

  • WiFi — nazwa podłączonej sieci SSID
  • Adres IP — aktualny adres IP stacji
  • Siła sygnału — WiFi RSSI w dB
  • MAC — adres MAC urządzenia

Skrypt odczytu modułu sprawdza również dostępne aktualizacje firmware i oczekujące wymagania ponownego uruchomienia, wyświetlając je jako ostrzeżenia w interfejsie TapHome.

Akcje serwisowe

Na poziomie modułu dostępne są dwie akcje serwisowe:

  • Aktualizacja firmware — uruchamia aktualizację firmware do najnowszej stabilnej wersji przez /rpc/Shelly.Update
  • Restart — uruchamia ponowne uruchomienie urządzenia przez /rpc/Shelly.Reboot
Dodatkowe możliwości

Shelly 1PM Gen3 udostępnia w swoich odpowiedziach RPC również współczynnik mocy, częstotliwość sieciową (Hz), liczniki energii zwróconej/eksportowanej, stan wejścia fizycznego (input:0), czas pracy, wykorzystanie RAM i czas urządzenia. Dostępny jest timer automatycznego wyłączania przez parametr toggle_after, a ochrona przed przeciążeniem może być skonfigurowana przez Switch.SetConfig → power_limit. Liczniki energii można zresetować przez /rpc/Switch.ResetCounters. 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 podłączony do Wi-Fi i ma prawidłowy adres IP
  2. Spróbuj użyć nazwy hosta mDNS (shelly1pmg3-AABBCCDDEE.local) zamiast adresu IP — adres IP mógł się zmienić po odnowieniu DHCP
  3. Otwórz http://{device-ip}/rpc/Shelly.GetDeviceInfo w przeglądarce — jeśli odpowie JSON-em, urządzenie jest osiągalne
  4. Sprawdź, czy TapHome Core i Shelly są w tej samej sieci / VLAN
  5. Potwierdź, że uwierzytelnianie jest wyłączone na urządzeniu Shelly
Wartości mocy pokazują zero
  1. Potwierdź, że obciążenie jest podłączone przez przekaźnik Shelly (nie jest ominięte)
  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ść różną od zera
Ostrzeżenie o przegrzaniu

Shelly 1PM Gen3 posiada wewnętrzną ochronę termiczną. Jeśli temperatura urządzenia przekroczy bezpieczne limity, wartość temperature w atrybutach serwisowych licznika wzrośnie. Zapewnij odpowiednią wentylację wokół urządzenia, szczególnie przy ciągłym przełączaniu dużych obciążeń.

Urządzenia Shelly Gen2+/Gen3 obsługują do 6 jednoczesnych połączeń HTTP. Chociaż jest to znaczna poprawa w porównaniu z Gen1 (2 połączenia), unikaj jednoczesnego odpytywania z zbyt wielu systemów (TapHome, Home Assistant, własne skrypty), aby zapobiec wyczerpaniu połączeń.

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 1PM Gen3 Moduł
Atrybuty serwisowe
WiFi
Adres IP
Siła sygnału
MAC
Akcje serwisowe
Aktualizacja firmware
Restart
Zmienne niestandardowe

Shelly 1PM Gen3

Odczyt (moduł)
VAR response := SENDHTTPREQUEST("/rpc/Sys.GetStatus");
IF response.IsSuccess
    Sys.GetStatus := response.Content;
END

response := SENDHTTPREQUEST("/rpc/Sys.GetConfig");
IF response.IsSuccess
    Sys.GetConfig := response.Content;
END

response := SENDHTTPREQUEST("/rpc/WiFi.GetStatus");
IF response.IsSuccess
    WiFi.GetStatus := response.Content;
END

if ! ISNULL(parsejson(Sys.GetStatus, "available_updates.stable", true))
    addwarning("New firmware update is available");
end

if parsejson(Sys.GetStatus, "restart_required", true)
    addwarning("Restart required");
end
Atrybuty serwisowe
Wifi
PARSEJSON(WiFi.GetStatus, "ssid")
${ipAddress}
PARSEJSON(WiFi.GetStatus, "sta_ip")
${xml_signal_strength} [dB]
PARSEJSON(WiFi.GetStatus, "rssi")
MAC
PARSEJSON(Sys.GetStatus, "mac")
Akcje serwisowe
${xml_update_fw}
VAR response := SENDHTTPREQUEST("/rpc/Shelly.Update?stage=\"stable\"");
IF response.IsSuccess
    return("OK");
else
    return("Error");
END

Reboot
VAR response := SENDHTTPREQUEST("/rpc/Shelly.Reboot");
IF response.IsSuccess
    return("OK");
else
    return("Error");
END
Przełącznik Przełącznik
boolean
Wartości / Stany: ON · OFF

Przełącznik

Odczyt stanu przełącznika
var x := (sendhttprequest("/rpc/Switch.GetStatus?id=0"));
var status := x.Content;
return(PARSEJSON(status, "$.output", true));
Zapis stanu przełącznika
VAR response := SENDHTTPREQUEST("rpc/Switch.Set?id=0&on=" + if(St,"true","false"));
IF response.IsSuccess = false
  ADDERROR(response.StatusCode);
END
Licznik energii Licznik energii Tylko do odczytu

Pomiar zużycia energii — moc chwilowa (kW) i energia skumulowana (kWh) z pomiarem prądu, napięcia i temperatury

numeric Jednostka: kW / kWh
Atrybuty serwisowe
Prąd elektryczny
Napięcie elektryczne
Temperatura

Licznik energii

Odczyt całkowitego zużycia
return(parsejson(parsejson(Switch.GetStatus,"aenergy"), "total")/1000);
Odczyt zapotrzebowania
return(parsejson(Switch.GetStatus,"apower")/1000);
Odczyt (moduł)
VAR response := SENDHTTPREQUEST("/rpc/Switch.GetStatus?id=0");
IF response.IsSuccess
    Switch.GetStatus := response.Content;
END
Atrybuty serwisowe
${electric_current} [A]
return(parsejson(Switch.GetStatus,"current"));
${electric_voltage} [V]
return(parsejson(Switch.GetStatus,"voltage"));
${temperature} [°C]
return(parsejson(parsejson(Switch.GetStatus,"temperature"), "tC"));
Połączenie: Packet Parser → HTTP
Możliwe ulepszenia (10)
  • Power Factor — Power factor value, available in Switch.GetStatus response for metered devices
  • Network Frequency — AC network frequency in Hz, available in Switch.GetStatus response
  • Returned Energy — Returned/exported energy in Wh, for bi-directional metering scenarios
  • Input State — Physical switch/button input state, available via /rpc/Input.GetStatus?id=0
  • Uptime — Seconds since last reboot, available in Sys.GetStatus response
  • RAM Usage — Total and free RAM in bytes, available in Sys.GetStatus response
  • Device Time — Current device time in HH:MM format, available in Sys.GetStatus response
  • Auto-off Timer — Auto-reset timer in seconds via toggle_after parameter, could be added as switch parameter
  • Reset Energy Counters — Resets energy measurement counters (aenergy, ret_aenergy)
  • Overpower Protection — Configurable power limit threshold in Watts, relay turns off when exceeded

Źródła