⚡ EaSun - PowMr Solar Control

Kompletní průvodce logikou a prioritami systému řízení

📋 Přehled
🎛️ Sjednocené řízení
🎯 Priority
🧠 Adaptivní
🔋 Optimalizace
⚙️ Původní
📋 Přehled systému

🎯 Tři hlavní režimy řízení:

Režim Adaptivní řízení Automatická optimalizace Co se automaticky vypne Popis
🧠 Adaptivní ZAPNUTO VYPNUTO 🔋 Automatická optimalizace Nejpokročilejší režim - testuje reakci měniče
🔋 Optimalizace VYPNUTO ZAPNUTO 🧠 Adaptivní řízení Priorita nabíjení baterie, pak topení
⚙️ Původní VYPNUTO VYPNUTO 🧠 Adaptivní + 🔋 Optimalizace Klasické řízení podle solárního přebytku
⚠️ DŮLEŽITÉ - Vzájemné vypínání režimů:
Zapnu-li Adaptivní řízení → automaticky se vypne Automatická optimalizace
Zapnu-li Automatickou optimalizaci → automaticky se vypne Adaptivní řízení
Zapnu-li Původní režim → automaticky se vypnou oba pokročilé režimy

🎯 Pravidlo priority: Adaptivní > Optimalizace > Původní
🎛️ NOVÉ: Sjednocené řízení režimů
Všechny tři režimy nyní můžete ovládat z jednoho místa na stránce /system-modes. Po výběru režimu se dynamicky zobrazí relevantní nastavení pro daný režim.

🔄 Společné kroky pro všechny režimy:

  1. Regulace podle baterie - RegulacePwmPodleBaterieFunkce()
  2. Regulace podle distributora - RegulacePwmPodleDistributoraFunkce()
  3. Ochrana před extrémním odběrem - TestRezim_ApplyExtremeLoadProtection()
  4. Finální úpravy - FinalniUpravyARegulacePwmFunkce()
  5. Prediktivní řízení - predictiveLoadControl()
  6. Plynulá regulace PWM - smoothPwmRegulation() (pokud povoleno)
🎛️ Sjednocené řízení režimů
🎛️ NOVÁ FUNKCIONALITA - ZLEPŠENÉ UX:
Všechny tři režimy řízení nyní můžete ovládat z jednoho místa na stránce /system-modes s vylepšeným uživatelským rozhraním

🚀 Jak vylepšené sjednocené řízení funguje:

1️⃣ SELECT BOX VÝBĚR
Uživatel vybere režim z přehledného select boxu
2️⃣ OKAMŽITÉ ZOBRAZENÍ
Automaticky se zobrazí informace + nastavení pro vybraný režim
3️⃣ NASTAVENÍ HODNOT
Uživatel vyplní potřebné parametry přímo na stránce
4️⃣ JEDNÍM KLIKEM AKTIVACE
Tlačítko "Aktivovat vybraný režim" uloží vše najednou
✨ NOVÉ VYLEPŠENÍ UX:
Select box místo radio buttonů - přehlednější výběr
Okamžité zobrazení nastavení - po výběru režimu se hned zobrazí potřebné parametry
Žádné proklikávání - všechno nastavíte na jedné stránce
Informativní popis - ke každému režimu se zobrazí krátký popis funkcí

📋 Dostupná nastavení pro každý režim:

Režim Počet nastavení Co se vypne Dostupné parametry
🧠 Adaptivní 5 parametrů 🔋 Automatická optimalizace • Interval testování (1000-10000ms)
• Testovací krok PWM (1-20%)
• Práh reakce (10-200W)
• Max přetok (50-1000W)
• Typ měniče (Klasický/ECO)
🔋 Optimalizace 4 parametry 🧠 Adaptivní řízení • Cílový SOC (70-100%)
• Kritický SOC (30-80%)
• Max výkon (1000-5000W)
• Min výkon (100-1000W)
⚙️ Původní 0 parametrů 🧠 Adaptivní + 🔋 Optimalizace Používá základní parametry systému

🔄 Logika automatického nastavení:

// Když uživatel vybere režim, automaticky se nastaví: switch(selectedMode) { case "adaptive": TestRezim_adaptiveControlEnabled = true; autoOptimizationEnabled = false; // Automaticky vypnuto break; case "optimization": TestRezim_adaptiveControlEnabled = false; // Automaticky vypnuto autoOptimizationEnabled = true; break; case "original": TestRezim_adaptiveControlEnabled = false; // Automaticky vypnuto autoOptimizationEnabled = false; // Automaticky vypnuto break; }

