{"id":4540,"date":"2026-08-07T16:36:01","date_gmt":"2026-08-07T14:36:01","guid":{"rendered":"https:\/\/zuuvr.com\/?page_id=4540"},"modified":"2026-08-07T16:38:51","modified_gmt":"2026-08-07T14:38:51","slug":"plug-savings-calculator","status":"publish","type":"page","link":"https:\/\/zuuvr.com\/nl\/plug-savings-calculator\/","title":{"rendered":"PLUG savings calculator"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"4540\" class=\"elementor elementor-4540\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d961da5 e-flex e-con-boxed e-con e-parent\" data-id=\"d961da5\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a0b38a5 e-con-full e-flex e-con e-parent\" data-id=\"a0b38a5\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9bbfc48 elementor-widget elementor-widget-html\" data-id=\"9bbfc48\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div id=\"zuuvr-plug-calc\">\n<style>\n#zuuvr-plug-calc{\n    --navy:#0a1628; --navy2:#0d2138; --accent:#2e7df6; --acclt:#5ab0ff;\n    --text:#1a2533; --muted:#5b6c81; --line:#e2e8f0; --card:#ffffff;\n    --ink2:#42536a;\n  }\n#zuuvr-plug-calc *{box-sizing:border-box;}\n#zuuvr-plug-calc{\n    margin:0; font-family:'Helvetica Neue',Arial,sans-serif; color:var(--text);\n    background:radial-gradient(120% 90% at 80% 0%,#0d2138 0%,#0a1628 55%,#06101d 100%);\n    display:flex; align-items:center; justify-content:center; padding:56px 20px;\n    -webkit-font-smoothing:antialiased;\n  }\n#zuuvr-plug-calc .wrap{width:100%; max-width:1020px; background:var(--card); border-radius:18px; overflow:hidden;\n    display:grid; grid-template-columns:1.05fr 1fr; box-shadow:0 30px 80px rgba(0,0,0,.45);}\n#zuuvr-plug-calc \/* ===== LEFT: calculator ===== *\/\n  .calc{\n    background:linear-gradient(160deg,#0d2138 0%,#0a1628 60%,#06101d 100%);\n    color:#fff; padding:44px 40px; position:relative;\n  }\n#zuuvr-plug-calc .calc::after{content:\"\";position:absolute;left:0;bottom:0;width:100%;height:4px;\n    background:linear-gradient(90deg,var(--accent),var(--acclt));}\n#zuuvr-plug-calc .brand{font-weight:700; letter-spacing:6px; font-size:15px;}\n#zuuvr-plug-calc .eyebrow{color:var(--acclt); font-size:11px; letter-spacing:3px; text-transform:uppercase; margin:30px 0 10px;}\n#zuuvr-plug-calc .calc h1{font-size:26px; line-height:1.2; margin:0 0 8px; letter-spacing:-.3px;}\n#zuuvr-plug-calc .calc h1 span{color:var(--acclt);}\n#zuuvr-plug-calc .calc p.sub{color:#b9c6d6; font-size:13.5px; line-height:1.55; margin:0 0 24px; font-weight:300;}\n#zuuvr-plug-calc .field{margin:0 0 20px;}\n#zuuvr-plug-calc .fl{display:flex; justify-content:space-between; align-items:baseline; margin-bottom:8px;}\n#zuuvr-plug-calc .fl label{font-size:12px; font-weight:700; letter-spacing:.4px; text-transform:uppercase; color:#dce6f2;}\n#zuuvr-plug-calc .fl output{font-size:14px; font-weight:700; color:var(--acclt);}\n#zuuvr-plug-calc input[type=range]{width:100%; accent-color:var(--accent); height:26px; cursor:pointer;}\n#zuuvr-plug-calc .hint{font-size:11px; color:#7f91a8; margin-top:4px;}\n#zuuvr-plug-calc .seg{display:flex; gap:8px;}\n#zuuvr-plug-calc .seg button{\n    flex:1; padding:11px 8px; border-radius:10px; border:1.5px solid rgba(255,255,255,.18);\n    background:transparent; color:#dce6f2; font-size:13px; font-weight:600; cursor:pointer; font-family:inherit;\n    transition:all .15s;\n  }\n#zuuvr-plug-calc .seg button.on{background:var(--accent); border-color:var(--accent); color:#fff;}\n#zuuvr-plug-calc .price-in{display:flex; align-items:center; gap:8px;}\n#zuuvr-plug-calc .price-in input{\n    width:90px; padding:10px 12px; border-radius:10px; border:1.5px solid rgba(255,255,255,.18);\n    background:rgba(255,255,255,.06); color:#fff; font-size:14px; font-weight:600; font-family:inherit;\n  }\n#zuuvr-plug-calc .price-in input:focus{outline:none; border-color:var(--accent);}\n#zuuvr-plug-calc .price-in span{font-size:12px; color:#7f91a8;}\n#zuuvr-plug-calc .assump{font-size:10.5px; color:#66788f; line-height:1.5; margin-top:22px;}\n#zuuvr-plug-calc \/* ===== RIGHT: result + lead ===== *\/\n  .res{padding:40px 40px 36px; display:flex; flex-direction:column;}\n#zuuvr-plug-calc .res h2{font-size:14px; margin:0 0 14px; color:var(--muted); letter-spacing:1.5px; text-transform:uppercase; font-weight:700;}\n#zuuvr-plug-calc .tiles{display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:14px;}\n#zuuvr-plug-calc .tile{border:1.5px solid var(--line); border-radius:13px; padding:14px 16px;}\n#zuuvr-plug-calc .tile .v{font-size:23px; font-weight:800; color:var(--navy); letter-spacing:-.5px; white-space:nowrap;}\n#zuuvr-plug-calc .tile .l{font-size:11px; color:var(--muted); margin-top:3px; line-height:1.35;}\n#zuuvr-plug-calc .tile.save{border-color:rgba(46,125,246,.45); background:rgba(46,125,246,.06);}\n#zuuvr-plug-calc .tile.save .v{color:var(--accent);}\n#zuuvr-plug-calc .payback{\n    display:flex; align-items:center; gap:10px; background:var(--navy); color:#fff;\n    border-radius:13px; padding:13px 16px; margin-bottom:16px;\n  }\n#zuuvr-plug-calc .payback .big{font-size:18px; font-weight:800; color:var(--acclt); white-space:nowrap;}\n#zuuvr-plug-calc .payback .txt{font-size:12px; color:#b9c6d6; line-height:1.4;}\n#zuuvr-plug-calc \/* mini comparison \u2014 two direct-labeled bars,#zuuvr-plug-calc ink text,#zuuvr-plug-calc 4px rounded data-ends *\/\n  .bars{margin:2px 0 14px;}\n#zuuvr-plug-calc .brow{display:flex; align-items:center; gap:10px; margin:7px 0;}\n#zuuvr-plug-calc .brow .bl{width:86px; font-size:11px; color:var(--ink2); font-weight:600; text-align:right; flex:none;}\n#zuuvr-plug-calc .btrack{flex:1; height:18px; position:relative;}\n#zuuvr-plug-calc .bfill{height:18px; border-radius:0 4px 4px 0; min-width:6px; transition:width .35s;}\n#zuuvr-plug-calc .b-now .bfill{background:#c3cedd;}\n#zuuvr-plug-calc .b-plug .bfill{background:var(--accent);}\n#zuuvr-plug-calc .bval{font-size:11.5px; font-weight:700; color:var(--navy); margin-left:8px; white-space:nowrap;}\n#zuuvr-plug-calc .note{font-size:11px; color:#9aa7b8; line-height:1.45; margin-bottom:12px;}\n#zuuvr-plug-calc \/* methodology accordion *\/\n  details.how{border:1.5px solid var(--line); border-radius:12px; margin-bottom:18px; overflow:hidden;}\n#zuuvr-plug-calc details.how summary{\n    cursor:pointer; padding:11px 14px; font-size:12px; font-weight:700; color:var(--ink2);\n    letter-spacing:.3px; list-style:none; display:flex; align-items:center; gap:8px; user-select:none;\n  }\n#zuuvr-plug-calc details.how summary::before{content:\"\u25b8\"; color:var(--accent); transition:transform .15s;}\n#zuuvr-plug-calc details.how[open] summary::before{transform:rotate(90deg);}\n#zuuvr-plug-calc details.how .body{padding:0 14px 13px; font-size:11.5px; color:var(--muted); line-height:1.6;}\n#zuuvr-plug-calc details.how .body b{color:var(--ink2);}\n#zuuvr-plug-calc details.how .body .src{font-size:10.5px; color:#9aa7b8; margin-top:8px; line-height:1.5;}\n#zuuvr-plug-calc details.how .body .src a{color:var(--accent); text-decoration:none;}\n#zuuvr-plug-calc \/* lead gate *\/\n  .gate{border-top:1.5px solid var(--line); padding-top:18px;}\n#zuuvr-plug-calc .gate h3{font-size:16px; margin:0 0 4px; color:var(--navy); letter-spacing:-.2px;}\n#zuuvr-plug-calc .gate p{font-size:12.5px; color:var(--muted); margin:0 0 12px; line-height:1.5;}\n#zuuvr-plug-calc .row2{display:grid; grid-template-columns:1fr 1fr; gap:10px;}\n#zuuvr-plug-calc input[type=text],#zuuvr-plug-calc input[type=email],#zuuvr-plug-calc select{\n    width:100%; padding:12px 13px; font-size:13.5px; border:1.5px solid var(--line); border-radius:10px;\n    color:var(--text); background:#fbfcfe; font-family:inherit; margin-bottom:10px;\n    transition:border-color .15s, box-shadow .15s;\n  }\n#zuuvr-plug-calc input[type=text]:focus,#zuuvr-plug-calc input[type=email]:focus,#zuuvr-plug-calc select:focus{\n    outline:none; border-color:var(--accent); box-shadow:0 0 0 4px rgba(46,125,246,.14); background:#fff;}\n#zuuvr-plug-calc .consent{display:flex; gap:9px; align-items:flex-start; margin:2px 0 10px; font-size:11px; color:var(--muted); line-height:1.45;}\n#zuuvr-plug-calc .consent input{width:auto; margin-top:2px; accent-color:var(--accent);}\n#zuuvr-plug-calc .consent a{color:var(--accent); text-decoration:none;}\n#zuuvr-plug-calc .err{color:#d64545; font-size:11.5px; margin:-6px 0 8px; display:none;}\n#zuuvr-plug-calc .cta{\n    width:100%; padding:14px; border:none; border-radius:10px; cursor:pointer;\n    background:var(--accent); color:#fff; font-size:14.5px; font-weight:700; letter-spacing:.3px;\n    font-family:inherit; transition:background .15s, transform .08s;\n  }\n#zuuvr-plug-calc .cta:hover{background:#2168d6;}\n#zuuvr-plug-calc .cta:active{transform:translateY(1px);}\n#zuuvr-plug-calc .privacy{font-size:10.5px; color:#9aa7b8; text-align:center; margin-top:10px; line-height:1.4;}\n#zuuvr-plug-calc \/* success *\/\n  .success{display:none; text-align:center; padding:14px 0 4px;}\n#zuuvr-plug-calc .success .check{width:60px;height:60px;border-radius:50%;background:rgba(46,125,246,.12);\n    display:flex;align-items:center;justify-content:center;margin:0 auto 14px;}\n#zuuvr-plug-calc .success .check svg{width:30px;height:30px;stroke:var(--accent);}\n#zuuvr-plug-calc .success h3{color:var(--navy); margin:0 0 6px; font-size:17px;}\n#zuuvr-plug-calc .success p{color:var(--muted); font-size:12.5px; line-height:1.55; margin:0 0 14px;}\n#zuuvr-plug-calc .success .buy{display:inline-block; text-decoration:none; background:var(--navy); color:#fff;\n    padding:12px 22px; border-radius:10px; font-size:13.5px; font-weight:700;}\n@media(max-width:820px){\n#zuuvr-plug-calc .wrap{grid-template-columns:1fr; max-width:480px;}\n#zuuvr-plug-calc .calc{padding:34px 28px;}\n#zuuvr-plug-calc .res{padding:30px 28px;}\n#zuuvr-plug-calc .calc h1{font-size:23px;}\n}\n<\/style>\n\n  <div class=\"wrap\">\n\n    <!-- ===== LEFT : the 30-second calculator ===== -->\n    <div class=\"calc\">\n      <div class=\"brand\">Z U U V R<\/div>\n      <div class=\"eyebrow\">The PLUG savings check \u2014 30 seconds<\/div>\n      <h1>What is your pool <span>silently wasting?<\/span><\/h1>\n      <p class=\"sub\">Most pools run as if energy were free. Four sliders, no email needed \u2014 see instantly what a dumb control system costs you, and what one \u20ac199 PLUG saves. Every assumption is published below the result.<\/p>\n\n      <div class=\"field\">\n        <div class=\"fl\"><label for=\"zvr-vol\">Pool size<\/label><output id=\"zvr-volOut\">45 m\u00b3<\/output><\/div>\n        <input type=\"range\" id=\"zvr-vol\" min=\"15\" max=\"150\" step=\"5\" value=\"45\">\n        <div class=\"hint\">Length \u00d7 width \u00d7 average depth. An 8 \u00d7 4 m pool \u2248 45 m\u00b3.<\/div>\n      <\/div>\n\n      <div class=\"field\">\n        <div class=\"fl\"><label>Heating<\/label><\/div>\n        <div class=\"seg\" id=\"zvr-heatSeg\">\n          <button type=\"button\" data-v=\"hp\" class=\"on\">Heat pump<\/button>\n          <button type=\"button\" data-v=\"other\">Other \/ none<\/button>\n        <\/div>\n      <\/div>\n\n      <div class=\"field\">\n        <div class=\"fl\"><label for=\"zvr-months\">Months in use per year<\/label><output id=\"zvr-monthsOut\">6 months<\/output><\/div>\n        <input type=\"range\" id=\"zvr-months\" min=\"3\" max=\"12\" value=\"6\">\n        <div class=\"hint\">Mid-April to mid-October is the typical 6-month season in NW Europe.<\/div>\n      <\/div>\n\n      <div class=\"field\">\n        <div class=\"fl\"><label for=\"zvr-price\">Your electricity price<\/label><\/div>\n        <div class=\"price-in\">\n          <input type=\"number\" id=\"zvr-price\" step=\"0.01\" min=\"0.10\" max=\"1.00\" value=\"0.30\"> <span>\u20ac \/ kWh all-in \u2014 Belgian average is \u20ac0.23\u20130.30 (2026)<\/span>\n        <\/div>\n      <\/div>\n\n      <div class=\"assump\" id=\"zvr-assump\"><\/div>\n    <\/div>\n\n    <!-- ===== RIGHT : instant result + lead gate ===== -->\n    <div class=\"res\">\n      <div id=\"zvr-resultBlock\">\n        <h2>Your estimate<\/h2>\n        <div class=\"tiles\">\n          <div class=\"tile\">\n            <div class=\"v\" id=\"zvr-tCost\">\u20ac \u2014<\/div>\n            <div class=\"l\">your pool's estimated energy cost per year, at today's settings<\/div>\n          <\/div>\n          <div class=\"tile save\">\n            <div class=\"v\" id=\"zvr-tSave\">\u20ac \u2014<\/div>\n            <div class=\"l\">estimated yearly savings with PLUG (conservative \u2013 realistic range)<\/div>\n          <\/div>\n        <\/div>\n        <div class=\"payback\">\n          <div class=\"big\" id=\"zvr-tPayback\">\u2014 months<\/div>\n          <div class=\"txt\">until your \u20ac199 PLUG has paid for itself \u2014 energy only. Water savings and avoided damage come on top.<\/div>\n        <\/div>\n        <div class=\"bars\" aria-hidden=\"false\">\n          <div class=\"brow b-now\"><div class=\"bl\">Today<\/div><div class=\"btrack\"><div class=\"bfill\" id=\"zvr-barNow\" style=\"width:100%\"><\/div><\/div><div class=\"bval\" id=\"zvr-barNowV\">\u20ac \u2014<\/div><\/div>\n          <div class=\"brow b-plug\"><div class=\"bl\">With PLUG<\/div><div class=\"btrack\"><div class=\"bfill\" id=\"zvr-barPlug\" style=\"width:70%\"><\/div><\/div><div class=\"bval\" id=\"zvr-barPlugV\">\u20ac \u2014<\/div><\/div>\n        <\/div>\n        <div class=\"note\">We show a range, not a promise: the low end assumes only smarter run times and tariff steering; the high end adds solar surplus and avoided unnecessary heating. Your exact number depends on your system, climate and tariff \u2014 that's what the full report is for.<\/div>\n\n        <!-- ===== METHODOLOGY \u2014 visible, sourced, honest ===== -->\n        <details class=\"how\">\n          <summary>How we calculate this \u2014 every assumption, with sources<\/summary>\n          <div class=\"body\">\n            <b>Circulation pump.<\/b> A typical single-speed pool pump draws ~0.75 kW and runs a fixed 8 h\/day on a timer (~1,080 kWh per 6-month season). Industry analyses find most residential installations are oversized and run longer than filtration requires; smart scheduling of the <i>existing<\/i> pump conservatively cuts 20\u201335% (variable-speed replacements reach 50\u201390%, per US DOE\/ENERGY STAR \u2014 we deliberately claim far less, because PLUG optimises your current pump rather than replacing it).<br><br>\n            <b>Heat pump.<\/b> Field data for inverter heat pumps on covered outdoor pools in NW Europe clusters around ~30 kWh electric per m\u00b3 per 6-month season (\u22481,300 kWh\/season for a typical family pool, COP 4\u20135). Smart steering on dynamic tariffs alone is worth ~27% on heating cost (Dutch grid-operator-backed analyses; ~\u20ac320\/yr on 4,000 kWh); we model 20\u201330% including avoided unnecessary heating and solar-surplus use.<br><br>\n            <b>Electricity price.<\/b> Default \u20ac0.30\/kWh all-in \u2014 the upper end of the Belgian residential range (\u20ac0.23\u20130.30, 2026). Adjust it to your bill.<br><br>\n            <b>What we exclude.<\/b> Water savings, avoided green-water incidents, chemical dosing efficiency and early-failure detection are real but not counted here. Energy only. If PLUG wins on energy alone, everything else is a bonus.\n            <div class=\"src\">\n              Sources: Rhodos (seasonal heat-pump consumption tables, NL) \u00b7 Bobex.be (typical pool \u22481,300 kWh\/season, COP 4\u20135) \u00b7 Zonneplan (pump 0.75 kW \u00d7 8 h\/day; dynamic-tariff heat-pump steering \u2248\u20ac320\/yr on 4,000 kWh) \u00b7 RVO Installatiemonitor 2025 (smart steering & solar self-consumption) \u00b7 US DOE Building America \/ ENERGY STAR (pump affinity law, 50\u201390% VSP savings) \u00b7 Selectra.be (Belgian kWh prices, 2026). Full references in the report.\n            <\/div>\n          <\/div>\n        <\/details>\n\n        <!-- ===== LEAD GATE ===== -->\n        <div class=\"gate\">\n          <form id=\"zvr-leadForm\" novalidate action=\"REPLACE_WITH_YOUR_FORM_ENDPOINT\" method=\"POST\">\n            <h3>Get your full savings report \u2014 free<\/h3>\n            <p>The exact calculation for <em>your<\/em> system: savings breakdown per source, payback date, full references \u2014 and what PLUG unlocks next. Straight to your inbox.<\/p>\n            <div class=\"row2\">\n              <input type=\"text\" id=\"zvr-firstName\" name=\"firstName\" placeholder=\"First name\" autocomplete=\"given-name\">\n              <input type=\"email\" id=\"zvr-email\" name=\"email\" placeholder=\"you@example.com\" autocomplete=\"email\">\n            <\/div>\n            <div class=\"err\" id=\"zvr-errName\">Please enter your first name.<\/div>\n            <div class=\"err\" id=\"zvr-errEmail\">Please enter a valid email address.<\/div>\n            <select id=\"zvr-system\" name=\"system\">\n              <option value=\"\" selected disabled>Which control system runs your pool?<\/option>\n              <option>Sugar Valley (Oxilife \/ Aquascenic)<\/option>\n              <option>Astralpool (Elite Connect)<\/option>\n              <option>Hayward (AquaRite)<\/option>\n              <option>Bayrol<\/option>\n              <option>Kripsol<\/option>\n              <option>Dryden Aqua (DA-Gen)<\/option>\n              <option>Another brand<\/option>\n              <option>I don't know<\/option>\n            <\/select>\n            <div class=\"err\" id=\"zvr-errSystem\">Please pick your system \u2014 \"I don't know\" is fine too.<\/div>\n            <!-- calculator data rides along with the lead -->\n            <input type=\"hidden\" name=\"poolVolumeM3\" id=\"zvr-hVol\">\n            <input type=\"hidden\" name=\"heating\" id=\"zvr-hHeat\">\n            <input type=\"hidden\" name=\"monthsPerYear\" id=\"zvr-hMonths\">\n            <input type=\"hidden\" name=\"elecPrice\" id=\"zvr-hPrice\">\n            <input type=\"hidden\" name=\"estYearlyCost\" id=\"zvr-hCost\">\n            <input type=\"hidden\" name=\"estSaveLow\" id=\"zvr-hSaveLow\">\n            <input type=\"hidden\" name=\"estSaveHigh\" id=\"zvr-hSaveHigh\">\n            <input type=\"hidden\" name=\"estPaybackMonthsLow\" id=\"zvr-hPayLow\">\n            <input type=\"hidden\" name=\"estPaybackMonthsHigh\" id=\"zvr-hPayHigh\">\n            <div class=\"consent\">\n              <input type=\"checkbox\" id=\"zvr-consent\" name=\"consent\">\n              <label for=\"zvr-consent\" style=\"margin:0;font-weight:400;\">Send me my report and occasional smart-pool tips from ZUUVR. Unsubscribe anytime. <a href=\"#\">Privacy policy<\/a>.<\/label>\n            <\/div>\n            <div class=\"err\" id=\"zvr-errConsent\">Please tick the box to continue.<\/div>\n            <button class=\"cta\" type=\"submit\">Send my savings report \u2192<\/button>\n            <p class=\"privacy\">No spam. We only connect you with a certified partner if you ask us to.<\/p>\n          <\/form>\n\n          <div class=\"success\" id=\"zvr-success\">\n            <div class=\"check\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M20 6L9 17l-5-5\"\/><\/svg>\n            <\/div>\n            <h3>Your report is on its way \ud83d\udce9<\/h3>\n            <p>Check your inbox in the next few minutes. Ready to stop the waste today?<\/p>\n            <a class=\"buy\" href=\"https:\/\/zuuvr.com\/contact\/\">Get your PLUG \u2014 \u20ac199 \u2192<\/a>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n\n<script>\n\n  \/* =====================================================================\n     ZUUVR PLUG savings calculator \u2014 model & assumptions.\n     Every number below is sourced; tune here without touching the code.\n\n     SOURCED BASELINE:\n     - Pump: 0.75 kW single-speed, 8 h\/day on a timer (Zonneplan) \u2192\n       0.75 \u00d7 8 \u00d7 30.4 = ~182 kWh\/month in season.\n     - Heat pump: ~30 kWh electric per m\u00b3 per 6-month season for inverter\n       HPs on covered pools (Rhodos seasonal tables: 30 m\u00b3 \u2192 ~900 kWh,\n       50 m\u00b3 \u2192 ~1,530 kWh; Bobex: typical pool ~1,300 kWh, COP 4\u20135).\n     - Electricity: \u20ac0.30\/kWh default \u2014 upper end of Belgian all-in\n       residential range \u20ac0.23\u20130.30 (Selectra, 2026).\n\n     SOURCED SAVINGS RANGES (deliberately conservative):\n     - Pump scheduling of the EXISTING pump: 20% (low) \u2013 35% (high).\n       Context: most installations oversized \/ run longer than needed;\n       VSP replacements reach 50\u201390% (US DOE\/ENERGY STAR) \u2014 we claim\n       a fraction of that because PLUG doesn't replace the pump.\n     - Heating: 20% (low) \u2013 30% (high).\n       Context: dynamic-tariff smart steering alone \u224827% cost reduction\n       (Zonneplan: \u20ac320\/yr on 4,000 kWh, \u20ac0.30\u2192\u20ac0.22 effective);\n       high end adds solar-surplus use (RVO: up to 750 kWh\/yr extra\n       self-consumption) and avoided unnecessary heating.\n     ===================================================================== *\/\n  var CONFIG = {\n    plugPrice: 199,            \/\/ \u20ac \u2014 one PLUG\n\n    pumpPowerKw: 0.75,         \/\/ single-speed pump draw (Zonneplan)\n    pumpHoursPerDay: 8,        \/\/ classic timer schedule (Zonneplan)\n    pumpSaveLow: 0.20,         \/\/ smarter run times, existing pump\n    pumpSaveHigh: 0.35,\n\n    heatKwhPerM3Season: 30,    \/\/ electric kWh\/m\u00b3 per 6-month season (Rhodos\/Bobex)\n    heatSaveLow: 0.20,         \/\/ tariff steering only, conservative\n    heatSaveHigh: 0.30,        \/\/ + solar surplus + no pointless heating\n\n    priceDefault: 0.30         \/\/ \u20ac\/kWh all-in (Selectra BE 2026, upper end)\n  };\n\n  var state = { vol: 45, heat: 'hp', months: 6, price: CONFIG.priceDefault };\n\n  function fmtEUR(n){ return '\u20ac ' + Math.round(n).toLocaleString('en-US').replace(\/,\/g, ' '); }\n  function months(n){ return n <= 18 ? Math.round(n) + ' mo' : (Math.round(n\/12*10)\/10) + ' yrs'; }\n\n  function calc(){\n    var pumpKwh = CONFIG.pumpPowerKw * CONFIG.pumpHoursPerDay * 30.4 * state.months;\n    var heatKwh = (state.heat === 'hp')\n      ? CONFIG.heatKwhPerM3Season * state.vol * (state.months \/ 6)\n      : 0;\n    var cost = (pumpKwh + heatKwh) * state.price;\n    var saveLow  = (pumpKwh * CONFIG.pumpSaveLow  + heatKwh * CONFIG.heatSaveLow ) * state.price;\n    var saveHigh = (pumpKwh * CONFIG.pumpSaveHigh + heatKwh * CONFIG.heatSaveHigh) * state.price;\n    var mid = (saveLow + saveHigh) \/ 2;\n    return {\n      cost: cost, saveLow: saveLow, saveHigh: saveHigh, mid: mid,\n      afterMid: cost - mid,\n      payLow: saveHigh > 0 ? CONFIG.plugPrice \/ (saveHigh \/ 12) : null,  \/\/ best case\n      payHigh: saveLow  > 0 ? CONFIG.plugPrice \/ (saveLow  \/ 12) : null  \/\/ worst case\n    };\n  }\n\n  function render(){\n    var r = calc();\n    document.getElementById('zvr-tCost').textContent = fmtEUR(r.cost);\n    document.getElementById('zvr-tSave').textContent =\n      fmtEUR(r.saveLow).replace('\u20ac ','\u20ac') + '\u2013' + Math.round(r.saveHigh) + ' \/yr';\n    document.getElementById('zvr-tPayback').textContent =\n      r.payLow ? months(r.payLow) + ' \u2013 ' + months(r.payHigh) : '\u2014';\n    document.getElementById('zvr-barNowV').textContent = fmtEUR(r.cost) + ' \/ yr';\n    document.getElementById('zvr-barPlugV').textContent = '\u2248 ' + fmtEUR(r.afterMid) + ' \/ yr';\n    document.getElementById('zvr-barNow').style.width = '100%';\n    document.getElementById('zvr-barPlug').style.width = Math.max(8, Math.round(r.afterMid \/ r.cost * 100)) + '%';\n    document.getElementById('zvr-assump').textContent =\n      'Model: pump ' + CONFIG.pumpPowerKw + ' kW \u00d7 ' + CONFIG.pumpHoursPerDay + ' h\/day'\n      + (state.heat === 'hp' ? ' \u00b7 heat pump \u2248 ' + CONFIG.heatKwhPerM3Season + ' kWh\/m\u00b3 per season (COP 4\u20135, covered pool)' : ' \u00b7 no heat pump')\n      + ' \u00b7 savings ' + Math.round(CONFIG.pumpSaveLow*100) + '\u2013' + Math.round(CONFIG.pumpSaveHigh*100) + '% on circulation'\n      + (state.heat === 'hp' ? ', ' + Math.round(CONFIG.heatSaveLow*100) + '\u2013' + Math.round(CONFIG.heatSaveHigh*100) + '% on heating' : '')\n      + '. Sourced \u2014 see \u201cHow we calculate this\u201d.';\n    \/\/ hidden lead fields \u2014 the lead arrives WITH the pool profile\n    document.getElementById('zvr-hVol').value = state.vol;\n    document.getElementById('zvr-hHeat').value = state.heat;\n    document.getElementById('zvr-hMonths').value = state.months;\n    document.getElementById('zvr-hPrice').value = state.price;\n    document.getElementById('zvr-hCost').value = Math.round(r.cost);\n    document.getElementById('zvr-hSaveLow').value = Math.round(r.saveLow);\n    document.getElementById('zvr-hSaveHigh').value = Math.round(r.saveHigh);\n    document.getElementById('zvr-hPayLow').value = r.payLow ? Math.round(r.payLow) : '';\n    document.getElementById('zvr-hPayHigh').value = r.payHigh ? Math.round(r.payHigh) : '';\n  }\n\n  document.getElementById('zvr-vol').addEventListener('input', function(){\n    state.vol = +this.value;\n    document.getElementById('zvr-volOut').textContent = this.value + ' m\u00b3';\n    render();\n  });\n  document.getElementById('zvr-months').addEventListener('input', function(){\n    state.months = +this.value;\n    document.getElementById('zvr-monthsOut').textContent = this.value + ' months';\n    render();\n  });\n  document.getElementById('zvr-price').addEventListener('input', function(){\n    var v = parseFloat(this.value);\n    if (!isNaN(v) && v > 0) { state.price = v; render(); }\n  });\n  document.getElementById('zvr-heatSeg').addEventListener('click', function(e){\n    var b = e.target.closest('button'); if(!b) return;\n    this.querySelectorAll('button').forEach(function(x){ x.classList.remove('on'); });\n    b.classList.add('on');\n    state.heat = b.dataset.v;\n    render();\n  });\n\n  \/\/ ---- lead form: validate, show success. Connect `action` to your mail\n  \/\/ tool (HubSpot, Brevo, Mailchimp\u2026) \u2014 the hidden fields deliver the full\n  \/\/ pool profile + estimate range with every lead, ready for follow-up.\n  (function(){\n    var f = document.getElementById('zvr-leadForm');\n    var emailRe = \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/;\n    function show(id, on){ document.getElementById(id).style.display = on ? 'block':'none'; }\n    f.addEventListener('submit', function(e){\n      e.preventDefault(); \/\/ demo mode \u2014 remove once the endpoint is live\n      var ok = true;\n      var name = document.getElementById('zvr-firstName').value.trim();\n      var email = document.getElementById('zvr-email').value.trim();\n      var system = document.getElementById('zvr-system').value;\n      var consent = document.getElementById('zvr-consent').checked;\n      show('zvr-errName', !name); if(!name) ok = false;\n      show('zvr-errEmail', !emailRe.test(email)); if(!emailRe.test(email)) ok = false;\n      show('zvr-errSystem', !system); if(!system) ok = false;\n      show('zvr-errConsent', !consent); if(!consent) ok = false;\n      if(!ok) return;\n      \/\/ TODO: fetch POST all form fields (incl. hidden calculator data) to your endpoint.\n      f.style.display = 'none';\n      document.getElementById('zvr-success').style.display = 'block';\n    });\n  })();\n\n  render();\n\n<\/script>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Z U U V R The PLUG savings check \u2014 30 seconds What is your pool silently wasting? Most pools run as if energy were free. Four sliders, no email needed \u2014 see instantly what a dumb control system costs you, and what one \u20ac199 PLUG saves. Every assumption is published below the result. Pool [&hellip;]<\/p>\n","protected":false},"author":276831110,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-4540","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/zuuvr.com\/nl\/wp-json\/wp\/v2\/pages\/4540","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zuuvr.com\/nl\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/zuuvr.com\/nl\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/zuuvr.com\/nl\/wp-json\/wp\/v2\/users\/276831110"}],"replies":[{"embeddable":true,"href":"https:\/\/zuuvr.com\/nl\/wp-json\/wp\/v2\/comments?post=4540"}],"version-history":[{"count":5,"href":"https:\/\/zuuvr.com\/nl\/wp-json\/wp\/v2\/pages\/4540\/revisions"}],"predecessor-version":[{"id":4547,"href":"https:\/\/zuuvr.com\/nl\/wp-json\/wp\/v2\/pages\/4540\/revisions\/4547"}],"wp:attachment":[{"href":"https:\/\/zuuvr.com\/nl\/wp-json\/wp\/v2\/media?parent=4540"}],"curies":[{"name":"WordPress","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}