TapHome

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

Packet Parser → HTTP
Trimis de
Ultima actualizare: 10. 2026

Necesită gateway extern

BBQKees Electronics Gateway E32 V2 (EMS-ESP 3.8.6 firmware) — pagina produsului

Acest dispozitiv acceptă mDNS

În loc să folosiți o adresă IP, puteți accesa dispozitivul la:

ems-esp.local

Înlocuiți {MAC} cu adresa MAC a dispozitivului dvs. (majuscule, fără două puncte).

TapHome acceptă mDNS — folosirea unui nume de gazdă este mai fiabilă decât un IP static.

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

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

Șablon al comunității — încă netestat cu TapHome. Șablonul a fost generat în portalul TapHome și scris pentru EMS-ESP 3.8.6; nu a fost încă verificat pe o instalație reală. Îl găsiți în portalul TapHome: EMS-ESP Gas Boiler — șablon al comunității (descărcați fișierul XML — fără autentificare — și importați-l ca modul nou).

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

RegulatorModuri în EMS-ESPModul circuitului de încălzire
RC300, RC310, RC100, HMC310, Rego 2000 / 3000manual, autoManual și Auto; selectarea Oprit se termină cu o eroare de scriere
BC400, UI800, CR120off, manual, autoOprit, Manual și Auto
RC35, regulatoare Junkers și alte modelealte 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ăCabluAlimentare
Mufă de service EMS (3,5 mm)cablu de service EMS de 150 cmdin mufa de service
Mufă de service EMS (3,5 mm)cablu de service EMS de 150 cmsursă de alimentare externă
Bornele cu șurub ale magistralei EMScablu de 100 cm pentru bornele cu șurub EMSsursă 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 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
ParametruDescriere
IpAddressAdresa IP a gateway-ului EMS-ESP
AccessTokenTokenul 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. Acest lucru nu a fost încă verificat pe o instalație reală.

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.

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

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.

EMS-ESP Gateway

Citire (modul)
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

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

Modul circuitului de încălzire

Citirea stării comutatorului
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
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

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

Termostat de cameră

Citirea temperaturii
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
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
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

Încălzire activă

Citire
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

Preparare apă caldă activă

Citire
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

Temperatura de tur

Citirea temperaturii
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

Temperatura de tur țintă

Citire
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: %

Puterea arzătorului

Citire
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)
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

Presiunea din instalație

Citire
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

Porniri ale arzătorului

Citire
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

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

numeric Unitate: °C

Apă caldă menajeră

Citirea temperaturii
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
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
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

Temperatura exterioară

Citirea temperaturii
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

Surse

Ați găsit o problemă la acest șablon de dispozitiv?

Spuneți-ne ce nu funcționează, ce lipsește sau cum ar trebui să se comporte șablonul. Feedbackul dvs. ne ajută să păstrăm catalogul corect.

Comunitate — neverificat

Doriți să folosiți acest șablon în TapHome Core?

Deschideți acest șablon în Customer Portal pentru a-l aplica într-una dintre locuințele dvs. sau pentru a propune o îmbunătățire și a o trimite înapoi în catalog.

Deschideți în portal