---
title: "EMS-ESP tepelné čerpadlo (Bosch, Buderus, IVT)"
description: "Prevádzkový režim vrátane chladenia, izbová teplota a TÚV, teploty a energia tepelných čerpadiel Bosch, Buderus a IVT cez REST API brány EMS-ESP."
url: "https://taphome.com/sk/compatibility/ems-esp-heat-pump-http/"
language: sk
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?","Ako prepojiť tepelné čerpadlo Bosch, Buderus alebo IVT s TapHome cez EMS-ESP?","Čo šablóna EMS-ESP pre tepelné čerpadlo v TapHome číta a čo ovláda?","Ako pripojiť bránu BBQKees EMS-ESP k tepelnému čerpadlu a k TapHome?","Dokáže TapHome prepnúť tepelné čerpadlo Buderus na chladenie cez EMS-ESP?","Prečo zariadenie EMS-ESP v TapHome hlási „no value from the gateway“ alebo chybu 401?"]
---

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

Komunikácia: Packet Parser → HTTP

- [Oficiálna 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/)

> Adresa v sieti
> 
> TapHome komunikuje so zariadením na adrese zadanej pri importe. Dajte zariadeniu stálu adresu — rezerváciu IP v routeri, alebo jeho mDNS meno, ak ho podporuje —, inak integrácia prestane fungovať, keď router adresu zmení.
> 
> [Príprava siete](https://taphome.com/sk/docs/setup/network-preparation/)

## Návod na integráciu

Šablóna EMS-ESP Heat Pump pripája TapHome k tepelnému čerpadlu Bosch, Buderus alebo IVT cez bránu EMS-ESP — BBQKees Electronics Gateway E32 V2, ktorá beží na otvorenom firmvéri EMS-ESP a pripája sa na zbernicu EMS tepelného čerpadla. TapHome s bránou komunikuje cez jej lokálne HTTP REST API (port 80, JSON); pripojenie ku cloudu netreba. V EMS-ESP sa tepelné čerpadlo zobrazuje ako typ zariadenia `boiler` a jeho riadiaca jednotka ako typ zariadenia `thermostat`.

Šablóna číta vonkajšiu teplotu, teplotu prívodu, spiatočky, izby a teplej vody, stav kompresora, príkon kompresora a počítadlá energie. S prístupovým tokenom nastavuje aj prevádzkový režim vykurovacieho okruhu 1 (vrátane chladenia), žiadanú izbovú teplotu, teplotu chladenia a žiadanú teplotu teplej vody.

> [!WARNING]
> **Komunitná šablóna.** Šablóna vznikla v portáli TapHome a je napísaná pre **EMS-ESP 3.8.6**. Stiahnete ju z portálu TapHome: [EMS-ESP Heat Pump — komunitná šablóna](https://portal.taphome.com/portal/community/ems-esp-heat-pump-http) (stiahnite XML — prihlásenie netreba — a importujte ho ako nový modul).

**[EMS-ESP Heat Pump (Bosch/Buderus/IVT)](https://portal.taphome.com/sk/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é čerpadlá a riadiace jednotky

O tom, či tepelné čerpadlo so šablónou funguje, rozhodujú dve veci: EMS-ESP musí tepelné čerpadlo podporovať a tepelné čerpadlo aj jeho riadiaca jednotka musia posielať hodnoty, ktoré šablóna číta.

Tepelné čerpadlá, ktoré šablóna pokrýva:

- Bosch Compress 6000AW, Hybrid 3000-7000iAW
- Buderus WLW166i, WLW176i, WLW196i, WSW196i
- CS5800i, CS6800i
- Enviline, SupraEco, Geo 5xx
- IVT AirX a Geo s riadiacou jednotkou Rego 2000 alebo Rego 3000 — hlásené používateľmi EMS-ESP, nie sú na oficiálnom zozname tepelných čerpadiel podporovaných EMS-ESP

Brána funguje s variantmi zbernice EMS, EMS Plus (EMS+), EMS2 a Heatronic 3.

Ktoré hodnoty konkrétna jednotka posiela, nie je pre jednotlivé modely zdokumentované. Stránka Devices vo webovom rozhraní EMS-ESP zobrazuje len entity s hodnotou; entita, ktorá v EMS-ESP existuje, ale nemá hodnotu, je podporovaná firmvérom, nie pripojenou jednotkou. Rovnaký zoznam je na `http://<gateway-ip>/api/boiler/entities` a `http://<gateway-ip>/api/thermostat/entities`.

**Chladenie** potrebuje riadiacu jednotku, ktorá posiela `hc1.hpoperatingmode`. EMS-ESP túto entitu registruje pre rad RC300 (RC310, HMC310, Rego 2000 / 3000) a rad BC400; či ju konkrétna riadiaca jednotka naozaj posiela, zdokumentované nie je. **UI800** ju hlási na najvyššej úrovni termostatu (`/api/thermostat/hpoperatingmode`), nie pod vykurovacím okruhom 1, takže zariadenie prevádzkového režimu — a s ním chladenie — s UI800 nefunguje.

## Hardvérové pripojenie

Súprava BBQKees Gateway E32 V2 KIT obsahuje bránu, 150 cm servisný kábel EMS, 100 cm kábel pre skrutkové svorky EMS, adaptér servisného portu EMS, napájací zdroj (12 V DC s konektorom alebo 5 V USB-C podľa výrobnej dávky) a kábel JST ZH pre vlastné teplotné snímače DS18B20. Brána sa k tepelnému čerpadlu pripája jedným z troch spôsobov:

| Pripojenie na tepelnom čerpadle | Kábel | Napájanie |
|---|---|---|
| Servisný konektor EMS (3,5 mm) | 150 cm servisný kábel EMS | zo servisného konektora |
| Servisný konektor EMS (3,5 mm) | 150 cm servisný kábel EMS | externý napájací zdroj |
| Skrutkové svorky zbernice EMS | 100 cm kábel pre skrutkové svorky EMS | externý napájací zdroj (12 V DC alebo 5 V USB-C) |

Servisný konektor sa dá použiť len vtedy, keď ho tepelné čerpadlo má. Brány predávané od leta 2025 prijímajú oba typy napájacích zdrojov. [BBQKees EMS Gateway Wiki](https://bbqkees-electronics.nl/wiki/) ukazuje, ako bránu pripojiť ku konkrétnemu kotlu alebo tepelnému čerpadlu.

- **Sieť:** Ethernet (RJ45) alebo Wi-Fi. EMS-ESP sa pripája len k Wi-Fi sieťam 2,4 GHz s WPA2, nie k 5 GHz.
- **Firmvér:** EMS-ESP. Gateway E32 V2 (predávaná od januára 2024) má PSRAM a používa variant firmvéru `ESP32-16MB+`. Firmvér sa aktualizuje vo webovom rozhraní EMS-ESP v Settings → Version.

## Konfigurácia

### Prvé nastavenie EMS-ESP

1. Pri prvom štarte EMS-ESP otvorí prístupový bod Wi-Fi `ems-esp` (heslo WPA `ems-esp-neo`). Brána pripojená cez Ethernet je dostupná na IP adrese, ktorú jej pridelil router.
2. Prihláste sa predvoleným používateľom `admin` / `admin` a zmeňte heslo.
3. V Settings → Network pripojte bránu k domácej sieti (Wi-Fi alebo Ethernet).
4. V routeri bráne vyhraďte pevnú IP adresu (rezervácia DHCP) — šablóna bránu adresuje jej IP adresou.

### Nastavenia EMS-ESP, na ktorých záleží

- **Teploty v °C** — v Settings → Application nechajte vypnuté „Convert temperature values to Fahrenheit“. Modul to kontroluje každých 60 s a pri °F zobrazí chybu.
- **Boolean Format, Enum Format a Language** nehrajú rolu. Šablóna číta kľúče `index` a `bool` z detailu entity EMS-ESP, ktoré od týchto nastavení nezávisia, a zapisuje anglické texty volieb, ktoré EMS-ESP prijme v každom jazyku.
- **Firmvér 3.8** — modul zobrazí varovanie, keď brána hlási verziu mimo radu 3.8. Mená entít, ktoré šablóna používa, sa zmenili vo verzii 3.7.0 (`ww` → vnorené `dhw`) a 3.7.2 (`remoteseltemp` → `cooltemp`); medzi 3.8.0 a 3.8.6 sa nemenili.

### Prístupový token pre zápis

Čítanie overenie nepotrebuje. Zápis — prevádzkový režim, izbová teplota, teplota chladenia a teplá voda — potrebuje prístupový token EMS-ESP používateľa s právami admin:

1. Otvorte webové rozhranie EMS-ESP → Settings → Security → Manage Users.
2. Kliknite na ikonu kľúča pri používateľovi s právami admin a skopírujte token. Token nemá dátum expirácie.
3. Pri importe šablóny vložte token do parametra importu `AccessToken`.

Bez tokenu je integrácia len na čítanie a každý zápis skončí chybou 401. Namiesto toho v EMS-ESP nezapínajte „Bypass Access Token authorization on API calls“ — sprístupní API bez overenia a dokumentácia EMS-ESP to neodporúča.

### Parametre importu

| Parameter | Popis |
|---|---|
| `IpAddress` | IP adresa brány EMS-ESP |
| `AccessToken` | Prístupový token EMS-ESP používateľa s právami admin — treba ho len na zápis; pre integráciu len na čítanie ho nechajte prázdny |

## Možnosti zariadení

### Vykurovací okruh 1

- **Prevádzkový režim tepelného čerpadla** — Vypnuté, Auto, Kúrenie alebo Chladenie pre vykurovací okruh 1. V tejto šablóne je to jediný spôsob, ako prepnúť tepelné čerpadlo na chladenie (pozri obmedzenia riadiacich jednotiek vyššie).
- **Izbový termostat** — aktuálna a žiadaná izbová teplota vykurovacieho okruhu 1 tak, ako ju hlási riadiaca jednotka. Rozsah žiadanej teploty je 0–30 °C v krokoch po 0,5 °C.
- **Teplota chladenia** — nastavenie teploty chladenia vykurovacieho okruhu 1, čítanie aj zápis od −1 do 30 °C v krokoch po 0,5 °C.

Zariadenie izbového termostatu je obmedzené na 0–30 °C. Teplota chladenia sa do EMS-ESP posiela bez úprav, preto ju držte v rozsahu −1 až 30 °C.

### Stav tepelného čerpadla

- **Činnosť kompresora** — čo kompresor práve robí: Vypnuté, Kúrenie, Chladenie, Teplá voda, Bazén, Ohrev bazéna, Odmrazovanie alebo Porucha kompresora. Je to stav len na čítanie; voľba hodnoty v TapHome nemá žiadny účinok.
- **Chod kompresora** — indikátor zapnuté/vypnuté, zapnutý, keď kompresor beží.

### Teploty

- **Vonkajšia teplota**, **Teplota prívodu** a **Teplota spiatočky** tak, ako ich hlási tepelné čerpadlo, s rozlíšením 0,1 °C.

### Energia

- **Elektromer** — okamžitý odber je aktuálny elektrický príkon kompresora (EMS-ESP hlási W, TapHome zobrazuje kW); celková spotreba je celková spotreba elektrickej energie tepelného čerpadla v kWh. Zdroje neuvádzajú, či táto suma zahŕňa elektrický dohrev, takže odber integrovaný v čase s ňou nemusí sedieť.
- **Dodané teplo [kWh]** (servisný atribút elektromera) — celková tepelná energia dodaná tepelným čerpadlom. Je to tepelná energia, nie spotreba elektriny.

### Teplá úžitková voda

- **Teplá úžitková voda** — aktuálna a žiadaná teplota teplej vody tepelného čerpadla. Rozsah žiadanej teploty zariadenia je 35–70 °C, žiadaná teplota sa posiela v celých stupňoch a tepelné čerpadlo uplatní vlastné limity. Šablóna používa hodnoty teplej vody tepelného čerpadla, nie nastavenia teplej vody riadiacej jednotky (`dhw.settemp`, `dhw.mode`).

### Ako šablóna komunikuje s EMS-ESP

Každé zariadenie číta vlastné hodnoty jedným dopytom HTTP GET na entitu na `/api/<device>/[hc1/|dhw/]<entity>` a berie kľúč `value`, `index` alebo `bool` z odpovede. Zariadenia sa dopytujú každých 30 s (vonkajšia teplota a elektromer každých 60 s); modul číta `/api/system/info` každých 60 s. Zápisy sú dopyty HTTP POST s telom JSON a prístupovým tokenom v hlavičke `Authorization: Bearer`.

EMS-ESP 3.8.3 a novší odpovedá `429 Too Many Requests` na GET, ktorý príde skôr než 50 ms po predchádzajúcom volaní API. Šablóna preto pred každým GET čaká 60 ms a pri 429 jedenkrát zopakuje dopyt po 200 ms. Iný klient, ktorý sa API EMS-ESP dopytuje v tom istom čase (napríklad druhý systém domácej automatizácie), môže občas opakovanie aj tak spôsobiť.

> [!NOTE]
> **Prečo REST a nie Modbus.** EMS-ESP ponúka aj Modbus TCP (od verzie 3.7.0, len na doskách s PSRAM) a MQTT. Posuny registrov Modbus v EMS-ESP sa medzi stabilnými verziami 3.8.0 a 3.8.6 zmenili, takže šablóna Modbus by po aktualizácii firmvéru brány potichu čítala iné hodnoty. REST API adresuje hodnoty menom — premenovaná entita skončí viditeľnou chybou zariadenia.

## Riešenie problémov

### Chyba zariadenia „no value from the gateway“

Hlásenie „no value from the gateway — this controller or unit does not report it; delete this device“ znamená, že pripojené tepelné čerpadlo alebo riadiaca jednotka túto entitu neposiela. Pozrite stránku Devices v EMS-ESP alebo `http://<gateway-ip>/api/boiler/entities` a `http://<gateway-ip>/api/thermostat/entities` a zariadenie po importe zmažte — ostatné zariadenia fungujú ďalej.

### Chyba zariadenia 404

`404` s hlásením ako `no 'xyz' in thermostat` znamená, že EMS-ESP entitu na tejto ceste nepozná — riadiaca jednotka ju nemá (napríklad `hc1.hpoperatingmode` na UI800) alebo firmvér používa iné meno. `unknown device` znamená, že EMS-ESP na zbernici EMS nenašiel tepelné čerpadlo ani riadiacu jednotku tohto typu.

### Zápis skončí chybou 401

Prístupový token chýba alebo je nesprávny. Skopírujte ho znova zo Settings → Security → Manage Users → ikona kľúča pri používateľovi s právami admin a zadajte ho do premennej `AccessToken` modulu. Token sa odvodzuje z mena používateľa a hesla super používateľa v Settings → Security → Security Settings.

### Chyba 429

API EMS-ESP sa v tom istom okamihu dopytuje iný klient. Šablóna vlastné dopyty už rozkladá v čase a raz ich zopakuje; ak sa chyba opakuje, znížte frekvenciu dopytov druhého klienta.

### Chyba alebo varovanie modulu

- „EMS-ESP reports °F“ — vypnite Fahrenheit v Settings → Application.
- „Template written for EMS-ESP 3.8.6, gateway reports …“ — brána beží na firmvéri mimo radu 3.8. Aktualizujte EMS-ESP v Settings → Version.

### Chyba elektromera o nrgtotal

Jednotka bez merania tepla `nrgtotal` neposiela. Elektromer potom zobrazí chybu a atribút Dodané teplo ostane prázdny; príkon a celková spotreba fungujú ďalej.

### Brána nie je dostupná

1. Skontrolujte LED brány: 1 modré bliknutie počas štartu = zbernica EMS zatiaľ nie je pripojená (skontrolujte kábel a nastavenie EMS Tx Mode), 2 červené bliknutia = sieť sa ešte pripája (skontrolujte Settings → Network; Wi-Fi musí byť 2,4 GHz WPA2), trvalé svetlo = údaje z EMS prúdia.
2. Otvorte v prehliadači `http://<gateway-ip>/api/system/info` — ak odpovie, brána je dostupná.
3. Ak sa IP adresa zmenila, nájdite bránu cez meno mDNS `http://ems-esp.local` a potom v routeri nastavte rezerváciu DHCP.
4. Použite `http://` — API EMS-ESP nepodporuje HTTPS so samopodpísanými certifikátmi.

## Dostupné zariadenia 10

Tieto zariadenia sa po importe zobrazia v TapHome.

EMS-ESP tepelné čerpadlo Modul

Vlastné premenné

`AccessToken` (string) Prístupový token EMS-ESP používateľa s právami admin, posiela sa v hlavičke Bearer pri každom zápise (prevádzkový režim, žiadané hodnoty); čítanie funguje bez neho, takže prázdny token znamená integráciu len na čítanie

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.

Čítanie (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
```

Prevádzkový režim tepelného čerpadla Viacstavový prepínač Čítanie aj zápis

Prevádzkový režim vykurovacieho okruhu 1 — Vypnuté, Auto, Kúrenie alebo Chladenie; jediný spôsob, ako prepnúť tepelné čerpadlo na chladenie, dostupný len s riadiacimi jednotkami, ktoré ho posielajú (nie UI800)

enum numeric

Hodnoty / Stavy: Off · Auto · Heating · Cooling

Čítanie stavu prepínača

```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 prepínača

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

Izbový termostat Termostat Čítanie aj zápis

Aktuálna a žiadaná izbová teplota vykurovacieho okruhu 1 z riadiacej jednotky tepelného čerpadla; žiadaná hodnota 0–30 °C v krokoch po 0,5 °C

numeric Jednotka: °C

Čítanie 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));
```

Čítanie (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
```

Čítanie požadovanej 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žadovanej 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 chladenia Premenná Čítanie aj zápis

Nastavenie teploty chladenia vykurovacieho okruhu 1, nastaviteľné od −1 do 30 °C v krokoch po 0,5 °C; dostupné len s riadiacimi jednotkami, ktoré ho posielajú

numeric Jednotka: °C

Čítanie

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

Činnosť kompresora Viacstavový prepínač Len na čítanie

Stav len na čítanie, čo kompresor robí — Vypnuté, Kúrenie, Chladenie, Teplá voda, Bazén, Ohrev bazéna, Odmrazovanie alebo Porucha kompresora

enum numeric

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

Čítanie stavu prepínača

```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 kompresora Jazýčkový kontakt Len na čítanie

boolean

Čítanie

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

Vonkajšia teplota Teplotný senzor Len na čítanie

numeric Jednotka: °C

Čítanie 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 prívodu Teplotný senzor Len na čítanie

numeric Jednotka: °C

Čítanie 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 spiatočky Teplotný senzor Len na čítanie

numeric Jednotka: °C

Čítanie 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
```

Elektromer Elektromer Len na čítanie

Aktuálny elektrický príkon kompresora (kW) a celková spotreba elektrickej energie tepelného čerpadla (kWh)

numeric Jednotka: W / kWh

Servisné atribúty

|                     |                                                                                           |
|---------------------|-------------------------------------------------------------------------------------------|
| Dodané teplo \[kWh] | Celková tepelná energia dodaná tepelným čerpadlom — tepelný výkon, nie spotreba elektriny |

Čítanie celkovej spotreby

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

Čítanie odberu

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

Čítanie (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é atribúty

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á úžitková voda Termostat Čítanie aj zápis

Aktuálna a žiadaná teplota teplej vody tepelného čerpadla; žiadaná hodnota sa posiela v celých stupňoch a tepelné čerpadlo uplatní vlastné limity

numeric Jednotka: °C

Čítanie 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));
```

Čítanie (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
```

Čítanie požadovanej 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žadovanej 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
```

**Pripojenie:** Packet Parser → HTTP • Hostname: `ems-esp.local`

Možné vylepšenia (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

## Parametre importu

Tieto hodnoty zadáte pri importe XML.

| Pýta sa v aplikácii                                                              | Predvolené         |
|----------------------------------------------------------------------------------|--------------------|
| EMS-ESP IP address                                                               | Zadáte pri importe |
| EMS-ESP access token (admin user, Settings → Security → Manage Users → key icon) | Zadáte pri importe |

## 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

## Súvisiaca dokumentácia

- [Integrácia Packet Parser](https://taphome.com/sk/compatibility/packet-parser-guide/)
- [Packet Parser (HTTP, TCP, UDP, FTP, MQTT)](https://taphome.com/sk/docs/integration/packet-parser/)
- [Funkcie Packet parsera](https://taphome.com/sk/docs/script/packet-parser/)
- [Parsovacie funkcie](https://taphome.com/sk/docs/script/parsing-functions/)

