TapHome

EMS-ESP tepelné čerpadlo (Bosch, Buderus, IVT)

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 tepelné čerpadlo (Bosch, Buderus, IVT)

Šablona EMS-ESP Heat Pump propojuje TapHome s tepelným čerpadlem Bosch, Buderus nebo IVT 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 tepelného čerpadla. 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 tepelné čerpadlo zobrazuje jako typ zařízení boiler a jeho řídicí jednotka jako typ zařízení thermostat.

Šablona čte venkovní teplotu, teplotu přívodu, zpátečky, místnosti a teplé vody, stav kompresoru, příkon kompresoru a čítače energie. S přístupovým tokenem nastavuje také provozní režim topného okruhu 1 (včetně chlazení), žádanou pokojovou teplotu, teplotu chlazení 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 Heat Pump — komunitní šablona (stáhněte XML — přihlášení není potřeba — a importujte ho jako nový modul).

Kompatibilní tepelná čerpadla a řídicí jednotky

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

Tepelná čerpadla, která šablona pokrývá:

  • Bosch Compress 6000AW, Hybrid 3000-7000iAW
  • Buderus WLW166i, WLW176i, WLW196i, WSW196i
  • CS5800i, CS6800i
  • Enviline, SupraEco, Geo 5xx
  • IVT AirX a Geo s řídicí jednotkou Rego 2000 nebo Rego 3000 — hlášené uživateli EMS-ESP, nejsou na oficiálním seznamu tepelných čerpadel podporovaných EMS-ESP

Brána funguje s variantami sběrnice EMS, EMS Plus (EMS+), EMS2 a Heatronic 3.

Které hodnoty konkrétní jednotka 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řipojenou jednotkou. Stejný seznam je na http://<gateway-ip>/api/boiler/entities a http://<gateway-ip>/api/thermostat/entities.

Chlazení potřebuje řídicí jednotku, která posílá hc1.hpoperatingmode. EMS-ESP tuto entitu registruje pro řadu RC300 (RC310, HMC310, Rego 2000 / 3000) a řadu BC400; zda ji konkrétní řídicí jednotka skutečně posílá, zdokumentováno není. UI800 ji hlásí na nejvyšší úrovni termostatu (/api/thermostat/hpoperatingmode), ne pod topným okruhem 1, takže zařízení provozního režimu — a s ním chlazení — s UI800 nefunguje.

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 k tepelnému čerpadlu připojuje jedním ze tří způsobů:

Připojení na tepelném čerpadleKabelNapá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 tepelné čerpadlo 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 nebo tepelnému čerpadlu.

  • 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.
  • Boolean Format, Enum Format a Language nehrají roli. Šablona čte klíče index a bool z detailu entity EMS-ESP, které na těchto nastaveních nezávisí, a zapisuje anglické texty voleb, které EMS-ESP přijme v každém jazyce.
  • Firmware 3.8 — modul zobrazí varování, když brána hlásí verzi mimo řadu 3.8. Názvy entit, které šablona používá, se změnily ve verzi 3.7.0 (ww → vnořené dhw) a 3.7.2 (remoteseltemp → cooltemp); mezi 3.8.0 a 3.8.6 se neměnily.
Přístupový token pro zápis

Čtení ověření nepotřebuje. Zápis — provozní režim, pokojová teplota, teplota chlazení 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
  • Provozní režim tepelného čerpadla — Vypnuto, Auto, Topení nebo Chlazení pro topný okruh 1. V této šabloně je to jediný způsob, jak přepnout tepelné čerpadlo na chlazení (viz omezení řídicích jednotek výše).
  • Pokojový termostat — aktuální a žádaná pokojová teplota topného okruhu 1 tak, jak ji hlásí řídicí jednotka. Rozsah žádané teploty je 0–30 °C v krocích po 0,5 °C.
  • Teplota chlazení — nastavení teploty chlazení topného okruhu 1, čtení i zápis od −1 do 30 °C v krocích po 0,5 °C.

