---
title: "SolaX X1/X3-HAC EV Charger (Cloud API)"
description: "Moc i energia ładowania, stan i tryb STOP/FAST/ECO/GREEN ładowarek SolaX HAC przez SolaX Developer API. Wymaga Client ID, Secret i SN."
url: "https://taphome.com/pl/compatibility/solax-hac-cloud-api/"
language: pl
lastmod: 2026-11-12
generator: hugo
ai:
  topics: ["http","wallbox","cloud-api","oauth2","ev-charging","solar-surplus-charging"]
  questions: ["Jak zintegrować ładowarkę EV SolaX X1/X3-HAC z TapHome?","Co odczytuje i czym steruje szablon TapHome SolaX HAC Cloud API?","Jak uzyskać Client ID i Client Secret do API SolaX Developer Portal?","Jakiego numeru seryjnego potrzebuje szablon SolaX HAC: Device SN czy Registration No.?","Jak podłączyć ładowarkę SolaX HAC do SolaXCloud przez Wi-Fi, LAN lub 4G?","Dlaczego SolaX Cloud API zwraca w TapHome kod 10402 lub 10406?"]
---

# SolaX X1/X3-HAC EV Charger (Cloud API)

Komunikacja: Packet Parser → HTTP

## Poradnik integracji

Szablon SolaX HAC Cloud API łączy TapHome z ładowarką EV SolaX X1-HAC lub X3-HAC przez API SolaX Developer Portal (OpenAPI). Autor szablonu wymienia także ładowarki A1-HAC i C1/C3-HAC. TapHome nie komunikuje się z ładowarką bezpośrednio: ładowarka przesyła dane do SolaXCloud przez Wi-Fi, LAN lub 4G, a TapHome co 60 sekund odczytuje je z chmury SolaX przez HTTPS. Polecenia zapisu (tryb pracy, start i stop, blokada, limit prądu) wracają do ładowarki tą samą drogą przez chmurę.

