---
title: "EMS-ESP tepelné čerpadlo (Bosch, Buderus, IVT)"
description: "Provozní režim včetně chlazení, pokojová teplota a TUV, teploty a energie tepelných čerpadel Bosch, Buderus a IVT přes REST API brány EMS-ESP."
url: "https://taphome.com/cs/compatibility/ems-esp-heat-pump-http/"
language: cs
lastmod: 2026-10-18
generator: hugo
ai:
  topics: ["http","heat-pump","ems-bus","rest-api","gateway","wifi","ethernet","cooling","dhw"]
  questions: ["Je moje tepelné čerpadlo Buderus kompatibilní s TapHome?","Jak propojit tepelné čerpadlo Bosch, Buderus nebo IVT s TapHome přes EMS-ESP?","Co šablona EMS-ESP pro tepelné čerpadlo v TapHome čte a co ovládá?","Jak připojit bránu BBQKees EMS-ESP k tepelnému čerpadlu a k TapHome?","Dokáže TapHome přepnout tepelné čerpadlo Buderus na chlazení přes EMS-ESP?","Proč zařízení EMS-ESP v TapHome hlásí „no value from the gateway“ nebo chybu 401?"]
---

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

Komunikace: Packet Parser → HTTP

- [Oficiální stránka BBQKees Electronics](https://bbqkees-electronics.nl)
- [Produktová stránka BBQKees Gateway E32 V2 KIT](https://bbqkees-electronics.nl/product/gateway-e32-v2-ethernet-wifi-edition-v2-kit/)

## Návod na integraci

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

> [!WARNING]
> **Komunitní šablona.** Šablona vznikla v portálu TapHome a je napsaná pro **EMS-ESP 3.8.6**. Stáhnete ji z portálu TapHome: [EMS-ESP Heat Pump — komunitní šablona](https://portal.taphome.com/portal/community/ems-esp-heat-pump-http) (stáhněte XML — přihlášení není potřeba — a importujte ho jako nový modul).

**[EMS-ESP Heat Pump (Bosch/Buderus/IVT)](https://portal.taphome.com/cs/portal/community/ems-esp-heat-pump-http)** — EMS-ESP, HTTP. EMS-ESP 3.8.6 template for Bosch, Buderus and IVT heat pumps: mode incl.

## 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 čerpadle | Kabel | Napájení |
|---|---|---|
| Servisní konektor EMS (3,5 mm) | 150 cm servisní kabel EMS | ze servisního konektoru |
| Servisní konektor EMS (3,5 mm) | 150 cm servisní kabel EMS | externí napájecí zdroj |
| Šroubové svorky sběrnice EMS | 100 cm kabel pro šroubové svorky EMS | externí 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](https://bbqkees-electronics.nl/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

| Parametr | Popis |
|---|---|
| `IpAddress` | IP adresa brány EMS-ESP |
| `AccessToken` | Pří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.

> [!NOTE]
> **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í 10

Tato zařízení se po importu zobrazí v TapHome.

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.

Čtení (modul)

```taphome
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č Čtení i zápis

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

Čtení stavu přepínače

```taphome
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

```taphome
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 Čtení i zápis

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

Čtení teploty

```taphome
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)

```taphome
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

```taphome
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

```taphome
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á Čtení i zápis

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

Čtení

```taphome
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

```taphome
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

Čtení stavu přepínače

```taphome
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

Čtení

```taphome
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

Čtení teploty

```taphome
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

Čtení teploty

```taphome
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

Čtení teploty

```taphome
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 |

Čtení celkové spotřeby

```taphome
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

```taphome
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)

```taphome
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]

```taphome
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 Čtení i zápis

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

Čtení teploty

```taphome
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)

```taphome
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

```taphome
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

```taphome
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

## Parametry importu

Tyto hodnoty zadáte při importu XML.

| Ptá se v aplikaci                                                                | Výchozí            |
|----------------------------------------------------------------------------------|--------------------|
| EMS-ESP IP address                                                               | Zadáte při importu |
| EMS-ESP access token (admin user, Settings → Security → Manage Users → key icon) | Zadáte při importu |

## Zdroje

- EMS-ESP 3.8.6 REST API facts (TapHome digest of the firmware at tag v3.8.6)
  
  [github.com](https://github.com/emsesp/EMS-ESP32/tree/v3.8.6) 2026-10-18
- EMS-ESP documentation — Commands and API Reference
  
  [docs.emsesp.org](https://docs.emsesp.org/Commands) 2026-10-18
- EMS-ESP documentation — Configuring EMS-ESP
  
  [docs.emsesp.org](https://docs.emsesp.org/Configuring) 2026-10-18
- EMS-ESP documentation — Supported Heat Pumps
  
  [docs.emsesp.org](https://docs.emsesp.org/Heat-Pumps) 2026-10-18
- EMS-ESP documentation — Supported Thermostats
  
  [docs.emsesp.org](https://docs.emsesp.org/Thermostats) 2026-10-18
- EMS-ESP documentation — Installing
  
  [docs.emsesp.org](https://docs.emsesp.org/Installing) 2026-10-18
- EMS-ESP documentation — Getting Started
  
  [docs.emsesp.org](https://docs.emsesp.org/Getting-Started) 2026-10-18
- EMS-ESP changelog 3.7.0 – 3.8.6
  
  [github.com](https://github.com/emsesp/EMS-ESP32/blob/v3.8.6/CHANGELOG.md) 2026-10-18
- BBQKees Gateway E32 V2 KIT (Ethernet + WiFi Edition V2 KIT) — product page
  
  [bbqkees-electronics.nl](https://bbqkees-electronics.nl/product/gateway-e32-v2-ethernet-wifi-edition-v2-kit/) 2026-10-18

## Související dokumentace

- [Integrace Packet Parser](https://taphome.com/cs/compatibility/packet-parser-guide/)
- [Packet Parser (HTTP, TCP, UDP, FTP, MQTT)](https://taphome.com/cs/docs/integration/packet-parser/)
- [Funkce Packet parser](https://taphome.com/cs/docs/script/packet-parser/)
- [Funkce pro parsování](https://taphome.com/cs/docs/script/parsing-functions/)

