Mobilní bateriová uložiště: realita anebo utopie? Je vůbec možné je využít v praxi?

28. 5. 2025 16:49 | , Finance.cz
Spotřebitel
perex-img Zdroj: Shutterstock

Lex OZE III otevírá prostor pro masivní využití mobilních bateriových úložišť, díky kterým se firmy a domácnosti mohou zbavovat závislosti na dodavatelích, dosáhnout větší flexibility a šetřit nemalé náklady. Elektřina „sbalená na cesty“ navíc pomůže tam, kde není přípojka do distribuční sítě elektřiny a kombinací s fotovoltaikou, případně generátorem vytvoří stabilní a velmi efektivní ostrovní systém.

Lex OZE III: Mobilní bateriová uložiště mohou uložit elektřinu z fotovoltaiky či levně nakoupenou na trhu

Elektřinu vyrobenou například fotovoltaikou nebo levně nakoupenou ve spotových cenách lze díky mobilním bateriovým úložištím skladovat a využít ji na jiném místě nebo tehdy, kdy je zrovna potřeba. Dříve české zákony zohledňovaly pouze baterie připojené přímo ke zdroji energie. Nedávno schválený energetický zákon Lex OZE III ale otevírá samostatně stojícím bateriovým úložištím prostor k jejich širšímu využití pro stabilizaci sítě a vyrovnávání výkyvů mezi výrobou a spotřebou elektřiny a zajištění potřebné flexibility.

Vyrobenou elektřinou pak lze pokrýt období, kdy jsou ceny elektřiny na maximu. Úložiště dělá z fotovoltaiky stabilnější zdroj energie. Stejně tak může úložiště sloužit k nabíjení z distribuční sítě za spotové ceny, pokud se pohybují velmi nízko. Tuto elektřinu pak lze spotřebovávat tehdy, když je naopak cena v distribuční síti vysoká. Variabilita různých aplikací mobilních úložišť je ale mnohem širší.

Kdy je ostrovní řešení účinný pro průmysl nebo stavebnictví?

Mobilní bateriové úložiště rovněž dokáže přivést dostatek elektřiny tam, kde se nelze připojit do sítě. Typicky jde o odlehlé lokality, kde je velmi zajímavým příkladem využití velkokapacitních úložišť využívaných pro pohon těžební techniky společností MND působící jakožto největší hráč na území ČR v ropném a plynárenském sektoru. 

„Problémem je zejména izolovanost těžebních středisek bez přístupu k elektrické energii, což bylo původně řešeno naftovými a plynovými generátory. Ty ale musely být pro zajištění provozu všech spotřebičů střediska příliš naddimenzované,“ popisuje Jakub Koníček ze společnosti Solforen, která se specializuje na plynové generátory a bateriová úložiště. „Řešením bylo v případě MND doplnit ostrovní systém mobilním bateriovým úložištěm. Díky snadné konektivitě jej lze dobíjet pomocí fotovoltaických panelů, z veřejné sítě nebo právě z generátoru, případně více možností kombinovat. Při malé spotřebě tak těžebnímu středisku dodává energii baterie, která je primárně dobíjena z FVE. Jakmile se vybije nebo se zvýší spotřeba energie, automaticky se spustí elektrocentrála spalující zemní plyn. V této hybridní konfiguraci běží generátory pouze po nezbytně nutný čas, což výrazně zefektivňuje provoz celého systému,“ dodává Jakub Koníček.

Dalším příkladem užití může být stavebnictví, kde firmy často potřebují vybudovat urychleně adekvátní zázemí, kamerový systém atd. na „zelené louce“. 

Jsou mobilní baterie vhodné pro domácnosti?

Bateriová úložiště ale nemusí zdaleka využívat jen firmy. Jsou vhodná také pro domácnosti. Příkladem může být zákazník, který chtěl svůj dům odpojit se od distribuční sítě elektřiny. „Takové řešení vyžaduje navýšení kapacity stávajícího bateriového úložiště, což nebylo v rámci dané instalace fotovoltaiky možné. Řešením bylo externí mobilní úložiště, které mohlo být instalováno venku třeba vedle garáže,“ popisuje Jakub Koníček a doplňuje příklad chaty na konci elektrické přípojky: „Napájení od distribuce bylo nestabilní, často vypadávaly ochrany tepelného čerpadla. Bateriové úložiště objektu zajistilo stabilizaci napájení.“ 

Mobilní uložiště a nabíjení firemních elektroflotil

Úložiště dále řeší potřeby elektromobility, například u rozvážkových firem. „Evidujeme několik poptávek na zajištění energie pro zázemí rozvozových dodávek na elektřinu. Problémem obvykle bývá nedostatečná kapacita přípojky pro dobití několika vozidel najednou. Jednoduchým řešením je opět mobilní úložiště o dostatečné kapacitě, které lze nabíjet průběžně celou noc nebo den tak, aby bylo možné dodávky dobít, jakmile je potřeba,“ dodává Jakub Koníček.

Mobilní úložiště je designováno tak, aby uživatelům co nejvíce ulehčilo transport. Je tedy vybaveno lyžinami pro vysokozdvižné vozíky či transportními oky. Menší verze lze pak jednoduše převážet na běžném přípojném vozíku k automobilu.

Bateriové úložiště lze doplnit generátorem a dále rozšířit o zásobník na propan. Ten pohání elektrocentrálu, čímž vzniká zcela nezávislý energetický mix. Dobře navržené a umístěné solární panely pak mohou domácnostem nebo podnikům zajistit velmi efektivní off-grid systém.

