TapHome

go-e Gemini flex Wallbox

Packet Parser → HTTP
Eingereicht von
Zuletzt aktualisiert: 03. 2026
go-e Gemini flex Wallbox

Die go-e Gemini flex ist eine in Österreich hergestellte EV-Wallbox, verfügbar in den Varianten 11 kW (16 A) und 22 kW (32 A), wobei das neuere Modell Gemini flex 2.0 ein integriertes 4G-LTE-Modul bietet. TapHome kommuniziert mit der Ladestation über die lokale HTTP API v2 per Wi-Fi — eine Cloud-Verbindung ist nicht erforderlich. Die API muss in der go-e App explizit aktiviert werden, bevor TapHome eine Verbindung herstellen kann.

Die Vorlage bietet Ladestatus-Überwachung, Ladestrom- und Modussteuerung, Phasenumschaltung, phasenweise Spannungs- und Strommessung sowie schreibgeschützte Eingänge für externe PV- und Netzleistungsdaten zur Ermöglichung des Überschussladens.

Konfiguration

Aktivierung der HTTP-API

Die lokale HTTP API v2 ist standardmäßig deaktiviert. Zur Aktivierung:

  1. Verbinden Sie sich mit dem go-e Charger über die go-e App (verfügbar für iOS und Android)
  2. Navigieren Sie zu Einstellungen > Verbindung > API-Einstellungen
  3. Aktivieren Sie „Zugriff auf lokale HTTP-API vX erlauben"

Nach der Aktivierung antwortet die Ladestation auf HTTP-Anfragen auf Port 80. Eine Authentifizierung ist nicht erforderlich — der Zugriff wird ausschließlich über diesen Schalter gesteuert.

Netzwerk-Einrichtung

Die go-e Gemini flex verbindet sich über Wi-Fi (802.11b/g/n, nur 2,4 GHz). Ein Ethernet-Anschluss ist nicht vorhanden. Geben Sie beim Import der TapHome-Vorlage die IP-Adresse der Ladestation ein.

Der go-e Charger unterstützt kein mDNS. Um Verbindungsprobleme nach einer DHCP-Erneuerung zu vermeiden, konfigurieren Sie eine statische IP-Adresse oder eine DHCP-Reservierung auf Ihrem Router für die MAC-Adresse der Ladestation.

Die Ladestation kann im Hotspot-Modus (Direktverbindung) oder als Teilnehmer eines bestehenden Wi-Fi-Netzwerks betrieben werden. Für die TapHome-Integration muss sich die Ladestation im selben Netzwerk wie die TapHome CCU befinden.

Gerätefunktionen

Ladestatus

Das Gerät Ladestatus zeigt den aktuellen Verbindungs- und Ladezustand als Mehrwert-Indikator (nur lesen) an. Der API-Schlüssel car gibt einen von fünf Zuständen zurück: Störung (0), Verfügbar (1), Laden (2), Vorbereitung (3) oder Abgeschlossen (4). Dies ermöglicht TapHome-Automatisierungen, basierend darauf zu reagieren, ob ein Fahrzeug angeschlossen ist, aktiv lädt oder eine Sitzung abgeschlossen hat.

Ladestrom- und Modussteuerung

Zwei steuerbare Geräte verwalten den Betrieb der Ladestation:

  • Ladestrom — wählt den angeforderten Ladestrom aus sechs diskreten Werten: 6, 8, 10, 12, 14 und 16 A. Die Vorlage ordnet diese den Schalterpositionen 0–5 zu, wobei die Formel amp/2 - 3 zum Lesen und (position + 3) × 2 zum Schreiben verwendet wird. Werte werden über api/set?amp={value} an die Ladestation gesendet.

  • Lademodus — wählt die Ladelogik: Basis (Standard-Dauerladen), Eco (preisoptimiert über Awattar-Tarif) oder Tagesfahrt (automatischer Stopp nach Erreichen des Ziels). Die API verwendet die Werte 3, 4 und 5; die Vorlage ordnet diese den Positionen 0, 1 und 2 zu.

