EaSun Live
EaSun Systém
Efektivní využití solární energie

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