TapHome

EMS-ESP kocioł gazowy (Bosch, Buderus, Junkers, Nefit)

Packet Parser → HTTP
Dodane przez
Ostatnia aktualizacja: 10. 2026

Wymaga zewnętrznej bramki

BBQKees Electronics Gateway E32 V2 (EMS-ESP 3.8.6 firmware) — strona produktu

To urządzenie obsługuje mDNS

Zamiast adresu IP możesz połączyć się z urządzeniem pod adresem:

ems-esp.local

Zastąp {MAC} adresem MAC urządzenia (wielkie litery, bez dwukropków).

TapHome obsługuje mDNS — użycie nazwy hosta jest bardziej niezawodne niż statyczny IP.

EMS-ESP kocioł gazowy (Bosch, Buderus, Junkers, Nefit)

Szablon EMS-ESP Gas Boiler łączy TapHome z kotłem gazowym Bosch, Buderus, Junkers lub Nefit przez bramkę EMS-ESP — BBQKees Electronics Gateway E32 V2, która działa na otwartym oprogramowaniu EMS-ESP i podłącza się do magistrali EMS kotła. TapHome komunikuje się z bramką przez jej lokalne HTTP REST API (port 80, JSON); połączenie z chmurą nie jest potrzebne. W EMS-ESP kocioł występuje jako typ urządzenia boiler, a jego regulator jako typ urządzenia thermostat.

Szablon odczytuje, czy kocioł grzeje lub przygotowuje ciepłą wodę, temperaturę zasilania i jej wartość docelową, moc palnika, ostatni kod błędu zapisany przez kocioł, ciśnienie w instalacji, liczbę startów palnika, temperaturę zewnętrzną oraz temperaturę pomieszczenia i ciepłej wody. Z tokenem dostępu ustawia także tryb obiegu grzewczego 1 (Wyłączony, Ręczny, Auto), nastawę temperatury pomieszczenia i nastawę ciepłej wody.

Szablon społeczności — jeszcze nie przetestowany z TapHome. Szablon powstał w portalu TapHome i został napisany dla EMS-ESP 3.8.6; nie został jeszcze sprawdzony w rzeczywistej instalacji. Pobierz go z portalu TapHome: EMS-ESP Gas Boiler — szablon społeczności (pobierz XML — bez logowania — i zaimportuj go jako nowy moduł).

Kompatybilne kotły i regulatory

O tym, czy kocioł działa z tym szablonem, decydują dwie rzeczy: EMS-ESP musi obsługiwać kocioł, a kocioł i jego regulator muszą wysyłać wartości, które szablon odczytuje.

Kotły objęte szablonem:

  • Buderus GB125, GB135, GB162, GBx72, GB192, GB192i.2, Logamax Plus GB022, U122
  • Bosch / Junkers Cerapur GC2200W, Cerapur Top, Condens 2500, GC9000
  • Nefit Topline, Trendline
  • Worcester Greenstar Si, 30Ri Compact, 8000

Lista kotłów obsługiwanych przez EMS-ESP wymienia kolejne modele, na przykład Logano, Nefit Proline i Smartline, Condens 2300 i 5000i.

Bramka działa z wariantami magistrali EMS, EMS Plus (EMS+), EMS2 i Heatronic 3. Starsze kotły z magistralą iRT, takie jak Nefit Ecomline lub Buderus GB112, mogą korzystać z bramki dopiero po zainstalowaniu adaptera Bosch EasyControlAdapter. OpenTherm nie należy do typów magistrali obsługiwanych przez bramkę.

Które wartości wysyła dany kocioł, nie jest udokumentowane dla poszczególnych modeli. Strona Devices w interfejsie WWW EMS-ESP pokazuje tylko encje z wartością; encja, która istnieje w EMS-ESP, ale nie ma wartości, jest obsługiwana przez oprogramowanie, a nie przez podłączony kocioł. Ta sama lista jest dostępna pod http://<gateway-ip>/api/boiler/entities i http://<gateway-ip>/api/thermostat/entities.

Tryb obiegu grzewczego zależy od regulatora, ponieważ każda rodzina regulatorów ma własną listę trybów:

RegulatorTryby w EMS-ESPTryb obiegu grzewczego
RC300, RC310, RC100, HMC310, Rego 2000 / 3000manual, autoRęczny i Auto; wybór Wyłączony kończy się błędem zapisu
BC400, UI800, CR120off, manual, autoWyłączony, Ręczny i Auto
RC35, regulatory Junkers i inne modeleinne listy (na przykład RC35: night, day, auto; Junkers: nofrost, eco, heat, auto)nieobsługiwane — urządzenie kończy się błędem, usuń je

Kotły Junkers i Nefit są często połączone z regulatorami Junkers lub Nefit, które mają inną listę trybów. Urządzenia kotła w szablonie nie zależą od regulatora i działają dalej.

Niektóre regulatory nie przyjmują poleceń zapisu EMS i pojawiają się w EMS-ESP jako urządzenia tylko do odczytu: Buderus Logamatic TC100, Bosch EasyControl CT200, Junkers CT100, Moduline Easy, Junkers FW / FR wyprodukowane przed 9/2008 i termostaty Tado. Z nimi trybu i nastawy temperatury pomieszczenia nie da się zmienić z TapHome.

Połączenie sprzętowe

Zestaw BBQKees Gateway E32 V2 KIT zawiera bramkę, kabel serwisowy EMS 150 cm, kabel 100 cm do zacisków śrubowych EMS, adapter portu serwisowego EMS, zasilacz (12 V DC z wtykiem lub 5 V USB-C, zależnie od partii produkcyjnej) oraz kabel JST ZH do własnych czujników temperatury DS18B20. Bramkę podłącza się do kotła na jeden z trzech sposobów:

Złącze w kotleKabelZasilanie
Gniazdo serwisowe EMS (3,5 mm)kabel serwisowy EMS 150 cmz gniazda serwisowego
Gniazdo serwisowe EMS (3,5 mm)kabel serwisowy EMS 150 cmzasilacz zewnętrzny
Zaciski śrubowe magistrali EMSkabel 100 cm do zacisków śrubowych EMSzasilacz zewnętrzny (12 V DC lub 5 V USB-C)

Gniazdo serwisowe wchodzi w grę tylko wtedy, gdy kocioł je ma. Bramki sprzedawane od lata 2025 przyjmują oba typy zasilaczy. BBQKees EMS Gateway Wiki pokazuje, jak podłączyć bramkę do konkretnego kotła.

  • Sieć: Ethernet (RJ45) lub Wi-Fi. EMS-ESP łączy się tylko z sieciami Wi-Fi 2,4 GHz z WPA2, nie z 5 GHz.
  • Oprogramowanie: EMS-ESP. Gateway E32 V2 (sprzedawany od stycznia 2024) ma PSRAM i używa wariantu oprogramowania ESP32-16MB+. Oprogramowanie aktualizuje się w interfejsie WWW EMS-ESP w Settings → Version.

Konfiguracja

Pierwsza konfiguracja EMS-ESP
  1. Przy pierwszym uruchomieniu EMS-ESP otwiera punkt dostępu Wi-Fi ems-esp (hasło WPA ems-esp-neo). Bramka podłączona przez Ethernet jest dostępna pod adresem IP przydzielonym jej przez router.
  2. Zaloguj się domyślnym użytkownikiem admin / admin i zmień hasło.
  3. W Settings → Network podłącz bramkę do sieci domowej (Wi-Fi lub Ethernet).
  4. W routerze zarezerwuj dla bramki stały adres IP (rezerwacja DHCP) — szablon adresuje bramkę jej adresem IP.