Zařízení pokojového termostatu je omezené na 0–30 °C. Teplota chlazení se do EMS-ESP posílá beze změny, proto ji držte v rozsahu −1 až 30 °C.

Stav tepelného čerpadla
  • Činnost kompresoru — co kompresor právě dělá: Vypnuto, Topení, Chlazení, Teplá voda, Bazén, Ohřev bazénu, Odmrazování nebo Porucha kompresoru. Je to stav jen pro čtení; volba hodnoty v TapHome nemá žádný účinek.
  • Chod kompresoru — indikátor zapnuto/vypnuto, zapnutý, když kompresor běží.
Teploty
  • Venkovní teplota, Teplota přívodu a Teplota zpátečky tak, jak je hlásí tepelné čerpadlo, s rozlišením 0,1 °C.
Energie
  • Elektroměr — okamžitý odběr je aktuální elektrický příkon kompresoru (EMS-ESP hlásí W, TapHome zobrazuje kW); celková spotřeba je celková spotřeba elektrické energie tepelného čerpadla v kWh. Zdroje neuvádějí, zda tento součet zahrnuje elektrický dohřev, takže odběr integrovaný v čase s ním nemusí sedět.
  • Dodané teplo [kWh] (servisní atribut elektroměru) — celková tepelná energie dodaná tepelným čerpadlem. Je to tepelná energie, ne spotřeba elektřiny.
Teplá užitková voda
  • Teplá užitková voda — aktuální a žádaná teplota teplé vody tepelného čerpadla. Rozsah žádané teploty zařízení je 35–70 °C, žádaná teplota se posílá v celých stupních a tepelné čerpadlo uplatní vlastní limity. Šablona používá hodnoty teplé vody tepelného čerpadla, ne nastavení teplé vody řídicí jednotky (dhw.settemp, dhw.mode).
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. Zařízení se dotazují každých 30 s (venkovní teplota a elektroměr každých 60 s); 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 (od verze 3.7.0, jen na deskách s PSRAM) a MQTT. Posuny registrů Modbus v EMS-ESP 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é tepelné čerpadlo 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 ji nemá (například hc1.hpoperatingmode na UI800) nebo firmware používá jiný název. unknown device znamená, že EMS-ESP na sběrnici EMS nenašel tepelné čerpadlo ani řídicí jednotku tohoto typu.

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.
Chyba elektroměru o nrgtotal

Jednotka bez měření tepla nrgtotal neposílá. Elektroměr pak zobrazí chybu a atribut Dodané teplo zůstane prázdný; příkon a celková spotřeba fungují dál.

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í

EMS-ESP tepelné čerpadlo 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 (provozní režim, žádané hodnoty); č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 Heat Pump

Č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
    SystemInfo := r.Content;
    IF PARSEJSON(SystemInfo, "$.settings.fahrenheit", true) = true
        ADDERROR(1, "EMS-ESP reports °F — switch Fahrenheit off in EMS-ESP Settings → Application");
    END
    IF !ISNULL(PARSEJSON(SystemInfo, "$.system.version", true))
        VAR ver := TOSTRING(PARSEJSON(SystemInfo, "$.system.version", true));
        IF INDEXOF(ver, "3.8.") != 0
            ADDWARNING(0, "Template written for EMS-ESP 3.8.6, gateway reports " + ver);
        END
    END
ELSE
    SystemInfo := "";
    ADDERROR(0, "system/info: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
END
Provozní režim tepelného čerpadla Vícestavový přepínač

Provozní režim topného okruhu 1 — Vypnuto, Auto, Topení nebo Chlazení; jediný způsob, jak přepnout tepelné čerpadlo na chlazení, dostupný jen s řídicími jednotkami, které ho posílají (ne UI800)

enum numeric
Hodnoty / Stavy: Off · Auto · Heating · Cooling

Provozní režim tepelného čerpadla

Čtení stavu přepínače
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/thermostat/hc1/hpoperatingmode");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/thermostat/hc1/hpoperatingmode");
END
IF r.IsSuccess
    VAR idx := PARSEJSON(r.Content, "$.index", true);
    IF ISNULL(idx)
        ADDERROR(0, "hpoperatingmode: no value from the gateway — this controller or unit does not report it; delete this device");
        RETURN(NaN);
    END
    RETURN(TODOUBLE(idx));