Der Ladestrom-Selektor bildet nur sechs Werte ab (6–16 A in 2-A-Schritten). Die 22-kW-Variante der Gemini flex unterstützt bis zu 32 A, aber Werte über 16 A werden von dieser Vorlage nicht abgedeckt. Zur Nutzung höherer Ströme kann der API-Schlüssel amp direkt außerhalb der Vorlage gesetzt werden.

Phasenumschaltung

Das Gerät Phasenumschaltung steuert, wie viele Phasen die Ladestation nutzt: Automatisch (0), 1-Phasig (1) oder 3-Phasig (2). Der go-e Charger unterstützt die Phasenumschaltung auch während einer aktiven Ladesitzung. Im automatischen Modus wählt die Ladestation die optimale Phasenkonfiguration basierend auf der verfügbaren Leistung.

Energieüberwachung

Die Vorlage liest phasenweise Spannung und Strom aus dem nrg-Energiearray der Ladestation, das 16 Werte enthält, die in jedem Abfragezyklus aktualisiert werden:

GerätQuelleEinheit
L1 Spannungnrg[0]V
L2 Spannungnrg[1]V
L3 Spannungnrg[2]V
L1 Stromnrg[5]A
L2 Stromnrg[6]A
L3 Stromnrg[7]A
Aktuelle Leistungsaufnahmenrg[12]W

Das Gerät Aktuelle Leistungsaufnahme zeigt die gesamte aktive Ladeleistung in Watt an. Alle Energiewerte sind schreibgeschützt.

Eingänge für PV-Überschussladen

Zwei Nur-Schreiben-Geräte ermöglichen TapHome, externe Energiedaten an die Ladestation für Überschusslade-Berechnungen zu senden:

  • Netzeinspeisung — sendet die aktuelle Netzexport-/-importleistung (in kW, durch Multiplikation mit 1000 in W umgerechnet) über api/set?ids={"pGrid":value}
  • PV-Leistung — sendet die aktuelle Photovoltaikproduktion (in kW, durch Multiplikation mit 1000 in W umgerechnet) über api/set?ids={"pPv":value}

Diese Geräte lesen keine Daten von der Ladestation. Der go-e Charger selbst misst weder Netz- noch PV-Leistung — er ist auf externe Quellen angewiesen, die diese Informationen bereitstellen. In einer typischen TapHome-Konfiguration werden Werte von einem separaten Energiezähler oder Solar-Wechselrichter (ebenfalls in TapHome integriert) über diese Nur-Schreiben-Geräte an die Ladestation weitergeleitet, wodurch der Eco-Lademodus zur Optimierung des Eigenverbrauchs aktiviert wird.

Um PV-Überschussladen zu nutzen, stellen Sie den Lademodus auf Eco und verwenden Sie TapHome-Automatisierungen, um regelmäßig aktuelle Netzleistungs- und PV-Produktionswerte in die Geräte Netzeinspeisung und PV-Leistung zu schreiben. Die Ladestation passt ihren Ladestrom automatisch an den verfügbaren Überschuss an.

Weitere Funktionen

Die go-e Charger API v2 stellt zusätzliche Daten bereit, die derzeit nicht in der Vorlage abgebildet sind: phasenweise Leistung (W) und Leistungsfaktor, Neutralleiterspannung, gesamte verbrauchte Energie (eto in Wh), Sitzungsenergie (wh), Fehlerzustandscodes, Kabelstromlimit, Temperatursensoren, Netzfrequenz, Zwangsladezustandssteuerung, Energielimit-Einstellungen und Konfiguration des minimalen/maximalen Stroms. Diese können in einer zukünftigen Vorlagenaktualisierung hinzugefügt werden.

Fehlerbehebung

