TapHome

EMS-ESP plynový kotel (Bosch, Buderus, Junkers, Nefit)

Packet Parser → HTTP
Přidal
Poslední aktualizace: 10. 2026

Vyžaduje externí bránu

BBQKees Electronics Gateway E32 V2 (EMS-ESP 3.8.6 firmware) — stránka produktu

Toto zařízení podporuje mDNS

Místo IP adresy můžete zařízení oslovit na:

ems-esp.local

Nahraďte {MAC} MAC adresou zařízení (velká písmena, bez dvojteček).

TapHome podporuje mDNS — použití hostname je spolehlivější než statická IP.

EMS-ESP plynový kotel (Bosch, Buderus, Junkers, Nefit)

Šablona EMS-ESP Gas Boiler propojuje TapHome s plynovým kotlem Bosch, Buderus, Junkers nebo Nefit přes bránu EMS-ESP — BBQKees Electronics Gateway E32 V2, která běží na otevřeném firmwaru EMS-ESP a připojuje se na sběrnici EMS kotle. TapHome s bránou komunikuje přes její lokální HTTP REST API (port 80, JSON); připojení ke cloudu není potřeba. V EMS-ESP se kotel zobrazuje jako typ zařízení boiler a jeho řídicí jednotka jako typ zařízení thermostat.

Šablona čte, zda kotel topí nebo připravuje teplou vodu, teplotu přívodu a její cílovou hodnotu, výkon hořáku, poslední kód chyby uložený kotlem, tlak v systému, počet startů hořáku, venkovní teplotu a teplotu místnosti a teplé vody. S přístupovým tokenem nastavuje také režim topného okruhu 1 (Vypnuto, Manuální, Auto), žádanou pokojovou teplotu a žádanou teplotu teplé vody.

Komunitní šablona — zatím neotestovaná s TapHome. Šablona vznikla v portálu TapHome a je napsaná pro EMS-ESP 3.8.6; na reálné instalaci zatím ověřena nebyla. Stáhnete ji z portálu TapHome: EMS-ESP Gas Boiler — komunitní šablona (stáhněte XML — přihlášení není potřeba — a importujte ho jako nový modul).

Kompatibilní kotle a řídicí jednotky

O tom, zda kotel se šablonou funguje, rozhodují dvě věci: EMS-ESP musí kotel podporovat a kotel i jeho řídicí jednotka musí posílat hodnoty, které šablona čte.

Kotle, které šablona pokrývá:

  • 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

Seznam kotlů podporovaných EMS-ESP uvádí další modely, například Logano, Nefit Proline a Smartline, Condens 2300 a 5000i.

Brána funguje s variantami sběrnice EMS, EMS Plus (EMS+), EMS2 a Heatronic 3. Starší kotle se sběrnicí iRT, jako Nefit Ecomline nebo Buderus GB112, mohou bránu použít až po instalaci adaptéru Bosch EasyControlAdapter. OpenTherm mezi typy sběrnice, které brána podporuje, není.

Které hodnoty konkrétní kotel posílá, není pro jednotlivé modely zdokumentováno. Stránka Devices ve webovém rozhraní EMS-ESP zobrazuje jen entity s hodnotou; entita, která v EMS-ESP existuje, ale nemá hodnotu, je podporovaná firmwarem, ne připojeným kotlem. Stejný seznam je na http://<gateway-ip>/api/boiler/entities a http://<gateway-ip>/api/thermostat/entities.

Režim topného okruhu závisí na řídicí jednotce, protože každá řada řídicích jednotek má vlastní seznam režimů:

Řídicí jednotkaRežimy v EMS-ESPRežim topného okruhu
RC300, RC310, RC100, HMC310, Rego 2000 / 3000manual, autoManuální a Auto; volba Vypnuto skončí chybou zápisu
BC400, UI800, CR120off, manual, autoVypnuto, Manuální a Auto
RC35, řídicí jednotky Junkers a jiné modelyjiné seznamy (například RC35: night, day, auto; Junkers: nofrost, eco, heat, auto)nepodporováno — zařízení skončí chybou, smažte ho

