TapHome

go-e Gemini flex Wallbox

Packet Parser → HTTP
Dodane przez
Ostatnia aktualizacja: 03. 2026
go-e Gemini flex Wallbox

go-e Gemini flex to austriacki wallbox EV dostępny w wariantach 11 kW (16 A) i 22 kW (32 A), a nowszy model Gemini flex 2.0 posiada zintegrowany moduł 4G LTE. TapHome komunikuje się z ładowarką poprzez lokalne HTTP API v2 przez Wi-Fi — połączenie z chmurą nie jest wymagane. API należy jawnie włączyć w aplikacji go-e, zanim TapHome będzie mógł się połączyć.

Szablon zapewnia monitorowanie stanu ładowarki, sterowanie prądem i trybem ładowania, przełączanie faz, odczyty napięcia i prądu na poszczególnych fazach oraz wejścia tylko do zapisu dla zewnętrznych danych mocy FV i sieciowej umożliwiające ładowanie nadwyżką.

Konfiguracja

Włączenie HTTP API

Lokalne HTTP API v2 jest domyślnie wyłączone. Aby je włączyć:

  1. Połącz się z go-e Charger przez aplikację go-e (dostępna na iOS i Android)
  2. Przejdź do Ustawienia > Połączenie > Ustawienia API
  3. Włącz „Zezwól na dostęp do lokalnego HTTP API vX"

Po włączeniu ładowarka odpowiada na żądania HTTP na porcie 80. Uwierzytelnianie nie jest wymagane — dostęp jest kontrolowany wyłącznie przez ten przełącznik.

Konfiguracja sieci

go-e Gemini flex łączy się przez Wi-Fi (802.11b/g/n, tylko 2,4 GHz). Port Ethernet nie jest dostępny. Podczas importu szablonu TapHome wprowadź adres IP ładowarki.

go-e Charger nie obsługuje mDNS. Aby zapobiec problemom z łącznością po odnowieniu DHCP, skonfiguruj statyczny adres IP lub rezerwację DHCP na routerze dla adresu MAC ładowarki.

Ładowarka może działać w trybie hotspot (połączenie bezpośrednie) lub dołączyć do istniejącej sieci Wi-Fi. Do integracji z TapHome ładowarka musi znajdować się w tej samej sieci co TapHome CCU.

Możliwości urządzenia

Stan ładowarki

Urządzenie Stan ładowarki raportuje bieżący stan połączenia i ładowania jako wielowartościowy wskaźnik (tylko do odczytu). Klucz API car zwraca jeden z pięciu stanów: Awaria (0), Dostępna (1), Ładowanie (2), Przygotowanie (3) lub Zakończone (4). Umożliwia to automatyzacjom TapHome reagowanie na to, czy pojazd jest podłączony, aktywnie się ładuje, czy zakończył sesję.

Sterowanie prądem i trybem ładowania

Dwa sterowalne urządzenia zarządzają sposobem działania ładowarki:

  • Prąd ładowania — wybiera żądany prąd ładowania spośród sześciu dyskretnych wartości: 6, 8, 10, 12, 14 i 16 A. Szablon mapuje je na pozycje przełącznika 0–5 za pomocą wzoru amp/2 - 3 do odczytu i (position + 3) × 2 do zapisu. Wartości są wysyłane do ładowarki przez api/set?amp={value}.

  • Tryb ładowania — wybiera logikę ładowania: Podstawowy (domyślne ciągłe ładowanie), Eco (optymalizacja cenowa przez taryfę Awattar) lub Codzienna trasa (automatyczne zatrzymanie po osiągnięciu celu). API używa wartości 3, 4 i 5; szablon mapuje je na pozycje 0, 1 i 2.

Selektor prądu ładowania mapuje tylko sześć wartości (6–16 A w krokach co 2 A). Wariant 22 kW ładowarki Gemini flex obsługuje do 32 A, ale wartości powyżej 16 A nie są objęte tym szablonem. Aby użyć wyższych prądów, klucz API amp można ustawić bezpośrednio poza szablonem.

Przełączanie faz

Urządzenie Przełączanie faz kontroluje liczbę faz używanych przez ładowarkę: Automatyczne (0), 1-fazowe (1) lub 3-fazowe (2). go-e Charger obsługuje przełączanie faz nawet podczas aktywnej sesji ładowania. W trybie automatycznym ładowarka wybiera optymalną konfigurację faz na podstawie dostępnej mocy.

Monitorowanie energii

Szablon odczytuje napięcie i prąd na poszczególnych fazach z tablicy energetycznej nrg ładowarki, która zawiera 16 wartości aktualizowanych w każdym cyklu odpytywania:

UrządzenieŹródłoJednostka
L1 Napięcienrg[0]V
L2 Napięcienrg[1]V
L3 Napięcienrg[2]V
L1 Prądnrg[5]A
L2 Prądnrg[6]A
L3 Prądnrg[7]A
Bieżące zużycienrg[12]W

Urządzenie Bieżące zużycie raportuje całkowitą aktywną moc ładowania w watach. Wszystkie wartości energetyczne są tylko do odczytu.

