TapHome

Shelly 2.5

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

Shelly 2.5 to kompaktowy dwukanałowy przekaźnik Wi-Fi z wbudowanym pomiarem mocy na obu kanałach. Mieści się za standardowym włącznikiem ściennym i może sterować dwoma niezależnymi obwodami, każdy wymiarowany do 10 A (2300 W przy 230 V), z łącznym maksimum 20 A. Urządzenie obsługuje dwa tryby pracy — przekaźnik (dwa niezależne przełączniki) i roleta (skoordynowane sterowanie silnikiem) — ale szablon TapHome implementuje tylko tryb przekaźnika. TapHome komunikuje się z urządzeniem przez HTTP w sieci lokalnej — połączenie z chmurą nie jest wymagane.

Szablon udostępnia dwa przełączniki przekaźnikowe i dwa liczniki energii (po jednym na kanał) oraz akcję serwisową do przełączania między trybem przekaźnika a rolety.

Konfiguracja

Shelly 2.5 łączy się przez Wi-Fi. Podczas importu szablonu TapHome podaj adres IP urządzenia (domyślny placeholder 192.168.0.1).

Bieżący tryb pracy jest udostępniony jako atrybut serwisowy na poziomie modułu (“Mode”) i może być zmieniony przez akcję serwisową “Mode”. Przełączanie między trybem przekaźnika a rolety wymaga restartu urządzenia.

Możliwości urządzenia

Sterowanie przekaźnikiem

Szablon udostępnia dwa niezależne kanały przekaźnikowe. Stan każdego przekaźnika jest odczytywany z odpowiedniego endpointu /relay/ (pole ison) i sterowany przez turn=on lub turn=off.

  • Kanał 1 — odczyt i sterowanie /relay/0
  • Kanał 2 — odczyt i sterowanie /relay/1

Każdy przekaźnik posiada trzy atrybuty serwisowe:

  • Overpower — czy na kanale wykryto stan przeciążenia
  • Overtemperature — czy urządzenie przekroczyło bezpieczną temperaturę roboczą
  • Power Meter — ważność pomiaru (OK lub Awaria)
Pomiar mocy

Każdy kanał ma dedykowany licznik energii odczytujący dwie wartości z endpointu /meter/:

  • Moc w czasie rzeczywistympower w watach, konwertowana na kW przez szablon
  • Całkowite zużycietotal w watominutach, konwertowane na kWh przez szablon

Każdy licznik energii udostępnia atrybut serwisowy “Overpower” pokazujący wartość progową przeciążenia (w watach, podzielone przez 1000).

Liczniki są tylko do odczytu — aktualizują się automatycznie z każdym cyklem odpytywania (interwał 15 sekund).

Znany problem — wartość energii kanału 1 jest 10× za wysoka. Szablon dzieli total przez 6000 dla kanału 1 zamiast 60000 (które kanał 2 używa poprawnie). Oznacza to, że skumulowana wartość energii dla kanału 1 będzie około 10 razy wyższa niż rzeczywiste zużycie. Jest to błąd w formule konwersji szablonu.

Dodatkowe możliwości

Shelly 2.5 natywnie obsługuje pełne sterowanie roletami (otwieranie/zamykanie/stop z pozycją 0–100% po kalibracji), ruchome jednominutowe średnie mocy na kanał, stany fizycznych wejść przełączników, wewnętrzną temperaturę urządzenia, siłę sygnału Wi-Fi i timery automatycznego wyłączenia na kanał. Urządzenie może również przechowywać do czterech ulubionych pozycji rolet. Te funkcje mogą zostać dodane w przyszłej aktualizacji szablonu.