Kotle Junkers a Nefit jsou často spárované s řídicími jednotkami Junkers nebo Nefit, které mají jiný seznam režimů. Zařízení kotle v šabloně na řídicí jednotce nezávisí a fungují dál.

Některé řídicí jednotky nepřijímají příkazy zápisu EMS a v EMS-ESP se zobrazují jako zařízení jen pro čtení: Buderus Logamatic TC100, Bosch EasyControl CT200, Junkers CT100, Moduline Easy, Junkers FW / FR vyrobené před 9/2008 a termostaty Tado. S nimi se režim ani žádaná pokojová teplota z TapHome změnit nedají.

Hardwarové připojení

Sada BBQKees Gateway E32 V2 KIT obsahuje bránu, 150 cm servisní kabel EMS, 100 cm kabel pro šroubové svorky EMS, adaptér servisního portu EMS, napájecí zdroj (12 V DC s konektorem nebo 5 V USB-C podle výrobní dávky) a kabel JST ZH pro vlastní teplotní čidla DS18B20. Brána se ke kotli připojuje jedním ze tří způsobů:

Připojení na kotliKabelNapájení
Servisní konektor EMS (3,5 mm)150 cm servisní kabel EMSze servisního konektoru
Servisní konektor EMS (3,5 mm)150 cm servisní kabel EMSexterní napájecí zdroj
Šroubové svorky sběrnice EMS100 cm kabel pro šroubové svorky EMSexterní napájecí zdroj (12 V DC nebo 5 V USB-C)

Servisní konektor lze použít jen tehdy, když ho kotel má. Brány prodávané od léta 2025 přijímají oba typy napájecích zdrojů. BBQKees EMS Gateway Wiki ukazuje, jak bránu připojit ke konkrétnímu kotli.

  • Síť: Ethernet (RJ45) nebo Wi-Fi. EMS-ESP se připojuje jen k Wi-Fi sítím 2,4 GHz s WPA2, ne k 5 GHz.
  • Firmware: EMS-ESP. Gateway E32 V2 (prodávaná od ledna 2024) má PSRAM a používá variantu firmwaru ESP32-16MB+. Firmware se aktualizuje ve webovém rozhraní EMS-ESP v Settings → Version.

Konfigurace

První nastavení EMS-ESP
  1. Při prvním startu EMS-ESP otevře přístupový bod Wi-Fi ems-esp (heslo WPA ems-esp-neo). Brána připojená přes Ethernet je dostupná na IP adrese, kterou jí přidělil router.
  2. Přihlaste se výchozím uživatelem admin / admin a změňte heslo.
  3. V Settings → Network připojte bránu k domácí síti (Wi-Fi nebo Ethernet).
  4. V routeru bráně vyhraďte pevnou IP adresu (rezervace DHCP) — šablona bránu adresuje její IP adresou.
Nastavení EMS-ESP, na kterých záleží
  • Teploty v °C — v Settings → Application nechte vypnuté „Convert temperature values to Fahrenheit“. Modul to kontroluje každých 60 s a při °F zobrazí chybu.
  • Language: English — v Settings → Application nechte jazyk English. Zařízení Režim topného okruhu rozpoznává režim podle textu volby (off, manual, auto) a EMS-ESP tyto texty překládá do zvoleného jazyka; s jiným jazykem zařízení skončí chybou, která uvede hlášený text. Zápisy používají anglické texty, které EMS-ESP přijme v každém jazyce, a ostatní zařízení na jazyce nezávisí.
  • Boolean Format a Enum Format nehrají roli. Šablona čte klíče index a bool a číselnou hodnotu value z detailu entity EMS-ESP, které na těchto nastaveních nezávisí.
  • Firmware 3.8 — modul zobrazí varování, když brána hlásí verzi mimo řadu 3.8. Ve verzi 3.7.0 se entity teplé vody přesunuly z předpony ww do vnořeného objektu dhw a EMS-ESP dostal samostatný seznam režimů pro řídicí jednotky typu BC400; mezi 3.8.0 a 3.8.6 se entity, které šablona používá, neměnily.
Přístupový token pro zápis