Wejścia do ładowania nadwyżką FV

Dwa urządzenia tylko do zapisu umożliwiają TapHome przesyłanie zewnętrznych danych energetycznych do ładowarki w celu obliczania ładowania nadwyżką:

  • Moc do sieci — wysyła bieżącą moc eksportu/importu sieciowego (w kW, przeliczoną na W przez pomnożenie przez 1000) przez api/set?ids={"pGrid":value}
  • Moc FV — wysyła bieżącą produkcję fotowoltaiczną (w kW, przeliczoną na W przez pomnożenie przez 1000) przez api/set?ids={"pPv":value}

Te urządzenia nie odczytują danych z ładowarki. go-e Charger sam nie mierzy mocy sieciowej ani FV — polega na zewnętrznych źródłach dostarczających te informacje. W typowej konfiguracji TapHome wartości z oddzielnego licznika energii lub falownika solarnego (również zintegrowanego z TapHome) są przekazywane do ładowarki przez te urządzenia tylko do zapisu, umożliwiając tryb ładowania Eco optymalizację samozużycia.

Aby korzystać z ładowania nadwyżką FV, ustaw Tryb ładowania na Eco, a następnie za pomocą automatyzacji TapHome regularnie zapisuj bieżące wartości mocy sieciowej i produkcji FV do urządzeń Moc do sieci i Moc FV. Ładowarka automatycznie dostosuje prąd ładowania na podstawie dostępnej nadwyżki.

Dodatkowe możliwości

API go-e Charger v2 udostępnia dodatkowe dane, które obecnie nie są mapowane w szablonie: moc na fazę (W) i współczynnik mocy, napięcie przewodu neutralnego, całkowita zużyta energia (eto w Wh), energia sesji (wh), kody stanów błędów, limit prądu kabla, czujniki temperatury, częstotliwość sieci, sterowanie wymuszonym stanem ładowania, ustawienia limitu energii oraz konfiguracja minimalnego/maksymalnego prądu. Mogą zostać dodane w przyszłej aktualizacji szablonu.

Rozwiązywanie problemów

Urządzenie nie odpowiada
  1. Sprawdź, czy ładowarka jest połączona z Wi-Fi i ma prawidłowy adres IP — sprawdź w aplikacji go-e w sekcji Ustawienia > Połączenie
  2. Potwierdź, że HTTP API jest włączone (Ustawienia > Połączenie > Ustawienia API)
  3. Otwórz http://{charger-ip}/api/status w przeglądarce — jeśli odpowiada JSON-em, API jest osiągalne
  4. Sprawdź, czy TapHome CCU i ładowarka są w tej samej sieci / VLAN
Prąd ładowania się nie zmienia
  1. Szablon mapuje tylko sześć wartości (6, 8, 10, 12, 14, 16 A). Jeśli ładowarka pokazuje inną wartość (np. 20 A ustawione przez aplikację), TapHome wyświetli najbliższą zmapowaną pozycję
  2. Sprawdź, czy firmware ładowarki to wersja 051.4 lub nowsza — starszy firmware używa innej składni filtra, co może powodować problemy z parsowaniem
Ładowanie nadwyżką FV nie działa
  1. Potwierdź, że Tryb ładowania jest ustawiony na Eco — logika nadwyżki aktywuje się tylko w tym trybie
  2. Sprawdź, czy wartości Moc do sieci i Moc FV są zapisywane regularnie (co najmniej co 30 sekund)
  3. Sprawdź, czy wartości są w kW (szablon automatycznie konwertuje na W)
  4. Otwórz http://{charger-ip}/api/status?filter=pgrid,ppv aby sprawdzić, czy ładowarka odbiera wartości

Klucz API eto (całkowita energia) jest zawarty w filtrze stanu, ale nie jest udostępniony jako urządzenie w szablonie. Wartość całkowitej energii jest pobierana, ale nie jest wykorzystywana.

Dostępne urządzenia

go-e Wallbox Moduł
Zmienne niestandardowe

Go-e

Odczyt (moduł)
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
Stan ładowarki Przełącznik wielowartościowy Tylko do odczytu

Stan połączenia pojazdu i ładowania — Awaria, Dostępna, Ładowanie, Przygotowanie, Zakończone

uint8
Wartości / Stany: Failure · Available · Charging · Preparing · Finished

Stan ładowarki

Odczyt stanu przełącznika
RETURN(PARSEjson(responseJson, "car"));
Zapis stanu przełącznika
# 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
Prąd ładowania Przełącznik wielowartościowy

Selektor żądanego prądu ładowania — 6, 8, 10, 12, 14, 16 A w dyskretnych krokach

uint8 Jednostka: A numeric
Wartości / Stany: 6-Amp · 8-Amp · 10-Amp · 12-Amp · 14-Amp · 16-Amp

Prąd ładowania

