TapHome

Ecowitt WS2910 (Cloud API)

Packet Parser → HTTP
Pridal
Posledná aktualizácia: 03. 2026
Ecowitt WS2910 (Cloud API)

Šablóna Ecowitt WS2910 prepája TapHome s farebnou Wi-Fi meteorologickou stanicou WS2910 prostredníctvom Ecowitt Cloud API v3. Konzola WS2910 zbiera dáta zo svojho vonkajšieho 7-v-1 solárne napájaného bezdrôtového senzorového poľa (teplota, vlhkosť, vietor, dážď, svetlo/UV) a zo vstavaných vnútorných senzorov, a následne nahrádza namerané hodnoty na cloudový server Ecowitt cez Wi-Fi. TapHome sa dotazuje cloud API cez HTTPS a prijíma všetky dáta zo senzorov v jednej JSON odpovedi.

Šablóna poskytuje 16 zariadení na monitorovanie vonkajších a vnútorných podmienok, meranie vetra, akumuláciu zrážok v štyroch časových škálach, atmosférický tlak, slnečné žiarenie a UV index. Jediné požiadavky sú účet Ecowitt, WS2910 pripojená k Wi-Fi a nahrádzajúca dáta na ecowitt.net, a tri API prihlasovacie údaje.

Konfigurácia

Účet Ecowitt a nastavenie Wi-Fi

Konzola WS2910 musí byť pripojená k Wi-Fi a nahrádzať dáta na ecowitt.net. Počiatočné nastavenie sa vykonáva cez mobilnú aplikáciu WSView Plus (iOS / Android):

  1. Napájajte konzolu priloženým 5V DC adaptérom (Wi-Fi funguje len s DC napájaním, nie na batérie)
  2. Podržte tlačidlá WIND + PRESSURE približne 5 sekúnd, kým nezačne blikať ikona Wi-Fi a M-B
  3. V aplikácii WSView Plus stlačte Configure New Device a postupujte podľa pokynov na obrazovke na pripojenie konzoly k lokálnej Wi-Fi sieti
  4. Povoľte nahrávanie na Ecowitt Weather (ecowitt.net) v nastaveniach servera

Po nakonfigurovaní sa dáta zo senzorov zobrazia na dashboarde ecowitt.net v priebehu niekoľkých minút.

Získanie API prihlasovacích údajov

Pre integráciu s TapHome sú potrebné tri prihlasovacie údaje. Všetky sa vytvárajú a spravujú na ecowitt.net:

  1. Zaregistrujte si účet na www.ecowitt.net (ak ste tak neurobili pri nastavení Wi-Fi)
  2. Overte, že WS2910 sa zobrazuje na dashboarde s aktuálnymi dátami
  3. Prejdite do sekcie API Management
  4. Vytvorte Application Key — identifikuje aplikáciu pristupujúcu k API
  5. Vytvorte API Key — používateľský UUID reťazec
  6. Nájdite MAC adresu WS2910 — viditeľná v aplikácii WSView Plus v sekcii Device List alebo na dashboarde ecowitt.net
Parametre importu

Pri importe šablóny do TapHome zadajte:

ParameterPopisKde nájsť
Application keyIdentifikátor aplikácie z ecowitt.netAPI Management → Application Key
API keyPoužívateľský API kľúč (formát UUID)API Management → API Key
Mac addressMAC adresa zariadenia (XX:XX:XX:XX:XX:XX)Aplikácia WSView Plus → Device List, alebo dashboard ecowitt.net

Predvolený interval dotazovania je 60 sekúnd (60 000 ms), čo zodpovedá intervalu hlásenia vnútorného senzora konzoly. Vonkajší senzor hlási dáta konzole každých 16 sekúnd, ale dáta sú konzolou agregované pred nahratím.

Závislosť na internete

Ide o výhradne cloudovú integráciu. Všetky dáta prechádzajú cez cloudový server Ecowitt (api.ecowitt.net:443). Šablóna nebude fungovať bez aktívneho internetového pripojenia na TapHome Core aj na konzole WS2910.

