TapHome

Shelly i3

Packet Parser → HTTP
Dodane przez
Ostatnia aktualizacja: 06. 2026
Shelly i3

Shelly i3 to kompaktowy kontroler Wi-Fi z 3 wejściami do akcji i scen (model SHIX3-1). Nie posiada przekaźników ani wyjść — działa wyłącznie jako urządzenie wejściowe, które monitoruje trzy zewnętrzne przełączniki lub przyciski podłączone do zacisków SW1, SW2 i SW3. Wymiary 40 × 36 × 10 mm umożliwiają instalację wewnątrz standardowej puszki podtynkowej za istniejącym włącznikiem ściennym. Zasilany jest z 110–230 VAC (wymagany przewód neutralny) lub 24–60 VDC i pobiera mniej niż 1 W.

TapHome komunikuje się z urządzeniem przez HTTP w lokalnej sieci Wi-Fi — połączenie z chmurą nie jest wymagane. Dla każdego wejścia szablon tworzy dwa urządzenia: przełącznik wielowartościowy, który dekoduje zdarzenia multi-click (sekwencje pojedyncze, podwójne, potrójne, długie i kombinowane), oraz kontakt reed, który udostępnia surowy stan wejścia 0/1 plus akcję serwisową do przełączania między trybem toggle i momentary.

Konfiguracja

Parowanie Wi-Fi i adres IP

Po włączeniu zasilania i3 uruchamia się w trybie Access Point z SSID shellyi3-XXXXXX (gdzie XXXXXX to ostatnie 6 cyfr szesnastkowych adresu MAC). Aby sparować z siecią domową:

  1. Połącz telefon lub laptop z punktem dostępowym i3
  2. Otwórz w przeglądarce http://192.168.33.1 (lub użyj aplikacji mobilnej Shelly)
  3. W interfejsie webowym przejdź do Internet & Security → WIFI MODE - CLIENT, wprowadź dane logowania domowej Wi-Fi i zapisz
  4. Urządzenie zrestartuje się i dołączy do sieci domowej przez DHCP

Aby odzyskać przydzielony adres IP, użyj tablicy dzierżaw DHCP routera lub nazwy hosta mDNS shellyi3-XXXXXXXXXXXX.local (12-znakowy sufiks MAC, ogłaszany jako _http._tcp.local.). Podczas importu szablonu TapHome wprowadź ten adres IP jako jedyny wymagany parametr.

Wyłączenie uwierzytelniania HTTP

TapHome nie potrafi uwierzytelnić się względem urządzenia. W interfejsie webowym Shelly przejdź do Internet & Security → RESTRICT LOGIN i upewnij się, że ta opcja jest wyłączona przed importem szablonu — w przeciwnym razie każde odpytanie zakończy się błędem HTTP 401.

Konfiguracja typu przycisku

Każde z trzech wejść może działać w jednym z pięciu trybów btn_type. Tylko dwa są istotne dla TapHome i udostępniane jako akcja serwisowa na urządzeniach I1 / I2 / I3:

  • Momentary — dla przycisków. Firmware dekoduje pojedyncze krótkie naciśnięcie (S), długie naciśnięcie (L), podwójne krótkie naciśnięcie (SS), potrójne krótkie naciśnięcie (SSS), krótkie→długie (SL) oraz długie→krótkie (LS). Wymagane, aby urządzenia Events I{N} wyzwoliły cokolwiek innego niż None.
  • Toggle — dla tradycyjnych przełączników kołyskowych lub dźwigniowych. Raportowany jest tylko surowy stan 0/1; przełącznik wielowartościowy pozostaje na indeksie 0.

Typ przycisku można zmienić w dowolnym momencie z TapHome za pomocą akcji serwisowej Button Type na każdym urządzeniu I1 / I2 / I3, lub bezpośrednio w interfejsie webowym Shelly w Settings → Input/Output settings.