PODCAST: Evropské spalováky brzy nebude chtít ani Afrika, věští „Electro Dad“ Staněk

  • Jak Čína ovlivňuje světové automobilky a proč?
  • Která čínská automobilka bude do 5 let mezi 3 největšími automobilkami světa a proč?
  • Jak si ověřit stav baterie u bazarového elektromobilu?
  • Kolik stál Jana Staňka servis jeho elektromobilů?
  • Jaký je rozdíl v cenách pojištění u elektromobilu a spalovacího auta?
Zdroj: Youtube.com/Finance.cz
 
Štítky:

Články ze sekce: Spotřebitel


'; document.getElementById('outstream-iframe').onload = function(){ setupIframe(); } } function setupIframe() { outstreamDocument = document.getElementById('outstream-iframe').contentWindow.document; let el = outstreamDocument.createElement('style'); el.type = 'text/css'; outstreamDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe {width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{width:100vw;height:100vh}body{font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{overflow:hidden;background:#000}#adMuteBtn{width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:-5px;right:25px}"; videoContent = outstreamDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; if (!outstream_direct_played) { console.log('Setup iframe: direct'); setUpIMA(true); } else if (iinfoOutstreamAllowed) { console.log('Setup iframe: allowed article'); const playPromise = videoContent.play(); playPromise.then(function () { console.log('OUTSTREAM sound allowed'); setUpIMA(false); }).catch(function () { renderPassback(); }); } else { console.log('Setup iframe: passback'); renderPassback(); } } /** * Sets up IMA ad display container, ads loader, and makes an ad request. */ function setUpIMA(direct) { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function() { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); if (direct) { adsRequest.adTagUrl = iinfoVastDirect; console.log('Outstream DIRECT CAMPAING advert: ' + iinfoVastDirect); videoContent.muted = true; videoContent.volume = 0; outstream_direct_played = true; } else { adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Outstream advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; } adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } /** * Sets the 'adContainer' div as the IMA ad display container. */ function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. outstreamDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( outstreamDocument.getElementById('adContainer'), videoContent); } function unmuteAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(1); outstreamDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); outstreamDocument.getElementById('adMuteBtn').innerHTML = ''; } } /** * Loads the video content and initializes IMA ad playback. */ function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); try { adsManager.init(outstream_width_init, outstream_height_init, google.ima.ViewMode.NORMAL); adsManager.start(); } catch (adError) { } } /** * Handles the ad manager loading and sets ad event listeners. * @param {!google.ima.AdsManagerLoadedEvent} adsManagerLoadedEvent */ function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } /** * Handles actions taken in response to ad events. * @param {!google.ima.AdEvent} adEvent */ function onAdEvent(adEvent) { // Retrieve the ad from the event. Some events (for example, // ALL_ADS_COMPLETED) don't have ad object associated. const ad = adEvent.getAd(); console.log('Outstream event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: // This is the first event sent for an ad - it is possible to // determine whether the ad is a video ad or an overlay. if (!ad.isLinear()) { // Position AdDisplayContainer correctly for overlay. // Use ad.width and ad.height. videoContent.play(); } outstreamDocument.getElementById('adContainer').style.width = '100%'; outstreamDocument.getElementById('adContainer').style.maxWidth = '640px'; outstreamDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); // This event indicates the ad has started - the video player // can adjust the UI, for example display a pause button and // remaining time. if (ad.isLinear()) { // For a linear ad, a timer can be started to poll for // the remaining time. intervalTimer = setInterval( function() { // Example: const remainingTime = adsManager.getRemainingTime(); }, 300); // every 300ms } //unmuteAdvert(); outstreamDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (outstream_last_error == 303) { renderPassback(); } break; case google.ima.AdEvent.Type.COMPLETE: // This event indicates the ad has finished - the video player // can perform appropriate UI actions, such as removing the timer for // remaining time detection. if (ad.isLinear()) { clearInterval(intervalTimer); } if (true) { renderPassback(); } break; } } function renderPassback() { console.log('Outstream Spouštím Passback'); advertContainer.innerHTML = ""; advertContainer.appendChild(passBackDiv); } /** * Handles ad errors. * @param {!google.ima.AdErrorEvent} adErrorEvent */ function onAdError(adErrorEvent) { // Handle the error logging. console.log(adErrorEvent.getError()); outstream_last_error = adErrorEvent.getError().getErrorCode(); console.log(outstream_last_error); if (!loadNext()) { renderPassback(); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrls.length > iinfoVastUrlIndex) { outstream_init(); } else { return false; } adVolume = 1; return true; } function onContentPauseRequested() { videoContent.pause(); } function onContentResumeRequested() { videoContent.play(); } function onActiveView() { console.log('outstream onActiveView()'); var wrapper = document.getElementsByClassName('outstream-container')[0]; if (wrapper) { var containerOffset = wrapper.getBoundingClientRect(); var windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (outstream_paused) { adsManager.resume(); outstream_paused = false; /*window.removeEventListener('scroll', onActiveView);*/ console.log('Outstream: ad resume()'); } return true; } else { if (!outstream_paused) { adsManager.pause(); outstream_paused = true; /*window.removeEventListener('scroll', onActiveView);*/ console.log('Outstream: ad pause()'); } } } return false; } let outstream_initialize_interval = setInterval(tryToInicializeOutstream, 100); function tryToInicializeOutstream() { console.log(cpexPackage.adserver.displayed); var wrapper = document.getElementsByClassName('outstream-container')[0]; if (wrapper) { var containerOffset = wrapper.getBoundingClientRect(); var windowHeight = window.innerHeight; if (containerOffset.top < windowHeight / 1 && containerOffset.bottom > 0.0) { if (cpexPackage.adserver.displayed) { clearInterval(outstream_initialize_interval); outstream_init(); } } } }
OSZAR »