TapHome

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

Packet Parser → HTTP
Pridal
Posledná aktualizácia: 10. 2026

Vyžaduje externú bránu

BBQKees Electronics Gateway E32 V2 (EMS-ESP 3.8.6 firmware) — stránka produktu

Toto zariadenie podporuje mDNS

Namiesto IP adresy môžete zariadenie osloviť na:

ems-esp.local

Nahraďte {MAC} MAC adresou zariadenia (veľké písmená, bez dvojbodiek).

TapHome podporuje mDNS — použitie hostname je spoľahlivejšie ako statická IP.

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

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

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

Komunitná šablóna — zatiaľ neotestovaná s TapHome. Šablóna vznikla v portáli TapHome a je napísaná pre EMS-ESP 3.8.6; na reálnej inštalácii zatiaľ overená nebola. Stiahnete ju z portálu TapHome: EMS-ESP Heat Pump — komunitná šablóna (stiahnite XML — prihlásenie netreba — a importujte ho ako nový modul).

Kompatibilné tepelné čerpadlá a riadiace jednotky

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

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

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

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

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

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

Hardvérové pripojenie

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

Pripojenie na tepelnom čerpadleKábelNapájanie
Servisný konektor EMS (3,5 mm)150 cm servisný kábel EMSzo servisného konektora
Servisný konektor EMS (3,5 mm)150 cm servisný kábel EMSexterný napájací zdroj
Skrutkové svorky zbernice EMS100 cm kábel pre skrutkové svorky EMSexterný napájací zdroj (12 V DC alebo 5 V USB-C)

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

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

Konfigurácia

Prvé nastavenie EMS-ESP
  1. Pri prvom štarte EMS-ESP otvorí prístupový bod Wi-Fi ems-esp (heslo WPA ems-esp-neo). Brána pripojená cez Ethernet je dostupná na IP adrese, ktorú jej pridelil router.
  2. Prihláste sa predvoleným používateľom admin / admin a zmeňte heslo.
  3. V Settings → Network pripojte bránu k domácej sieti (Wi-Fi alebo Ethernet).
  4. V routeri bráne vyhraďte pevnú IP adresu (rezervácia DHCP) — šablóna bránu adresuje jej IP adresou.
Nastavenia EMS-ESP, na ktorých záleží
  • Teploty v °C — v Settings → Application nechajte vypnuté „Convert temperature values to Fahrenheit“. Modul to kontroluje každých 60 s a pri °F zobrazí chybu.
  • Boolean Format, Enum Format a Language nehrajú rolu. Šablóna číta kľúče index a bool z detailu entity EMS-ESP, ktoré od týchto nastavení nezávisia, a zapisuje anglické texty volieb, ktoré EMS-ESP prijme v každom jazyku.
  • Firmvér 3.8 — modul zobrazí varovanie, keď brána hlási verziu mimo radu 3.8. Mená entít, ktoré šablóna používa, sa zmenili vo verzii 3.7.0 (ww → vnorené dhw) a 3.7.2 (remoteseltemp → cooltemp); medzi 3.8.0 a 3.8.6 sa nemenili.
Prístupový token pre zápis

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

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

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

Parametre importu
ParameterPopis
IpAddressIP adresa brány EMS-ESP
AccessTokenPrístupový token EMS-ESP používateľa s právami admin — treba ho len na zápis; pre integráciu len na čítanie ho nechajte prázdny

Možnosti zariadení

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

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

Stav tepelného čerpadla
  • Činnosť kompresora — čo kompresor práve robí: Vypnuté, Kúrenie, Chladenie, Teplá voda, Bazén, Ohrev bazéna, Odmrazovanie alebo Porucha kompresora. Je to stav len na čítanie; voľba hodnoty v TapHome nemá žiadny účinok.
  • Chod kompresora — indikátor zapnuté/vypnuté, zapnutý, keď kompresor beží.
Teploty
  • Vonkajšia teplota, Teplota prívodu a Teplota spiatočky tak, ako ich hlási tepelné čerpadlo, s rozlíšením 0,1 °C.
