TapHome

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

Packet Parser → HTTP
Autor
Posljednje ažuriranje: 10. 2026

Potreban je vanjski pristupnik (gateway)

BBQKees Electronics Gateway E32 V2 (EMS-ESP 3.8.6 firmware) — stranica proizvoda

Ovaj uređaj podržava mDNS

Umjesto IP adrese uređaju možete pristupiti na adresi:

ems-esp.local

Zamijenite {MAC} MAC adresom svog uređaja (velika slova, bez dvotočaka).

TapHome podržava mDNS. Naziv računala (hostname) pouzdaniji je od statične IP adrese.

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

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.

Predložak zajednice — još nije testiran s TapHome. Predložak je izrađen u portalu TapHome i napisan za EMS-ESP 3.8.6; na stvarnoj instalaciji još nije provjeren. Preuzmite ga iz portala TapHome: EMS-ESP Heat Pump — predložak zajednice (preuzmite XML — prijava nije potrebna — i uvezite ga kao novi modul).

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 toplineKabelNapajanje
Servisni priključak EMS (3,5 mm)servisni kabel EMS od 150 cmiz servisnog priključka
Servisni priključak EMS (3,5 mm)servisni kabel EMS od 150 cmvanjsko napajanje
Vijčane stezaljke sabirnice EMSkabel za vijčane stezaljke EMS od 100 cmvanjsko 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 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
ParametarOpis
IpAddressIP adresa pristupnika EMS-ESP
AccessTokenPristupni 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.

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

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.

EMS-ESP Heat Pump

Čitanje (modul)
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

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

Način rada dizalice topline

Čitanje stanja sklopke
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
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

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

Sobni termostat

Čitanje temperature
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)
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
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
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

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

Temperatura hlađenja

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

Aktivnost kompresora

Čitanje stanja sklopke
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

Rad kompresora

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

Vanjska temperatura

Čitanje temperature
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

Temperatura polaza

Čitanje temperature
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

Temperatura povrata

Čitanje temperature
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

Brojilo električne energije

Čitanje ukupne potrošnje
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
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)
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]
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

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

Potrošna topla voda

Čitanje temperature
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)
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
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
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

Izvori

Pronašli ste problem s ovim predloškom uređaja?

Recite nam što ne radi, što nedostaje ili kako bi se predložak trebao ponašati. Vaše povratne informacije pomažu nam da katalog bude točan.

Zajednica · nije provjereno

Želite ovo koristiti u svojoj centralnoj jedinici TapHome Core?

Otvorite ovaj predložak na portalu Customer Portal kako biste ga primijenili na jedan od svojih domova ili predložili poboljšanje i poslali ga natrag u katalog.

Otvorite na portalu