Ważne ustawienia EMS-ESP
  • Temperatury w °C — pozostaw wyłączone „Convert temperature values to Fahrenheit” w Settings → Application. Moduł sprawdza to co 60 s i pokazuje błąd, gdy EMS-ESP zgłasza °F.
  • Language: English — pozostaw język English w Settings → Application. Urządzenie Tryb obiegu grzewczego rozpoznaje tryb po tekście opcji (off, manual, auto), a EMS-ESP tłumaczy te teksty na wybrany język; przy innym języku urządzenie kończy się błędem, który podaje zgłoszony tekst. Zapisy używają tekstów angielskich, które EMS-ESP akceptuje w każdym języku, a pozostałe urządzenia nie zależą od języka.
  • Boolean Format i Enum Format nie mają znaczenia. Szablon odczytuje klucze index i bool oraz liczbowe value ze szczegółów encji EMS-ESP, które nie zależą od tych ustawień.
  • Oprogramowanie 3.8 — moduł pokazuje ostrzeżenie, gdy bramka zgłasza wersję spoza serii 3.8. W wersji 3.7.0 encje ciepłej wody przeniesiono z prefiksu ww do zagnieżdżonego obiektu dhw, a EMS-ESP otrzymał osobną listę trybów dla regulatorów typu BC400; między 3.8.0 a 3.8.6 encje używane przez szablon się nie zmieniły.
Token dostępu do zapisu

Odczyt nie wymaga uwierzytelniania. Zapis — tryb obiegu grzewczego, nastawy pomieszczenia i ciepłej wody — wymaga tokenu dostępu EMS-ESP użytkownika z uprawnieniami administratora:

  1. Otwórz interfejs WWW EMS-ESP → Settings → Security → Manage Users.
  2. Kliknij ikonę klucza przy użytkowniku z uprawnieniami administratora i skopiuj token. Token nie ma daty wygaśnięcia.
  3. Podczas importu szablonu wklej token do parametru importu AccessToken.

Bez tokenu integracja działa tylko w trybie odczytu, a każdy zapis kończy się błędem 401. Zamiast tego nie włączaj w EMS-ESP opcji „Bypass Access Token authorization on API calls” — otwiera ona API, a dokumentacja EMS-ESP jej nie zaleca.

Parametry importu
ParametrOpis
IpAddressAdres IP bramki EMS-ESP
AccessTokenToken dostępu EMS-ESP użytkownika z uprawnieniami administratora — potrzebny tylko do zapisu; dla integracji tylko do odczytu pozostaw pusty

Możliwości urządzeń

Obieg grzewczy 1
  • Tryb obiegu grzewczego — Wyłączony, Ręczny lub Auto dla obiegu grzewczego 1. Urządzenie odczytuje pozycję na liście trybów regulatora, wyszukuje jej tekst opcji i pokazuje Wyłączony, Ręczny lub Auto; zapisuje angielski tekst opcji. To, które tryby działają, zależy od regulatora (zobacz tabelę powyżej).
  • Termostat pokojowy — aktualna i zadana temperatura pomieszczenia obiegu grzewczego 1 zgłaszana przez regulator. Zakres nastawy urządzenia to 0–30 °C. EMS-ESP przechowuje nastawę pomieszczenia w krokach co 0,5 °C; szablon wysyła wartość bez zmian.
Stan kotła
  • Grzanie aktywne — aktywne, gdy kocioł pracuje na ogrzewanie pomieszczeń.
  • Podgrzewanie ciepłej wody aktywne — aktywne, gdy kocioł podgrzewa ciepłą wodę użytkową.
Temperatury
  • Temperatura zasilania — aktualna temperatura zasilania kotła z rozdzielczością 0,1 °C.
  • Docelowa temperatura zasilania — temperatura zasilania, do której dąży kocioł (0–90 °C), ustawiana przez regulator. Urządzenie jest celowo tylko do odczytu: EMS-ESP mógłby zapisać tę wartość, ale zapisana temperatura zasilania nadpisałaby regulator pokojowy.
  • Temperatura zewnętrzna — temperatura zewnętrzna zgłaszana przez kocioł, z rozdzielczością 0,1 °C.
Palnik i ciśnienie w instalacji
  • Moc palnika — aktualna moc palnika w procentach. Urządzenie odczytuje także ostatni kod błędu zapisany przez kocioł i pokazuje go jako komunikat informacyjny „Last error code (stored by the boiler): …”, na przykład 2E(207) 100.75.2000 65:00 (0 min). To kod, który kocioł zapisał ostatni, z datą i czasem trwania — niekoniecznie aktywna usterka; komunikat pozostaje także po usunięciu usterki. Gdy kodu błędu nie da się odczytać, urządzenie pokazuje ostrzeżenie, a moc palnika pozostaje dostępna.
  • Liczba startów palnika — całkowita liczba startów palnika policzona przez kocioł.
  • Ciśnienie w instalacji — ciśnienie wody w instalacji grzewczej w barach z rozdzielczością 0,1 bar.
