TapHome

Shelly TRV

Packet Parser → HTTP
Dodane przez
Ostatnia aktualizacja: 04. 2026
Shelly TRV

Shelly TRV (SHTRV-01) to bateryjna głowica termostatyczna Wi-Fi od Allterco Robotics. Mocuje się ją bezpośrednio na korpusie zaworu standardowego grzejnika wodnego i reguluje temperaturę pokoju poprzez ruch trzpienia zaworu napędzanego wewnętrznym silnikiem. TapHome komunikuje się z urządzeniem przez HTTP w sieci lokalnej — bez bramy, bez chmury, bez brokera MQTT.

Shelly TRV jest produktem wycofanym, zastąpionym przez wersję Bluetooth Shelly BLU TRV. Istniejące egzemplarze nadal działają, a szablon pozostaje w pełni obsługiwany; dla nowych projektów warto rozważyć następcę.

Dla tego samego fizycznego urządzenia dostępne są dwa alternatywne szablony — wybierz w zależności od oczekiwanego sposobu sterowania.

SzablonUdostępniaZastosowanie
Shelly TRV (main)Baterię + termostat w pętli zamkniętejSterowanie temperaturą pokoju przez użytkownika końcowego poprzez setpoint (5-30 °C). Firmware steruje zaworem wewnętrznie.
Shelly TRV (valve)Baterię + ściemniacz zaworu + termostat (wariant setpoint)Inteligentne reguły wymagające bezpośredniego nadpisania zaworu — pozycja zaworu jako ściemniacz 0.0-1.0.

Nie importuj obu szablonów dla tego samego urządzenia fizycznego. Oba łączą się z tym samym endpointem i pętle pollingu będą kolidować — zapisy będą sprzeczne, a zachowanie zaworu stanie się nieprzewidywalne.

Instalacja sprzętu

Shelly TRV nie wymaga okablowania — to mechaniczna głowica grzejnikowa z wewnętrzną elektroniką, zasilana wbudowanym akumulatorem Li-ion (Panasonic NCR18650BD, 3,7 V / 6500 mAh). Mocuje się bezpośrednio na korpusie zaworu za pomocą metalowej nakrętki zaciskowej.

Zgodne korpusy zaworów

Natywny gwint: M30 × 1,5. W zestawie znajdują się następujące adaptery:

  • Danfoss — RA, RAV, RAVL
  • Caleffi
  • Giacomini
  • M28 × 1,5 — Sam, Slovarm, Comap, TA, Herz, MMA, Remagg
  • Pont à Mousson

Adaptery firm trzecich (nie wchodzą w skład zestawu) rozszerzają zgodność o Gampper, Ista, Meges, Ondal, Oventrop, Rossweiner, Vaillant i inne.

Procedura montażu
  1. Upewnij się, że grzejnik jest wyłączony i wystygł.
  2. Obróć istniejącą ręczną głowicę w lewo aż do oporu (pełne otwarcie), następnie odkręć metalową nakrętkę zaciskową i zdejmij głowicę.
  3. Jeśli gwint zaworu nie jest natywny M30 × 1,5, załóż odpowiedni adapter.
  4. Osadź Shelly TRV na korpusie zaworu i dokręć metalową nakrętkę w prawo — mocno, ale bez przesadzania. Zarówno zbyt luźne, jak i zbyt mocne dokręcenie powoduje błąd kalibracji.
  5. Przed ostatecznym dokręceniem nakrętki obróć wyświetlacz do żądanej orientacji.
  6. Krótko naciśnij Reset (tył urządzenia). Wyświetlacz pokaże CL (kalibracja), a wewnętrzny silnik przesunie się w obu kierunkach. Udana kalibracja kończy się komunikatem AP; niepowodzenie pokazuje E1.

Kalibrację należy wykonać po każdym przełożeniu na inny korpus zaworu. Dopóki nie zostanie osiągnięty stan calibrated=true, zapisy zadanej temperatury i pozycji z TapHome są odrzucane z błędem Device is not calibrated.

Ładowanie

Urządzenie ładuje się przez USB-C (kabel w zestawie, zasilacz nie). Ładowarka USB-C ≥1 A ładuje akumulator z pustego do pełnego w około 5 godzin. Typowa żywotność baterii to ~2 lata (~5 miesięcy ciągłego sezonu grzewczego przy typowym użyciu).