Firmware obsługuje również tryby edge, detached i action, ale nie są one udostępniane w szablonie TapHome. Nadal można je ustawić z interfejsu webowego Shelly bez naruszenia integracji — zmienia się jedynie zachowanie dekodowania multi-click.

Funkcje urządzenia

Dekodowanie zdarzeń multi-click (Events I1, Events I2, Events I3)

Dla każdego wejścia przełącznik wielowartościowy dekoduje kod zdarzenia z poziomu firmware na jedną z siedmiu wartości:

IndeksZdarzenieKod Shelly
0None"" (idle)
1ShortpushS
2LongpushL
3Double ShortpushSS
4Triple ShortpushSSS
5Shortpush + LongpushSL
6Longpush + ShortpushLS

Szablon odpytuje /input/{0,1,2} co 2,5 sekundy i odczytuje pole event. Przy 6 zdarzeniach × 3 wejścia Shelly reklamuje i3 jako wspierający do 18 odrębnych akcji multi-click (24, jeśli surowe zmiany stanu on/off są liczone jako oddzielne wyzwalacze).

Próg długiego naciśnięcia oraz okno multi-push są skonfigurowane globalnie na urządzeniu (wartości domyślne: 800 ms dla długiego naciśnięcia, 500 ms okno między naciśnięciami). Można je dostroić w interfejsie webowym Shelly w Settings → Long Push Duration i Multi Push Time.

Surowy stan wejścia i sterowanie typem przycisku (I1, I2, I3)

Dla każdego wejścia urządzenie reed-contact udostępnia surowy stan logiczny odczytany z pola input w /input/{N} (0 = otwarty, 1 = zamknięty, po opcjonalnej inwersji btn_reverse). Każde urządzenie I1 / I2 / I3 zawiera również:

  • Button Type — atrybut serwisowy z bieżącą wartością btn_type (toggle / momentary / edge / detached / action)
  • Button Type — akcja serwisowa, która przełącza wejście między Toggle i Momentary, zapisując POST /settings/input/{N}?btn_type=...

Surowy stan jest odpowiedni dla magnetycznych kontaktów drzwi / okien podłączonych do zacisków SW lub do śledzenia w czasie rzeczywistym pozycji przełącznika dźwigniowego.

Diagnostyka serwisowa

Pojedynczy atrybut serwisowy na poziomie modułu udostępnia Wi-Fi SSID, do którego i3 jest aktualnie podłączony (odczyt z /statuswifi_sta.ssid). Inne diagnostyki Gen1 (uptime, MAC, RSSI, flaga aktualizacji firmware) są dostępne w REST API urządzenia, ale nie są udostępnione w tym szablonie.

Zdarzenia multi-click wyzwalają się tylko w trybie momentary. Jeśli wejście fizyczne jest podłączone przez tradycyjny przełącznik dźwigniowy, skonfiguruj to wejście jako Toggle i użyj urządzenia reed-contact I{N} do odczytu jego stanu 0/1 — odpowiadające urządzenie Events I{N} pozostanie na indeksie 0.

Rozwiązywanie problemów

Zdarzenia multi-click nie są wykrywane
  1. Sprawdź, czy wejście jest w trybie momentary — otwórz urządzenie I{N} w TapHome, uruchom akcję serwisową Button Type i wybierz Momentary, lub ustaw bezpośrednio w interfejsie webowym Shelly w Settings → Input/Output settings
  2. W trybie toggle firmware raportuje tylko zmiany stanu; przełącznik wielowartościowy Events I{N} pozostaje na indeksie 0
  3. Dostosuj Long Push Duration (domyślnie 800 ms) i Multi Push Time (domyślnie 500 ms) w interfejsie webowym Shelly, jeśli naciśnięcia są dekodowane jako niewłaściwe zdarzenie
  4. Długie sekwencje, takie jak SSS, SL lub LS, wymagają, aby użytkownik utrzymał wszystkie naciśnięcia w obrębie okna multi-push — przerwy dłuższe niż to okno są dekodowane jako oddzielne zdarzenia S
