TapHome

Ecowitt WS2910 (Cloud API)

Packet Parser → HTTP
Přidal
Poslední aktualizace: 03. 2026
Ecowitt WS2910 (Cloud API)

Šablona Ecowitt WS2910 propojuje TapHome s barevnou Wi-Fi meteorologickou stanicí WS2910 prostřednictvím Ecowitt Cloud API v3. Konzole WS2910 sbírá data ze svého venkovního solárně napájeného bezdrátového senzorového pole 7-v-1 (teplota, vlhkost, vítr, déšť, světlo/UV) a z vestavěných vnitřních senzorů, a následně nahrává naměřené hodnoty na cloudový server Ecowitt přes Wi-Fi. TapHome se dotazuje cloud API přes HTTPS a přijímá všechna data ze senzorů v jediné JSON odpovědi.

Šablona poskytuje 16 zařízení pro monitorování venkovních a vnitřních podmínek, měření větru, akumulaci srážek ve čtyřech časových škálách, atmosférický tlak, sluneční záření a UV index. Jediné požadavky jsou účet Ecowitt, WS2910 připojená k Wi-Fi a nahrávající data na ecowitt.net, a tři API přihlašovací údaje.

Konfigurace

Účet Ecowitt a nastavení Wi-Fi

Konzole WS2910 musí být připojena k Wi-Fi a nahrávat data na ecowitt.net. Počáteční nastavení se provádí přes mobilní aplikaci WSView Plus (iOS / Android):

  1. Napájejte konzoli přiloženým 5V DC adaptérem (Wi-Fi funguje pouze s DC napájením, nikoliv na baterie)
  2. Podržte tlačítka WIND + PRESSURE přibližně 5 sekund, dokud nezačne blikat ikona Wi-Fi a M-B
  3. V aplikaci WSView Plus stiskněte Configure New Device a postupujte podle pokynů na obrazovce pro připojení konzole k lokální Wi-Fi síti
  4. Povolte nahrávání na Ecowitt Weather (ecowitt.net) v nastavení serveru

Po nakonfigurování se data ze senzorů zobrazí na dashboardu ecowitt.net během několika minut.

Získání API přihlašovacích údajů

Pro integraci s TapHome jsou potřeba tři přihlašovací údaje. Všechny se vytvářejí a spravují na ecowitt.net:

  1. Zaregistrujte si účet na www.ecowitt.net (pokud jste tak neučinili při nastavení Wi-Fi)
  2. Ověřte, že se WS2910 zobrazuje na dashboardu s aktuálními daty
  3. Přejděte do sekce API Management
  4. Vytvořte Application Key — identifikuje aplikaci přistupující k API
  5. Vytvořte API Key — uživatelský UUID řetězec
  6. Najděte MAC adresu WS2910 — viditelná v aplikaci WSView Plus v sekci Device List nebo na dashboardu ecowitt.net
Parametry importu

Při importu šablony do TapHome zadejte:

ParametrPopisKde najít
Application keyIdentifikátor aplikace z ecowitt.netAPI Management → Application Key
API keyUživatelský API klíč (formát UUID)API Management → API Key
Mac addressMAC adresa zařízení (XX:XX:XX:XX:XX:XX)Aplikace WSView Plus → Device List, nebo dashboard ecowitt.net

Výchozí interval dotazování je 60 sekund (60 000 ms), což odpovídá intervalu hlášení vnitřního senzoru konzole. Venkovní senzor hlásí data konzoli každých 16 sekund, ale data jsou konzolí agregována před nahráním.

Závislost na internetu

Jedná se o výhradně cloudovou integraci. Všechna data procházejí přes cloudový server Ecowitt (api.ecowitt.net:443). Šablona nebude fungovat bez aktivního internetového připojení na TapHome Core i na konzoli WS2910.

Konzole WS2910 funguje současně jako displej i jako Wi-Fi brána — není potřeba žádné samostatné gateway zařízení. Dokud je konzole napájena DC adaptérem a připojena k Wi-Fi, data se nahrávají automaticky.

Schopnosti zařízení

Teplota a vlhkost

Zařízení Outdoor Temperature čte teplotu (°C) a vlhkost (%) z bezdrátového senzorového pole 7-v-1. Venkovní senzor má rozsah −40 °C až 60 °C s přesností ±1 °C a vlhkost od 1 % do 99 % s přesností ±5 %. Vlhkost je dělena 100 pro analogový vstupní rozsah TapHome 0–1.

Zařízení Indoor Temperature čte teplotu a vlhkost z vestavěných senzorů konzole. Rozsah vnitřní teploty je −10 °C až 60 °C, vlhkost 1 % až 99 %.

K dispozici jsou dvě další vypočítané hodnoty:

  • Outdoor Feels Like Temperature — pocitová teplota zohledňující windchill (pod ~10 °C) a heat index (nad ~27 °C), vypočítaná cloudem Ecowitt z teploty vzduchu, vlhkosti a rychlosti větru
  • Outdoor Dew Point — teplota, při které venkovní vzduch dosáhne nasycení vodními parami, vypočítaná z teploty a vlhkosti