W porównaniu z szablonem Shelly 1PM, szablon Shelly 2.5 nie udostępnia diagnostyki urządzenia takich jak nazwa hosta, adres MAC, czas pracy, użycie RAM, status cloud/MQTT, dostępność aktualizacji firmware ani temperatura wewnętrzna. Brakuje również akcji serwisowej ochrony mocy (limit maksymalnej mocy) i akcji restartu.

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 (shellyswitch25-AABBCCDDEE.local) zamiast adresu IP — IP mógł się zmienić po odnowieniu DHCP
  3. Otwórz http://{device-ip}/shelly w przeglądarce — jeśli odpowiada, urządzenie jest osiągalne
  4. Upewnij się, że TapHome CCU i Shelly są w tej samej sieci / VLAN
Wartości mocy pokazują zero
  1. Potwierdź, że obciążenie jest podłączone przez przekaźnik Shelly (nie 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 /meter/0 lub /meter/1 i sprawdź, czy power zwraca niezerową wartość
Suma energii kanału 1 wydaje się nieprawidłowa

Szablon dzieli sumę kanału 1 przez 6000 zamiast prawidłowego 60000 (używanego przez kanał 2). W rezultacie skumulowana wartość energii dla kanału 1 jest 10× wyższa niż rzeczywista. Obecnie nie ma obejścia w szablonie — współczynnik konwersji jest osadzony w skrypcie odpytywania.

Urządzenia Shelly Gen1 obsługują tylko 2 równoczesne połączenia HTTP. Jeśli TapHome i inny system (np. Home Assistant) jednocześnie odpytują to samo urządzenie, komunikacja może stać się zawodna. Endpointy przekaźników są odpytywane co 2,5 sekundy, a endpointy liczników co 15 sekund.

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 2.5 Moduł
Atrybuty serwisowe
Tryb
Akcje serwisowe
Tryb

Shelly2.5

Atrybuty serwisowe
Mode
 VAR response := SENDHTTPREQUEST("/settings");
 IF response.IsSuccess
  VAR content := response.Content;
  VAR responseHeaders := response.Headers;
  RETURN(PARSEJSON(content, "mode"));
 END
Akcje serwisowe
Mode
Parametry: Mode
var St := SWITCH(mo, 1, "roller", "relay");
 VAR response := SENDHTTPREQUEST("/settings?mode=" + St);
Licznik energii — Kanał 1 Licznik energii Tylko do odczytu

Pomiar mocy i energii kanału 1 — moc chwilowa (kW) i energia skumulowana (kWh). Uwaga: odczyt energii jest 10× za wysoki z powodu błędu dzielnika w szablonie (/6000 zamiast /60000)

numeric Jednostka: W / kWh
Atrybuty serwisowe
Przeciążenie

Licznik energii — Kanał 1

Odczyt całkowitego zużycia
VAR response := SENDHTTPREQUEST("/meter/0");
 IF response.IsSuccess
  VAR content := response.Content;
 VAR responseHeaders := response.Headers;
 RETURN(PARSEJSON(content, "total")/6000);
 ELSE 
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
  RETURN(NaN);
 END
Odczyt zapotrzebowania
VAR response := SENDHTTPREQUEST("/meter/0");
 IF response.IsSuccess
  VAR content := response.Content;
 VAR responseHeaders := response.Headers;
 RETURN(PARSEJSON(content, "power")/1000);
 ELSE 
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
  RETURN(NaN);
 END
Atrybuty serwisowe
Overpower
 VAR response := SENDHTTPREQUEST("/meter/0");
 IF response.IsSuccess
  VAR content := response.Content;
 RETURN((PARSEJSON(content, "overpower")/1000) + " W");
 END
Licznik energii — Kanał 2 Licznik energii Tylko do odczytu

Pomiar mocy i energii kanału 2 — moc chwilowa (kW) i energia skumulowana (kWh)

numeric Jednostka: W / kWh
Atrybuty serwisowe
Przeciążenie

Licznik energii — Kanał 2

Odczyt całkowitego zużycia
VAR response := SENDHTTPREQUEST("/meter/1");
 IF response.IsSuccess
  VAR content := response.Content;
 VAR responseHeaders := response.Headers;
 RETURN(PARSEJSON(content, "total")/60000);
 ELSE 
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
  RETURN(NaN);
 END
Odczyt zapotrzebowania
VAR response := SENDHTTPREQUEST("/meter/1");
 IF response.IsSuccess
  VAR content := response.Content;
 VAR responseHeaders := response.Headers;
 RETURN(PARSEJSON(content, "power")/1000);
 ELSE 
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
  RETURN(NaN);
 END
Atrybuty serwisowe
Overpower
 VAR response := SENDHTTPREQUEST("/meter/1");
 IF response.IsSuccess
  VAR content := response.Content;
 VAR responseHeaders := response.Headers;
 RETURN((PARSEJSON(content, "overpower")/1000) + " W");
 END
Przekaźnik — Kanał 1 Przełącznik
boolean
Wartości / Stany: ON · OFF

Przekaźnik — Kanał 1

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 turn := Switch(St, 1, "on", "off");
 VAR response := SENDHTTPREQUEST("/relay/0?turn=" + turn);
 IF response.IsSuccess = false
  ADDERROR(response.StatusCode);
 END
Atrybuty serwisowe
Overpower
 VAR response := SENDHTTPREQUEST("/relay/0");
 IF response.IsSuccess
  VAR content := response.Content;
  RETURN(IF(PARSEJSON(content, "overpower"),"Yes", "No"));
 END
Overtemperature
 VAR response := SENDHTTPREQUEST("/relay/0");
 IF response.IsSuccess
  VAR content := response.Content;
  RETURN(IF(PARSEJSON(content, "overtemperature"),"Yes", "No"));
 END
Power Meter
 VAR response := SENDHTTPREQUEST("/relay/0");
 IF response.IsSuccess
  VAR content := response.Content;
  RETURN(IF(PARSEJSON(content, "is_valid"),"OK","Fault"));
 END
Przekaźnik — Kanał 2 Przełącznik
boolean
Wartości / Stany: ON · OFF

Przekaźnik — Kanał 2

Odczyt stanu przełącznika
VAR response := SENDHTTPREQUEST("/relay/1");
 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 turn := Switch(St, 1, "on", "off");
 VAR response := SENDHTTPREQUEST("/relay/1?turn=" + turn);
 IF response.IsSuccess = false
  ADDERROR(response.StatusCode);
 END
Atrybuty serwisowe
Overpower
 VAR response := SENDHTTPREQUEST("/relay/1");
 IF response.IsSuccess
  VAR content := response.Content;
  RETURN(IF(PARSEJSON(content, "overpower"),"Yes", "No"));
 END
Overtemperature
 VAR response := SENDHTTPREQUEST("/relay/1");
 IF response.IsSuccess
  VAR content := response.Content;
  RETURN(IF(PARSEJSON(content, "overtemperature"),"Yes", "No"));
 END
Power Meter
 VAR response := SENDHTTPREQUEST("/relay/1");
 IF response.IsSuccess
  VAR content := response.Content;
  RETURN(IF(PARSEJSON(content, "is_valid"),"OK","Fault"));
 END
Połączenie: Packet Parser → HTTP
Możliwe ulepszenia (9)
  • Roller Shutter Control — Full roller shutter control (open/close/stop/position 0-100%) — the Shelly 2.5's key dual-mode feature. Template only implements relay mode.
  • Roller Position — Current roller position 0-100% (requires calibration). Not available without /roller/ endpoint.
  • Roller Calibration — Initiates travel-time calibration procedure for position control.
  • Rolling Power Averages — 3 rolling one-minute power averages per channel, available in /meter/ response
  • Input States — Physical switch input states (0/1) for both channels, available in /status response
  • Internal Device Temperature — Internal temperature in C available in /status response (not exposed as a device, only as relay SA)
  • Auto-off Timer — Per-channel auto-off timer in seconds, could be added as service action parameter
  • WiFi Signal Strength — WiFi RSSI in dBm, available in /status response
  • Favorite Positions (Roller Mode) — Up to 4 saved roller shutter positions — only relevant if roller mode is implemented

Źródła