---
title: "EMS-ESP centrală termică pe gaz (Bosch, Buderus, Junkers, Nefit)"
description: "Centrale pe gaz Bosch, Buderus, Junkers și Nefit în TapHome prin gateway EMS-ESP și API REST HTTP: temperaturi, arzător, presiune, mod și apă caldă."
url: "https://taphome.com/ro/compatibility/ems-esp-gas-boiler-http/"
language: ro
lastmod: 2026-10-18
generator: hugo
ai:
  topics: ["http","boiler","ems-bus","rest-api","gateway","wifi","ethernet","dhw"]
  questions: ["Este centrala mea pe gaz Buderus, Bosch, Junkers sau Nefit compatibilă cu TapHome?","Cum se integrează o centrală termică pe gaz în TapHome prin EMS-ESP?","Ce citește și ce controlează șablonul TapHome pentru centrale pe gaz EMS-ESP?","Cum se conectează gateway-ul BBQKees EMS-ESP la centrală și la TapHome?","De ce modul circuitului de încălzire afișează o eroare cu regulatorul meu?","De ce un dispozitiv EMS-ESP din TapHome afișează „no value from the gateway” sau eroarea 401?"]
---

# EMS-ESP centrală termică pe gaz (Bosch, Buderus, Junkers, Nefit)

Comunicație: Packet Parser → HTTP