Energia
  • Elektromer — okamžitý odber je aktuálny elektrický príkon kompresora (EMS-ESP hlási W, TapHome zobrazuje kW); celková spotreba je celková spotreba elektrickej energie tepelného čerpadla v kWh. Zdroje neuvádzajú, či táto suma zahŕňa elektrický dohrev, takže odber integrovaný v čase s ňou nemusí sedieť.
  • Dodané teplo [kWh] (servisný atribút elektromera) — celková tepelná energia dodaná tepelným čerpadlom. Je to tepelná energia, nie spotreba elektriny.
Teplá úžitková voda
  • Teplá úžitková voda — aktuálna a žiadaná teplota teplej vody tepelného čerpadla. Rozsah žiadanej teploty zariadenia je 35–70 °C, žiadaná teplota sa posiela v celých stupňoch a tepelné čerpadlo uplatní vlastné limity. Šablóna používa hodnoty teplej vody tepelného čerpadla, nie nastavenia teplej vody riadiacej jednotky (dhw.settemp, dhw.mode).
Ako šablóna komunikuje s EMS-ESP

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

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

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

Riešenie problémov

Chyba zariadenia „no value from the gateway“

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

Chyba zariadenia 404

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

Zápis skončí chybou 401

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

Chyba 429

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

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

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

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

Dostupné zariadenia

EMS-ESP tepelné čerpadlo Modul
Vlastné premenné
AccessToken (string)Prístupový token EMS-ESP používateľa s právami admin, posiela sa v hlavičke Bearer pri každom zápise (prevádzkový režim, žiadané hodnoty); čítanie funguje bez neho, takže prázdny token znamená integráciu len na čítanie
EMS-ESP web interface → Settings → Security → Manage Users → key icon of a user with admin rights; paste the token into the AccessToken import parameter. The token has no expiry date.

EMS-ESP Heat Pump

Čítanie (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
Prevádzkový režim tepelného čerpadla Viacstavový prepínač

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

enum numeric
Hodnoty / Stavy: Off · Auto · Heating · Cooling

Prevádzkový režim tepelného čerpadla

Čítanie stavu prepínača
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/thermostat/hc1/hpoperatingmode");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/thermostat/hc1/hpoperatingmode");
END
IF r.IsSuccess
    VAR idx := PARSEJSON(r.Content, "$.index", true);
    IF ISNULL(idx)
        ADDERROR(0, "hpoperatingmode: no value from the gateway — this controller or unit does not report it; delete this device");
        RETURN(NaN);
    END
    RETURN(TODOUBLE(idx));
