TapHome

EMS-ESP caldaia a gas (Bosch, Buderus, Junkers, Nefit)

Packet Parser → HTTP
Inviato da
Ultimo aggiornamento: 10. 2026

Richiede gateway esterno

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

Questo dispositivo supporta mDNS

Invece di un indirizzo IP, puoi raggiungere il dispositivo a:

ems-esp.local

Sostituisci {MAC} con l'indirizzo MAC del dispositivo (maiuscolo, senza due punti).

TapHome supporta mDNS — usare un hostname è più affidabile di un IP statico.

EMS-ESP caldaia a gas (Bosch, Buderus, Junkers, Nefit)

Il template EMS-ESP Gas Boiler collega TapHome a una caldaia a gas Bosch, Buderus, Junkers o Nefit tramite un gateway EMS-ESP — un BBQKees Electronics Gateway E32 V2 che esegue il firmware open source EMS-ESP e si collega al bus EMS della caldaia. TapHome comunica con il gateway tramite la sua API REST HTTP locale (porta 80, JSON); non serve alcuna connessione al cloud. In EMS-ESP la caldaia compare come tipo di dispositivo boiler e il suo regolatore come tipo di dispositivo thermostat.

Il template legge se la caldaia sta riscaldando o producendo acqua calda, la temperatura di mandata e il suo valore obiettivo, la potenza del bruciatore, l’ultimo codice di errore memorizzato dalla caldaia, la pressione dell’impianto, gli avviamenti del bruciatore, la temperatura esterna e le temperature ambiente e dell’acqua calda. Con un token di accesso imposta anche la modalità del circuito di riscaldamento 1 (Spento, Manuale, Auto), il setpoint ambiente e il setpoint dell’acqua calda.

Template della community — non ancora testato con TapHome. Il template è stato generato nel portale TapHome e scritto per EMS-ESP 3.8.6; non è ancora stato verificato su un’installazione reale. Scaricalo dal portale TapHome: EMS-ESP Gas Boiler — template della community (scarica l’XML — senza accesso — e importalo come nuovo modulo).

Caldaie e regolatori compatibili

Due cose decidono se una caldaia funziona con questo template: EMS-ESP deve supportare la caldaia, e la caldaia e il suo regolatore devono inviare i valori che il template legge.

Caldaie coperte dal template:

  • 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

L’elenco EMS-ESP delle caldaie supportate cita altri modelli, per esempio Logano, Nefit Proline e Smartline, Condens 2300 e 5000i.

Il gateway funziona con le varianti di bus EMS, EMS Plus (EMS+), EMS2 e Heatronic 3. Le caldaie più vecchie con bus iRT, come la Nefit Ecomline o la Buderus GB112, possono usare il gateway solo dopo l’installazione di un Bosch EasyControlAdapter. OpenTherm non è tra i tipi di bus supportati dal gateway.

Quali valori invia una determinata caldaia non è documentato per modello. La pagina Devices dell’interfaccia web di EMS-ESP mostra solo le entità che hanno un valore; un’entità che esiste in EMS-ESP ma non ha valore è supportata dal firmware, non dalla caldaia collegata. Lo stesso elenco è disponibile su http://<gateway-ip>/api/boiler/entities e http://<gateway-ip>/api/thermostat/entities.

La modalità del circuito di riscaldamento dipende dal regolatore, perché ogni famiglia di regolatori ha il proprio elenco di modalità:

RegolatoreModalità in EMS-ESPModalità del circuito di riscaldamento
RC300, RC310, RC100, HMC310, Rego 2000 / 3000manual, autoManuale e Auto; selezionare Spento termina con un errore di scrittura
BC400, UI800, CR120off, manual, autoSpento, Manuale e Auto
RC35, regolatori Junkers e altri modellialtri elenchi (per esempio RC35: night, day, auto; Junkers: nofrost, eco, heat, auto)non supportato — il dispositivo termina con un errore, eliminalo

Le caldaie Junkers e Nefit sono spesso abbinate a regolatori Junkers o Nefit che hanno un altro elenco di modalità. I dispositivi della caldaia nel template non dipendono dal regolatore e continuano a funzionare.