🌟 Výhody sjednoceného řízení:

  • 🎯 Jednoduché: Jeden výběr místo tří složitých nastavení
  • 🛡️ Bezpečné: Automatické vypínání konfliktních režimů
  • 📱 Přehledné: Dynamické zobrazení pouze relevantních nastavení
  • ⚡ Rychlé: Okamžité nastavení hodnot bez přecházení mezi stránkami
  • 🔄 Kompatibilní: Zachovává všechny existující funkce
💡 Přístup k sjednocenému řízení:
Hlavní menu: Klik na "Režimy"
Přímý odkaz: http://[IP-adresa]/system-modes
Ze starých stránek: Žlutý banner s odkazem
⚠️ AUTOMATICKÉ VYPÍNÁNÍ REŽIMŮ:
🧠 Vyberu Adaptivní řízení:
   ✅ TestRezim_adaptiveControlEnabled = true
   ❌ autoOptimizationEnabled = false (VYPNE SE)

🔋 Vyberu Automatickou optimalizaci:
   ❌ TestRezim_adaptiveControlEnabled = false (VYPNE SE)
   ✅ autoOptimizationEnabled = true

⚙️ Vyberu Původní režim:
   ❌ TestRezim_adaptiveControlEnabled = false (VYPNE SE)
   ❌ autoOptimizationEnabled = false (VYPNE SE)

• Nastavení se ukládají do SPIFFS souborů
• Změny se projeví okamžitě po uložení
• Staré stránky (/adaptive, /batteryoptimization) stále fungují
🎯 Detailní priority vykonávání
1
🔍 Detekce režimu a základní výpočet
Systém nejprve určí, který režim je aktivní a provede základní výpočty.
VypocetSolarSpotrebaRefactored() - hlavní funkce
→ Inkrementace čítačů
→ Kontrola autoOptimizationEnabled
2
⚡ Výpočet PWM podle solárního stavu
Podle dostupnosti solární energie se volá příslušná logika.
Podmínka: Pokud autoOptimizationEnabled == true
→ Používá getOptimizedSolarWMin()
Jinak: Používá původní solarWMin
Při solárním přebytku: LogikaSolarPrebytekFunkce()
Při nedostatku: LogikaGridNeboSolarNedostatekFunkce()
3
🔋 Regulace podle baterie
Úprava PWM podle stavu baterie a jejích limitů.
RegulacePwmPodleBaterieFunkce(pwmProVypocet)
4
🏭 Regulace podle distributora
Úprava PWM podle nastavení distributora energie.
RegulacePwmPodleDistributoraFunkce(pwmProVypocet)
5
🔋 Automatická optimalizace (podmíněně)
DŮLEŽITÉ: Spouští se pouze pokud je autoOptimizationEnabled == true A zároveň TestRezim_adaptiveControlEnabled == false
Podmínka:
if (autoOptimizationEnabled && !TestRezim_adaptiveControlEnabled)
applyBatteryOptimization(pwmProVypocet)
→ Priorita nabíjení baterie
→ Plynulé zvyšování PWM
→ Ochrana před přebíjením
6
⚡ Ochrana před extrémním odběrem
Prediktivní a okamžitá ochrana před nebezpečným odběrem.
TestRezim_ApplyExtremeLoadProtection(pwmProVypocet)
7
🔧 Finální úpravy
Kontrola limitů, ohraničení PWM a finální validace.
FinalniUpravyARegulacePwmFunkce(pwmProVypocet)
8
🔮 Prediktivní řízení
Kompenzace zpoždění SSR relé a predikce chování.
predictiveLoadControl(pwmProVypocet, loadW, solarW)
9
🌊 Plynulá regulace PWM
Aplikace nastavení rychlosti PWM pro plynulé změny (pokud povoleno).
Podmínka: if (enableSlowPwmMode == true)
smoothPwmRegulation(PWMNastav)
→ Používá pwmSpeed, pwmSmoothing, pwmDelay
→ Zajišťuje plynulé přechody
⚠️ Kritické poznámky:
• Adaptivní řízení má absolutní prioritu - když je zapnuté, automatická optimalizace se nepoužije
• Plynulá regulace PWM se aplikuje na konečný výsledek ze všech předchozích kroků
• Bezpečnostní funkce (ochrana před extrémním odběrem) nelze vypnout
🧠 Adaptivní řízení - nejpokročilejší režim
🎯 Aktivace: TestRezim_adaptiveControlEnabled = true
🔄 Priorita: Nejvyšší - potlačuje automatickou optimalizaci
🎛️ Snadné nastavení:
Adaptivní řízení můžete aktivovat a nastavit na stránce /system-modes. Po výběru se zobrazí všech 5 parametrů pro přizpůsobení vašemu měniči.

