---
title: "SolaX X1/X3-HAC EV Charger (Cloud API)"
description: "Potenza di carica, energia, stato e modalità STOP/FAST/ECO/GREEN delle wallbox SolaX HAC tramite SolaX Developer API. Servono Client ID, Secret e SN."
url: "https://taphome.com/it/compatibility/solax-hac-cloud-api/"
language: it
lastmod: 2026-11-12
generator: hugo
ai:
  topics: ["http","wallbox","cloud-api","oauth2","ev-charging","solar-surplus-charging"]
  questions: ["Come integrare una wallbox SolaX X1/X3-HAC con TapHome?","Cosa legge e controlla il template TapHome SolaX HAC Cloud API?","Come ottenere Client ID e Client Secret per l'API del SolaX Developer Portal?","Quale numero di serie richiede il template SolaX HAC: Device SN o Registration No.?","Come collegare la wallbox SolaX HAC a SolaXCloud tramite Wi-Fi, LAN o 4G?","Perché la SolaX Cloud API restituisce il codice 10402 o 10406 in TapHome?"]
---

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

Comunicazione: Packet Parser → HTTP

## Guida all'integrazione

Il template SolaX HAC Cloud API collega TapHome a una wallbox SolaX X1-HAC o X3-HAC per veicoli elettrici tramite l'API del SolaX Developer Portal (OpenAPI). L'autore del template indica anche i caricatori A1-HAC e C1/C3-HAC. TapHome non comunica direttamente con il caricatore: il caricatore invia i dati a SolaXCloud tramite Wi-Fi, LAN o 4G, e TapHome li legge dal cloud SolaX tramite HTTPS ogni 60 secondi. I comandi di scrittura (modalità di funzionamento, avvio e arresto, blocco, limite di corrente) tornano al caricatore attraverso il cloud nello stesso modo.

Prima di importare il template devono essere soddisfatte due condizioni. Il caricatore deve essere online in un account SolaXCloud, e per questo account serve un'applicazione nel SolaX Developer Portal che fornisce **Client ID** e **Client Secret**. Se il caricatore lavora insieme a un inverter SolaX, nello stesso progetto TapHome può funzionare anche il template [SolaX Inverter (Cloud API)](https://taphome.com/it/compatibility/solax-inverter/). Questo utilizza la precedente API di monitoraggio SolaxCloud con un proprio token.

## Collegamento del caricatore a SolaXCloud

### Connessione di rete

Il caricatore offre tre modi per connettersi a internet. Tutti utilizzano DHCP, quindi il router assegna l'indirizzo IP automaticamente.

- **Wi-Fi**: solo 2,4 GHz (802.11 b/g/n). Le reti a 5 GHz non sono supportate.
- **Ethernet (LAN)**: la porta RJ45 **LAN (/ DI)**. Ethernet utilizza i pin 1, 2, 3 e 6 (TX+, TX−, RX+, RX−). Se serve solo Ethernet, lasciare scollegati gli altri pin. Con una connessione LAN la configurazione Wi-Fi può essere saltata.
- **4G**: solo per i modelli con "4G" nel nome (ad esempio X3-HAC-22P-B4G). Un tecnico autorizzato deve installare una nano SIM che supporti Cat-M, NB-IoT o GSM. SolaX consiglia almeno 100 MB di dati al mese negli scenari Solar e Standard.