Alcuni regolatori non accettano comandi di scrittura EMS e compaiono in EMS-ESP come dispositivi di sola lettura: Buderus Logamatic TC100, Bosch EasyControl CT200, Junkers CT100, Moduline Easy, Junkers FW / FR prodotti prima del 9/2008 e termostati Tado. Con questi la modalità e il setpoint ambiente non si possono modificare da TapHome.

Collegamento hardware

Il BBQKees Gateway E32 V2 KIT contiene il gateway, un cavo di servizio EMS da 150 cm, un cavo da 100 cm per i morsetti a vite EMS, un adattatore per la porta di servizio EMS, un alimentatore (12 V DC con jack o 5 V USB-C, a seconda del lotto di produzione) e un cavo JST ZH per sensori di temperatura DS18B20 propri. Il gateway si collega alla caldaia in uno di tre modi:

Collegamento sulla caldaiaCavoAlimentazione
Presa di servizio EMS (3,5 mm)cavo di servizio EMS da 150 cmdalla presa di servizio
Presa di servizio EMS (3,5 mm)cavo di servizio EMS da 150 cmalimentatore esterno
Morsetti a vite del bus EMScavo da 100 cm per morsetti a vite EMSalimentatore esterno (12 V DC o 5 V USB-C)

La presa di servizio è un’opzione solo se la caldaia ne ha una. I gateway venduti dall’estate 2025 accettano entrambi i tipi di alimentatore. La BBQKees EMS Gateway Wiki mostra come collegare il gateway a una caldaia specifica.

  • Rete: Ethernet (RJ45) o Wi-Fi. EMS-ESP si collega solo a reti Wi-Fi a 2,4 GHz con WPA2, non a 5 GHz.
  • Firmware: EMS-ESP. Il Gateway E32 V2 (in vendita da gennaio 2024) ha la PSRAM e usa la variante di firmware ESP32-16MB+. Il firmware si aggiorna nell’interfaccia web di EMS-ESP in Settings → Version.

Configurazione

Prima configurazione di EMS-ESP
  1. Al primo avvio EMS-ESP apre un access point Wi-Fi ems-esp (password WPA ems-esp-neo). Un gateway collegato via Ethernet è raggiungibile all’indirizzo IP assegnatogli dal router.
  2. Accedi con l’utente predefinito admin / admin e cambia la password.
  3. In Settings → Network collega il gateway alla rete di casa (Wi-Fi o Ethernet).
  4. Nel router riserva un indirizzo IP fisso per il gateway (prenotazione DHCP) — il template indirizza il gateway tramite il suo indirizzo IP.
Impostazioni di EMS-ESP che contano
  • Temperature in °C — lascia disattivata l’opzione „Convert temperature values to Fahrenheit” in Settings → Application. Il modulo lo controlla ogni 60 s e mostra un errore quando EMS-ESP riporta °F.
  • Language: English — lascia la lingua su English in Settings → Application. Il dispositivo Modalità del circuito di riscaldamento riconosce la modalità dal testo dell’opzione (off, manual, auto), ed EMS-ESP traduce questi testi nella lingua scelta; con un’altra lingua il dispositivo termina con un errore che riporta il testo ricevuto. Le scritture usano i testi inglesi, che EMS-ESP accetta in ogni lingua, e gli altri dispositivi non dipendono dalla lingua.
  • Boolean Format ed Enum Format non contano. Il template legge le chiavi index e bool e il value numerico del dettaglio dell’entità EMS-ESP, che non dipendono da queste impostazioni.
  • Firmware 3.8 — il modulo mostra un avviso quando il gateway riporta una versione al di fuori della serie 3.8. Nella 3.7.0 le entità dell’acqua calda sono passate dal prefisso ww all’oggetto annidato dhw ed EMS-ESP ha ottenuto un elenco di modalità separato per i regolatori di tipo BC400; tra la 3.8.0 e la 3.8.6 le entità usate dal template non sono cambiate.
Token di accesso per le scritture

La lettura non richiede autenticazione. La scrittura — modalità del circuito di riscaldamento, setpoint ambiente e dell’acqua calda — richiede il token di accesso EMS-ESP di un utente con diritti di amministratore:

  1. Apri l’interfaccia web di EMS-ESP → Settings → Security → Manage Users.
  2. Fai clic sull’icona della chiave di un utente con diritti di amministratore e copia il token. Il token non ha data di scadenza.
  3. Incolla il token nel parametro di importazione AccessToken durante l’importazione del template.