Podczas ładowania obudowa urządzenia nagrzewa się, a wewnętrzny czujnik temperatury odczytuje niepoprawnie. Dopóki charger nie jest disconnected, spodziewaj się zafałszowanych wartości temperatury pokoju.

Konfiguracja

Import w TapHome

Podczas importu szablonu TapHome pyta o jeden parametr:

ParametrOpisDomyślnie
IpAddressLokalny adres IP lub nazwa mDNS urządzenia192.168.0.1

Port 80 jest stały. HTTPS nie jest obsługiwany w Gen1. HTTP Basic Auth musi być wyłączona na urządzeniu — TapHome nie uwierzytelnia się wobec urządzeń Gen1 Shelly.

Tam, gdzie to możliwe, używaj nazwy mDNS (shellytrv-XXXXXX.local) — jest odporna na zmiany dzierżaw DHCP. IP Scanner TapHome (Ustawienia → Sieć → Skanuj) wykrywa zarówno IP, jak i nazwę mDNS.

Wyłączenie harmonogramu tygodniowego

Shelly TRV ma wbudowany harmonogram tygodniowy (5 profili, do 18 zaplanowanych zmian tygodniowo na profil). Gdy harmonogram jest włączony, firmware nadpisuje każdy zapis z zewnątrz przy najbliższym zaplanowanym zdarzeniu — setpointy TapHome są po cichu cofane.

Szablon sygnalizuje to ostrzeżeniem (Schedule is enabled). Zanim oddasz sterowanie TapHome, wykonaj jedno z:

  • uruchom akcję serwisową Disable schedule na module (wysyła /settings/thermostats/0?schedule=false), lub
  • w aplikacji Shelly Cloud lub w interfejsie WWW urządzenia wybierz profil Disable.
Zewnętrzny czujnik pokojowy (zalecane)

Wbudowany czujnik temperatury znajduje się fizycznie blisko gorącej rury grzejnika i typowo odczytuje 1-3 °C powyżej rzeczywistej temperatury pokoju. Dostępne są dwie ścieżki korekty:

  • Czujnik zewnętrzny — sparuj osobny termometr Wi-Fi (np. Shelly H&T) w interfejsie WWW urządzenia → Sensor SettingsEnable external temperature corrections endpoint. Zewnętrzny czujnik przesyła następnie temperaturę otoczenia do TRV poprzez POST.
  • Statyczne przesunięcie — użyj akcji serwisowej Set temperature offset na urządzeniu Thermostat (zakres ±20 °C) do kompensacji stałej różnicy.

Dla najlepszego komfortu cieplnego połącz wiarygodny czujnik zewnętrzny z niewielkim statycznym przesunięciem jako rezerwą.

Możliwości urządzenia

Główny szablon udostępnia urządzenie jako wskaźnik baterii oraz termostat w pętli zamkniętej. Szablon valve zachowuje ten sam moduł i baterię, ale udostępnia pozycję zaworu jako ściemniacz i używa wariantu setpoint, który przy zapisie wyłącza automatyczną regulację PID. Diagnostyki i akcje na poziomie modułu są identyczne dla obu szablonów.

Stan baterii

Bateria jest udostępniana jako przełącznik wielowartościowy wyprowadzony z raportowanego poziomu naładowania i stanu ładowarki USB-C. Stan ładowarki ma pierwszeństwo przed poziomem naładowania:

StanWarunek
Criticalbat.value < 25
Lowbat.value 25-50
Normalbat.value 50-75
Fullbat.value > 75
Chargingcharger != disconnected

Dwa dodatkowe atrybuty serwisowe raportują surowy poziom naładowania (%) oraz napięcie ogniwa (V, nominalnie ~3,7 V, typowy zakres 2,6-4,2 V). Szablon generuje Low battery poniżej 50 % i Battery charge is critically low poniżej 25 %.

Termostat (szablon główny)

Termostat pokojowy z pętlą zamkniętą: TapHome zapisuje zadany setpoint, a firmware TRV steruje pozycją zaworu wewnętrznie na podstawie wbudowanego (lub zewnętrznego) czujnika temperatury.

  • Odczyt: zmierzona temperatura pokoju (thermostats[0].tmp.value) i aktywny cel (thermostats[0].target_t.value)
  • Zapis: setpoint 5-30 °C przez /settings/thermostats/0?target_t={Se}

