TapHome

go-e Gemini flex Wallbox

Packet Parser → HTTP
Inviato da
Ultimo aggiornamento: 03. 2026
go-e Gemini flex Wallbox

La go-e Gemini flex è una wallbox EV di produzione austriaca disponibile nelle varianti da 11 kW (16 A) e 22 kW (32 A), con il più recente modello Gemini flex 2.0 dotato di modulo 4G LTE integrato. TapHome comunica con il caricatore tramite l’API HTTP v2 locale su Wi-Fi — non è richiesta alcuna connessione cloud. L’API deve essere esplicitamente abilitata nell’app go-e prima che TapHome possa connettersi.

Il template fornisce il monitoraggio dello stato del caricatore, il controllo della corrente e della modalità di carica, la commutazione delle fasi, le letture di tensione e corrente per fase e ingressi in sola scrittura per dati esterni di potenza FV e rete per abilitare la ricarica con surplus.

Configurazione

Abilitazione dell’API HTTP

L’API HTTP v2 locale è disabilitata per impostazione predefinita. Per abilitarla:

  1. Connettersi al go-e Charger tramite l’app go-e (disponibile per iOS e Android)
  2. Navigare su Impostazioni > Connessione > Impostazioni API
  3. Abilitare “Consenti accesso all’API HTTP locale vX”

Una volta abilitata, il caricatore risponde alle richieste HTTP sulla porta 80. Non è richiesta l’autenticazione — l’accesso è controllato esclusivamente da questo interruttore.

Configurazione di rete

La go-e Gemini flex si connette tramite Wi-Fi (802.11b/g/n, solo 2,4 GHz). Non è presente una porta Ethernet. Durante l’importazione del template TapHome, inserire l’indirizzo IP del caricatore.

Il go-e Charger non supporta mDNS. Per prevenire problemi di connettività dopo un rinnovo DHCP, configurare un indirizzo IP statico o una prenotazione DHCP sul router per l’indirizzo MAC del caricatore.

Il caricatore può operare in modalità hotspot (connessione diretta) o unirsi a una rete Wi-Fi esistente. Per l’integrazione con TapHome, il caricatore deve trovarsi sulla stessa rete della CCU TapHome.

Funzionalità del dispositivo

Stato del caricatore

Il dispositivo Stato del caricatore riporta lo stato attuale di connessione e carica come indicatore multi-valore in sola lettura. La chiave API car restituisce uno dei cinque stati: Guasto (0), Disponibile (1), In carica (2), Preparazione (3) o Completato (4). Questo consente alle automazioni TapHome di attivarsi in base al fatto che un veicolo sia connesso, in carica attiva o abbia completato una sessione.

Controllo della corrente e della modalità di carica

Due dispositivi controllabili gestiscono il funzionamento del caricatore:

  • Corrente di carica — seleziona la corrente di carica richiesta tra sei valori discreti: 6, 8, 10, 12, 14 e 16 A. Il template mappa questi valori alle posizioni dell’interruttore 0–5 utilizzando la formula amp/2 - 3 per la lettura e (position + 3) × 2 per la scrittura. I valori vengono inviati al caricatore tramite api/set?amp={value}.

  • Modalità di carica — seleziona la logica di carica: Base (carica continua predefinita), Eco (ottimizzata sul prezzo tramite tariffa Awattar) o Viaggio giornaliero (arresto automatico al raggiungimento dell’obiettivo). L’API utilizza i valori 3, 4 e 5; il template li mappa alle posizioni 0, 1 e 2.

Il selettore della corrente di carica mappa solo sei valori (6–16 A con incrementi di 2 A). La variante da 22 kW della Gemini flex supporta fino a 32 A, ma i valori superiori a 16 A non sono coperti da questo template. Per utilizzare correnti più elevate, la chiave API amp può essere impostata direttamente al di fuori del template.

Commutazione delle fasi

Il dispositivo Commutazione delle fasi controlla quante fasi utilizza il caricatore: Automatico (0), Monofase (1) o Trifase (2). Il go-e Charger supporta la commutazione delle fasi anche durante una sessione di carica attiva. In modalità automatica, il caricatore seleziona la configurazione ottimale delle fasi in base alla potenza disponibile.