Ciepła woda użytkowa
  • Ciepła woda użytkowa — aktualna i zadana temperatura ciepłej wody kotła. Zakres nastawy urządzenia to 10–70 °C, nastawa jest wysyłana w pełnych stopniach, a kocioł stosuje własne ograniczenia.

Szablon zapisuje nastawę ciepłej wody kotła (dhw.seltemp), a nie ustawienia ciepłej wody regulatora (dhw.settemp, dhw.mode). Dokumentacja EMS-ESP podaje, że ustawienia kotła zarządzane przez regulator są przez niego nadpisywane, więc regulator zarządzający ciepłą wodą może nadpisać nastawę ustawioną w TapHome. Nie zostało to jeszcze sprawdzone w rzeczywistej instalacji.

Jak szablon komunikuje się z EMS-ESP

Każde urządzenie odczytuje swoje wartości jednym żądaniem HTTP GET na encję pod /api/<device>/[hc1/|dhw/]<entity> i bierze klucz value, index lub bool z odpowiedzi. Większość urządzeń odpytuje co 30 s; Ciśnienie w instalacji i Temperatura zewnętrzna co 60 s, a Liczba startów palnika co 5 minut. Moduł odczytuje /api/system/info co 60 s. Zapisy to żądania HTTP POST z treścią JSON i tokenem dostępu w nagłówku Authorization: Bearer.

EMS-ESP 3.8.3 i nowsze odpowiada 429 Too Many Requests na żądanie GET, które nadejdzie wcześniej niż 50 ms po poprzednim wywołaniu API. Szablon dlatego czeka 60 ms przed każdym GET i przy 429 jeden raz powtarza żądanie po 200 ms. Inny klient, który odpytuje API EMS-ESP w tym samym czasie (na przykład drugi system automatyki domowej), nadal może sporadycznie wywołać powtórzenie.

Dlaczego REST, a nie Modbus. EMS-ESP oferuje także Modbus TCP, ale przesunięcia jego rejestrów zmieniły się między stabilnymi wersjami 3.8.0 i 3.8.6, więc szablon Modbus po aktualizacji oprogramowania bramki po cichu odczytywałby inne wartości. REST API adresuje wartości po nazwie — encja o zmienionej nazwie kończy się widocznym błędem urządzenia.

Rozwiązywanie problemów

Błąd urządzenia „no value from the gateway”

Komunikat „no value from the gateway — this controller or unit does not report it; delete this device” oznacza, że podłączony kocioł lub regulator nie wysyła tej encji. Sprawdź stronę Devices w EMS-ESP albo http://<gateway-ip>/api/boiler/entities i http://<gateway-ip>/api/thermostat/entities, a następnie usuń urządzenie po imporcie — pozostałe urządzenia działają dalej.

Błąd urządzenia 404

404 z komunikatem typu no 'xyz' in thermostat oznacza, że EMS-ESP nie zna encji pod tą ścieżką — regulator lub kocioł jej nie ma albo oprogramowanie używa innej nazwy. unknown device oznacza, że EMS-ESP nie wykrył na magistrali EMS kotła ani regulatora tego typu.

Tryb obiegu grzewczego zgłasza inny tekst

Błąd „hc1.mode reports ‘…’” pojawia się, gdy EMS-ESP zgłasza tekst trybu inny niż off, manual lub auto. Albo język EMS-ESP nie jest ustawiony na English (ustaw go w Settings → Application), albo regulator używa innej listy trybów (na przykład RC35 lub regulator Junkers) — wtedy usuń urządzenie Tryb obiegu grzewczego.

Wybór Wyłączony kończy się błędem zapisu

Regulatory rodziny RC300 (RC300, RC310, RC100, HMC310, Rego 2000 / 3000) nie mają trybu wyłączenia. EMS-ESP odrzuca wartość, której nie ma na liście regulatora, więc urządzenie pokazuje błąd zapisu (hc1.mode write: HTTP …). Z tymi regulatorami używaj trybu Ręczny lub Auto.