ELSE
    ADDERROR(0, "hpoperatingmode: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
    RETURN(NaN);
END
Zápis stavu prepínača
VAR opttext := IF(Mu = 0, "off", IF(Mu = 1, "auto", IF(Mu = 2, "heating", "cooling")));
VAR body := "{\"value\":\"" + opttext + "\"}";
VAR r := SENDHTTPREQUEST("/api/thermostat/hc1/hpoperatingmode", "POST", body, "Content-Type: application/json", "Authorization: Bearer " + AccessToken);
IF r.IsSuccess = false
    IF r.StatusCode = 401
        ADDERROR(0, "hpoperatingmode: access token missing or wrong (EMS-ESP Settings → Security → Manage Users → key icon of an admin user)");
    ELSE
        ADDERROR(0, "hpoperatingmode write: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
    END
END
Izbový termostat Termostat

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

numeric Jednotka: °C

Izbový termostat

Čítanie teploty
IF CurrTempHc1 = ""
    RETURN(NaN);
END
VAR v := PARSEJSON(CurrTempHc1, "$.value", true);
IF ISNULL(v)
    ADDERROR(0, "currtemp: no value from the gateway — this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(TODOUBLE(v));
Čítanie (modul)
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/thermostat/hc1/currtemp");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/thermostat/hc1/currtemp");
END
IF r.IsSuccess
    CurrTempHc1 := r.Content;
ELSE
    CurrTempHc1 := "";
    ADDERROR(0, "currtemp: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
END
SLEEP(60);
r := SENDHTTPREQUEST("/api/thermostat/hc1/seltemp");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/thermostat/hc1/seltemp");
END
IF r.IsSuccess
    SelTempHc1 := r.Content;
ELSE
    SelTempHc1 := "";
    ADDERROR(1, "seltemp: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
END
Čítanie požadovanej teploty
IF SelTempHc1 = ""
    RETURN(NaN);
END
VAR v := PARSEJSON(SelTempHc1, "$.value", true);
IF ISNULL(v)
    ADDERROR(1, "seltemp: no value from the gateway — this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(TODOUBLE(v));
Zápis požadovanej teploty
VAR body := "{\"value\":" + Se + "}";
VAR r := SENDHTTPREQUEST("/api/thermostat/hc1/seltemp", "POST", body, "Content-Type: application/json", "Authorization: Bearer " + AccessToken);
IF r.IsSuccess = false
    IF r.StatusCode = 401
        ADDERROR(0, "seltemp: access token missing or wrong (EMS-ESP Settings → Security → Manage Users → key icon of an admin user)");
    ELSE
        ADDERROR(0, "seltemp write: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
    END
END
Teplota chladenia Premenná

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

numeric Jednotka: °C

Teplota chladenia

Čítanie
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/thermostat/hc1/cooltemp");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/thermostat/hc1/cooltemp");
END
IF r.IsSuccess
    VAR v := PARSEJSON(r.Content, "$.value", true);
    IF ISNULL(v)
        ADDERROR(0, "cooltemp: no value from the gateway — this controller or unit does not report it; delete this device");
        RETURN(NaN);
    END
    RETURN(TODOUBLE(v));
ELSE
    ADDERROR(0, "cooltemp: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
    RETURN(NaN);
END
Zápis
VAR body := "{\"value\":" + Va + "}";
VAR r := SENDHTTPREQUEST("/api/thermostat/hc1/cooltemp", "POST", body, "Content-Type: application/json", "Authorization: Bearer " + AccessToken);
IF r.IsSuccess = false
    IF r.StatusCode = 401
        ADDERROR(0, "cooltemp: access token missing or wrong (EMS-ESP Settings → Security → Manage Users → key icon of an admin user)");
    ELSE
        ADDERROR(0, "cooltemp write: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
    END
END
Činnosť kompresora Viacstavový prepínač Len na čítanie

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

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

Činnosť kompresora

Čítanie stavu prepínača
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/boiler/hpactivity");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/hpactivity");
END
IF r.IsSuccess
    VAR idx := PARSEJSON(r.Content, "$.index", true);
    IF ISNULL(idx)
        ADDERROR(0, "hpactivity: no value from the gateway — this controller or unit does not report it; delete this device");
        RETURN(NaN);
    END
    RETURN(TODOUBLE(idx));
ELSE
    ADDERROR(0, "hpactivity: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
    RETURN(NaN);
END
Chod kompresora Jazýčkový kontakt Len na čítanie
boolean

Chod kompresora

Čítanie
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/boiler/hpcompon");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/hpcompon");
END
IF r.IsSuccess
    VAR b := PARSEJSON(r.Content, "$.bool", true);
    IF ISNULL(b)
        ADDERROR(0, "hpcompon: no value from the gateway — this controller or unit does not report it; delete this device");
        RETURN(NaN);
    END
    RETURN(b);
ELSE
    ADDERROR(0, "hpcompon: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
    RETURN(NaN);
END
Vonkajšia teplota Teplotný senzor Len na čítanie
numeric Jednotka: °C

Vonkajšia teplota

Čítanie teploty
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/boiler/outdoortemp");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/outdoortemp");
END
IF r.IsSuccess
    VAR v := PARSEJSON(r.Content, "$.value", true);
    IF ISNULL(v)
        ADDERROR(0, "outdoortemp: no value from the gateway — this controller or unit does not report it; delete this device");
        RETURN(NaN);
    END
    RETURN(TODOUBLE(v));
ELSE
    ADDERROR(0, "outdoortemp: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
    RETURN(NaN);
END
Teplota prívodu Teplotný senzor Len na čítanie
numeric Jednotka: °C

Teplota prívodu

Čítanie teploty
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/boiler/curflowtemp");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/curflowtemp");
END
IF r.IsSuccess
    VAR v := PARSEJSON(r.Content, "$.value", true);
    IF ISNULL(v)
        ADDERROR(0, "curflowtemp: no value from the gateway — this controller or unit does not report it; delete this device");
        RETURN(NaN);
    END
    RETURN(TODOUBLE(v));
ELSE
    ADDERROR(0, "curflowtemp: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
    RETURN(NaN);
END
Teplota spiatočky Teplotný senzor Len na čítanie
numeric Jednotka: °C

Teplota spiatočky

Čítanie teploty
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/boiler/rettemp");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/rettemp");
END
IF r.IsSuccess
    VAR v := PARSEJSON(r.Content, "$.value", true);
    IF ISNULL(v)
        ADDERROR(0, "rettemp: no value from the gateway — this controller or unit does not report it; delete this device");
        RETURN(NaN);
    END
    RETURN(TODOUBLE(v));
ELSE
    ADDERROR(0, "rettemp: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
    RETURN(NaN);
END
Elektromer Elektromer Len na čítanie

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

numeric Jednotka: W / kWh
Servisné atribúty
Dodané teplo [kWh]Celková tepelná energia dodaná tepelným čerpadlom — tepelný výkon, nie spotreba elektriny

Elektromer

Čítanie celkovej spotreby
IF NrgConsTotal = ""
    RETURN(NaN);
END
VAR v := PARSEJSON(NrgConsTotal, "$.value", true);
IF ISNULL(v)
    ADDERROR(1, "nrgconstotal: no value from the gateway — this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(TODOUBLE(v));
Čítanie odberu
IF HpCurrPower = ""
    RETURN(NaN);
END
VAR v := PARSEJSON(HpCurrPower, "$.value", true);
IF ISNULL(v)
    ADDERROR(0, "hpcurrpower: no value from the gateway — this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(TODOUBLE(v) / 1000);
Čítanie (modul)
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/boiler/hpcurrpower");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/hpcurrpower");
END
IF r.IsSuccess
    HpCurrPower := r.Content;
ELSE
    HpCurrPower := "";
    ADDERROR(0, "hpcurrpower: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
END
SLEEP(60);
r := SENDHTTPREQUEST("/api/boiler/nrgconstotal");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/nrgconstotal");
END
IF r.IsSuccess
    NrgConsTotal := r.Content;
ELSE
    NrgConsTotal := "";
    ADDERROR(1, "nrgconstotal: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
END
SLEEP(60);
r := SENDHTTPREQUEST("/api/boiler/nrgtotal");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/nrgtotal");
END
IF r.IsSuccess
    NrgTotal := r.Content;
    IF ISNULL(PARSEJSON(NrgTotal, "$.value", true))
        ADDERROR(3, "nrgtotal: no value from the gateway — this unit does not report heat delivered; the attribute stays empty");
    END
ELSE
    NrgTotal := "";
    ADDERROR(2, "nrgtotal: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
END
Servisné atribúty
Heat delivered [kWh]
IF NrgTotal = "" RETURN(NaN); END VAR v := PARSEJSON(NrgTotal, "$.value", true); IF ISNULL(v) RETURN(NaN); END RETURN(TODOUBLE(v));
Teplá úžitková voda Termostat

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

numeric Jednotka: °C

Teplá úžitková voda

Čítanie teploty
IF DhwCurTemp = ""
    RETURN(NaN);
END
VAR v := PARSEJSON(DhwCurTemp, "$.value", true);
IF ISNULL(v)
    ADDERROR(0, "dhw/curtemp: no value from the gateway — this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(TODOUBLE(v));
Čítanie (modul)
SLEEP(60);
VAR r := SENDHTTPREQUEST("/api/boiler/dhw/curtemp");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/dhw/curtemp");
END
IF r.IsSuccess
    DhwCurTemp := r.Content;
ELSE
    DhwCurTemp := "";
    ADDERROR(0, "dhw/curtemp: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
END
SLEEP(60);
r := SENDHTTPREQUEST("/api/boiler/dhw/seltemp");
IF r.StatusCode = 429
    SLEEP(200);
    r := SENDHTTPREQUEST("/api/boiler/dhw/seltemp");
END
IF r.IsSuccess
    DhwSelTemp := r.Content;
ELSE
    DhwSelTemp := "";
    ADDERROR(1, "dhw/seltemp: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
END
Čítanie požadovanej teploty
IF DhwSelTemp = ""
    RETURN(NaN);
END
VAR v := PARSEJSON(DhwSelTemp, "$.value", true);
IF ISNULL(v)
    ADDERROR(1, "dhw/seltemp: no value from the gateway — this controller or unit does not report it; delete this device");
    RETURN(NaN);
END
RETURN(TODOUBLE(v));
Zápis požadovanej teploty
VAR body := "{\"value\":" + ROUND(Se) + "}";
VAR r := SENDHTTPREQUEST("/api/boiler/dhw/seltemp", "POST", body, "Content-Type: application/json", "Authorization: Bearer " + AccessToken);
IF r.IsSuccess = false
    IF r.StatusCode = 401
        ADDERROR(0, "dhw/seltemp: access token missing or wrong (EMS-ESP Settings → Security → Manage Users → key icon of an admin user)");
    ELSE
        ADDERROR(0, "dhw/seltemp write: " + r.StatusCode + IF(ISNULL(PARSEJSON(r.Content, "$.message", true)), "", " — " + PARSEJSON(r.Content, "$.message", true)));
    END
END
Pripojenie: Packet Parser → HTTP • Hostname: ems-esp.local
Možné vylepšenia (15)
  • Heat pump operating mode on UI800 (thermostat top level) — UI800 reports hpoperatingmode at the thermostat top level instead of under hc1, so the template's operating mode device (and with it cooling) does not work with UI800
  • Heating circuits 2–8 — Same entities as hc1 under the hc2…hc8 path prefix; the template covers heating circuit 1 only — devices for further circuits would be copies with a different path
  • Heating circuit mode — Enum, writable: manual / auto on RC300, RC100, Rego 3000 and HMC310; off / manual / auto on BC400, UI800 and CR120
  • Heat pump cooling enabled — Boolean, writable — enables cooling on the heating circuit
  • Summer / winter switchover — winter / auto / summer, RC100 and RC300
  • Further heating circuit settings — Comfort / eco / manual setpoints, summer threshold, flow temperature limits, heating curve design temperature, offset, room influence and control mode (RC100 / RC300); the docs mark the command table as incomplete and model-dependent
  • Controller-side domestic hot water settings — DHW mode (off / on / auto), DHW set temperatures, one-time charge and circulation mode on RC100 / RC300 — the template reads and writes the heat pump (boiler) DHW entities instead
  • EMS-ESP firmware version — Already fetched by the module for the version warning; could be exposed as a module service attribute
  • Restart EMS-ESP — GET with access token; candidate for a module service action
  • Refresh all device values — Forces EMS-ESP to re-read all values from the EMS bus; no authentication
  • Temperature sensors on the gateway (DS18B20) — The kit includes a JST ZH cable for own DS18B20 sensors; their readings are available over the same REST API
  • Analog sensors and outputs of the gateway — Readings and setvalue for gateway analog inputs, counters and output pins
  • Custom entities — User-defined entities for EMS telegrams EMS-ESP does not decode yet
  • Entity discovery lists — Not a device — the live list of entities a given installation reports; the way to check which template devices will work before importing
  • Other EMS-ESP interfaces — EMS-ESP also offers Modbus TCP (since 3.7.0) and MQTT / MQTT Discovery; the template uses the REST API by entity name instead of Modbus register offsets

Zdroje

Našli ste problém s touto šablónou zariadenia?

Napíšte nám, čo nefunguje, čo chýba, alebo ako by sa mala šablóna správať. Vaša spätná väzba nám pomáha udržiavať katalóg presný.

Komunita — nepreverené

Chcete to použiť vo svojom TapHome jadre?

Otvorte túto šablónu v Customer Portali a aplikujte ju na svoj domov, alebo navrhnite zmenu a odošlite ju späť do katalógu.

Otvoriť v portáli