TapHome

Ecowitt WS2910 (Cloud API)

Packet Parser → HTTP
Trimis de
Ultima actualizare: 10. 2026
Ecowitt WS2910 (Cloud API)

Șablonul Ecowitt WS2910 conectează TapHome la stația meteo Wi-Fi WS2910 cu afișaj color prin Ecowitt Cloud API v3. Consola WS2910 colectează datele de la ansamblul de senzori wireless exterior 7-în-1 cu alimentare solară (temperatură, umiditate, vânt, ploaie, lumină/UV) și de la senzorii interiori integrați, apoi încarcă citirile pe serverul cloud Ecowitt prin Wi-Fi. TapHome interoghează API-ul cloud prin HTTPS și primește toate datele senzorilor într-un singur răspuns JSON.

Șablonul oferă 16 dispozitive de monitorizare, numai pentru citire, care acoperă condițiile exterioare și interioare, măsurătorile vântului, precipitațiile cumulate pe patru intervale de timp, presiunea atmosferică, iradianța solară și indicele UV. Singurele cerințe sunt un cont Ecowitt, stația WS2910 conectată la Wi-Fi care încarcă date pe ecowitt.net și trei date de acces API.

Configurare

Contul Ecowitt și configurarea Wi-Fi

Consola WS2910 trebuie să fie conectată la Wi-Fi și să încarce date pe ecowitt.net. Configurarea inițială se face prin aplicația mobilă WSView Plus (iOS / Android):

  1. Alimentați consola cu adaptorul de 5 V DC inclus (Wi-Fi funcționează numai cu alimentare DC, nu pe baterii)
  2. Țineți apăsate butoanele WIND + PRESSURE aproximativ 5 secunde, până când pictograma Wi-Fi și M-B clipesc
  3. În aplicația WSView Plus apăsați Configure New Device și urmați instrucțiunile de pe ecran pentru a conecta consola la rețeaua Wi-Fi locală
  4. Activați încărcarea pe Ecowitt Weather (ecowitt.net) în ecranul de configurare a serverului

După configurare, datele senzorilor apar în dashboard-ul ecowitt.net în câteva minute.

Obținerea datelor de acces API

Pentru integrarea cu TapHome sunt necesare trei date de acces. Toate se creează și se gestionează pe ecowitt.net:

  1. Înregistrați un cont pe www.ecowitt.net (dacă nu ați făcut-o deja la configurarea Wi-Fi)
  2. Verificați dacă WS2910 apare în dashboard cu date în timp real
  3. Mergeți la secțiunea API Management
  4. Creați un Application Key — acesta identifică aplicația care accesează API-ul
  5. Creați un API Key — acesta este un șir UUID specific utilizatorului
  6. Găsiți adresa MAC a stației WS2910 — este afișată în aplicația WSView Plus la Device List sau în dashboard-ul ecowitt.net
Parametri de import

La importul șablonului în TapHome, introduceți:

ParametruDescriereUnde se găsește
Application keyIdentificatorul aplicației de pe ecowitt.netAPI Management → Application Key
API keyCheia API a utilizatorului (format UUID)API Management → API Key
Mac addressAdresa MAC a dispozitivului (XX:XX:XX:XX:XX:XX)Aplicația WSView Plus → Device List sau dashboard-ul ecowitt.net

Intervalul de interogare implicit este de 60 de secunde (60.000 ms), ceea ce corespunde intervalului de raportare al senzorilor interiori ai consolei. Senzorul exterior raportează către consolă la fiecare 16 secunde, dar consola agregă datele înainte de încărcare.

Dependența de internet

Aceasta este o integrare exclusiv prin cloud. Toate datele trec prin serverul cloud Ecowitt (api.ecowitt.net:443). Șablonul nu funcționează fără o conexiune activă la internet atât pe TapHome Core, cât și pe consola WS2910.

Consola WS2910 funcționează atât ca afișaj, cât și ca gateway Wi-Fi — nu este necesar un gateway separat. Atâta timp cât consola este alimentată de adaptorul DC și conectată la Wi-Fi, datele se încarcă automat.

Funcțiile dispozitivului