Uzupełniające atrybuty termostatu obejmują Temperature offset [°C], Valve position [%] (tylko do odczytu, dla widoczności wyjścia PID), Force close, Extra pressure i Automatic calibration correction. Odpowiadające akcje serwisowe pozwalają TapHome ustawić przesunięcie, przełączyć tryb wymuszonego zamknięcia (zawór pozostaje w pełni zamknięty niezależnie od setpointu) oraz tryb dodatkowego nacisku (zwiększa siłę aktuacji dla sztywnych zaworów).

Zapisy setpointu kończą się Device is not calibrated, dopóki calibrated=false, a szablon dodaje ostrzeżenie, gdy harmonogram tygodniowy jest aktywny (ponieważ firmware nadpisze zapisy zewnętrzne przy najbliższym zdarzeniu harmonogramu).

Ściemniacz zaworu (szablon valve)

Alternatywny szablon udostępnia aktuator zaworu bezpośrednio jako urządzenie ściemniacza (0.0-1.0 → 0-100 %). TapHome zapisuje pozycję przez /thermostats/0?pos={Le*100} — firmware przesuwa silnik do żądanej pozycji i niejawnie wyłącza automatyczną regulację temperatury docelowej.

Szablon valve dodaje na urządzeniu zaworu atrybuty serwisowe Force close, Extra pressure i Automatic calibration correction (plus odpowiednie akcje toggle), tak aby autorzy inteligentnych reguł mogli bezpośrednio sterować silnikiem w scenariuszach takich jak awaryjne zamknięcie, ręczne rozgrzewanie czy sekwencje boost.

Termostat (wariant szablonu valve)

Szablon valve nadal udostępnia urządzenie termostat, tak aby setpoint można było zapisać z tej samej grupy urządzeń TapHome, jednak jego skrypt zapisu wysyła jednocześnie target_t i target_t_enabled=false, aby PID firmware’u nie walczył z ręcznie sterowanym zaworem. Zestaw atrybutów serwisowych jest zredukowany do Temperature offset [°C] (atrybuty korpusu zaworu, takie jak force_close i valve_state, przenoszą się do urządzenia zaworu). Szablon ostrzega, gdy zaobserwowany zostanie target_t.enabled=true — to wskazuje na konflikt między ściemniaczem zaworu a sterowaniem automatycznym.

Diagnostyki i akcje modułu

Moduł (head unit) odpytuje /status i /settings co 3 sekundy i udostępnia diagnostyki i akcje całego urządzenia:

  • Diagnostyki: SSID Wi-Fi, adres IP, MAC, siła sygnału (RSSI w dBm), stan kalibracji, harmonogram wł./wył., jasność wyświetlacza (1-7) i stan obróconego wyświetlacza.
  • Akcje: Disable schedule, Reboot, Calibrate (wyzwala /calibrate), Update firmware (pobiera SHTRV-01_build.gbl z oficjalnego serwera firmware Shelly EU), Set display brightness i Flip display.
Dodatkowe możliwości

Urządzenie udostępnia także — choć obecne szablony tego jeszcze nie obejmują — kilka funkcji Gen1: pasywne wykrywanie otwartego okna (/window), symetryczną akcję Force open, awaryjną temperaturę otoczenia (auto_temp), blokadę rodzicielską, opóźnienie automatycznego zamknięcia przy otwartym oknie, czujnik zaplanowanego setpointu (schedule_t), indeks aktywnego profilu, pozostałe minuty boost oraz akcję Trigger boost (/thermostats/0?boost_minutes=N), stan termiczny wewnętrznej elektroniki (tmp_state) i dostępność aktualizacji firmware jako czujnik. Push CoIoT i transport MQTT są obsługiwane na poziomie urządzenia, ale nieużywane — TapHome zamiast tego pobiera /status co 3 s. Funkcje te mogą zostać dodane w przyszłej aktualizacji szablonu.

Rozwiązywanie problemów

Device is not calibrated

Każdy zapis setpointu i pozycji zaworu zwraca Device is not calibrated, dopóki TRV nie zakończy udanego cyklu kalibracji.

  1. Upewnij się, że urządzenie jest mocno osadzone na korpusie zaworu — nakrętka zaciskowa musi być na tyle mocna, aby silnik mógł oddziaływać na trzpień zaworu, ale nie tak, aby go deformowała.
  2. Uruchom akcję serwisową Calibrate na module (wysyła /calibrate). Wyświetlacz krótko pokaże CL, gdy silnik porusza się w obu kierunkach.
  3. Przy sukcesie calibrated zmienia się na true i zapisy zaczynają działać; niepowodzenie pokazuje na wyświetlaczu E1 — zwykle oznacza nieprawidłowe osadzenie.