To samo zdarzenie powtarza się w nieskończoność / „zacięte" zdarzenie

Pole event zwracane przez /input/{N} to ostatnie zdekodowane zdarzenie — firmware nie czyści go automatycznie. TapHome odczytuje to pole przy każdym odpytaniu, więc przełącznik wielowartościowy będzie nadal raportował poprzednie zdarzenie, dopóki nie wystąpi nowe. Jest to normalne zachowanie i nie wskazuje na usterkę. Pisząc logikę niestandardową wyzwalaną przy każdym naciśnięciu, sparuj zdarzenie z monotonicznym licznikiem event_cnt (również dostępnym w /input/{N}), aby wykryć zmianę zamiast polegać wyłącznie na wartości event.

Urządzenie nie odpowiada
  1. Sprawdź, czy i3 jest podłączony do Wi-Fi — otwórz w przeglądarce http://{device-ip}/shelly; jeśli zwróci obiekt JSON, urządzenie jest osiągalne
  2. Spróbuj nazwy hosta mDNS shellyi3-XXXXXXXXXXXX.local zamiast adresu IP — IP mogło zmienić się po odnowieniu DHCP
  3. Upewnij się, że uwierzytelnianie HTTP jest wyłączone w Internet & Security → Restrict login — TapHome nie może wysłać poświadczeń, a każde żądanie zwróci HTTP 401
  4. Sprawdź, czy TapHome Core i urządzenie Shelly są w tej samej sieci lub VLAN z dozwolonym mDNS / multicastem

Urządzenia Shelly Gen1 akceptują maksymalnie 2 jednoczesne połączenia HTTP. Dostarczony szablon odpytuje każde wejście co 2,5 s, co już jest blisko limitu. Nie obniżaj interwału odpytywania i unikaj uruchamiania innego systemu (np. Home Assistant, własnych skryptów), który odpytuje to samo i3 jednocześnie — komunikacja może stać się niestabilna.