Senza token l’integrazione è di sola lettura e ogni scrittura termina con l’errore 401. Non attivare invece „Bypass Access Token authorization on API calls” in EMS-ESP — rende l’API aperta e la documentazione di EMS-ESP lo sconsiglia.

Parametri di importazione
ParametroDescrizione
IpAddressIndirizzo IP del gateway EMS-ESP
AccessTokenToken di accesso EMS-ESP di un utente amministratore — necessario solo per le scritture; lascialo vuoto per un’integrazione di sola lettura

Funzionalità dei dispositivi

Circuito di riscaldamento 1
  • Modalità del circuito di riscaldamento — Spento, Manuale o Auto per il circuito di riscaldamento 1. Il dispositivo legge la posizione nell’elenco delle modalità del regolatore, ne cerca il testo dell’opzione e mostra Spento, Manuale o Auto; scrive il testo inglese dell’opzione. Quali modalità funzionano dipende dal regolatore (vedi la tabella sopra).
  • Termostato ambiente — temperatura ambiente attuale e impostata del circuito di riscaldamento 1 come riportata dal regolatore. L’intervallo del setpoint del dispositivo è 0–30 °C. EMS-ESP mantiene il setpoint ambiente a passi di 0,5 °C; il template invia il valore senza modifiche.
Stato della caldaia
  • Riscaldamento attivo — attivo mentre la caldaia funziona per il riscaldamento degli ambienti.
  • Produzione acqua calda attiva — attivo mentre la caldaia riscalda l’acqua calda sanitaria.
Temperature
  • Temperatura di mandata — temperatura di mandata attuale della caldaia, con una risoluzione di 0,1 °C.
  • Temperatura di mandata obiettivo — la temperatura di mandata a cui punta la caldaia (0–90 °C), impostata dal regolatore. Il dispositivo è volutamente di sola lettura: EMS-ESP potrebbe scrivere questo valore, ma una temperatura di mandata scritta prevarrebbe sul regolatore ambiente.
  • Temperatura esterna — temperatura esterna come riportata dalla caldaia, con una risoluzione di 0,1 °C.
Bruciatore e pressione dell’impianto
  • Potenza del bruciatore — potenza attuale del bruciatore in percentuale. Il dispositivo legge anche l’ultimo codice di errore memorizzato dalla caldaia e lo mostra come messaggio informativo „Last error code (stored by the boiler): …”, per esempio 2E(207) 100.75.2000 65:00 (0 min). È il codice che la caldaia ha memorizzato per ultimo, con data e durata — non necessariamente un guasto attivo; il messaggio resta anche dopo che il guasto è scomparso. Quando il codice di errore non si può leggere, il dispositivo mostra un avviso e la potenza del bruciatore resta disponibile.
  • Avviamenti del bruciatore — numero totale di avviamenti del bruciatore contati dalla caldaia.
  • Pressione dell’impianto — pressione dell’acqua dell’impianto di riscaldamento in bar, con una risoluzione di 0,1 bar.
Acqua calda sanitaria
  • Acqua calda sanitaria — temperatura dell’acqua calda attuale e impostata della caldaia. L’intervallo del setpoint del dispositivo è 10–70 °C, il setpoint viene inviato in gradi interi e la caldaia applica i propri limiti.

Il template scrive il setpoint dell’acqua calda della caldaia (dhw.seltemp), non le impostazioni dell’acqua calda del regolatore (dhw.settemp, dhw.mode). La documentazione di EMS-ESP segnala che le impostazioni della caldaia gestite dal regolatore vengono sovrascritte da esso, quindi un regolatore che gestisce l’acqua calda può sovrascrivere il setpoint impostato in TapHome. Non è ancora stato verificato su un’installazione reale.

Come il template comunica con EMS-ESP