Monitoraggio energetico

Il template legge tensione e corrente per fase dall’array energetico nrg del caricatore, che contiene 16 valori aggiornati ad ogni ciclo di polling:

DispositivoSorgenteUnità
L1 Tensionenrg[0]V
L2 Tensionenrg[1]V
L3 Tensionenrg[2]V
L1 Correntenrg[5]A
L2 Correntenrg[6]A
L3 Correntenrg[7]A
Consumo attualenrg[12]W

Il dispositivo Consumo attuale riporta la potenza di carica attiva totale in watt. Tutti i valori energetici sono in sola lettura.

Ingressi per la ricarica con surplus FV

Due dispositivi in sola scrittura consentono a TapHome di inviare dati energetici esterni al caricatore per i calcoli della ricarica con surplus:

  • Potenza verso rete — invia la potenza attuale di esportazione/importazione dalla rete (in kW, convertita in W moltiplicando per 1000) tramite api/set?ids={"pGrid":value}
  • Potenza FV — invia la produzione fotovoltaica attuale (in kW, convertita in W moltiplicando per 1000) tramite api/set?ids={"pPv":value}

Questi dispositivi non leggono dati dal caricatore. Il go-e Charger stesso non misura la potenza di rete o FV — si affida a fonti esterne per fornire queste informazioni. In una configurazione TapHome tipica, i valori da un contatore di energia separato o da un inverter solare (anch’esso integrato in TapHome) vengono inoltrati al caricatore tramite questi dispositivi in sola scrittura, abilitando la modalità di carica Eco per ottimizzare l’autoconsumo.

Per utilizzare la ricarica con surplus FV, impostare la Modalità di carica su Eco, quindi utilizzare le automazioni TapHome per scrivere periodicamente i valori attuali di potenza di rete e produzione FV nei dispositivi Potenza verso rete e Potenza FV. Il caricatore regolerà automaticamente la corrente di carica in base al surplus disponibile.

Funzionalità aggiuntive

L’API go-e Charger v2 espone dati aggiuntivi attualmente non mappati nel template: potenza per fase (W) e fattore di potenza, tensione del neutro, energia totale consumata (eto in Wh), energia per sessione (wh), codici di stato errore, limite di corrente del cavo, sensori di temperatura, frequenza di rete, controllo dello stato di carica forzata, impostazioni del limite di energia e configurazione della corrente minima/massima. Questi possono essere aggiunti in un futuro aggiornamento del template.

Risoluzione dei problemi

Il dispositivo non risponde
  1. Verificare che il caricatore sia connesso al Wi-Fi e abbia un indirizzo IP valido — controllare nell’app go-e in Impostazioni > Connessione
  2. Confermare che l’API HTTP sia abilitata (Impostazioni > Connessione > Impostazioni API)
  3. Aprire http://{charger-ip}/api/status in un browser — se risponde con JSON, l’API è raggiungibile
  4. Verificare che la CCU TapHome e il caricatore siano sulla stessa rete / VLAN
La corrente di carica non cambia
  1. Il template mappa solo sei valori (6, 8, 10, 12, 14, 16 A). Se il caricatore mostra un valore diverso (es. 20 A impostato tramite l’app), TapHome visualizzerà la posizione mappata più vicina
  2. Verificare che il firmware del caricatore sia versione 051.4 o successiva — il firmware precedente utilizza una sintassi di filtro diversa che può causare problemi di parsing
La ricarica con surplus FV non funziona
  1. Confermare che la Modalità di carica sia impostata su Eco — la logica del surplus si attiva solo in questa modalità
  2. Verificare che i valori di Potenza verso rete e Potenza FV vengano scritti regolarmente (almeno ogni 30 secondi)
  3. Controllare che i valori siano in kW (il template converte automaticamente in W)
  4. Aprire http://{charger-ip}/api/status?filter=pgrid,ppv per verificare che il caricatore stia ricevendo i valori

La chiave API eto (energia totale) è inclusa nel filtro di stato ma non è esposta come dispositivo nel template. Il valore dell’energia totale viene recuperato ma non utilizzato.