Gerät antwortet nicht
  1. Überprüfen Sie, ob die Ladestation mit dem Wi-Fi verbunden ist und eine gültige IP-Adresse hat — prüfen Sie in der go-e App unter Einstellungen > Verbindung
  2. Bestätigen Sie, dass die HTTP-API aktiviert ist (Einstellungen > Verbindung > API-Einstellungen)
  3. Öffnen Sie http://{charger-ip}/api/status im Browser — wenn JSON zurückgegeben wird, ist die API erreichbar
  4. Prüfen Sie, ob TapHome CCU und Ladestation im selben Netzwerk / VLAN sind
Ladestrom ändert sich nicht
  1. Die Vorlage bildet nur sechs Werte ab (6, 8, 10, 12, 14, 16 A). Wenn die Ladestation einen anderen Wert anzeigt (z. B. 20 A über die App eingestellt), zeigt TapHome die nächstgelegene abgebildete Position an
  2. Überprüfen Sie, ob die Firmware der Ladestation Version 051.4 oder neuer ist — ältere Firmware verwendet eine andere Filtersyntax, die zu Parsing-Problemen führen kann
PV-Überschussladen funktioniert nicht
  1. Bestätigen Sie, dass der Lademodus auf Eco eingestellt ist — die Überschusslogik wird nur in diesem Modus aktiviert
  2. Überprüfen Sie, ob die Werte für Netzeinspeisung und PV-Leistung regelmäßig geschrieben werden (mindestens alle 30 Sekunden)
  3. Prüfen Sie, ob die Werte in kW angegeben sind (die Vorlage konvertiert automatisch in W)
  4. Öffnen Sie http://{charger-ip}/api/status?filter=pgrid,ppv, um zu überprüfen, ob die Ladestation die Werte empfängt

Der API-Schlüssel eto (Gesamtenergie) ist im Statusfilter enthalten, wird aber nicht als Gerät in der Vorlage bereitgestellt. Der Gesamtenergiewert wird abgerufen, aber nicht verwendet.

Verfügbare Geräte

go-e Wallbox Modul
Benutzerdefinierte Variablen

Go-e

Lesen (Modul)
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
Ladestatus Mehrwertschalter Nur lesen

Fahrzeugverbindungs- und Ladezustand — Störung, Verfügbar, Laden, Vorbereitung, Abgeschlossen

uint8
Werte / Zustände: Failure · Available · Charging · Preparing · Finished

Ladestatus

Schaltzustand lesen
RETURN(PARSEjson(responseJson, "car"));
Schaltzustand schreiben
# 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
Ladestrom Mehrwertschalter

Ladestromwahl — 6, 8, 10, 12, 14, 16 A in diskreten Stufen

uint8 Einheit: A numeric
Werte / Zustände: 6-Amp · 8-Amp · 10-Amp · 12-Amp · 14-Amp · 16-Amp

Ladestrom

Schaltzustand lesen
VAR ampers := PARSEjson(responseJson, "amp");
RETURN(ampers/2-3);
Schaltzustand schreiben
VAR amps:= (Mu +3)*2;
VAR response := SENDHTTPREQUEST("api/set?amp=" + amps);
IF response.IsSuccess = false
ADDERROR(response.StatusCode);
END
Lademodus Mehrwertschalter

Ladelogik-Auswahl — Basis (Dauerladen), Eco (preisoptimiert / PV-Überschuss), Tagesfahrt (automatischer Stopp bei Ziel)

uint8 numeric
Werte / Zustände: Basic · Eco · Daily trip

Lademodus

Schaltzustand lesen
RETURN(PARSEjson(responseJson, "lmo")-3);
Schaltzustand schreiben
VAR response := SENDHTTPREQUEST("api/set?lmo=" + (Mu+3));
IF response.IsSuccess = false
ADDERROR(response.StatusCode);
END
Aktuelle Leistungsaufnahme Variable Nur lesen

Gesamte aktive Ladeleistung über alle Phasen (W)