Čtení ověření nepotřebuje. Zápis — režim topného okruhu, žádaná pokojová teplota a teplá voda — potřebuje přístupový token EMS-ESP uživatele s právy admin:

  1. Otevřete webové rozhraní EMS-ESP → Settings → Security → Manage Users.
  2. Klikněte na ikonu klíče u uživatele s právy admin a zkopírujte token. Token nemá datum expirace.
  3. Při importu šablony vložte token do parametru importu AccessToken.

Bez tokenu je integrace jen pro čtení a každý zápis skončí chybou 401. Místo toho v EMS-ESP nezapínejte „Bypass Access Token authorization on API calls“ — zpřístupní API bez ověření a dokumentace EMS-ESP to nedoporučuje.

Parametry importu
ParametrPopis
IpAddressIP adresa brány EMS-ESP
AccessTokenPřístupový token EMS-ESP uživatele s právy admin — potřebný jen pro zápis; pro integraci jen pro čtení ho nechte prázdný

Možnosti zařízení

Topný okruh 1
  • Režim topného okruhu — Vypnuto, Manuální nebo Auto pro topný okruh 1. Zařízení čte pozici v seznamu režimů řídicí jednotky, vyhledá její text volby a zobrazí Vypnuto, Manuální nebo Auto; zapisuje anglický text volby. Které režimy fungují, závisí na řídicí jednotce (viz tabulka výše).
  • Pokojový termostat — aktuální a žádaná pokojová teplota topného okruhu 1 tak, jak ji hlásí řídicí jednotka. Rozsah žádané teploty zařízení je 0–30 °C. EMS-ESP drží žádanou pokojovou teplotu v krocích po 0,5 °C; šablona hodnotu posílá beze změny.
Stav kotle
  • Topení aktivní — aktivní, dokud kotel běží na vytápění.
  • Ohřev teplé vody aktivní — aktivní, dokud kotel ohřívá teplou užitkovou vodu.
Teploty
  • Teplota přívodu — aktuální teplota přívodu kotle s rozlišením 0,1 °C.
  • Cílová teplota přívodu — teplota přívodu, na kterou kotel míří (0–90 °C), nastavuje ji řídicí jednotka. Zařízení je záměrně jen pro čtení: EMS-ESP by tuto hodnotu zapsat uměl, ale zapsaná teplota přívodu by přebila pokojovou řídicí jednotku.
  • Venkovní teplota — venkovní teplota tak, jak ji hlásí kotel, s rozlišením 0,1 °C.
Hořák a tlak v systému
  • Výkon hořáku — aktuální výkon hořáku v procentech. Zařízení čte také poslední kód chyby uložený kotlem a zobrazí ho jako informační hlášení „Last error code (stored by the boiler): …“, například 2E(207) 100.75.2000 65:00 (0 min). Je to kód, který kotel uložil naposledy, s datem a dobou trvání — ne nutně aktivní porucha; hlášení zůstává i po odstranění poruchy. Když se kód chyby nedá přečíst, zařízení zobrazí varování a výkon hořáku zůstává dostupný.
  • Počet startů hořáku — celkový počet startů hořáku, který napočítal kotel.
  • Tlak v systému — tlak vody v topném systému v barech s rozlišením 0,1 bar.
Teplá užitková voda
  • Teplá užitková voda — aktuální a žádaná teplota teplé vody kotle. Rozsah žádané teploty zařízení je 10–70 °C, žádaná teplota se posílá v celých stupních a kotel uplatní vlastní limity.

Šablona zapisuje žádanou teplotu teplé vody kotle (dhw.seltemp), ne nastavení teplé vody řídicí jednotky (dhw.settemp, dhw.mode). Dokumentace EMS-ESP uvádí, že nastavení kotle, která spravuje řídicí jednotka, jí budou přepsána, takže řídicí jednotka, která spravuje teplou vodu, může žádanou teplotu nastavenou v TapHome přepsat. Na reálné instalaci to zatím ověřeno nebylo.

Jak šablona komunikuje s EMS-ESP

Každé zařízení čte vlastní hodnoty jedním dotazem HTTP GET na entitu na /api/<device>/[hc1/|dhw/]<entity> a bere klíč value, index nebo bool z odpovědi. Většina zařízení se dotazuje každých 30 s; Tlak v systému a Venkovní teplota každých 60 s a Počet startů hořáku každých 5 minut. Modul čte /api/system/info každých 60 s. Zápisy jsou dotazy HTTP POST s tělem JSON a přístupovým tokenem v hlavičce Authorization: Bearer.