Zapis kończy się błędem 401

Brak tokenu dostępu lub jest on nieprawidłowy. Skopiuj go ponownie z Settings → Security → Manage Users → ikona klucza przy użytkowniku z uprawnieniami administratora i wpisz go do zmiennej AccessToken modułu. Token jest wyprowadzany z nazwy użytkownika i hasła superużytkownika w Settings → Security → Security Settings.

Błąd 429

Inny klient odpytuje API EMS-ESP w tej samej chwili. Szablon już rozkłada swoje żądania w czasie i powtarza je jeden raz; jeśli błąd się powtarza, zmniejsz częstotliwość odpytywania drugiego klienta.

Błąd lub ostrzeżenie modułu
  • „EMS-ESP reports °F” — wyłącz Fahrenheit w Settings → Application.
  • „Template written for EMS-ESP 3.8.6, gateway reports …” — bramka działa na oprogramowaniu spoza serii 3.8. Zaktualizuj EMS-ESP w Settings → Version.
Bramka niedostępna
  1. Sprawdź diodę LED bramki: 1 niebieskie mignięcie podczas uruchamiania = magistrala EMS jeszcze nie jest podłączona (sprawdź kabel i ustawienie EMS Tx Mode), 2 czerwone mignięcia = sieć wciąż się łączy (sprawdź Settings → Network; Wi-Fi musi być 2,4 GHz WPA2), światło ciągłe = dane EMS napływają.
  2. Otwórz http://<gateway-ip>/api/system/info w przeglądarce — jeśli odpowiada, bramka jest dostępna.
  3. Jeśli adres IP się zmienił, znajdź bramkę przez nazwę mDNS http://ems-esp.local, a następnie ustaw w routerze rezerwację DHCP.
  4. Używaj http:// — API EMS-ESP nie obsługuje HTTPS z certyfikatami samopodpisanymi.

Dostępne urządzenia

Bramka EMS-ESP Moduł
Zmienne niestandardowe
AccessToken (string)Token dostępu EMS-ESP użytkownika z uprawnieniami administratora, wysyłany jako nagłówek Bearer przy każdym zapisie (tryb obiegu grzewczego, nastawy pomieszczenia i ciepłej wody); odczyt działa bez niego, więc pusty token oznacza integrację tylko do odczytu
EMS-ESP web interface → Settings → Security → Manage Users → key icon of a user with admin rights; paste the token into the AccessToken import parameter. The token has no expiry date.

EMS-ESP Gateway