- [Site-ul oficial BBQKees Electronics](https://bbqkees-electronics.nl)
- [Pagina produsului BBQKees Gateway E32 V2 KIT](https://bbqkees-electronics.nl/product/gateway-e32-v2-ethernet-wifi-edition-v2-kit/)

> Adresa în rețea
> 
> TapHome comunică cu dispozitivul la adresa introdusă la import. Atribuiți dispozitivului o adresă fixă — o rezervare IP în router sau numele său mDNS, dacă îl acceptă —, altfel integrarea nu mai funcționează când routerul schimbă adresa.
> 
> [Pregătirea rețelei](https://taphome.com/ro/docs/setup/network-preparation/)

## Ghid de integrare

Șablonul EMS-ESP Gas Boiler conectează TapHome la o centrală termică pe gaz Bosch, Buderus, Junkers sau Nefit printr-un gateway EMS-ESP — un BBQKees Electronics Gateway E32 V2 care rulează firmware-ul open source EMS-ESP și se conectează la magistrala EMS a centralei. TapHome comunică cu gateway-ul prin API-ul său REST HTTP local (port 80, JSON); nu este nevoie de conexiune la cloud. În EMS-ESP centrala apare ca tip de dispozitiv `boiler`, iar regulatorul ei ca tip de dispozitiv `thermostat`.

Șablonul citește dacă centrala încălzește sau prepară apă caldă, temperatura de tur și valoarea ei țintă, puterea arzătorului, ultimul cod de eroare memorat de centrală, presiunea din instalație, pornirile arzătorului, temperatura exterioară și temperaturile camerei și apei calde. Cu un token de acces setează și modul circuitului de încălzire 1 (Oprit, Manual, Auto), consemnul camerei și consemnul apei calde.

> [!WARNING]
> **Șablon al comunității.** Șablonul a fost generat în portalul TapHome și scris pentru **EMS-ESP 3.8.6**. Îl găsiți în portalul TapHome: [EMS-ESP Gas Boiler — șablon al comunității](https://portal.taphome.com/portal/community/ems-esp-gas-boiler-http) (descărcați fișierul XML — fără autentificare — și importați-l ca modul nou).

**[EMS-ESP Gas Boiler (Bosch / Buderus / Junkers / Nefit)](https://portal.taphome.com/ro/portal/community/ems-esp-gas-boiler-http)** — EMS-ESP, HTTP. EMS-ESP 3.8.6 REST template for Bosch, Buderus, Junkers and Nefit gas boilers on the EMS bus: heating circuit mode, room and DHW setpoints, burner, pressure, temperatures and last error code.

## Centrale și regulatoare compatibile

Două lucruri decid dacă o centrală funcționează cu acest șablon: EMS-ESP trebuie să suporte centrala, iar centrala și regulatorul ei trebuie să trimită valorile pe care șablonul le citește.

Centrale acoperite de șablon:

- Buderus GB125, GB135, GB162, GBx72, GB192, GB192i.2, Logamax Plus GB022, U122
- Bosch / Junkers Cerapur GC2200W, Cerapur Top, Condens 2500, GC9000
- Nefit Topline, Trendline
- Worcester Greenstar Si, 30Ri Compact, 8000

[Lista EMS-ESP a centralelor suportate](https://docs.emsesp.org/Boilers) menționează și alte modele, de exemplu Logano, Nefit Proline și Smartline, Condens 2300 și 5000i.

Gateway-ul funcționează cu variantele de magistrală EMS, EMS Plus (EMS+), EMS2 și Heatronic 3. Centralele mai vechi cu magistrală iRT, precum Nefit Ecomline sau Buderus GB112, pot folosi gateway-ul doar după instalarea unui Bosch EasyControlAdapter. OpenTherm nu se numără printre tipurile de magistrală suportate de gateway.

Ce valori trimite o anumită centrală nu este documentat pe modele. Pagina Devices din interfața web EMS-ESP afișează doar entitățile care au o valoare; o entitate care există în EMS-ESP, dar nu are valoare, este suportată de firmware, nu de centrala conectată. Aceeași listă este disponibilă la `http://<gateway-ip>/api/boiler/entities` și `http://<gateway-ip>/api/thermostat/entities`.

**Modul circuitului de încălzire** depinde de regulator, deoarece fiecare familie de regulatoare are propria listă de moduri:

| Regulator | Moduri în EMS-ESP | Modul circuitului de încălzire |
|---|---|---|
| RC300, RC310, RC100, HMC310, Rego 2000 / 3000 | manual, auto | Manual și Auto; selectarea Oprit se termină cu o eroare de scriere |
| BC400, UI800, CR120 | off, manual, auto | Oprit, Manual și Auto |
| RC35, regulatoare Junkers și alte modele | alte liste (de exemplu RC35: night, day, auto; Junkers: nofrost, eco, heat, auto) | nesuportat — dispozitivul se termină cu o eroare, ștergeți-l |

Centralele Junkers și Nefit sunt adesea asociate cu regulatoare Junkers sau Nefit care au altă listă de moduri. Dispozitivele centralei din șablon nu depind de regulator și continuă să funcționeze.

Unele regulatoare nu acceptă comenzi de scriere EMS și apar în EMS-ESP ca dispozitive doar pentru citire: Buderus Logamatic TC100, Bosch EasyControl CT200, Junkers CT100, Moduline Easy, Junkers FW / FR fabricate înainte de 9/2008 și termostatele Tado. Cu acestea modul și consemnul camerei nu pot fi schimbate din TapHome.

## Conexiunea hardware

Kitul BBQKees Gateway E32 V2 KIT conține gateway-ul, un cablu de service EMS de 150 cm, un cablu de 100 cm pentru bornele cu șurub EMS, un adaptor pentru portul de service EMS, o sursă de alimentare (12 V DC cu mufă sau 5 V USB-C, în funcție de lotul de producție) și un cablu JST ZH pentru senzori de temperatură DS18B20 proprii. Gateway-ul se conectează la centrală în unul din trei moduri:

| Conexiune pe centrală | Cablu | Alimentare |
|---|---|---|
| Mufă de service EMS (3,5 mm) | cablu de service EMS de 150 cm | din mufa de service |
| Mufă de service EMS (3,5 mm) | cablu de service EMS de 150 cm | sursă de alimentare externă |
| Bornele cu șurub ale magistralei EMS | cablu de 100 cm pentru bornele cu șurub EMS | sursă de alimentare externă (12 V DC sau 5 V USB-C) |

Mufa de service este o opțiune doar dacă centrala are una. Gateway-urile vândute din vara 2025 acceptă ambele tipuri de surse de alimentare. [BBQKees EMS Gateway Wiki](https://bbqkees-electronics.nl/wiki/) arată cum se conectează gateway-ul la o anumită centrală.

- **Rețea:** Ethernet (RJ45) sau Wi-Fi. EMS-ESP se conectează doar la rețele Wi-Fi de 2,4 GHz cu WPA2, nu la 5 GHz.
- **Firmware:** EMS-ESP. Gateway E32 V2 (vândut din ianuarie 2024) are PSRAM și folosește varianta de firmware `ESP32-16MB+`. Firmware-ul se actualizează în interfața web EMS-ESP la Settings → Version.

## Configurare

### Prima configurare a EMS-ESP

1. La prima pornire EMS-ESP deschide un punct de acces Wi-Fi `ems-esp` (parola WPA `ems-esp-neo`). Un gateway conectat prin Ethernet este accesibil la adresa IP pe care i-a atribuit-o routerul.
2. Autentificați-vă cu utilizatorul implicit `admin` / `admin` și schimbați parola.
3. La Settings → Network conectați gateway-ul la rețeaua casei (Wi-Fi sau Ethernet).
4. În router rezervați o adresă IP fixă pentru gateway (rezervare DHCP) — șablonul adresează gateway-ul prin adresa lui IP.

### Setările EMS-ESP care contează

- **Temperaturi în °C** — lăsați dezactivată opțiunea „Convert temperature values to Fahrenheit” la Settings → Application. Modulul verifică acest lucru la fiecare 60 s și afișează o eroare când EMS-ESP raportează °F.
- **Language: English** — lăsați limba pe English la Settings → Application. Dispozitivul Modul circuitului de încălzire recunoaște modul după textul opțiunii (`off`, `manual`, `auto`), iar EMS-ESP traduce aceste texte în limba aleasă; cu altă limbă dispozitivul se termină cu o eroare care numește textul raportat. Scrierile folosesc textele în engleză, pe care EMS-ESP le acceptă în orice limbă, iar celelalte dispozitive nu depind de limbă.
- **Boolean Format și Enum Format** nu contează. Șablonul citește cheile `index` și `bool` și `value` numeric din detaliul entității EMS-ESP, care nu depind de aceste setări.
- **Firmware 3.8** — modulul afișează un avertisment când gateway-ul raportează o versiune din afara seriei 3.8. În 3.7.0 entitățile apei calde au trecut de la prefixul `ww` la obiectul imbricat `dhw`, iar EMS-ESP a primit o listă de moduri separată pentru regulatoarele de tip BC400; între 3.8.0 și 3.8.6 entitățile folosite de șablon nu s-au schimbat.

### Token de acces pentru scriere

Citirea nu necesită autentificare. Scrierea — modul circuitului de încălzire, consemnele pentru cameră și apa caldă — necesită tokenul de acces EMS-ESP al unui utilizator cu drepturi de administrator:

1. Deschideți interfața web EMS-ESP → Settings → Security → Manage Users.
2. Faceți clic pe pictograma cheie a unui utilizator cu drepturi de administrator și copiați tokenul. Tokenul nu are dată de expirare.
3. La importul șablonului, lipiți tokenul în parametrul de import `AccessToken`.

Fără token integrarea este doar pentru citire și fiecare scriere se termină cu eroarea 401. Nu activați în schimb în EMS-ESP opțiunea „Bypass Access Token authorization on API calls” — aceasta face API-ul deschis, iar documentația EMS-ESP nu o recomandă.

### Parametri de import

| Parametru | Descriere |
|---|---|
| `IpAddress` | Adresa IP a gateway-ului EMS-ESP |
| `AccessToken` | Tokenul de acces EMS-ESP al unui utilizator administrator — necesar doar pentru scriere; lăsați-l gol pentru o integrare doar pentru citire |

## Funcțiile dispozitivului

### Circuitul de încălzire 1

- **Modul circuitului de încălzire** — Oprit, Manual sau Auto pentru circuitul de încălzire 1. Dispozitivul citește poziția în lista de moduri a regulatorului, caută textul opțiunii și afișează Oprit, Manual sau Auto; scrie textul în engleză al opțiunii. Ce moduri funcționează depinde de regulator (vedeți tabelul de mai sus).
- **Termostat de cameră** — temperatura actuală și cea selectată a camerei pentru circuitul de încălzire 1, așa cum o raportează regulatorul. Intervalul consemnului dispozitivului este 0–30 °C. EMS-ESP păstrează consemnul camerei în pași de 0,5 °C; șablonul trimite valoarea nemodificată.

### Starea centralei

- **Încălzire activă** — activ cât timp centrala funcționează pentru încălzirea spațiilor.
- **Preparare apă caldă activă** — activ cât timp centrala încălzește apa caldă menajeră.

### Temperaturi

- **Temperatura de tur** — temperatura de tur actuală a centralei, cu o rezoluție de 0,1 °C.
- **Temperatura de tur țintă** — temperatura de tur spre care tinde centrala (0–90 °C), setată de regulator. Dispozitivul este intenționat doar pentru citire: EMS-ESP ar putea scrie această valoare, dar o temperatură de tur scrisă ar avea prioritate față de regulatorul de cameră.
- **Temperatura exterioară** — temperatura exterioară așa cum o raportează centrala, cu o rezoluție de 0,1 °C.

### Arzător și presiunea din instalație

- **Puterea arzătorului** — puterea actuală a arzătorului în procente. Dispozitivul citește și ultimul cod de eroare memorat de centrală și îl afișează ca mesaj informativ „Last error code (stored by the boiler): …”, de exemplu `2E(207) 100.75.2000 65:00 (0 min)`. Este codul pe care centrala l-a memorat ultimul, cu data și durata — nu neapărat un defect activ; mesajul rămâne și după ce defectul a dispărut. Când codul de eroare nu poate fi citit, dispozitivul afișează un avertisment, iar puterea arzătorului rămâne disponibilă.
- **Porniri ale arzătorului** — numărul total de porniri ale arzătorului numărate de centrală.
- **Presiunea din instalație** — presiunea apei din instalația de încălzire în bar, cu o rezoluție de 0,1 bar.

### Apă caldă menajeră

- **Apă caldă menajeră** — temperatura actuală și cea selectată a apei calde a centralei. Intervalul consemnului dispozitivului este 10–70 °C, consemnul se trimite în grade întregi, iar centrala aplică propriile limite.

Șablonul scrie consemnul apei calde al centralei (`dhw.seltemp`), nu setările apei calde ale regulatorului (`dhw.settemp`, `dhw.mode`). Documentația EMS-ESP menționează că setările centralei gestionate de regulator sunt suprascrise de acesta, așa că un regulator care gestionează apa caldă poate suprascrie consemnul setat în TapHome.

### Cum comunică șablonul cu EMS-ESP

Fiecare dispozitiv își citește propriile valori cu o cerere HTTP GET pe entitate la `/api/<device>/[hc1/|dhw/]<entity>` și ia cheia `value`, `index` sau `bool` din răspuns. Majoritatea dispozitivelor interoghează la fiecare 30 s; Presiunea din instalație și Temperatura exterioară la fiecare 60 s, iar Pornirile arzătorului la fiecare 5 minute. Modulul citește `/api/system/info` la fiecare 60 s. Scrierile sunt cereri HTTP POST cu un corp JSON și tokenul de acces în antetul `Authorization: Bearer`.

EMS-ESP 3.8.3 și mai nou răspunde `429 Too Many Requests` la o cerere GET care sosește la mai puțin de 50 ms după apelul API anterior. Prin urmare, șablonul așteaptă 60 ms înainte de fiecare GET și, la 429, repetă cererea o dată după 200 ms. Un alt client care interoghează API-ul EMS-ESP în același timp (de exemplu, un al doilea sistem de automatizare a locuinței) poate totuși provoca ocazional o repetare.

> [!NOTE]
> **De ce REST și nu Modbus.** EMS-ESP oferă și Modbus TCP, dar decalajele registrelor sale s-au schimbat între versiunile stabile 3.8.0 și 3.8.6, așa că un șablon Modbus ar citi pe nesimțite alte valori după o actualizare de firmware a gateway-ului. API-ul REST adresează valorile după nume — o entitate redenumită se termină cu o eroare vizibilă a dispozitivului.

## Depanare

### Eroare de dispozitiv „no value from the gateway”

Mesajul „no value from the gateway — this controller or unit does not report it; delete this device” înseamnă că centrala sau regulatorul conectat nu trimite această entitate. Verificați pagina Devices din EMS-ESP sau `http://<gateway-ip>/api/boiler/entities` și `http://<gateway-ip>/api/thermostat/entities`, apoi ștergeți dispozitivul după import — celelalte dispozitive continuă să funcționeze.

### Eroare de dispozitiv 404

Un `404` cu un mesaj de tipul `no 'xyz' in thermostat` înseamnă că EMS-ESP nu cunoaște entitatea pe această cale — regulatorul sau centrala nu o are, ori firmware-ul folosește alt nume. `unknown device` înseamnă că EMS-ESP nu a detectat pe magistrala EMS o centrală sau un regulator de acel tip.

### Modul circuitului de încălzire raportează alt text

Eroarea „hc1.mode reports '…'” apare când EMS-ESP raportează un text de mod diferit de `off`, `manual` sau `auto`. Fie limba EMS-ESP nu este English (setați-o la Settings → Application), fie regulatorul folosește altă listă de moduri (de exemplu RC35 sau un regulator Junkers) — atunci ștergeți dispozitivul Modul circuitului de încălzire.

### Selectarea Oprit se termină cu o eroare de scriere

Regulatoarele din familia RC300 (RC300, RC310, RC100, HMC310, Rego 2000 / 3000) nu au modul oprit. EMS-ESP refuză o valoare care nu se află în lista regulatorului, așa că dispozitivul afișează o eroare de scriere (`hc1.mode write: HTTP …`). Cu aceste regulatoare folosiți Manual sau Auto.

### Scrierea se termină cu eroarea 401

Tokenul de acces lipsește sau este greșit. Copiați-l din nou din Settings → Security → Manage Users → pictograma cheie a unui utilizator administrator și introduceți-l în variabila `AccessToken` a modulului. Tokenul este derivat din numele de utilizator și parola super utilizatorului din Settings → Security → Security Settings.

### Eroarea 429

Un alt client interoghează API-ul EMS-ESP în același moment. Șablonul își distribuie deja cererile în timp și le repetă o dată; dacă eroarea se repetă, reduceți frecvența de interogare a celuilalt client.

### Eroare sau avertisment al modulului

- „EMS-ESP reports °F” — dezactivați Fahrenheit la Settings → Application.
- „Template written for EMS-ESP 3.8.6, gateway reports …” — gateway-ul rulează un firmware din afara seriei 3.8. Actualizați EMS-ESP la Settings → Version.

### Gateway-ul nu este accesibil

1. Verificați LED-ul gateway-ului: 1 clipire albastră la pornire = magistrala EMS nu este încă conectată (verificați cablul și setarea EMS Tx Mode), 2 clipiri roșii = rețeaua încă se conectează (verificați Settings → Network; Wi-Fi trebuie să fie 2,4 GHz WPA2), lumină continuă = datele EMS sosesc.
2. Deschideți `http://<gateway-ip>/api/system/info` într-un browser — dacă răspunde, gateway-ul este accesibil.
3. Dacă adresa IP s-a schimbat, găsiți gateway-ul prin numele mDNS `http://ems-esp.local`, apoi setați o rezervare DHCP în router.
4. Folosiți `http://` — API-ul EMS-ESP nu suportă HTTPS cu certificate autosemnate.

## Dispozitive disponibile 11

Aceste dispozitive apar în TapHome după import.

Gateway EMS-ESP Modul

Variabile personalizate

`AccessToken` (string) Token de acces EMS-ESP al unui utilizator cu drepturi de administrator, trimis ca antet Bearer la fiecare scriere (modul circuitului de încălzire, consemnele pentru cameră și apa caldă); citirea funcționează fără el, deci un token gol înseamnă o integrare doar pentru citire

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.

Citire (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 = false
    ADDERROR("system/info: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
ELSE
    VAR fahrenheit := PARSEJSON(r.Content, "settings.fahrenheit", true);
    IF fahrenheit
        ADDERROR("EMS-ESP reports \u00b0F \u2014 switch Fahrenheit off in EMS-ESP Settings \u2192 Application");
    END
    VAR version := PARSEJSON(r.Content, "system.version", true);
    IF !ISNULL(version)
        IF INDEXOF(TOSTRING(version), "3.8.") != 0
            ADDWARNING("Template written for EMS-ESP 3.8.6, gateway reports " + version);
        END
    END
END
```

Modul circuitului de încălzire Comutator cu mai multe valori Citire și scriere

Modul de funcționare al circuitului de încălzire 1 — Oprit, Manual sau Auto; regulatoarele din familia RC300 oferă doar Manual și Auto, BC400 / UI800 / CR120 și Oprit; necesită limba EMS-ESP English

enum json\_path

Valori / Stări: Off · Manual · Auto

Citirea stării comutatorului

```taphome
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/thermostat/hc1/mode");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/thermostat/hc1/mode");
END
IF r.IsSuccess = false
    ADDERROR("hc1.mode: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
    RETURN(NaN);
END
VAR enumList := PARSEJSON(r.Content, "enum", true);
VAR idx := PARSEJSON(r.Content, "index", true);
IF ISNULL(enumList) OR ISNULL(idx)
    ADDERROR("hc1.mode: no value from the gateway \u2014 this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
VAR text := PARSEJSON(r.Content, "$.enum[" + TOSTRING(idx) + "]", true);
IF ISNULL(text)
    ADDERROR("hc1.mode: no value from the gateway \u2014 this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
IF text = "off"
    RETURN(0);
ELSEIF text = "manual"
    RETURN(1);
ELSEIF text = "auto"
    RETURN(2);
ELSE
    ADDERROR("hc1.mode reports '" + text + "': this template supports controllers with off / manual / auto and needs EMS-ESP Language = English (Settings \u2192 Application)");
    RETURN(NaN);
END
```

Scrierea stării comutatorului

```taphome
VAR modeName := IF(Mu = 0, "off", IF(Mu = 1, "manual", "auto"));
VAR body := "{\"value\":\"" + modeName + "\"}";
VAR r := SENDHTTPREQUEST("/api/thermostat/hc1/mode", "POST", body, "Content-Type: application/json", "Authorization: Bearer " + AccessToken);
IF r.IsSuccess = false
    IF r.StatusCode = 401
        ADDERROR("hc1.mode write: access token missing or wrong (EMS-ESP Settings \u2192 Security \u2192 Manage Users \u2192 key icon of an admin user)");
    ELSE
        ADDERROR("hc1.mode write: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
    END
END
```

Termostat de cameră Termostat Citire și scriere

Temperatura actuală și cea selectată a camerei pentru circuitul de încălzire 1, de la regulator; consemn 0–30 °C, păstrat de EMS-ESP în pași de 0,5 °C

numeric Unitate: °C

Citirea temperaturii

```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 = false
    ADDERROR("hc1.currtemp: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
    RETURN(NaN);
END
VAR v := PARSEJSON(r.Content, "value", true);
IF ISNULL(v)
    ADDERROR("hc1.currtemp: no value from the gateway \u2014 this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(v);
```

Citirea temperaturii dorite

```taphome
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/thermostat/hc1/seltemp");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/thermostat/hc1/seltemp");
END
IF r.IsSuccess = false
    ADDERROR("hc1.seltemp: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
    RETURN(NaN);
END
VAR v := PARSEJSON(r.Content, "value", true);
IF ISNULL(v)
    ADDERROR("hc1.seltemp: no value from the gateway \u2014 this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(v);
```

Scrierea temperaturii dorite

```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("hc1.seltemp write: access token missing or wrong (EMS-ESP Settings \u2192 Security \u2192 Manage Users \u2192 key icon of an admin user)");
    ELSE
        ADDERROR("hc1.seltemp write: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
    END
END
```

Încălzire activă Contact reed Doar citire

Activ cât timp centrala funcționează pentru încălzirea spațiilor

boolean

Citire

```taphome
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/boiler/heatingactive");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/heatingactive");
END
IF r.IsSuccess = false
    ADDERROR("heatingactive: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
    RETURN(NaN);
END
VAR v := PARSEJSON(r.Content, "bool", true);
IF ISNULL(v)
    ADDERROR("heatingactive: no value from the gateway \u2014 this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(v);
```

Preparare apă caldă activă Contact reed Doar citire

Activ cât timp centrala încălzește apa caldă menajeră

boolean

Citire

```taphome
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/boiler/tapwateractive");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/tapwateractive");
END
IF r.IsSuccess = false
    ADDERROR("tapwateractive: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
    RETURN(NaN);
END
VAR v := PARSEJSON(r.Content, "bool", true);
IF ISNULL(v)
    ADDERROR("tapwateractive: no value from the gateway \u2014 this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(v);
```

Temperatura de tur Senzor de temperatură Doar citire

numeric Unitate: °C

Citirea temperaturii

```taphome
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/boiler/curflowtemp");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/curflowtemp");
END
IF r.IsSuccess = false
    ADDERROR("curflowtemp: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
    RETURN(NaN);
END
VAR v := PARSEJSON(r.Content, "value", true);
IF ISNULL(v)
    ADDERROR("curflowtemp: no value from the gateway \u2014 this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(v);
```

Temperatura de tur țintă Variabilă Doar citire

Temperatura de tur spre care tinde centrala (0–90 °C), setată de regulator; doar pentru citire, astfel încât TapHome nu are niciodată prioritate față de regulator

numeric Unitate: °C

Citire

```taphome
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/boiler/selflowtemp");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/selflowtemp");
END
IF r.IsSuccess = false
    ADDERROR("selflowtemp: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
    RETURN(NaN);
END
VAR v := PARSEJSON(r.Content, "value", true);
IF ISNULL(v)
    ADDERROR("selflowtemp: no value from the gateway \u2014 this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(v);
```

Puterea arzătorului Variabilă Doar citire

Puterea actuală a arzătorului în procente; afișează și ultimul cod de eroare memorat de centrală ca mesaj informativ — nu neapărat un defect activ

numeric Unitate: %

Citire

```taphome
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/boiler/curburnpow");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/curburnpow");
END
IF r.IsSuccess = false
    ADDERROR("curburnpow: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
    RETURN(NaN);
END
VAR v := PARSEJSON(r.Content, "value", true);
IF ISNULL(v)
    ADDERROR("curburnpow: no value from the gateway \u2014 this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(v);
```

Citire (modul)

```taphome
SLEEP(60);
VAR rlc := SENDHTTPREQUEST("/api/boiler/lastcode");
IF rlc.StatusCode = 429
    SLEEP(200);
    rlc := SENDHTTPREQUEST("/api/boiler/lastcode");
END
IF rlc.IsSuccess = false
    ADDWARNING(1, "lastcode: HTTP " + rlc.StatusCode + IF(ISNULL(PARSEJSON(rlc.Content, "message", true)), "", ": " + PARSEJSON(rlc.Content, "message", true)));
ELSE
    VAR lc := PARSEJSON(rlc.Content, "value", true);
    IF !ISNULL(lc)
        ADDINFO(1, "Last error code (stored by the boiler): " + lc);
    END
END
```

Presiunea din instalație Variabilă Doar citire

Presiunea apei din instalația de încălzire în bar

numeric Unitate: bar

Citire

```taphome
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/boiler/syspress");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/syspress");
END
IF r.IsSuccess = false
    ADDERROR("syspress: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
    RETURN(NaN);
END
VAR v := PARSEJSON(r.Content, "value", true);
IF ISNULL(v)
    ADDERROR("syspress: no value from the gateway \u2014 this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(v);
```

Porniri ale arzătorului Variabilă Doar citire

Numărul total de porniri ale arzătorului numărate de centrală

numeric

Citire

```taphome
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/boiler/burnstarts");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/burnstarts");
END
IF r.IsSuccess = false
    ADDERROR("burnstarts: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
    RETURN(NaN);
END
VAR v := PARSEJSON(r.Content, "value", true);
IF ISNULL(v)
    ADDERROR("burnstarts: no value from the gateway \u2014 this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(v);
```

Apă caldă menajeră Termostat Citire și scriere

Temperatura actuală și cea selectată a apei calde a centralei; consemnul se trimite în grade întregi, iar centrala aplică propriile limite

numeric Unitate: °C

Citirea temperaturii

```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 = false
    ADDERROR("dhw.curtemp: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
    RETURN(NaN);
END
VAR v := PARSEJSON(r.Content, "value", true);
IF ISNULL(v)
    ADDERROR("dhw.curtemp: no value from the gateway \u2014 this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(v);
```

Citirea temperaturii dorite

```taphome
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/boiler/dhw/seltemp");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/dhw/seltemp");
END
IF r.IsSuccess = false
    ADDERROR("dhw.seltemp: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
    RETURN(NaN);
END
VAR v := PARSEJSON(r.Content, "value", true);
IF ISNULL(v)
    ADDERROR("dhw.seltemp: no value from the gateway \u2014 this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(v);
```

Scrierea temperaturii dorite

```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("dhw.seltemp write: access token missing or wrong (EMS-ESP Settings \u2192 Security \u2192 Manage Users \u2192 key icon of an admin user)");
    ELSE
        ADDERROR("dhw.seltemp write: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
    END
END
```

Temperatura exterioară Senzor de temperatură Doar citire

Temperatura exterioară așa cum o raportează centrala

numeric Unitate: °C

Citirea temperaturii

```taphome
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/boiler/outdoortemp");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/outdoortemp");
END
IF r.IsSuccess = false
    ADDERROR("outdoortemp: HTTP " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "message", true)), "", ": " + PARSEJSON(r.Content, "message", true)));
    RETURN(NaN);
END
VAR v := PARSEJSON(r.Content, "value", true);
IF ISNULL(v)
    ADDERROR("outdoortemp: no value from the gateway \u2014 this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(v);
```

**Conexiune:** Packet Parser → HTTP • Nume gazdă: `ems-esp.local`

Îmbunătățiri posibile (17)

- Writing the selected flow temperature — Writable in EMS-ESP (0–90 °C), deliberately left out: a written flow temperature overrides the room controller; the template only reads it (Flow Temperature Target)
- Heating circuits 2–8 — Same entities as hc1 under the hc2…hc8 path prefix; the template covers heating circuit 1 only — devices for further circuits would be copies with a different path
- Summer / winter switchover — winter / auto / summer, RC100 and RC300
- Further heating circuit settings — Comfort / eco / manual setpoints, summer and frost thresholds, flow temperature limits, heating curve design temperature, offset, room influence, control mode and time program (RC100 / RC300 and others); the docs mark the command table as incomplete and model-dependent
- Controller-side domestic hot water settings — DHW mode (off / on / auto), DHW set temperatures, one-time charge and circulation mode on RC100 / RC300 — the template reads and writes the boiler DHW entities instead
- Boiler-side hot water functions — Hot water enable, one-time charge, circulation pump and mode, flow temperature offset and maximum power for hot water; some of them are overwritten by the thermostat (docs Boilers)
- Boiler comfort mode, heating enable and heating temperature limit — comfort hot / eco / intelligent; heatingactivated and heatingtemp are not changeable on some systems (for example with an MC10 rotary control)
- Burner and pump parameters — Burner hysteresis, minimum burner period, modulation limits and pump settings — installer parameters, the allowed ranges depend on the boiler type
- Maintenance message and error reset — Set or reset the maintenance message; reset error should be used only with an active error (docs Boilers) — candidates for service actions
- EMS-ESP firmware version — Already fetched by the module for the version warning; could be exposed as a module service attribute
- Restart EMS-ESP — GET with access token; candidate for a module service action
- Refresh all device values — Forces EMS-ESP to re-read all values from the EMS bus; no authentication
- Temperature sensors on the gateway (DS18B20) — The kit includes a JST ZH cable for own DS18B20 sensors; their readings are available over the same REST API
- Analog sensors and outputs of the gateway — Readings and setvalue for gateway analog inputs, counters and output pins
- Custom entities — User-defined entities for EMS telegrams EMS-ESP does not decode yet
- Entity discovery lists — Not a device — the live list of entities a given installation reports; the way to check which template devices will work before importing
- Other EMS-ESP interfaces — EMS-ESP also offers Modbus TCP (since 3.7.0) and MQTT / MQTT Discovery; the template uses the REST API by entity name because Modbus register offsets move between firmware releases

## Parametri de import

Introduceți aceste valori când importați XML-ul.

| Solicitat în aplicație            | Implicit               |
|-----------------------------------|------------------------|
| Gateway IP Address                | Se introduce la import |
| EMS-ESP Access Token (admin user) | Se introduce la import |

## Surse

- 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 Boilers
  
  [docs.emsesp.org](https://docs.emsesp.org/Boilers) 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

## Documentație asociată

- [Packet Parser Integration](https://taphome.com/ro/compatibility/packet-parser-guide/)
- [Packet Parser (HTTP, TCP, UDP, FTP, MQTT)](https://taphome.com/ro/docs/integration/packet-parser/)
- [Funcții Packet parser](https://taphome.com/ro/docs/script/packet-parser/)
- [Funcții de parsare](https://taphome.com/ro/docs/script/parsing-functions/)

