TapHome

go-e Gemini flex Wallbox

Packet Parser → HTTP
Dodane przez
Ostatnia aktualizacja: 08. 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, trybem ładowania i wymuszonym stanem, przełączanie faz, odczyty napięcia i prądu na poszczególnych fazach, licznik energii 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.

Wymuszony stan

Urządzenie Wymuszony stan nadpisuje własną decyzję ładowarki o tym, czy ma ładować. Klucz API frc przyjmuje wartości Neutralny (0 — decyduje ładowarka), Zatrzymane (1 — ładowanie zablokowane) i Ładuj (2 — ładowanie wymuszone). Wartość zapisywana jest przez api/set?frc={value} i odczytywana z odpowiedzi statusu, dlatego ta wersja szablonu dodaje frc do filtra api/status.

Selektor wymienia również pozycje 3–9 z liczbowymi etykietami zastępczymi odziedziczonymi z szablonu. API go-e nie nadaje im żadnego znaczenia — używaj wyłącznie wartości Neutralny, Zatrzymane i Ładuj.

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[4]A
L2 Prądnrg[5]A
L3 Prądnrg[6]A

Urządzenie Licznik energii ładowarki raportuje całkowitą dostarczoną energię z klucza eto (Wh) oraz chwilowy pobór z nrg[11] podzielony przez 1000. Zastępuje wcześniejsze urządzenie Bieżące zużycie. Wszystkie wartości energetyczne są tylko do odczytu.

Szablon odczytuje prądy fazowe z nrg[4], nrg[5] i nrg[6], a pobór licznika z nrg[11]. Dokumentacja API go-e umieszcza prądy fazowe pod indeksami 5, 6 i 7, moc przewodu neutralnego pod indeksem 11, a moc całkowitą pod indeksem 12 — dokładnie tak działała poprzednia wersja szablonu. Przed użyciem do rozliczeń lub automatyzacji sprawdź odczyty na ładowarce.

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, moc całkowita (nrg[12]), energia sesji (wh), kody stanów błędów, limit prądu kabla, czujniki temperatury, częstotliwość sieci, 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 teraz udostępniony jako urządzenie Licznik energii ładowarki — wartość pobierana w filtrze stanu nie pozostaje już niewykorzystana.

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,frc");

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
Wymuszony stan Przełącznik wielowartościowy

Wymuszenie ładowania — Neutralny pozostawia decyzję ładowarce, Zatrzymane blokuje ładowanie, Ładuj je wymusza

uint8
Wartości / Stany: Neutral · Stopped · Charge

Wymuszony stan

Odczyt stanu przełącznika
RETURN(PARSEjson(responseJson, "frc"));
Zapis stanu przełącznika
VAR response := SENDHTTPREQUEST("api/set?frc=" + (Mu));
IF response.IsSuccess = false
ADDERROR(response.StatusCode);
END
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,4)))
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,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");
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,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");
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");
Licznik energii ładowarki Licznik energii Tylko do odczytu

Licznik energii — całkowita energia dostarczona przez ładowarkę (eto) i chwilowa moc ładowania

numeric Jednostka: kWh json_path

Licznik energii ładowarki

Odczyt całkowitego zużycia
RETURN(PARSEjson(responseJson, "eto"))
Odczyt zapotrzebowania
VAR a := PARSETEXT (PARSEjson(responseJson, "nrg"), "[", "]");
VAR b := SPLIT(a,",");
RETURN(TODOUBLE(GETAT(b,11))/1000)
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) — Individual phase power in W — the template reads only element 11 (demand of the Wallbox Electric Meter)
  • Power Total — Total power in W. The former 'Current consumption' device read this element; the Wallbox Electric Meter that replaced it reads element 11 instead. See inconsistency report
  • Power Factor (L1, L2, L3) — Power factor per phase, available in nrg array
  • 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

Znalazłeś problem z tym szablonem urządzenia?

Napisz nam, co nie działa, czego brakuje lub jak powinien zachowywać się szablon. Twoja opinia pomaga nam utrzymać katalog dokładnym.

Zweryfikowane przez TapHome

Chcesz tego użyć w swoim TapHome Core?

Otwórz ten szablon w portalu klienta, aby zastosować go w swoim domu, lub zaproponuj modyfikację i wyślij ją z powrotem do katalogu.

Otwórz w portalu