ELSE
    ADDERROR(0, "hpoperatingmode: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
    RETURN(NaN);
END
Zápis stavu přepínače
VAR opttext := IF(Mu = 0, "off", IF(Mu = 1, "auto", IF(Mu = 2, "heating", "cooling")));
VAR body := "{\"value\":\"" + opttext + "\"}";
VAR r := SENDHTTPREQUEST("/api/thermostat/hc1/hpoperatingmode", "POST", body, "Content-Type: application/json", "Authorization: Bearer " + AccessToken);
IF r.IsSuccess = false
    IF r.StatusCode = 401
        ADDERROR(0, "hpoperatingmode: access token missing or wrong (EMS-ESP Settings → Security → Manage Users → key icon of an admin user)");
    ELSE
        ADDERROR(0, "hpoperatingmode write: " + 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 tepelného čerpadla; žádaná hodnota 0–30 °C v krocích po 0,5 °C

numeric Jednotka: °C

Pokojový termostat

Čtení teploty
IF CurrTempHc1 = ""
    RETURN(NaN);
END
VAR v := PARSEJSON(CurrTempHc1, "$.value", true);
IF ISNULL(v)
    ADDERROR(0, "currtemp: no value from the gateway — this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(TODOUBLE(v));
Čtení (modul)
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
    CurrTempHc1 := r.Content;
ELSE
    CurrTempHc1 := "";
    ADDERROR(0, "currtemp: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
END
SLEEP(60);
r := SENDHTTPREQUEST("/api/thermostat/hc1/seltemp");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/thermostat/hc1/seltemp");
END
IF r.IsSuccess
    SelTempHc1 := r.Content;
ELSE
    SelTempHc1 := "";
    ADDERROR(1, "seltemp: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
END
Čtení požadované teploty
IF SelTempHc1 = ""
    RETURN(NaN);
END
VAR v := PARSEJSON(SelTempHc1, "$.value", true);
IF ISNULL(v)
    ADDERROR(1, "seltemp: no value from the gateway — this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(TODOUBLE(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(0, "seltemp: access token missing or wrong (EMS-ESP Settings → Security → Manage Users → key icon of an admin user)");
    ELSE
        ADDERROR(0, "seltemp write: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
    END
END
Teplota chlazení Proměnná

Nastavení teploty chlazení topného okruhu 1, nastavitelné od −1 do 30 °C v krocích po 0,5 °C; dostupné jen s řídicími jednotkami, které ho posílají

numeric Jednotka: °C

Teplota chlazení

Čtení
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/thermostat/hc1/cooltemp");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/thermostat/hc1/cooltemp");
END
IF r.IsSuccess
    VAR v := PARSEJSON(r.Content, "$.value", true);
    IF ISNULL(v)
        ADDERROR(0, "cooltemp: no value from the gateway — this controller or unit does not report it; delete this device");
        RETURN(NaN);
    END
    RETURN(TODOUBLE(v));
ELSE
    ADDERROR(0, "cooltemp: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
    RETURN(NaN);
END
Zápis
VAR body := "{\"value\":" + Va + "}";
VAR r := SENDHTTPREQUEST("/api/thermostat/hc1/cooltemp", "POST", body, "Content-Type: application/json", "Authorization: Bearer " + AccessToken);
IF r.IsSuccess = false
    IF r.StatusCode = 401
        ADDERROR(0, "cooltemp: access token missing or wrong (EMS-ESP Settings → Security → Manage Users → key icon of an admin user)");
    ELSE
        ADDERROR(0, "cooltemp write: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
    END
END
Činnost kompresoru Vícestavový přepínač Pouze ke čtení

Stav jen pro čtení, co kompresor dělá — Vypnuto, Topení, Chlazení, Teplá voda, Bazén, Ohřev bazénu, Odmrazování nebo Porucha kompresoru

enum numeric
Hodnoty / Stavy: Off · Heating · Cooling · Hot Water · Pool · Pool Heating · Defrost · Compressor Alarm

Činnost kompresoru

Čtení stavu přepínače
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/boiler/hpactivity");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/hpactivity");
END
IF r.IsSuccess
    VAR idx := PARSEJSON(r.Content, "$.index", true);
    IF ISNULL(idx)
        ADDERROR(0, "hpactivity: no value from the gateway — this controller or unit does not report it; delete this device");
        RETURN(NaN);
    END
    RETURN(TODOUBLE(idx));
ELSE
    ADDERROR(0, "hpactivity: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
    RETURN(NaN);
END
Chod kompresoru Jazýčkový kontakt Pouze ke čtení
boolean

Chod kompresoru

Čtení
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/boiler/hpcompon");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/hpcompon");
END
IF r.IsSuccess
    VAR b := PARSEJSON(r.Content, "$.bool", true);
    IF ISNULL(b)
        ADDERROR(0, "hpcompon: no value from the gateway — this controller or unit does not report it; delete this device");
        RETURN(NaN);
    END
    RETURN(b);
ELSE
    ADDERROR(0, "hpcompon: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
    RETURN(NaN);
END
Venkovní teplota Teplotní senzor Pouze ke čtení
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
    VAR v := PARSEJSON(r.Content, "$.value", true);
    IF ISNULL(v)
        ADDERROR(0, "outdoortemp: no value from the gateway — this controller or unit does not report it; delete this device");
        RETURN(NaN);
    END
    RETURN(TODOUBLE(v));
ELSE
    ADDERROR(0, "outdoortemp: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
    RETURN(NaN);
END
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
    VAR v := PARSEJSON(r.Content, "$.value", true);
    IF ISNULL(v)
        ADDERROR(0, "curflowtemp: no value from the gateway — this controller or unit does not report it; delete this device");
        RETURN(NaN);
    END
    RETURN(TODOUBLE(v));
ELSE
    ADDERROR(0, "curflowtemp: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
    RETURN(NaN);
END
Teplota zpátečky Teplotní senzor Pouze ke čtení
numeric Jednotka: °C

Teplota zpátečky

Čtení teploty
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/boiler/rettemp");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/rettemp");
END
IF r.IsSuccess
    VAR v := PARSEJSON(r.Content, "$.value", true);
    IF ISNULL(v)
        ADDERROR(0, "rettemp: no value from the gateway — this controller or unit does not report it; delete this device");
        RETURN(NaN);
    END
    RETURN(TODOUBLE(v));
ELSE
    ADDERROR(0, "rettemp: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
    RETURN(NaN);
END
Elektroměr Elektroměr Pouze ke čtení

Aktuální elektrický příkon kompresoru (kW) a celková spotřeba elektrické energie tepelného čerpadla (kWh)

numeric Jednotka: W / kWh
Servisní atributy
Dodané teplo [kWh]Celková tepelná energie dodaná tepelným čerpadlem — tepelný výkon, ne spotřeba elektřiny

Elektroměr

Čtení celkové spotřeby
IF NrgConsTotal = ""
    RETURN(NaN);
END
VAR v := PARSEJSON(NrgConsTotal, "$.value", true);
IF ISNULL(v)
    ADDERROR(1, "nrgconstotal: no value from the gateway — this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(TODOUBLE(v));
Čtení odběru
IF HpCurrPower = ""
    RETURN(NaN);
END
VAR v := PARSEJSON(HpCurrPower, "$.value", true);
IF ISNULL(v)
    ADDERROR(0, "hpcurrpower: no value from the gateway — this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(TODOUBLE(v) / 1000);
Čtení (modul)
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/boiler/hpcurrpower");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/hpcurrpower");
END
IF r.IsSuccess
    HpCurrPower := r.Content;
ELSE
    HpCurrPower := "";
    ADDERROR(0, "hpcurrpower: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
END
SLEEP(60);
r := SENDHTTPREQUEST("/api/boiler/nrgconstotal");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/nrgconstotal");
END
IF r.IsSuccess
    NrgConsTotal := r.Content;
ELSE
    NrgConsTotal := "";
    ADDERROR(1, "nrgconstotal: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
END
SLEEP(60);
r := SENDHTTPREQUEST("/api/boiler/nrgtotal");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/nrgtotal");
END
IF r.IsSuccess
    NrgTotal := r.Content;
    IF ISNULL(PARSEJSON(NrgTotal, "$.value", true))
        ADDERROR(3, "nrgtotal: no value from the gateway — this unit does not report heat delivered; the attribute stays empty");
    END
ELSE
    NrgTotal := "";
    ADDERROR(2, "nrgtotal: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
END
Servisní atributy
Heat delivered [kWh]
IF NrgTotal = "" RETURN(NaN); END VAR v := PARSEJSON(NrgTotal, "$.value", true); IF ISNULL(v) RETURN(NaN); END RETURN(TODOUBLE(v));
Teplá užitková voda Termostat

Aktuální a žádaná teplota teplé vody tepelného čerpadla; žádaná hodnota se posílá v celých stupních a tepelné čerpadlo uplatní vlastní limity

numeric Jednotka: °C

Teplá užitková voda

Čtení teploty
IF DhwCurTemp = ""
    RETURN(NaN);
END
VAR v := PARSEJSON(DhwCurTemp, "$.value", true);
IF ISNULL(v)
    ADDERROR(0, "dhw/curtemp: no value from the gateway — this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(TODOUBLE(v));
Čtení (modul)
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
    DhwCurTemp := r.Content;
ELSE
    DhwCurTemp := "";
    ADDERROR(0, "dhw/curtemp: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
END
SLEEP(60);
r := SENDHTTPREQUEST("/api/boiler/dhw/seltemp");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/dhw/seltemp");
END
IF r.IsSuccess
    DhwSelTemp := r.Content;
ELSE
    DhwSelTemp := "";
    ADDERROR(1, "dhw/seltemp: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
END
Čtení požadované teploty
IF DhwSelTemp = ""
    RETURN(NaN);
END
VAR v := PARSEJSON(DhwSelTemp, "$.value", true);
IF ISNULL(v)
    ADDERROR(1, "dhw/seltemp: no value from the gateway — this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(TODOUBLE(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(0, "dhw/seltemp: access token missing or wrong (EMS-ESP Settings → Security → Manage Users → key icon of an admin user)");
    ELSE
        ADDERROR(0, "dhw/seltemp write: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
    END
END
Připojení: Packet Parser → HTTP • Hostname: ems-esp.local
Možná vylepšení (15)
  • Heat pump operating mode on UI800 (thermostat top level) — UI800 reports hpoperatingmode at the thermostat top level instead of under hc1, so the template's operating mode device (and with it cooling) does not work with UI800
  • 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
  • Heating circuit mode — Enum, writable: manual / auto on RC300, RC100, Rego 3000 and HMC310; off / manual / auto on BC400, UI800 and CR120
  • Heat pump cooling enabled — Boolean, writable — enables cooling on the heating circuit
  • Summer / winter switchover — winter / auto / summer, RC100 and RC300
  • Further heating circuit settings — Comfort / eco / manual setpoints, summer threshold, flow temperature limits, heating curve design temperature, offset, room influence and control mode (RC100 / RC300); 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 heat pump (boiler) DHW entities instead
  • 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 instead of Modbus register offsets

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