EMS-ESP 3.8.3 a novější odpovídá 429 Too Many Requests na GET, který přijde dříve než 50 ms po předchozím volání API. Šablona proto před každým GET čeká 60 ms a při 429 jednou zopakuje dotaz po 200 ms. Jiný klient, který se API EMS-ESP dotazuje ve stejnou dobu (například druhý systém domácí automatizace), může občasné opakování přesto způsobit.

Proč REST a ne Modbus. EMS-ESP nabízí také Modbus TCP, ale posuny jeho registrů se mezi stabilními verzemi 3.8.0 a 3.8.6 změnily, takže šablona Modbus by po aktualizaci firmwaru brány potichu četla jiné hodnoty. REST API adresuje hodnoty jménem — přejmenovaná entita skončí viditelnou chybou zařízení.

Řešení problémů

Chyba zařízení „no value from the gateway“

Hlášení „no value from the gateway — this controller or unit does not report it; delete this device“ znamená, že připojený kotel nebo řídicí jednotka tuto entitu neposílá. Podívejte se na stránku Devices v EMS-ESP nebo na http://<gateway-ip>/api/boiler/entities a http://<gateway-ip>/api/thermostat/entities a zařízení po importu smažte — ostatní zařízení fungují dál.

Chyba zařízení 404

404 s hlášením jako no 'xyz' in thermostat znamená, že EMS-ESP entitu na této cestě nezná — řídicí jednotka nebo kotel ji nemá, nebo firmware používá jiný název. unknown device znamená, že EMS-ESP na sběrnici EMS nenašel kotel ani řídicí jednotku tohoto typu.

Režim topného okruhu hlásí jiný text

Chyba „hc1.mode reports ‘…’“ se objeví, když EMS-ESP hlásí jiný text režimu než off, manual nebo auto. Buď jazyk EMS-ESP není English (nastavte ho v Settings → Application), nebo řídicí jednotka používá jiný seznam režimů (například RC35 nebo řídicí jednotka Junkers) — pak zařízení Režim topného okruhu smažte.

Volba Vypnuto skončí chybou zápisu

Řídicí jednotky řady RC300 (RC300, RC310, RC100, HMC310, Rego 2000 / 3000) režim vypnuto nemají. EMS-ESP odmítne hodnotu, která není v seznamu řídicí jednotky, takže zařízení zobrazí chybu zápisu (hc1.mode write: HTTP …). S těmito řídicími jednotkami používejte Manuální nebo Auto.

Zápis skončí chybou 401

Přístupový token chybí nebo je nesprávný. Zkopírujte ho znovu ze Settings → Security → Manage Users → ikona klíče u uživatele s právy admin a zadejte ho do proměnné AccessToken modulu. Token se odvozuje ze jména uživatele a hesla super uživatele v Settings → Security → Security Settings.

Chyba 429

API EMS-ESP se ve stejném okamžiku dotazuje jiný klient. Šablona vlastní dotazy už rozkládá v čase a jednou je zopakuje; pokud se chyba opakuje, snižte frekvenci dotazů druhého klienta.

Chyba nebo varování modulu
  • „EMS-ESP reports °F“ — vypněte Fahrenheit v Settings → Application.
  • „Template written for EMS-ESP 3.8.6, gateway reports …“ — brána běží na firmwaru mimo řadu 3.8. Aktualizujte EMS-ESP v Settings → Version.
Brána není dostupná
  1. Zkontrolujte LED brány: 1 modré bliknutí během startu = sběrnice EMS zatím není připojená (zkontrolujte kabel a nastavení EMS Tx Mode), 2 červená bliknutí = síť se ještě připojuje (zkontrolujte Settings → Network; Wi-Fi musí být 2,4 GHz WPA2), trvalé světlo = data z EMS proudí.
  2. Otevřete v prohlížeči http://<gateway-ip>/api/system/info — pokud odpoví, brána je dostupná.
  3. Pokud se IP adresa změnila, najděte bránu přes jméno mDNS http://ems-esp.local a potom v routeru nastavte rezervaci DHCP.
  4. Použijte http:// — API EMS-ESP nepodporuje HTTPS se samopodepsanými certifikáty.