Dispositivi disponibili

go-e Wallbox Modulo
Variabili personalizzate

Go-e

Lettura (modulo)
responseJson := "error";



VAR response := SENDHTTPREQUEST("api/status?filter=car,nrg,psm,amp,eto,lmo");

IF response.IsSuccess
    responseJson := response.Content;
ELSE
    VAR contentJson := response.Content;
    VAR errCode := response.StatusCode;
    VAR message := PARSEJSON(contentJson, "message");
    #ADDERROR("Failed to read data - (" + errCode + ") " + message);
END
Stato del caricatore Interruttore multivalore Solo lettura

Stato connessione veicolo e carica — Guasto, Disponibile, In carica, Preparazione, Completato

uint8
Valori / Stati: Failure · Available · Charging · Preparing · Finished

Stato del caricatore

Lettura stato interruttore
RETURN(PARSEjson(responseJson, "car"));
Scrittura stato interruttore
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/set/value=" + Mu);
# IF response.IsSuccess = false
#  ADDERROR(response.StatusCode);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/setValue", "GET", "value=" + Mu, "header1:value1", "header2:value2", ...);\r
# Or VAR request := HTTPREQUEST("/example/setValue");
# request.Method := "PUT";
# VAR response := SENDHTTPREQUEST(request);
#r
#
# Send TCP, UDP data:
# VAR data1 := "{\"name\":\"John\", \"age\":" + Mu + "}";
# SENDDATA(data1);
# VAR data2 := TOBYTES("{\"name\":\"John\", \"age\":" + Mu + "}", "iso-8859-1");
# SENDDATA(data2);
# You can process received TCP or UDP data in the Listener script
#
#
# Upload data to FTP:
# FTPUPLOAD("filePath", "somedata=" + Mu, "write"); # use "append" mode to append data to existing file
Corrente di carica Interruttore multivalore

Selettore corrente di carica richiesta — 6, 8, 10, 12, 14, 16 A a passi discreti

uint8 Unità: A numeric
Valori / Stati: 6-Amp · 8-Amp · 10-Amp · 12-Amp · 14-Amp · 16-Amp

Corrente di carica

Lettura stato interruttore
VAR ampers := PARSEjson(responseJson, "amp");
RETURN(ampers/2-3);
Scrittura stato interruttore
VAR amps:= (Mu +3)*2;
VAR response := SENDHTTPREQUEST("api/set?amp=" + amps);
IF response.IsSuccess = false
ADDERROR(response.StatusCode);
END
Modalità di carica Interruttore multivalore