Měření větru

Tři zařízení pokrývají údaje o větru z anemometru a větrné směrovky na venkovním senzorovém poli:

  • Wind Speed — trvalá rychlost větru v km/h. Rozsah 0–180 km/h, přesnost ±1 m/s (pod 5 m/s) nebo ±10 % (nad 5 m/s)
  • Wind Gust — maximální rychlost větru za měřicí interval (nejvyšší 3sekundový průměr) v km/h
  • Wind Direction — směr kompasu, odkud vítr fouká, ve stupních (0° = sever, 90° = východ, 180° = jih, 270° = západ)
Srážky

Čtyři zařízení sledují akumulaci srážek v různých časových škálách, plus okamžitou intenzitu:

  • Hourly Precipitation — akumulované srážky za posledních 60 minut (posuvné okno) v mm
  • Daily Precipitation — akumulované srážky od půlnoci v mm
  • Weekly Precipitation — akumulované srážky od začátku aktuálního týdne v mm
  • Monthly Precipitation — akumulované srážky od prvního dne aktuálního měsíce v mm
  • Rain Rate — aktuální intenzita srážek, extrapolovaná na mm/h. Přesnost objemu srážek je ±10 % s rozlišením 0,3 mm
Atmosférický tlak
  • Air Pressure (Absolute) — atmosférický tlak bez kompenzace nadmořské výšky v hPa. Rozsah 700–1100 hPa, přesnost ±3 hPa
  • Air Pressure (Relative) — atmosférický tlak kompenzovaný na nadmořskou výšku (ekvivalent hladiny moře) v hPa
Sluneční záření a UV
  • Solar Irradiance — intenzita slunečního záření ve W/m². Rozsah světelného senzoru 0–200 klux, přesnost ±15 %
  • UV Index — index ultrafialového záření na mezinárodní stupnici 0–15 (0 v noci, 10+ v poledne v létě)
Další schopnosti

Ecowitt Cloud API také poskytuje akumulaci srážek za událost (resetuje se po skončení deště) a celkové roční srážky. Tyto jsou dostupné v odpovědi API, ale aktuální šablona je nezpracovává. Hardware WS2910 podporuje až 8 dodatečných vícekanálových senzorů teploty/vlhkosti WN31 a až 2 senzory kvality ovzduší PM2.5 WH41/WH43 — API je pravděpodobně zpřístupňuje pod dalšími datovými cestami. Venkovní a vnitřní vlhkost jsou momentálně dostupné pouze jako součást příslušných teplotních zařízení; samostatná zařízení vlhkosti by mohla být přidána v budoucí aktualizaci šablony.

Řešení problémů

API vrací chybu nebo žádná data
  1. Ověřte, že WS2910 je online na ecowitt.net — přihlaste se na dashboard a zkontrolujte, zda se zobrazují aktuální data
  2. Potvrďte správnost všech tří přihlašovacích údajů: application key, API key a MAC adresa
  3. Ujistěte se, že formát MAC adresy přesně odpovídá (XX:XX:XX:XX:XX:XX s dvojtečkami)
  4. Zkontrolujte, zda je konzole WS2910 napájena DC adaptérem (Wi-Fi nefunguje pouze na baterie)
Zastaralé nebo zpožděné hodnoty

Ecowitt Cloud API vrací nejnovější data nahraná konzolí WS2910. Konzole nahrává data v intervalu nakonfigurovaném během nastavení (výchozích 5 minut pro ukládání na ecowitt.net). Šablona se dotazuje API každých 60 sekund, ale podkladová data se mohou aktualizovat méně často v závislosti na intervalu nahrávání.

Výchozí jednotky jsou imperiální

Ecowitt API ve výchozím nastavení vrací data v imperiálních jednotkách (°F, inHg, mph, palce). Šablona explicitně nastavuje metrická ID jednotek v URL API (temp_unitid=1, pressure_unitid=3, wind_speed_unitid=7, rainfall_unitid=12, solar_irradiance_unitid=16) pro příjem všech hodnot v metrických jednotkách. Tato ID jednotek by se neměla upravovat.

Ecowitt Cloud API vyžaduje aktivní internetové připojení a závisí na dostupnosti cloudového serveru Ecowitt. Během výpadků cloudu nebo přerušení internetu šablona nebude přijímat aktualizovaná data.

Dostupná zařízení

Ecowitt WS2910 Modul
Vlastní proměnné
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