![Definizione dei pin delle porte di comunicazione LAN/DI, COM2-M e COM1-S del caricatore EV con i colori dei fili RJ45](https://taphome.com/images/compatibility/solax-hac-cloud-api/pins-communication-ports_hu_e3a3a34d16605204.jpg)

> [!WARNING]
> Il cavo Ethernet verso il caricatore deve essere protetto dai fulmini. Se servono sia la LAN sia l'ingresso di segnale DI, crimpare i pin 1, 2, 3 e 6 per Ethernet e i pin 4, 5 e 8 per DI, quindi unire i due cavi con il connettore di giunzione RJ45 fornito con il caricatore.

La connessione 4G si configura nell'app SolaXCloud in modalità locale: aprire **Dongle**, poi il pulsante delle impostazioni, impostare **Device Networking Mode** su **4G**, inserire l'APN dell'operatore e scegliere il tipo di rete supportato dalla SIM.

### Aggiunta del caricatore nell'app SolaXCloud

1. Installare l'app **SolaXCloud** dall'App Store o da Google Play e registrare un account con un indirizzo e-mail o un numero di telefono e un codice di verifica.
2. Al primo accesso, creare un impianto (plant): consentire l'accesso alla posizione, inserire il nome dell'impianto e completare le altre impostazioni.
3. Aggiungere il caricatore scansionando o digitando il **Registration No.** riportato sulla targhetta. I caricatori aggiunti in seguito passano dalla pagina **Device**, dall'icona **+**, poi da **Add Device** o **Scan**.
4. Se il caricatore si connette tramite Wi-Fi, inserire il nome e la password della rete Wi-Fi.

![App SolaXCloud: aggiunta del caricatore EV tramite il Registration No. riportato sulla targhetta](https://taphome.com/images/compatibility/solax-hac-cloud-api/add-device-registration-no_hu_4b06cff948b79022.jpg)

La targhetta riporta due numeri diversi. Il **Registration No.** serve per aggiungere il caricatore nell'app e per l'accesso locale. Il **SN** (numero di serie del dispositivo) è quello che il template TapHome richiede come `DeviceSN`. L'app mostra l'SN del dispositivo nella pagina **Basic information** del caricatore (toccare la parte superiore della pagina Details del caricatore). È riportato anche nel Developer Portal in **Device > Device List**.

### Riconnessione Wi-Fi e accesso locale

Se il caricatore va offline, aprire la pagina **Device** nell'app, toccare la scheda del caricatore contrassegnata come offline e scegliere **Reconfigure**. Quindi inserire di nuovo la rete a 2,4 GHz e la password.

![App SolaXCloud: riconfigurazione del Wi-Fi del caricatore EV e accesso in modalità locale tramite Registration No.](https://taphome.com/images/compatibility/solax-hac-cloud-api/wifi-reconfigure_hu_a2a623a4deacb2f4.jpg)

Se la riconfigurazione non riesce, c'è un secondo modo. Collegare un telefono o un portatile alla rete Wi-Fi propria del caricatore, che prende il nome dal suo Registration No. (`Wifi_XC…`). Quindi aprire `http://192.168.10.10/` in un browser e accedere come `admin`, con il Registration No. come password. La modalità locale nell'app (**More > Local Access**, oppure **Service > Application > Local Access** da utente connesso) utilizza la stessa rete.

> [!NOTE]
> Il caricatore spegne automaticamente la propria rete Wi-Fi locale un'ora dopo essersi collegato correttamente alla rete. Per usare l'accesso locale in seguito, riattivare la rete nell'app in **Network > Local Access**.

### Scenario di applicazione e modalità di carica

Il caricatore funziona in uno dei tre scenari di applicazione, scelto nell'app in **Advanced setting > Application scene**:

- **Solar** (predefinito): sono disponibili le modalità di carica Green, Eco e Fast. Green ed Eco richiedono che il caricatore comunichi con l'inverter, oppure con un CT (trasformatore di corrente) o un contatore sul punto di connessione alla rete, per conoscere il surplus fotovoltaico.
- **Standard**: il caricatore si limita ad avviare e arrestare la carica. Green ed Eco non esistono in questo scenario.
- **OCPP**: il caricatore è gestito tramite un server OCPP, e l'app SolaXCloud nasconde la selezione della modalità.

![Scenario Solar: caricatore EV SolaX in comunicazione con l'inverter, router Wi-Fi/LAN verso il cloud, CT/contatore, RCBO e quadro di distribuzione AC](https://taphome.com/images/compatibility/solax-hac-cloud-api/system-solar-scene-inverter_hu_d5e2ffa4db2be771.jpg)

L'inverter si collega alla porta **COM1-S-** (A1/B1). Un contatore o un CT si collega alla porta **COM2-M-** (A2/B2, ingressi CT sugli altri pin). Il livello della corrente di carica per la modalità Green (3 A o 6 A) e per la modalità Eco (6, 10, 16, 20 o 25 A) si imposta nell'app in **Details > Function Control > Charge Level**. Sui modelli da 11 kW, Eco offre solo 6 A e 10 A. La carica Green ed Eco richiede inoltre un veicolo conforme alla norma IEC 61851.

## Configurazione dell'accesso API nel SolaX Developer Portal

1. Accedere al [SolaX Developer Portal](https://developer.solaxcloud.com/home) e aprire **Quick Start** o **Application**.
2. Creare un'applicazione per l'impianto SolaXCloud che contiene il caricatore. L'applicazione deve avere almeno un impianto autorizzato.
3. Nella scheda **Authorization** dell'applicazione, copiare **Client ID** e **Client Secret**.
4. In **Service API > Authorize**, abilitare i servizi di monitoraggio **Data Monitoring Service** (`API_Telemetry_V2`) e **Information Access Service** (`API_Info_V2`). Abilitare anche il servizio di controllo del caricatore EV, necessario per il selettore della modalità di funzionamento e per le azioni di servizio. Il solo monitoraggio funziona anche senza.
5. Trovare il numero di serie del caricatore in **Device > Device List**. È lo stesso SN dell'app SolaXCloud.

> [!WARNING]
> Il template è impostato sull'host API europeo `openapi-eu.solaxcloud.com`. SolaX gestisce host separati per la Cina (`openapi-cn.solaxcloud.com`) e per l'India (`openapi-in.solaxcloud.com`). La regione dell'account è indicata nel Developer Portal. Così come viene importato, il template non funziona con un'applicazione di un'altra regione.

### Parametri di importazione

In TapHome, importare il template e compilare i tre parametri seguenti. Tutto il resto (token, polling, nuovi tentativi) è gestito dal modulo.

| Parametro | Descrizione | Dove trovarlo |
|-----------|-------------|------------------|
| `ClientId` | Client ID dell'applicazione nel Developer Portal | Application > **Authorization** |
| `ClientSecret` | Client Secret della stessa applicazione | Application > **Authorization** |
| `DeviceSN` | Numero di serie del caricatore (non il Registration No.) | Developer Portal **Device > Device List**, oppure **Basic information** nell'app SolaXCloud |

> [!WARNING]
> Usare una coppia Client ID e Client Secret per un solo client. Ogni applicazione ha un solo token di accesso valido, quindi una nuova richiesta di token annulla quello precedente. Una seconda istanza del template TapHome, o un altro strumento che interroga con le stesse credenziali, continua ad annullare il token di questo template. Per un secondo caricatore, o per un altro sistema, creare un'applicazione separata nel Developer Portal.

## Funzionalità del dispositivo

I nomi dei dispositivi nel template sono in slovacco. Ognuno è riportato qui sotto con il suo nome nell'app tra parentesi.

### Potenza ed energia di carica

**Potenza di carica** (`Nabíjací výkon`) è un contatore elettrico. Mostra la potenza di carica attuale in kW e l'energia caricata totale in kWh. I suoi attributi di servizio mostrano l'energia della sessione in corso (`Energia aktuálnej relácie [kWh]`), le correnti di fase L1, L2 e L3 (`Prúd L1 [A]`, `Prúd L2 [A]`, `Prúd L3 [A]`) e la corrente monofase (`Jednofázový prúd [A]`).

### Stato di carica e codice di stato

- **Carica in corso** (`Nabíjanie prebieha`) è un contatto. È attivo (`Nabíja`) solo mentre il caricatore segnala lo stato Charging. In ogni altro stato è disattivo (`Nenabíja`), inclusi Suspended EV e Suspended EVSE.
- **Stato del caricatore** (`Stav nabíjačky`) è il codice di stato grezzo del caricatore:

| Codice | Stato | Codice | Stato |
|------|--------|------|--------|
| 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 |

### Modalità di funzionamento

**Modalità di funzionamento** (`Pracovný režim`) è un selettore multi-valore con quattro valori: **STOP**, **FAST**, **ECO** e **GREEN**. Legge la modalità attuale del caricatore e ne imposta una nuova da TapHome. ECO e GREEN si comportano come descritto sopra per lo scenario Solar e dipendono dalla comunicazione del caricatore con l'inverter o con il contatore.

### Azioni di servizio

Il dispositivo di stato del caricatore dispone di quattro azioni di servizio:

- **Avvia carica** (`Spustiť nabíjanie`) e **Arresta carica** (`Zastaviť nabíjanie`).
- **Blocca / rendi disponibile** (`Zamknúť / sprístupniť nabíjačku`), con i valori Blocca (`Zamknúť`) e Rendi disponibile (`Sprístupniť`).
- **Imposta limite di corrente** (`Nastaviť limit prúdu`): 6–32 A sui modelli da 7 kW e 22 kW, 6–16 A sul modello da 11 kW.

I comandi sono asincroni. La risposta "OK, príkaz odoslaný" significa che il cloud SolaX ha accettato il comando, non che il caricatore lo abbia già eseguito. Il risultato compare nelle letture dei cicli successivi.

### Cronologia delle carte e delle sessioni nei grafici

- **Carta RFID** (`RFID karta`) mostra il numero della carta che ha avviato la sessione, oppure 0 quando non si usa alcuna carta.
- **Tempo di carica della sessione** (`Čas nabíjania relácie`) mostra la durata della sessione in corso in minuti.

L'API SolaX non fornisce una cronologia delle carte. Con i grafici (Charts) abilitati su queste due variabili, TapHome costruisce da sé la cronologia: quale carta ha caricato, quando e per quanto tempo, con una risoluzione di 60 secondi. Le carte vengono usate solo quando la modalità di attivazione del caricatore è impostata su **RFID** nell'app SolaXCloud (**Charger setting > Activation mode**). La modalità predefinita **Plug & Charge** non usa carte.

## Risoluzione dei problemi

### Nessun dato o errore di autenticazione sul modulo

- Verificare che il caricatore sia online nell'app SolaXCloud. L'icona del server sul display del caricatore indica se è connesso a SolaXCloud.
- Confrontare `ClientId` e `ClientSecret` con la scheda **Authorization**. Un secret rigenerato nel portale deve essere inserito di nuovo.
- Verificare che `DeviceSN` sia il numero di serie del caricatore, non il Registration No.
- Verificare che l'applicazione abbia un impianto autorizzato con il caricatore e che i servizi di monitoraggio siano autorizzati. Un codice API **10403** significa che il servizio API non ha diritti di accesso. Un codice **10500** significa che l'applicazione non ha l'autorizzazione per i dati di questo dispositivo.
- I codici **10400** e **10402** indicano che il token non è valido. Il modulo richiede un nuovo token e ripete la lettura nello stesso ciclo. Se il modulo segnala ancora un errore con il testo "aj po obnove tokenu" ("anche dopo il rinnovo del token"), le credenziali o i servizi autorizzati sono errati.

### Le letture smettono di cambiare

I codici **10405** e **10406** indicano che è stato raggiunto il limite di chiamate API. Il modulo mostra un avviso e mantiene i valori dell'ultimo ciclo riuscito. Il template effettua una richiesta al minuto. Altri strumenti che leggono lo stesso account SolaX consumano lo stesso limite.

### La modalità di funzionamento o le azioni non funzionano

- Un'azione di servizio restituisce il testo `SolaX API kód <code>` quando il cloud rifiuta il comando. Un codice **10403** (nessun diritto di accesso all'interfaccia) può significare che il servizio di controllo del caricatore EV non è autorizzato per l'applicazione.
- ECO e GREEN funzionano solo nello scenario Solar e richiedono una connessione funzionante con l'inverter o con il CT/contatore. Nello scenario Standard il caricatore si limita ad avviare e arrestare la carica.

### Installazioni commerciali

Il template legge il caricatore come parte di un impianto residenziale (`businessType=1`). Secondo l'autore del template, un caricatore in un impianto commerciale e industriale richiede il valore 4, e i suoi valori di potenza sono allora in kW anziché in W.

## Dispositivi disponibili 6

Questi dispositivi compaiono in TapHome dopo l'importazione.

SolaX Cloud API Modulo

Variabili personalizzate

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

Lettura (modulo)

```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 Contatore elettrico

Attributi di servizio

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

Lettura consumo totale

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

Lettura domanda

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

Attributi di servizio

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 Contatto reed

Lettura

```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 Variabile

Azioni di servizio

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

Lettura

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

Azioni di servizio

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

Parametri: 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

Parametri: 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 Variabile

Lettura

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

Čas nabíjania relácie Variabile

Lettura

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

Pracovný režim Interruttore multivalore

Valori / Stati: STOP · FAST · ECO · GREEN

Lettura stato interruttore

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

Scrittura stato interruttore

```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
```

**Connessione:** Packet Parser → HTTP

## Parametri di importazione

Inserisci questi valori quando importi l'XML.

| Richiesto nell'app                                    | Predefinito                  |
|-------------------------------------------------------|------------------------------|
| ClientId: ID klienta z SolaX Developer Portálu        | Da inserire all'importazione |
| ClientSecret: Client Secret z SolaX Developer Portálu | Da inserire all'importazione |
| DeviceSN: Sériové číslo nabíjačky (Device SN)         | Da inserire all'importazione |

## Documentazione correlata

- [Integrazione Packet Parser](https://taphome.com/it/compatibility/packet-parser-guide/)
- [Packet Parser (HTTP, TCP, UDP, FTP, MQTT)](https://taphome.com/it/docs/integration/packet-parser/)
- [Funzioni Packet parser](https://taphome.com/it/docs/script/packet-parser/)
- [Funzioni di parsing](https://taphome.com/it/docs/script/parsing-functions/)