Temperatură și umiditate

Dispozitivul Temperatura exterioară citește temperatura (°C) și umiditatea (%) de la ansamblul de senzori wireless 7-în-1. Senzorul exterior are un domeniu de -40 °C până la 60 °C cu o precizie de ±1 °C, iar umiditatea de la 1 % la 99 % cu o precizie de ±5 %. Umiditatea se împarte la 100 pentru domeniul intrării analogice TapHome 0–1.

Dispozitivul Temperatura interioară citește temperatura și umiditatea de la senzorii integrați ai consolei. Domeniul temperaturii interioare este de -10 °C până la 60 °C, umiditatea 1 % până la 99 %.

Sunt disponibile două valori calculate suplimentare:

  • Temperatura exterioară resimțită — temperatura percepută, care ține cont de efectul de răcire al vântului (sub ~10 °C) și de indicele de căldură (peste ~27 °C), calculată de cloudul Ecowitt din temperatura aerului, umiditate și viteza vântului
  • Punct de rouă exterior — temperatura la care aerul exterior atinge saturația cu vapori de apă, calculată din temperatură și umiditate
Măsurătorile vântului

Trei dispozitive acoperă datele despre vânt de la anemometrul și girueta ansamblului de senzori exterior:

  • Viteza vântului — viteza susținută a vântului în km/h. Domeniu 0–180 km/h, precizie ±1 m/s (sub 5 m/s) sau ±10 % (peste 5 m/s)
  • Rafale de vânt — viteza maximă a vântului în intervalul de măsurare (cea mai mare medie pe 3 secunde) în km/h
  • Direcția vântului — direcția din care bate vântul, în grade (0° = nord, 90° = est, 180° = sud, 270° = vest)
Precipitații

Patru dispozitive urmăresc precipitațiile cumulate pe diferite intervale de timp, plus intensitatea instantanee:

  • Precipitații orare — precipitațiile cumulate în ultimele 60 de minute (fereastră glisantă) în mm
  • Precipitații zilnice — precipitațiile cumulate de la miezul nopții în mm
  • Precipitații săptămânale — precipitațiile cumulate de la începutul săptămânii curente în mm
  • Precipitații lunare — precipitațiile cumulate de la prima zi a lunii curente în mm
  • Rata precipitațiilor — intensitatea curentă a ploii, extrapolată la mm/h. Precizia măsurării cantității de precipitații este de ±10 %, iar rezoluția este de 0,3 mm
Presiune atmosferică
  • Presiune atmosferică (absolută) — presiunea barometrică fără compensarea altitudinii, în hPa. Domeniu 700–1100 hPa, precizie ±3 hPa
  • Presiune atmosferică (relativă) — presiunea barometrică compensată pentru altitudine (echivalent la nivelul mării), în hPa
Radiație solară și UV
  • Iradianță solară — intensitatea radiației solare în W/m², așa cum o raportează Ecowitt API (senzorul de lumină al stației măsoară el însuși 0–200 klux, precizie ±15 %)
  • Indice UV — indicele radiației ultraviolete pe scala internațională 0–15 (0 noaptea, 10+ la prânz vara în plin soare)
Funcții suplimentare

Ecowitt Cloud API oferă și cantitatea de precipitații a unui episod de ploaie (se resetează când ploaia se oprește) și totalul anual al precipitațiilor. Acestea sunt disponibile în răspunsul API, dar șablonul actual nu le procesează. Hardware-ul WS2910 acceptă până la 8 senzori suplimentari de temperatură/umiditate multicanal WN31 și până la 2 senzori de calitate a aerului PM2.5 WH41/WH43 — API-ul îi expune probabil în căi de date suplimentare. Umiditatea exterioară și cea interioară sunt în prezent disponibile numai ca parte a dispozitivelor de temperatură respective; dispozitive separate pentru umiditate ar putea fi adăugate într-o actualizare viitoare a șablonului.

Depanare

