{"id":6708,"date":"2026-09-09T17:00:57","date_gmt":"2026-09-09T17:00:57","guid":{"rendered":"https:\/\/renewe.fi\/?page_id=6708"},"modified":"2026-10-05T18:43:45","modified_gmt":"2026-10-05T18:43:45","slug":"aurinkosahkon-akku-ja-omavaraisuuslaskuri","status":"publish","type":"page","link":"https:\/\/renewe.fi\/en\/aurinkosahkon-akku-ja-omavaraisuuslaskuri\/","title":{"rendered":"Aurinkos\u00e4hk\u00f6n akku- ja omavaraisuuslaskuri"},"content":{"rendered":"<section class=\"bde-section-6708-100 bde-section\">\n  \n  \n\t\n\n\n\n<div class=\"section-container\"><div class=\"bde-div-6708-101 bde-div\">\n  \n  \n\t\n\n\n\n<div class=\"bde-icon-6708-102 bde-icon\">\n\n    \n            <div class=\"bde-icon-icon breakdance-icon-atom\" >\n    \n                    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 576 512\"><!--! Font Awesome Free 6.5.1 by @fontawesome - https:\/\/fontawesome.com License - https:\/\/fontawesome.com\/license\/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc. --><path d=\"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c0 2.7-.2 5.4-.5 8.1V472c0 22.1-17.9 40-40 40H456c-1.1 0-2.2 0-3.3-.1c-1.4 .1-2.8 .1-4.2 .1H416 392c-22.1 0-40-17.9-40-40V448 384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24z\"\/><\/svg>\n        \n        \n        \n            <\/div>\n    \n\n\n<\/div><div class=\"bde-globalblock-6708-103 bde-globalblock\"><div class=\"bde-woo-breadcrumb-1356-100-1356-1 bde-woo-breadcrumb bde-woo-breadcrumb-1356-100 breakdance-woocommerce\"><nav class=\"woocommerce-breadcrumb\" aria-label=\"Breadcrumb\"><span class=\"bde-woo-breadcrumb-item\">Etusivu<\/span><\/nav><\/div><\/div>\n<\/div><div class=\"bde-columns-6708-104 bde-columns\"><div class=\"bde-column-6708-105 bde-column\">\n  \n  \n\t\n\n\n\n<h1 class=\"bde-heading-6708-106 bde-heading\">\nAurinkos\u00e4hk\u00f6n akku- ja omavaraisuuslaskuri\n<\/h1><h2 class=\"bde-heading-6708-107 bde-heading\">\nPaljonko akku s\u00e4\u00e4st\u00e4\u00e4 \u2013 ja mist\u00e4 s\u00e4\u00e4st\u00f6 syntyy?\n<\/h2><div class=\"bde-text-6708-108 bde-text\">\nAkku maksaa itsens\u00e4 takaisin vain, jos sill\u00e4 on tekemist\u00e4. Laskuri n\u00e4ytt\u00e4\u00e4, paljonko akku nostaa aurinkos\u00e4hk\u00f6n omaa k\u00e4ytt\u00f6\u00e4, mit\u00e4 p\u00f6rssis\u00e4hk\u00f6n ajoitus ja tehomaksun leikkaus s\u00e4\u00e4st\u00e4v\u00e4t ja mit\u00e4 reservimarkkina voisi tuoda. Jokainen kilowatti lasketaan vain kerran.\n<\/div><div class=\"bde-code-block-6708-109 bde-code-block\">\n\n  <!-- RENEWE \u2013 Aurinkos\u00e4hk\u00f6n akku- ja s\u00e4hk\u00f6varastolaskuri v3 | Breakdance Code Block | 29.9.2026 -->\n<style>\n.svl,.svl *,.svl *::before,.svl *::after{box-sizing:border-box;margin:0;padding:0}\n.svl{font-family:'Montserrat',sans-serif;background:#fff;color:#070D17;width:100%;border:1.5px solid #E2E8F0;border-radius:16px;font-size:14px;line-height:1.5;-webkit-text-size-adjust:100%}\n.svl button,.svl input,.svl textarea{font-family:inherit}\n.svl input,.svl textarea{color:#070D17}\n.svl a{color:#00796B}\n.svl .svl-yla{padding:28px 32px 24px;border-bottom:1.5px solid #E2E8F0;background:#F7FAFA;border-radius:16px 16px 0 0}\n.svl .svl-yla-h{font-size:21px;font-weight:700;letter-spacing:-.3px;margin-bottom:6px}\n.svl .svl-yla-s{font-size:14px;color:#475569;max-width:720px;margin-bottom:18px}\n.svl .svl-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}\n.svl .svl-tab{background:#fff;border:1.5px solid #E2E8F0;border-radius:10px;padding:12px 16px;min-height:56px;cursor:pointer;text-align:left;transition:border-color .15s,background .15s}\n.svl .svl-tab:hover{border-color:#00F0D6}\n.svl .svl-tab[aria-pressed=\"true\"]{background:#070D17;border-color:#070D17;color:#fff}\n.svl .svl-tab-t{display:block;font-size:15px;font-weight:700}\n.svl .svl-tab-k{display:block;font-size:12.5px;color:#64748B;margin-top:2px}\n.svl .svl-tab[aria-pressed=\"true\"] .svl-tab-k{color:#CBD5E1}\n.svl .svl-layout{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr)}\n.svl .svl-vasen{padding:28px 32px 32px}\n.svl .svl-oikea{padding:28px 32px 32px;background:#F7FAFA;border-left:1.5px solid #E2E8F0;border-radius:0 0 16px 0}\n.svl .svl-sec{font-size:12.5px;font-weight:700;color:#00796B;text-transform:uppercase;letter-spacing:1px;margin:26px 0 12px}\n.svl .svl-sec:first-child{margin-top:0}\n.svl .svl-row2{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}\n.svl .svl-group{margin-bottom:14px;min-width:0}\n.svl .svl-label{display:block;font-size:13px;font-weight:600;color:#334155;margin-bottom:6px}\n.svl .svl-hint{font-size:12.5px;color:#64748B;margin-top:5px;line-height:1.5}\n.svl .svl-kentta{position:relative;display:flex;align-items:center}\n.svl .svl-input,.svl .svl-ta{width:100%;min-height:46px;background:#F8FAFC;border:1.5px solid #E2E8F0;border-radius:8px;font-size:16px;font-weight:500;padding:10px 14px;-webkit-appearance:none;appearance:none;transition:border-color .15s,background .15s}\n.svl .svl-kentta .svl-input{padding-right:78px}\n.svl .svl-yks{position:absolute;right:12px;font-size:13px;font-weight:600;color:#64748B;pointer-events:none}\n.svl .svl-ta{min-height:88px;resize:vertical;font-size:15px}\n.svl .svl-input:focus,.svl .svl-ta:focus{outline:none;border-color:#00BFA5;background:#fff;box-shadow:0 0 0 3px rgba(0,240,214,.25)}\n.svl .svl-input::placeholder{color:#94A3B8}\n.svl .svl-input.virhe{border-color:#DC2626;background:#FEF2F2}\n.svl .svl-virhe{display:none;font-size:12.5px;font-weight:600;color:#B91C1C;margin-top:5px}\n.svl .svl-virhe.nak{display:block}\n.svl .svl-pills{display:flex;flex-wrap:wrap;gap:8px}\n.svl .svl-pill{background:#fff;border:1.5px solid #E2E8F0;border-radius:22px;font-size:13px;font-weight:600;color:#475569;min-height:44px;padding:9px 16px;cursor:pointer;transition:all .15s;line-height:1.3;text-align:center}\n.svl .svl-pill:hover{border-color:#00F0D6;color:#070D17}\n.svl .svl-pill[aria-pressed=\"true\"]{background:#070D17;border-color:#070D17;color:#fff}\n.svl .svl-sl{display:flex;align-items:center;gap:14px}\n.svl .svl-sl input[type=range]{flex:1;min-width:0;height:44px;accent-color:#070D17;cursor:pointer;background:transparent}\n.svl .svl-sl-val{font-size:14px;font-weight:700;min-width:56px;text-align:right;white-space:nowrap}\n.svl .svl-det{border:1.5px solid #E2E8F0;border-radius:10px;background:#fff;margin-top:22px}\n.svl .svl-det>summary{list-style:none;cursor:pointer;font-size:13px;font-weight:700;color:#334155;padding:12px 16px;min-height:44px;display:flex;align-items:center;justify-content:space-between}\n.svl .svl-det>summary::-webkit-details-marker{display:none}\n.svl .svl-det>summary::after{content:'+';font-size:18px;color:#64748B}\n.svl .svl-det[open]>summary::after{content:'\u2013'}\n.svl .svl-det-body{padding:4px 16px 14px;font-size:13px;color:#475569;line-height:1.7}\n.svl .svl-btn{width:100%;min-height:48px;background:#070D17;border:none;border-radius:8px;color:#fff;font-size:15px;font-weight:700;padding:13px;cursor:pointer;margin-top:22px;transition:opacity .15s}\n.svl .svl-btn:hover{opacity:.85}\n.svl .svl-btn[disabled]{opacity:.45;cursor:default}\n.svl .svl-leima{font-size:12.5px;font-weight:600;color:#475569;background:#fff;border:1px solid #E2E8F0;border-radius:8px;padding:8px 12px;margin-bottom:14px}\n.svl .svl-leima.vanha{color:#92400E;background:#FFFBEB;border-color:#FCD34D}\n.svl .svl-hero{display:grid;grid-template-columns:1.3fr 1fr;background:#fff;border:1.5px solid #00F0D6;border-radius:12px;margin-bottom:12px;overflow:hidden}\n.svl .svl-hero>div{padding:18px 20px}\n.svl .svl-hero>div+div{border-left:1.5px solid #E2E8F0}\n.svl .svl-hero-t{font-size:12.5px;font-weight:700;color:#475569;text-transform:uppercase;letter-spacing:.6px}\n.svl .svl-hero-n{font-size:36px;font-weight:700;color:#00796B;line-height:1.1;margin-top:6px;letter-spacing:-.5px}\n.svl .svl-hero-n.pieni{font-size:22px;line-height:1.25}\n.svl .svl-hero-s{font-size:13px;color:#475569;margin-top:6px}\n.svl .svl-kortit{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:12px}\n.svl .svl-kortti{background:#fff;border:1.5px solid #E2E8F0;border-radius:10px;padding:14px 16px}\n.svl .svl-kortti-t{font-size:12.5px;font-weight:600;color:#64748B}\n.svl .svl-kortti-n{font-size:22px;font-weight:700;line-height:1.2;margin-top:4px}\n.svl .svl-kortti-s{font-size:12.5px;color:#64748B;margin-top:3px}\n.svl .svl-lohko{background:#fff;border:1.5px solid #E2E8F0;border-radius:10px;padding:16px;margin-bottom:12px}\n.svl .svl-lohko-t{font-size:13px;font-weight:700;color:#070D17;margin-bottom:10px}\n.svl .svl-lohko-s{font-size:13px;color:#475569;margin-bottom:10px}\n.svl .svl-palkki{display:flex;height:26px;border-radius:6px;overflow:hidden;background:#F1F5F9}\n.svl .svl-osa{height:100%;min-width:0;transition:width .35s ease}\n.svl .svl-c-pv{background:#FCD34D}\n.svl .svl-c-spot{background:#00F0D6}\n.svl .svl-c-huippu{background:#070D17}\n.svl .svl-c-res{background:repeating-linear-gradient(135deg,#00897B 0 6px,#4DB6AC 6px 12px)}\n.svl .svl-c-vapaa{background:#E2E8F0}\n.svl .svl-sel{margin-top:12px;display:grid;gap:6px}\n.svl .svl-sel-r{display:grid;grid-template-columns:14px 1fr auto;gap:10px;align-items:center;font-size:13px;color:#334155}\n.svl .svl-sel-r i{width:14px;height:14px;border-radius:3px;display:block}\n.svl .svl-sel-r b{font-weight:700;white-space:nowrap}\n.svl .svl-sel-r.pois{color:#64748B}\n.svl .svl-sel-r.pois b{font-weight:600}\n.svl .svl-sel-r small{display:block;font-size:12.5px;color:#64748B}\n.svl .svl-sel-r i{align-self:start;margin-top:3px}\n.svl .svl-merkki{display:inline-block;font-size:12.5px;font-weight:700;letter-spacing:.3px;border-radius:10px;padding:1px 8px;margin-left:6px;vertical-align:1px;white-space:nowrap}\n.svl .svl-merkki.varma{background:#E6FFFA;color:#00695C;border:1px solid #00BFA5}\n.svl .svl-merkki.epav{background:#FFFBEB;color:#92400E;border:1px solid #FCD34D}\n.svl .svl-al-r{margin-bottom:14px}\n.svl .svl-al-r:last-of-type{margin-bottom:0}\n.svl .svl-al-t{display:flex;justify-content:space-between;flex-wrap:wrap;gap:2px 10px;font-size:13px;font-weight:700;margin-bottom:6px}\n.svl .svl-al-t span:last-child{font-weight:600;color:#475569}\n.svl .svl-eri{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid #F1F5F9;font-size:13.5px}\n.svl .svl-eri:last-child{border-bottom:none}\n.svl .svl-eri-n{color:#334155;font-weight:600;min-width:0}\n.svl .svl-eri-k{display:block;font-size:12.5px;color:#64748B;font-weight:500;margin-top:2px}\n.svl .svl-eri-a{font-weight:700;white-space:nowrap;text-align:right}\n.svl .svl-eri.kulu .svl-eri-a{color:#B91C1C}\n.svl .svl-eri.yht{border-top:1.5px solid #E2E8F0}\n.svl .svl-eri.yht .svl-eri-n{color:#070D17}\n.svl .svl-eri.pois .svl-eri-n,.svl .svl-eri.pois .svl-eri-a{color:#64748B;font-weight:500}\n.svl .svl-tbl{width:100%;border-collapse:collapse;font-size:13px}\n.svl .svl-tbl th{text-align:right;font-size:12.5px;font-weight:600;color:#64748B;padding:6px 4px;border-bottom:1.5px solid #E2E8F0}\n.svl .svl-tbl th:first-child,.svl .svl-tbl td:first-child{text-align:left}\n.svl .svl-tbl td{text-align:right;padding:9px 4px;border-bottom:1px solid #F1F5F9;white-space:nowrap}\n.svl .svl-tbl td:first-child{white-space:normal;font-weight:600}\n.svl .svl-tbl td.yli{color:#B91C1C;font-weight:700}\n.svl .svl-tbl th{white-space:normal;vertical-align:bottom}\n.svl .svl-tbl td small{display:block;font-size:12.5px;color:#64748B;font-weight:500}\n.svl .svl-tbl tr.valittu td{background:#F0FFFE}\n.svl .svl-tbl tr.valittu td:first-child{box-shadow:inset 3px 0 0 #00BFA5}\n.svl .svl-lr{display:grid;grid-template-columns:26px 1fr;gap:10px;padding:10px 0;border-bottom:1px solid #F1F5F9;font-size:13px;line-height:1.55}\n.svl .svl-lr:last-child{border-bottom:none}\n.svl .svl-lr b{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;font-size:13px;font-weight:700}\n.svl .svl-lr.ok b{background:#E6FFFA;color:#00695C}\n.svl .svl-lr.avoin b{background:#FFFBEB;color:#92400E}\n.svl .svl-lr.estaa b{background:#FEF2F2;color:#B91C1C}\n.svl .svl-lr strong{display:block;color:#070D17;font-weight:700}\n.svl .svl-lr span{color:#475569}\n.svl .svl-tila{font-size:12.5px;font-weight:700;margin-left:6px}\n.svl .svl-lr.ok .svl-tila{color:#00695C}\n.svl .svl-lr.avoin .svl-tila{color:#92400E}\n.svl .svl-lr.estaa .svl-tila{color:#B91C1C}\n.svl .svl-huom{background:#FFFBEB;border:1.5px solid #FCD34D;border-radius:10px;padding:14px 16px;margin-bottom:12px}\n.svl .svl-huom-t{font-size:13px;font-weight:700;color:#92400E;margin-bottom:6px}\n.svl .svl-huom ul{padding-left:18px}\n.svl .svl-huom li{font-size:13px;color:#78350F;margin-bottom:5px}\n.svl .svl-markkina{background:#F1F5F9;border-radius:10px;padding:14px 16px;margin-bottom:12px;font-size:13px;color:#334155}\n.svl .svl-markkina strong{display:block;color:#070D17;margin-bottom:4px}\n.svl .svl-lomake{background:#fff;border:1.5px solid #070D17;border-radius:12px;padding:20px;margin-top:18px}\n.svl .svl-lomake-h{font-size:17px;font-weight:700;margin-bottom:6px}\n.svl .svl-lomake-s{font-size:13.5px;color:#475569;margin-bottom:14px}\n.svl .svl-cb{display:flex;align-items:flex-start;gap:10px;margin-top:6px}\n.svl .svl-cb input{margin-top:1px;width:22px;height:22px;accent-color:#070D17;flex-shrink:0}\n.svl .svl-cb label{font-size:12.5px;color:#475569;line-height:1.55}\n.svl .svl-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}\n.svl .svl-viesti{display:none;font-size:13px;font-weight:600;border-radius:8px;padding:11px 13px;margin-top:12px}\n.svl .svl-viesti.ok{display:block;background:#F0FFFE;border:1.5px solid #00F0D6;color:#00695C}\n.svl .svl-viesti.fail{display:block;background:#FEF2F2;border:1.5px solid #FCA5A5;color:#B91C1C}\n.svl .svl-viesti a{color:inherit;font-weight:700}\n.svl .svl-cta-sec{display:flex;align-items:center;justify-content:center;min-height:46px;width:100%;border:1.5px solid #070D17;border-radius:8px;color:#070D17 !important;font-size:14px;font-weight:700;margin-top:10px;text-decoration:none;transition:all .15s}\n.svl .svl-cta-sec:hover{background:#070D17;color:#fff !important}\n.svl .svl-linkki{font-size:13px;color:#475569;margin-top:14px}\n.svl .svl-nootti{font-size:12.5px;color:#64748B;margin-top:12px;line-height:1.6}\n.svl .svl-tyhja{background:#fff;border:1.5px dashed #CBD5E1;border-radius:12px;padding:28px 20px;text-align:center;font-size:14px;color:#475569;font-weight:600}\n.svl .svl-mbar{display:none}\n.svl .svl-piilo{display:none !important}\n@media (max-width:860px){\n.svl .svl-layout{grid-template-columns:minmax(0,1fr)}\n.svl .svl-oikea{border-left:none;border-top:1.5px solid #E2E8F0;border-radius:0 0 16px 16px}\n.svl .svl-mbar{display:flex;align-items:center;justify-content:space-between;gap:12px;position:sticky;bottom:0;z-index:5;background:#070D17;color:#fff;border-radius:10px;padding:10px 12px 10px 16px;margin-top:18px;box-shadow:0 6px 20px rgba(7,13,23,.25)}\n.svl .svl-mbar-t{font-size:12.5px;color:#CBD5E1;line-height:1.3}\n.svl .svl-mbar-n{display:block;font-size:17px;font-weight:700;color:#fff}\n.svl .svl-mbar button{min-height:44px;background:#00F0D6;color:#070D17;border:none;border-radius:8px;font-size:14px;font-weight:700;padding:0 16px;cursor:pointer;white-space:nowrap}\n}\n@media (max-width:560px){\n.svl .svl-yla,.svl .svl-vasen,.svl .svl-oikea{padding:20px 16px}\n.svl .svl-tabs{grid-template-columns:1fr;gap:8px}\n.svl .svl-tab{min-height:48px;padding:10px 14px}\n.svl .svl-row2,.svl .svl-kortit{grid-template-columns:1fr}\n.svl .svl-hero{grid-template-columns:1fr}\n.svl .svl-hero>div+div{border-left:none;border-top:1.5px solid #E2E8F0}\n.svl .svl-hero-n{font-size:32px}\n.svl .svl-lohko,.svl .svl-lomake{padding:14px}\n.svl .svl-tbl{font-size:12.5px}\n.svl .svl-tbl th,.svl .svl-tbl td{padding-left:3px;padding-right:3px}\n}\n<\/style>\n<div class=\"svl\" id=\"svl-juuri\">\n  <div class=\"svl-yla\">\n    <div class=\"svl-yla-h\">Aurinkos\u00e4hk\u00f6n akku- ja s\u00e4hk\u00f6varastolaskuri<\/div>\n    <div class=\"svl-yla-s\">Valitse kohde. Omakotitalossa akku s\u00e4\u00e4st\u00e4\u00e4 yleens\u00e4 omasta aurinkos\u00e4hk\u00f6st\u00e4 ja p\u00f6rssis\u00e4hk\u00f6st\u00e4. Taloyhti\u00f6ss\u00e4 ja yrityksess\u00e4 varmin hy\u00f6ty tulee tehomaksusta, joskus my\u00f6s v\u00e4ltetyst\u00e4 liittym\u00e4n vahvistuksesta.<\/div>\n    <div class=\"svl-tabs\" id=\"svl-tabs\">\n      <button type=\"button\" class=\"svl-tab\" data-ryhma=\"koti\" aria-pressed=\"true\"><span class=\"svl-tab-t\">Omakotitalo<\/span><span class=\"svl-tab-k\">10 kWh \/ 5 kW, 8 kWp<\/span><\/button>\n      <button type=\"button\" class=\"svl-tab\" data-ryhma=\"taloyhtio\" aria-pressed=\"false\"><span class=\"svl-tab-t\">Taloyhti\u00f6<\/span><span class=\"svl-tab-k\">100 kWh \/ 50 kW, 30 kWp<\/span><\/button>\n      <button type=\"button\" class=\"svl-tab\" data-ryhma=\"yritys\" aria-pressed=\"false\"><span class=\"svl-tab-t\">Yritys<\/span><span class=\"svl-tab-k\">200 kWh \/ 100 kW, 50 kWp<\/span><\/button>\n    <\/div>\n  <\/div>\n  <div class=\"svl-layout\">\n    <div class=\"svl-vasen\">\n      <div id=\"svl-syotteet\"><\/div>\n      <div class=\"svl-mbar\" id=\"svl-mbar\">\n        <div class=\"svl-mbar-t\">Varmat s\u00e4\u00e4st\u00f6t<span class=\"svl-mbar-n\" id=\"svl-mbar-n\">\u2013<\/span><\/div>\n        <button type=\"button\" id=\"svl-mbar-btn\">N\u00e4yt\u00e4 tulos<\/button>\n      <\/div>\n    <\/div>\n    <div class=\"svl-oikea\" id=\"svl-oikea\">\n      <div class=\"svl-leima\" id=\"svl-leima\"><\/div>\n      <div class=\"svl-tyhja svl-piilo\" id=\"svl-tyhja\">Sy\u00f6t\u00e4 akun kapasiteetti ja teho, niin tulos n\u00e4kyy t\u00e4ss\u00e4.<\/div>\n      <div id=\"svl-tulos\">\n        <div class=\"svl-hero\">\n          <div><div class=\"svl-hero-t\">Varmat s\u00e4\u00e4st\u00f6t<\/div><div class=\"svl-hero-n\" id=\"svl-r-varmat\">\u2013<\/div><div class=\"svl-hero-s\" id=\"svl-r-varmat-s\"><\/div><\/div>\n          <div><div class=\"svl-hero-t\">Takaisinmaksu, perus<\/div><div class=\"svl-hero-n\" id=\"svl-r-tak\">\u2013<\/div><div class=\"svl-hero-s\" id=\"svl-r-tak-s\"><\/div><\/div>\n        <\/div>\n        <div class=\"svl-kortit\" id=\"svl-kortit\"><\/div>\n        <div class=\"svl-lohko\">\n          <div class=\"svl-lohko-t\">Tulot vuodessa l\u00e4hteitt\u00e4in<\/div>\n          <div class=\"svl-palkki\" id=\"svl-tulopalkki\"><\/div>\n          <div class=\"svl-sel\" id=\"svl-tuloselite\"><\/div>\n        <\/div>\n        <div class=\"svl-lohko\">\n          <div class=\"svl-lohko-t\">Mihin akun teho ja kapasiteetti on varattu<\/div>\n          <div class=\"svl-lohko-s\">Sama kilowatti ei voi olla kahdessa k\u00e4yt\u00f6ss\u00e4 yht\u00e4 aikaa. Huipun leikkaus varataan ensin, reservi toisena ja loppu j\u00e4\u00e4 aurinkos\u00e4hk\u00f6lle ja p\u00f6rssis\u00e4hk\u00f6lle.<\/div>\n          <div id=\"svl-allokaatio\"><\/div>\n        <\/div>\n        <div id=\"svl-huomiot\"><\/div>\n        <div class=\"svl-lohko\">\n          <div class=\"svl-lohko-t\">Erittely<\/div>\n          <div id=\"svl-erittely\"><\/div>\n        <\/div>\n        <div class=\"svl-lohko\" id=\"svl-skenaariot-l\">\n          <div class=\"svl-lohko-t\">Reservitulo kolmella hintatasolla<\/div>\n          <div class=\"svl-lohko-s\" id=\"svl-skenaariot-s\"><\/div>\n          <table class=\"svl-tbl\"><thead><tr><th>Skenaario<\/th><th>Reservi&shy;tulo<\/th><th>Kassa&shy;virta<\/th><th>Takaisin&shy;maksu<\/th><\/tr><\/thead><tbody id=\"svl-skenaariot\"><\/tbody><\/table>\n        <\/div>\n        <div class=\"svl-lohko\">\n          <div class=\"svl-lohko-t\">Reunaehdot ennen hankintaa<\/div>\n          <div id=\"svl-reunaehdot\"><\/div>\n        <\/div>\n        <div class=\"svl-markkina\" id=\"svl-markkina\">\n          <strong>Reservimarkkina muuttuu nopeasti<\/strong>\n          FCR-D-akkukapasiteetti kasvoi hein\u00e4\u2013marraskuussa 2025 noin 340 MW:sta 520 MW:iin, ja hinnat romahtivat. Vuodelle 2026 Fingrid ei osta FCR-N:\u00e4\u00e4 vuosimarkkinalta lainkaan, joten FCR-N-tulo tulee tuntimarkkinalta ja vaihtelee. L\u00e4hteet: Enion ja Fingrid. Tarkista ajantasainen tulotaso aggregaattorilta.\n        <\/div>\n        <details class=\"svl-det\">\n          <summary>N\u00e4in laskuri laskee<\/summary>\n          <div class=\"svl-det-body\" id=\"svl-r-kaavat\"><\/div>\n        <\/details>\n        <div class=\"svl-lomake\">\n          <div class=\"svl-lomake-h\">L\u00e4het\u00e4 laskelma meille<\/div>\n          <div class=\"svl-lomake-s\">Haluatko tiet\u00e4\u00e4, milt\u00e4 luvut n\u00e4ytt\u00e4v\u00e4t oikealla kulutusdatalla? L\u00e4het\u00e4 laskelma meille. K\u00e4ymme sen l\u00e4pi tuntitason kulutuksesi kanssa ja kerromme suoraan, kannattaako akku.<\/div>\n          <div class=\"svl-row2\">\n            <div class=\"svl-group\"><label class=\"svl-label\" for=\"svl-nimi\">Nimi *<\/label><input class=\"svl-input\" type=\"text\" id=\"svl-nimi\" autocomplete=\"name\"><\/div>\n            <div class=\"svl-group\"><label class=\"svl-label\" for=\"svl-puh\">Puhelin *<\/label><input class=\"svl-input\" type=\"tel\" id=\"svl-puh\" autocomplete=\"tel\"><\/div>\n          <\/div>\n          <div class=\"svl-row2\">\n            <div class=\"svl-group\"><label class=\"svl-label\" for=\"svl-email\">S\u00e4hk\u00f6posti *<\/label><input class=\"svl-input\" type=\"email\" id=\"svl-email\" autocomplete=\"email\"><\/div>\n            <div class=\"svl-group\"><label class=\"svl-label\" for=\"svl-paikkakunta\">Paikkakunta<\/label><input class=\"svl-input\" type=\"text\" id=\"svl-paikkakunta\" autocomplete=\"address-level2\"><\/div>\n          <\/div>\n          <div class=\"svl-group\">\n            <label class=\"svl-label\" for=\"svl-viesti\">Lis\u00e4tietoja kohteesta (vapaaehtoinen)<\/label>\n            <textarea class=\"svl-ta\" id=\"svl-viesti\" placeholder=\"Esim. liittym\u00e4n koko, verkkoyhti\u00f6, aikataulu\"><\/textarea>\n          <\/div>\n          <div class=\"svl-hp\" aria-hidden=\"true\">\n            <label for=\"svl-hp-kentta\">\u00c4l\u00e4 t\u00e4yt\u00e4 t\u00e4t\u00e4 kentt\u00e4\u00e4<\/label>\n            <input type=\"text\" id=\"svl-hp-kentta\" tabindex=\"-1\" autocomplete=\"off\">\n          <\/div>\n          <div class=\"svl-cb\">\n            <input type=\"checkbox\" id=\"svl-lupa\">\n            <label for=\"svl-lupa\">Saa olla minuun yhteydess\u00e4 tarjouksen merkeiss\u00e4. Tietoja k\u00e4sitell\u00e4\u00e4n <a href=\"https:\/\/renewe.fi\/privacy-policy\/\" target=\"_blank\" rel=\"noopener\">tietosuojaselosteen<\/a> mukaisesti. *<\/label>\n          <\/div>\n          <button type=\"button\" class=\"svl-btn\" id=\"svl-laheta\">L\u00e4het\u00e4 laskelma<\/button>\n          <div class=\"svl-viesti\" id=\"svl-palaute\"><\/div>\n        <\/div>\n        <a class=\"svl-cta-sec\" href=\"https:\/\/renewe.fi\/ota-yhteytta\/\" target=\"_blank\" rel=\"noopener\">Tai ota yhteytt\u00e4 puhelimitse &rarr;<\/a>\n        <p class=\"svl-linkki\">Suunnitteletko samalla maal\u00e4mp\u00f6\u00e4 tai muuta l\u00e4mmitysremonttia? K\u00e4yt\u00e4 <a href=\"https:\/\/renewe.fi\/kokonaisenergiajarjestelman-laskuri\/\">kokonaisenergiaj\u00e4rjestelm\u00e4n laskuria<\/a>.<\/p>\n        <p class=\"svl-nootti\">Laskelma on suuntaa antava. Se ei korvaa kohdekohtaista suunnittelua tuntitason kulutusdatalla. Reservimarkkinan hinnat vaihtelevat kuukausittain, eik\u00e4 laskuri ennusta niit\u00e4.<\/p>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n<script>\n(function () {\n  'use strict';\n  \/*LASKE-ALKU*\/\n  \/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550 ASETUKSET \u2013 p\u00e4ivit\u00e4 luvut ja tarkistusp\u00e4iv\u00e4 v\u00e4hint\u00e4\u00e4n 6 kk v\u00e4lein \u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n  var CFG = {\n    ajaxUrl: '\/wp-admin\/admin-ajax.php',\n    action: 'renewe_laskuri_lead',\n    laskuri: 'Akku- ja s\u00e4hk\u00f6varastolaskuri',\n    email: 'info@renewe.fi',\n    tarkistettu: '2026-09-29',\n    vanhenemisKk: 6,\n    dod: 0.90,            \/* k\u00e4ytett\u00e4v\u00e4 osuus nimelliskapasiteetista (LFP) *\/\n    eta: 0.90,            \/* round-trip-hy\u00f6tysuhde *\/\n    kesaPaivat: 180,      \/* p\u00e4ivi\u00e4, joina akku siirt\u00e4\u00e4 aurinkos\u00e4hk\u00f6\u00e4 iltaan *\/\n    latausIkkunaPv: 5,    \/* h, keskip\u00e4iv\u00e4n ylij\u00e4\u00e4m\u00e4ikkuna *\/\n    latausIkkunaSpot: 4,  \/* h, halvat tunnit *\/\n    huippuKolmio: 0.5,    \/* huipun muoto: kolmio, ei suorakaide *\/\n    tunnitVuosi: 8760,\n    aggMin: 20, aggMax: 30,\n    \/* Reservituotteet. energiaH = kWh\/kW, jonka reservi sitoo kapasiteetista.\n       FCR-N on symmetrinen: 60 min kumpaankin suuntaan, varaustila keskell\u00e4 -> 2,0 kWh\/kW.\n       FCR-D yl\u00f6s: 20 min -> 0,33 kWh\/kW. minKw = minimitarjous tuntimarkkinalle.\n       syklit = arvioidut ekvivalenttisyklit vuodessa, jos koko kapasiteetti olisi reserviss\u00e4. *\/\n    tuotteet: {\n      fcrd: { nimi: 'FCR-D yl\u00f6s', energiaH: 0.33, syklit: 20, minKw: 1000,\n        \/* \u20ac\/MW,h. Vuosimarkkina 2026: 3,50 \u20ac\/MW,h (Fingrid, uutinen 2025). Enion: 10 kW:n kotiakku\n           135 \u20ac\/kk tammi\u2013lokakuussa 2025, joulukuussa 28 \u20ac\/kk. Tarkistettu 29.9.2026. *\/\n        hinta: { varo: 2.5, perus: 4.5, opti: 8.0 } },\n      fcrn: { nimi: 'FCR-N', energiaH: 2.0, syklit: 100, minKw: 100,\n        \/* TARKISTA: FCR-N-hinnat \u20ac\/MW,h. Fingridin avoin data (dataset 317) vaatii API-avaimen, eik\u00e4\n           12 kk:n keskiarvoa saatu 29.9.2026. Clean Horizon 18.7.2025: keskihinta 46 (2024) -> 19 \u20ac\/MW,h (6\/2025).\n           FCR-D-kapasiteetin kasvun j\u00e4lkeen taso on todenn\u00e4k\u00f6isesti t\u00e4t\u00e4 matalampi. Arvot ovat varovaisia arvioita. *\/\n        hinta: { varo: 4.0, perus: 8.0, opti: 15.0 } }\n    },\n    \/* S\u00e4hk\u00f6vero snt\/kWh ilman ALV:t\u00e4 (energiavero + huoltovarmuusmaksu), vero.fi verotaulukko 2, voimassa 1.4.2026 alkaen *\/\n    sahkovero: { I: 2.325, II: 0.135 },\n    alv: 0.255,\n    \/* Oletus: puolet reservin purkuenergiasta menee verkkoon (loput kiinteist\u00f6n omaan kulutukseen). *\/\n    resVerkkoonOsuus: 0.5,\n    \/* TARKISTA: koko, jonka ylittyess\u00e4 pelastuslaitoksen n\u00e4kemys korostetaan. Demon oma raja, ei virallinen. *\/\n    paloKynnysKwh: 100,\n    \/* Omak\u00e4ytt\u00f6aste ilman akkua, perustaso ennen voimala\/kulutus-kerrointa *\/\n    omaPerus: { koti: 0.30, taloyhtio: 0.55, yritys: 0.55 },\n    invKaava: { koti: [1500, 550], taloyhtio: [0, 400], yritys: [0, 325] }\n  };\n  var ESI = {\n    koti: { kwh: 10, kw: 5, inv: 7000, modOsuus: 60, takuu: 6000, ika: 15, huolto: 0, kwp: 8, sijainti: 900, kulutus: 18000,\n      ilta: 50, omaAste: '', osto: 17, myynti: 2.5, spotOn: 1, spread: 5, tehomaksu: 0, huippu: 10, leik: '', kesto: 2,\n      huippuPaivat: 60, tariffi: 1, liitEur: 0, liitKw: 0, tuote: 'fcrd', resOsuus: 50, saatavuus: 60, agg: 30,\n      skenaario: 'perus', verotila: 'eilupaa', veroluokka: 'I', esikval: 'ei', palo: 'ei' },\n    taloyhtio: { kwh: 100, kw: 50, inv: 40000, modOsuus: 65, takuu: 6000, ika: 15, huolto: 400, kwp: 30, sijainti: 900, kulutus: 250000,\n      ilta: 45, omaAste: '', osto: 15, myynti: 2.5, spotOn: 1, spread: 5, tehomaksu: 3.5, huippu: 110, leik: '', kesto: 2,\n      huippuPaivat: 60, tariffi: 1, liitEur: 0, liitKw: 0, tuote: 'fcrd', resOsuus: 50, saatavuus: 80, agg: 25,\n      skenaario: 'perus', verotila: 'eilupaa', veroluokka: 'I', esikval: 'ei', palo: 'ei' },\n    yritys: { kwh: 200, kw: 100, inv: 65000, modOsuus: 70, takuu: 6000, ika: 15, huolto: 800, kwp: 50, sijainti: 900, kulutus: 400000,\n      ilta: 35, omaAste: 75, osto: 12, myynti: 2.5, spotOn: 1, spread: 5, tehomaksu: 4.5, huippu: 250, leik: '', kesto: 2,\n      huippuPaivat: 60, tariffi: 1, liitEur: 0, liitKw: 0, tuote: 'fcrd', resOsuus: 50, saatavuus: 90, agg: 20,\n      skenaario: 'perus', verotila: 'eilupaa', veroluokka: 'I', esikval: 'ei', palo: 'ei' }\n  };\n  \/* Laskentamoottori: puhdas funktio, ei DOM-viittauksia. Sy\u00f6te: olio (luvut tai merkkijonot). *\/\n  function laske(s) {\n    s = s || {};\n    function n(v, d) {\n      if (typeof v === 'string') v = v.replace(\/[\\s\u00a0]\/g, '').replace(',', '.');\n      var x = (v === '' || v === null || v === undefined || typeof v === 'boolean') ? NaN : Number(v);\n      return isFinite(x) ? x : (d === undefined ? 0 : d);\n    }\n    function pos(v, d) { return Math.max(n(v, d), 0); }\n    function kl(x, a, b) { return Math.min(Math.max(x, a), b); }\n    function pct(v, d) { return kl(n(v, d), 0, 100) \/ 100; }\n    function tyhja(v) { return v === '' || v === null || v === undefined || !isFinite(n(v, NaN)); }\n    var ryhma = ESI.hasOwnProperty(s.ryhma) ? s.ryhma : 'koti';\n    var eta = CFG.eta, KP = CFG.kesaPaivat;\n    \/* Akku *\/\n    var kap = pos(s.kwh), P = pos(s.kw), E = kap * CFG.dod;\n    var inv = pos(s.inv), modOs = pct(s.modOsuus, 60);\n    var takuu = pos(s.takuu); if (takuu < 1) takuu = 6000;\n    var ika = pos(s.ika); if (ika <= 0) ika = 15;\n    var huolto = pos(s.huolto);\n    var cSyk = inv * modOs \/ takuu;                          \/* \u20ac \/ ekvivalenttisykli *\/\n    \/* Aurinko ja kulutus *\/\n    var kwp = pos(s.kwp), sij = pos(s.sijainti, 900), kulutus = pos(s.kulutus), ilta = pct(s.ilta, 50);\n    var osto = pos(s.osto) \/ 100, myynti = pos(s.myynti) \/ 100;\n    var spotOn = s.spotOn === true || String(s.spotOn) === '1';\n    var spread = pos(s.spread) \/ 100;\n    \/* Teho *\/\n    var tehomaksu = pos(s.tehomaksu), huippu = pos(s.huippu);\n    var kesto = kl(n(s.kesto, 2), 0.25, 24), huippuPv = kl(pos(s.huippuPaivat, 60), 0, 365);\n    var tarK = kl(n(s.tariffi, 1), 0, 1);\n    var liitEur = pos(s.liitEur), liitKw = pos(s.liitKw);\n    \/* Reservi *\/\n    var tuoteK = CFG.tuotteet.hasOwnProperty(s.tuote) ? s.tuote : null, tuote = tuoteK ? CFG.tuotteet[tuoteK] : null;\n    var resOs = pct(s.resOsuus, 50), saat = pct(s.saatavuus, 80);\n    var agg = kl(n(s.agg, 25), CFG.aggMin, CFG.aggMax) \/ 100;\n    var sk = (s.skenaario === 'varo' || s.skenaario === 'opti') ? s.skenaario : 'perus';\n    var verotila = (s.verotila === 'lupa' || s.verotila === 'oma') ? s.verotila : 'eilupaa';\n    var luokka = (ryhma === 'yritys' && s.veroluokka === 'II') ? 'II' : 'I';\n    var vero = CFG.sahkovero[luokka] \/ 100 * (ryhma === 'yritys' ? 1 : 1 + CFG.alv);   \/* \u20ac\/kWh *\/\n    \/* 1. HUIPPU \u2013 varataan ensin *\/\n    var tavoiteAuto = Math.min(0.3 * huippu, P);\n    var tavoite = tehomaksu > 0 ? (tyhja(s.leik) ? tavoiteAuto : pos(s.leik)) : 0;\n    var vaadittu = Math.max(tavoite, liitKw);\n    var leik = vaadittu > 0 ? Math.max(Math.min(vaadittu, huippu, P, kesto > 0 ? E \/ kesto : 0), 0) : 0;\n    var P_huippu = leik, E_huippu = leik * kesto;\n    var tehoLeik = Math.min(leik, tavoite);\n    var tehoSaasto = tehoLeik * tehomaksu * 12 * tarK;\n    var liittymaOk = liitKw > 0 && leik >= liitKw - 1e-9;\n    var kWhHuippuV = leik * kesto * CFG.huippuKolmio * huippuPv;\n    \/* 2. RESERVI \u2013 vain j\u00e4ljelle j\u00e4\u00e4v\u00e4st\u00e4 *\/\n    var P_vapaa = Math.max(P - P_huippu, 0), E_vapaa = Math.max(E - E_huippu, 0);\n    var P_res = 0, E_res = 0, sykRes = 0;\n    if (tuote) {\n      P_res = Math.max(Math.min(P_vapaa * resOs, P * resOs, E_vapaa \/ tuote.energiaH), 0);\n      E_res = P_res * tuote.energiaH;\n      sykRes = E > 0 ? tuote.syklit * E_res \/ E : 0;\n    }\n    var resTulo = { varo: 0, perus: 0, opti: 0 }, resHinta = { varo: 0, perus: 0, opti: 0 };\n    ['varo', 'perus', 'opti'].forEach(function (k) {\n      resHinta[k] = tuote ? tuote.hinta[k] : 0;\n      resTulo[k] = P_res \/ 1000 * resHinta[k] * CFG.tunnitVuosi * saat * (1 - agg);\n    });\n    \/* S\u00e4hk\u00f6vero vain verkkoon sy\u00f6tetyst\u00e4 energiasta, kun lupaa ei ole. Aurinko- ja p\u00f6rssik\u00e4ytt\u00f6 puretaan\n       omaan kulutukseen (rajattu iltakulutukseen), joten niist\u00e4 ei synny toista veroa. *\/\n    var E_resPurkuV = sykRes * E;\n    var E_verkkoonV = verotila === 'eilupaa' ? E_resPurkuV * CFG.resVerkkoonOsuus : 0;\n    var veroKulu = E_verkkoonV * vero;\n    \/* 3. AURINKO \u2013 loppuosa *\/\n    var P_loppu = Math.max(P - P_huippu - P_res, 0), E_loppu = Math.max(E - E_huippu - E_res, 0);\n    var tuotto = kwp * sij;\n    var omaAuto = tyhja(s.omaAste);\n    var omaAste0 = 0;\n    if (tuotto > 0) {\n      omaAste0 = omaAuto ? kl(CFG.omaPerus[ryhma] * kl(Math.sqrt(kulutus \/ tuotto \/ 2), 0.6, 1.4), 0, 0.95) : pct(s.omaAste);\n    }\n    var suoraan = Math.min(tuotto * omaAste0, kulutus);\n    var ylijaama = Math.max(tuotto - suoraan, 0);\n    var iltaPv = kulutus \/ 365 * ilta;\n    var pvArvo = eta * osto - myynti;                       \/* \u20ac \/ ladattu kWh *\/\n    var latausMax = Math.max(0, Math.min(E_loppu, ylijaama \/ KP, iltaPv \/ eta, P_loppu * CFG.latausIkkunaPv));\n    var pvPerSykli = pvArvo * E;\n    var pvSyy = '';\n    if (tuotto <= 0) pvSyy = 'ei voimalaa';\n    else if (latausMax <= 0) pvSyy = 'ei tilaa';\n    else if (pvArvo <= 0) pvSyy = 'hintaero';\n    else if (pvPerSykli <= cSyk) pvSyy = 'kuluminen';\n    var lataus = pvSyy ? 0 : latausMax;\n    var aurinko = lataus * KP * pvArvo;\n    \/* 4. SPOT-ARBITRAASI \u2013 loput p\u00e4iv\u00e4t *\/\n    var paivat = 365 - (lataus > 0 ? KP : 0);\n    var pHalpa = Math.max(osto - spread \/ 2, 0);\n    var arbArvo = eta * (pHalpa + spread) - pHalpa;        \/* \u20ac \/ ladattu kWh *\/\n    var E_arbMax = spotOn ? Math.max(0, Math.min(E_loppu, P_loppu * CFG.latausIkkunaSpot, iltaPv)) : 0;\n    var arbPerSykli = arbArvo * E;\n    var arbSyy = '';\n    if (!spotOn) arbSyy = 'ei k\u00e4yt\u00f6ss\u00e4';\n    else if (E_arbMax <= 0) arbSyy = 'ei tilaa';\n    else if (arbPerSykli <= cSyk) arbSyy = 'kuluminen';\n    var E_arb = arbSyy ? 0 : E_arbMax;\n    var arbitraasi = E_arb * arbArvo * paivat;\n    var arbPotentiaali = E_arbMax * Math.max(arbArvo, 0) * paivat;\n    var arbPotKuluma = E > 0 ? E_arbMax * paivat \/ E * cSyk : 0;\n    \/* 5. KULUMINEN kustannuksena *\/\n    var syk = {\n      huippu: E > 0 ? kWhHuippuV \/ E : 0,\n      pv: E > 0 ? lataus * KP \/ E : 0,\n      arb: E > 0 ? E_arb * paivat \/ E : 0,\n      res: sykRes\n    };\n    var ekv = syk.huippu + syk.pv + syk.arb + syk.res;\n    var kuluma = ekv * cSyk;\n    var kayttoika = ekv > 0 ? Math.min(ika, takuu \/ ekv) : ika;\n    \/* 6. TULOS *\/\n    var varmat = tehoSaasto + aurinko + arbitraasi;\n    var nettoInv = Math.max(inv - (liittymaOk ? liitEur : 0), 0);\n    var sken = {};\n    ['varo', 'perus', 'opti'].forEach(function (k) {\n      var kassa = varmat + resTulo[k] - huolto - veroKulu;\n      var tak = kassa > 0 ? nettoInv \/ kassa : null;\n      sken[k] = { hinta: resHinta[k], reservi: resTulo[k], kassavirta: kassa, netto: kassa - kuluma,\n        takaisinmaksu: tak, maksaa: tak !== null && tak <= kayttoika };\n    });\n    var omavar0 = kulutus > 0 ? Math.min(suoraan \/ kulutus, 1) : 0;\n    var omavar1 = kulutus > 0 ? Math.min((suoraan + lataus * KP * eta) \/ kulutus, 1) : 0;\n    return {\n      ryhma: ryhma, kap: kap, P: P, E: E, inv: inv, nettoInv: nettoInv, cSyk: cSyk, takuu: takuu, ika: ika, huolto: huolto, modOs: modOs,\n      tehomaksu: tehomaksu, huippu: huippu, kesto: kesto, huippuPv: huippuPv, tarK: tarK, tavoite: tavoite, tavoiteAuto: tavoiteAuto,\n      vaadittu: vaadittu, leik: leik, tehoLeik: tehoLeik, tehoSaasto: tehoSaasto, liitEur: liitEur, liitKw: liitKw, liittymaOk: liittymaOk,\n      kWhHuippuV: kWhHuippuV, P_huippu: P_huippu, E_huippu: E_huippu, P_vapaa: P_vapaa, E_vapaa: E_vapaa,\n      tuoteK: tuoteK, tuote: tuote, resOs: resOs, saat: saat, agg: agg, P_res: P_res, E_res: E_res, sk: sk, resTulo: resTulo,\n      verotila: verotila, luokka: luokka, vero: vero, E_verkkoonV: E_verkkoonV, veroKulu: veroKulu,\n      P_loppu: P_loppu, E_loppu: E_loppu, tuotto: tuotto, omaAuto: omaAuto, omaAste0: omaAste0, suoraan: suoraan, ylijaama: ylijaama,\n      iltaPv: iltaPv, osto: osto, myynti: myynti, pvArvo: pvArvo, latausMax: latausMax, lataus: lataus, pvSyy: pvSyy, aurinko: aurinko,\n      spotOn: spotOn, spread: spread, paivat: paivat, pHalpa: pHalpa, arbArvo: arbArvo, E_arbMax: E_arbMax, E_arb: E_arb, arbSyy: arbSyy,\n      arbitraasi: arbitraasi, arbPotentiaali: arbPotentiaali, arbPotKuluma: arbPotKuluma,\n      syk: syk, ekv: ekv, kuluma: kuluma, kayttoika: kayttoika, varmat: varmat, sken: sken, omavar0: omavar0, omavar1: omavar1\n    };\n  }\n  \/*LASKE-LOPPU*\/\n  if (typeof document === 'undefined') return;\n  var juuri = document.getElementById('svl-juuri');\n  if (!juuri) return;\n  var avattu = Date.now();\n  var VIIME = null, TILA = {}, MUOK = {};\n  var ryhma = 'koti';\n  function g(id) { return document.getElementById(id); }\n  function luku(x, d) { d = d || 0; return Number(x).toLocaleString('fi-FI', { minimumFractionDigits: d, maximumFractionDigits: d }); }\n  function eur(x) { return luku(Math.round(x)) + '\u00a0\u20ac'; }\n  function des(x) { return Math.abs(x - Math.round(x)) < 0.05 ? luku(x, 0) : luku(x, 1); }\n  function lyh(x) { return Number(x).toLocaleString('fi-FI', { maximumFractionDigits: 2 }); }\n  function kentaksi(v) { return v === '' || v === null || v === undefined ? '' : String(v).replace('.', ','); }\n  function esc(t) { return String(t).replace(\/[&<>\"]\/g, function (c) { return { '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;' }[c]; }); }\n  \/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550 SY\u00d6TTEET \u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n  var KAIKKI = ['koti', 'taloyhtio', 'yritys'], KIINT = ['taloyhtio', 'yritys'];\n  var F = {\n    kwh: { l: 'Akun kapasiteetti', u: 'kWh', pakko: true },\n    kw: { l: 'Akun teho', u: 'kW', pakko: true, v: 'Invertterin lataus- ja purkuteho. Oletus on puolet kapasiteetista.' },\n    inv: { l: 'Investointi asennettuna', u: '\u20ac', v: '' },\n    kwp: { l: 'Aurinkovoimalan koko', u: 'kWp', v: '0 = ei voimalaa.' },\n    sijainti: { l: 'Sijainti', o: [['900', 'Etel\u00e4-Suomi'], ['850', 'Keski-Suomi'], ['750', 'Pohjois-Suomi']], v: 'Vuosituotto 900 \/ 850 \/ 750 kWh\/kWp.' },\n    kulutus: { l: 'S\u00e4hk\u00f6n vuosikulutus', u: 'kWh' },\n    ilta: { l: 'Ilta- ja y\u00f6kulutuksen osuus', u: '%', max: 100, v: 'Osuus kulutuksesta, joka osuu aurinkotuntien ulkopuolelle.' },\n    omaAste: { l: 'Omak\u00e4ytt\u00f6aste ilman akkua', u: '%', max: 100, ph: 'auto', v: 'Kuinka suuri osa aurinkos\u00e4hk\u00f6st\u00e4 kuluu suoraan. Tyhj\u00e4 kentt\u00e4 = laskurin arvio.' },\n    osto: { l: 'Ostohinta', u: 'snt\/kWh', v: 'Energia + siirto + vero. Akku v\u00e4ltt\u00e4\u00e4 koko kilowattitunnin hinnan.' },\n    myynti: { l: 'Myyntihinta', u: 'snt\/kWh', v: 'Mit\u00e4 saat verkkoon myydyst\u00e4 ylij\u00e4\u00e4m\u00e4st\u00e4. Kes\u00e4n keskip\u00e4ivin\u00e4 usein l\u00e4hell\u00e4 nollaa.' },\n    spotOn: { l: 'P\u00f6rssis\u00e4hk\u00f6n ohjaus', o: [['1', 'K\u00e4yt\u00f6ss\u00e4'], ['0', 'Ei k\u00e4yt\u00f6ss\u00e4']] },\n    spread: { l: 'Halvan ja kalliin tunnin hintaero', u: 'snt\/kWh', v: 'Vuorokauden keskim\u00e4\u00e4r\u00e4inen ero nelj\u00e4n tunnin ikkunalla. Varovainen arvio on 5 snt.', ehto: function (t) { return t.spotOn === '1'; } },\n    tehomaksu: { l: 'Tehomaksu', u: '\u20ac\/kW\/kk', v: '0 = verkkoyhti\u00f6 ei laskuta tehosta.' },\n    huippu: { l: 'Kiinteist\u00f6n huipputeho', u: 'kW', v: 'Laskutettu tuntikeskiteho verkkoyhti\u00f6n laskusta.', ehto: function (t) { return nro(t.tehomaksu) > 0 || nro(t.liitKw) > 0; } },\n    leik: { l: 'Tavoiteltu leikkaus', u: 'kW', ph: 'auto', v: '', ehto: function (t) { return nro(t.tehomaksu) > 0; } },\n    kesto: { l: 'Huipun kesto', u: 'h', v: 'Kuinka monta tuntia teho on leikkaustason yl\u00e4puolella.', ehto: function (t) { return nro(t.tehomaksu) > 0 || nro(t.liitKw) > 0; } },\n    huippuPaivat: { l: 'Huippup\u00e4ivi\u00e4 vuodessa', u: 'pv', max: 365, v: 'P\u00e4ivi\u00e4, jolloin huippu ylitt\u00e4\u00e4 leikkaustason. Tyypillisesti noin 5 p\u00e4iv\u00e4\u00e4 kuukaudessa.', ehto: function (t) { return nro(t.tehomaksu) > 0 || nro(t.liitKw) > 0; } },\n    tariffi: { l: 'Tehotariffin rakenne', ryh: KIINT, o: [['1', 'Kuukauden huippu'], ['0.85', 'N korkeimman keskiarvo'], ['0.6', 'Liukuva 12 kk']], v: 'Liukuvassa mallissa yksi ep\u00e4onnistunut leikkaus maksaa koko vuoden, joten s\u00e4\u00e4st\u00f6st\u00e4 huomioidaan vain osa.', ehto: function (t) { return nro(t.tehomaksu) > 0; } },\n    liitEur: { l: 'V\u00e4ltetty liittym\u00e4n vahvistus', u: '\u20ac', ryh: KIINT, v: 'Jos akku leikkaa huipun niin, ettei liittym\u00e4\u00e4 tarvitse suurentaa. V\u00e4hennet\u00e4\u00e4n investoinnista.' },\n    liitKw: { l: 'Vaadittu leikkaus liittym\u00e4\u00e4 varten', u: 'kW', ryh: KIINT, v: 'Teho, joka akun on leikattava joka p\u00e4iv\u00e4.' },\n    tuote: { l: 'Reservituote', o: [['ei', 'Ei reservi\u00e4'], ['fcrd', 'FCR-D yl\u00f6s'], ['fcrn', 'FCR-N']], v: 'FCR-D yl\u00f6s vastaa h\u00e4iri\u00f6ihin. FCR-N tasaa jatkuvaa taajuusvaihtelua molempiin suuntiin.' },\n    resOsuus: { l: 'Reserviin varattu osuus akun tehosta', u: '%', r: [0, 100, 5], ehto: function (t) { return t.tuote !== 'ei'; } },\n    saatavuus: { l: 'Tunteja, joina akku on reserviss\u00e4', u: '%', r: [0, 100, 5], ehto: function (t) { return t.tuote !== 'ei'; } },\n    agg: { l: 'Aggregaattorin osuus tulosta', u: '%', r: [20, 30, 1], v: 'Tyypillisesti 20\u201330 %.', ehto: function (t) { return t.tuote !== 'ei'; } },\n    skenaario: { l: 'Reservihinnan skenaario', o: [['varo', 'Varovainen'], ['perus', 'Perus'], ['opti', 'Optimistinen']], ehto: function (t) { return t.tuote !== 'ei'; } },\n    verotila: { l: 'S\u00e4hk\u00f6varaston verotus', o: [['eilupaa', 'Ei lupaa'], ['lupa', 'Lupa on'], ['oma', 'Purkaa vain omaan kulutukseen']], v: 'Kaksinkertainen s\u00e4hk\u00f6vero koskee vain verkkoon sy\u00f6tetty\u00e4 energiaa.' },\n    veroluokka: { l: 'S\u00e4hk\u00f6veroluokka', ryh: ['yritys'], o: [['I', 'Luokka I'], ['II', 'Luokka II (teollisuus)']] },\n    esikval: { l: 'Fingridin esikvalifiointi ja reservimittaus', ryh: KIINT, o: [['ei', 'Ei tehty'], ['on', 'Tehty']], ehto: function (t) { return t.tuote !== 'ei'; } },\n    palo: { l: 'Palotekninen sijoitus ja osastointi', ryh: KIINT, o: [['ei', 'Avoin'], ['on', 'Ratkaistu']] },\n    modOsuus: { l: 'Akkumoduulien osuus investoinnista', u: '%', max: 100, v: 'Kuluminen lasketaan vain t\u00e4st\u00e4 osasta. Invertteri ja asennus eiv\u00e4t kulu sykleist\u00e4.' },\n    takuu: { l: 'Takuusyklit', u: 'kpl' },\n    ika: { l: 'Kalenteri-ik\u00e4', u: 'v' },\n    huolto: { l: 'Huolto ja ohjaus', u: '\u20ac\/v' }\n  };\n  var SEKT = [\n    ['Akku', [['kwh', 'kw'], 'inv']],\n    ['Aurinkovoimala ja kulutus', [['kwp', 'kulutus'], 'sijainti', ['ilta', 'omaAste']]],\n    ['S\u00e4hk\u00f6n hinta', [['osto', 'myynti'], 'spotOn', 'spread']],\n    ['Tehomaksu ja liittym\u00e4', ['tehomaksu', 'huippu', 'leik', ['kesto', 'huippuPaivat'], 'tariffi', ['liitEur', 'liitKw']]],\n    ['Reservimarkkina', ['tuote', 'resOsuus', 'saatavuus', 'agg', 'skenaario']],\n    ['Verotus ja reunaehdot', ['verotila', 'veroluokka', 'esikval', 'palo']]\n  ];\n  var OLET = [['modOsuus', 'takuu'], ['ika', 'huolto']];\n  function nro(v) { var x = parseFloat(String(v === undefined ? '' : v).replace(\/[\\s\u00a0]\/g, '').replace(',', '.')); return isFinite(x) ? x : 0; }\n  function kenttaHtml(k) {\n    var f = F[k], h = '<div class=\"svl-group\" data-k=\"' + k + '\">';\n    if (f.o) {\n      h += '<div class=\"svl-label\" id=\"svl-l-' + k + '\">' + f.l + '<\/div><div class=\"svl-pills\" role=\"group\" aria-labelledby=\"svl-l-' + k + '\" data-pill=\"' + k + '\">';\n      f.o.forEach(function (o) { h += '<button type=\"button\" class=\"svl-pill\" data-v=\"' + o[0] + '\" aria-pressed=\"false\">' + o[1] + '<\/button>'; });\n      h += '<\/div>';\n    } else if (f.r) {\n      h += '<label class=\"svl-label\" for=\"svl-f-' + k + '\">' + f.l + '<\/label><div class=\"svl-sl\"><input type=\"range\" id=\"svl-f-' + k + '\" data-f=\"' + k + '\" min=\"' + f.r[0] + '\" max=\"' + f.r[1] + '\" step=\"' + f.r[2] + '\"><span class=\"svl-sl-val\" id=\"svl-v-' + k + '\"><\/span><\/div>';\n    } else {\n      h += '<label class=\"svl-label\" for=\"svl-f-' + k + '\">' + f.l + '<\/label><div class=\"svl-kentta\"><input class=\"svl-input\" type=\"text\" inputmode=\"decimal\" autocomplete=\"off\" id=\"svl-f-' + k + '\" data-f=\"' + k + '\"' + (f.ph ? ' placeholder=\"' + f.ph + '\"' : '') + ' aria-describedby=\"svl-e-' + k + '\"><span class=\"svl-yks\">' + f.u + '<\/span><\/div>';\n    }\n    h += '<div class=\"svl-virhe\" id=\"svl-e-' + k + '\" role=\"alert\"><\/div>';\n    h += '<div class=\"svl-hint\" id=\"svl-h-' + k + '\">' + (f.v || '') + '<\/div><\/div>';\n    return h;\n  }\n  function riviHtml(x) {\n    if (typeof x === 'string') return kenttaHtml(x);\n    return '<div class=\"svl-row2\">' + x.map(kenttaHtml).join('') + '<\/div>';\n  }\n  var sy = '';\n  SEKT.forEach(function (s) { sy += '<div class=\"svl-sec\">' + s[0] + '<\/div>' + s[1].map(riviHtml).join(''); });\n  sy += '<details class=\"svl-det\"><summary>Laskennan oletukset<\/summary><div class=\"svl-det-body\">' + OLET.map(riviHtml).join('') +\n    '<div class=\"svl-hint\">K\u00e4ytett\u00e4v\u00e4 kapasiteetti ' + luku(CFG.dod * 100) + '\u00a0%, hy\u00f6tysuhde ' + luku(CFG.eta * 100) + '\u00a0%, aurinkos\u00e4hk\u00f6n siirtoa ' + CFG.kesaPaivat + ' p\u00e4iv\u00e4n\u00e4 vuodessa.<\/div><\/div><\/details>';\n  g('svl-syotteet').innerHTML = sy;\n  \/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550 TILA JA TAPAHTUMAT \u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n  function naytaArvo(k) {\n    var f = F[k], v = TILA[k];\n    if (f.o) {\n      juuri.querySelectorAll('[data-pill=\"' + k + '\"] .svl-pill').forEach(function (b) { b.setAttribute('aria-pressed', b.dataset.v === String(v) ? 'true' : 'false'); });\n    } else if (f.r) {\n      g('svl-f-' + k).value = v; g('svl-v-' + k).textContent = luku(nro(v)) + ' ' + f.u;\n    } else {\n      g('svl-f-' + k).value = kentaksi(v);\n    }\n  }\n  function autoInv() { var a = CFG.invKaava[ryhma], kwh = nro(TILA.kwh); return kwh > 0 ? Math.round((a[0] + a[1] * kwh) \/ 100) * 100 : 0; }\n  function asetaRyhma(r) {\n    ryhma = r; MUOK = {};\n    var p = ESI[r];\n    Object.keys(F).forEach(function (k) { TILA[k] = p[k] === undefined ? '' : String(p[k]); naytaArvo(k); tarkista(k); });\n    juuri.querySelectorAll('.svl-tab').forEach(function (b) { b.setAttribute('aria-pressed', b.dataset.ryhma === r ? 'true' : 'false'); });\n    paivita();\n  }\n  function tarkista(k) {\n    var f = F[k]; if (f.o || f.r) return true;\n    var raw = String(TILA[k] === undefined ? '' : TILA[k]).replace(\/[\\s\u00a0]\/g, '').replace(',', '.');\n    var viesti = '';\n    if (raw === '') { if (f.pakko) viesti = 'Sy\u00f6t\u00e4 ' + f.l.toLowerCase() + '.'; }\n    else if (!\/^-?\\d*\\.?\\d+$\/.test(raw) && !\/^-?\\d+\\.$\/.test(raw)) viesti = 'Kirjoita luku, esimerkiksi 12,5.';\n    else if (parseFloat(raw) < 0) viesti = 'Luku ei voi olla negatiivinen.';\n    else if (f.max && parseFloat(raw) > f.max) viesti = 'Enint\u00e4\u00e4n ' + f.max + (f.u === '%' ? '\u00a0%.' : '.');\n    else if (f.pakko && parseFloat(raw) === 0) viesti = f.l + ' ei voi olla nolla.';\n    var e = g('svl-e-' + k), inp = g('svl-f-' + k);\n    e.textContent = viesti; e.classList.toggle('nak', !!viesti); inp.classList.toggle('virhe', !!viesti);\n    return !viesti;\n  }\n  juuri.querySelector('#svl-syotteet').addEventListener('input', function (e) {\n    var k = e.target.dataset.f; if (!k) return;\n    TILA[k] = e.target.value; MUOK[k] = true;\n    if (F[k].r) g('svl-v-' + k).textContent = luku(nro(e.target.value)) + ' ' + F[k].u;\n    if (k === 'kwh') {\n      if (!MUOK.kw) { TILA.kw = String(Math.round(nro(TILA.kwh) * 0.5 * 10) \/ 10); naytaArvo('kw'); tarkista('kw'); }\n      if (!MUOK.inv) { TILA.inv = String(autoInv()); naytaArvo('inv'); }\n    }\n    tarkista(k); paivita();\n  });\n  juuri.querySelector('#svl-syotteet').addEventListener('click', function (e) {\n    var b = e.target.closest('.svl-pill'); if (!b) return;\n    var k = b.parentNode.dataset.pill; TILA[k] = b.dataset.v; naytaArvo(k); paivita();\n  });\n  g('svl-tabs').addEventListener('click', function (e) { var b = e.target.closest('.svl-tab'); if (b) asetaRyhma(b.dataset.ryhma); });\n  function vieritaTulokseen() { g('svl-oikea').scrollIntoView({ behavior: 'smooth', block: 'start' }); }\n  g('svl-mbar-btn').addEventListener('click', vieritaTulokseen);\n  \/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550 N\u00c4YTT\u00d6 \u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n  function leima(r) {\n    var d = new Date(CFG.tarkistettu), kk = (Date.now() - d.getTime()) \/ (1000 * 60 * 60 * 24 * 30.4), vanha = kk > CFG.vanhenemisKk;\n    var el = g('svl-leima'), pv = d.toLocaleDateString('fi-FI');\n    el.className = 'svl-leima' + (vanha ? ' vanha' : '');\n    el.textContent = vanha\n      ? 'Markkinatiedot tarkistettu ' + pv + ', yli ' + CFG.vanhenemisKk + ' kk sitten. Reservi- ja hintatiedot voivat olla vanhentuneita. Tarkista reservitulo aggregaattorilta.'\n      : 'Markkinatiedot tarkistettu ' + pv + (r && r.tuote ? '. Tarkista reservitulo aggregaattorilta.' : '.');\n  }\n  function kortti(t, n, s, vari) {\n    return '<div class=\"svl-kortti\"><div class=\"svl-kortti-t\">' + t + '<\/div><div class=\"svl-kortti-n\"' + (vari ? ' style=\"color:' + vari + '\"' : '') + '>' + n + '<\/div>' + (s ? '<div class=\"svl-kortti-s\">' + s + '<\/div>' : '') + '<\/div>';\n  }\n  function eri(nimi, kaava, arvo, luokka) {\n    return '<div class=\"svl-eri' + (luokka ? ' ' + luokka : '') + '\"><span class=\"svl-eri-n\">' + nimi + (kaava ? '<span class=\"svl-eri-k\">' + kaava + '<\/span>' : '') + '<\/span><span class=\"svl-eri-a\">' + arvo + '<\/span><\/div>';\n  }\n  function pr(x, k) { return k > 0 ? Math.min(Math.max(x \/ k * 100, 0), 100) : 0; }\n  function palkki(osat) { return osat.map(function (o) { return o[0] > 0 ? '<div class=\"svl-osa ' + o[1] + '\" style=\"width:' + o[0].toFixed(2) + '%\"><\/div>' : ''; }).join(''); }\n  function takTeksti(x) { return x.takaisinmaksu === null ? 'ei maksa' : luku(x.takaisinmaksu, 1) + '\u00a0v'; }\n  function lr(tila, otsikko, teksti) {\n    var m = { ok: '\u2713', avoin: '!', estaa: '\u2715' }[tila], t = { ok: 'kunnossa', avoin: 'avoin', estaa: 'est\u00e4\u00e4' }[tila];\n    return '<div class=\"svl-lr ' + tila + '\"><b aria-hidden=\"true\">' + m + '<\/b><div><strong>' + otsikko + '<span class=\"svl-tila\">' + t + '<\/span><\/strong><span>' + teksti + '<\/span><\/div><\/div>';\n  }\n  function syote() { var s = { ryhma: ryhma }; Object.keys(F).forEach(function (k) { s[k] = TILA[k]; }); return s; }\n  function paivita() {\n    \/* kenttien n\u00e4kyvyys *\/\n    Object.keys(F).forEach(function (k) {\n      var f = F[k], ryhOk = (f.ryh || KAIKKI).indexOf(ryhma) >= 0, ehtoOk = !f.ehto || f.ehto(TILA);\n      juuri.querySelector('[data-k=\"' + k + '\"]').classList.toggle('svl-piilo', !(ryhOk && ehtoOk));\n    });\n    juuri.querySelectorAll('#svl-syotteet .svl-row2').forEach(function (rw) {\n      var nak = Array.prototype.some.call(rw.children, function (c) { return !c.classList.contains('svl-piilo'); });\n      rw.classList.toggle('svl-piilo', !nak);\n    });\n    var r = laske(syote());\n    var a = CFG.invKaava[ryhma];\n    g('svl-h-inv').textContent = 'Arvio ' + (a[0] ? luku(a[0]) + '\u00a0\u20ac + ' : '') + luku(a[1]) + '\u00a0\u20ac\/kWh = ' + eur(autoInv()) + '. Muuta, jos sinulla on tarjous.';\n    g('svl-h-leik').textContent = 'Tyhj\u00e4 = 30 % huipusta, enint\u00e4\u00e4n akun teho (nyt ' + des(r.tavoiteAuto) + '\u00a0kW).';\n    g('svl-f-omaAste').placeholder = r.tuotto > 0 && r.omaAuto ? 'auto ' + luku(r.omaAste0 * 100) : 'auto';\n    g('svl-h-osto').textContent = 'Energia + siirto + vero' + (ryhma === 'yritys' ? ', ALV 0.' : ', sis. ALV.') + ' Akku v\u00e4ltt\u00e4\u00e4 koko kilowattitunnin hinnan.';\n    leima(r);\n    var ok = r.kap > 0 && r.P > 0;\n    g('svl-tyhja').classList.toggle('svl-piilo', ok);\n    g('svl-tulos').classList.toggle('svl-piilo', !ok);\n    if (!ok) { g('svl-mbar-n').textContent = '\u2013'; VIIME = null; return; }\n    var skv = r.sken[r.sk], perus = r.sken.perus, T = r.tuote;\n    \/* hero *\/\n    g('svl-r-varmat').textContent = eur(r.varmat) + ' \/ v';\n    g('svl-r-varmat-s').textContent = 'Tehomaksu, oma aurinkos\u00e4hk\u00f6 ja p\u00f6rssis\u00e4hk\u00f6. Ei sis\u00e4ll\u00e4 reservituloa.';\n    g('svl-mbar-n').textContent = eur(r.varmat) + ' \/ v';\n    var takEl = g('svl-r-tak');\n    if (perus.maksaa) { takEl.textContent = luku(perus.takaisinmaksu, 1) + '\u00a0v'; takEl.className = 'svl-hero-n'; }\n    else { takEl.textContent = 'Ei maksa itse\u00e4\u00e4n takaisin'; takEl.className = 'svl-hero-n pieni'; takEl.style.color = '#B91C1C'; }\n    if (perus.maksaa) takEl.style.color = '';\n    g('svl-r-tak-s').textContent = perus.maksaa\n      ? 'Nettoinvestointi ' + eur(r.nettoInv) + ' \u00f7 kassavirta ' + eur(perus.kassavirta) + ' \/ v' + (T ? ', reservi perustasolla.' : '.')\n      : (perus.kassavirta > 0 ? 'Takaisinmaksu ' + luku(perus.takaisinmaksu, 1) + ' v ylitt\u00e4\u00e4 akun k\u00e4ytt\u00f6i\u00e4n ' + luku(r.kayttoika, 0) + '\u00a0v.' : 'Kassavirta ei ole positiivinen.');\n    \/* kortit *\/\n    g('svl-kortit').innerHTML =\n      kortti('Takaisinmaksu' + (T ? ', ' + { varo: 'varovainen', perus: 'perus', opti: 'optimistinen' }[r.sk] : ''), skv.takaisinmaksu !== null ? luku(skv.takaisinmaksu, 1) + '\u00a0v' : 'ei maksa', skv.maksaa ? 'Nettoinvestointi ' + eur(r.nettoInv) : (skv.takaisinmaksu !== null ? 'Yli k\u00e4ytt\u00f6i\u00e4n ' + luku(r.kayttoika, 0) + '\u00a0v' : 'Kassavirta ei ole positiivinen'), skv.maksaa ? '#00796B' : '#B91C1C') +\n      kortti('Vuosihy\u00f6ty kulumisen j\u00e4lkeen', eur(skv.netto) + ' \/ v', 'Kassavirta ' + eur(skv.kassavirta) + ' \u2212 kuluminen ' + eur(r.kuluma), skv.netto > 0 ? '#00796B' : '#B91C1C') +\n      kortti('Omavaraisuus', r.tuotto > 0 ? luku(r.omavar0 * 100) + '\u00a0% \u2192 ' + luku(r.omavar1 * 100) + '\u00a0%' : '\u2013', r.tuotto > 0 ? 'Ilman akkua \u2192 akun kanssa' : 'Ei aurinkovoimalaa') +\n      kortti('K\u00e4ytt\u00f6ik\u00e4 ja syklit', luku(r.kayttoika, 0) + '\u00a0v', luku(r.ekv, 0) + '\u00a0ekv. sykli\u00e4 \/ v, takuu ' + luku(r.takuu) + ' sykli\u00e4');\n    \/* tulot pinottuna *\/\n    var tulot = [\n      ['svl-c-pv', 'Aurinkos\u00e4hk\u00f6n oma k\u00e4ytt\u00f6', r.aurinko, r.pvSyy ? { 'ei voimalaa': 'ei voimalaa', 'ei tilaa': 'ei vapaata kapasiteettia', 'hintaero': 'myyntihinta liian l\u00e4hell\u00e4 ostohintaa', 'kuluminen': 'ei kannata, kuluminen suurempi' }[r.pvSyy] : ''],\n      ['svl-c-spot', 'Spot-arbitraasi', r.arbitraasi, r.arbSyy ? { 'ei k\u00e4yt\u00f6ss\u00e4': 'ei k\u00e4yt\u00f6ss\u00e4', 'ei tilaa': 'ei vapaata kapasiteettia', 'kuluminen': 'ei kannata t\u00e4ll\u00e4 hintaerolla' }[r.arbSyy] : ''],\n      ['svl-c-huippu', 'Huipputehon leikkaus', r.tehoSaasto, r.tehomaksu > 0 ? (r.leik > 0 ? '' : 'huipputeho puuttuu') : 'ei tehomaksua', 'varma'],\n      ['svl-c-res', 'Reservitulo' + (T ? ' (' + T.nimi + ')' : ''), T ? skv.reservi : 0, T ? (r.P_res > 0 ? '' : 'ei vapaata tehoa') : 'ei valittu', 'epav']\n    ];\n    var summa = tulot.reduce(function (s, t) { return s + Math.max(t[2], 0); }, 0);\n    g('svl-tulopalkki').innerHTML = summa > 0 ? palkki(tulot.map(function (t) { return [pr(Math.max(t[2], 0), summa), t[0]]; })) : '';\n    g('svl-tuloselite').innerHTML = tulot.map(function (t) {\n      var merkki = t[4] === 'varma' ? '<span class=\"svl-merkki varma\">varmin tulo<\/span>' : (t[4] === 'epav' ? '<span class=\"svl-merkki epav\">ep\u00e4varma<\/span>' : '');\n      return '<div class=\"svl-sel-r' + (t[3] ? ' pois' : '') + '\"><i class=\"' + t[0] + '\"><\/i><span>' + t[1] + merkki + (t[3] ? '<small>' + t[3] + '<\/small>' : '') + '<\/span><b>' + (t[3] ? '0 \u20ac' : eur(t[2])) + '<\/b><\/div>';\n    }).join('');\n    \/* allokaatio *\/\n    var yhtP = r.P_huippu + r.P_res + r.P_loppu, yhtE = r.E_huippu + r.E_res + r.E_loppu;\n    g('svl-allokaatio').innerHTML =\n      '<div class=\"svl-al-r\"><div class=\"svl-al-t\"><span>Teho ' + des(r.P) + '\u00a0kW<\/span><span>huippu ' + des(r.P_huippu) + ' + reservi ' + des(r.P_res) + ' + aurinko\/p\u00f6rssi ' + des(r.P_loppu) + ' = ' + des(yhtP) + '\u00a0kW<\/span><\/div>' +\n      '<div class=\"svl-palkki\">' + palkki([[pr(r.P_huippu, r.P), 'svl-c-huippu'], [pr(r.P_res, r.P), 'svl-c-res'], [pr(r.P_loppu, r.P), 'svl-c-spot']]) + '<\/div><\/div>' +\n      '<div class=\"svl-al-r\"><div class=\"svl-al-t\"><span>Kapasiteetti ' + des(r.E) + '\u00a0kWh k\u00e4ytett\u00e4viss\u00e4<\/span><span>huippu ' + des(r.E_huippu) + ' + reservi ' + des(r.E_res) + ' + aurinko\/p\u00f6rssi ' + des(r.E_loppu) + '\u00a0kWh<\/span><\/div>' +\n      '<div class=\"svl-palkki\">' + palkki([[pr(r.E_huippu, r.E), 'svl-c-huippu'], [pr(r.E_res, r.E), 'svl-c-res'], [pr(r.E_loppu, r.E), 'svl-c-spot']]) + '<\/div><\/div>' +\n      '<div class=\"svl-sel\"><div class=\"svl-sel-r\"><i class=\"svl-c-huippu\"><\/i><span>Huipun leikkaus<\/span><b><\/b><\/div><div class=\"svl-sel-r\"><i class=\"svl-c-res\"><\/i><span>Reservi<\/span><b><\/b><\/div><div class=\"svl-sel-r\"><i class=\"svl-c-spot\"><\/i><span>Aurinkos\u00e4hk\u00f6 kes\u00e4ll\u00e4, p\u00f6rssis\u00e4hk\u00f6 muina p\u00e4ivin\u00e4<\/span><b><\/b><\/div><\/div>';\n    \/* erittely *\/\n    var pvRivi = r.tuotto > 0\n      ? eri('Aurinkos\u00e4hk\u00f6n oma k\u00e4ytt\u00f6', r.pvSyy ? 'Ei mukana: ' + tulot[0][3] + '.' : des(r.lataus) + '\u00a0kWh\/vrk \u00d7 ' + CFG.kesaPaivat + '\u00a0pv \u00d7 (' + luku(CFG.eta * 100) + '\u00a0% \u00d7 ' + luku(r.osto * 100, 1) + '\u00a0snt \u2212 ' + luku(r.myynti * 100, 1) + '\u00a0snt)', r.pvSyy ? '0 \u20ac' : eur(r.aurinko), r.pvSyy ? 'pois' : '')\n      : '';\n    var arbRivi = r.spotOn\n      ? eri('Spot-arbitraasi', r.arbSyy === 'kuluminen'\n          ? 'Ei kannata t\u00e4ll\u00e4 hintaerolla: tuottaisi ' + eur(r.arbPotentiaali) + ' \/ v, mutta kuluttaisi akkua ' + eur(r.arbPotKuluma) + ' \/ v.'\n          : (r.arbSyy ? 'Ei mukana: ' + tulot[1][3] + '.' : des(r.E_arb) + '\u00a0kWh\/vrk \u00d7 ' + r.paivat + '\u00a0pv \u00d7 (' + luku(CFG.eta * 100) + '\u00a0% \u00d7 ' + luku((r.pHalpa + r.spread) * 100, 1) + '\u00a0snt \u2212 ' + luku(r.pHalpa * 100, 1) + '\u00a0snt)'),\n          r.arbSyy ? '0 \u20ac' : eur(r.arbitraasi), r.arbSyy ? 'pois' : '')\n      : '';\n    var huippuRivi = r.tehomaksu > 0\n      ? eri('Huipputehon leikkaus <span class=\"svl-merkki varma\">varmin tulo<\/span>', des(r.tehoLeik) + '\u00a0kW \u00d7 ' + lyh(r.tehomaksu) + '\u00a0\u20ac\/kW\/kk \u00d7 12' + (r.tarK < 1 ? ' \u00d7 ' + luku(r.tarK, 2) : ''), eur(r.tehoSaasto))\n      : '';\n    var resRivi = T\n      ? eri('Reservitulo, ' + T.nimi + ' <span class=\"svl-merkki epav\">ep\u00e4varma<\/span>', des(r.P_res) + '\u00a0kW \u00d7 ' + lyh(skv.hinta) + '\u00a0\u20ac\/MW,h \u00d7 8 760 h \u00d7 ' + luku(r.saat * 100) + '\u00a0% \u00d7 (1 \u2212 ' + luku(r.agg * 100) + '\u00a0%)', eur(skv.reservi))\n      : '';\n    g('svl-erittely').innerHTML = pvRivi + arbRivi + huippuRivi + resRivi +\n      (r.veroKulu >= 5 ? eri('S\u00e4hk\u00f6vero verkkoon sy\u00f6tetyst\u00e4 energiasta', luku(r.E_verkkoonV) + '\u00a0kWh\/v \u00d7 ' + luku(r.vero * 100, 2) + '\u00a0snt (ei lupaa)', '\u2212 ' + eur(r.veroKulu), 'kulu') : '') +\n      (r.huolto > 0 ? eri('Huolto ja ohjaus', '', '\u2212 ' + eur(r.huolto), 'kulu') : '') +\n      eri('Kassavirta \/ v', 'Takaisinmaksu lasketaan t\u00e4st\u00e4.', eur(skv.kassavirta), 'yht') +\n      eri('Akun kuluminen', luku(r.ekv, 0) + '\u00a0ekv. sykli\u00e4 \u00f7 ' + luku(r.takuu) + ' takuusykli\u00e4 \u00d7 akkumoduulien hinta ' + eur(r.inv * r.modOs), '\u2212 ' + eur(r.kuluma), 'kulu') +\n      eri('Vuosihy\u00f6ty kulumisen j\u00e4lkeen', '', eur(skv.netto), 'yht') +\n      eri('Investointi', '', eur(r.inv)) +\n      (r.liitEur > 0 ? eri('V\u00e4ltetty liittym\u00e4n vahvistus', r.liittymaOk ? 'Leikkaus ' + des(r.leik) + '\u00a0kW riitt\u00e4\u00e4 vaadittuun ' + des(r.liitKw) + '\u00a0kW:iin.' : 'Ei v\u00e4hennetty: leikkaus j\u00e4\u00e4 ' + des(r.leik) + '\u00a0kW:iin, vaatimus ' + des(r.liitKw) + '\u00a0kW.', r.liittymaOk ? '\u2212 ' + eur(r.liitEur) : '0 \u20ac', r.liittymaOk ? '' : 'pois') : '') +\n      eri('Nettoinvestointi', '', eur(r.nettoInv), 'yht');\n    \/* skenaariot *\/\n    g('svl-skenaariot-l').classList.toggle('svl-piilo', !T);\n    if (T) {\n      g('svl-skenaariot-s').textContent = T.nimi + ', ' + des(r.P_res) + '\u00a0kW. Hinnat ' + new Date(CFG.tarkistettu).toLocaleDateString('fi-FI') + ' tilanteen mukaan. Tarkista toteutunut taso aggregaattorilta. Punaisella merkitty takaisinmaksu on pidempi kuin akun k\u00e4ytt\u00f6ik\u00e4 ' + luku(r.kayttoika, 0) + '\u00a0v.';\n      g('svl-skenaariot').innerHTML = ['varo', 'perus', 'opti'].map(function (k) {\n        var x = r.sken[k];\n        return '<tr' + (k === r.sk ? ' class=\"valittu\"' : '') + '><td>' + { varo: 'Varovainen', perus: 'Perus', opti: 'Optimistinen' }[k] + '<small>' + lyh(x.hinta) + '\u00a0\u20ac\/MW,h<\/small><\/td><td>' + eur(x.reservi) + '<\/td><td>' + eur(x.kassavirta) + '<\/td><td' + (x.maksaa ? '' : ' class=\"yli\"') + '>' + (x.takaisinmaksu !== null ? luku(x.takaisinmaksu, 1) + '\u00a0v' : '\u2013') + '<\/td><\/tr>';\n      }).join('');\n    }\n    \/* reunaehdot *\/\n    var re = '';\n    if (T) {\n      var minOk = r.P_res >= T.minKw;\n      re += lr(r.P_res <= 0 ? 'estaa' : (minOk ? 'ok' : 'avoin'), 'Minimitarjous: FCR-N 0,1 MW, FCR-D 1 MW',\n        r.P_res <= 0 ? 'Reserviin ei j\u00e4\u00e4 tehoa tai kapasiteettia huipun leikkauksen j\u00e4lkeen.'\n          : 'Tarjottava teho on ' + des(r.P_res) + '\u00a0kW. ' + (minOk ? 'Se riitt\u00e4\u00e4 omaan tarjoukseen.' : T.nimi + ':n minimi on ' + luku(T.minKw) + '\u00a0kW, joten markkinalle p\u00e4\u00e4see vain aggregaattorin kautta. Aggregaattori ottaa tyypillisesti 20\u201330 % tulosta.'));\n      re += lr(ryhma === 'koti' ? 'avoin' : (TILA.esikval === 'on' ? 'ok' : 'avoin'), 'Fingridin esikvalifiointi ja reservimittaus',\n        ryhma === 'koti' ? 'Aggregaattori hoitaa yleens\u00e4 testit ja mittauksen. Varmista se sopimuksesta.' : 'Kohde testataan Fingridin vaatimusten mukaan. Reservimittaus on eri asia kuin taseselvityksen 15 minuutin mittaus.');\n    }\n    re += lr(r.verotila === 'eilupaa' ? 'avoin' : 'ok', 'S\u00e4hk\u00f6varaston verotus',\n      r.verotila === 'lupa' ? 'Verohallinnon lupa on. Verkkoon sy\u00f6tetyst\u00e4 energiasta ei makseta toista kertaa s\u00e4hk\u00f6veroa.'\n        : (r.verotila === 'oma' ? 'Akku purkaa vain omaan kulutukseen, joten toista s\u00e4hk\u00f6veroa ei synny.' + (T ? ' Varmista, ettei reservin aktivointi sy\u00f6t\u00e4 energiaa verkkoon.' : '')\n          : 'Ilman Verohallinnon lupaa verkkoon sy\u00f6tetyst\u00e4 energiasta maksetaan s\u00e4hk\u00f6vero kahteen kertaan. Omaan kulutukseen purettu energia ei ole ongelma. Tarkista rajaus Verohallinnolta.'));\n    var iso = r.kap >= CFG.paloKynnysKwh;\n    re += lr(ryhma !== 'koti' && TILA.palo === 'on' ? 'ok' : 'avoin', 'Paloturvallisuus',\n      ryhma === 'koti' ? 'Akun sijoitus valmistajan ohjeen ja asennusm\u00e4\u00e4r\u00e4ysten mukaan. Kysy asentajalta.'\n        : 'Paloturvallinen sijoitus ja osastointi ratkaistaan ennen lopullista mitoitusta.' + (iso ? ' T\u00e4m\u00e4n kokoisessa j\u00e4rjestelm\u00e4ss\u00e4 kysy pelastuslaitoksen n\u00e4kemys.' : ''));\n    if (ryhma === 'taloyhtio' && T) re += lr('avoin', 'Reservitulo on yhti\u00f6n tuloa', 'Selvit\u00e4 verotus ja vaikutus vastikkeisiin. Hankinta ja sopimus vaativat hallituksen tai yhti\u00f6kokouksen p\u00e4\u00e4t\u00f6ksen.');\n    if (r.liitKw > 0) re += lr(r.liittymaOk ? 'avoin' : 'estaa', 'Liittym\u00e4 ja tehorajoitin', r.liittymaOk\n      ? 'Verkkoyhti\u00f6n on hyv\u00e4ksytt\u00e4v\u00e4 akku tehorajoittimeksi, ja ' + des(r.liitKw) + '\u00a0kW:n on oltava k\u00e4ytett\u00e4viss\u00e4 joka p\u00e4iv\u00e4.'\n      : 'Akku ei yll\u00e4 vaadittuun ' + des(r.liitKw) + '\u00a0kW:n leikkaukseen. Liittym\u00e4n vahvistusta ei voi j\u00e4tt\u00e4\u00e4 pois.');\n    g('svl-reunaehdot').innerHTML = re;\n    g('svl-markkina').classList.toggle('svl-piilo', !T);\n    \/* huomiot *\/\n    var h = [];\n    if (r.myynti > r.osto) h.push('Myyntihinta on ostohintaa suurempi. Silloin ylij\u00e4\u00e4m\u00e4 kannattaa myyd\u00e4, eik\u00e4 akkua kannata ladata aurinkos\u00e4hk\u00f6ll\u00e4.');\n    if (r.tehomaksu > 0 && r.huippu <= 0) h.push('Sy\u00f6t\u00e4 kiinteist\u00f6n huipputeho, jotta tehomaksun s\u00e4\u00e4st\u00f6 voidaan laskea.');\n    if (r.tehomaksu > 0 && r.leik < r.tavoite - 0.01) h.push('Tavoiteltu ' + des(r.tavoite) + '\u00a0kW:n leikkaus ei toteudu. Akun teho, kapasiteetti ja ' + des(r.kesto) + ' tunnin huippu rajaavat sen ' + des(r.leik) + '\u00a0kW:iin.');\n    if (T && r.P_res > 0 && r.E_vapaa \/ T.energiaH < r.P_vapaa * r.resOs - 0.01) h.push('Kapasiteetti rajaa reservitehoa: ' + T.nimi + ' sitoo ' + luku(T.energiaH, 2) + '\u00a0kWh jokaista kW:a kohden.');\n    if (r.tuotto > 0 && !r.pvSyy && r.lataus < r.latausMax - 0.01) h.push('Aurinkos\u00e4hk\u00f6n siirto j\u00e4\u00e4 alle kapasiteetin.');\n    if (r.ekv > r.takuu \/ r.ika * 1.05) h.push('Syklej\u00e4 kertyy ' + luku(r.ekv, 0) + ' vuodessa, joten takuusyklit loppuvat noin ' + luku(r.kayttoika, 0) + ' vuodessa, ennen kalenteri-ik\u00e4\u00e4.');\n    if (r.tarK < 1 && r.tehomaksu > 0) h.push('Valittu tehotariffi toteutuu ep\u00e4varmemmin kuin kuukausihuippu, joten s\u00e4\u00e4st\u00f6st\u00e4 on huomioitu ' + luku(r.tarK * 100) + '\u00a0%.');\n    g('svl-huomiot').innerHTML = h.length ? '<div class=\"svl-huom\"><div class=\"svl-huom-t\">Huomioitavaa<\/div><ul><li>' + h.join('<\/li><li>') + '<\/li><\/ul><\/div>' : '';\n    \/* kaavat *\/\n    g('svl-r-kaavat').innerHTML =\n      '<b>J\u00e4rjestys:<\/b> huipun leikkaus varataan ensin, reservi saa osuuden j\u00e4ljelle j\u00e4\u00e4v\u00e4st\u00e4 tehosta ja loppu j\u00e4\u00e4 aurinkos\u00e4hk\u00f6lle ja p\u00f6rssis\u00e4hk\u00f6lle. N\u00e4in sama kW tai kWh ei ole kahdessa paikassa.<br>' +\n      '<b>Huippu:<\/b> leikkaus = min(tavoite tai liittym\u00e4n vaatimus, huipputeho, akun teho, kapasiteetti \u00f7 kesto) = ' + des(r.leik) + '\u00a0kW. Energiaa kuluu kolmion muotoisesta huipusta ' + luku(r.kWhHuippuV) + '\u00a0kWh\/v.<br>' +\n      (T ? '<b>Reservi:<\/b> tarjottava teho = min(vapaa teho ' + des(r.P_vapaa) + '\u00a0kW \u00d7 ' + luku(r.resOs * 100) + '\u00a0%, vapaa kapasiteetti ' + des(r.E_vapaa) + '\u00a0kWh \u00f7 ' + luku(T.energiaH, 2) + '\u00a0kWh\/kW) = ' + des(r.P_res) + '\u00a0kW.' + (r.tuoteK === 'fcrn' ? ' FCR-N on symmetrinen, joten se sitoo kapasiteettia molempiin suuntiin.' : '') + '<br>' : '') +\n      '<b>Aurinko:<\/b> tuotto ' + luku(r.tuotto) + '\u00a0kWh\/v, omak\u00e4ytt\u00f6 ilman akkua ' + luku(r.omaAste0 * 100) + '\u00a0%, ylij\u00e4\u00e4m\u00e4 ' + luku(r.ylijaama) + '\u00a0kWh\/v. Lataus\/vrk = min(vapaa kapasiteetti, ylij\u00e4\u00e4m\u00e4 \u00f7 ' + CFG.kesaPaivat + ', iltakulutus \u00f7 hy\u00f6tysuhde, teho \u00d7 ' + CFG.latausIkkunaPv + ' h) = ' + des(r.latausMax) + '\u00a0kWh.<br>' +\n      '<b>P\u00f6rssis\u00e4hk\u00f6:<\/b> halpa tunti = ostohinta \u2212 hintaero \u00f7 2. K\u00e4ytt\u00f6tapa otetaan mukaan vain, jos tulo yht\u00e4 t\u00e4ytt\u00e4 sykli\u00e4 kohden on suurempi kuin syklin kuluminen ' + luku(r.cSyk, 2) + '\u00a0\u20ac.<br>' +\n      '<b>Kuluminen:<\/b> ekvivalenttisyklit \u00f7 takuusyklit \u00d7 akkumoduulien osuus investoinnista. Se n\u00e4ytet\u00e4\u00e4n kustannuksena, mutta sit\u00e4 ei v\u00e4hennet\u00e4 takaisinmaksun laskennassa, koska investointi on jo nimitt\u00e4j\u00e4ss\u00e4.<br>' +\n      '<b>S\u00e4hk\u00f6vero:<\/b> ilman Verohallinnon lupaa verkkoon sy\u00f6tetyst\u00e4 energiasta maksetaan vero toiseen kertaan (' + lyh(r.vero * 100) + '\u00a0snt\/kWh). Laskuri olettaa, ett\u00e4 puolet reservin purkuenergiasta menee verkkoon: ' + eur(r.veroKulu) + '\/v.<br>' +\n      '<b>Takaisinmaksu:<\/b> nettoinvestointi \u00f7 (tulot \u2212 huolto \u2212 s\u00e4hk\u00f6vero). Jos tulos on pidempi kuin k\u00e4ytt\u00f6ik\u00e4, akku ei maksa itse\u00e4\u00e4n takaisin.';\n    \/* koonti tarjouspyynt\u00f6\u00f6n *\/\n    VIIME = { moodi: { koti: 'Omakotitalo', taloyhtio: 'Taloyhti\u00f6', yritys: 'Yritys' }[ryhma], rivit: [\n      ['Akku', des(r.kap) + '\u00a0kWh \/ ' + des(r.P) + '\u00a0kW, investointi ' + eur(r.inv)],\n      ['Aurinkovoimala', r.tuotto > 0 ? des(nro(TILA.kwp)) + '\u00a0kWp, ' + luku(r.tuotto) + '\u00a0kWh\/v' : 'ei voimalaa'],\n      ['Kulutus', luku(nro(TILA.kulutus)) + '\u00a0kWh\/v, ostohinta ' + luku(r.osto * 100, 1) + '\u00a0snt'],\n      ['Allokaatio teho', 'huippu ' + des(r.P_huippu) + ' + reservi ' + des(r.P_res) + ' + muu ' + des(r.P_loppu) + '\u00a0kW'],\n      ['Allokaatio kapasiteetti', 'huippu ' + des(r.E_huippu) + ' + reservi ' + des(r.E_res) + ' + muu ' + des(r.E_loppu) + '\u00a0kWh'],\n      ['Aurinkos\u00e4hk\u00f6n oma k\u00e4ytt\u00f6', eur(r.aurinko) + ' \/ v'],\n      ['Spot-arbitraasi', r.arbSyy ? '0 \u20ac (' + tulot[1][3] + ')' : eur(r.arbitraasi) + ' \/ v'],\n      ['Huipputehon leikkaus', eur(r.tehoSaasto) + ' \/ v (' + des(r.tehoLeik) + '\u00a0kW)'],\n      ['Reservitulo', T ? T.nimi + ' ' + des(r.P_res) + '\u00a0kW: ' + eur(r.sken.varo.reservi) + ' \/ ' + eur(r.sken.perus.reservi) + ' \/ ' + eur(r.sken.opti.reservi) + ' (varo\/perus\/opti)' : 'ei reservi\u00e4'],\n      ['Kuluminen', '\u2212 ' + eur(r.kuluma) + ' \/ v (' + luku(r.ekv, 0) + '\u00a0ekv. sykli\u00e4, k\u00e4ytt\u00f6ik\u00e4 ~' + luku(r.kayttoika, 0) + ' v)'],\n      ['Varmat s\u00e4\u00e4st\u00f6t', eur(r.varmat) + ' \/ v'],\n      ['Nettoinvestointi', eur(r.nettoInv)],\n      ['Takaisinmaksu (perus)', takTeksti(perus) + (perus.takaisinmaksu !== null && !perus.maksaa ? ' (yli k\u00e4ytt\u00f6i\u00e4n)' : '')],\n      ['Omavaraisuus', luku(r.omavar0 * 100) + '\u00a0% -> ' + luku(r.omavar1 * 100) + '\u00a0%'],\n      ['Verotila', { eilupaa: 'ei lupaa', lupa: 'lupa on', oma: 'purkaa vain omaan kulutukseen' }[r.verotila]]\n    ] };\n  }\n  \/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550 TARJOUSPYYNT\u00d6 \u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n  function koonti() {\n    if (!VIIME) return '';\n    var rr = ['LASKELMA \u2014 ' + CFG.laskuri + ' (' + VIIME.moodi + ')', ''];\n    VIIME.rivit.forEach(function (x) { rr.push('  ' + (x[0] + '                              ').slice(0, 30) + x[1]); });\n    rr.push('');\n    rr.push('Markkinatiedot tarkistettu ' + CFG.tarkistettu + '. Suuntaa antava arvio.');\n    return rr.join('\\n');\n  }\n  function palaute(tila, html) { var el = g('svl-palaute'); el.className = 'svl-viesti ' + tila; el.innerHTML = html; }\n  function mailtoVara(d) {\n    var body = 'Nimi: ' + d.nimi + '\\nPuhelin: ' + d.puhelin + '\\nS\u00e4hk\u00f6posti: ' + d.email +\n      '\\nPaikkakunta: ' + d.paikkakunta + '\\n\\nLis\u00e4tiedot:\\n' + (d.viesti || '-') + '\\n\\n' + d.koonti;\n    return 'mailto:' + CFG.email + '?subject=' + encodeURIComponent('Tarjouspyynt\u00f6 \u2014 ' + CFG.laskuri) + '&body=' + encodeURIComponent(body);\n  }\n  g('svl-laheta').addEventListener('click', function () {\n    var btn = this;\n    var nimi = g('svl-nimi').value.trim(), email = g('svl-email').value.trim(), puh = g('svl-puh').value.trim();\n    var emailOk = \/^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$\/.test(email);\n    g('svl-nimi').classList.toggle('virhe', !nimi);\n    g('svl-puh').classList.toggle('virhe', !puh);\n    g('svl-email').classList.toggle('virhe', !emailOk);\n    if (!nimi || !puh || !emailOk) { palaute('fail', 'T\u00e4yt\u00e4 nimi, puhelin ja toimiva s\u00e4hk\u00f6postiosoite.'); return; }\n    if (!g('svl-lupa').checked) { palaute('fail', 'Hyv\u00e4ksy viel\u00e4 yhteydenotto ja tietojen k\u00e4sittely.'); return; }\n    if (!VIIME) { palaute('fail', 'Sy\u00f6t\u00e4 ensin akun tiedot, niin laskelma l\u00e4htee viestin mukana.'); return; }\n    var d = {\n      action: CFG.action, laskuri: CFG.laskuri + ' \u2014 ' + VIIME.moodi,\n      nimi: nimi, email: email, puhelin: puh,\n      paikkakunta: g('svl-paikkakunta').value.trim(), viesti: g('svl-viesti').value.trim(),\n      koonti: koonti(), sivu: window.location.href,\n      hp: g('svl-hp-kentta').value, kesto: Math.round((Date.now() - avattu) \/ 1000)\n    };\n    btn.disabled = true; btn.textContent = 'L\u00e4hetet\u00e4\u00e4n\u2026';\n    fetch(CFG.ajaxUrl, {\n      method: 'POST',\n      headers: { 'Content-Type': 'application\/x-www-form-urlencoded; charset=UTF-8' },\n      body: new URLSearchParams(d).toString()\n    })\n    .then(function (r) { return r.json(); })\n    .then(function (j) {\n      if (!j || !j.success) throw new Error('fail');\n      btn.textContent = 'Kiitos, laskelma l\u00e4hetetty';\n      palaute('ok', 'Kiitos ' + esc(nimi) + '! Laskelmasi on l\u00e4hetetty, ja olemme yhteydess\u00e4 yhden arkip\u00e4iv\u00e4n kuluessa.');\n    })\n    .catch(function () {\n      btn.disabled = false; btn.textContent = 'L\u00e4het\u00e4 laskelma';\n      palaute('fail', 'L\u00e4hetys ei onnistunut. <a href=\"' + mailtoVara(d) + '\">Avaa s\u00e4hk\u00f6postiohjelma ja l\u00e4het\u00e4 laskelma t\u00e4st\u00e4<\/a>, tai soita meille.');\n    });\n  });\n  asetaRyhma('koti');\n})();\n<\/script>\n\n\n\n<\/div>\n<\/div><\/div><\/div>\n<\/section><section class=\"bde-section-6708-110 bde-section\">\n  \n  \n\t\n\n\n\n<div class=\"section-container\"><div class=\"bde-icon-6708-111 bde-icon\">\n\n    \n            <div class=\"bde-icon-icon breakdance-icon-atom\" >\n    \n                    <svg width=\"58\" height=\"58\" viewBox=\"0 0 58 58\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n<g clip-path=\"url(#clip0_30_767)\">\r\n<path d=\"M26.5341 0V17.607L31.712 22.7682V5.16121L26.5341 0Z\" fill=\"#04353C\"\/>\r\n<path d=\"M58 26.4351H40.3986L35.2341 31.5784H52.84L58 26.4351Z\" fill=\"#04353C\"\/>\r\n<path d=\"M50.2801 4.25122L35.3594 19.1282V26.4261L50.2801 11.5536V4.25122Z\" fill=\"#04353C\"\/>\r\n<path d=\"M53.7215 50.0106L38.8725 35.2095H31.5732L46.4223 50.0106H53.7215Z\" fill=\"#04353C\"\/>\r\n<path d=\"M31.6583 57.9999V40.3929L26.4803 35.2317V52.8387L31.6583 57.9999Z\" fill=\"#04353C\"\/>\r\n<path d=\"M0 31.5738H17.664L22.842 26.4126H5.17793L0 31.5738Z\" fill=\"#04353C\"\/>\r\n<path d=\"M7.90796 53.7486L22.8286 38.8717V31.5737L7.90796 46.4462V53.7486Z\" fill=\"#04353C\"\/>\r\n<path d=\"M4.29187 7.92236L19.1902 22.7725H26.5163L11.6179 7.92236H4.29187Z\" fill=\"#04353C\"\/>\r\n<\/g>\r\n<defs>\r\n<clipPath id=\"clip0_30_767\">\r\n<rect width=\"58\" height=\"58\" fill=\"white\"\/>\r\n<\/clipPath>\r\n<\/defs>\r\n<\/svg>\n        \n        \n        \n            <\/div>\n    \n\n\n<\/div><div class=\"bde-div-6708-112 bde-div\">\n  \n  \n\t\n\n\n\n<h2 class=\"bde-heading-6708-113 bde-heading\">\nMist\u00e4 akun hy\u00f6ty syntyy?\n<\/h2>\n<\/div><div class=\"bde-text-6708-114 bde-text bde-preset-47759b69-d321-4740-bd1a-a172540a1c37\">\nAkku maksaa itsens\u00e4 takaisin vain, jos sill\u00e4 on tekemist\u00e4. Hy\u00f6ty syntyy nelj\u00e4st\u00e4 l\u00e4hteest\u00e4: aurinkos\u00e4hk\u00f6n omasta k\u00e4yt\u00f6st\u00e4, p\u00f6rssis\u00e4hk\u00f6n ajoituksesta, huipputehon leikkauksesta ja reservimarkkinasta.<br><br>L\u00e4hteiden varmuus vaihtelee paljon. Tehomaksun leikkaus ei riipu s\u00e4hk\u00f6n hinnasta, joten se on taloyhti\u00f6lle ja yritykselle yleens\u00e4 varmin hy\u00f6ty. Reservitulo taas vaihtelee tunneittain ja on laskenut nopeasti, kun markkinalle on tullut lis\u00e4\u00e4 akkuja.<br><br>Siksi laskuri erittelee l\u00e4hteet, laskee saman kilowatin vain kerran ja v\u00e4hent\u00e4\u00e4 akun kulumisen kustannuksena. Tulos on varovaisempi kuin monessa muussa laskurissa, mutta se pit\u00e4\u00e4 paremmin paikkansa.\n<\/div><\/div>\n<\/section><section class=\"bde-section-6708-115 bde-section\">\n  \n  \n\t\n\n\n\n<div class=\"section-container\"><div class=\"bde-columns-6708-116 bde-columns\"><div class=\"bde-column-6708-117 bde-column\">\n  \n  \n\t\n\n\n\n<div class=\"bde-code-block-6708-118 bde-code-block\">\n\n  <section>\n  <h2>Mitk\u00e4 tekij\u00e4t vaikuttavat akun kannattavuuteen?<\/h2>\n\n  <div class=\"factor\">\n    <div class=\"factor-header\">\n      <div class=\"factor-num\">1<\/div>\n      <h3>Aurinkos\u00e4hk\u00f6n oma k\u00e4ytt\u00f6<\/h3>\n    <\/div>\n    <p>Keskip\u00e4iv\u00e4n ylij\u00e4\u00e4m\u00e4 ladataan akkuun ja k\u00e4ytet\u00e4\u00e4n illalla. Hy\u00f6ty on ostohinnan ja myyntihinnan erotus, josta v\u00e4hennet\u00e4\u00e4n lataus- ja purkuh\u00e4vi\u00f6. Jos ylij\u00e4\u00e4m\u00e4 myyd\u00e4\u00e4n kes\u00e4ll\u00e4 l\u00e4hes nollahintaan, erotus on suuri. Jos myyntihinta on korkea, akku tuo v\u00e4h\u00e4n.<\/p>\n  <\/div>\n\n  <div class=\"factor\">\n    <div class=\"factor-header\">\n      <div class=\"factor-num\">2<\/div>\n      <h3>P\u00f6rssis\u00e4hk\u00f6n ajoitus<\/h3>\n    <\/div>\n    <p>Akku latautuu halvoilla tunneilla ja purkaa kalliilla. T\u00e4m\u00e4 kannattaa vain, jos vuorokauden hintaero on riitt\u00e4v\u00e4n suuri. Pienell\u00e4 erolla akku kuluu enemm\u00e4n kuin s\u00e4\u00e4st\u00e4\u00e4, ja laskuri j\u00e4tt\u00e4\u00e4 silloin ajoituksen pois.<\/p>\n  <\/div>\n\n  <div class=\"factor\">\n    <div class=\"factor-header\">\n      <div class=\"factor-num\">3<\/div>\n      <h3>Huipputehon leikkaus<\/h3>\n    <\/div>\n    <p>Jos verkkoyhti\u00f6 laskuttaa tehosta, akku voi leikata kuukauden korkeimman tunnin. T\u00e4m\u00e4 on yleens\u00e4 taloyhti\u00f6n ja yrityksen varmin hy\u00f6ty, koska se ei riipu s\u00e4hk\u00f6n hinnasta. Joskus akulla voi my\u00f6s v\u00e4ltt\u00e4\u00e4 liittym\u00e4n suurentamisen. Silloin s\u00e4\u00e4st\u00f6 on kertaluonteinen ja v\u00e4hennet\u00e4\u00e4n investoinnista.<\/p>\n  <\/div>\n\n  <div class=\"factor\">\n    <div class=\"factor-header\">\n      <div class=\"factor-num\">4<\/div>\n      <h3>Reservimarkkina<\/h3>\n    <\/div>\n    <p>Fingrid ostaa taajuusreservej\u00e4, joilla s\u00e4hk\u00f6verkon taajuus pidet\u00e4\u00e4n vakaana. Akku voi osallistua, mutta tulo vaihtelee tunneittain ja on laskenut nopeasti. Laskuri n\u00e4ytt\u00e4\u00e4 sen siksi kolmella hintatasolla eik\u00e4 laske sit\u00e4 varmoihin s\u00e4\u00e4st\u00f6ihin.<\/p>\n    <table>\n      <thead>\n        <tr><th>Hy\u00f6ty<\/th><th>Kenelle<\/th><th>Varmuus<\/th><\/tr>\n      <\/thead>\n      <tbody>\n        <tr><td>Huipputehon leikkaus<\/td><td>Taloyhti\u00f6, yritys<\/td><td><span class=\"badge badge-green\">Varmin<\/span><\/td><\/tr>\n        <tr><td>Aurinkos\u00e4hk\u00f6n oma k\u00e4ytt\u00f6<\/td><td>Kaikki, joilla on paneelit<\/td><td><span class=\"badge badge-teal\">Hyv\u00e4<\/span><\/td><\/tr>\n        <tr><td>P\u00f6rssis\u00e4hk\u00f6n ajoitus<\/td><td>Kaikki<\/td><td><span class=\"badge badge-amber\">Riippuu hintaerosta<\/span><\/td><\/tr>\n        <tr><td>Reservimarkkina<\/td><td>Aggregaattorin kautta<\/td><td><span class=\"badge badge-red\">Vaihtelee paljon<\/span><\/td><\/tr>\n      <\/tbody>\n    <\/table>\n  <\/div>\n\n  <div class=\"factor\">\n    <div class=\"factor-header\">\n      <div class=\"factor-num\">5<\/div>\n      <h3>Sama kilowatti lasketaan vain kerran<\/h3>\n    <\/div>\n    <p>Akun teho ja kapasiteetti ovat rajallisia. Jos 5 kW:n akusta varataan 2,5 kW reserviin, huipun leikkaukseen ja aurinkos\u00e4hk\u00f6lle j\u00e4\u00e4 en\u00e4\u00e4 2,5 kW. Moni laskuri laskee jokaisen k\u00e4ytt\u00f6tavan erikseen koko akulle ja saa tuloksen, jota mik\u00e4\u00e4n akku ei pysty toteuttamaan.<\/p>\n    <div class=\"note\">\n      <strong>N\u00e4in laskuri jakaa akun:<\/strong> ensin huipun leikkaus, koska se on varmin. Sitten reservi, silt\u00e4 osin kuin kapasiteettia j\u00e4\u00e4. Loppu j\u00e4\u00e4 aurinkos\u00e4hk\u00f6lle ja p\u00f6rssis\u00e4hk\u00f6lle. Tuloksen palkki n\u00e4ytt\u00e4\u00e4, mihin mikin osa akusta on varattu.\n    <\/div>\n  <\/div>\n\n  <div class=\"factor\">\n    <div class=\"factor-header\">\n      <div class=\"factor-num\">6<\/div>\n      <h3>Kuluminen on kustannus<\/h3>\n    <\/div>\n    <p>Jokainen lataus ja purku kuluttaa akkua. Laskuri muuttaa k\u00e4yt\u00f6n ekvivalenttisykleiksi ja hinnoittelee ne akkumoduulien hinnan ja takuusyklien mukaan. Invertteri ja asennus eiv\u00e4t kulu sykleist\u00e4, joten niit\u00e4 ei lasketa mukaan.<\/p>\n    <p>K\u00e4ytt\u00f6tapa otetaan mukaan vain, jos se tuottaa sykli\u00e4 kohden enemm\u00e4n kuin sykli maksaa. Siksi p\u00f6rssis\u00e4hk\u00f6n ajoitus n\u00e4kyy usein harmaana: pienell\u00e4 hintaerolla se ei kannata.<\/p>\n  <\/div>\n\n  <div class=\"factor\">\n    <div class=\"factor-header\">\n      <div class=\"factor-num\">7<\/div>\n      <h3>Reunaehdot ennen hankintaa<\/h3>\n    <\/div>\n    <table>\n      <thead>\n        <tr><th>Asia<\/th><th>Mit\u00e4 se tarkoittaa<\/th><\/tr>\n      <\/thead>\n      <tbody>\n        <tr><td>Reservin minimitarjous<\/td><td>FCR-N:ss\u00e4 minimi on 0,1 MW ja FCR-D:ss\u00e4 1 MW. Kotiakku ja useimmat kiinteist\u00f6akut p\u00e4\u00e4sev\u00e4t markkinalle vain aggregaattorin kautta, joka ottaa tyypillisesti 20\u201330 % tulosta.<\/td><\/tr>\n        <tr><td>Esikvalifiointi ja mittaus<\/td><td>Reservikohde testataan Fingridin vaatimusten mukaan, ja se tarvitsee reservimittauksen.<\/td><\/tr>\n        <tr><td>S\u00e4hk\u00f6vero<\/td><td>Kun akku purkaa s\u00e4hk\u00f6\u00e4 verkkoon ilman Verohallinnon s\u00e4hk\u00f6varastolupaa, samasta energiasta voi joutua maksamaan s\u00e4hk\u00f6veron kahteen kertaan. Omaan kulutukseen purettu s\u00e4hk\u00f6 ei t\u00e4t\u00e4 ongelmaa aiheuta.<\/td><\/tr>\n        <tr><td>Paloturvallisuus<\/td><td>Akun sijoitus ja osastointi ratkaistaan ennen lopullista mitoitusta. Isommissa kiinteist\u00f6akuissa kannattaa kysy\u00e4 pelastuslaitoksen n\u00e4kemys ajoissa.<\/td><\/tr>\n        <tr><td>Taloyhti\u00f6<\/td><td>Reservitulo on yhti\u00f6n tuloa. Verotus, vaikutus vastikkeisiin ja p\u00e4\u00e4t\u00f6ksenteko selvitet\u00e4\u00e4n etuk\u00e4teen.<\/td><\/tr>\n      <\/tbody>\n    <\/table>\n    <div class=\"note\">\n      <strong>Ennen p\u00e4\u00e4t\u00f6st\u00e4:<\/strong> pyyd\u00e4 aggregaattorilta viimeisen 12 kuukauden toteutunut reservitulo ja tarkista oman kohteesi s\u00e4hk\u00f6verotilanne Verohallinnolta.\n    <\/div>\n  <\/div>\n<\/section>\n\n\n<\/div><div class=\"bde-button-6708-119 bde-button bde-preset-acebc542-f6fd-4720-ab77-2bf03baec590\">\n        \n    \n    \n    \n    \n            \n                    \n            \n            \n\n    \n    \n    \n    \n    \n    <a class=\"breakdance-link button-atom button-atom--custom bde-button__button\" href=\"https:\/\/renewe.fi\/ota-yhteytta\/\" target=\"_self\" data-type=\"url\"  >\n\n    \n        <span class=\"button-atom__text\">Pyyd\u00e4 kartoitus<\/span>\n\n                            \n        \n                <\/a>\n\n    \n\n\n<\/div>\n<\/div><\/div><\/div>\n<\/section><section class=\"bde-section-6708-120 bde-section\">\n  \n  \n\t\n\n\n\n<div class=\"section-container\"><p class=\"bde-text-6708-121 bde-text\">\n#RENEWE VASTAA\n<\/p><h2 class=\"bde-heading-6708-122 bde-heading\">\nUsein kysytty\u00e4 s\u00e4hk\u00f6akusta\n<\/h2><div class=\"bde-frequently-asked-questions-6708-123 bde-frequently-asked-questions\">\n      <div class=\"bde-faq__item\">\n      <h4 class=\"bde-faq__title-tag\">\n       <button id=\"bde-faq-123-button-1\" aria-expanded=\"false\" aria-controls=\"bde-faq-123-1\" class=\"bde-faq__question js-faq-item\">\n          <span class=\"bde-faq__title\">Kannattaako akku ilman aurinkopaneeleita?<\/span>\n                           <div aria-hidden=\"true\" class=\"bde-faq__icon bde-faq__icon--inactive\">\n                                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" version=\"1.1\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\">\r\n<title>Chevron-Down<\/title>\r\n<path d=\"M16.609 22.389c-0.37 0.37-0.97 0.37-1.34 0l-9.659-9.659c-0.37-0.37-0.37-0.97 0-1.34l0.447-0.447c0.37-0.37 0.97-0.37 1.34 0l8.542 8.542 8.542-8.542c0.37-0.37 0.97-0.37 1.34 0l0.447 0.447c0.37 0.37 0.37 0.97 0 1.34l-9.659 9.659z\"\/>\r\n<\/svg>\n                            <\/div>\n         \t  <div aria-hidden=\"true\" class=\"bde-faq__icon bde-faq__icon--active\">\n                                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" version=\"1.1\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\">\r\n<title>Chevron-Up<\/title>\r\n<path d=\"M15.391 9.611c0.37-0.37 0.97-0.37 1.34 0l9.659 9.659c0.37 0.37 0.37 0.97 0 1.34l-0.447 0.447c-0.37 0.37-0.97 0.37-1.34 0l-8.542-8.542-8.542 8.542c-0.37 0.37-0.97 0.37-1.34 0l-0.447-0.447c-0.37-0.37-0.37-0.97 0-1.34l9.659-9.659z\"\/>\r\n<\/svg>\n                            <\/div>\n                  <\/button>\n      <\/h4>\n      <div role=\"region\" aria-labelledby=\"bde-faq-123-button-1\" id=\"bde-faq-123-1\" class=\"bde-faq__answer\">\n        <div class=\"bde-faq__answer-content\">\n            <div class=\"breakdance-rich-text-styles\">Joskus. Ilman paneeleita akku s\u00e4\u00e4st\u00e4\u00e4 vain p\u00f6rssis\u00e4hk\u00f6n ajoituksesta, tehomaksusta ja mahdollisesta reservitulosta. Omakotitalossa ilman tehomaksua j\u00e4ljelle j\u00e4\u00e4 k\u00e4yt\u00e4nn\u00f6ss\u00e4 p\u00f6rssis\u00e4hk\u00f6n hintaero. Jos se on vuorokaudessa keskim\u00e4\u00e4rin vain muutaman sentin, akku kuluu nopeammin kuin s\u00e4\u00e4st\u00e4\u00e4. Yrityksess\u00e4 ja taloyhti\u00f6ss\u00e4 tehomaksun leikkaus voi riitt\u00e4\u00e4 yksin\u00e4\u00e4n perusteeksi. Kokeile laskurissa asettamalla voimalan kooksi 0.<\/div>\n\n                                  \n    \n    \n    \n    \n            \n                    \n            \n            \n\n    \n    \n    \n    \n    \n    <a class=\"breakdance-link button-atom button-atom--primary bde-faq__btn\" href=\"https:\/\/renewe.fi\/ota-yhteytta\/\" target=\"_self\" data-type=\"url\"  >\n\n    \n        <span class=\"button-atom__text\">Kysy lis\u00e4tietoja<\/span>\n\n        \n        \n                <\/a>\n\n    \n\n                    <\/div>\n      <\/div>\n    <\/div>\n      <div class=\"bde-faq__item\">\n      <h4 class=\"bde-faq__title-tag\">\n       <button id=\"bde-faq-123-button-2\" aria-expanded=\"false\" aria-controls=\"bde-faq-123-2\" class=\"bde-faq__question js-faq-item\">\n          <span class=\"bde-faq__title\">Paljonko reservimarkkina tuottaa vuonna 2026?<\/span>\n                           <div aria-hidden=\"true\" class=\"bde-faq__icon bde-faq__icon--inactive\">\n                                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" version=\"1.1\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\">\r\n<title>Chevron-Down<\/title>\r\n<path d=\"M16.609 22.389c-0.37 0.37-0.97 0.37-1.34 0l-9.659-9.659c-0.37-0.37-0.37-0.97 0-1.34l0.447-0.447c0.37-0.37 0.97-0.37 1.34 0l8.542 8.542 8.542-8.542c0.37-0.37 0.97-0.37 1.34 0l0.447 0.447c0.37 0.37 0.37 0.97 0 1.34l-9.659 9.659z\"\/>\r\n<\/svg>\n                            <\/div>\n         \t  <div aria-hidden=\"true\" class=\"bde-faq__icon bde-faq__icon--active\">\n                                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" version=\"1.1\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\">\r\n<title>Chevron-Up<\/title>\r\n<path d=\"M15.391 9.611c0.37-0.37 0.97-0.37 1.34 0l9.659 9.659c0.37 0.37 0.37 0.97 0 1.34l-0.447 0.447c-0.37 0.37-0.97 0.37-1.34 0l-8.542-8.542-8.542 8.542c-0.37 0.37-0.97 0.37-1.34 0l-0.447-0.447c-0.37-0.37-0.37-0.97 0-1.34l9.659-9.659z\"\/>\r\n<\/svg>\n                            <\/div>\n                  <\/button>\n      <\/h4>\n      <div role=\"region\" aria-labelledby=\"bde-faq-123-button-2\" id=\"bde-faq-123-2\" class=\"bde-faq__answer\">\n        <div class=\"bde-faq__answer-content\">\n            <div class=\"breakdance-rich-text-styles\">Tarkkaa lukua ei voi luvata, ja kannattaa suhtautua varauksella kaikkiin, jotka lupaavat. Fingrid hankki FCR-D yl\u00f6s -reservi\u00e4 vuodelle 2026 vuosimarkkinalta hintaan 3,50 \u20ac\/MW tunnissa. FCR-N:\u00e4\u00e4 Fingrid ei hankkinut vuosimarkkinalta vuodelle 2026 lainkaan, joten sen tulo tulee tuntimarkkinalta ja vaihtelee.<br><br>Hyv\u00e4ksytty akkukapasiteetti FCR-D-markkinalla kasvoi hein\u00e4\u2013marraskuussa 2025 noin 340 MW:sta 520 MW:iin, ja hinnat laskivat jyrk\u00e4sti. Enionin mukaan 10 kW:n kotiakku tienasi tammi\u2013lokakuussa 2025 keskim\u00e4\u00e4rin 135 \u20ac kuukaudessa, mutta joulukuussa en\u00e4\u00e4 28 \u20ac. Laskuri n\u00e4ytt\u00e4\u00e4 reservitulon kolmella hintatasolla. Pyyd\u00e4 aggregaattorilta viimeisen 12 kuukauden toteutunut tulo ennen p\u00e4\u00e4t\u00f6st\u00e4.<\/div>\n\n                                  \n    \n    \n    \n    \n            \n                    \n            \n            \n\n    \n    \n    \n    \n    \n    <a class=\"breakdance-link button-atom button-atom--primary bde-faq__btn\" href=\"https:\/\/renewe.fi\/ota-yhteytta\/\" target=\"_self\" data-type=\"url\"  >\n\n    \n        <span class=\"button-atom__text\">Kysy lis\u00e4\u00e4<\/span>\n\n        \n        \n                <\/a>\n\n    \n\n                    <\/div>\n      <\/div>\n    <\/div>\n      <div class=\"bde-faq__item\">\n      <h4 class=\"bde-faq__title-tag\">\n       <button id=\"bde-faq-123-button-3\" aria-expanded=\"false\" aria-controls=\"bde-faq-123-3\" class=\"bde-faq__question js-faq-item\">\n          <span class=\"bde-faq__title\">Mik\u00e4 on aggregaattori?<\/span>\n                           <div aria-hidden=\"true\" class=\"bde-faq__icon bde-faq__icon--inactive\">\n                                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" version=\"1.1\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\">\r\n<title>Chevron-Down<\/title>\r\n<path d=\"M16.609 22.389c-0.37 0.37-0.97 0.37-1.34 0l-9.659-9.659c-0.37-0.37-0.37-0.97 0-1.34l0.447-0.447c0.37-0.37 0.97-0.37 1.34 0l8.542 8.542 8.542-8.542c0.37-0.37 0.97-0.37 1.34 0l0.447 0.447c0.37 0.37 0.37 0.97 0 1.34l-9.659 9.659z\"\/>\r\n<\/svg>\n                            <\/div>\n         \t  <div aria-hidden=\"true\" class=\"bde-faq__icon bde-faq__icon--active\">\n                                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" version=\"1.1\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\">\r\n<title>Chevron-Up<\/title>\r\n<path d=\"M15.391 9.611c0.37-0.37 0.97-0.37 1.34 0l9.659 9.659c0.37 0.37 0.37 0.97 0 1.34l-0.447 0.447c-0.37 0.37-0.97 0.37-1.34 0l-8.542-8.542-8.542 8.542c-0.37 0.37-0.97 0.37-1.34 0l-0.447-0.447c-0.37-0.37-0.37-0.97 0-1.34l9.659-9.659z\"\/>\r\n<\/svg>\n                            <\/div>\n                  <\/button>\n      <\/h4>\n      <div role=\"region\" aria-labelledby=\"bde-faq-123-button-3\" id=\"bde-faq-123-3\" class=\"bde-faq__answer\">\n        <div class=\"bde-faq__answer-content\">\n            <div class=\"breakdance-rich-text-styles\">Aggregaattori kokoaa monta pient\u00e4 akkua yhdeksi tarjoukseksi reservimarkkinalle. Yksitt\u00e4inen kotiakku on liian pieni tarjoamaan itse, koska minimitarjous on FCR-N:ss\u00e4 0,1 MW ja FCR-D:ss\u00e4 1 MW. Aggregaattori hoitaa tarjoukset, ohjauksen ja yleens\u00e4 my\u00f6s esikvalifioinnin. Palkkioksi se ottaa osuuden tulosta, tyypillisesti 20\u201330 %. Vertaa sopimuksissa osuutta, sopimuksen kestoa ja sit\u00e4, kuka vastaa akun kulumisesta.<\/div>\n\n                                  \n    \n    \n    \n    \n            \n                    \n            \n            \n\n    \n    \n    \n    \n    \n    <a class=\"breakdance-link button-atom button-atom--primary bde-faq__btn\" href=\"https:\/\/renewe.fi\/ota-yhteytta\/\" target=\"_self\" data-type=\"url\"  >\n\n    \n        <span class=\"button-atom__text\">Kysy lis\u00e4\u00e4<\/span>\n\n        \n        \n                <\/a>\n\n    \n\n                    <\/div>\n      <\/div>\n    <\/div>\n      <div class=\"bde-faq__item\">\n      <h4 class=\"bde-faq__title-tag\">\n       <button id=\"bde-faq-123-button-4\" aria-expanded=\"false\" aria-controls=\"bde-faq-123-4\" class=\"bde-faq__question js-faq-item\">\n          <span class=\"bde-faq__title\">Tarvitaanko Verohallinnon lupa?<\/span>\n                           <div aria-hidden=\"true\" class=\"bde-faq__icon bde-faq__icon--inactive\">\n                                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" version=\"1.1\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\">\r\n<title>Chevron-Down<\/title>\r\n<path d=\"M16.609 22.389c-0.37 0.37-0.97 0.37-1.34 0l-9.659-9.659c-0.37-0.37-0.37-0.97 0-1.34l0.447-0.447c0.37-0.37 0.97-0.37 1.34 0l8.542 8.542 8.542-8.542c0.37-0.37 0.97-0.37 1.34 0l0.447 0.447c0.37 0.37 0.37 0.97 0 1.34l-9.659 9.659z\"\/>\r\n<\/svg>\n                            <\/div>\n         \t  <div aria-hidden=\"true\" class=\"bde-faq__icon bde-faq__icon--active\">\n                                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" version=\"1.1\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\">\r\n<title>Chevron-Up<\/title>\r\n<path d=\"M15.391 9.611c0.37-0.37 0.97-0.37 1.34 0l9.659 9.659c0.37 0.37 0.37 0.97 0 1.34l-0.447 0.447c-0.37 0.37-0.97 0.37-1.34 0l-8.542-8.542-8.542 8.542c-0.37 0.37-0.97 0.37-1.34 0l-0.447-0.447c-0.37-0.37-0.37-0.97 0-1.34l9.659-9.659z\"\/>\r\n<\/svg>\n                            <\/div>\n                  <\/button>\n      <\/h4>\n      <div role=\"region\" aria-labelledby=\"bde-faq-123-button-4\" id=\"bde-faq-123-4\" class=\"bde-faq__answer\">\n        <div class=\"bde-faq__answer-content\">\n            <div class=\"breakdance-rich-text-styles\">Se riippuu siit\u00e4, minne akku purkaa s\u00e4hk\u00f6\u00e4. Jos akku purkaa vain omaan kulutukseesi, s\u00e4hk\u00f6vero on maksettu jo kerran verkosta ostetusta s\u00e4hk\u00f6st\u00e4, eik\u00e4 toista veroa synny. Jos akku sy\u00f6tt\u00e4\u00e4 s\u00e4hk\u00f6\u00e4 verkkoon, esimerkiksi reservin aktivoituessa, samasta energiasta voi ilman lupaa joutua maksamaan veron kahteen kertaan. S\u00e4hk\u00f6vero on 1.4.2026 alkaen veroluokassa I 2,325 snt\/kWh ilman arvonlis\u00e4veroa. K\u00e4yt\u00e4nn\u00f6n rajaukset kannattaa varmistaa Verohallinnolta ennen hankintaa.<\/div>\n\n                                  \n    \n    \n    \n    \n            \n                    \n            \n            \n\n    \n    \n    \n    \n    \n    <a class=\"breakdance-link button-atom button-atom--primary bde-faq__btn\" href=\"https:\/\/renewe.fi\/ota-yhteytta\/\" target=\"_self\" data-type=\"url\"  >\n\n    \n        <span class=\"button-atom__text\">Kysy lis\u00e4\u00e4<\/span>\n\n        \n        \n                <\/a>\n\n    \n\n                    <\/div>\n      <\/div>\n    <\/div>\n      <div class=\"bde-faq__item\">\n      <h4 class=\"bde-faq__title-tag\">\n       <button id=\"bde-faq-123-button-5\" aria-expanded=\"false\" aria-controls=\"bde-faq-123-5\" class=\"bde-faq__question js-faq-item\">\n          <span class=\"bde-faq__title\">Kuinka kauan akku kest\u00e4\u00e4?<\/span>\n                           <div aria-hidden=\"true\" class=\"bde-faq__icon bde-faq__icon--inactive\">\n                                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" version=\"1.1\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\">\r\n<title>Chevron-Down<\/title>\r\n<path d=\"M16.609 22.389c-0.37 0.37-0.97 0.37-1.34 0l-9.659-9.659c-0.37-0.37-0.37-0.97 0-1.34l0.447-0.447c0.37-0.37 0.97-0.37 1.34 0l8.542 8.542 8.542-8.542c0.37-0.37 0.97-0.37 1.34 0l0.447 0.447c0.37 0.37 0.37 0.97 0 1.34l-9.659 9.659z\"\/>\r\n<\/svg>\n                            <\/div>\n         \t  <div aria-hidden=\"true\" class=\"bde-faq__icon bde-faq__icon--active\">\n                                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" version=\"1.1\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\">\r\n<title>Chevron-Up<\/title>\r\n<path d=\"M15.391 9.611c0.37-0.37 0.97-0.37 1.34 0l9.659 9.659c0.37 0.37 0.37 0.97 0 1.34l-0.447 0.447c-0.37 0.37-0.97 0.37-1.34 0l-8.542-8.542-8.542 8.542c-0.37 0.37-0.97 0.37-1.34 0l-0.447-0.447c-0.37-0.37-0.37-0.97 0-1.34l9.659-9.659z\"\/>\r\n<\/svg>\n                            <\/div>\n                  <\/button>\n      <\/h4>\n      <div role=\"region\" aria-labelledby=\"bde-faq-123-button-5\" id=\"bde-faq-123-5\" class=\"bde-faq__answer\">\n        <div class=\"bde-faq__answer-content\">\n            <div class=\"breakdance-rich-text-styles\">Tavallisen litiumrautafosfaattiakun (LFP) takuu on usein noin 6 000 sykli\u00e4 tai tietty m\u00e4\u00e4r\u00e4 vuosia, kumpi t\u00e4yttyy ensin. Takuuehdot vaihtelevat valmistajittain, joten tarkista ne tarjouksesta. Laskuri olettaa kalenteri-i\u00e4ksi 15 vuotta ja laskee, riitt\u00e4v\u00e4tk\u00f6 syklit siihen asti. Jos akkua ajetaan kovaa, esimerkiksi useampi t\u00e4ysi sykli p\u00e4iv\u00e4ss\u00e4, takuusyklit voivat loppua ennen kalenteri-ik\u00e4\u00e4.<\/div>\n\n                                  \n    \n    \n    \n    \n            \n                    \n            \n            \n\n    \n    \n    \n    \n    \n    <a class=\"breakdance-link button-atom button-atom--primary bde-faq__btn\" href=\"https:\/\/renewe.fi\/ota-yhteytta\/\" target=\"_self\" data-type=\"url\"  >\n\n    \n        <span class=\"button-atom__text\">Kysy lis\u00e4\u00e4<\/span>\n\n        \n        \n                <\/a>\n\n    \n\n                    <\/div>\n      <\/div>\n    <\/div>\n      <div class=\"bde-faq__item\">\n      <h4 class=\"bde-faq__title-tag\">\n       <button id=\"bde-faq-123-button-6\" aria-expanded=\"false\" aria-controls=\"bde-faq-123-6\" class=\"bde-faq__question js-faq-item\">\n          <span class=\"bde-faq__title\">Sopiiko akku taloyhti\u00f6\u00f6n?<\/span>\n                           <div aria-hidden=\"true\" class=\"bde-faq__icon bde-faq__icon--inactive\">\n                                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" version=\"1.1\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\">\r\n<title>Chevron-Down<\/title>\r\n<path d=\"M16.609 22.389c-0.37 0.37-0.97 0.37-1.34 0l-9.659-9.659c-0.37-0.37-0.37-0.97 0-1.34l0.447-0.447c0.37-0.37 0.97-0.37 1.34 0l8.542 8.542 8.542-8.542c0.37-0.37 0.97-0.37 1.34 0l0.447 0.447c0.37 0.37 0.37 0.97 0 1.34l-9.659 9.659z\"\/>\r\n<\/svg>\n                            <\/div>\n         \t  <div aria-hidden=\"true\" class=\"bde-faq__icon bde-faq__icon--active\">\n                                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" version=\"1.1\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\">\r\n<title>Chevron-Up<\/title>\r\n<path d=\"M15.391 9.611c0.37-0.37 0.97-0.37 1.34 0l9.659 9.659c0.37 0.37 0.37 0.97 0 1.34l-0.447 0.447c-0.37 0.37-0.97 0.37-1.34 0l-8.542-8.542-8.542 8.542c-0.37 0.37-0.97 0.37-1.34 0l-0.447-0.447c-0.37-0.37-0.37-0.97 0-1.34l9.659-9.659z\"\/>\r\n<\/svg>\n                            <\/div>\n                  <\/button>\n      <\/h4>\n      <div role=\"region\" aria-labelledby=\"bde-faq-123-button-6\" id=\"bde-faq-123-6\" class=\"bde-faq__answer\">\n        <div class=\"bde-faq__answer-content\">\n            <div class=\"breakdance-rich-text-styles\">Usein sopii, jos taloyhti\u00f6ll\u00e4 on tehoon perustuva s\u00e4hk\u00f6nsiirtomaksu tai aurinkovoimala. Tehomaksun leikkaus on taloyhti\u00f6n varmin hy\u00f6ty. P\u00e4\u00e4t\u00f6ksess\u00e4 kannattaa huomioida muutama asia etuk\u00e4teen. Akun sijoitus ja paloturvallisuus pit\u00e4\u00e4 suunnitella, ja isommissa j\u00e4rjestelmiss\u00e4 kannattaa kuulla pelastuslaitosta. Reservitulo on yhti\u00f6n tuloa, joten sen verotus ja vaikutus vastikkeisiin selvitet\u00e4\u00e4n. Hankinta vaatii hallituksen tai yhti\u00f6kokouksen p\u00e4\u00e4t\u00f6ksen.<\/div>\n\n                                  \n    \n    \n    \n    \n            \n                    \n            \n            \n\n    \n    \n    \n    \n    \n    <a class=\"breakdance-link button-atom button-atom--primary bde-faq__btn\" href=\"https:\/\/renewe.fi\/ota-yhteytta\/\" target=\"_self\" data-type=\"url\"  >\n\n    \n        <span class=\"button-atom__text\">Kysy lis\u00e4\u00e4<\/span>\n\n        \n        \n                <\/a>\n\n    \n\n                    <\/div>\n      <\/div>\n    <\/div>\n  \n<\/div><\/div>\n<\/section>","protected":false},"excerpt":{"rendered":"<p>Etusivu Aurinkos\u00e4hk\u00f6n akku- ja omavaraisuuslaskuri Paljonko akku s\u00e4\u00e4st\u00e4\u00e4 \u2013 ja mist\u00e4 s\u00e4\u00e4st\u00f6 syntyy? Akku maksaa itsens\u00e4 takaisin vain, jos sill\u00e4 on tekemist\u00e4. Laskuri n\u00e4ytt\u00e4\u00e4, paljonko akku nostaa aurinkos\u00e4hk\u00f6n omaa k\u00e4ytt\u00f6\u00e4, mit\u00e4 p\u00f6rssis\u00e4hk\u00f6n ajoitus ja tehomaksun leikkaus s\u00e4\u00e4st\u00e4v\u00e4t ja mit\u00e4 reservimarkkina voisi tuoda. Jokainen kilowatti lasketaan vain kerran. Aurinkos\u00e4hk\u00f6n akku- ja s\u00e4hk\u00f6varastolaskuri Valitse kohde. Omakotitalossa [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_breakdance_hide_in_design_set":false,"_breakdance_tags":"","footnotes":""},"class_list":["post-6708","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/renewe.fi\/en\/wp-json\/wp\/v2\/pages\/6708","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/renewe.fi\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/renewe.fi\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/renewe.fi\/en\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/renewe.fi\/en\/wp-json\/wp\/v2\/comments?post=6708"}],"version-history":[{"count":8,"href":"https:\/\/renewe.fi\/en\/wp-json\/wp\/v2\/pages\/6708\/revisions"}],"predecessor-version":[{"id":6808,"href":"https:\/\/renewe.fi\/en\/wp-json\/wp\/v2\/pages\/6708\/revisions\/6808"}],"wp:attachment":[{"href":"https:\/\/renewe.fi\/en\/wp-json\/wp\/v2\/media?parent=6708"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}