Odczyt stanu przełącznika
VAR ampers := PARSEjson(responseJson, "amp");
RETURN(ampers/2-3);
Zapis stanu przełącznika
VAR amps:= (Mu +3)*2;
VAR response := SENDHTTPREQUEST("api/set?amp=" + amps);
IF response.IsSuccess = false
ADDERROR(response.StatusCode);
END
Tryb ładowania Przełącznik wielowartościowy

Selektor logiki ładowania — Podstawowy (ciągłe), Eco (optymalizacja cenowa / nadwyżka FV), Codzienna trasa (automatyczne zatrzymanie przy celu)

uint8 numeric
Wartości / Stany: Basic · Eco · Daily trip

Tryb ładowania

Odczyt stanu przełącznika
RETURN(PARSEjson(responseJson, "lmo")-3);
Zapis stanu przełącznika
VAR response := SENDHTTPREQUEST("api/set?lmo=" + (Mu+3));
IF response.IsSuccess = false
ADDERROR(response.StatusCode);
END
Bieżące zużycie Zmienna Tylko do odczytu

Całkowita aktywna moc ładowania na wszystkich fazach (W)

numeric Jednostka: W json_path

Bieżące zużycie

Odczyt
VAR a := PARSETEXT (PARSEjson(responseJson, "nrg"), "[", "]");
VAR b := SPLIT(a,",");
RETURN(TODOUBLE(GETAT(b,12)))
Zapis
# 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
Odczyt (moduł)
# 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 Prąd Zmienna Tylko do odczytu
numeric Jednostka: A json_path

L1 Prąd

Odczyt
VAR a := PARSETEXT (PARSEjson(responseJson, "nrg"), "[", "]");
VAR b := SPLIT(a,",");
RETURN(TODOUBLE(GETAT(b,5)))
Zapis
# 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
Odczyt (moduł)
# 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 Napięcie Zmienna Tylko do odczytu
numeric Jednostka: V json_path

L1 Napięcie

Odczyt
VAR a := PARSETEXT (PARSEjson(responseJson, "nrg"), "[", "]");
VAR b := SPLIT(a,",");
RETURN(TODOUBLE(GETAT(b,0)))
Zapis
# 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
Odczyt (moduł)
# 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 Prąd Zmienna Tylko do odczytu
numeric Jednostka: A json_path

L2 Prąd

Odczyt
VAR a := PARSETEXT (PARSEjson(responseJson, "nrg"), "[", "]");
VAR b := SPLIT(a,",");
RETURN(TODOUBLE(GETAT(b,6)))
Zapis
# 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
Odczyt (moduł)
# 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 Napięcie Zmienna Tylko do odczytu
numeric Jednostka: V json_path

L2 Napięcie

Odczyt
VAR a := PARSETEXT (PARSEjson(responseJson, "nrg"), "[", "]");
VAR b := SPLIT(a,",");
RETURN(TODOUBLE(GETAT(b,1)))
Zapis
# 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
Odczyt (moduł)
# 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 Prąd Zmienna Tylko do odczytu
numeric Jednostka: A json_path

L3 Prąd

Odczyt
VAR a := PARSETEXT (PARSEjson(responseJson, "nrg"), "[", "]");
VAR b := SPLIT(a,",");
RETURN(TODOUBLE(GETAT(b,7)))
Zapis
# 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
Odczyt (moduł)
# 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 Napięcie Zmienna Tylko do odczytu
numeric Jednostka: V json_path

L3 Napięcie

Odczyt
VAR a := PARSETEXT (PARSEjson(responseJson, "nrg"), "[", "]");
VAR b := SPLIT(a,",");
RETURN(TODOUBLE(GETAT(b,2)))
Zapis
# 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
Odczyt (moduł)
# 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");
Przełączanie faz Przełącznik wielowartościowy

Konfiguracja faz — Automatyczne (ładowarka decyduje), 1-fazowe (wymuszone), 3-fazowe (wymuszone). Przełączanie możliwe także podczas aktywnego ładowania.

uint8
Wartości / Stany: Automatic · 1-Phase · 3-Phase

Przełączanie faz

Odczyt stanu przełącznika
RETURN(PARSEjson(responseJson, "psm"));
Zapis stanu przełącznika
VAR response := SENDHTTPREQUEST("api/set?psm=" + Mu);
IF response.IsSuccess = false
ADDERROR(response.StatusCode);
END
Moc do sieci Zmienna

Tylko do zapisu — wysyła zewnętrzne dane mocy sieciowej (kW) do ładowarki do obliczeń ładowania nadwyżką

numeric Jednostka: kW json_path

Moc do sieci

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

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

IF response.IsSuccess = false
ADDERROR(response.StatusCode);
END
Odczyt (moduł)
# 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");
Moc FV Zmienna

Tylko do zapisu — wysyła zewnętrzne dane produkcji FV (kW) do ładowarki do obliczeń ładowania nadwyżką

numeric Jednostka: kW json_path

Moc FV

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

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

IF response.IsSuccess = false
ADDERROR(response.StatusCode);
END
Odczyt (moduł)
# 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");
Połączenie: Packet Parser → HTTP
Możliwe ulepszenia (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)

Źródła

  • 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