Szablon XML zawiera trzy zarezerwowane indeksy wielowartościowe (7, 8, 9 z surowymi kodami 71/72/73 i ogólnymi etykietami „7" / „8" / „9"). Firmware Gen1 nie emituje żadnych zdarzeń poza S, L, SS, SSS, SL i LS, więc te indeksy są nieużywanymi miejscami zastępczymi, a wartość urządzenia Events I{N} nie powinna w praktyce nigdy osiągnąć 7-9.

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 i3 Moduł
Atrybuty serwisowe
Wi-FiSSID sieci Wi-Fi, do której urządzenie jest aktualnie podłączone

Shelly i3

Atrybuty serwisowe
Wifi
 VAR response := SENDHTTPREQUEST("/status");
 IF response.IsSuccess
  VAR content := response.Content;
  RETURN(PARSEJSON(content, "$.wifi_sta.ssid"));
  End
Events I1 Przełącznik wielowartościowy Tylko do odczytu

Zdekodowane zdarzenie multi-click dla wejścia I1 — None, Shortpush, Longpush, Double Shortpush, Triple Shortpush, Shortpush + Longpush, Longpush + Shortpush (wyzwala się tylko gdy Button Type jest ustawiony na Momentary)

string (decoded to UInt8 via SWITCH) json_path
Wartości / Stany: None · Shortpush · Longpush · Double Shortpush · Triple Shortpush · Shortpush + Longpush · Longpush + Shortpush

Events I1

Odczyt stanu przełącznika
VAR response := SENDHTTPREQUEST("/input/0");
 IF response.IsSuccess
  VAR content := response.Content;
  RETURN(SWITCH(PARSEJSON(content, "event"),"S", 1, "L", 2, "SS", 3, "SSS", 4, "SL", 5, "LS", 6, 0));
 ELSE
  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
  RETURN(NaN);
 END
Events I2 Przełącznik wielowartościowy Tylko do odczytu

Zdekodowane zdarzenie multi-click dla wejścia I2 — None, Shortpush, Longpush, Double Shortpush, Triple Shortpush, Shortpush + Longpush, Longpush + Shortpush (wyzwala się tylko gdy Button Type jest ustawiony na Momentary)

string (decoded to UInt8 via SWITCH) json_path
Wartości / Stany: None · Shortpush · Longpush · Double Shortpush · Triple Shortpush · Shortpush + Longpush · Longpush + Shortpush

Events I2

Odczyt stanu przełącznika
VAR response := SENDHTTPREQUEST("/input/1");
 IF response.IsSuccess
  VAR content := response.Content;
  RETURN(SWITCH(PARSEJSON(content, "event"),"S", 1, "L", 2, "SS", 3, "SSS", 4, "SL", 5, "LS", 6, 0));
 ELSE
  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
  RETURN(NaN);
 END
Zapis stanu przełącznika
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/set/value=" + Mu);
# IF response.IsSuccess = false
#  ADDERROR(response.StatusCode);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/setValue", "GET", "value=" + Mu, "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\":" + Mu + "}";
# SENDDATA(data1);
# VAR data2 := TOBYTES("{\"name\":\"John\", \"age\":" + Mu + "}", "iso-8859-1");
# SENDDATA(data2);
# You can process received TCP or UDP data in the Listener script
#
#
# Upload data to FTP:
# FTPUPLOAD("filePath", "somedata=" + Mu, "write"); # use "append" mode to append data to existing file
Events I3 Przełącznik wielowartościowy Tylko do odczytu

Zdekodowane zdarzenie multi-click dla wejścia I3 — None, Shortpush, Longpush, Double Shortpush, Triple Shortpush, Shortpush + Longpush, Longpush + Shortpush (wyzwala się tylko gdy Button Type jest ustawiony na Momentary)

string (decoded to UInt8 via SWITCH) json_path
Wartości / Stany: None · Shortpush · Longpush · Double Shortpush · Triple Shortpush · Shortpush + Longpush · Longpush + Shortpush

Events I3

Odczyt stanu przełącznika
VAR response := SENDHTTPREQUEST("/input/2");
 IF response.IsSuccess
  VAR content := response.Content;
  RETURN(SWITCH(PARSEJSON(content, "event"),"S", 1, "L", 2, "SS", 3, "SSS", 4, "SL", 5, "LS", 6, 0));
 ELSE
  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
  RETURN(NaN);
 END
Zapis stanu przełącznika
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/set/value=" + Mu);
# IF response.IsSuccess = false
#  ADDERROR(response.StatusCode);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/setValue", "GET", "value=" + Mu, "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\":" + Mu + "}";
# SENDDATA(data1);
# VAR data2 := TOBYTES("{\"name\":\"John\", \"age\":" + Mu + "}", "iso-8859-1");
# SENDDATA(data2);
# You can process received TCP or UDP data in the Listener script
#
#
# Upload data to FTP:
# FTPUPLOAD("filePath", "somedata=" + Mu, "write"); # use "append" mode to append data to existing file
Wejście I1 Kontakt reed Tylko do odczytu

Surowy stan logiczny wejścia I1 — 0 (otwarty) lub 1 (zamknięty), odzwierciedlający bieżącą pozycję przełącznika podłączonego do zacisku SW1

boolean json_path
Atrybuty serwisowe
Typ przyciskuAktualny tryb zachowania wejścia I1 — Toggle (tradycyjny przełącznik) lub Momentary (przycisk, wymagany do dekodowania multi-click)
Akcje serwisowe
Typ przyciskuPrzełącza wejście I1 między Toggle (tradycyjny przełącznik) i Momentary (przycisk — wymagane, aby dekodowanie multi-click Events I1 zostało wyzwolone)

Wejście I1

Odczyt
VAR response := SENDHTTPREQUEST("/input/0");
 IF response.IsSuccess
  VAR content := response.Content;
  RETURN(PARSEJSON(content, "input"));
 ELSE
  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
  RETURN(NaN);
 END
Odczyt (moduł)
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/getValue");
# IF response.IsSuccess
#  VAR content := response.Content;
#  VAR responseHeaders := response.Headers;
#  RETURN(PARSEXML(content, "//element1/value1"));
# ELSE
#  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
#  RETURN(NaN);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/getValue", "GET", "some data", "header1:value1", "header2:value2", ...);
# OR
# VAR request := HTTPREQUEST("/example/getValue", "POST", "some data");
# request.headers := { "header1:value1", "header2:value2", ...};
# request.method := "GET";
# request.data := null;
# VAR response := SENDHTTPREQUEST(request);
#
#
# Send TCP, UDP data:
# VAR data1 := BYTECOLLECTION("0a bb ea df 01");
# SENDDATA(data1);
# VAR data2 := "{\"name\":\"John\", \"age\":32}";
# SENDDATA(data2);
# VAR data3 := TOBYTES("{\"name\":\"John\", \"age\":32}", "iso-8859-1");
# SENDDATA(data3);
# Process received TCP or UDP data and set device values in the Listener script
#
#
# Download data from FTP:
# FTPDOWNLOAD("filePath");
Atrybuty serwisowe
Button Type
 VAR response := SENDHTTPREQUEST("/settings/input/0");
 IF response.IsSuccess
  VAR content := response.Content;
  RETURN(PARSEJSON(content, "btn_type"));
 END
Akcje serwisowe
Button Type
Parametry: Button Type
 var Ru := SWITCH(Bu, 0, "toggle","momentary") ;
 VAR response := SENDHTTPREQUEST("/settings/input/0?btn_type=" + Ru);
Wejście I2 Kontakt reed Tylko do odczytu

Surowy stan logiczny wejścia I2 — 0 (otwarty) lub 1 (zamknięty), odzwierciedlający bieżącą pozycję przełącznika podłączonego do zacisku SW2

boolean json_path
Atrybuty serwisowe
Typ przyciskuAktualny tryb zachowania wejścia I2 — Toggle (tradycyjny przełącznik) lub Momentary (przycisk, wymagany do dekodowania multi-click)
Akcje serwisowe
Typ przyciskuPrzełącza wejście I2 między Toggle (tradycyjny przełącznik) i Momentary (przycisk — wymagane, aby dekodowanie multi-click Events I2 zostało wyzwolone)

Wejście I2

Odczyt
VAR response := SENDHTTPREQUEST("/input/1");
 IF response.IsSuccess
  VAR content := response.Content;
  RETURN(PARSEJSON(content, "input"));
 ELSE
  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
  RETURN(NaN);
 END
Atrybuty serwisowe
Button Type
 VAR response := SENDHTTPREQUEST("/settings/input/1");
 IF response.IsSuccess
  VAR content := response.Content;
  RETURN(PARSEJSON(content, "btn_type"));
 END
Akcje serwisowe
Button Type
Parametry: Button Type
 var Ru := SWITCH(Bu, 0, "toggle","momentary") ;
 VAR response := SENDHTTPREQUEST("/settings/input/1?btn_type=" + Ru);
Wejście I3 Kontakt reed Tylko do odczytu

Surowy stan logiczny wejścia I3 — 0 (otwarty) lub 1 (zamknięty), odzwierciedlający bieżącą pozycję przełącznika podłączonego do zacisku SW3

boolean json_path
Atrybuty serwisowe
Typ przyciskuAktualny tryb zachowania wejścia I3 — Toggle (tradycyjny przełącznik) lub Momentary (przycisk, wymagany do dekodowania multi-click)
Akcje serwisowe
Typ przyciskuPrzełącza wejście I3 między Toggle (tradycyjny przełącznik) i Momentary (przycisk — wymagane, aby dekodowanie multi-click Events I3 zostało wyzwolone)

Wejście I3

Odczyt
VAR response := SENDHTTPREQUEST("/input/2");
 IF response.IsSuccess
  VAR content := response.Content;
  RETURN(PARSEJSON(content, "input"));
 ELSE
  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
  RETURN(NaN);
 END
Odczyt (moduł)
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/getValue");
# IF response.IsSuccess
#  VAR content := response.Content;
#  VAR responseHeaders := response.Headers;
#  RETURN(PARSEXML(content, "//element1/value1"));
# ELSE
#  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
#  RETURN(NaN);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/getValue", "GET", "some data", "header1:value1", "header2:value2", ...);
# OR
# VAR request := HTTPREQUEST("/example/getValue", "POST", "some data");
# request.headers := { "header1:value1", "header2:value2", ...};
# request.method := "GET";
# request.data := null;
# VAR response := SENDHTTPREQUEST(request);
#
#
# Send TCP, UDP data:
# VAR data1 := BYTECOLLECTION("0a bb ea df 01");
# SENDDATA(data1);
# VAR data2 := "{\"name\":\"John\", \"age\":32}";
# SENDDATA(data2);
# VAR data3 := TOBYTES("{\"name\":\"John\", \"age\":32}", "iso-8859-1");
# SENDDATA(data3);
# Process received TCP or UDP data and set device values in the Listener script
#
#
# Download data from FTP:
# FTPDOWNLOAD("filePath");
Atrybuty serwisowe
Button Type
 VAR response := SENDHTTPREQUEST("/settings/input/2");
 IF response.IsSuccess
  VAR content := response.Content;
  RETURN(PARSEJSON(content, "btn_type"));
 END
Akcje serwisowe
Button Type
Parametry: Button Type
 var Ru := SWITCH(Bu, 0, "toggle","momentary") ;
 VAR response := SENDHTTPREQUEST("/settings/input/2?btn_type=" + Ru);
Połączenie: Packet Parser → HTTP
Możliwe ulepszenia (14)
  • Input Event Counter — Monotonic UInt16 counter incrementing on every decoded event — required to reliably detect rapid repeats since the event field is sticky. Could be exposed as a Variable per input.
  • Extended Button Type modes — Template's Button Type service action only exposes Toggle/Momentary; firmware also supports edge, detached and action modes.
  • Input Logic Reverse — Inverts logical state of an input. Could be added as bool service action per input.
  • Long-push Minimum Duration — Default 800 ms, range 1–5000 ms. Global parameter applied to all three inputs.
  • Long-push Maximum Duration — Default 800 ms, range 1–5000 ms.
  • Multi-push Window — Default 500 ms, range 1–1000 ms. Window for joining short pushes into SS/SSS sequences.
  • Action / Webhook Table — Per-event HTTP webhook URLs (btn_on_url, btn_off_url, shortpush_url, longpush_url, double_shortpush_url, triple_shortpush_url, shortpush_longpush_url, longpush_shortpush_url). Out of scope for TapHome which polls inputs directly.
  • Wi-Fi Signal Strength — RSSI in dBm, available in /status. Could be added as a module-level service attribute.
  • Firmware Update Available — Boolean from /status. Other Shelly Gen1 templates expose this as 'FW update' service attribute.
  • Uptime — Seconds since boot. Diagnostic value commonly exposed by other Shelly Gen1 templates.
  • MAC Address — Diagnostic identifier, commonly exposed by other Shelly Gen1 templates as a service attribute.
  • Cloud Status — Shelly Cloud enable + connection booleans.
  • MQTT Connection Status — MQTT broker connection state.
  • While-pressed Long-push Pulse — MQTT-only feature: stays at 1 for the duration of a long press, useful for 'while-pressed' actions. Not available via HTTP polling.

Źródła

Znalazłeś problem z tym szablonem urządzenia?

Napisz nam, co nie działa, czego brakuje lub jak powinien zachowywać się szablon. Twoja opinia pomaga nam utrzymać katalog dokładnym.

Zweryfikowane przez TapHome

Chcesz tego użyć w swoim TapHome Core?

Otwórz ten szablon w portalu klienta, aby zastosować go w swoim domu, lub zaproponuj modyfikację i wyślij ją z powrotem do katalogu.

Otwórz w portalu