numeric Einheit: W json_path

Aktuelle Leistungsaufnahme

Lesen
VAR a := PARSETEXT (PARSEjson(responseJson, "nrg"), "[", "]");
VAR b := SPLIT(a,",");
RETURN(TODOUBLE(GETAT(b,12)))
Schreiben
# 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
Lesen (Modul)
# 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 Strom Variable Nur lesen
numeric Einheit: A json_path

L1 Strom

Lesen
VAR a := PARSETEXT (PARSEjson(responseJson, "nrg"), "[", "]");
VAR b := SPLIT(a,",");
RETURN(TODOUBLE(GETAT(b,5)))
Schreiben
# 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
Lesen (Modul)
# 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 Spannung Variable Nur lesen
numeric Einheit: V json_path

L1 Spannung

Lesen
VAR a := PARSETEXT (PARSEjson(responseJson, "nrg"), "[", "]");
VAR b := SPLIT(a,",");
RETURN(TODOUBLE(GETAT(b,0)))
Schreiben
# 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
Lesen (Modul)
# 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 Strom Variable Nur lesen
numeric Einheit: A json_path

L2 Strom

Lesen
VAR a := PARSETEXT (PARSEjson(responseJson, "nrg"), "[", "]");
VAR b := SPLIT(a,",");
RETURN(TODOUBLE(GETAT(b,6)))
Schreiben
# 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
Lesen (Modul)
# 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 Spannung Variable Nur lesen
numeric Einheit: V json_path

L2 Spannung

Lesen
VAR a := PARSETEXT (PARSEjson(responseJson, "nrg"), "[", "]");
VAR b := SPLIT(a,",");
RETURN(TODOUBLE(GETAT(b,1)))
Schreiben
# 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
Lesen (Modul)
# 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 Strom Variable Nur lesen
numeric Einheit: A json_path

L3 Strom

Lesen
VAR a := PARSETEXT (PARSEjson(responseJson, "nrg"), "[", "]");
VAR b := SPLIT(a,",");
RETURN(TODOUBLE(GETAT(b,7)))
Schreiben
# 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
Lesen (Modul)
# 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 Spannung Variable Nur lesen
numeric Einheit: V json_path

L3 Spannung

Lesen
VAR a := PARSETEXT (PARSEjson(responseJson, "nrg"), "[", "]");
VAR b := SPLIT(a,",");
RETURN(TODOUBLE(GETAT(b,2)))
Schreiben
# 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
Lesen (Modul)
# 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");
Phasenumschaltung Mehrwertschalter

Phasenkonfiguration — Automatisch (Ladestation entscheidet), 1-Phasig (erzwungen), 3-Phasig (erzwungen). Umschaltung auch während aktivem Laden möglich.

uint8
Werte / Zustände: Automatic · 1-Phase · 3-Phase

Phasenumschaltung

Schaltzustand lesen
RETURN(PARSEjson(responseJson, "psm"));
Schaltzustand schreiben
VAR response := SENDHTTPREQUEST("api/set?psm=" + Mu);
IF response.IsSuccess = false
ADDERROR(response.StatusCode);
END
Netzeinspeisung Variable

Nur Schreiben — sendet externe Netzleistungsdaten (kW) an die Ladestation für Überschusslade-Berechnungen

numeric Einheit: kW json_path

Netzeinspeisung

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

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

IF response.IsSuccess = false
ADDERROR(response.StatusCode);
END
Lesen (Modul)
# 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");
PV-Leistung Variable

Nur Schreiben — sendet externe PV-Produktionsdaten (kW) an die Ladestation für Überschusslade-Berechnungen

numeric Einheit: kW json_path

PV-Leistung

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

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

IF response.IsSuccess = false
ADDERROR(response.StatusCode);
END
Lesen (Modul)
# 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");
Verbindung: Packet Parser → HTTP
Mögliche Verbesserungen (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)

Quellen

  • 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