Setpoint co kilka godzin wraca do innej wartości

To harmonogram tygodniowy nadpisujący zapisy zewnętrzne. Sprawdź atrybut serwisowy Schedule — jeśli jest włączony, uruchom akcję Disable schedule na module lub wyłącz aktywny profil w aplikacji Shelly Cloud.

Temperatura pokojowa jest zbyt wysoka

Dwie typowe przyczyny:

  • Podłączona ładowarka. Odczyty temperatury pokoju są nieważne, dopóki charger != disconnected. Odłącz USB-C i pozwól urządzeniu wystygnąć.
  • Odchylenie wbudowanego czujnika. Czujnik znajduje się blisko gorących rur i typowo odczytuje 1-3 °C za wysoko. Włącz endpoint korekcji temperatury zewnętrznej i sparuj Shelly H&T (lub kompatybilny termometr Wi-Fi) w tym samym pokoju, albo zastosuj statyczne Set temperature offset (np. -1,5 °C).
Na wyświetlaczu pojawia się E1 / E2

E1 — błąd kalibracji. Przełóż urządzenie, ostrożnie dokręć nakrętkę i uruchom nowy cykl kalibracji.

E2 — błąd czujnika temperatury. tmp.is_valid w /status staje się false, a szablon dodaje błąd Temperature sensor error. Jeśli problem utrzymuje się po restarcie, czujnik prawdopodobnie uległ uszkodzeniu — skontaktuj się ze wsparciem Shelly.

Urządzenie jest nieosiągalne
  1. Sprawdź, czy TRV jest podłączony do Wi-Fi — przytrzymaj Up + Down przez 5 s i przewiń parametry stanu; CO oznacza podłączonego klienta Wi-Fi.
  2. Upewnij się, że CCU TapHome i TRV znajdują się w tej samej sieci / VLAN — Shelly Gen1 domyślnie nie routuje między podsieciami.
  3. Spróbuj nazwy mDNS (shellytrv-XXXXXX.local) zamiast IP — dzierżawa DHCP mogła się zmienić.
  4. Otwórz http://{device-ip}/status w przeglądarce. Jeśli przyjdzie odpowiedź JSON, urządzenie jest osiągalne, a problem leży w konfiguracji TapHome.

Urządzenia Gen1 Shelly akceptują tylko 2 równoczesne połączenia HTTP. Jeśli TapHome i inny system (Home Assistant, Node-RED) odpytują to samo urządzenie w tym samym czasie, komunikacja staje się niestabilna. Pozostaw interwał pollingu na domyślnej wartości szablonu (3 s) i unikaj dodatkowych pollerów.

Włączenie MQTT na urządzeniach Gen1 Shelly nieodwracalnie wyłącza Shelly Cloud. TapHome używa wyłącznie HTTP — zostaw MQTT wyłączone, chyba że świadomie chcesz odejść od Shelly Cloud.

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 TRV Moduł
Atrybuty serwisowe
SSID Wi-Fi
Adres IP
Adres MAC
Siła odbieranego sygnałuSiła sygnału Wi-Fi w dBm — typowy dobry zakres od -55 do -70 dBm, poniżej -80 dBm zawodny
SkalibrowanyCzy kalibracja mechaniczna zaworu jest zakończona — zapisy setpointu i pozycji zaworu są odrzucane do momentu powodzenia kalibracji
HarmonogramHarmonogram tygodniowy wł./wył. — gdy włączony, firmware nadpisuje zewnętrznie zapisane setpointy przy najbliższym zdarzeniu harmonogramu
Jasność wyświetlaczaPoziom jasności wyświetlacza LED (1 = słaby, 7 = mocny)
Odwrócony wyświetlaczCzy wyświetlacz LED jest obrócony o 180° do montażu do góry nogami
Akcje serwisowe
Wyłącz harmonogramWyłącza harmonogram tygodniowy, aby zewnętrzne setpointy nie były cofane przy najbliższym zdarzeniu harmonogramu
Restart
KalibrujUruchamia cykl mechanicznej kalibracji zaworu — wymagany po każdym przełożeniu na inny korpus zaworu
Aktualizuj firmwareUruchamia aktualizację OTA firmware z oficjalnego serwera firmware Shelly EU
Ustaw jasność wyświetlaczaUstawia jasność wyświetlacza LED (1 = słaby, 7 = mocny)
Odwróć wyświetlaczPrzełącza obrót wyświetlacza o 180° dla zaworów zamontowanych do góry nogami
Zmienne niestandardowe