🔍 Jak funguje adaptivní řízení:

🚨 KROK 1: Bezpečnostní kontroly
Okamžité zastavení při přetocích do sítě
❓ KROK 2: Testovací interval
Čas od posledního testu > nastavený interval?
📈 KROK 3: Testování reakce
Zvýšení PWM o testovací krok
🔍 KROK 4: Vyhodnocení
Měnič zvýšil výrobu > práh?
🎯 KROK 5: Adaptace
Úprava strategie podle výsledku

⚙️ Klíčové parametry:

Parametr Účel Doporučeno ECO Doporučeno klasický
Test Interval Jak často testovat reakci měniče 1500ms 3000ms
Test Step O kolik % zvýšit PWM při testu 8-12% 3-7%
Solar Threshold Minimální nárůst výroby pro "úspěch" 30W 50W
Max Grid Flow Maximální přetok do sítě 300-400W 200W

🔄 Integrace s ostatními systémy:

✅ Co adaptivní řízení RESPEKTUJE:
• Regulaci podle baterie
• Regulaci podle distributora
• Ochranu před extrémním odběrem
• Finální úpravy a limity
• Plynulou regulace PWM
⚠️ Co adaptivní řízení POTLAČUJE:
• Automatickou optimalizaci baterie (applyBatteryOptimization)
• Plynulé zvyšování PWM z optimalizace
// Volání v LogikaSolarPrebytekFunkce(): if (TestRezim_adaptiveControlEnabled) { // Adaptivní řízení je zapnuté - přeskočíme původní logiku currentPwm = TestRezim_IntelligentAdaptiveControl(currentPwm, solarW, loadW, cezW); } else if (autoOptimizationEnabled) { // Automatická optimalizace } else { // Původní logika }

🎯 Výhody adaptivního řízení:

  • 🧠 Inteligentní učení: Systém se učí chování vašeho měniče
  • 🚫 Žádné přetoky: Okamžitá reakce na přetok do sítě
  • ⚡ Maximální výkon: Využije maximum z dostupné solární energie
  • 🔧 ECO podpora: Speciální nastavení pro ECO měniče
  • 🛡️ Bezpečnost: Konzervativní přístup s okamžitou ochranou
🔋 Automatická optimalizace
🎯 Aktivace: autoOptimizationEnabled = true A TestRezim_adaptiveControlEnabled = false
🔄 Priorita: Střední - funguje pouze když není zapnuté adaptivní řízení
🎛️ Snadné nastavení:
Automatickou optimalizaci můžete aktivovat a nastavit na stránce /system-modes. Po výběru se zobrazí všechny 4 parametry pro optimalizaci baterie.

🎯 Filosofie automatické optimalizace:

📋 Hlavní princip:
"Nejprve nabij baterii na optimální úroveň, pak použij přebytek na topení"

🔄 Dvě fáze optimalizace:

1
🔋 Fáze nabíjení baterie
Když je SOC baterie pod optimální úrovní, priorita je na nabíjení.
Podmínka: batterySOC < optimalBatterySOC
Akce: Snížení PWM pro topení → více energie pro baterii
batteryChargePriority = 2.0 - (batterySOC / optimalBatterySOC)
→ Čím nižší SOC, tím vyšší priorita nabíjení
2
🔥 Fáze topení
Když je baterie dostatečně nabitá, přebytek jde na topení.
Podmínka: batterySOC >= optimalBatterySOC
Akce: Plynulé zvyšování PWM pro topení
smoothPwmRegulation() s nastavenou rychlostí
→ Používá pwmSpeed, pwmSmoothing, pwmDelay

🎛️ Klíčové parametry optimalizace:

Parametr Účel Výchozí hodnota
optimalBatterySOC Cílová úroveň nabití baterie 85%
criticalBatterySOC Kritická úroveň - maximální nabíjení 70%
maxBatteryChargePower Maximální výkon nabíjení 3000W
batteryChargePriority Vypočítaný faktor priority 1.0 - 2.0

🧮 Výpočet priority nabíjení:

// Výpočet priority nabíjení baterie if (batterySOC < optimalBatterySOC) { batteryChargePriority = 2.0 - (batterySOC / optimalBatterySOC); // Čím nižší SOC, tím vyšší priorita (max 2.0) } else { batteryChargePriority = 1.0; // Baterie je dostatečně nabitá } // Aplikace priority na PWM if (batteryChargePriority > 1.5) { // Vysoká priorita nabíjení - snížit topení optimizedPwm = currentPwm * (2.0 - batteryChargePriority); } else { // Normální režim - plynulé zvyšování optimizedPwm = smoothPwmRegulation(currentPwm); }

⚠️ Speciální situace:

🌦️ Nepříznivé počasí:
Když je aktivní weatherWarning, systém preferuje nabíjení baterie bez ohledu na aktuální SOC.
🔄 Integrace s plynulou regulací:
Automatická optimalizace využívá smoothPwmRegulation() pro plynulé změny PWM, což zajišťuje stabilní chování systému.

📊 Příklad chování:

Scénář 1: SOC = 60%, optimal = 85% → batteryChargePriority = 2.0 - (60/85) = 1.29 → Mírná priorita nabíjení, PWM mírně sníženo Scénář 2: SOC = 40%, optimal = 85% → batteryChargePriority = 2.0 - (40/85) = 1.53 → Vysoká priorita nabíjení, PWM výrazně sníženo Scénář 3: SOC = 90%, optimal = 85% → batteryChargePriority = 1.0 → Normální režim, plynulé zvyšování PWM
⚙️ Původní režim - klasické řízení
🎯 Aktivace: autoOptimizationEnabled = false A TestRezim_adaptiveControlEnabled = false
🔄 Priorita: Základní - používá se když jsou ostatní režimy vypnuté
🎛️ Snadné nastavení:
Původní režim můžete aktivovat na stránce /system-modes. Žádná dodatečná nastavení nejsou potřeba - systém používá základní parametry.

🎯 Filosofie původního režimu:

📋 Hlavní princip:
"Jednoduché řízení podle dostupnosti solární energie a základních prahových hodnot"

🔄 Logika původního režimu:

❓ Je dostatek solární energie?
solarW > solarWMin
☀️ ANO: Solární přebytek
Volá se LogikaSolarPrebytekFunkce()
🏭 NE: Nedostatek energie
Volá se LogikaGridNeboSolarNedostatekFunkce()

📊 Klíčové parametry původního režimu:

Parametr Účel Typ hodnoty
solarWMin Minimální solární výkon pro aktivaci topení Pevně nastavená hodnota
loadWMin Minimální zatížení systému Pevně nastavená hodnota
distributor1 Stav distributora energie Stavová proměnná

🌞 LogikaSolarPrebytekFunkce() - při přebytku:

// Původní logika v LogikaSolarPrebytekFunkce() if (!autoOptimizationEnabled && !TestRezim_adaptiveControlEnabled) { // Používá původní algoritmus // - Jednoduché výpočty podle solárního přebytku // - Základní regulace podle baterie // - Bez pokročilých optimalizací }
✅ Výhody původního režimu:
• Jednoduchá a ověřená logika
• Rychlá odezva
• Minimální složitost
• Spolehlivé chování

🏭 LogikaGridNeboSolarNedostatekFunkce() - při nedostatku:

// Při nedostatku solární energie if (solarW <= solarWMin || (loadW + (loadW * loadWMin)) > solarW) { // Snížení nebo zastavení topení // Priorita pro základní spotřebu // Ochrana před přebíráním ze sítě }
⚠️ Omezení původního režimu:
• Nemá pokročilé učení
• Neoptimalizuje podle stavu baterie
• Nereaguje na specifika ECO měničů
• Méně efektivní využití energie

🔄 Společné kroky s ostatními režimy:

🔧 I původní režim prochází stejnými kroky:
1. Regulace podle baterie
2. Regulace podle distributora
3. Ochrana před extrémním odběrem
4. Finální úpravy
5. Prediktivní řízení
6. Plynulá regulace PWM (pokud povoleno)

📈 Kdy použít původní režim:

  • 🔧 Testování: Pro ověření základní funkčnosti
  • 🏠 Jednoduché systémy: Bez složitých požadavků
  • 🛠️ Řešení problémů: Když pokročilé režimy způsobují potíže
  • ⚖️ Stabilní prostředí: Kdy není potřeba adaptace
// Aktivace původního režimu v nastavení: autoOptimizationEnabled = false; TestRezim_adaptiveControlEnabled = false; // Systém automaticky použije původní logiku Serial.println("PUVODNI LOGIKA - pouzivam solarWMin a dalsi puvodni hodnoty");