Odczyt (moduł)
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/system/info");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/system/info");
END
IF r.IsSuccess = false
    ADDERROR("system/info: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
ELSE
    VAR fahrenheit := PARSEJSON(r.Content, "settings.fahrenheit", true);
    IF fahrenheit
        ADDERROR("EMS-ESP reports \u00b0F \u2014 switch Fahrenheit off in EMS-ESP Settings \u2192 Application");
    END
    VAR version := PARSEJSON(r.Content, "system.version", true);
    IF !ISNULL(version)
        IF INDEXOF(TOSTRING(version), "3.8.") != 0
            ADDWARNING("Template written for EMS-ESP 3.8.6, gateway reports " + version);
        END
    END
END
Tryb obiegu grzewczego Przełącznik wielowartościowy

Tryb pracy obiegu grzewczego 1 — Wyłączony, Ręczny lub Auto; regulatory rodziny RC300 oferują tylko Ręczny i Auto, BC400 / UI800 / CR120 także Wyłączony; wymaga języka EMS-ESP English

enum json_path
Wartości / Stany: Off · Manual · Auto

Tryb obiegu grzewczego

Odczyt stanu przełącznika
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/thermostat/hc1/mode");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/thermostat/hc1/mode");
END
IF r.IsSuccess = false
    ADDERROR("hc1.mode: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
    RETURN(NaN);
END
VAR enumList := PARSEJSON(r.Content, "enum", true);
VAR idx := PARSEJSON(r.Content, "index", true);
IF ISNULL(enumList) OR ISNULL(idx)
    ADDERROR("hc1.mode: no value from the gateway \u2014 this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
VAR text := PARSEJSON(r.Content, "$.enum[" + TOSTRING(idx) + "]", true);
IF ISNULL(text)
    ADDERROR("hc1.mode: no value from the gateway \u2014 this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
IF text = "off"
    RETURN(0);
ELSEIF text = "manual"
    RETURN(1);
ELSEIF text = "auto"
    RETURN(2);
ELSE
    ADDERROR("hc1.mode reports '" + text + "': this template supports controllers with off / manual / auto and needs EMS-ESP Language = English (Settings \u2192 Application)");
    RETURN(NaN);
END
Zapis stanu przełącznika
VAR modeName := IF(Mu = 0, "off", IF(Mu = 1, "manual", "auto"));
VAR body := "{\"value\":\"" + modeName + "\"}";
VAR r := SENDHTTPREQUEST("/api/thermostat/hc1/mode", "POST", body, "Content-Type: application/json", "Authorization: Bearer " + AccessToken);
IF r.IsSuccess = false
    IF r.StatusCode = 401
        ADDERROR("hc1.mode write: access token missing or wrong (EMS-ESP Settings \u2192 Security \u2192 Manage Users \u2192 key icon of an admin user)");
    ELSE
        ADDERROR("hc1.mode write: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
    END
END
Termostat pokojowy Termostat

Aktualna i zadana temperatura pomieszczenia obiegu grzewczego 1 z regulatora; nastawa 0–30 °C, przechowywana przez EMS-ESP w krokach co 0,5 °C

numeric Jednostka: °C

Termostat pokojowy

Odczyt temperatury
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/thermostat/hc1/currtemp");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/thermostat/hc1/currtemp");
END
IF r.IsSuccess = false
    ADDERROR("hc1.currtemp: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
    RETURN(NaN);
END
VAR v := PARSEJSON(r.Content, "value", true);
IF ISNULL(v)
    ADDERROR("hc1.currtemp: no value from the gateway \u2014 this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(v);
Odczyt temperatury zadanej
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/thermostat/hc1/seltemp");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/thermostat/hc1/seltemp");
END
IF r.IsSuccess = false
    ADDERROR("hc1.seltemp: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
    RETURN(NaN);
END
VAR v := PARSEJSON(r.Content, "value", true);
IF ISNULL(v)
    ADDERROR("hc1.seltemp: no value from the gateway \u2014 this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(v);
Zapis temperatury zadanej
VAR body := "{\"value\":" + Se + "}";
VAR r := SENDHTTPREQUEST("/api/thermostat/hc1/seltemp", "POST", body, "Content-Type: application/json", "Authorization: Bearer " + AccessToken);
IF r.IsSuccess = false
    IF r.StatusCode = 401
        ADDERROR("hc1.seltemp write: access token missing or wrong (EMS-ESP Settings \u2192 Security \u2192 Manage Users \u2192 key icon of an admin user)");
    ELSE
        ADDERROR("hc1.seltemp write: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
    END
END
Grzanie aktywne Kontakt reed Tylko do odczytu

Aktywne, gdy kocioł pracuje na ogrzewanie pomieszczeń

boolean

Grzanie aktywne

Odczyt
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/boiler/heatingactive");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/heatingactive");
END
IF r.IsSuccess = false
    ADDERROR("heatingactive: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
    RETURN(NaN);
END
VAR v := PARSEJSON(r.Content, "bool", true);
IF ISNULL(v)
    ADDERROR("heatingactive: no value from the gateway \u2014 this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(v);
Podgrzewanie ciepłej wody aktywne Kontakt reed Tylko do odczytu

Aktywne, gdy kocioł podgrzewa ciepłą wodę użytkową

boolean

Podgrzewanie ciepłej wody aktywne

Odczyt
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/boiler/tapwateractive");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/tapwateractive");
END
IF r.IsSuccess = false
    ADDERROR("tapwateractive: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
    RETURN(NaN);
END
VAR v := PARSEJSON(r.Content, "bool", true);
IF ISNULL(v)
    ADDERROR("tapwateractive: no value from the gateway \u2014 this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(v);
Temperatura zasilania Czujnik temperatury Tylko do odczytu
numeric Jednostka: °C

Temperatura zasilania

Odczyt temperatury
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/boiler/curflowtemp");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/curflowtemp");
END
IF r.IsSuccess = false
    ADDERROR("curflowtemp: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
    RETURN(NaN);
END
VAR v := PARSEJSON(r.Content, "value", true);
IF ISNULL(v)
    ADDERROR("curflowtemp: no value from the gateway \u2014 this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(v);
Docelowa temperatura zasilania Zmienna Tylko do odczytu

Temperatura zasilania, do której dąży kocioł (0–90 °C), ustawiana przez regulator; tylko do odczytu, więc TapHome nigdy nie nadpisuje regulatora

numeric Jednostka: °C

Docelowa temperatura zasilania

Odczyt
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/boiler/selflowtemp");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/selflowtemp");
END
IF r.IsSuccess = false
    ADDERROR("selflowtemp: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
    RETURN(NaN);
END
VAR v := PARSEJSON(r.Content, "value", true);
IF ISNULL(v)
    ADDERROR("selflowtemp: no value from the gateway \u2014 this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(v);
Moc palnika Zmienna Tylko do odczytu

Aktualna moc palnika w procentach; pokazuje także ostatni kod błędu zapisany przez kocioł jako komunikat informacyjny — niekoniecznie aktywna usterka

numeric Jednostka: %

Moc palnika

Odczyt
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/boiler/curburnpow");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/curburnpow");
END
IF r.IsSuccess = false
    ADDERROR("curburnpow: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
    RETURN(NaN);
END
VAR v := PARSEJSON(r.Content, "value", true);
IF ISNULL(v)
    ADDERROR("curburnpow: no value from the gateway \u2014 this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(v);
Odczyt (moduł)
SLEEP(60);
VAR rlc := SENDHTTPREQUEST("/api/boiler/lastcode");
IF rlc.StatusCode = 429
    SLEEP(200);
    rlc := SENDHTTPREQUEST("/api/boiler/lastcode");
END
IF rlc.IsSuccess = false
    ADDWARNING(1, "lastcode: HTTP " + rlc.StatusCode + IF(ISNULL(PARSEJSON(rlc.Content, "message", true)), "", ": " + PARSEJSON(rlc.Content, "message", true)));
ELSE
    VAR lc := PARSEJSON(rlc.Content, "value", true);
    IF !ISNULL(lc)
        ADDINFO(1, "Last error code (stored by the boiler): " + lc);
    END
END
Ciśnienie w instalacji Zmienna Tylko do odczytu

Ciśnienie wody w instalacji grzewczej w barach

numeric Jednostka: bar

Ciśnienie w instalacji

Odczyt
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/boiler/syspress");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/syspress");
END
IF r.IsSuccess = false
    ADDERROR("syspress: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
    RETURN(NaN);
END
VAR v := PARSEJSON(r.Content, "value", true);
IF ISNULL(v)
    ADDERROR("syspress: no value from the gateway \u2014 this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(v);
Liczba startów palnika Zmienna Tylko do odczytu

Całkowita liczba startów palnika policzona przez kocioł

numeric

Liczba startów palnika

Odczyt
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/boiler/burnstarts");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/burnstarts");
END
IF r.IsSuccess = false
    ADDERROR("burnstarts: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
    RETURN(NaN);
END
VAR v := PARSEJSON(r.Content, "value", true);
IF ISNULL(v)
    ADDERROR("burnstarts: no value from the gateway \u2014 this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(v);
Ciepła woda użytkowa Termostat

Aktualna i zadana temperatura ciepłej wody kotła; nastawa jest wysyłana w pełnych stopniach, a kocioł stosuje własne ograniczenia

numeric Jednostka: °C

Ciepła woda użytkowa

Odczyt temperatury
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/boiler/dhw/curtemp");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/dhw/curtemp");
END
IF r.IsSuccess = false
    ADDERROR("dhw.curtemp: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
    RETURN(NaN);
END
VAR v := PARSEJSON(r.Content, "value", true);
IF ISNULL(v)
    ADDERROR("dhw.curtemp: no value from the gateway \u2014 this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(v);
Odczyt temperatury zadanej
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/boiler/dhw/seltemp");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/dhw/seltemp");
END
IF r.IsSuccess = false
    ADDERROR("dhw.seltemp: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
    RETURN(NaN);
END
VAR v := PARSEJSON(r.Content, "value", true);
IF ISNULL(v)
    ADDERROR("dhw.seltemp: no value from the gateway \u2014 this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(v);
Zapis temperatury zadanej
VAR body := "{\"value\":" + ROUND(Se) + "}";
VAR r := SENDHTTPREQUEST("/api/boiler/dhw/seltemp", "POST", body, "Content-Type: application/json", "Authorization: Bearer " + AccessToken);
IF r.IsSuccess = false
    IF r.StatusCode = 401
        ADDERROR("dhw.seltemp write: access token missing or wrong (EMS-ESP Settings \u2192 Security \u2192 Manage Users \u2192 key icon of an admin user)");
    ELSE
        ADDERROR("dhw.seltemp write: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
    END
END
Temperatura zewnętrzna Czujnik temperatury Tylko do odczytu

Temperatura zewnętrzna zgłaszana przez kocioł

numeric Jednostka: °C

Temperatura zewnętrzna

Odczyt temperatury
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/boiler/outdoortemp");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/outdoortemp");
END
IF r.IsSuccess = false
    ADDERROR("outdoortemp: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
    RETURN(NaN);
END
VAR v := PARSEJSON(r.Content, "value", true);
IF ISNULL(v)
    ADDERROR("outdoortemp: no value from the gateway \u2014 this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(v);
Połączenie: Packet Parser → HTTP • Hostname: ems-esp.local
Możliwe ulepszenia (17)
  • Writing the selected flow temperature — Writable in EMS-ESP (0–90 °C), deliberately left out: a written flow temperature overrides the room controller; the template only reads it (Flow Temperature Target)
  • Heating circuits 2–8 — Same entities as hc1 under the hc2…hc8 path prefix; the template covers heating circuit 1 only — devices for further circuits would be copies with a different path
  • Summer / winter switchover — winter / auto / summer, RC100 and RC300
  • Further heating circuit settings — Comfort / eco / manual setpoints, summer and frost thresholds, flow temperature limits, heating curve design temperature, offset, room influence, control mode and time program (RC100 / RC300 and others); the docs mark the command table as incomplete and model-dependent
  • Controller-side domestic hot water settings — DHW mode (off / on / auto), DHW set temperatures, one-time charge and circulation mode on RC100 / RC300 — the template reads and writes the boiler DHW entities instead
  • Boiler-side hot water functions — Hot water enable, one-time charge, circulation pump and mode, flow temperature offset and maximum power for hot water; some of them are overwritten by the thermostat (docs Boilers)
  • Boiler comfort mode, heating enable and heating temperature limit — comfort hot / eco / intelligent; heatingactivated and heatingtemp are not changeable on some systems (for example with an MC10 rotary control)
  • Burner and pump parameters — Burner hysteresis, minimum burner period, modulation limits and pump settings — installer parameters, the allowed ranges depend on the boiler type
  • Maintenance message and error reset — Set or reset the maintenance message; reset error should be used only with an active error (docs Boilers) — candidates for service actions
  • EMS-ESP firmware version — Already fetched by the module for the version warning; could be exposed as a module service attribute
  • Restart EMS-ESP — GET with access token; candidate for a module service action
  • Refresh all device values — Forces EMS-ESP to re-read all values from the EMS bus; no authentication
  • Temperature sensors on the gateway (DS18B20) — The kit includes a JST ZH cable for own DS18B20 sensors; their readings are available over the same REST API
  • Analog sensors and outputs of the gateway — Readings and setvalue for gateway analog inputs, counters and output pins
  • Custom entities — User-defined entities for EMS telegrams EMS-ESP does not decode yet
  • Entity discovery lists — Not a device — the live list of entities a given installation reports; the way to check which template devices will work before importing
  • Other EMS-ESP interfaces — EMS-ESP also offers Modbus TCP (since 3.7.0) and MQTT / MQTT Discovery; the template uses the REST API by entity name because Modbus register offsets move between firmware releases

Ź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.

Społeczność — niezweryfikowane

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