Selettore logica di carica — Base (continua), Eco (prezzo ottimizzato / surplus FV), Viaggio giornaliero (arresto automatico all'obiettivo)

uint8 numeric
Valori / Stati: Basic · Eco · Daily trip

Modalità di carica

Lettura stato interruttore
RETURN(PARSEjson(responseJson, "lmo")-3);
Scrittura stato interruttore
VAR response := SENDHTTPREQUEST("api/set?lmo=" + (Mu+3));
IF response.IsSuccess = false
ADDERROR(response.StatusCode);
END
Consumo attuale Variabile Solo lettura

Potenza di carica attiva totale su tutte le fasi (W)

numeric Unità: W json_path

Consumo attuale

Lettura
VAR a := PARSETEXT (PARSEjson(responseJson, "nrg"), "[", "]");
VAR b := SPLIT(a,",");
RETURN(TODOUBLE(GETAT(b,12)))
Scrittura
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/set/value=" + Va);
# IF response.IsSuccess = false
#  ADDERROR(response.StatusCode);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/setValue", "GET", "value=" + Va, "header1:value1", "header2:value2", ...);\r
# Or VAR request := HTTPREQUEST("/example/setValue");
# request.Method := "PUT";
# VAR response := SENDHTTPREQUEST(request);
#r
#
# Send TCP, UDP data:
# VAR data1 := "{\"name\":\"John\", \"age\":" + Va + "}";
# SENDDATA(data1);
# VAR data2 := TOBYTES("{\"name\":\"John\", \"age\":" + Va + "}", "iso-8859-1");
# SENDDATA(data2);
# You can process received TCP or UDP data in the Listener script
#
#
# Upload data to FTP:
# FTPUPLOAD("filePath", "somedata=" + Va, "write"); # use "append" mode to append data to existing file
Lettura (modulo)
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/getValue");
# IF response.IsSuccess
#  VAR content := response.Content;
#  VAR responseHeaders := response.Headers;
#  RETURN(PARSEXML(content, "//element1/value1"));
# ELSE
#  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
#  RETURN(NaN);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/getValue", "GET", "some data", "header1:value1", "header2:value2", ...);
# OR
# VAR request := HTTPREQUEST("/example/getValue", "POST", "some data");
# request.headers := { "header1:value1", "header2:value2", ...};
# request.method := "GET";
# request.data := null;
# VAR response := SENDHTTPREQUEST(request);
#
#
# Send TCP, UDP data:
# VAR data1 := BYTECOLLECTION("0a bb ea df 01");
# SENDDATA(data1);
# VAR data2 := "{\"name\":\"John\", \"age\":32}";
# SENDDATA(data2);
# VAR data3 := TOBYTES("{\"name\":\"John\", \"age\":32}", "iso-8859-1");
# SENDDATA(data3);
# Process received TCP or UDP data and set device values in the Listener script
#
#
# Download data from FTP:
# FTPDOWNLOAD("filePath");
L1 Corrente Variabile Solo lettura
numeric Unità: A json_path

L1 Corrente

Lettura
VAR a := PARSETEXT (PARSEjson(responseJson, "nrg"), "[", "]");
VAR b := SPLIT(a,",");
RETURN(TODOUBLE(GETAT(b,5)))
Scrittura
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/set/value=" + Va);
# IF response.IsSuccess = false
#  ADDERROR(response.StatusCode);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/setValue", "GET", "value=" + Va, "header1:value1", "header2:value2", ...);\r
# Or VAR request := HTTPREQUEST("/example/setValue");
# request.Method := "PUT";
# VAR response := SENDHTTPREQUEST(request);
#r
#
# Send TCP, UDP data:
# VAR data1 := "{\"name\":\"John\", \"age\":" + Va + "}";
# SENDDATA(data1);
# VAR data2 := TOBYTES("{\"name\":\"John\", \"age\":" + Va + "}", "iso-8859-1");
# SENDDATA(data2);
# You can process received TCP or UDP data in the Listener script
#
#
# Upload data to FTP:
# FTPUPLOAD("filePath", "somedata=" + Va, "write"); # use "append" mode to append data to existing file
Lettura (modulo)
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/getValue");
# IF response.IsSuccess
#  VAR content := response.Content;
#  VAR responseHeaders := response.Headers;
#  RETURN(PARSEXML(content, "//element1/value1"));
# ELSE
#  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
#  RETURN(NaN);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/getValue", "GET", "some data", "header1:value1", "header2:value2", ...);
# OR
# VAR request := HTTPREQUEST("/example/getValue", "POST", "some data");
# request.headers := { "header1:value1", "header2:value2", ...};
# request.method := "GET";
# request.data := null;
# VAR response := SENDHTTPREQUEST(request);
#
#
# Send TCP, UDP data:
# VAR data1 := BYTECOLLECTION("0a bb ea df 01");
# SENDDATA(data1);
# VAR data2 := "{\"name\":\"John\", \"age\":32}";
# SENDDATA(data2);
# VAR data3 := TOBYTES("{\"name\":\"John\", \"age\":32}", "iso-8859-1");
# SENDDATA(data3);
# Process received TCP or UDP data and set device values in the Listener script
#
#
# Download data from FTP:
# FTPDOWNLOAD("filePath");
L1 Tensione Variabile Solo lettura
numeric Unità: V json_path

L1 Tensione

Lettura
VAR a := PARSETEXT (PARSEjson(responseJson, "nrg"), "[", "]");
VAR b := SPLIT(a,",");
RETURN(TODOUBLE(GETAT(b,0)))
Scrittura
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/set/value=" + Va);
# IF response.IsSuccess = false
#  ADDERROR(response.StatusCode);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/setValue", "GET", "value=" + Va, "header1:value1", "header2:value2", ...);\r
# Or VAR request := HTTPREQUEST("/example/setValue");
# request.Method := "PUT";
# VAR response := SENDHTTPREQUEST(request);
#r
#
# Send TCP, UDP data:
# VAR data1 := "{\"name\":\"John\", \"age\":" + Va + "}";
# SENDDATA(data1);
# VAR data2 := TOBYTES("{\"name\":\"John\", \"age\":" + Va + "}", "iso-8859-1");
# SENDDATA(data2);
# You can process received TCP or UDP data in the Listener script
#
#
# Upload data to FTP:
# FTPUPLOAD("filePath", "somedata=" + Va, "write"); # use "append" mode to append data to existing file
Lettura (modulo)
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/getValue");
# IF response.IsSuccess
#  VAR content := response.Content;
#  VAR responseHeaders := response.Headers;
#  RETURN(PARSEXML(content, "//element1/value1"));
# ELSE
#  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
#  RETURN(NaN);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/getValue", "GET", "some data", "header1:value1", "header2:value2", ...);
# OR
# VAR request := HTTPREQUEST("/example/getValue", "POST", "some data");
# request.headers := { "header1:value1", "header2:value2", ...};
# request.method := "GET";
# request.data := null;
# VAR response := SENDHTTPREQUEST(request);
#
#
# Send TCP, UDP data:
# VAR data1 := BYTECOLLECTION("0a bb ea df 01");
# SENDDATA(data1);
# VAR data2 := "{\"name\":\"John\", \"age\":32}";
# SENDDATA(data2);
# VAR data3 := TOBYTES("{\"name\":\"John\", \"age\":32}", "iso-8859-1");
# SENDDATA(data3);
# Process received TCP or UDP data and set device values in the Listener script
#
#
# Download data from FTP:
# FTPDOWNLOAD("filePath");
L2 Corrente Variabile Solo lettura
numeric Unità: A json_path

L2 Corrente

Lettura
VAR a := PARSETEXT (PARSEjson(responseJson, "nrg"), "[", "]");
VAR b := SPLIT(a,",");
RETURN(TODOUBLE(GETAT(b,6)))
Scrittura
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/set/value=" + Va);
# IF response.IsSuccess = false
#  ADDERROR(response.StatusCode);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/setValue", "GET", "value=" + Va, "header1:value1", "header2:value2", ...);\r
# Or VAR request := HTTPREQUEST("/example/setValue");
# request.Method := "PUT";
# VAR response := SENDHTTPREQUEST(request);
#r
#
# Send TCP, UDP data:
# VAR data1 := "{\"name\":\"John\", \"age\":" + Va + "}";
# SENDDATA(data1);
# VAR data2 := TOBYTES("{\"name\":\"John\", \"age\":" + Va + "}", "iso-8859-1");
# SENDDATA(data2);
# You can process received TCP or UDP data in the Listener script
#
#
# Upload data to FTP:
# FTPUPLOAD("filePath", "somedata=" + Va, "write"); # use "append" mode to append data to existing file
Lettura (modulo)
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/getValue");
# IF response.IsSuccess
#  VAR content := response.Content;
#  VAR responseHeaders := response.Headers;
#  RETURN(PARSEXML(content, "//element1/value1"));
# ELSE
#  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
#  RETURN(NaN);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/getValue", "GET", "some data", "header1:value1", "header2:value2", ...);
# OR
# VAR request := HTTPREQUEST("/example/getValue", "POST", "some data");
# request.headers := { "header1:value1", "header2:value2", ...};
# request.method := "GET";
# request.data := null;
# VAR response := SENDHTTPREQUEST(request);
#
#
# Send TCP, UDP data:
# VAR data1 := BYTECOLLECTION("0a bb ea df 01");
# SENDDATA(data1);
# VAR data2 := "{\"name\":\"John\", \"age\":32}";
# SENDDATA(data2);
# VAR data3 := TOBYTES("{\"name\":\"John\", \"age\":32}", "iso-8859-1");
# SENDDATA(data3);
# Process received TCP or UDP data and set device values in the Listener script
#
#
# Download data from FTP:
# FTPDOWNLOAD("filePath");
L2 Tensione Variabile Solo lettura
numeric Unità: V json_path

L2 Tensione

Lettura
VAR a := PARSETEXT (PARSEjson(responseJson, "nrg"), "[", "]");
VAR b := SPLIT(a,",");
RETURN(TODOUBLE(GETAT(b,1)))
Scrittura
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/set/value=" + Va);
# IF response.IsSuccess = false
#  ADDERROR(response.StatusCode);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/setValue", "GET", "value=" + Va, "header1:value1", "header2:value2", ...);\r
# Or VAR request := HTTPREQUEST("/example/setValue");
# request.Method := "PUT";
# VAR response := SENDHTTPREQUEST(request);
#r
#
# Send TCP, UDP data:
# VAR data1 := "{\"name\":\"John\", \"age\":" + Va + "}";
# SENDDATA(data1);
# VAR data2 := TOBYTES("{\"name\":\"John\", \"age\":" + Va + "}", "iso-8859-1");
# SENDDATA(data2);
# You can process received TCP or UDP data in the Listener script
#
#
# Upload data to FTP:
# FTPUPLOAD("filePath", "somedata=" + Va, "write"); # use "append" mode to append data to existing file
Lettura (modulo)
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/getValue");
# IF response.IsSuccess
#  VAR content := response.Content;
#  VAR responseHeaders := response.Headers;
#  RETURN(PARSEXML(content, "//element1/value1"));
# ELSE
#  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
#  RETURN(NaN);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/getValue", "GET", "some data", "header1:value1", "header2:value2", ...);
# OR
# VAR request := HTTPREQUEST("/example/getValue", "POST", "some data");
# request.headers := { "header1:value1", "header2:value2", ...};
# request.method := "GET";
# request.data := null;
# VAR response := SENDHTTPREQUEST(request);
#
#
# Send TCP, UDP data:
# VAR data1 := BYTECOLLECTION("0a bb ea df 01");
# SENDDATA(data1);
# VAR data2 := "{\"name\":\"John\", \"age\":32}";
# SENDDATA(data2);
# VAR data3 := TOBYTES("{\"name\":\"John\", \"age\":32}", "iso-8859-1");
# SENDDATA(data3);
# Process received TCP or UDP data and set device values in the Listener script
#
#
# Download data from FTP:
# FTPDOWNLOAD("filePath");
L3 Corrente Variabile Solo lettura
numeric Unità: A json_path

L3 Corrente

Lettura
VAR a := PARSETEXT (PARSEjson(responseJson, "nrg"), "[", "]");
VAR b := SPLIT(a,",");
RETURN(TODOUBLE(GETAT(b,7)))
Scrittura
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/set/value=" + Va);
# IF response.IsSuccess = false
#  ADDERROR(response.StatusCode);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/setValue", "GET", "value=" + Va, "header1:value1", "header2:value2", ...);\r
# Or VAR request := HTTPREQUEST("/example/setValue");
# request.Method := "PUT";
# VAR response := SENDHTTPREQUEST(request);
#r
#
# Send TCP, UDP data:
# VAR data1 := "{\"name\":\"John\", \"age\":" + Va + "}";
# SENDDATA(data1);
# VAR data2 := TOBYTES("{\"name\":\"John\", \"age\":" + Va + "}", "iso-8859-1");
# SENDDATA(data2);
# You can process received TCP or UDP data in the Listener script
#
#
# Upload data to FTP:
# FTPUPLOAD("filePath", "somedata=" + Va, "write"); # use "append" mode to append data to existing file
Lettura (modulo)
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/getValue");
# IF response.IsSuccess
#  VAR content := response.Content;
#  VAR responseHeaders := response.Headers;
#  RETURN(PARSEXML(content, "//element1/value1"));
# ELSE
#  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
#  RETURN(NaN);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/getValue", "GET", "some data", "header1:value1", "header2:value2", ...);
# OR
# VAR request := HTTPREQUEST("/example/getValue", "POST", "some data");
# request.headers := { "header1:value1", "header2:value2", ...};
# request.method := "GET";
# request.data := null;
# VAR response := SENDHTTPREQUEST(request);
#
#
# Send TCP, UDP data:
# VAR data1 := BYTECOLLECTION("0a bb ea df 01");
# SENDDATA(data1);
# VAR data2 := "{\"name\":\"John\", \"age\":32}";
# SENDDATA(data2);
# VAR data3 := TOBYTES("{\"name\":\"John\", \"age\":32}", "iso-8859-1");
# SENDDATA(data3);
# Process received TCP or UDP data and set device values in the Listener script
#
#
# Download data from FTP:
# FTPDOWNLOAD("filePath");
L3 Tensione Variabile Solo lettura
numeric Unità: V json_path

L3 Tensione

Lettura
VAR a := PARSETEXT (PARSEjson(responseJson, "nrg"), "[", "]");
VAR b := SPLIT(a,",");
RETURN(TODOUBLE(GETAT(b,2)))
Scrittura
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/set/value=" + Va);
# IF response.IsSuccess = false
#  ADDERROR(response.StatusCode);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/setValue", "GET", "value=" + Va, "header1:value1", "header2:value2", ...);\r
# Or VAR request := HTTPREQUEST("/example/setValue");
# request.Method := "PUT";
# VAR response := SENDHTTPREQUEST(request);
#r
#
# Send TCP, UDP data:
# VAR data1 := "{\"name\":\"John\", \"age\":" + Va + "}";
# SENDDATA(data1);
# VAR data2 := TOBYTES("{\"name\":\"John\", \"age\":" + Va + "}", "iso-8859-1");
# SENDDATA(data2);
# You can process received TCP or UDP data in the Listener script
#
#
# Upload data to FTP:
# FTPUPLOAD("filePath", "somedata=" + Va, "write"); # use "append" mode to append data to existing file
Lettura (modulo)
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/getValue");
# IF response.IsSuccess
#  VAR content := response.Content;
#  VAR responseHeaders := response.Headers;
#  RETURN(PARSEXML(content, "//element1/value1"));
# ELSE
#  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
#  RETURN(NaN);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/getValue", "GET", "some data", "header1:value1", "header2:value2", ...);
# OR
# VAR request := HTTPREQUEST("/example/getValue", "POST", "some data");
# request.headers := { "header1:value1", "header2:value2", ...};
# request.method := "GET";
# request.data := null;
# VAR response := SENDHTTPREQUEST(request);
#
#
# Send TCP, UDP data:
# VAR data1 := BYTECOLLECTION("0a bb ea df 01");
# SENDDATA(data1);
# VAR data2 := "{\"name\":\"John\", \"age\":32}";
# SENDDATA(data2);
# VAR data3 := TOBYTES("{\"name\":\"John\", \"age\":32}", "iso-8859-1");
# SENDDATA(data3);
# Process received TCP or UDP data and set device values in the Listener script
#
#
# Download data from FTP:
# FTPDOWNLOAD("filePath");
Commutazione delle fasi Interruttore multivalore

Configurazione fasi — Automatico (il caricatore decide), Monofase (forzato), Trifase (forzato). Commutazione possibile anche durante la carica attiva.

uint8
Valori / Stati: Automatic · 1-Phase · 3-Phase

Commutazione delle fasi

Lettura stato interruttore
RETURN(PARSEjson(responseJson, "psm"));
Scrittura stato interruttore
VAR response := SENDHTTPREQUEST("api/set?psm=" + Mu);
IF response.IsSuccess = false
ADDERROR(response.StatusCode);
END
Potenza verso rete Variabile

Sola scrittura — invia dati di potenza di rete esterna (kW) al caricatore per il calcolo della ricarica con surplus

numeric Unità: kW json_path

Potenza verso rete

Scrittura
VAR pgrid := "{\"pGrid\":"+ Round(Va*1000)+"}";

VAR response := SENDHTTPREQUEST("api/set?ids=" + pgrid);

IF response.IsSuccess = false
ADDERROR(response.StatusCode);
END
Lettura (modulo)
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/getValue");
# IF response.IsSuccess
#  VAR content := response.Content;
#  VAR responseHeaders := response.Headers;
#  RETURN(PARSEXML(content, "//element1/value1"));
# ELSE
#  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
#  RETURN(NaN);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/getValue", "GET", "some data", "header1:value1", "header2:value2", ...);
# OR
# VAR request := HTTPREQUEST("/example/getValue", "POST", "some data");
# request.headers := { "header1:value1", "header2:value2", ...};
# request.method := "GET";
# request.data := null;
# VAR response := SENDHTTPREQUEST(request);
#
#
# Send TCP, UDP data:
# VAR data1 := BYTECOLLECTION("0a bb ea df 01");
# SENDDATA(data1);
# VAR data2 := "{\"name\":\"John\", \"age\":32}";
# SENDDATA(data2);
# VAR data3 := TOBYTES("{\"name\":\"John\", \"age\":32}", "iso-8859-1");
# SENDDATA(data3);
# Process received TCP or UDP data and set device values in the Listener script
#
#
# Download data from FTP:
# FTPDOWNLOAD("filePath");
Potenza FV Variabile

Sola scrittura — invia dati di produzione FV esterna (kW) al caricatore per il calcolo della ricarica con surplus

numeric Unità: kW json_path

Potenza FV

Scrittura
VAR pPv := "{\"pPv\":"+ Round(Va*1000)+"}";

VAR response := SENDHTTPREQUEST("api/set?ids=" + pPv);

IF response.IsSuccess = false
ADDERROR(response.StatusCode);
END
Lettura (modulo)
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/getValue");
# IF response.IsSuccess
#  VAR content := response.Content;
#  VAR responseHeaders := response.Headers;
#  RETURN(PARSEXML(content, "//element1/value1"));
# ELSE
#  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
#  RETURN(NaN);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/getValue", "GET", "some data", "header1:value1", "header2:value2", ...);
# OR
# VAR request := HTTPREQUEST("/example/getValue", "POST", "some data");
# request.headers := { "header1:value1", "header2:value2", ...};
# request.method := "GET";
# request.data := null;
# VAR response := SENDHTTPREQUEST(request);
#
#
# Send TCP, UDP data:
# VAR data1 := BYTECOLLECTION("0a bb ea df 01");
# SENDDATA(data1);
# VAR data2 := "{\"name\":\"John\", \"age\":32}";
# SENDDATA(data2);
# VAR data3 := TOBYTES("{\"name\":\"John\", \"age\":32}", "iso-8859-1");
# SENDDATA(data3);
# Process received TCP or UDP data and set device values in the Listener script
#
#
# Download data from FTP:
# FTPDOWNLOAD("filePath");
Connessione: Packet Parser → HTTP
Possibili miglioramenti (18)
  • Voltage N — Neutral voltage in V, available in nrg array index 3
  • Per-phase Power (L1, L2, L3, N) — Individual phase power in W — template only reads total power (nrg[12])
  • Power Factor (L1, L2, L3) — Power factor per phase, available in nrg array
  • Total Energy — Total energy consumed in Wh — included in status filter but not exposed as a device
  • Session Energy — Energy consumed in current charging session (Wh)
  • Error State — Error code — None, FiAc, FiDc, Phase, Overvolt, Overamp, etc. Useful for diagnostics.
  • Allow Charging — Whether the car is presently allowed to charge
  • Force State — Force charger state: Neutral=0, Off=1, On=2. Read/write. Could override charging logic.
  • Cable Current Limit — Maximum current the connected cable supports (A)
  • Temperature Sensors — Controller and charger temperature sensors array
  • Grid Frequency — Grid frequency in Hz
  • Firmware Version — Current firmware version string
  • Serial Number — Device serial number
  • Uptime — Time since boot in milliseconds
  • Energy Limit — Charging energy limit in Wh (null=disabled). Read/write.
  • Ampere Maximum — Maximum ampere limit (R/W)
  • Minimum Charging Current — Minimum charging current (R/W)
  • PV Surplus Feature — Enable/disable PV surplus charging (boolean, R/W)

Fonti

  • go-eCharger API v2 — HTTP API Reference
    github.com 2026-03-27
  • go-e Charger Gemini flex — Data Sheet V1.4
    go-e.com 2026-03-27
    PDF
  • ha-goecharger-api2 — Home Assistant Integration
    github.com 2026-03-27