API-ul returnează o eroare sau nu returnează date
  1. Verificați dacă WS2910 este online pe ecowitt.net — conectați-vă la dashboard și verificați dacă se afișează date în timp real
  2. Verificați dacă toate cele trei date de acces sunt corecte: cheia de aplicație, cheia API și adresa MAC
  3. Asigurați-vă că formatul adresei MAC corespunde exact (XX:XX:XX:XX:XX:XX cu două puncte)
  4. Verificați dacă consola WS2910 este alimentată de adaptorul DC (Wi-Fi nu funcționează numai pe baterii)
Citiri învechite sau întârziate

Ecowitt Cloud API returnează cele mai recente date încărcate de consola WS2910. Consola încarcă datele la intervalul configurat la instalare (implicit 5 minute pentru stocarea pe ecowitt.net). Șablonul interoghează API-ul la fiecare 60 de secunde, dar datele încărcate de consolă se pot actualiza mai rar, în funcție de intervalul de încărcare.

Unitățile implicite sunt imperiale

Ecowitt API returnează implicit datele în unități imperiale (°F, inHg, mph, inchi). Șablonul setează explicit ID-urile unităților metrice în URL-ul API (temp_unitid=1, pressure_unitid=3, wind_speed_unitid=7, rainfall_unitid=12, solar_irradiance_unitid=16), pentru a primi toate valorile în unități metrice. Aceste ID-uri ale unităților nu trebuie modificate.

Ecowitt Cloud API necesită o conexiune activă la internet și depinde de disponibilitatea serverului cloud Ecowitt. În timpul întreruperilor cloudului sau ale conexiunii la internet, șablonul nu primește date actualizate.

Dispozitive disponibile

Ecowitt WS2910 Modul
Variabile personalizate
application_key (string)Cheia de aplicație Ecowitt API pentru autentificare (se obține din dashboard-ul Ecowitt)
api_key (string)Cheia Ecowitt API pentru accesul la datele dispozitivului (se obține din dashboard-ul Ecowitt)
mac_address (string)Adresa MAC a stației meteo Ecowitt (se găsește în aplicația Ecowitt sau în setările dispozitivului)

Ecowitt

Citire (modul)
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
Presiune atmosferică (absolută) Variabilă Doar citire

Presiune barometrică fără compensarea altitudinii — domeniu 700–1100 hPa

numeric Unitate: hPa JSON parsejson()

Presiune atmosferică (absolută)

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

VAR value := PARSEJSON(responseJson,"data.pressure.absolute.value");
RETURN(TODOUBLE(value));
Presiune atmosferică (relativă) Variabilă Doar citire

Presiune barometrică compensată pentru altitudine — echivalent la nivelul mării în hPa

numeric Unitate: hPa JSON parsejson()

Presiune atmosferică (relativă)

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

VAR value := PARSEJSON(responseJson,"data.pressure.relative.value");
RETURN(TODOUBLE(value));
Precipitații zilnice Variabilă Doar citire

Precipitații cumulate de la miezul nopții în mm — se resetează la 00:00

numeric Unitate: mm JSON parsejson()

Precipitații zilnice

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

VAR value := PARSEJSON(responseJson,"data.rainfall.daily.value");
RETURN(TODOUBLE(value));
Precipitații orare Variabilă Doar citire

Precipitații cumulate în ultimele 60 de minute (fereastră glisantă) în mm

numeric Unitate: mm JSON parsejson()

Precipitații orare

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

VAR value := PARSEJSON(responseJson,"data.rainfall.1_hour.value");
RETURN(TODOUBLE(value));
Temperatura interioară Senzor de temperatură Doar citire

Temperatura interioară (°C) și umiditatea (domeniu 0–1) măsurate de consolă

numeric Unitate: °C / % JSON parsejson()

Temperatura interioară

Citirea umidității
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.indoor.humidity.value");
RETURN(TODOUBLE(value) / 100);
Citirea temperaturii
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.indoor.temperature.value");
RETURN(TODOUBLE(value));
Precipitații lunare Variabilă Doar citire

Precipitații cumulate de la prima zi a lunii curente în mm

numeric Unitate: mm JSON parsejson()

Precipitații lunare

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

VAR value := PARSEJSON(responseJson,"data.rainfall.monthly.value");
RETURN(TODOUBLE(value));
Punct de rouă exterior Variabilă Doar citire