Dostupná zařízení

Brána EMS-ESP Modul
Vlastní proměnné
AccessToken (string)Přístupový token EMS-ESP uživatele s právy admin, posílá se v hlavičce Bearer při každém zápisu (režim topného okruhu, žádaná pokojová teplota a teplá voda); čtení funguje bez něj, takže prázdný token znamená integraci jen pro čtení
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

Čtení (modul)
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
Režim topného okruhu Vícestavový přepínač

Provozní režim topného okruhu 1 — Vypnuto, Manuální nebo Auto; řídicí jednotky řady RC300 nabízejí jen Manuální a Auto, BC400 / UI800 / CR120 také Vypnuto; vyžaduje jazyk EMS-ESP English

enum json_path
Hodnoty / Stavy: Off · Manual · Auto

Režim topného okruhu

Čtení stavu přepínače
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
Zápis stavu přepínače
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
Pokojový termostat Termostat

Aktuální a žádaná pokojová teplota topného okruhu 1 z řídicí jednotky; žádaná hodnota 0–30 °C, EMS-ESP ji drží v krocích po 0,5 °C

numeric Jednotka: °C

Pokojový termostat

Čtení teploty
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);
Čtení požadované teploty
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);
Zápis požadované teploty
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
Topení aktivní Jazýčkový kontakt Pouze ke čtení

Aktivní, dokud kotel běží na vytápění

boolean

Topení aktivní

Čtení
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);
Ohřev teplé vody aktivní Jazýčkový kontakt Pouze ke čtení

Aktivní, dokud kotel ohřívá teplou užitkovou vodu

boolean

Ohřev teplé vody aktivní

Čtení
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);
Teplota přívodu Teplotní senzor Pouze ke čtení
numeric Jednotka: °C

Teplota přívodu

Čtení teploty
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);
Cílová teplota přívodu Proměnná Pouze ke čtení

Teplota přívodu, na kterou kotel míří (0–90 °C), nastavuje ji řídicí jednotka; jen pro čtení, takže TapHome řídicí jednotku nikdy nepřebije

numeric Jednotka: °C

Cílová teplota přívodu

Čtení
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);
Výkon hořáku Proměnná Pouze ke čtení

Aktuální výkon hořáku v procentech; zobrazuje také poslední kód chyby uložený kotlem jako informační hlášení — ne nutně aktivní porucha

numeric Jednotka: %

Výkon hořáku

Čtení
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);
Čtení (modul)
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
Tlak v systému Proměnná Pouze ke čtení

Tlak vody v topném systému v barech

numeric Jednotka: bar

Tlak v systému

Čtení
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);
Počet startů hořáku Proměnná Pouze ke čtení

Celkový počet startů hořáku, který napočítal kotel

numeric

Počet startů hořáku

Čtení
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);
Teplá užitková voda Termostat

Aktuální a žádaná teplota teplé vody kotle; žádaná hodnota se posílá v celých stupních a kotel uplatní vlastní limity

numeric Jednotka: °C

Teplá užitková voda

Čtení teploty
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);
Čtení požadované teploty
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);
Zápis požadované teploty
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
Venkovní teplota Teplotní senzor Pouze ke čtení

Venkovní teplota tak, jak ji hlásí kotel

numeric Jednotka: °C

Venkovní teplota

Čtení teploty
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);
Připojení: Packet Parser → HTTP • Hostname: ems-esp.local
Možná vylepšení (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

Zdroje

Našli jste problém s touto šablonou zařízení?

Napište nám, co nefunguje, co chybí, nebo jak by se měla šablona chovat. Vaše zpětná vazba nám pomáhá udržet katalog přesný.

Komunita — neověřeno

Chcete to použít ve svém TapHome jádře?

Otevřete tuto šablonu v zákaznickém portálu a použijte ji ve svém domově, nebo navrhněte úpravu a odešlete ji zpět do katalogu.

Otevřít v portálu