Shelly TRV

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

response := SENDHTTPREQUEST("/settings");
IF response.IsSuccess
    settings := response.Content;
END

if(PARSEJSON(status, "$.thermostats[0].schedule"), adderror("Schedule is enabled"));
if(PARSEJSON(status, "$.update.has_update"), addwarning("Firmware update is available"));

var bat := PARSEJSON(status, "$.bat.value");
if bat < 25
    addwarning("Battery charge is criticaly low");
elseif bat < 50
    addwarning("Low battery");
end
Atrybuty serwisowe
Wifi
PARSEJSON(status, "$.wifi_sta.ssid")
${ipAddress}
PARSEJSON(status, "$.wifi_sta.ip")
MAC
PARSEJSON(status, "$.mac")
Received signal strength
PARSEJSON(status, "$.wifi_sta.rssi")
Calibrated
if(PARSEJSON(status, "$.calibrated"), "${detail_deviceSettings_true}", "${detail_deviceSettings_false}")
Schedule
 VAR response := SENDHTTPREQUEST("/thermostats/0");
IF response.IsSuccess
 VAR content := response.Content;
 VAR responseHeaders := response.Headers;
 RETURN(SWITCH(PARSEJSON(content, "$.schedule"), true, "On", "Off"));
END
Display brightness
PARSEJSON(settings, "$.display.brightness")
Display flipped
if(PARSEJSON(settings, "$.display.flipped"), "${detail_deviceSettings_true}", "${detail_deviceSettings_false}")
Akcje serwisowe
Disable schedule
var response := SENDHTTPREQUEST("/settings/thermostats/0?schedule=false");
if(response.IsSuccess, return("OK"), return(response.Content));
Reboot
VAR response := SENDHTTPREQUEST("/reboot");
if(response.IsSuccess, return("OK"), return(response.Content));
Calibrate
VAR response := SENDHTTPREQUEST("/calibrate");
if(response.IsSuccess, return("OK"), return(response.Content));
Update firmware
VAR response := SENDHTTPREQUEST("/ota?url=http://shelly-api-eu.shelly.cloud/firmware/SHTRV-01_build.gbl");
if(response.IsSuccess, return("OK"), return(response.Content));
Set display brightness
Parametry: Brightness (1-7) (1–7 Br)
var response := SENDHTTPREQUEST("/settings?display_brightness=" + Br);
if(response.IsSuccess, return("OK"), return(response.Content));
Flip display
var response := SENDHTTPREQUEST("/settings?display_flipped=" + if(PARSEJSON(settings, "$.display.flipped"), "false", "true"));
if(response.IsSuccess, return("OK"), return(response.Content));
Bateria Przełącznik wielowartościowy Tylko do odczytu

Poziom naładowania baterii jako przełącznik wielowartościowy — Critical (<25 %), Low (25-50 %), Normal (50-75 %), Full (>75 %), Charging (podłączone USB-C). Stan ładowania ma pierwszeństwo przed poziomem

numeric Jednostka: % multi-value switch
Wartości / Stany: Critical · Low · Normal · Full · Charging

Bateria

Odczyt stanu przełącznika
if PARSEJSON(status, "$.charger")
    return(4);
end

var bat := PARSEJSON(status, "$.bat.value");
if bat > 75
    return(3);
elseif bat > 50
    return(2);
elseif bat > 25
    return(1);
else
    return(0);
end
Atrybuty serwisowe
Value [%]
PARSEJSON(status, "$.bat.value");
Voltage [V]
PARSEJSON(status, "$.bat.voltage");
Termostat Termostat

Termostat pokojowy z pętlą zamkniętą — zapis temperatury docelowej (5-30 °C), firmware wewnętrznie steruje zaworem za pomocą wbudowanego lub zewnętrznego czujnika