Przed importem szablonu muszą być spełnione dwa warunki. Ładowarka musi być online na koncie SolaXCloud, a to konto potrzebuje aplikacji w SolaX Developer Portal, która udostępnia **Client ID** i **Client Secret**. Jeśli ładowarka pracuje obok falownika solarnego SolaX, w tym samym projekcie TapHome może działać szablon [SolaX Inverter (Cloud API)](https://taphome.com/pl/compatibility/solax-inverter/). Korzysta on ze starszego API monitoringu SolaxCloud z własnym tokenem.

## Podłączenie ładowarki do SolaXCloud

### Połączenie sieciowe

Ładowarka ma trzy sposoby połączenia z internetem. Wszystkie korzystają z DHCP, więc router przydziela adres IP automatycznie.

- **Wi-Fi**: tylko 2,4 GHz (802.11 b/g/n). Sieci 5 GHz nie są obsługiwane.
- **Ethernet (LAN)**: port RJ45 **LAN (/ DI)**. Ethernet wykorzystuje piny 1, 2, 3 i 6 (TX+, TX−, RX+, RX−). Gdy potrzebny jest tylko Ethernet, pozostałe piny zostaw niepodłączone. Przy połączeniu LAN konfigurację Wi-Fi można pominąć.
- **4G**: tylko w modelach z „4G” w nazwie (na przykład X3-HAC-22P-B4G). Kartę nano SIM obsługującą Cat-M, NB-IoT lub GSM musi zamontować uprawniony specjalista. SolaX zaleca co najmniej 100 MB danych miesięcznie w scenach Solar i Standard.

![Definicja pinów portów komunikacyjnych ładowarki EV LAN/DI, COM2-M i COM1-S z kolorami żył RJ45](https://taphome.com/images/compatibility/solax-hac-cloud-api/pins-communication-ports_hu_e3a3a34d16605204.jpg)

> [!WARNING]
> Kabel Ethernet do ładowarki musi być zabezpieczony przed wyładowaniami atmosferycznymi. Jeśli potrzebne są zarówno LAN, jak i wejście sygnałowe DI, zaciśnij piny 1, 2, 3 i 6 dla Ethernetu oraz piny 4, 5 i 8 dla DI, a następnie połącz oba kable złączką RJ45 dostarczoną z ładowarką.

Połączenie 4G konfiguruje się w aplikacji SolaXCloud w trybie lokalnym: otwórz **Dongle**, następnie przycisk ustawień, ustaw **Device Networking Mode** na **4G**, wpisz APN operatora i wybierz typ sieci obsługiwany przez kartę SIM.

### Dodanie ładowarki w aplikacji SolaXCloud

1. Zainstaluj aplikację **SolaXCloud** z App Store lub Google Play i zarejestruj konto za pomocą adresu e-mail lub numeru telefonu oraz kodu weryfikacyjnego.
2. Przy pierwszym logowaniu utwórz instalację: zezwól na dostęp do lokalizacji, wpisz nazwę instalacji i dokończ pozostałe ustawienia.
3. Dodaj ładowarkę, skanując lub wpisując **Registration No.** z jej tabliczki znamionowej. Kolejne ładowarki dodasz przez stronę **Device**, ikonę **+**, a następnie **Add Device** lub **Scan**.
4. Wpisz nazwę i hasło sieci Wi-Fi, jeśli ładowarka łączy się przez Wi-Fi.

![Aplikacja SolaXCloud: dodawanie ładowarki EV za pomocą Registration No. z tabliczki znamionowej](https://taphome.com/images/compatibility/solax-hac-cloud-api/add-device-registration-no_hu_4b06cff948b79022.jpg)

Na tabliczce znamionowej są dwa różne numery. **Registration No.** służy do dodania ładowarki w aplikacji i do lokalnego logowania. **SN** (numer seryjny urządzenia) to wartość, której szablon TapHome potrzebuje jako `DeviceSN`. Aplikacja pokazuje SN urządzenia na stronie **Basic information** ładowarki (stuknij górną część strony Details ładowarki). Numer jest też podany w Developer Portal w **Device > Device List**.

### Ponowne połączenie Wi-Fi i dostęp lokalny

Jeśli ładowarka przejdzie w stan offline, otwórz w aplikacji stronę **Device**, stuknij kartę ładowarki oznaczoną jako offline i wybierz **Reconfigure**. Następnie ponownie wpisz sieć 2,4 GHz i hasło.

![Aplikacja SolaXCloud: ponowna konfiguracja Wi-Fi ładowarki EV i logowanie w trybie lokalnym za pomocą Registration No.](https://taphome.com/images/compatibility/solax-hac-cloud-api/wifi-reconfigure_hu_a2a623a4deacb2f4.jpg)

Jeśli ponowna konfiguracja się nie powiedzie, jest drugi sposób. Połącz telefon lub laptop z własną siecią Wi-Fi ładowarki, nazwaną od jej Registration No. (`Wifi_XC…`). Następnie otwórz w przeglądarce `http://192.168.10.10/` i zaloguj się jako `admin`, podając Registration No. jako hasło. Tryb lokalny w aplikacji (**More > Local Access** lub po zalogowaniu **Service > Application > Local Access**) korzysta z tej samej sieci.

> [!NOTE]
> Ładowarka automatycznie wyłącza swoją lokalną sieć Wi-Fi godzinę po udanym połączeniu z siecią. Aby później skorzystać z dostępu lokalnego, włącz tę sieć ponownie w aplikacji w **Network > Local Access**.

### Scena zastosowania i tryby ładowania

Ładowarka pracuje w jednej z trzech scen zastosowania, którą wybierasz w aplikacji w **Advanced setting > Application scene**:

- **Solar** (domyślna): dostępne są tryby ładowania Green, Eco i Fast. Green i Eco wymagają komunikacji ładowarki z falownikiem solarnym albo z przekładnikiem prądowym (CT) lub licznikiem na przyłączu sieciowym, aby ładowarka znała nadwyżkę PV.
- **Standard**: ładowarka tylko uruchamia i zatrzymuje ładowanie. W tej scenie nie ma trybów Green i Eco.
- **OCPP**: ładowarka jest zarządzana przez serwer OCPP, a aplikacja SolaXCloud ukrywa wybór trybu.

![Scena Solar: ładowarka EV SolaX komunikująca się z falownikiem, router Wi-Fi/LAN do chmury, CT/licznik, RCBO i rozdzielnica AC](https://taphome.com/images/compatibility/solax-hac-cloud-api/system-solar-scene-inverter_hu_d5e2ffa4db2be771.jpg)

Falownik solarny podłącza się do portu **COM1-S-** (A1/B1). Licznik lub CT podłącza się do portu **COM2-M-** (A2/B2, wejścia CT na pozostałych pinach). Poziom prądu ładowania dla trybu Green (3 A lub 6 A) i dla trybu Eco (6, 10, 16, 20 lub 25 A) ustawiasz w aplikacji w **Details > Function Control > Charge Level**. W modelach 11 kW tryb Eco oferuje tylko 6 A i 10 A. Ładowanie w trybach Green i Eco wymaga też pojazdu zgodnego z IEC 61851.

## Konfiguracja dostępu do API w SolaX Developer Portal

1. Zaloguj się do [SolaX Developer Portal](https://developer.solaxcloud.com/home) i otwórz **Quick Start** lub **Application**.
2. Utwórz aplikację dla instalacji SolaXCloud, do której należy ładowarka. Aplikacja musi mieć co najmniej jedną autoryzowaną instalację.
3. Na karcie **Authorization** aplikacji skopiuj **Client ID** i **Client Secret**.
4. W **Service API > Authorize** włącz usługi monitoringu **Data Monitoring Service** (`API_Telemetry_V2`) i **Information Access Service** (`API_Info_V2`). Włącz także usługę sterowania ładowarką EV, której potrzebują przełączanie trybu pracy i działania serwisowe. Sam monitoring działa bez niej.
5. Numer seryjny ładowarki znajdziesz w **Device > Device List**. To ten sam SN co w aplikacji SolaXCloud.

> [!WARNING]
> Szablon jest ustawiony na europejski host API `openapi-eu.solaxcloud.com`. SolaX prowadzi osobne hosty dla Chin (`openapi-cn.solaxcloud.com`) i Indii (`openapi-in.solaxcloud.com`). Region konta jest widoczny w Developer Portal. Po imporcie, bez zmian, szablon nie działa z aplikacją z innego regionu.

### Parametry importu

W TapHome zaimportuj szablon i wypełnij trzy poniższe parametry. Wszystko inne (token, odpytywanie, ponowienia) obsługuje moduł.

| Parametr | Opis | Gdzie znaleźć |
|----------|------|---------------|
| `ClientId` | Client ID aplikacji w Developer Portal | Application > **Authorization** |
| `ClientSecret` | Client Secret tej samej aplikacji | Application > **Authorization** |
| `DeviceSN` | Numer seryjny ładowarki (nie Registration No.) | Developer Portal **Device > Device List** lub **Basic information** w aplikacji SolaXCloud |

> [!WARNING]
> Jednej pary Client ID i Client Secret używaj tylko dla jednego klienta. Każda aplikacja ma tylko jeden ważny token dostępu, więc nowe żądanie tokenu unieważnia poprzedni. Druga instancja szablonu TapHome lub inne narzędzie odpytujące z tymi samymi danymi uwierzytelniającymi stale unieważnia token tego szablonu. Dla drugiej ładowarki lub dla innego systemu utwórz osobną aplikację w Developer Portal.

## Możliwości urządzenia

Nazwy urządzeń w szablonie są po słowacku. Poniżej przy każdym z nich podano w nawiasie jego nazwę w aplikacji.

### Moc i energia ładowania

**Moc ładowania** (`Nabíjací výkon`) to licznik elektryczny. Pokazuje bieżącą moc ładowania w kW i całkowitą energię ładowania w kWh. Jego atrybuty serwisowe pokazują energię bieżącej sesji (`Energia aktuálnej relácie [kWh]`), prądy fazowe L1, L2 i L3 (`Prúd L1 [A]`, `Prúd L2 [A]`, `Prúd L3 [A]`) oraz prąd jednofazowy (`Jednofázový prúd [A]`).

### Stan ładowania i kod stanu

- **Ładowanie w toku** (`Nabíjanie prebieha`) to kontaktron. Jest włączony (`Nabíja`) tylko wtedy, gdy ładowarka zgłasza stan Charging. W każdym innym stanie jest wyłączony (`Nenabíja`), także w stanach Suspended EV i Suspended EVSE.
- **Stan ładowarki** (`Stav nabíjačky`) to surowy kod stanu ładowarki:

| Kod | Stan | Kod | Stan |
|-----|------|-----|------|
| 0 | Available | 7 | Suspended EV |
| 1 | Preparing | 8 | Suspended EVSE |
| 2 | Charging | 9 | Update |
| 3 | Finishing | 10 | Card Activation |
| 4 | Faulted | 11 | Start Delay |
| 5 | Unavailable | 12 | Charge Pause |
| 6 | Reserved | 13 | Stopping |

### Tryb pracy

**Tryb pracy** (`Pracovný režim`) to przełącznik wielowartościowy z czterema wartościami: **STOP**, **FAST**, **ECO** i **GREEN**. Odczytuje bieżący tryb ładowarki i ustawia nowy z TapHome. ECO i GREEN działają tak, jak opisano wyżej przy scenie Solar, i zależą od komunikacji ładowarki z falownikiem solarnym lub licznikiem.

### Działania serwisowe

Urządzenie stanu ładowarki ma cztery działania serwisowe:

- **Uruchom ładowanie** (`Spustiť nabíjanie`) i **Zatrzymaj ładowanie** (`Zastaviť nabíjanie`).
- **Zablokuj / udostępnij** (`Zamknúť / sprístupniť nabíjačku`), z wartościami Zablokuj (`Zamknúť`) i Udostępnij (`Sprístupniť`).
- **Ustaw limit prądu** (`Nastaviť limit prúdu`): 6–32 A w modelach 7 kW i 22 kW, 6–16 A w modelu 11 kW.

Polecenia są asynchroniczne. Odpowiedź „OK, príkaz odoslaný” oznacza, że chmura SolaX przyjęła polecenie, a nie że ładowarka już je wykonała. Wynik pojawia się w odczytach kolejnych cykli.

### Historia kart i sesji na wykresach

- **Karta RFID** (`RFID karta`) pokazuje numer karty, która rozpoczęła sesję, lub 0, gdy karta nie jest używana.
- **Czas ładowania sesji** (`Čas nabíjania relácie`) pokazuje czas trwania bieżącej sesji w minutach.

API SolaX nie udostępnia historii kart. Gdy włączysz wykresy dla tych dwóch zmiennych, TapHome sam zbuduje historię: która karta ładowała, kiedy i jak długo, z rozdzielczością 60 sekund. Karty są używane tylko wtedy, gdy tryb aktywacji ładowarki w aplikacji SolaXCloud jest ustawiony na **RFID** (**Charger setting > Activation mode**). Domyślny tryb **Plug & Charge** nie używa karty.

## Rozwiązywanie problemów

### Brak danych lub błąd uwierzytelniania na module

- Sprawdź, czy ładowarka jest online w aplikacji SolaXCloud. Ikona serwera na wyświetlaczu ładowarki pokazuje, czy jest połączona z SolaXCloud.
- Porównaj `ClientId` i `ClientSecret` z kartą **Authorization**. Secret wygenerowany ponownie w portalu trzeba wpisać od nowa.
- Sprawdź, czy `DeviceSN` to numer seryjny ładowarki, a nie Registration No.
- Sprawdź, czy aplikacja ma autoryzowaną instalację z ładowarką i czy usługi monitoringu są autoryzowane. Kod API **10403** oznacza, że usługa API nie ma praw dostępu. Kod **10500** oznacza, że aplikacja nie ma uprawnień do danych tego urządzenia.
- Kody **10400** i **10402** oznaczają, że token jest nieważny. Moduł żąda nowego tokenu i powtarza odczyt w tym samym cyklu. Jeśli moduł nadal zgłasza błąd z tekstem „aj po obnove tokenu” („nawet po odnowieniu tokenu”), dane uwierzytelniające lub autoryzowane usługi są błędne.

### Odczyty przestają się zmieniać

Kody **10405** i **10406** oznaczają, że osiągnięto limit wywołań API. Moduł wyświetla ostrzeżenie i zachowuje wartości z ostatniego udanego cyklu. Szablon wysyła jedno zapytanie na minutę. Inne narzędzia odczytujące to samo konto SolaX liczą się do tego samego limitu.

### Tryb pracy lub działania serwisowe kończą się błędem

- Działanie serwisowe zwraca tekst `SolaX API kód <code>`, gdy chmura odrzuci polecenie. Kod **10403** (brak praw dostępu do interfejsu) może oznaczać, że usługa sterowania ładowarką EV nie jest autoryzowana dla aplikacji.
- ECO i GREEN działają tylko w scenie Solar i wymagają działającego połączenia z falownikiem solarnym lub z CT/licznikiem. W scenie Standard ładowarka tylko uruchamia i zatrzymuje ładowanie.

### Instalacje komercyjne

Szablon odczytuje ładowarkę jako część instalacji domowej (`businessType=1`). Według autora szablonu ładowarka w instalacji komercyjnej i przemysłowej wymaga wartości 4, a jej wartości mocy są wtedy podawane w kW zamiast w W.

## Dostępne urządzenia 6

Te urządzenia pojawią się w TapHome po imporcie.

SolaX Cloud API Moduł

Zmienne niestandardowe

|                         |
|-------------------------|
| `AccessToken` (string)  |
| `RealtimeData` (string) |
| `ClientId` (string)     |
| `ClientSecret` (string) |
| `DeviceSN` (string)     |

Odczyt (moduł)

```taphome
IF LENGTH(AccessToken) = 0
    VAR tokenBody := "client_id=" + ClientId + "&client_secret=" + ClientSecret + "&grant_type=client_credentials";
    VAR tokenResponse := SENDHTTPREQUEST("/openapi/auth/oauth/token", "POST", tokenBody, "Content-Type: application/x-www-form-urlencoded");
    IF tokenResponse.IsSuccess
        VAR newToken := PARSEJSON(tokenResponse.Content, "$.result.access_token", true);
        IF !ISNULL(newToken)
            AccessToken := newToken;
        ELSE
            ADDERROR(1, "SolaX auth: odpoveď bez access_token");
        END
    ELSE
        ADDERROR(1, "SolaX auth zlyhala: HTTP " + tokenResponse.StatusCode);
    END
END

IF LENGTH(AccessToken) > 0
    VAR rtResponse := SENDHTTPREQUEST("/openapi/v2/device/realtime_data?snList=" + DeviceSN + "&deviceType=4&businessType=1", "GET", "", "Authorization: bearer " + AccessToken);
    IF rtResponse.IsSuccess
        VAR rtCode := PARSEJSON(rtResponse.Content, "$.code", true);
        IF rtCode = 10000
            RealtimeData := rtResponse.Content;
        ELSEIF rtCode = 10400 | rtCode = 10402
            VAR tokenBody2 := "client_id=" + ClientId + "&client_secret=" + ClientSecret + "&grant_type=client_credentials";
            VAR tokenResponse2 := SENDHTTPREQUEST("/openapi/auth/oauth/token", "POST", tokenBody2, "Content-Type: application/x-www-form-urlencoded");
            AccessToken := "";
            IF tokenResponse2.IsSuccess
                VAR newToken2 := PARSEJSON(tokenResponse2.Content, "$.result.access_token", true);
                IF !ISNULL(newToken2)
                    AccessToken := newToken2;
                    rtResponse := SENDHTTPREQUEST("/openapi/v2/device/realtime_data?snList=" + DeviceSN + "&deviceType=4&businessType=1", "GET", "", "Authorization: bearer " + AccessToken);
                    IF rtResponse.IsSuccess
                        rtCode := PARSEJSON(rtResponse.Content, "$.code", true);
                        IF rtCode = 10000
                            RealtimeData := rtResponse.Content;
                        ELSE
                            ADDERROR(2, "SolaX API kód " + rtCode + " aj po obnove tokenu");
                        END
                    END
                END
            END
        ELSEIF rtCode = 10405 | rtCode = 10406
            ADDWARNING("SolaX limit volaní API (kód " + rtCode + "), zobrazujú sa dáta z minulého cyklu");
        ELSE
            ADDWARNING("SolaX prechodná chyba, kód " + rtCode);
        END
    ELSE
        ADDERROR(3, "Chyba čítania dát: HTTP " + rtResponse.StatusCode);
    END
END
```

Nabíjací výkon Licznik energii

Atrybuty serwisowe

|                                  |
|----------------------------------|
| Energia aktuálnej relácie \[kWh] |
| Prúd L1 \[A]                     |
| Prúd L2 \[A]                     |
| Prúd L3 \[A]                     |
| Jednofázový prúd \[A]            |

Odczyt całkowitego zużycia

```taphome
PARSEJSON(RealtimeData, "$.result[0].totalChargeEnergy", true)
```

Odczyt zapotrzebowania

```taphome
PARSEJSON(RealtimeData, "$.result[0].chargingPower", true) / 1000
```

Atrybuty serwisowe

Energia aktuálnej relácie \[kWh]

```taphome
PARSEJSON(RealtimeData, "$.result[0].chargingEnergyThisSession", true)
```

Prúd L1 \[A]

```taphome
PARSEJSON(RealtimeData, "$.result[0].l1Current", true)
```

Prúd L2 \[A]

```taphome
PARSEJSON(RealtimeData, "$.result[0].l2Current", true)
```

Prúd L3 \[A]

```taphome
PARSEJSON(RealtimeData, "$.result[0].l3Current", true)
```

Jednofázový prúd \[A]

```taphome
PARSEJSON(RealtimeData, "$.result[0].singlePhaseCurrent", true)
```

Nabíjanie prebieha Kontakt reed

Odczyt

```taphome
VAR status := PARSEJSON(RealtimeData, "$.result[0].deviceStatus", true);
IF ISNULL(status)
    RETURN(0);
END
IF status = 2
    RETURN(1);
END
RETURN(0);
```

Stav nabíjačky Zmienna

Akcje serwisowe

|                                 |
|---------------------------------|
| Spustiť nabíjanie               |
| Zastaviť nabíjanie              |
| Zamknúť / sprístupniť nabíjačku |
| Nastaviť limit prúdu            |

Odczyt

```taphome
PARSEJSON(RealtimeData, "$.result[0].deviceStatus", true)
```

Akcje serwisowe

Spustiť nabíjanie

```taphome
VAR body := "{\"snList\":[\"" + DeviceSN + "\"],\"workCmd\":2,\"workMode\":2,\"businessType\":1}";
VAR r := SENDHTTPREQUEST("/openapi/v2/device/evc_control/set_evc_charge_command", "POST", body, "Authorization: bearer " + AccessToken, "Content-Type: application/json");
VAR c := 0;
IF r.IsSuccess
    c := PARSEJSON(r.Content, "$.code", true);
    IF c = 10400 | c = 10402
        VAR tb := "client_id=" + ClientId + "&client_secret=" + ClientSecret + "&grant_type=client_credentials";
        VAR tr := SENDHTTPREQUEST("/openapi/auth/oauth/token", "POST", tb, "Content-Type: application/x-www-form-urlencoded");
        IF tr.IsSuccess
            VAR nt := PARSEJSON(tr.Content, "$.result.access_token", true);
            IF !ISNULL(nt)
                AccessToken := nt;
                r := SENDHTTPREQUEST("/openapi/v2/device/evc_control/set_evc_charge_command", "POST", body, "Authorization: bearer " + AccessToken, "Content-Type: application/json");
                IF r.IsSuccess
                    c := PARSEJSON(r.Content, "$.code", true);
                END
            END
        END
    END
    IF c = 10000
        RETURN("OK, príkaz odoslaný");
    END
    RETURN("SolaX API kód " + c);
END
ADDERROR(r.StatusCode);
RETURN("Chyba");
```

Zastaviť nabíjanie

```taphome
VAR body := "{\"snList\":[\"" + DeviceSN + "\"],\"workCmd\":3,\"workMode\":3,\"businessType\":1}";
VAR r := SENDHTTPREQUEST("/openapi/v2/device/evc_control/set_evc_charge_command", "POST", body, "Authorization: bearer " + AccessToken, "Content-Type: application/json");
VAR c := 0;
IF r.IsSuccess
    c := PARSEJSON(r.Content, "$.code", true);
    IF c = 10400 | c = 10402
        VAR tb := "client_id=" + ClientId + "&client_secret=" + ClientSecret + "&grant_type=client_credentials";
        VAR tr := SENDHTTPREQUEST("/openapi/auth/oauth/token", "POST", tb, "Content-Type: application/x-www-form-urlencoded");
        IF tr.IsSuccess
            VAR nt := PARSEJSON(tr.Content, "$.result.access_token", true);
            IF !ISNULL(nt)
                AccessToken := nt;
                r := SENDHTTPREQUEST("/openapi/v2/device/evc_control/set_evc_charge_command", "POST", body, "Authorization: bearer " + AccessToken, "Content-Type: application/json");
                IF r.IsSuccess
                    c := PARSEJSON(r.Content, "$.code", true);
                END
            END
        END
    END
    IF c = 10000
        RETURN("OK, príkaz odoslaný");
    END
    RETURN("SolaX API kód " + c);
END
ADDERROR(r.StatusCode);
RETURN("Chyba");
```

Zamknúť / sprístupniť nabíjačku

Parametry: Stav

```taphome
VAR body := "{\"snList\":[\"" + DeviceSN + "\"],\"workCmd\":" + lockCmd + ",\"workMode\":" + lockCmd + ",\"businessType\":1}";
VAR r := SENDHTTPREQUEST("/openapi/v2/device/evc_control/set_evc_charge_command", "POST", body, "Authorization: bearer " + AccessToken, "Content-Type: application/json");
VAR c := 0;
IF r.IsSuccess
    c := PARSEJSON(r.Content, "$.code", true);
    IF c = 10400 | c = 10402
        VAR tb := "client_id=" + ClientId + "&client_secret=" + ClientSecret + "&grant_type=client_credentials";
        VAR tr := SENDHTTPREQUEST("/openapi/auth/oauth/token", "POST", tb, "Content-Type: application/x-www-form-urlencoded");
        IF tr.IsSuccess
            VAR nt := PARSEJSON(tr.Content, "$.result.access_token", true);
            IF !ISNULL(nt)
                AccessToken := nt;
                r := SENDHTTPREQUEST("/openapi/v2/device/evc_control/set_evc_charge_command", "POST", body, "Authorization: bearer " + AccessToken, "Content-Type: application/json");
                IF r.IsSuccess
                    c := PARSEJSON(r.Content, "$.code", true);
                END
            END
        END
    END
    IF c = 10000
        RETURN("OK, príkaz odoslaný");
    END
    RETURN("SolaX API kód " + c);
END
ADDERROR(r.StatusCode);
RETURN("Chyba");
```

Nastaviť limit prúdu

Parametry: Limit prúdu \[A] (7/22 kW: 6-32, 11 kW: 6-16) (6–32 iLim)

```taphome
VAR body := "{\"snList\":[\"" + DeviceSN + "\"],\"currentLimit\":" + iLim + ",\"businessType\":1}";
VAR r := SENDHTTPREQUEST("/openapi/v2/device/evc_control/set_evc_current_limit", "POST", body, "Authorization: bearer " + AccessToken, "Content-Type: application/json");
VAR c := 0;
IF r.IsSuccess
    c := PARSEJSON(r.Content, "$.code", true);
    IF c = 10400 | c = 10402
        VAR tb := "client_id=" + ClientId + "&client_secret=" + ClientSecret + "&grant_type=client_credentials";
        VAR tr := SENDHTTPREQUEST("/openapi/auth/oauth/token", "POST", tb, "Content-Type: application/x-www-form-urlencoded");
        IF tr.IsSuccess
            VAR nt := PARSEJSON(tr.Content, "$.result.access_token", true);
            IF !ISNULL(nt)
                AccessToken := nt;
                r := SENDHTTPREQUEST("/openapi/v2/device/evc_control/set_evc_current_limit", "POST", body, "Authorization: bearer " + AccessToken, "Content-Type: application/json");
                IF r.IsSuccess
                    c := PARSEJSON(r.Content, "$.code", true);
                END
            END
        END
    END
    IF c = 10000
        RETURN("OK, príkaz odoslaný");
    END
    RETURN("SolaX API kód " + c);
END
ADDERROR(r.StatusCode);
RETURN("Chyba");
```

RFID karta Zmienna

Odczyt

```taphome
VAR rfid := PARSEJSON(RealtimeData, "$.result[0].rfidnumber", true);
IF ISNULL(rfid)
    RETURN(0);
END
RETURN(rfid);
```

Čas nabíjania relácie Zmienna

Odczyt

```taphome
VAR t := PARSEJSON(RealtimeData, "$.result[0].chargingTimeThisSession", true);
IF ISNULL(t)
    RETURN(0);
END
RETURN(t / 60);
```

Pracovný režim Przełącznik wielowartościowy

Wartości / Stany: STOP · FAST · ECO · GREEN

Odczyt stanu przełącznika

```taphome
VAR mode := PARSEJSON(RealtimeData, "$.result[0].deviceWorkingMode", true);
IF ISNULL(mode)
    RETURN(0);
END
RETURN(mode);
```

Zapis stanu przełącznika

```taphome
VAR body := "{\"snList\":[\"" + DeviceSN + "\"],\"workMode\":" + Mu + ",\"businessType\":1}";
VAR r := SENDHTTPREQUEST("/openapi/v2/device/evc_control/set_evc_work_mode", "POST", body, "Authorization: bearer " + AccessToken, "Content-Type: application/json");
VAR c := 0;
IF r.IsSuccess
    c := PARSEJSON(r.Content, "$.code", true);
    IF c = 10400 | c = 10402
        VAR tb := "client_id=" + ClientId + "&client_secret=" + ClientSecret + "&grant_type=client_credentials";
        VAR tr := SENDHTTPREQUEST("/openapi/auth/oauth/token", "POST", tb, "Content-Type: application/x-www-form-urlencoded");
        IF tr.IsSuccess
            VAR nt := PARSEJSON(tr.Content, "$.result.access_token", true);
            IF !ISNULL(nt)
                AccessToken := nt;
                r := SENDHTTPREQUEST("/openapi/v2/device/evc_control/set_evc_work_mode", "POST", body, "Authorization: bearer " + AccessToken, "Content-Type: application/json");
                IF r.IsSuccess
                    c := PARSEJSON(r.Content, "$.code", true);
                END
            END
        END
    END
    IF c != 10000
        ADDERROR(1, "SolaX API kód " + c);
    END
ELSE
    ADDERROR(r.StatusCode);
END
```

**Połączenie:** Packet Parser → HTTP

## Parametry importu

Te wartości podajesz podczas importu pliku XML.

| Pytanie w aplikacji                                   | Domyślnie           |
|-------------------------------------------------------|---------------------|
| ClientId: ID klienta z SolaX Developer Portálu        | Podaj przy imporcie |
| ClientSecret: Client Secret z SolaX Developer Portálu | Podaj przy imporcie |
| DeviceSN: Sériové číslo nabíjačky (Device SN)         | Podaj przy imporcie |

## Powiązana dokumentacja

- [Integracja Packet Parser](https://taphome.com/pl/compatibility/packet-parser-guide/)
- [Packet Parser (HTTP, TCP, UDP, FTP, MQTT)](https://taphome.com/pl/docs/integration/packet-parser/)
- [Funkcje Packet parser](https://taphome.com/pl/docs/script/packet-parser/)
- [Funkcje parsowania](https://taphome.com/pl/docs/script/parsing-functions/)