Konzola WS2910 funguje súčasne ako displej aj ako Wi-Fi brána — nie je potrebné žiadne samostatné gateway zariadenie. Pokiaľ je konzola napájaná DC adaptérom a pripojená k Wi-Fi, dáta sa nahrávajú automaticky.

Schopnosti zariadení

Teplota a vlhkosť

Zariadenie Outdoor Temperature číta teplotu (°C) a vlhkosť (%) z bezdrôtového senzorového poľa 7-v-1. Vonkajší senzor má rozsah −40 °C až 60 °C s presnosťou ±1 °C a vlhkosť od 1 % do 99 % s presnosťou ±5 %. Vlhkosť je delená 100 pre analógový vstupný rozsah TapHome 0–1.

Zariadenie Indoor Temperature číta teplotu a vlhkosť zo vstavaných senzorov konzoly. Rozsah vnútornej teploty je −10 °C až 60 °C, vlhkosť 1 % až 99 %.

K dispozícii sú dve ďalšie vypočítané hodnoty:

  • Outdoor Feels Like Temperature — pocitová teplota zohľadňujúca windchill (pod ~10 °C) a heat index (nad ~27 °C), vypočítaná cloudom Ecowitt z teploty vzduchu, vlhkosti a rýchlosti vetra
  • Outdoor Dew Point — teplota, pri ktorej vonkajší vzduch dosiahne nasýtenie vodnými parami, vypočítaná z teploty a vlhkosti
Meranie vetra

Tri zariadenia pokrývajú údaje o vetre z anemometra a veternej smernice na vonkajšom senzorovom poli:

  • Wind Speed — trvalá rýchlosť vetra v km/h. Rozsah 0–180 km/h, presnosť ±1 m/s (pod 5 m/s) alebo ±10 % (nad 5 m/s)
  • Wind Gust — maximálna rýchlosť vetra za merací interval (najvyšší 3-sekundový priemer) v km/h
  • Wind Direction — smer kompasu, odkiaľ vietor fúka, v stupňoch (0° = sever, 90° = východ, 180° = juh, 270° = západ)
Zrážky

Štyri zariadenia sledujú akumuláciu zrážok v rôznych časových škálach, plus okamžitú intenzitu:

  • Hourly Precipitation — akumulované zrážky za posledných 60 minút (posuvné okno) v mm
  • Daily Precipitation — akumulované zrážky od polnoci v mm
  • Weekly Precipitation — akumulované zrážky od začiatku aktuálneho týždňa v mm
  • Monthly Precipitation — akumulované zrážky od prvého dňa aktuálneho mesiaca v mm
  • Rain Rate — aktuálna intenzita zrážok, extrapolovaná na mm/h. Presnosť objemu zrážok je ±10 % s rozlíšením 0,3 mm
Atmosférický tlak
  • Air Pressure (Absolute) — atmosférický tlak bez kompenzácie nadmorskej výšky v hPa. Rozsah 700–1100 hPa, presnosť ±3 hPa
  • Air Pressure (Relative) — atmosférický tlak kompenzovaný na nadmorskú výšku (ekvivalent hladiny mora) v hPa
Slnečné žiarenie a UV
  • Solar Irradiance — intenzita slnečného žiarenia vo W/m². Rozsah svetelného senzora 0–200 klux, presnosť ±15 %
  • UV Index — index ultrafialového žiarenia na medzinárodnej stupnici 0–15 (0 v noci, 10+ na poludnie v lete)
Ďalšie schopnosti

Ecowitt Cloud API poskytuje aj akumuláciu zrážok za udalosť (resetuje sa po skončení dažďa) a celkové ročné zrážky. Tieto sú dostupné v odpovedi API, ale aktuálna šablóna ich nespracováva. Hardware WS2910 podporuje až 8 dodatočných viackanálových senzorov teploty/vlhkosti WN31 a až 2 senzory kvality ovzdušia PM2.5 WH41/WH43 — API ich pravdepodobne sprístupňuje pod ďalšími dátovými cestami. Vonkajšia a vnútorná vlhkosť sú momentálne dostupné len ako súčasť príslušných teplotných zariadení; samostatné zariadenia vlhkosti by mohli byť pridané v budúcej aktualizácii šablóny.

