WEATHER_APLIKACE.H - METEOROLOGICKÝ SYSTÉM PRO ESP32
Právě se nacházíte: Home / vyvoj /
Tento soubor obsahuje kompletní implementaci meteorologického systému
pro ESP32 s integrací OpenWeatherMap API v3.0 a pokročilým ukládáním
dat do SPIFFS (SPI Flash File System).
HLAVNÍ FUNKCIONALITY
🌤️ METEOROLOGICKÁ DATA:
- Aktuální počasí v reálném čase
- 24hodinová předpověď počasí
- 7denní předpověď
- Detailní meteorologické údaje (teplota, vlhkost, tlak, vítr, UV index)
- Meteorologická varování a upozornění
- Predikce oblačnosti s grafickým zobrazením
🔗 API INTEGRACE:
- OpenWeatherMap API v3.0 (One Call API)
- Automatická kontrola API limitů
- Dynamické načítání API klíčů
- Robustní error handling s tipy na řešení
- Podpora českého jazyka
💾 PERSISTENTNÍ ÚLOŽIŠTĚ:
- SPIFFS integrace pro trvalé ukládání dat
- Automatické načítání dat při startu
- Více formátů uložení (JSON, TXT, DAT)
- Debug a diagnostické možnosti
🌐 WEBOVÉ ROZHRANÍ:
- Responzivní HTML stránky
- Real-time aktualizace dat
- Grafické zobrazení předpovědi
- Administrační rozhraní pro nastavení
STRUKTURA SOUBORŮ V SPIFFS
/weather_raw.json - Kompletní JSON odpověď z OpenWeatherMap API
/weather_data.txt - Lidsky čitelný formát pro debug a zobrazení
/weather_struct.dat - Strukturovaná data (oddělovač ;)
/weather_forecast.dat - Predikce oblačnosti (oddělovač ,)
/weather_last_update.ea - Čas poslední aktualizace
/weather_api_key.ea - API klíč
/weather_api_count.ea - Počet API volání dnes
/weather_api_limit.ea - Denní limit API volání
/weather_api_limit_enabled.ea - Povolení kontroly limitu
/weather_api_reset.ea - Čas posledního resetu počítadla
HLAVNÍ FUNKCE
🔧 NAČÍTÁNÍ A ULOŽENÍ DAT:
- loadWeatherDataFromSPIFFS() - Načítání dat ze SPIFFS při startu
- parseAndStoreWeatherData() - Parsování JSON a ukládání do SPIFFS
- processWeatherApiData() - Hlavní funkce pro stažení dat z API
🌐 API A URL GENEROVÁNÍ:
- generateWeatherApiUrl() - Generování URL pro OpenWeatherMap API
- getOpenWeatherMapErrorMessage() - Zpracování chyb API s tipy na řešení
📊 ZOBRAZENÍ A GRAFY:
- generateWeatherGraph() - Generování grafu předpovědi oblačnosti
- generateWeatherPage() - Hlavní stránka meteorologického systému
🔒 KONTROLA LIMITŮ:
- checkDailyApiCallLimit() - Kontrola denního limitu API volání
- incrementApiCallCount() - Zvýšení počtu API volání
WORKFLOW AKTUALIZACE DAT
1. STAŽENÍ DAT:
- Generování URL s API klíčem a souřadnicemi
- HTTP GET request na OpenWeatherMap API
- Kontrola HTTP response kódu
- Validace délky odpovědi (prevence memory overflow)
2. ZPRACOVÁNÍ DAT:
- Parsování JSON pomocí ArduinoJson knihovny
- Extrakce meteorologických údajů
- Zpracování varování a upozornění
- Generování predikce oblačnosti
3. UKLÁDÁNÍ DO SPIFFS:
- Surová JSON data → /weather_raw.json
- Lidsky čitelná data → /weather_data.txt
- Strukturovaná data → /weather_struct.dat
- Predikce oblačnosti → /weather_forecast.dat
- Timestamp aktualizace → /weather_last_update.ea
4. NAČÍTÁNÍ PŘI STARTU:
- Automatické načítání dat ze SPIFFS
- Obnovení globálních proměnných
- Fallback na původní systém
WEBOVÉ ENDPOINTY
/weather - Hlavní stránka meteorologického systému
/weather_data - Zobrazení aktuálních meteorologických dat
/weather_update - Ruční aktualizace dat z API
/weather_raw - Surová JSON data z API
/weather_files - Přehled všech souborů v SPIFFS
/getweather - Formulář pro nastavení API klíče
GLOBÁLNÍ PROMĚNNÉ
🌡️ AKTUÁLNÍ POČASÍ:
- weatherTemperature - Teplota (°C)
- weatherFeelsLike - Pocitová teplota (°C)
- weatherHumidity - Vlhkost (%)
- weatherDewPoint - Rosný bod (°C)
- weatherCloudCover - Oblačnost (%)
- weatherPrecipitation - Srážky (mm/h)
- weatherWindSpeed - Rychlost větru (m/s)
- weatherWindGust - Nárazový vítr (m/s)
- weatherWindDirection - Směr větru (°)
- weatherPressure - Atmosférický tlak (hPa)
- weatherUVI - UV index
- weatherVisibility - Viditelnost (km)
- weatherDescription - Popis počasí
- weatherIcon - Ikona počasí
⚠️ VAROVÁNÍ:
- weatherAlertActive - Aktivní varování (true/false)
- weatherAlertEvent - Typ varování
- weatherAlertDescription - Popis varování
📈 PŘEDPOVĚĎ (24 hodin):
- weatherForecastTemp[24] - Teplota po hodinách
- weatherForecastClouds[24] - Oblačnost po hodinách
- weatherForecastPrecip[24] - Srážky po hodinách
- weatherForecastHumidity[24] - Vlhkost po hodinách
🔧 SYSTÉMOVÉ:
- weatherDataAvailable - Dostupnost dat (true/false)
- weatherLastUpdate - Čas poslední aktualizace
- lastWeatherUpdate - Millis timestamp poslední aktualizace
KONFIGURACE A NASTAVENÍ
📍 SOUŘADNICE:
- solarLat - Zeměpisná šířka (latitude)
- solarLon - Zeměpisná délka (longitude)
🔑 API NASTAVENÍ:
- OPENWEATHERMAP_API_KEY - Statický API klíč (z kódu)
- dynamicWeatherApiKey - Dynamický API klíč (ze souboru)
- OPENWEATHERMAP_BASE_URL - Base URL pro API
⏱️ ČASOVÉ LIMITY:
- dailyApiCallLimit - Denní limit API volání
- dailyApiCallCount - Počet API volání dnes
- apiCallLimitEnabled - Povolení kontroly limitu
ERROR HANDLING A DIAGNOSTIKA
🚨 HTTP CHYBY:
- 400: Špatný požadavek (neplatné parametry)
- 401: Neautorizováno (neplatný API klíč)
- 404: Nenalezeno (neplatné souřadnice)
- 429: Příliš mnoho požadavků (dosažen limit)
- 500-504: Problémy serveru OpenWeatherMap
🔍 DEBUG REŽIM:
- WebSerialAno = 2 - Detailní logování do sériového portu
- Kontrola ukládání souborů
- Validace JSON dat
- Monitoring API volání
VÝHODY SYSTÉMU
✅ PERSISTENCE: Data zůstávají po restartu ESP32
✅ ROBUSTNOST: Robustní error handling a fallback mechanismy
✅ DEBUG: Pokročilé možnosti diagnostiky a kontroly
✅ EFFICIENCY: Strukturované ukládání pro rychlý přístup
✅ COMPATIBILITY: Zachování stávající funkcionality
✅ SCALABILITY: Snadné rozšiřování o nové funkce
✅ USER-FRIENDLY: Intuitivní webové rozhraní s tipy na řešení
TECHNICKÉ POŽADAVKY
📱 HARDWARE:
- ESP32 s WiFi
- Minimálně 4MB SPIFFS
- Stabilní napájení
📚 KNIHOVNY:
- ArduinoJson (6.x)
- HTTPClient
- WiFi
- SPIFFS
- AsyncWebServer
🌐 SÍŤ:
- Stabilní WiFi připojení
- Přístup k internetu
- DNS rozlišení
Tento soubor je součástí projektu ESP32-Grid-Load-VypocetXX
