{"id":10263,"date":"2026-08-15T00:53:14","date_gmt":"2026-08-14T22:53:14","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/werkzeuge\/pv-surplus-battery-charging-calculator\/"},"modified":"2026-08-15T00:53:14","modified_gmt":"2026-08-14T22:53:14","slug":"pv-surplus-battery-charging-calculator","status":"publish","type":"page","link":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/pv-surplus-battery-charging-calculator\/","title":{"rendered":"Rechner f\u00fcr PV-\u00dcberschuss und Batterieladung"},"content":{"rendered":"<div class=\"gtm-analyser-container\" style=\"background: var(--bg-panel, #1e1e24); padding: 25px; border-radius: 8px; border: 1px solid var(--border, #2a2a35);\">\n<p style=\"color: var(--text-secondary, #a0a0b0); margin-bottom: 20px;\">\u00dcberschussladen scheitert an den Kleinigkeiten: der Speicher nimmt die Leistung zuerst, der Verbraucher verfehlt seine Mindestleistung knapp, und das Relais f\u00e4ngt an zu takten. Dieser Rechner teilt den \u00dcberschuss so auf, wie es die Automatik t\u00e4te, und liefert brauchbare Schwellen.<\/p>\n<div style=\"display: flex; gap: 12px; flex-wrap: wrap;\">\n<div style=\"flex: 1; min-width: 160px;\">\n            <label for=\"pv-erzeugung\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">PV-Leistung jetzt (W)<\/label><br \/>\n            <input type=\"text\" id=\"pv-erzeugung\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; font-family: monospace; box-sizing: border-box;\" value=\"5200\">\n        <\/div>\n<div style=\"flex: 1; min-width: 160px;\">\n            <label for=\"pv-grundlast\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Grundlast des Hauses (W)<\/label><br \/>\n            <input type=\"text\" id=\"pv-grundlast\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; font-family: monospace; box-sizing: border-box;\" value=\"600\">\n        <\/div>\n<div style=\"flex: 1; min-width: 160px;\">\n            <label for=\"pv-kapazitaet\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Speichergr\u00f6\u00dfe (kWh)<\/label><br \/>\n            <input type=\"text\" id=\"pv-kapazitaet\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; font-family: monospace; box-sizing: border-box;\" value=\"10\">\n        <\/div>\n<div style=\"flex: 1; min-width: 160px;\">\n            <label for=\"pv-ladestand\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Ladestand (%)<\/label><br \/>\n            <input type=\"text\" id=\"pv-ladestand\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; font-family: monospace; box-sizing: border-box;\" value=\"45\">\n        <\/div>\n<\/p><\/div>\n<div style=\"display: flex; gap: 12px; flex-wrap: wrap; margin-top: 12px;\">\n<div style=\"flex: 1; min-width: 160px;\">\n            <label for=\"pv-ladeleistung\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Maximale Ladeleistung (W)<\/label><br \/>\n            <input type=\"text\" id=\"pv-ladeleistung\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; font-family: monospace; box-sizing: border-box;\" value=\"3000\">\n        <\/div>\n<div style=\"flex: 1; min-width: 160px;\">\n            <label for=\"pv-wirkungsgrad\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Wirkungsgrad beim Laden (%)<\/label><br \/>\n            <input type=\"text\" id=\"pv-wirkungsgrad\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; font-family: monospace; box-sizing: border-box;\" value=\"92\">\n        <\/div>\n<div style=\"flex: 1; min-width: 160px;\">\n            <label for=\"pv-verbraucher\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Mindestleistung des schaltbaren Verbrauchers (W)<\/label><br \/>\n            <input type=\"text\" id=\"pv-verbraucher\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; font-family: monospace; box-sizing: border-box;\" value=\"1380\">\n        <\/div>\n<div style=\"flex: 1; min-width: 160px;\">\n            <label for=\"pv-vorrang\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Vorrang<\/label><br \/>\n            <select id=\"pv-vorrang\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; font-family: monospace; box-sizing: border-box;\"><option value=\"speicher\">Speicher zuerst<\/option><option value=\"verbraucher\">Verbraucher zuerst<\/option><\/select>\n        <\/div>\n<\/p><\/div>\n<div style=\"display: flex; gap: 12px; flex-wrap: wrap; margin-top: 12px;\">\n<div style=\"flex: 1; min-width: 160px;\">\n            <label for=\"pv-strompreis\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Strompreis (Cent je kWh)<\/label><br \/>\n            <input type=\"text\" id=\"pv-strompreis\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; font-family: monospace; box-sizing: border-box;\" value=\"32\">\n        <\/div>\n<div style=\"flex: 1; min-width: 160px;\">\n            <label for=\"pv-verguetung\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Einspeiseverg\u00fctung (Cent je kWh)<\/label><br \/>\n            <input type=\"text\" id=\"pv-verguetung\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; font-family: monospace; box-sizing: border-box;\" value=\"8\">\n        <\/div>\n<\/p><\/div>\n<div style=\"display: flex; gap: 10px; flex-wrap: wrap; margin: 18px 0 0;\">\n        <button id=\"pv-btn\" class=\"button\" style=\"background: var(--accent, #7ee787); color: #0b1114; border: none; padding: 12px 24px; border-radius: 6px; font-weight: 700; cursor: pointer;\">Durchrechnen<\/button>\n    <\/div>\n<div id=\"pv-ergebnis\" style=\"margin-top: 22px;\"><\/div>\n<\/div>\n<p><script>\n(function () {\n    'use strict';<\/p>\n<p>    const T = {\"einleitung\":\"\u00dcberschussladen scheitert an den Kleinigkeiten: der Speicher nimmt die Leistung zuerst, der Verbraucher verfehlt seine Mindestleistung knapp, und das Relais f\u00e4ngt an zu takten. Dieser Rechner teilt den \u00dcberschuss so auf, wie es die Automatik t\u00e4te, und liefert brauchbare Schwellen.\",\"label_erzeugung\":\"PV-Leistung jetzt (W)\",\"label_grundlast\":\"Grundlast des Hauses (W)\",\"label_kapazitaet\":\"Speichergr\u00f6\u00dfe (kWh)\",\"label_ladestand\":\"Ladestand (%)\",\"label_ladeleistung\":\"Maximale Ladeleistung (W)\",\"label_wirkungsgrad\":\"Wirkungsgrad beim Laden (%)\",\"label_verbraucher\":\"Mindestleistung des schaltbaren Verbrauchers (W)\",\"label_vorrang\":\"Vorrang\",\"vorrang_speicher\":\"Speicher zuerst\",\"vorrang_verbraucher\":\"Verbraucher zuerst\",\"label_strompreis\":\"Strompreis (Cent je kWh)\",\"label_verguetung\":\"Einspeiseverg\u00fctung (Cent je kWh)\",\"knopf\":\"Durchrechnen\",\"fehler_erzeugung\":\"Die PV-Leistung muss eine Zahl ab 0 sein.\",\"fehler_grundlast\":\"Die Grundlast muss eine Zahl ab 0 sein.\",\"fehler_kapazitaet\":\"Die Speichergr\u00f6\u00dfe muss eine Zahl ab 0 sein.\",\"fehler_ladestand\":\"Der Ladestand muss zwischen 0 und 100 liegen.\",\"fehler_ladeleistung\":\"Die Ladeleistung muss eine Zahl ab 0 sein.\",\"fehler_wirkungsgrad\":\"Der Wirkungsgrad muss zwischen 0 und 100 liegen.\",\"fehler_verbraucher\":\"Die Mindestleistung muss eine Zahl ab 0 sein.\",\"fehler_preis\":\"Preis und Verg\u00fctung m\u00fcssen Zahlen ab 0 sein.\",\"h_verteilung\":\"Wohin die Leistung geht\",\"h_schwellen\":\"Schwellen f\u00fcr die Automatik\",\"h_befunde\":\"Befunde\",\"z_ueberschuss\":\"\u00dcberschuss nach der Grundlast\",\"z_speicher\":\"In den Speicher\",\"z_speicher_netto\":\"Davon wirklich gespeichert\",\"z_verbraucher\":\"An den schaltbaren Verbraucher\",\"z_einspeisung\":\"Ins Netz eingespeist\",\"z_netzbezug\":\"Aus dem Netz bezogen\",\"z_fehlend\":\"Bis zum vollen Speicher fehlen\",\"z_dauer\":\"Dauer bis voll bei dieser Leistung\",\"z_ein\":\"Einschalten oberhalb von\",\"z_aus\":\"Ausschalten unterhalb von\",\"schwellen_erklaerung\":\"Die Schwellen enthalten die Grundlast und halten nach oben wie nach unten zehn Prozent Luft. Eine Verz\u00f6gerung von drei bis f\u00fcnf Minuten an beiden Flanken sorgt daf\u00fcr, dass eine vorbeiziehende Wolke den Verbraucher nicht schaltet.\",\"b_kein_ueberschuss\":\"Es gibt keinen \u00dcberschuss, das Haus bezieht %s W aus dem Netz. Aus der Sonne l\u00e4sst sich gerade nichts laden.\",\"b_verbraucher_reicht_nicht\":\"Der Verbraucher braucht %s W, \u00fcbrig sind nur %r W, er bleibt also aus. Alles andere hie\u00dfe, die Differenz aus dem Netz zu ziehen.\",\"b_speicher_zuerst\":\"Der Speicher nimmt die Leistung zuerst und der Verbraucher wartet, obwohl der \u00dcberschuss f\u00fcr ihn reichen w\u00fcrde. Vorrang f\u00fcr den Verbraucher f\u00fcllt den Speicher sp\u00e4ter, verbraucht aber sofort.\",\"b_speicher_voll\":\"Der Speicher ist voll, der gesamte \u00dcberschuss steht f\u00fcr Verbraucher bereit oder geht ins Netz.\",\"b_teillast\":\"In den Speicher flie\u00dfen nur %s W von m\u00f6glichen %m W, weil der \u00dcberschuss nicht mehr hergibt.\",\"b_takten\":\"\u00dcberschuss und Verbraucherleistung liegen fast gleichauf. Ohne Verz\u00f6gerung und breite Hysterese wird das Relais takten.\",\"b_einspeisen_lohnt\":\"Die Einspeiseverg\u00fctung liegt mindestens so hoch wie der Strompreis. Unter dieser Bedingung lohnt Einspeisen mehr als Eigenverbrauch.\",\"b_ersparnis\":\"Jede selbst verbrauchte Kilowattstunde ist %s Cent wert.\",\"b_wirkungsgrad\":\"Die Ladeverluste fressen %s W, das ist W\u00e4rme und kein Speicher.\"};<\/p>\n<p>    \/\/ --- reine Rechenlogik ---<\/p>\n<p>    function zahl(wert) {\n        const roh = String(wert === undefined || wert === null ? '' : wert).trim().replace(',', '.');\n        if (roh === '') { return NaN; }\n        if (!\/^-?[0-9]+(\\.[0-9]+)?$\/.test(roh)) { return NaN; }\n        return parseFloat(roh);\n    }<\/p>\n<p>    function runde(wert, stellen) {\n        const faktor = Math.pow(10, stellen === undefined ? 0 : stellen);\n        return Math.round(wert * faktor) \/ faktor;\n    }<\/p>\n<p>    function rechnen(e) {\n        const ergebnis = { ok: false, fehler: '', befunde: [] };\n        const eingabe = e || {};<\/p>\n<p>        const erzeugung = zahl(eingabe.erzeugung);\n        const grundlast = zahl(eingabe.grundlast);\n        const kapazitaet = zahl(eingabe.kapazitaet);\n        const ladestand = zahl(eingabe.ladestand);\n        const ladeleistung = zahl(eingabe.ladeleistung);\n        const wirkungsgrad = zahl(eingabe.wirkungsgrad);\n        const verbraucher = zahl(eingabe.verbraucher);\n        const strompreis = zahl(eingabe.strompreis);\n        const verguetung = zahl(eingabe.verguetung);<\/p>\n<p>        if (!isFinite(erzeugung) || erzeugung < 0) { ergebnis.fehler = T.fehler_erzeugung; return ergebnis; }\n        if (!isFinite(grundlast) || grundlast < 0) { ergebnis.fehler = T.fehler_grundlast; return ergebnis; }\n        if (!isFinite(kapazitaet) || kapazitaet < 0) { ergebnis.fehler = T.fehler_kapazitaet; return ergebnis; }\n        if (!isFinite(ladestand) || ladestand < 0 || ladestand > 100) { ergebnis.fehler = T.fehler_ladestand; return ergebnis; }\n        if (!isFinite(ladeleistung) || ladeleistung < 0) { ergebnis.fehler = T.fehler_ladeleistung; return ergebnis; }\n        if (!isFinite(wirkungsgrad) || wirkungsgrad <= 0 || wirkungsgrad > 100) { ergebnis.fehler = T.fehler_wirkungsgrad; return ergebnis; }\n        if (!isFinite(verbraucher) || verbraucher < 0) { ergebnis.fehler = T.fehler_verbraucher; return ergebnis; }\n        if (!isFinite(strompreis) || strompreis < 0) { ergebnis.fehler = T.fehler_preis; return ergebnis; }\n        if (!isFinite(verguetung) || verguetung < 0) { ergebnis.fehler = T.fehler_preis; return ergebnis; }\n\n        const ueberschuss = erzeugung - grundlast;\n        const fehlend = kapazitaet * (100 - ladestand) \/ 100;   \/\/ kWh, die noch hineinpassen\n        const vorrang = eingabe.vorrang === 'verbraucher' ? 'verbraucher' : 'speicher';\n\n        let anSpeicher = 0;\n        let anVerbraucher = 0;\n        let rest = Math.max(0, ueberschuss);\n\n        if (vorrang === 'speicher') {\n            anSpeicher = fehlend > 0 ? Math.min(rest, ladeleistung) : 0;\n            rest -= anSpeicher;\n            anVerbraucher = rest >= verbraucher ? verbraucher : 0;\n            rest -= anVerbraucher;\n        } else {\n            anVerbraucher = rest >= verbraucher ? verbraucher : 0;\n            rest -= anVerbraucher;\n            anSpeicher = fehlend > 0 ? Math.min(rest, ladeleistung) : 0;\n            rest -= anSpeicher;\n        }<\/p>\n<p>        \/\/ Der Wirkungsgrad frisst einen Teil dessen, was in den Speicher geht.\n        const imSpeicher = anSpeicher * (wirkungsgrad \/ 100);\n        const stunden = imSpeicher > 0 ? (fehlend * 1000) \/ imSpeicher : 0;<\/p>\n<p>        \/\/ Schwellen fuer die Schaltung, mit Abstand nach oben und unten.\n        const einschalten = Math.ceil((verbraucher * 1.1 + grundlast) \/ 50) * 50;\n        const ausschalten = Math.floor((verbraucher * 0.9 + grundlast) \/ 50) * 50;<\/p>\n<p>        ergebnis.ok = true;\n        ergebnis.ueberschuss = runde(ueberschuss);\n        ergebnis.anSpeicher = runde(anSpeicher);\n        ergebnis.imSpeicher = runde(imSpeicher);\n        ergebnis.anVerbraucher = runde(anVerbraucher);\n        ergebnis.einspeisung = runde(Math.max(0, rest));\n        ergebnis.netzbezug = runde(Math.max(0, -ueberschuss));\n        ergebnis.fehlend = runde(fehlend, 2);\n        ergebnis.stunden = runde(stunden, 2);\n        ergebnis.einschalten = einschalten;\n        ergebnis.ausschalten = ausschalten;\n        ergebnis.vorrang = vorrang;\n        ergebnis.ersparnis = runde(strompreis - verguetung, 2);\n        ergebnis.wertEigenverbrauch = runde((anVerbraucher \/ 1000) * (strompreis - verguetung), 2);<\/p>\n<p>        \/\/ --- Befunde ---\n        if (ueberschuss <= 0) {\n            ergebnis.befunde.push({ schwer: true, text: T.b_kein_ueberschuss.replace('%s', String(ergebnis.netzbezug)) });\n        }\n        if (ueberschuss > 0 && anVerbraucher === 0 && verbraucher > 0) {\n            ergebnis.befunde.push({ schwer: true, text: T.b_verbraucher_reicht_nicht.replace('%s', String(verbraucher)).replace('%r', String(runde(Math.max(0, ueberschuss - anSpeicher)))) });\n        }\n        if (vorrang === 'speicher' && anVerbraucher === 0 && ueberschuss >= verbraucher && fehlend > 0) {\n            ergebnis.befunde.push({ schwer: false, text: T.b_speicher_zuerst });\n        }\n        if (fehlend <= 0) {\n            ergebnis.befunde.push({ schwer: false, text: T.b_speicher_voll });\n        }\n        if (anSpeicher > 0 && anSpeicher < ladeleistung &#038;&#038; fehlend > 0) {\n            ergebnis.befunde.push({ schwer: false, text: T.b_teillast.replace('%s', String(ergebnis.anSpeicher)).replace('%m', String(ladeleistung)) });\n        }\n        if (ueberschuss > 0 && Math.abs(ueberschuss - verbraucher) < verbraucher * 0.15) {\n            ergebnis.befunde.push({ schwer: true, text: T.b_takten });\n        }\n        if (ergebnis.ersparnis <= 0) {\n            ergebnis.befunde.push({ schwer: true, text: T.b_einspeisen_lohnt });\n        } else {\n            ergebnis.befunde.push({ schwer: false, text: T.b_ersparnis.replace('%s', String(ergebnis.ersparnis)) });\n        }\n        if (wirkungsgrad < 100) {\n            ergebnis.befunde.push({ schwer: false, text: T.b_wirkungsgrad.replace('%s', String(runde(anSpeicher - imSpeicher))) });\n        }\n\n        return ergebnis;\n    }\n\n    if (typeof window !== 'undefined') {\n        window.LW_TEST = window.LW_TEST || {};\n        window.LW_TEST.PV = { rechnen: rechnen, zahl: zahl };\n    }\n\n    \/\/ --- Anbindung an das Dokument ---\n\n    const btn = document.getElementById('pv-btn');\n    const out = document.getElementById('pv-ergebnis');\n    if (!btn || !out) { return; }\n\n    const KASTEN = 'background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); border-radius: 6px; padding: 14px; margin-bottom: 18px;';\n    const UEBERSCHRIFT = 'color: var(--text-primary, #e8e8ee); font-weight: 700; margin-bottom: 8px;';\n\n    function el(tag, css, inhalt) {\n        const knoten = document.createElement(tag);\n        if (css) { knoten.setAttribute('style', css); }\n        if (inhalt !== undefined &#038;&#038; inhalt !== null) { knoten.textContent = inhalt; }\n        return knoten;\n    }\n\n    function wert(id) {\n        const knoten = document.getElementById(id);\n        return knoten ? knoten.value : '';\n    }\n\n    function zeile(kasten, name, inhalt, hervor) {\n        const z = el('div', 'display: flex; justify-content: space-between; gap: 14px; flex-wrap: wrap; padding: 5px 0;');\n        z.appendChild(el('span', 'color: var(--text-secondary, #a0a0b0);', name));\n        z.appendChild(el('span', 'color: ' + (hervor ? 'var(--accent, #7ee787)' : 'var(--text-primary, #e8e8ee)') + '; font-family: monospace;', inhalt));\n        kasten.appendChild(z);\n    }\n\n    btn.addEventListener('click', function () {\n        const erg = rechnen({\n            erzeugung: wert('pv-erzeugung'),\n            grundlast: wert('pv-grundlast'),\n            kapazitaet: wert('pv-kapazitaet'),\n            ladestand: wert('pv-ladestand'),\n            ladeleistung: wert('pv-ladeleistung'),\n            wirkungsgrad: wert('pv-wirkungsgrad'),\n            verbraucher: wert('pv-verbraucher'),\n            vorrang: wert('pv-vorrang'),\n            strompreis: wert('pv-strompreis'),\n            verguetung: wert('pv-verguetung')\n        });\n\n        out.textContent = '';\n        if (!erg.ok) {\n            out.appendChild(el('div', 'background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); border-left: 3px solid #ffb86c; color: var(--text-secondary, #a0a0b0); padding: 14px; border-radius: 6px;', erg.fehler));\n            return;\n        }\n\n        out.appendChild(el('div', UEBERSCHRIFT, T.h_verteilung));\n        const kasten = el('div', KASTEN);\n        zeile(kasten, T.z_ueberschuss, erg.ueberschuss + ' W', erg.ueberschuss > 0);\n        zeile(kasten, T.z_speicher, erg.anSpeicher + ' W');\n        zeile(kasten, T.z_speicher_netto, erg.imSpeicher + ' W');\n        zeile(kasten, T.z_verbraucher, erg.anVerbraucher + ' W', erg.anVerbraucher > 0);\n        zeile(kasten, T.z_einspeisung, erg.einspeisung + ' W');\n        if (erg.netzbezug > 0) { zeile(kasten, T.z_netzbezug, erg.netzbezug + ' W'); }\n        zeile(kasten, T.z_fehlend, erg.fehlend + ' kWh');\n        zeile(kasten, T.z_dauer, erg.stunden > 0 ? erg.stunden + ' h' : '-');\n        out.appendChild(kasten);<\/p>\n<p>        out.appendChild(el('div', UEBERSCHRIFT, T.h_schwellen));\n        const schwellen = el('div', KASTEN);\n        zeile(schwellen, T.z_ein, erg.einschalten + ' W', true);\n        zeile(schwellen, T.z_aus, erg.ausschalten + ' W');\n        schwellen.appendChild(el('div', 'color: var(--text-secondary, #a0a0b0); font-size: 0.85rem; line-height: 1.6; padding-top: 8px;', T.schwellen_erklaerung));\n        out.appendChild(schwellen);<\/p>\n<p>        out.appendChild(el('div', UEBERSCHRIFT, T.h_befunde));\n        const befunde = el('div', KASTEN);\n        erg.befunde.forEach(function (b) {\n            const z = el('div', 'display: flex; gap: 10px; padding: 5px 0;');\n            z.appendChild(el('span', 'color: ' + (b.schwer ? '#ffb86c' : 'var(--text-secondary, #a0a0b0)') + '; font-family: monospace;', b.schwer ? '!' : '-'));\n            z.appendChild(el('span', 'color: var(--text-secondary, #a0a0b0); font-size: 0.9rem; line-height: 1.5;', b.text));\n            befunde.appendChild(z);\n        });\n        out.appendChild(befunde);\n    });\n})();\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Teilt den aktuellen \u00dcberschuss zwischen Speicher und einem schaltbaren Verbraucher auf, rechnet die Dauer bis zum vollen Speicher aus und leitet die Schaltschwellen f\u00fcr eine \u00dcberschussautomatik ab.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":9283,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-tool-base.php","meta":{"footnotes":""},"tags":[92175,92184,92187],"class_list":["post-10263","page","type-page","status-publish","hentry","tag-energy-management-de","tag-photovoltaics-de","tag-smart-home-de-de"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Rechner f\u00fcr PV-\u00dcberschuss und Batterieladung - Lukas Wojcik - Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/pv-surplus-battery-charging-calculator\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Rechner f\u00fcr PV-\u00dcberschuss und Batterieladung - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Teilt den aktuellen \u00dcberschuss zwischen Speicher und einem schaltbaren Verbraucher auf, rechnet die Dauer bis zum vollen Speicher aus und leitet die Schaltschwellen f\u00fcr eine \u00dcberschussautomatik ab.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/pv-surplus-battery-charging-calculator\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/og-default.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/pv-surplus-battery-charging-calculator\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/pv-surplus-battery-charging-calculator\\\/\",\"name\":\"Rechner f\u00fcr PV-\u00dcberschuss und Batterieladung - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-08-14T22:53:14+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/pv-surplus-battery-charging-calculator\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/pv-surplus-battery-charging-calculator\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/pv-surplus-battery-charging-calculator\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Toolbox\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/toolbox-2\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Rechner f\u00fcr PV-\u00dcberschuss und Batterieladung\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"luky\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"luky\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Rechner f\u00fcr PV-\u00dcberschuss und Batterieladung - Lukas Wojcik - Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/pv-surplus-battery-charging-calculator\/","og_locale":"en_US","og_type":"article","og_title":"Rechner f\u00fcr PV-\u00dcberschuss und Batterieladung - Lukas Wojcik - Blog","og_description":"Teilt den aktuellen \u00dcberschuss zwischen Speicher und einem schaltbaren Verbraucher auf, rechnet die Dauer bis zum vollen Speicher aus und leitet die Schaltschwellen f\u00fcr eine \u00dcberschussautomatik ab.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/pv-surplus-battery-charging-calculator\/","og_site_name":"Lukas Wojcik - Blog","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/og-default.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/pv-surplus-battery-charging-calculator\/","url":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/pv-surplus-battery-charging-calculator\/","name":"Rechner f\u00fcr PV-\u00dcberschuss und Batterieladung - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"datePublished":"2026-08-14T22:53:14+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/pv-surplus-battery-charging-calculator\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/pv-surplus-battery-charging-calculator\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/pv-surplus-battery-charging-calculator\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Toolbox","item":"https:\/\/www.lukaswojcik.com\/blog\/toolbox-2\/"},{"@type":"ListItem","position":3,"name":"Rechner f\u00fcr PV-\u00dcberschuss und Batterieladung"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"luky","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"luky"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/10263","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=10263"}],"version-history":[{"count":0,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/10263\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/9283"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=10263"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=10263"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}