Riešenie problémov

API vracia chybu alebo žiadne dáta
  1. Overte, že WS2910 je online na ecowitt.net — prihláste sa na dashboard a skontrolujte, či sa zobrazujú aktuálne dáta
  2. Potvrďte správnosť všetkých troch prihlasovacích údajov: application key, API key a MAC adresa
  3. Uistite sa, že formát MAC adresy presne zodpovedá (XX:XX:XX:XX:XX:XX s dvojbodkami)
  4. Skontrolujte, či je konzola WS2910 napájaná DC adaptérom (Wi-Fi nefunguje len na batérie)
Zastarané alebo oneskorené hodnoty

Ecowitt Cloud API vracia najnovšie dáta nahrané konzolou WS2910. Konzola nahráva dáta v intervale nakonfigurovanom počas nastavenia (predvolene 5 minút pre ukladanie na ecowitt.net). Šablóna sa dotazuje API každých 60 sekúnd, ale podkladové dáta sa môžu aktualizovať menej často v závislosti od intervalu nahrávania.

Predvolené jednotky sú imperiálne

Ecowitt API predvolene vracia dáta v imperiálnych jednotkách (°F, inHg, mph, palce). Šablóna explicitne nastavuje metrické ID jednotiek v URL API (temp_unitid=1, pressure_unitid=3, wind_speed_unitid=7, rainfall_unitid=12, solar_irradiance_unitid=16) pre príjem všetkých hodnôt v metrických jednotkách. Tieto ID jednotiek by sa nemali upravovať.

Ecowitt Cloud API vyžaduje aktívne internetové pripojenie a závisí od dostupnosti cloudového servera Ecowitt. Počas výpadkov cloudu alebo prerušení internetu šablóna nebude prijímať aktualizované dáta.

Dostupné zariadenia

Ecowitt WS2910 Modul
Vlastné premenné
application_key (string)Ecowitt API application key for authentication (obtain from Ecowitt dashboard)
api_key (string)Ecowitt API key for device data access (obtain from Ecowitt dashboard)
mac_address (string)MAC address of the Ecowitt weather station (find in Ecowitt app or device settings)

Ecowitt

