---
title: "Ecowitt WS2910 (Cloud API)"
description: "Integrazione Ecowitt Cloud API per la stazione meteo Wi-Fi WS2910. Monitora temperatura, umidità, vento, pioggia, pressione, irraggiamento solare e UV."
url: "https://taphome.com/it/compatibility/ecowitt-ws2910/"
language: it
lastmod: 2026-10-08
generator: hugo
ai:
  topics: ["http","sensor","cloud-api","weather-station","wifi"]
  questions: ["Come integrare la stazione meteo Ecowitt WS2910 con TapHome?","Quali dati meteo fornisce il template Ecowitt WS2910 per TapHome?","Come ottenere l'application key e l'API key di Ecowitt per TapHome?","L'integrazione Ecowitt Cloud API richiede una connessione internet?","Qual è l'intervallo di polling per il template Ecowitt WS2910?","È possibile aggiungere sensori WN31 aggiuntivi all'integrazione Ecowitt WS2910 di TapHome?"]
---

# Ecowitt WS2910 (Cloud API)

Comunicazione: Packet Parser → HTTP

- [Sito ufficiale Ecowitt](https://www.ecowitt.net)

## Guida all'integrazione

Il template Ecowitt WS2910 collega TapHome alla stazione meteo Wi-Fi WS2910 con display a colori tramite l'Ecowitt Cloud API v3. La console WS2910 raccoglie i dati dal suo array di sensori esterni wireless 7-in-1 alimentato a energia solare (temperatura, umidità, vento, pioggia, luce/UV) e dai sensori interni integrati, quindi carica le letture sul server cloud Ecowitt tramite Wi-Fi. TapHome interroga l'API cloud tramite HTTPS e riceve tutti i dati dei sensori in un'unica risposta JSON.

Il template fornisce 16 dispositivi di monitoraggio in sola lettura che coprono condizioni esterne e interne, misurazioni del vento, accumulo di precipitazioni su quattro scale temporali, pressione atmosferica, irradianza solare e indice UV. Gli unici requisiti sono un account Ecowitt, la WS2910 connessa al Wi-Fi e che carica dati su ecowitt.net, e tre credenziali API.

## Configurazione

### Account Ecowitt e configurazione Wi-Fi

La console WS2910 deve essere connessa al Wi-Fi e caricare dati su ecowitt.net. La configurazione iniziale si effettua tramite l'app mobile WSView Plus (iOS / Android):

1. Alimenta la console con l'adattatore DC 5V incluso (il Wi-Fi funziona solo con alimentazione DC, non a batterie)
2. Tieni premuti i pulsanti **WIND** + **PRESSURE** per circa 5 secondi fino a quando l'icona Wi-Fi e M-B iniziano a lampeggiare
3. Nell'app WSView Plus, premi **Configure New Device** e segui le istruzioni a schermo per connettere la console alla rete Wi-Fi locale
4. Abilita il caricamento su Ecowitt Weather (ecowitt.net) nella schermata di configurazione del server

Una volta configurata, i dati dei sensori appaiono sulla dashboard di ecowitt.net entro pochi minuti.

### Ottenere le credenziali API

Per l'integrazione con TapHome sono necessarie tre credenziali. Tutte vengono create e gestite su [ecowitt.net](https://www.ecowitt.net):

1. Registra un account su [www.ecowitt.net](https://www.ecowitt.net) (se non già fatto durante la configurazione Wi-Fi)
2. Verifica che la WS2910 appaia sulla dashboard con dati in tempo reale
3. Naviga alla sezione **API Management**
4. Crea un **Application Key** — identifica l'applicazione che accede all'API
5. Crea un **API Key** — una stringa UUID specifica dell'utente
6. Trova l'**indirizzo MAC** della WS2910 — visibile nell'app WSView Plus sotto **Device List** o sulla dashboard di ecowitt.net

### Parametri di importazione

Durante l'importazione del template in TapHome, inserisci:

| Parametro | Descrizione | Dove trovarlo |
|-----------|-------------|---------------|
| `Application key` | Identificativo dell'applicazione da ecowitt.net | API Management → Application Key |
| `API key` | Chiave API utente (formato UUID) | API Management → API Key |
| `Mac address` | Indirizzo MAC del dispositivo (XX:XX:XX:XX:XX:XX) | App WSView Plus → Device List, o dashboard ecowitt.net |

L'intervallo di polling predefinito è 60 secondi (60.000 ms), corrispondente all'intervallo di segnalazione del sensore interno della console. Il sensore esterno invia dati alla console ogni 16 secondi, ma i dati vengono aggregati dalla console prima del caricamento.

### Dipendenza da internet

Questa è un'integrazione esclusivamente cloud. Tutti i dati transitano attraverso il server cloud Ecowitt (`api.ecowitt.net:443`). Il template non funzionerà senza una connessione internet attiva sia sul TapHome Core che sulla console WS2910.

> [!TIP]
> La console WS2910 funge sia da display che da gateway Wi-Fi — non è necessario un dispositivo gateway separato. Finché la console è alimentata dall'adattatore DC e connessa al Wi-Fi, i dati vengono caricati automaticamente.

## Funzionalità dei dispositivi

### Temperatura e umidità

Il dispositivo **Outdoor Temperature** legge temperatura (°C) e umidità (%) dall'array di sensori wireless 7-in-1. Il sensore esterno ha un intervallo da −40 °C a 60 °C con precisione ±1 °C, e umidità dall'1% al 99% con precisione ±5%. L'umidità è divisa per 100 per l'intervallo di ingresso analogico TapHome 0–1.

Il dispositivo **Indoor Temperature** legge temperatura e umidità dai sensori integrati della console. L'intervallo di temperatura interna è da −10 °C a 60 °C, umidità dall'1% al 99%.

Sono disponibili due valori calcolati aggiuntivi:

- **Outdoor Feels Like Temperature** — temperatura percepita che tiene conto del wind chill (sotto ~10 °C) e dell'indice di calore (sopra ~27 °C), calcolata dal cloud Ecowitt dalla temperatura dell'aria, umidità e velocità del vento
- **Outdoor Dew Point** — la temperatura alla quale l'aria esterna raggiunge la saturazione del vapore acqueo, calcolata da temperatura e umidità

### Misurazioni del vento

Tre dispositivi coprono i dati eolici dall'anemometro e dalla banderuola sull'array di sensori esterni:

- **Wind Speed** — velocità del vento sostenuta in km/h. Intervallo 0–180 km/h, precisione ±1 m/s (sotto 5 m/s) o ±10% (sopra 5 m/s)
- **Wind Gust** — velocità massima del vento nell'intervallo di misurazione (media più alta su 3 secondi) in km/h
- **Wind Direction** — direzione della bussola da cui soffia il vento, in gradi (0° = Nord, 90° = Est, 180° = Sud, 270° = Ovest)

### Precipitazioni

Quattro dispositivi tracciano l'accumulo di precipitazioni su diverse scale temporali, più un tasso istantaneo:

- **Hourly Precipitation** — precipitazioni accumulate negli ultimi 60 minuti (finestra scorrevole) in mm
- **Daily Precipitation** — precipitazioni accumulate dalla mezzanotte in mm
- **Weekly Precipitation** — precipitazioni accumulate dall'inizio della settimana corrente in mm
- **Monthly Precipitation** — precipitazioni accumulate dal primo giorno del mese corrente in mm
- **Rain Rate** — intensità di precipitazione attuale, estrapolata a mm/h. Precisione del volume di pioggia ±10% con risoluzione 0,3 mm

### Pressione atmosferica

- **Air Pressure (Absolute)** — pressione atmosferica senza compensazione dell'altitudine in hPa. Intervallo 700–1100 hPa, precisione ±3 hPa
- **Air Pressure (Relative)** — pressione atmosferica compensata per l'altitudine (equivalente al livello del mare) in hPa

### Solare e UV

- **Solar Irradiance** — intensità della radiazione solare in W/m² come fornita dall'API Ecowitt (il sensore di luce della stazione misura 0–200 klux, precisione ±15%)
- **UV Index** — indice di radiazione ultravioletta sulla scala internazionale 0–15 (0 di notte, 10+ a mezzogiorno in estate)

### Funzionalità aggiuntive

L'Ecowitt Cloud API fornisce anche un accumulo di precipitazioni per evento (si azzera quando la pioggia cessa) e il totale annuale delle precipitazioni. Questi sono disponibili nella risposta API ma non vengono elaborati dal template attuale. L'hardware WS2910 supporta fino a 8 sensori aggiuntivi multicanale di temperatura/umidità WN31 e fino a 2 sensori di qualità dell'aria PM2.5 WH41/WH43 — l'API probabilmente li espone sotto percorsi dati aggiuntivi. L'umidità esterna e interna sono attualmente disponibili solo come parte dei rispettivi dispositivi di temperatura; dispositivi di umidità autonomi potrebbero essere aggiunti in un futuro aggiornamento del template.

## Risoluzione dei problemi

### L'API restituisce un errore o nessun dato

1. Verifica che la WS2910 sia online su ecowitt.net — accedi alla dashboard e controlla che vengano visualizzati dati in tempo reale
2. Conferma la correttezza di tutte e tre le credenziali: application key, API key e indirizzo MAC
3. Assicurati che il formato dell'indirizzo MAC corrisponda esattamente (XX:XX:XX:XX:XX:XX con due punti)
4. Controlla che la console WS2910 sia alimentata dall'adattatore DC (il Wi-Fi non funziona solo a batterie)

### Letture obsolete o ritardate

L'Ecowitt Cloud API restituisce i dati più recenti caricati dalla console WS2910. La console carica i dati nell'intervallo configurato durante la configurazione (predefinito 5 minuti per l'archiviazione su ecowitt.net). Il template interroga l'API ogni 60 secondi, ma i dati sottostanti possono aggiornarsi meno frequentemente a seconda dell'intervallo di caricamento.

### Le unità predefinite sono imperiali

L'API Ecowitt restituisce per impostazione predefinita i dati in unità imperiali (°F, inHg, mph, pollici). Il template imposta esplicitamente gli ID delle unità metriche nell'URL dell'API (`temp_unitid=1`, `pressure_unitid=3`, `wind_speed_unitid=7`, `rainfall_unitid=12`, `solar_irradiance_unitid=16`) per ricevere tutti i valori in unità metriche. Questi ID delle unità non devono essere modificati.

> [!WARNING]
> L'Ecowitt Cloud API richiede una connessione internet attiva e dipende dalla disponibilità del server cloud Ecowitt. Durante interruzioni del cloud o del servizio internet, il template non riceverà dati aggiornati.

## Dispositivi disponibili 16

Questi dispositivi compaiono in TapHome dopo l'importazione.

Ecowitt WS2910 Modulo

Variabili personalizzate

|                            |                                                                                                            |
|----------------------------|------------------------------------------------------------------------------------------------------------|
| `application_key` (string) | Chiave applicazione Ecowitt API per l'autenticazione (ottenere dalla dashboard Ecowitt)                    |
| `api_key` (string)         | Chiave API Ecowitt per l'accesso ai dati del dispositivo (ottenere dalla dashboard Ecowitt)                |
| `mac_address` (string)     | Indirizzo MAC della stazione meteo Ecowitt (trovare nell'app Ecowitt o nelle impostazioni del dispositivo) |

Lettura (modulo)

```taphome
responseJson := "error";

IF(ISNULL(api_key) OR LENGTH(api_key) = 0)
   ADDERROR("Please set API key in module variables");
   RETURN(-1);
END

IF(ISNULL(application_key) OR LENGTH(application_key) = 0)
   ADDERROR("Please set Application key in module variables");
   RETURN(-2);
END

IF(ISNULL(mac_address) OR LENGTH(mac_address) = 0)
   ADDERROR("Please set MAC address in module variables");
   RETURN(-3);
END

VAR path := "api/v3/device/real_time?application_key=" + application_key + "&api_key=" + api_key + "&mac=" + mac_address + "&call_back=all&temp_unitid=1&pressure_unitid=3&wind_speed_unitid=7&rainfall_unitid=12&solar_irradiance_unitid=16";

VAR response := SENDHTTPREQUEST(path);

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);
    RETURN(-4);
END

VAR code := PARSEJSON(responseJson, "code");

IF code != 0
    
    VAR msg := PARSEJSON(responseJson, "msg");
    ADDERROR("Failed to read data - " + msg);
    responseJson := "error";
END
```

Pressione atmosferica (assoluta) Variabile Solo lettura

Pressione atmosferica senza compensazione dell'altitudine — intervallo 700–1100 hPa

numeric Unità: hPa JSON parsejson()

Lettura

```taphome
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.pressure.absolute.value");
RETURN(TODOUBLE(value));
```

Pressione atmosferica (relativa) Variabile Solo lettura

Pressione atmosferica compensata per l'altitudine — equivalente al livello del mare in hPa

numeric Unità: hPa JSON parsejson()

Lettura

```taphome
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.pressure.relative.value");
RETURN(TODOUBLE(value));
```

Precipitazioni giornaliere Variabile Solo lettura

Precipitazioni accumulate dalla mezzanotte in mm — azzeramento alle 00:00

numeric Unità: mm JSON parsejson()

Lettura

```taphome
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.rainfall.daily.value");
RETURN(TODOUBLE(value));
```

Precipitazioni orarie Variabile Solo lettura

Precipitazioni accumulate negli ultimi 60 minuti (finestra scorrevole) in mm

numeric Unità: mm JSON parsejson()

Lettura

```taphome
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.rainfall.1_hour.value");
RETURN(TODOUBLE(value));
```

Temperatura interna Sensore di temperatura Solo lettura

Temperatura interna misurata dalla console (°C) e umidità (intervallo 0–1)

numeric Unità: °C / % JSON parsejson()

Lettura umidità

```taphome
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.indoor.humidity.value");
RETURN(TODOUBLE(value) / 100);
```

Lettura temperatura

```taphome
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.indoor.temperature.value");
RETURN(TODOUBLE(value));
```

Precipitazioni mensili Variabile Solo lettura

Precipitazioni accumulate dal primo giorno del mese corrente in mm

numeric Unità: mm JSON parsejson()

Lettura

```taphome
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.rainfall.monthly.value");
RETURN(TODOUBLE(value));
```

Punto di rugiada esterno Variabile Solo lettura

Temperatura alla quale l'aria esterna raggiunge la saturazione del vapore acqueo — calcolata da temperatura e umidità

numeric Unità: °C JSON parsejson()

Lettura

```taphome
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.outdoor.dew_point.value");
RETURN(TODOUBLE(value));
```

Temperatura percepita esterna Variabile Solo lettura

Temperatura percepita che tiene conto del wind chill e dell'indice di calore

numeric Unità: °C JSON parsejson()

Lettura

```taphome
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.outdoor.feels_like.value");
RETURN(TODOUBLE(value));
```

Temperatura esterna Sensore di temperatura Solo lettura

Temperatura esterna (°C) e umidità (intervallo 0–1) dall'array di sensori wireless 7-in-1

numeric Unità: °C / % JSON parsejson()

Lettura umidità

```taphome
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.outdoor.humidity.value");
RETURN(TODOUBLE(value) / 100.0);
```

Lettura temperatura

```taphome
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.outdoor.temperature.value");
RETURN(TODOUBLE(value));
```

Intensità pioggia Variabile Solo lettura

Intensità di precipitazione attuale estrapolata a mm/h

numeric Unità: mm/hr JSON parsejson()

Lettura

```taphome
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.rainfall.rain_rate.value");
RETURN(TODOUBLE(value));
```

Irradianza solare Variabile Solo lettura

Intensità della radiazione solare in W/m² come fornita dall'API Ecowitt

numeric Unità: W/m² JSON parsejson()

Lettura

```taphome
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.solar_and_uvi.solar.value");
RETURN(TODOUBLE(value));
```

Indice UV Variabile Solo lettura

Indice di radiazione ultravioletta sulla scala 0–15 — 0 di notte, 10+ a mezzogiorno in estate

numeric JSON parsejson()

Lettura

```taphome
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.solar_and_uvi.uvi.value");
RETURN(TODOUBLE(value));
```

Precipitazioni settimanali Variabile Solo lettura

Precipitazioni accumulate dall'inizio della settimana corrente in mm

numeric Unità: mm JSON parsejson()

Lettura

```taphome
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.rainfall.weekly.value");
RETURN(TODOUBLE(value));
```

Direzione del vento Variabile Solo lettura

Direzione della bussola in gradi — 0° Nord, 90° Est, 180° Sud, 270° Ovest

numeric Unità: ° JSON parsejson()

Lettura

```taphome
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.wind.wind_direction.value");
RETURN(TODOUBLE(value));
```

Raffica di vento Variabile Solo lettura

Velocità massima del vento nell'intervallo di misurazione in km/h

numeric Unità: km/h JSON parsejson()

Lettura

```taphome
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.wind.wind_gust.value");
RETURN(TODOUBLE(value));
```

Velocità del vento Variabile Solo lettura

Velocità del vento sostenuta dall'anemometro in km/h — intervallo 0–180 km/h

numeric Unità: km/h JSON parsejson()

Lettura

```taphome
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.wind.wind_speed.value");
RETURN(TODOUBLE(value));
```

**Connessione:** Packet Parser → HTTP

Possibili miglioramenti (6)

- Rainfall Event — Accumulated rainfall for the current rain event (resets when rain stops). Available in API response but not parsed by template
- Yearly Precipitation — Accumulated rainfall since January 1st. Available in API response but not parsed by template
- Outdoor Humidity (Standalone) — Outdoor humidity is only exposed as part of the Outdoor Temperature device (readhumidity script). A standalone humidity variable device could be useful for automations
- Indoor Humidity (Standalone) — Indoor humidity is only exposed as part of the Indoor Temperature device (readhumidity script). A standalone humidity variable device could be useful for automations
- Additional Temperature/Humidity Sensors (WN31) — WS2910 supports up to 8 WN31 multi-channel temperature/humidity sensors. API likely exposes these under additional data paths. Not implemented in template
- PM2.5 Air Quality Sensors — WS2910 supports up to 2 WH41/WH43 PM2.5 air quality sensors. API likely exposes these under additional data paths. Not implemented in template

## Parametri di importazione

Inserisci questi valori quando importi l'XML.

| Richiesto nell'app | Predefinito                  |
|--------------------|------------------------------|
| Application key    | Da inserire all'importazione |
| API key            | Da inserire all'importazione |
| Mac address        | Da inserire all'importazione |
| Poll interval      | `60000`                      |

## Fonti

- Ecowitt Cloud API v3 — Real-Time Endpoint
  
  [api.ecowitt.net](https://api.ecowitt.net/api/v3/device/real_time) 2026-03-28
- WS2910 Operation Manual
  
  [oss.ecowitt.net](https://oss.ecowitt.net/uploads/20240624/WS2910%20Manual.pdf) 2026-03-28
  
  [PDF](https://taphome.com/compatibility/devices/ecowitt-ws2910/manufacturer/ws2910-manual.pdf)
- HA Community — Ecowitt API Integration Guide
  
  [community.home-assistant.io](https://community.home-assistant.io/t/using-the-ecowitt-api-to-retrieve-data-from-your-personal-weather-station-pws/436606) 2026-03-28

I documenti del produttore sono © dei rispettivi proprietari. Sono forniti così come pubblicati dal produttore, solo a titolo informativo.

## 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/)