Čtení (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 (absolutní) Proměnná Pouze ke čtení

Atmosférický tlak bez kompenzace nadmořské výšky — rozsah 700–1100 hPa

numeric Jednotka: hPa JSON parsejson()

Tlak vzduchu (absolutní)

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

VAR value := PARSEJSON(responseJson,"data.pressure.absolute.value");
RETURN(TODOUBLE(value));
Tlak vzduchu (relativní) Proměnná Pouze ke čtení

Atmosférický tlak kompenzovaný na nadmořskou výšku — ekvivalent hladiny moře v hPa

numeric Jednotka: hPa JSON parsejson()

Tlak vzduchu (relativní)

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

VAR value := PARSEJSON(responseJson,"data.pressure.relative.value");
RETURN(TODOUBLE(value));
Denní srážky Proměnná Pouze ke čtení

Akumulované srážky od půlnoci v mm — reset v 00:00

numeric Jednotka: mm JSON parsejson()

Denní srážky

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

VAR value := PARSEJSON(responseJson,"data.rainfall.daily.value");
RETURN(TODOUBLE(value));
Hodinové srážky Proměnná Pouze ke čtení

Akumulované srážky za posledních 60 minut (posuvné okno) v mm

numeric Jednotka: mm JSON parsejson()

Hodinové srážky

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

VAR value := PARSEJSON(responseJson,"data.rainfall.1_hour.value");
RETURN(TODOUBLE(value));
Vnitřní teplota Teplotní senzor Pouze ke čtení

Vnitřní teplota měřená konzolí (°C) a vlhkost (rozsah 0–1)

numeric Jednotka: °C / % JSON parsejson()

Vnitřní teplota

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

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

VAR value := PARSEJSON(responseJson,"data.indoor.temperature.value");
RETURN(TODOUBLE(value));
Měsíční srážky Proměnná Pouze ke čtení

Akumulované srážky od prvního dne aktuálního měsíce v mm

numeric Jednotka: mm JSON parsejson()

Měsíční srážky

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

VAR value := PARSEJSON(responseJson,"data.rainfall.monthly.value");
RETURN(TODOUBLE(value));
Venkovní rosný bod Proměnná Pouze ke čtení

Teplota, při které venkovní vzduch dosáhne nasycení vodními parami — vypočítaná z teploty a vlhkosti

numeric Jednotka: °C JSON parsejson()

Venkovní rosný bod

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

VAR value := PARSEJSON(responseJson,"data.outdoor.dew_point.value");
RETURN(TODOUBLE(value));
Venkovní pocitová teplota Proměnná Pouze ke čtení

Pocitová teplota zohledňující windchill a heat index

numeric Jednotka: °C JSON parsejson()

Venkovní pocitová teplota

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

VAR value := PARSEJSON(responseJson,"data.outdoor.feels_like.value");
RETURN(TODOUBLE(value));
Venkovní teplota Teplotní senzor Pouze ke čtení

Venkovní teplota (°C) a vlhkost (rozsah 0–1) ze 7-v-1 bezdrátového senzorového pole

numeric Jednotka: °C / % JSON parsejson()

Venkovní teplota

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

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

VAR value := PARSEJSON(responseJson,"data.outdoor.temperature.value");
RETURN(TODOUBLE(value));
Intenzita deště Proměnná Pouze ke čtení

Aktuální intenzita srážek extrapolovaná na mm/h

numeric Jednotka: mm/hr JSON parsejson()

Intenzita deště

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

VAR value := PARSEJSON(responseJson,"data.rainfall.rain_rate.value");
RETURN(TODOUBLE(value));
Sluneční záření Proměnná Pouze ke čtení

Intenzita slunečního záření ve W/m² — rozsah 0–200 klux

numeric Jednotka: W/m² JSON parsejson()

Sluneční záření

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

VAR value := PARSEJSON(responseJson,"data.solar_and_uvi.solar.value");
RETURN(TODOUBLE(value));
UV index Proměnná Pouze ke čtení

Index ultrafialového záření na stupnici 0–15 — 0 v noci, 10+ v poledne v létě

numeric JSON parsejson()

UV index

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

VAR value := PARSEJSON(responseJson,"data.solar_and_uvi.uvi.value");
RETURN(TODOUBLE(value));
Týdenní srážky Proměnná Pouze ke čtení

Akumulované srážky od začátku aktuálního týdne v mm

numeric Jednotka: mm JSON parsejson()

Týdenní srážky

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

VAR value := PARSEJSON(responseJson,"data.rainfall.weekly.value");
RETURN(TODOUBLE(value));
Směr větru Proměnná Pouze ke čtení

Směr kompasu ve stupních — 0° sever, 90° východ, 180° jih, 270° západ

numeric Jednotka: ° JSON parsejson()

Směr větru

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

VAR value := PARSEJSON(responseJson,"data.wind.wind_direction.value");
RETURN(TODOUBLE(value));
Náraz větru Proměnná Pouze ke čtení

Maximální rychlost větru za měřicí interval v km/h

numeric Jednotka: km/h JSON parsejson()

Náraz větru

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

VAR value := PARSEJSON(responseJson,"data.wind.wind_gust.value");
RETURN(TODOUBLE(value));
Rychlost větru Proměnná Pouze ke čtení

Trvalá rychlost větru z anemometru v km/h — rozsah 0–180 km/h

numeric Jednotka: km/h JSON parsejson()

Rychlost větru

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

VAR value := PARSEJSON(responseJson,"data.wind.wind_speed.value");
RETURN(TODOUBLE(value));
Připojení: Packet Parser → HTTP
Možná vylepšení (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