Ogni dispositivo legge i propri valori con una richiesta HTTP GET per entità su /api/<device>/[hc1/|dhw/]<entity> e prende la chiave value, index o bool della risposta. La maggior parte dei dispositivi interroga ogni 30 s; Pressione dell’impianto e Temperatura esterna ogni 60 s e Avviamenti del bruciatore ogni 5 minuti. Il modulo legge /api/system/info ogni 60 s. Le scritture sono richieste HTTP POST con un corpo JSON e il token di accesso nell’intestazione Authorization: Bearer.

EMS-ESP 3.8.3 e versioni successive rispondono 429 Too Many Requests a una GET che arriva meno di 50 ms dopo la chiamata API precedente. Il template quindi attende 60 ms prima di ogni GET e, con 429, ripete la richiesta una volta dopo 200 ms. Un altro client che interroga l’API di EMS-ESP nello stesso momento (per esempio un secondo sistema di domotica) può comunque causare occasionalmente una ripetizione.

Perché REST e non Modbus. EMS-ESP offre anche Modbus TCP, ma gli offset dei suoi registri sono cambiati tra le versioni stabili 3.8.0 e 3.8.6, quindi un template Modbus leggerebbe silenziosamente altri valori dopo un aggiornamento del firmware del gateway. L’API REST indirizza i valori per nome — un’entità rinominata termina con un errore del dispositivo visibile.

Risoluzione dei problemi

Errore del dispositivo „no value from the gateway”

Il messaggio „no value from the gateway — this controller or unit does not report it; delete this device” significa che la caldaia o il regolatore collegati non inviano questa entità. Controlla la pagina Devices di EMS-ESP oppure http://<gateway-ip>/api/boiler/entities e http://<gateway-ip>/api/thermostat/entities, poi elimina il dispositivo dopo l’importazione — gli altri dispositivi continuano a funzionare.

Errore del dispositivo 404

Un 404 con un messaggio come no 'xyz' in thermostat significa che EMS-ESP non conosce l’entità su questo percorso — il regolatore o la caldaia non ce l’hanno, oppure il firmware usa un altro nome. unknown device significa che EMS-ESP non ha rilevato sul bus EMS una caldaia o un regolatore di quel tipo.

La modalità del circuito di riscaldamento riporta un altro testo

L’errore „hc1.mode reports ‘…’” compare quando EMS-ESP riporta un testo di modalità diverso da off, manual o auto. O la lingua di EMS-ESP non è English (impostala in Settings → Application), oppure il regolatore usa un altro elenco di modalità (per esempio RC35 o un regolatore Junkers) — in tal caso elimina il dispositivo Modalità del circuito di riscaldamento.

Selezionare Spento termina con un errore di scrittura

I regolatori della famiglia RC300 (RC300, RC310, RC100, HMC310, Rego 2000 / 3000) non hanno la modalità spento. EMS-ESP rifiuta un valore che non è nell’elenco del regolatore, quindi il dispositivo mostra un errore di scrittura (hc1.mode write: HTTP …). Con questi regolatori usa Manuale o Auto.

La scrittura termina con l’errore 401

Il token di accesso manca o è errato. Copialo di nuovo da Settings → Security → Manage Users → icona della chiave di un utente amministratore e inseriscilo nella variabile AccessToken del modulo. Il token deriva dal nome utente e dalla password del super utente in Settings → Security → Security Settings.

Errore 429

Un altro client interroga l’API di EMS-ESP nello stesso istante. Il template distribuisce già nel tempo le proprie richieste e le ripete una volta; se l’errore si ripete, riduci la frequenza di interrogazione dell’altro client.

Errore o avviso del modulo
  • „EMS-ESP reports °F” — disattiva Fahrenheit in Settings → Application.
  • „Template written for EMS-ESP 3.8.6, gateway reports …” — il gateway esegue un firmware al di fuori della serie 3.8. Aggiorna EMS-ESP in Settings → Version.
Gateway non raggiungibile
  1. Controlla il LED del gateway: 1 lampeggio blu durante l’avvio = bus EMS non ancora collegato (controlla il cavo e l’impostazione EMS Tx Mode), 2 lampeggi rossi = la rete si sta ancora collegando (controlla Settings → Network; il Wi-Fi deve essere a 2,4 GHz WPA2), luce fissa = i dati EMS arrivano.
  2. Apri http://<gateway-ip>/api/system/info in un browser — se risponde, il gateway è raggiungibile.
  3. Se l’indirizzo IP è cambiato, trova il gateway tramite il nome mDNS http://ems-esp.local, poi imposta una prenotazione DHCP nel router.
  4. Usa http:// — l’API di EMS-ESP non supporta HTTPS con certificati autofirmati.