Čítanie (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
Tlak vzduchu (absolútny) Premenná Len na čítanie

Atmosférický tlak bez kompenzácie nadmorskej výšky — rozsah 700–1100 hPa

numeric Jednotka: hPa JSON parsejson()

Tlak vzduchu (absolútny)

Čítanie
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.pressure.absolute.value");
RETURN(TODOUBLE(value));
Tlak vzduchu (relatívny) Premenná Len na čítanie

Atmosférický tlak kompenzovaný na nadmorskú výšku — ekvivalent hladiny mora v hPa

numeric Jednotka: hPa JSON parsejson()

Tlak vzduchu (relatívny)

Čítanie
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.pressure.relative.value");
RETURN(TODOUBLE(value));
Denné zrážky Premenná Len na čítanie

Akumulované zrážky od polnoci v mm — reset o 00:00

numeric Jednotka: mm JSON parsejson()

Denné zrážky

Čítanie
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.rainfall.daily.value");
RETURN(TODOUBLE(value));
Hodinové zrážky Premenná Len na čítanie

Akumulované zrážky za posledných 60 minút (posuvné okno) v mm

numeric Jednotka: mm JSON parsejson()

Hodinové zrážky

Čítanie
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.rainfall.1_hour.value");
RETURN(TODOUBLE(value));
Vnútorná teplota Teplotný senzor Len na čítanie

Vnútorná teplota meraná konzolou (°C) a vlhkosť (rozsah 0–1)

numeric Jednotka: °C / % JSON parsejson()

Vnútorná teplota

Čítanie vlhkosti
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

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

VAR value := PARSEJSON(responseJson,"data.indoor.temperature.value");
RETURN(TODOUBLE(value));
Mesačné zrážky Premenná Len na čítanie

Akumulované zrážky od prvého dňa aktuálneho mesiaca v mm

numeric Jednotka: mm JSON parsejson()

Mesačné zrážky

Čítanie
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.rainfall.monthly.value");
RETURN(TODOUBLE(value));
Vonkajší rosný bod Premenná Len na čítanie

Teplota, pri ktorej vonkajší vzduch dosiahne nasýtenie vodnými parami — vypočítaná z teploty a vlhkosti

numeric Jednotka: °C JSON parsejson()

Vonkajší rosný bod

Čítanie
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.outdoor.dew_point.value");
RETURN(TODOUBLE(value));
Vonkajšia pocitová teplota Premenná Len na čítanie

Pocitová teplota zohľadňujúca windchill a heat index

numeric Jednotka: °C JSON parsejson()

Vonkajšia pocitová teplota

Čítanie
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.outdoor.feels_like.value");
RETURN(TODOUBLE(value));
Vonkajšia teplota Teplotný senzor Len na čítanie

Vonkajšia teplota (°C) a vlhkosť (rozsah 0–1) zo 7-v-1 bezdrôtového senzorového poľa

numeric Jednotka: °C / % JSON parsejson()

Vonkajšia teplota

Čítanie vlhkosti
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

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

VAR value := PARSEJSON(responseJson,"data.outdoor.temperature.value");
RETURN(TODOUBLE(value));
Intenzita dažďa Premenná Len na čítanie

Aktuálna intenzita zrážok extrapolovaná na mm/h

numeric Jednotka: mm/hr JSON parsejson()

Intenzita dažďa

Čítanie
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.rainfall.rain_rate.value");
RETURN(TODOUBLE(value));
Slnečné žiarenie Premenná Len na čítanie

Intenzita slnečného žiarenia vo W/m² — rozsah 0–200 klux

numeric Jednotka: W/m² JSON parsejson()

Slnečné žiarenie

Čítanie
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.solar_and_uvi.solar.value");
RETURN(TODOUBLE(value));
UV index Premenná Len na čítanie

Index ultrafialového žiarenia na stupnici 0–15 — 0 v noci, 10+ na poludnie v lete

numeric JSON parsejson()

UV index

Čítanie
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.solar_and_uvi.uvi.value");
RETURN(TODOUBLE(value));
Týždenné zrážky Premenná Len na čítanie

Akumulované zrážky od začiatku aktuálneho týždňa v mm

numeric Jednotka: mm JSON parsejson()

Týždenné zrážky

Čítanie
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.rainfall.weekly.value");
RETURN(TODOUBLE(value));
Smer vetra Premenná Len na čítanie

Smer kompasu v stupňoch — 0° sever, 90° východ, 180° juh, 270° západ

numeric Jednotka: ° JSON parsejson()

Smer vetra

Čítanie
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.wind.wind_direction.value");
RETURN(TODOUBLE(value));
Náraz vetra Premenná Len na čítanie

Maximálna rýchlosť vetra za merací interval v km/h

numeric Jednotka: km/h JSON parsejson()

Náraz vetra

Čítanie
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.wind.wind_gust.value");
RETURN(TODOUBLE(value));
Rýchlosť vetra Premenná Len na čítanie

Trvalá rýchlosť vetra z anemometra v km/h — rozsah 0–180 km/h

numeric Jednotka: km/h JSON parsejson()

Rýchlosť vetra

Čítanie
IF(ISNULL(responseJson) | responseJson = "error")
    RETURN(NaN);
END

VAR value := PARSEJSON(responseJson,"data.wind.wind_speed.value");
RETURN(TODOUBLE(value));
Pripojenie: Packet Parser → HTTP
Možné vylepšenia (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

Zdroje