numeric Jednostka: °C
Atrybuty serwisowe
Przesunięcie temperatury [°C]Statyczne przesunięcie dodawane do zmierzonej temperatury pokoju — przydatne, gdy wbudowany czujnik odczytuje wyższe wartości z powodu bliskości gorących rur
Pozycja zaworu [%]Aktualne otwarcie zaworu w procentach (0 = w pełni zamknięty, 100 = w pełni otwarty)
Wymuszone zamknięcieCzy zawór jest wymuszony do pełnego zamknięcia niezależnie od setpointu
Dodatkowy naciskCzy tryb dodatkowego nacisku jest aktywny — stosuje dodatkową siłę mechaniczną do uruchamiania sztywnych zaworów
Automatyczna korekta kalibracjiCzy do skoku mechanicznego stosowana jest drobna korekta kalibracji
Akcje serwisowe
Ustaw przesunięcie temperaturyUstawia przesunięcie temperatury czujnika (od -20 do +20 °C) w celu kompensacji odchylenia wbudowanego czujnika
Przełącz wymuszone zamknięciePrzełącza tryb wymuszonego zamknięcia — zawór pozostaje w pełni zamknięty niezależnie od setpointu
Przełącz dodatkowy naciskPrzełącza tryb dodatkowego nacisku — zwiększa siłę aktuacji dla sztywnych zaworów

Termostat

Odczyt temperatury
PARSEJSON(status, "$.thermostats[0].tmp.value")
Odczyt (moduł)
if(! PARSEJSON(status, "$.thermostats[0].tmp.is_valid"), adderror("Temperature sensor error"));
Odczyt temperatury zadanej
PARSEJSON(status, "$.thermostats[0].target_t.value")
Zapis temperatury zadanej
if(status = "0", return(Se));

if !PARSEJSON(status, "$.calibrated")
    ADDERROR("Device is not calibrated");
    return(NaN);
end

VAR response := SENDHTTPREQUEST("/settings/thermostats/0?target_t=" + Se);
IF response.IsSuccess = false
  ADDERROR(response.StatusCode);
END
Atrybuty serwisowe
Temperature offset [°C]
PARSEJSON(settings, "$.thermostats[0].temperature_offset")
${device_variable_valvestate} [%]
PARSEJSON(status, "$.thermostats[0].pos")
Force close
if(PARSEJSON(settings, "$.thermostats[0].force_close"), "${detail_deviceSettings_true}", "${detail_deviceSettings_false}")
Extra pressure
if(PARSEJSON(settings, "$.thermostats[0].extra_pressure"), "${detail_deviceSettings_true}", "${detail_deviceSettings_false}")
Automatic calibration correction
if(PARSEJSON(settings, "$.thermostats[0].calibration_correction"), "${detail_deviceSettings_true}", "${detail_deviceSettings_false}")
Akcje serwisowe
Set temperature offset
Parametry: Offset (-20–20 C)
VAR response := SENDHTTPREQUEST("/settings/thermostats/0?temperature_offset=" + C);
if(response.IsSuccess, return("OK"), return(response.Content));
Toggle force close
var response := SENDHTTPREQUEST("/settings/thermostats/0?force_close=" + if(PARSEJSON(settings, "$.thermostats[0].force_close"), "false", "true"));
if(response.IsSuccess, return("OK"), return(response.Content));
Toggle extra pressure
var response := SENDHTTPREQUEST("/settings/thermostats/0?extra_pressure=" + if(PARSEJSON(settings, "$.thermostats[0].extra_pressure"), "false", "true"));
if(response.IsSuccess, return("OK"), return(response.Content));
Połączenie: Packet Parser → HTTP
Możliwe ulepszenia (14)
  • Active schedule profile — Currently active profile index (0-4) when scheduling is enabled. Could be added as a multi-value indicator
  • Scheduled setpoint — Setpoint that the firmware would apply on the next schedule event
  • Boost remaining — Remaining boost time in minutes; pairs with /thermostats/0?boost_minutes=N write
  • Trigger boost — Temporary heating boost action — not currently exposed as service action
  • Internal thermal state — Electronics thermal state (Normal / High / Very High); early warning for overheating
  • Firmware update availability — Currently surfaced only as warning in module readscript — could be a service attribute
  • Open window detection — Passive open-window detection based on temperature drop; publishes 'state: open|closed' and MQTT topic shellies/{id}/window
  • Force open — Forces valve 100% open — symmetrical counterpart to force_close which IS implemented
  • Window-open auto-close delay — Delay (1-3600 s) before closing the valve after open-window detection
  • Fallback ambient temperature — Fallback setpoint (0-27 °C, 0 = disabled) used when no active setpoint exists
  • Child lock — Locks the physical Up/Down buttons on the device
  • Schedule rules configuration — Up to 18 rules/profile, 5 named profiles. Complex config — usually managed via Shelly Cloud app
  • CoIoT push updates — Optional multicast push (CoAP) — TapHome uses pull polling, not required
  • MQTT control — Gen1 MQTT alternative transport — enabling MQTT irreversibly disables Shelly Cloud

Źródła