Dispositivi disponibili

Gateway EMS-ESP Modulo
Variabili personalizzate
AccessToken (string)Token di accesso EMS-ESP di un utente con diritti di amministratore, inviato come intestazione Bearer a ogni scrittura (modalità del circuito, setpoint ambiente e acqua calda); la lettura funziona senza, quindi un token vuoto dà un'integrazione di sola lettura
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

Lettura (modulo)
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
Modalità del circuito di riscaldamento Interruttore multivalore

Modalità operativa del circuito di riscaldamento 1 — Spento, Manuale o Auto; i regolatori della famiglia RC300 offrono solo Manuale e Auto, BC400 / UI800 / CR120 anche Spento; richiede la lingua EMS-ESP English

enum json_path
Valori / Stati: Off · Manual · Auto

Modalità del circuito di riscaldamento

Lettura stato interruttore
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
Scrittura stato interruttore
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
Termostato ambiente Termostato

Temperatura ambiente attuale e impostata del circuito di riscaldamento 1 dal regolatore; setpoint 0–30 °C, mantenuto da EMS-ESP a passi di 0,5 °C

numeric Unità: °C

Termostato ambiente

Lettura temperatura
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);
Lettura temperatura desiderata
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);
Scrittura temperatura desiderata
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
Riscaldamento attivo Contatto reed Solo lettura

Attivo mentre la caldaia funziona per il riscaldamento degli ambienti

boolean

Riscaldamento attivo

Lettura
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);
Produzione acqua calda attiva Contatto reed Solo lettura

Attivo mentre la caldaia riscalda l'acqua calda sanitaria

boolean

Produzione acqua calda attiva

Lettura
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 di mandata Sensore di temperatura Solo lettura
numeric Unità: °C

Temperatura di mandata

Lettura temperatura
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 di mandata obiettivo Variabile Solo lettura

Temperatura di mandata a cui punta la caldaia (0–90 °C), impostata dal regolatore; di sola lettura, così TapHome non prevale mai sul regolatore

numeric Unità: °C

Temperatura di mandata obiettivo

Lettura
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);
Potenza del bruciatore Variabile Solo lettura

Potenza attuale del bruciatore in percentuale; mostra anche l'ultimo codice di errore memorizzato dalla caldaia come messaggio informativo — non necessariamente un guasto attivo

numeric Unità: %

Potenza del bruciatore

Lettura
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);
Lettura (modulo)
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
Pressione dell'impianto Variabile Solo lettura

Pressione dell'acqua dell'impianto di riscaldamento in bar

numeric Unità: bar

Pressione dell'impianto

Lettura
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);
Avviamenti del bruciatore Variabile Solo lettura

Numero totale di avviamenti del bruciatore contati dalla caldaia

numeric

Avviamenti del bruciatore

Lettura
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);
Acqua calda sanitaria Termostato

Temperatura dell'acqua calda attuale e impostata della caldaia; il setpoint viene inviato in gradi interi e la caldaia applica i propri limiti

numeric Unità: °C

Acqua calda sanitaria

Lettura temperatura
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);
Lettura temperatura desiderata
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);
Scrittura temperatura desiderata
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 esterna Sensore di temperatura Solo lettura

Temperatura esterna come riportata dalla caldaia

numeric Unità: °C

Temperatura esterna

Lettura temperatura
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);
Connessione: Packet Parser → HTTP • Hostname: ems-esp.local
Possibili miglioramenti (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

Fonti

Hai trovato un problema con questo template?

Dicci cosa non funziona, cosa manca o come dovrebbe comportarsi il template. Il tuo feedback ci aiuta a mantenere il catalogo accurato.

Community — non revisionato

Vuoi usarlo nel tuo TapHome Core?

Apri questo template nel Customer Portal per applicarlo a una delle tue case, o crea una proposta di modifica e inviala al catalogo.

Apri nel portale