---
title: "EMS-ESP dizalica topline (Bosch, Buderus, IVT)"
description: "Način rada s hlađenjem, sobna temperatura i PTV, temperature i energija dizalica topline Bosch, Buderus i IVT putem REST API-ja EMS-ESP."
url: "https://taphome.com/hr/compatibility/ems-esp-heat-pump-http/"
language: hr
lastmod: 2026-10-18
generator: hugo
ai:
  topics: ["http","heat-pump","ems-bus","rest-api","gateway","wifi","ethernet","cooling","dhw"]
  questions: ["Je li moja dizalica topline Buderus kompatibilna s TapHome?","Kako povezati dizalicu topline Bosch, Buderus ili IVT s TapHome putem EMS-ESP-a?","Što predložak EMS-ESP za dizalicu topline u TapHome očitava i čime upravlja?","Kako spojiti pristupnik BBQKees EMS-ESP na dizalicu topline i na TapHome?","Može li TapHome prebaciti dizalicu topline Buderus na hlađenje putem EMS-ESP-a?","Zašto uređaj EMS-ESP u TapHome javlja „no value from the gateway“ ili pogrešku 401?"]
---

# EMS-ESP dizalica topline (Bosch, Buderus, IVT)

Komunikacija: Packet Parser → HTTP

- [Službena stranica BBQKees Electronics](https://bbqkees-electronics.nl)
- [Stranica proizvoda BBQKees Gateway E32 V2 KIT](https://bbqkees-electronics.nl/product/gateway-e32-v2-ethernet-wifi-edition-v2-kit/)

## Upute za integraciju

Predložak EMS-ESP Heat Pump povezuje TapHome s dizalicom topline Bosch, Buderus ili IVT putem pristupnika EMS-ESP — BBQKees Electronics Gateway E32 V2, koji radi na otvorenom firmveru EMS-ESP i spaja se na sabirnicu EMS dizalice topline. TapHome s pristupnikom komunicira putem njegovog lokalnog HTTP REST API-ja (port 80, JSON); veza s oblakom nije potrebna. U EMS-ESP-u se dizalica topline prikazuje kao vrsta uređaja `boiler`, a njezin regulator kao vrsta uređaja `thermostat`.

Predložak očitava vanjsku temperaturu, temperaturu polaza, povrata, prostorije i potrošne tople vode, stanje kompresora, snagu kompresora i brojila energije. S pristupnim tokenom postavlja i način rada kruga grijanja 1 (uključujući hlađenje), zadanu sobnu temperaturu, temperaturu hlađenja i zadanu temperaturu potrošne tople vode.

> [!WARNING]
> **Predložak zajednice.** Predložak je izrađen u portalu TapHome i napisan za **EMS-ESP 3.8.6**. Preuzmite ga iz portala TapHome: [EMS-ESP Heat Pump — predložak zajednice](https://portal.taphome.com/portal/community/ems-esp-heat-pump-http) (preuzmite XML — prijava nije potrebna — i uvezite ga kao novi modul).

**[EMS-ESP Heat Pump (Bosch/Buderus/IVT)](https://portal.taphome.com/hr/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.

## Kompatibilne dizalice topline i regulatori

O tome radi li dizalica topline s ovim predloškom odlučuju dvije stvari: EMS-ESP mora podržavati dizalicu topline, a dizalica topline i njezin regulator moraju slati vrijednosti koje predložak očitava.

Dizalice topline koje predložak pokriva:

- Bosch Compress 6000AW, Hybrid 3000-7000iAW
- Buderus WLW166i, WLW176i, WLW196i, WSW196i
- CS5800i, CS6800i
- Enviline, SupraEco, Geo 5xx
- IVT AirX i Geo s regulatorom Rego 2000 ili Rego 3000 — prijavili su ih korisnici EMS-ESP-a, nisu na službenom popisu dizalica topline koje EMS-ESP podržava

Pristupnik radi s varijantama sabirnice EMS, EMS Plus (EMS+), EMS2 i Heatronic 3.

Koje vrijednosti pojedina jedinica šalje, nije dokumentirano po modelima. Stranica Devices u web sučelju EMS-ESP-a prikazuje samo entitete s vrijednošću; entitet koji u EMS-ESP-u postoji, ali nema vrijednost, podržava firmver, a ne spojena jedinica. Isti popis nalazi se na `http://<gateway-ip>/api/boiler/entities` i `http://<gateway-ip>/api/thermostat/entities`.

**Hlađenje** zahtijeva regulator koji šalje `hc1.hpoperatingmode`. EMS-ESP registrira taj entitet za seriju RC300 (RC310, HMC310, Rego 2000 / 3000) i seriju BC400; šalje li ga određeni regulator stvarno, nije dokumentirano. **UI800** ga javlja na najvišoj razini termostata (`/api/thermostat/hpoperatingmode`), a ne pod krugom grijanja 1, pa uređaj za način rada — a s njim i hlađenje — s UI800 ne radi.

## Hardversko spajanje

Komplet BBQKees Gateway E32 V2 KIT sadrži pristupnik, servisni kabel EMS od 150 cm, kabel za vijčane stezaljke EMS od 100 cm, adapter za servisni priključak EMS, napajanje (12 V DC s utikačem ili 5 V USB-C, ovisno o proizvodnoj seriji) i kabel JST ZH za vlastite temperaturne senzore DS18B20. Pristupnik se na dizalicu topline spaja na jedan od tri načina:

| Priključak na dizalici topline | Kabel | Napajanje |
|---|---|---|
| Servisni priključak EMS (3,5 mm) | servisni kabel EMS od 150 cm | iz servisnog priključka |
| Servisni priključak EMS (3,5 mm) | servisni kabel EMS od 150 cm | vanjsko napajanje |
| Vijčane stezaljke sabirnice EMS | kabel za vijčane stezaljke EMS od 100 cm | vanjsko napajanje (12 V DC ili 5 V USB-C) |

Servisni priključak može se koristiti samo ako ga dizalica topline ima. Pristupnici koji se prodaju od ljeta 2025. prihvaćaju obje vrste napajanja. [BBQKees EMS Gateway Wiki](https://bbqkees-electronics.nl/wiki/) prikazuje kako spojiti pristupnik na određeni kotao ili dizalicu topline.

- **Mreža:** Ethernet (RJ45) ili Wi-Fi. EMS-ESP se spaja samo na Wi-Fi mreže od 2,4 GHz s WPA2, ne na 5 GHz.
- **Firmver:** EMS-ESP. Gateway E32 V2 (u prodaji od siječnja 2024.) ima PSRAM i koristi varijantu firmvera `ESP32-16MB+`. Firmver se ažurira u web sučelju EMS-ESP-a pod Settings → Version.

## Konfiguracija

### Prvo postavljanje EMS-ESP-a

1. Pri prvom pokretanju EMS-ESP otvara Wi-Fi pristupnu točku `ems-esp` (WPA lozinka `ems-esp-neo`). Pristupnik spojen putem Etherneta dostupan je na IP adresi koju mu je dodijelio usmjerivač.
2. Prijavite se zadanim korisnikom `admin` / `admin` i promijenite lozinku.
3. Pod Settings → Network spojite pristupnik na kućnu mrežu (Wi-Fi ili Ethernet).
4. U usmjerivaču rezervirajte fiksnu IP adresu za pristupnik (DHCP rezervacija) — predložak pristupniku pristupa putem njegove IP adrese.

### Postavke EMS-ESP-a koje su važne

- **Temperature u °C** — pod Settings → Application ostavite isključeno „Convert temperature values to Fahrenheit“. Modul to provjerava svakih 60 s i prikazuje pogrešku kada EMS-ESP javlja °F.
- **Boolean Format, Enum Format i Language** nisu važni. Predložak očitava ključeve `index` i `bool` iz detalja entiteta EMS-ESP-a, koji ne ovise o tim postavkama, i upisuje engleske tekstove opcija, koje EMS-ESP prihvaća na svakom jeziku.
- **Firmver 3.8** — modul prikazuje upozorenje kada pristupnik javlja verziju izvan serije 3.8. Nazivi entiteta koje predložak koristi promijenili su se u verziji 3.7.0 (`ww` → ugniježđeni `dhw`) i 3.7.2 (`remoteseltemp` → `cooltemp`); između 3.8.0 i 3.8.6 nisu se mijenjali.

### Pristupni token za upisivanje

Očitavanje ne zahtijeva autentifikaciju. Upisivanje — način rada, sobna temperatura, temperatura hlađenja i potrošna topla voda — zahtijeva pristupni token EMS-ESP-a korisnika s administratorskim pravima:

1. Otvorite web sučelje EMS-ESP-a → Settings → Security → Manage Users.
2. Kliknite ikonu ključa uz korisnika s administratorskim pravima i kopirajte token. Token nema datum isteka.
3. Pri uvozu predloška zalijepite token u parametar uvoza `AccessToken`.

Bez tokena integracija je samo za očitavanje i svako upisivanje završava pogreškom 401. Umjesto toga u EMS-ESP-u nemojte uključiti „Bypass Access Token authorization on API calls“ — time API postaje otvoren, a dokumentacija EMS-ESP-a to ne preporučuje.

### Parametri uvoza

| Parametar | Opis |
|---|---|
| `IpAddress` | IP adresa pristupnika EMS-ESP |
| `AccessToken` | Pristupni token EMS-ESP-a korisnika s administratorskim pravima — potreban samo za upisivanje; za integraciju samo za očitavanje ostavite ga praznim |

## Mogućnosti uređaja

### Krug grijanja 1

- **Način rada dizalice topline** — Isključeno, Auto, Grijanje ili Hlađenje za krug grijanja 1. U ovom predlošku to je jedini način da se dizalica topline prebaci na hlađenje (pogledajte ograničenja regulatora iznad).
- **Sobni termostat** — trenutačna i zadana sobna temperatura kruga grijanja 1 kako je javlja regulator. Raspon zadane vrijednosti je 0–30 °C u koracima od 0,5 °C.
- **Temperatura hlađenja** — postavka temperature hlađenja kruga grijanja 1, očitavanje i upisivanje od −1 do 30 °C u koracima od 0,5 °C.

Uređaj sobnog termostata ograničen je na 0–30 °C. Temperatura hlađenja šalje se EMS-ESP-u bez promjena, pa je držite u rasponu od −1 do 30 °C.

### Stanje dizalice topline

- **Aktivnost kompresora** — što kompresor upravo radi: Isključeno, Grijanje, Hlađenje, Topla voda, Bazen, Grijanje bazena, Odmrzavanje ili Alarm kompresora. To je stanje samo za očitavanje; odabir vrijednosti u TapHome nema učinka.
- **Rad kompresora** — pokazatelj uključeno/isključeno, uključen dok kompresor radi.

### Temperature

- **Vanjska temperatura**, **Temperatura polaza** i **Temperatura povrata** kako ih javlja dizalica topline, s razlučivošću od 0,1 °C.

### Energija

- **Brojilo električne energije** — snaga je trenutačna električna snaga kompresora (EMS-ESP javlja W, TapHome prikazuje kW); ukupna potrošnja je ukupna potrošnja električne energije dizalice topline u kWh. Izvori ne navode uključuje li taj zbroj električni dogrijač, pa snaga integrirana kroz vrijeme ne mora odgovarati tom zbroju.
- **Isporučena toplina [kWh]** (servisni atribut brojila) — ukupna toplinska energija koju je isporučila dizalica topline. To je toplinska energija, a ne potrošnja električne energije.

### Potrošna topla voda

- **Potrošna topla voda** — trenutačna i zadana temperatura potrošne tople vode dizalice topline. Raspon zadane vrijednosti uređaja je 35–70 °C, zadana vrijednost šalje se u cijelim stupnjevima, a dizalica topline primjenjuje vlastita ograničenja. Predložak koristi vrijednosti tople vode dizalice topline, a ne postavke tople vode regulatora (`dhw.settemp`, `dhw.mode`).

### Kako predložak komunicira s EMS-ESP-om

Svaki uređaj očitava vlastite vrijednosti jednim zahtjevom HTTP GET po entitetu na `/api/<device>/[hc1/|dhw/]<entity>` i uzima ključ `value`, `index` ili `bool` iz odgovora. Uređaji šalju upit svakih 30 s (vanjska temperatura i brojilo svakih 60 s); modul očitava `/api/system/info` svakih 60 s. Upisivanja su zahtjevi HTTP POST s JSON tijelom i pristupnim tokenom u zaglavlju `Authorization: Bearer`.

EMS-ESP 3.8.3 i noviji odgovara `429 Too Many Requests` na GET koji stigne manje od 50 ms nakon prethodnog poziva API-ja. Predložak zato prije svakog GET-a čeka 60 ms i pri 429 jednom ponavlja zahtjev nakon 200 ms. Drugi klijent koji u isto vrijeme šalje upite API-ju EMS-ESP-a (na primjer drugi sustav kućne automatizacije) i dalje povremeno može izazvati ponavljanje.

> [!NOTE]
> **Zašto REST, a ne Modbus.** EMS-ESP nudi i Modbus TCP (od verzije 3.7.0, samo na pločama s PSRAM-om) i MQTT. Pomaci Modbus registara EMS-ESP-a promijenili su se između stabilnih verzija 3.8.0 i 3.8.6, pa bi Modbus predložak nakon ažuriranja firmvera pristupnika neprimjetno očitavao druge vrijednosti. REST API vrijednostima pristupa po nazivu — preimenovani entitet završava vidljivom pogreškom uređaja.

## Rješavanje problema

### Pogreška uređaja „no value from the gateway“

Poruka „no value from the gateway — this controller or unit does not report it; delete this device“ znači da spojena dizalica topline ili regulator ne šalje taj entitet. Provjerite stranicu Devices u EMS-ESP-u ili `http://<gateway-ip>/api/boiler/entities` i `http://<gateway-ip>/api/thermostat/entities`, a zatim izbrišite uređaj nakon uvoza — ostali uređaji rade i dalje.

### Pogreška uređaja 404

`404` s porukom poput `no 'xyz' in thermostat` znači da EMS-ESP ne poznaje entitet na toj putanji — regulator ga nema (na primjer `hc1.hpoperatingmode` na UI800) ili firmver koristi drugi naziv. `unknown device` znači da EMS-ESP na sabirnici EMS nije pronašao dizalicu topline ni regulator te vrste.

### Upisivanje završava pogreškom 401

Pristupni token nedostaje ili je pogrešan. Ponovno ga kopirajte pod Settings → Security → Manage Users → ikona ključa uz korisnika s administratorskim pravima i unesite ga u varijablu `AccessToken` modula. Token se izvodi iz korisničkog imena i lozinke super korisnika pod Settings → Security → Security Settings.

### Pogreška 429

Drugi klijent u istom trenutku šalje upite API-ju EMS-ESP-a. Predložak svoje zahtjeve već raspoređuje u vremenu i jednom ih ponavlja; ako se pogreška ponavlja, smanjite učestalost upita drugog klijenta.

### Pogreška ili upozorenje modula

- „EMS-ESP reports °F“ — isključite Fahrenheit pod Settings → Application.
- „Template written for EMS-ESP 3.8.6, gateway reports …“ — pristupnik radi na firmveru izvan serije 3.8. Ažurirajte EMS-ESP pod Settings → Version.

### Pogreška brojila o nrgtotal

Jedinica bez mjerenja topline ne šalje `nrgtotal`. Brojilo tada prikazuje pogrešku, a atribut Isporučena toplina ostaje prazan; snaga i ukupna potrošnja rade i dalje.

### Pristupnik nije dostupan

1. Provjerite LED pristupnika: 1 plavo treptanje tijekom pokretanja = sabirnica EMS još nije spojena (provjerite kabel i postavku EMS Tx Mode), 2 crvena treptanja = mreža se još spaja (provjerite Settings → Network; Wi-Fi mora biti 2,4 GHz WPA2), stalno svjetlo = podaci s EMS-a pristižu.
2. Otvorite `http://<gateway-ip>/api/system/info` u pregledniku — ako odgovori, pristupnik je dostupan.
3. Ako se IP adresa promijenila, pronađite pristupnik putem mDNS naziva `http://ems-esp.local`, a zatim u usmjerivaču postavite DHCP rezervaciju.
4. Koristite `http://` — API EMS-ESP-a ne podržava HTTPS sa samopotpisanim certifikatima.

## Dostupni uređaji 10

Ovi se uređaji pojavljuju u TapHomeu nakon uvoza.

EMS-ESP dizalica topline Modul

Prilagođene varijable

`AccessToken` (string) Pristupni token EMS-ESP-a korisnika s administratorskim pravima, šalje se kao zaglavlje Bearer pri svakom upisivanju (način rada, zadane vrijednosti); očitavanje radi i bez njega, pa prazan token znači integraciju samo za očitavanje

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.

Čitanje (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
```

Način rada dizalice topline Prekidač s više vrijednosti Čitanje i pisanje

Način rada kruga grijanja 1 — Isključeno, Auto, Grijanje ili Hlađenje; jedini način da se dizalica topline prebaci na hlađenje, dostupan samo s regulatorima koji ga šalju (ne UI800)

enum numeric

Vrijednosti / stanja: Off · Auto · Heating · Cooling

Čitanje stanja sklopke

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

Zapis stanja sklopke

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

Sobni termostat Termostat Čitanje i pisanje

Trenutačna i zadana sobna temperatura kruga grijanja 1 iz regulatora dizalice topline; zadana vrijednost 0–30 °C u koracima od 0,5 °C

numeric Jedinica: °C

Čitanje temperature

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

Čitanje (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
```

Čitanje željene temperature

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

Zapis željene temperature

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

Temperatura hlađenja Varijabla Čitanje i pisanje

Postavka temperature hlađenja kruga grijanja 1, podesiva od −1 do 30 °C u koracima od 0,5 °C; dostupna samo s regulatorima koji je šalju

numeric Jedinica: °C

Čitanje

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

Zapis

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

Aktivnost kompresora Prekidač s više vrijednosti Samo za čitanje

Stanje samo za očitavanje, što kompresor radi — Isključeno, Grijanje, Hlađenje, Topla voda, Bazen, Grijanje bazena, Odmrzavanje ili Alarm kompresora

enum numeric

Vrijednosti / stanja: Off · Heating · Cooling · Hot Water · Pool · Pool Heating · Defrost · Compressor Alarm

Čitanje stanja sklopke

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

Rad kompresora Magnetski kontakt Samo za čitanje

boolean

Čitanje

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

Vanjska temperatura Senzor temperature Samo za čitanje

numeric Jedinica: °C

Čitanje temperature

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

Temperatura polaza Senzor temperature Samo za čitanje

numeric Jedinica: °C

Čitanje temperature

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

Temperatura povrata Senzor temperature Samo za čitanje

numeric Jedinica: °C

Čitanje temperature

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

Brojilo električne energije Brojilo električne energije Samo za čitanje

Trenutačna električna snaga kompresora (kW) i ukupna potrošnja električne energije dizalice topline (kWh)

numeric Jedinica: W / kWh

Servisni atributi

|                           |                                                                                                                      |
|---------------------------|----------------------------------------------------------------------------------------------------------------------|
| Isporučena toplina \[kWh] | Ukupna toplinska energija koju je isporučila dizalica topline — toplinski učinak, a ne potrošnja električne energije |

Čitanje ukupne potrošnje

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

Čitanje zahtjeva

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

Čitanje (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
```

Servisni atributi

Heat delivered \[kWh]

```taphome
IF NrgTotal = "" RETURN(NaN); END VAR v := PARSEJSON(NrgTotal, "$.value", true); IF ISNULL(v) RETURN(NaN); END RETURN(TODOUBLE(v));
```

Potrošna topla voda Termostat Čitanje i pisanje

Trenutačna i zadana temperatura tople vode dizalice topline; zadana vrijednost šalje se u cijelim stupnjevima, a dizalica topline primjenjuje vlastita ograničenja

numeric Jedinica: °C

Čitanje temperature

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

Čitanje (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
```

Čitanje željene temperature

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

Zapis željene temperature

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

**Povezivanje:** Packet Parser → HTTP • Naziv računala (hostname): `ems-esp.local`

Moguća poboljšanja (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

## Parametri uvoza

Ove vrijednosti unosite pri uvozu XML-a.

| Pitanje u aplikaciji                                                             | Zadano             |
|----------------------------------------------------------------------------------|--------------------|
| EMS-ESP IP address                                                               | Unosi se pri uvozu |
| EMS-ESP access token (admin user, Settings → Security → Manage Users → key icon) | Unosi se pri uvozu |

## Izvori

- 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

## Povezana dokumentacija

- [Packet Parser Integration](https://taphome.com/hr/compatibility/packet-parser-guide/)
- [Packet Parser (HTTP, TCP, UDP, FTP, MQTT)](https://taphome.com/hr/docs/integration/packet-parser/)
- [Funkcije Packet parsera](https://taphome.com/hr/docs/script/packet-parser/)
- [Funkcije za raščlambu](https://taphome.com/hr/docs/script/parsing-functions/)