Temperatura la care aerul exterior atinge saturația cu vapori de apă — calculată din temperatură și umiditate

numeric Unitate: °C JSON parsejson()

Punct de rouă exterior

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

VAR value := PARSEJSON(responseJson,"data.outdoor.dew_point.value");
RETURN(TODOUBLE(value));
Temperatura exterioară resimțită Variabilă Doar citire

Temperatura percepută, care ține cont de efectul de răcire al vântului și de indicele de căldură

numeric Unitate: °C JSON parsejson()

Temperatura exterioară resimțită

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

VAR value := PARSEJSON(responseJson,"data.outdoor.feels_like.value");
RETURN(TODOUBLE(value));
Temperatura exterioară Senzor de temperatură Doar citire

Temperatura exterioară (°C) și umiditatea (domeniu 0–1) de la ansamblul de senzori wireless 7-în-1

numeric Unitate: °C / % JSON parsejson()

Temperatura exterioară

Citirea umidității
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.outdoor.humidity.value");
RETURN(TODOUBLE(value) / 100.0);
Citirea temperaturii
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.outdoor.temperature.value");
RETURN(TODOUBLE(value));
Rata precipitațiilor Variabilă Doar citire

Intensitatea curentă a ploii, extrapolată la mm/h

numeric Unitate: mm/hr JSON parsejson()

Rata precipitațiilor

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

VAR value := PARSEJSON(responseJson,"data.rainfall.rain_rate.value");
RETURN(TODOUBLE(value));
Iradianță solară Variabilă Doar citire

Intensitatea radiației solare în W/m², așa cum o raportează API-ul Ecowitt

numeric Unitate: W/m² JSON parsejson()

Iradianță solară

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

VAR value := PARSEJSON(responseJson,"data.solar_and_uvi.solar.value");
RETURN(TODOUBLE(value));
Indice UV Variabilă Doar citire

Indicele radiației ultraviolete pe scala 0–15 — 0 noaptea, 10+ la prânz vara

numeric JSON parsejson()

Indice UV

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

VAR value := PARSEJSON(responseJson,"data.solar_and_uvi.uvi.value");
RETURN(TODOUBLE(value));
Precipitații săptămânale Variabilă Doar citire

Precipitații cumulate de la începutul săptămânii curente în mm

numeric Unitate: mm JSON parsejson()

Precipitații săptămânale

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

VAR value := PARSEJSON(responseJson,"data.rainfall.weekly.value");
RETURN(TODOUBLE(value));
Direcția vântului Variabilă Doar citire

Direcția din care bate vântul, în grade — 0° nord, 90° est, 180° sud, 270° vest

numeric Unitate: ° JSON parsejson()

Direcția vântului

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

VAR value := PARSEJSON(responseJson,"data.wind.wind_direction.value");
RETURN(TODOUBLE(value));
Rafale de vânt Variabilă Doar citire

Viteza maximă a vântului în intervalul de măsurare, în km/h

numeric Unitate: km/h JSON parsejson()

Rafale de vânt

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

VAR value := PARSEJSON(responseJson,"data.wind.wind_gust.value");
RETURN(TODOUBLE(value));
Viteza vântului Variabilă Doar citire

Viteza susținută a vântului de la anemometru în km/h — domeniu 0–180 km/h

numeric Unitate: km/h JSON parsejson()

Viteza vântului

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

VAR value := PARSEJSON(responseJson,"data.wind.wind_speed.value");
RETURN(TODOUBLE(value));
Conexiune: Packet Parser → HTTP
Îmbunătățiri posibile (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

Surse

Ați găsit o problemă la acest șablon de dispozitiv?

Spuneți-ne ce nu funcționează, ce lipsește sau cum ar trebui să se comporte șablonul. Feedbackul dvs. ne ajută să păstrăm catalogul corect.

Verificat de TapHome

Doriți să folosiți acest șablon în TapHome Core?

Deschideți acest șablon în Customer Portal pentru a-l aplica într-una dintre locuințele dvs. sau pentru a propune o îmbunătățire și a o trimite înapoi în catalog.

Deschideți în portal