<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Archiwa smart home - Projekt Ogrzewania</title>
	<atom:link href="https://projekt-ogrzewania.pl/tag/smart-home/feed/" rel="self" type="application/rss+xml" />
	<link>https://projekt-ogrzewania.pl/tag/smart-home/</link>
	<description>Twój partner w projektowaniu komfortu – profesjonalne ogrzewanie podłogowe dla Twojego domu.</description>
	<lastBuildDate>Mon, 31 Aug 2026 13:35:53 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>

<image>
	<url>https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1-32x32.jpg</url>
	<title>Archiwa smart home - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/tag/smart-home/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Czy warto montować sterowniki do ogrzewania podłogowego?</title>
		<link>https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Thu, 11 Dec 2025 10:36:22 +0000</pubDate>
				<category><![CDATA[Automatyka domowa]]></category>
		<category><![CDATA[Energooszczędność]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Komfort w domu]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Projekty instalacji]]></category>
		<category><![CDATA[Smart home]]></category>
		<category><![CDATA[Sterowanie ogrzewaniem]]></category>
		<category><![CDATA[Sterowniki do podłogówki]]></category>
		<category><![CDATA[Technika grzewcza]]></category>
		<category><![CDATA[automatyka grzewcza]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędność energii]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[regulacja temperatury]]></category>
		<category><![CDATA[smart home]]></category>
		<category><![CDATA[sterownik pogodowy]]></category>
		<category><![CDATA[sterownik pokojowy]]></category>
		<category><![CDATA[sterowniki do podłogówki]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2934</guid>

					<description><![CDATA[<p>Czy warto montować sterowniki do ogrzewania podłogowego? To pytanie zadaje sobie dziś większość osób planujących nowoczesny system grzewczy w swoim domu. Podłogówka sama w sobie daje komfort, ale dopiero odpowiednia automatyka pozwala realnie oszczędzać, podnosić wygodę i wykorzystać pełen potencjał instalacji. W zajawce wyjaśniamy, dlaczego sterowniki stają się nieodłącznym elementem współczesnych systemów grzewczych i jak wpływają na ich efektywność, trwałość oraz codzienną eksploatację.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/">Czy warto montować sterowniki do ogrzewania podłogowego?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-controls-guide {
    --rk-dark: #102536;
    --rk-navy: #14384d;
    --rk-blue: #078fbe;
    --rk-cyan: #25c7d8;
    --rk-cyan-soft: #e8fbff;
    --rk-orange: #ff6a3d;
    --rk-orange-soft: #fff1eb;
    --rk-green: #16836b;
    --rk-green-soft: #eaf8f3;
    --rk-yellow: #d89c19;
    --rk-yellow-soft: #fff8df;
    --rk-red: #d94b3d;
    --rk-red-soft: #fff0ee;
    --rk-purple: #695ac9;
    --rk-purple-soft: #f1efff;
    --rk-ink: #1f2c37;
    --rk-text: #475967;
    --rk-muted: #6b7e8a;
    --rk-line: #d5e4eb;
    --rk-soft: #f4f9fb;
    --rk-white: #ffffff;
    width: 100%;
    max-width: 1180px;
    margin: 34px auto 72px;
    color: var(--rk-ink);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 18px;
    line-height: 1.75;
  }

  #rk-controls-guide,
  #rk-controls-guide * { box-sizing: border-box; }
  #rk-controls-guide img,
  #rk-controls-guide svg,
  #rk-controls-guide canvas { max-width: 100%; }
  #rk-controls-guide button,
  #rk-controls-guide input,
  #rk-controls-guide select,
  #rk-controls-guide label,
  #rk-controls-guide summary,
  #rk-controls-guide a { font: inherit; -webkit-tap-highlight-color: transparent; }
  #rk-controls-guide button,
  #rk-controls-guide input,
  #rk-controls-guide select { max-width: 100%; }
  #rk-controls-guide a {
    color: var(--rk-blue);
    font-weight: 780;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
  }
  #rk-controls-guide a:hover,
  #rk-controls-guide a:focus-visible { color: var(--rk-red); }
  #rk-controls-guide p,
  #rk-controls-guide ul,
  #rk-controls-guide ol { margin-top: 0; margin-bottom: 1.08em; }
  #rk-controls-guide h2,
  #rk-controls-guide h3,
  #rk-controls-guide h4 {
    margin-top: 0;
    color: var(--rk-dark);
    font-weight: 920;
    letter-spacing: -.035em;
    line-height: 1.15;
  }
  #rk-controls-guide h2 { margin-bottom: 18px; font-size: clamp(1.72rem, 4vw, 2.68rem); }
  #rk-controls-guide h3 { margin-bottom: 11px; font-size: clamp(1.12rem, 2.35vw, 1.46rem); }
  #rk-controls-guide h4 { margin-bottom: 8px; font-size: 1.02rem; }
  #rk-controls-guide strong { color: var(--rk-dark); }

  #rk-controls-guide .rk-controls-progress {
    position: fixed;
    z-index: 9999;
    top: 0;
    left: 0;
    width: 0;
    height: 4px;
    background: linear-gradient(90deg, var(--rk-cyan), var(--rk-orange));
    box-shadow: 0 0 12px rgba(37, 199, 216, .5);
    pointer-events: none;
  }

  #rk-controls-guide .rk-controls-shell {
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 26px;
    background: var(--rk-white);
    box-shadow: 0 24px 70px rgba(16, 37, 54, .11);
  }

  #rk-controls-guide .rk-controls-hero {
    position: relative;
    overflow: hidden;
    padding: clamp(38px, 7vw, 78px) clamp(25px, 6vw, 76px) 42px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 91% 4%, rgba(37, 199, 216, .3), transparent 28%),
      radial-gradient(circle at 8% 100%, rgba(255, 106, 61, .24), transparent 30%),
      linear-gradient(135deg, #0d2332 0%, #143e53 55%, #175b62 100%);
  }
  #rk-controls-guide .rk-controls-hero::after {
    position: absolute;
    right: -55px;
    bottom: -120px;
    width: 350px;
    height: 350px;
    border: 46px solid rgba(255, 255, 255, .05);
    border-radius: 50%;
    content: "";
  }
  #rk-controls-guide .rk-controls-kicker {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    margin-bottom: 15px;
    color: #78efff;
    font-size: .69rem;
    font-weight: 950;
    letter-spacing: .09em;
    line-height: 1.2;
    text-transform: uppercase;
  }
  #rk-controls-guide .rk-controls-kicker::before {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--rk-orange);
    box-shadow: 0 0 0 6px rgba(255, 106, 61, .14);
    content: "";
  }
  #rk-controls-guide .rk-controls-hero-title {
    position: relative;
    z-index: 1;
    max-width: 970px;
    margin: 0 0 19px;
    color: var(--rk-white);
    font-size: clamp(2.05rem, 5.4vw, 4.35rem);
    font-weight: 950;
    letter-spacing: -.055em;
    line-height: 1.01;
  }
  #rk-controls-guide .rk-controls-hero-title span { color: #78efff; }
  #rk-controls-guide .rk-controls-lead {
    position: relative;
    z-index: 1;
    max-width: 920px;
    margin-bottom: 25px;
    color: #d8e9ef;
    font-size: clamp(1.02rem, 2vw, 1.24rem);
    line-height: 1.68;
  }
  #rk-controls-guide .rk-controls-hero-tags {
    position: relative;
    z-index: 1;
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
    margin-bottom: 28px;
  }
  #rk-controls-guide .rk-controls-hero-tag {
    display: inline-flex;
    align-items: center;
    min-height: 38px;
    padding: 8px 13px;
    border: 1px solid rgba(255, 255, 255, .18);
    border-radius: 999px;
    color: #eefcff;
    background: rgba(255, 255, 255, .075);
    font-size: .72rem;
    font-weight: 850;
    line-height: 1.3;
  }
  #rk-controls-guide .rk-controls-byline {
    position: relative;
    z-index: 1;
    display: flex;
    flex-wrap: wrap;
    gap: 8px 18px;
    color: #bad3dc;
    font-size: .72rem;
    font-weight: 720;
  }
  #rk-controls-guide .rk-controls-byline strong { color: var(--rk-white); }
  #rk-controls-guide .rk-controls-hero-metrics {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    margin-top: 34px;
  }
  #rk-controls-guide .rk-controls-hero-metric {
    padding: 17px 18px;
    border: 1px solid rgba(255, 255, 255, .14);
    border-radius: 16px;
    background: rgba(5, 24, 36, .28);
    backdrop-filter: blur(6px);
  }
  #rk-controls-guide .rk-controls-hero-metric b {
    display: block;
    margin-bottom: 4px;
    color: #7af0ff;
    font-size: 1.04rem;
    font-weight: 950;
  }
  #rk-controls-guide .rk-controls-hero-metric span {
    display: block;
    color: #d5e7ec;
    font-size: .7rem;
    line-height: 1.45;
  }

  #rk-controls-guide .rk-controls-nav {
    position: relative;
    z-index: 5;
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    align-items: start;
    gap: 10px;
    padding: 11px clamp(14px, 3vw, 28px);
    border-bottom: 1px solid var(--rk-line);
    background: rgba(255, 255, 255, .98);
    box-shadow: 0 8px 24px rgba(16, 37, 54, .07);
  }
  #rk-controls-guide .rk-controls-nav-label {
    padding-top: 9px;
    color: var(--rk-dark);
    font-size: .62rem;
    font-weight: 950;
    letter-spacing: .06em;
    text-transform: uppercase;
    white-space: nowrap;
  }
  #rk-controls-guide .rk-controls-nav-track {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 7px;
    overflow: visible;
    padding: 2px;
  }
  #rk-controls-guide .rk-controls-nav-track a {
    flex: 0 0 auto;
    padding: 7px 11px;
    border-radius: 999px;
    color: var(--rk-navy);
    background: var(--rk-soft);
    font-size: .64rem;
    font-weight: 900;
    line-height: 1.2;
    text-decoration: none;
    white-space: nowrap;
  }
  #rk-controls-guide .rk-controls-nav-track a:hover,
  #rk-controls-guide .rk-controls-nav-track a:focus-visible { color: var(--rk-white); background: var(--rk-blue); }

  #rk-controls-guide .rk-controls-content { padding: clamp(26px, 5.5vw, 64px); }
  #rk-controls-guide .rk-controls-section {
    margin-bottom: clamp(48px, 8vw, 86px);
    scroll-margin-top: 24px;
  }
  #rk-controls-guide .rk-controls-section:last-child { margin-bottom: 0; }
  #rk-controls-guide .rk-controls-section-head { max-width: 930px; margin-bottom: 24px; }
  #rk-controls-guide .rk-controls-section-head > p:last-child { margin-bottom: 0; color: var(--rk-text); font-size: 1.02rem; }
  #rk-controls-guide .rk-controls-eyebrow {
    display: block;
    margin-bottom: 9px;
    color: var(--rk-blue);
    font-size: .67rem;
    font-weight: 950;
    letter-spacing: .08em;
    text-transform: uppercase;
  }
  #rk-controls-guide .rk-controls-grid-2,
  #rk-controls-guide .rk-controls-grid-3,
  #rk-controls-guide .rk-controls-grid-4 { display: grid; gap: 18px; }
  #rk-controls-guide .rk-controls-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #rk-controls-guide .rk-controls-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  #rk-controls-guide .rk-controls-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  #rk-controls-guide .rk-controls-card {
    padding: clamp(21px, 3.5vw, 31px);
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    background: var(--rk-white);
    box-shadow: 0 10px 28px rgba(16, 37, 54, .065);
  }
  #rk-controls-guide .rk-controls-card p:last-child,
  #rk-controls-guide .rk-controls-card ul:last-child,
  #rk-controls-guide .rk-controls-card ol:last-child { margin-bottom: 0; }
  #rk-controls-guide .rk-controls-card-blue { border-top: 5px solid var(--rk-cyan); }
  #rk-controls-guide .rk-controls-card-orange { border-top: 5px solid var(--rk-orange); }
  #rk-controls-guide .rk-controls-card-green { border-top: 5px solid var(--rk-green); }
  #rk-controls-guide .rk-controls-card-purple { border-top: 5px solid var(--rk-purple); }
  #rk-controls-guide .rk-controls-number {
    display: grid;
    place-items: center;
    width: 42px;
    height: 42px;
    margin-bottom: 15px;
    border-radius: 13px;
    color: var(--rk-white);
    background: var(--rk-blue);
    font-size: .85rem;
    font-weight: 950;
  }
  #rk-controls-guide .rk-controls-answer {
    position: relative;
    overflow: hidden;
    padding: clamp(27px, 5vw, 45px);
    border-radius: 22px;
    color: var(--rk-white);
    background: linear-gradient(135deg, var(--rk-dark), #18516a);
  }
  #rk-controls-guide .rk-controls-answer::after {
    position: absolute;
    right: -72px;
    bottom: -86px;
    width: 225px;
    height: 225px;
    border: 32px solid rgba(255,255,255,.05);
    border-radius: 50%;
    content: "";
  }
  #rk-controls-guide .rk-controls-answer h3 { position: relative; z-index: 1; color: var(--rk-white); }
  #rk-controls-guide .rk-controls-answer p { position: relative; z-index: 1; color: #d9ebf0; }
  #rk-controls-guide .rk-controls-answer strong { color: #8ef5ff; }
  #rk-controls-guide .rk-controls-answer p:last-child { margin-bottom: 0; }

  #rk-controls-guide .rk-controls-note,
  #rk-controls-guide .rk-controls-warning,
  #rk-controls-guide .rk-controls-good {
    padding: 20px 22px;
    border-left: 5px solid;
    border-radius: 14px;
  }
  #rk-controls-guide .rk-controls-note { border-color: var(--rk-blue); background: var(--rk-cyan-soft); }
  #rk-controls-guide .rk-controls-warning { border-color: var(--rk-orange); background: var(--rk-orange-soft); }
  #rk-controls-guide .rk-controls-good { border-color: var(--rk-green); background: var(--rk-green-soft); }
  #rk-controls-guide .rk-controls-note p:last-child,
  #rk-controls-guide .rk-controls-warning p:last-child,
  #rk-controls-guide .rk-controls-good p:last-child { margin-bottom: 0; }

  #rk-controls-guide .rk-controls-pill-list {
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
    margin: 0;
    padding: 0;
    list-style: none;
  }
  #rk-controls-guide .rk-controls-pill-list li {
    padding: 8px 12px;
    border: 1px solid var(--rk-line);
    border-radius: 999px;
    background: var(--rk-soft);
    color: var(--rk-navy);
    font-size: .77rem;
    font-weight: 800;
    line-height: 1.3;
  }

  #rk-controls-guide .rk-controls-flow {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 38px;
    margin-top: 28px;
  }
  #rk-controls-guide .rk-controls-flow-item {
    position: relative;
    padding: 23px;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    background: var(--rk-soft);
  }
  #rk-controls-guide .rk-controls-flow-item:not(:last-child)::after {
    position: absolute;
    top: 50%;
    right: -31px;
    color: var(--rk-orange);
    content: "→";
    font-size: 1.7rem;
    font-weight: 950;
    transform: translateY(-50%);
  }
  #rk-controls-guide .rk-controls-flow-item p:last-child { margin-bottom: 0; }

  #rk-controls-guide .rk-controls-table-wrap {
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    background: var(--rk-white);
    box-shadow: 0 10px 28px rgba(16, 37, 54, .055);
  }
  #rk-controls-guide .rk-controls-table { width: 100%; border-collapse: collapse; }
  #rk-controls-guide .rk-controls-table th,
  #rk-controls-guide .rk-controls-table td { padding: 16px 17px; border-bottom: 1px solid var(--rk-line); vertical-align: top; text-align: left; }
  #rk-controls-guide .rk-controls-table th {
    color: var(--rk-white);
    background: var(--rk-navy);
    font-size: .73rem;
    font-weight: 900;
    letter-spacing: .035em;
    line-height: 1.35;
    text-transform: uppercase;
  }
  #rk-controls-guide .rk-controls-table td { color: var(--rk-text); font-size: .88rem; line-height: 1.55; }
  #rk-controls-guide .rk-controls-table tr:last-child td { border-bottom: 0; }
  #rk-controls-guide .rk-controls-table tbody tr:nth-child(even) { background: var(--rk-soft); }

  #rk-controls-guide .rk-controls-analyzer {
    overflow: hidden;
    border: 1px solid #315769;
    border-radius: 24px;
    color: #eaf6f9;
    background: #102c3c;
    box-shadow: 0 26px 65px rgba(16, 37, 54, .18);
  }
  #rk-controls-guide .rk-controls-analyzer-head {
    padding: clamp(27px, 5vw, 48px);
    background:
      radial-gradient(circle at 92% 15%, rgba(37, 199, 216, .22), transparent 30%),
      linear-gradient(135deg, #13394d, #174d5c);
  }
  #rk-controls-guide .rk-controls-analyzer-head .rk-controls-eyebrow { color: #76efff; }
  #rk-controls-guide .rk-controls-analyzer-head h3 { max-width: 900px; color: var(--rk-white); font-size: clamp(1.6rem, 4vw, 2.6rem); }
  #rk-controls-guide .rk-controls-analyzer-head p { max-width: 900px; margin-bottom: 0; color: #d0e4ea; }
  #rk-controls-guide .rk-controls-analyzer-body { padding: clamp(21px, 4.5vw, 42px); }
  #rk-controls-guide .rk-controls-input-group,
  #rk-controls-guide .rk-controls-result-block {
    margin-bottom: 22px;
    padding: clamp(20px, 3.5vw, 31px);
    border: 1px solid #345a6d;
    border-radius: 18px;
    background: #173447;
  }
  #rk-controls-guide .rk-controls-input-group h4,
  #rk-controls-guide .rk-controls-result-block h4 { color: var(--rk-white); }
  #rk-controls-guide .rk-controls-input-group > p,
  #rk-controls-guide .rk-controls-result-block > p { color: #bad2dc; font-size: .82rem; }
  #rk-controls-guide .rk-controls-fields {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 17px;
  }
  #rk-controls-guide .rk-controls-field { min-width: 0; }
  #rk-controls-guide .rk-controls-field label {
    display: block;
    margin-bottom: 7px;
    color: #f1fbfd;
    font-size: .74rem;
    font-weight: 850;
    line-height: 1.35;
  }
  #rk-controls-guide .rk-controls-field select,
  #rk-controls-guide .rk-controls-field input {
    width: 100%;
    min-height: 48px;
    padding: 10px 12px;
    border: 1px solid #8eabb7;
    border-radius: 10px;
    outline: none;
    color: var(--rk-dark);
    background: var(--rk-white);
    font-size: .82rem;
  }
  #rk-controls-guide .rk-controls-field select:focus,
  #rk-controls-guide .rk-controls-field input:focus { border-color: var(--rk-cyan); box-shadow: 0 0 0 3px rgba(37,199,216,.22); }
  #rk-controls-guide .rk-controls-help { display: block; margin-top: 6px; color: #9ebac5; font-size: .64rem; line-height: 1.45; }
  #rk-controls-guide .rk-controls-actions { display: flex; flex-wrap: wrap; gap: 11px; margin: 6px 0 25px; }
  #rk-controls-guide .rk-controls-button {
    min-height: 48px;
    padding: 11px 18px;
    border: 0;
    border-radius: 12px;
    color: var(--rk-dark);
    background: var(--rk-cyan);
    cursor: pointer;
    font-size: .78rem;
    font-weight: 950;
  }
  #rk-controls-guide .rk-controls-button:hover,
  #rk-controls-guide .rk-controls-button:focus-visible { color: var(--rk-white); background: var(--rk-orange); }
  #rk-controls-guide .rk-controls-button-secondary { border: 1px solid #58798a; color: #dceef2; background: transparent; }
  #rk-controls-guide .rk-controls-error {
    display: none;
    margin-bottom: 18px;
    padding: 13px 15px;
    border-left: 4px solid #ff8060;
    border-radius: 9px;
    color: #ffe7df;
    background: rgba(217, 75, 61, .18);
    font-size: .78rem;
    font-weight: 760;
  }
  #rk-controls-guide .rk-controls-error.is-visible { display: block; }

  #rk-controls-guide .rk-controls-result-hero {
    position: relative;
    overflow: hidden;
    padding: clamp(24px, 4vw, 38px);
    border: 1px solid #3d6678;
    border-radius: 19px;
    background: linear-gradient(135deg, #123c50, #176071);
  }
  #rk-controls-guide .rk-controls-result-hero.is-central { background: linear-gradient(135deg, #173b55, #315aa4); }
  #rk-controls-guide .rk-controls-result-hero.is-selective { background: linear-gradient(135deg, #123d4f, #157b79); }
  #rk-controls-guide .rk-controls-result-hero.is-zoned { background: linear-gradient(135deg, #18463f, #16836b); }
  #rk-controls-guide .rk-controls-result-hero.is-foundation { background: linear-gradient(135deg, #563828, #a34f32); }
  #rk-controls-guide .rk-controls-result-badge {
    display: inline-flex;
    margin-bottom: 12px;
    padding: 6px 10px;
    border-radius: 999px;
    color: #e8fbff;
    background: rgba(255,255,255,.13);
    font-size: .64rem;
    font-weight: 950;
    letter-spacing: .06em;
    text-transform: uppercase;
  }
  #rk-controls-guide .rk-controls-result-hero h4 { margin-bottom: 12px; color: var(--rk-white); font-size: clamp(1.35rem, 3.2vw, 2rem); }
  #rk-controls-guide .rk-controls-result-hero p { max-width: 920px; margin-bottom: 0; color: #e0f0f4; }
  #rk-controls-guide .rk-controls-score-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 13px;
    margin-top: 19px;
  }
  #rk-controls-guide .rk-controls-score-card {
    padding: 17px;
    border: 1px solid #365e70;
    border-radius: 15px;
    background: #112f41;
  }
  #rk-controls-guide .rk-controls-score-card span { display: block; margin-bottom: 7px; color: #b7ced7; font-size: .65rem; font-weight: 850; line-height: 1.35; text-transform: uppercase; }
  #rk-controls-guide .rk-controls-score-card strong { display: block; margin-bottom: 9px; color: var(--rk-white); font-size: 1.14rem; font-weight: 950; }
  #rk-controls-guide .rk-controls-score-track { overflow: hidden; height: 8px; border-radius: 999px; background: #284b5e; }
  #rk-controls-guide .rk-controls-score-fill { width: 0; height: 100%; border-radius: inherit; background: var(--rk-cyan); transition: width .35s ease; }
  #rk-controls-guide .rk-controls-score-fill.is-orange { background: var(--rk-orange); }
  #rk-controls-guide .rk-controls-score-fill.is-purple { background: #8d80ee; }
  #rk-controls-guide .rk-controls-score-fill.is-green { background: #43d1a9; }

  #rk-controls-guide .rk-controls-result-columns {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 15px;
    margin-top: 19px;
  }
  #rk-controls-guide .rk-controls-result-list {
    padding: 20px;
    border: 1px solid #365e70;
    border-radius: 16px;
    background: #112f41;
  }
  #rk-controls-guide .rk-controls-result-list h4 { font-size: 1rem; }
  #rk-controls-guide .rk-controls-result-list ul { margin: 0; padding-left: 19px; }
  #rk-controls-guide .rk-controls-result-list li { margin-bottom: 8px; color: #c9dde4; font-size: .75rem; line-height: 1.5; }
  #rk-controls-guide .rk-controls-result-list li:last-child { margin-bottom: 0; }

  #rk-controls-guide .rk-controls-system-path {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 34px;
    margin-top: 20px;
  }
  #rk-controls-guide .rk-controls-system-node {
    position: relative;
    min-height: 126px;
    padding: 19px 16px;
    border: 1px solid #43697a;
    border-radius: 15px;
    background: #102d3f;
  }
  #rk-controls-guide .rk-controls-system-node:not(:last-child)::after {
    position: absolute;
    top: 50%;
    right: -27px;
    color: #62ddec;
    content: "→";
    font-size: 1.45rem;
    font-weight: 950;
    transform: translateY(-50%);
  }
  #rk-controls-guide .rk-controls-system-node b { display: block; margin-bottom: 6px; color: var(--rk-white); font-size: .87rem; }
  #rk-controls-guide .rk-controls-system-node span { display: block; color: #a9c4ce; font-size: .67rem; line-height: 1.45; }
  #rk-controls-guide .rk-controls-system-state {
    display: inline-flex;
    margin-top: 11px;
    padding: 4px 8px;
    border-radius: 999px;
    color: #89f5df;
    background: rgba(22, 131, 107, .24);
    font-size: .58rem;
    font-weight: 900;
    line-height: 1.3;
  }
  #rk-controls-guide .rk-controls-system-state.is-warn { color: #ffd8cc; background: rgba(255, 106, 61, .23); }

  #rk-controls-guide .rk-controls-chart-box {
    margin-top: 20px;
    padding: 20px;
    border: 1px solid #365e70;
    border-radius: 16px;
    background: #f7fbfc;
  }
  #rk-controls-guide .rk-controls-chart-box h4 { margin-bottom: 6px; color: var(--rk-dark); }
  #rk-controls-guide .rk-controls-chart-box p { color: var(--rk-text); font-size: .76rem; }
  #rk-controls-guide .rk-controls-chart-wrap { position: relative; width: 100%; min-height: 295px; }
  #rk-controls-guide .rk-controls-chart-wrap canvas { display: block; width: 100%; height: 295px; }
  #rk-controls-guide .rk-controls-chart-legend { display: flex; flex-wrap: wrap; gap: 12px 18px; margin-top: 9px; color: var(--rk-text); font-size: .66rem; font-weight: 800; }
  #rk-controls-guide .rk-controls-chart-key { display: inline-flex; align-items: center; gap: 7px; }
  #rk-controls-guide .rk-controls-chart-key::before { width: 22px; height: 4px; border-radius: 999px; background: var(--rk-blue); content: ""; }
  #rk-controls-guide .rk-controls-chart-key.is-orange::before { background: var(--rk-orange); }

  #rk-controls-guide .rk-controls-diagnostics { display: grid; gap: 10px; margin-top: 18px; }
  #rk-controls-guide .rk-controls-diagnostic {
    padding: 13px 15px;
    border-left: 4px solid #32ccb0;
    border-radius: 10px;
    color: #d4e8ed;
    background: #173c4f;
    font-size: .74rem;
    line-height: 1.55;
  }
  #rk-controls-guide .rk-controls-diagnostic.is-warn { border-color: var(--rk-orange); background: #403642; }
  #rk-controls-guide .rk-controls-analyzer-disclaimer { margin: 7px 0 0; color: #9ebac5; font-size: .65rem; line-height: 1.5; }

  #rk-controls-guide .rk-controls-cta {
    position: relative;
    overflow: hidden;
    padding: clamp(28px, 5vw, 48px);
    border-radius: 22px;
    color: var(--rk-white);
    background: linear-gradient(135deg, #0d2b3c, #145269);
    box-shadow: 0 18px 48px rgba(16, 37, 54, .14);
  }
  #rk-controls-guide .rk-controls-cta::after {
    position: absolute;
    right: -55px;
    bottom: -80px;
    width: 220px;
    height: 220px;
    border: 34px solid rgba(255,255,255,.055);
    border-radius: 50%;
    content: "";
  }
  #rk-controls-guide .rk-controls-cta-title { position: relative; z-index: 1; max-width: 900px; margin-bottom: 10px; color: var(--rk-white); font-size: clamp(1.35rem, 3vw, 2.05rem); font-weight: 950; letter-spacing: -.035em; line-height: 1.16; }
  #rk-controls-guide .rk-controls-cta p { position: relative; z-index: 1; max-width: 900px; color: #d1e5eb; }
  #rk-controls-guide .rk-controls-cta-button {
    position: relative;
    z-index: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 52px;
    padding: 12px 20px;
    border-radius: 12px;
    color: var(--rk-dark);
    background: var(--rk-cyan);
    box-shadow: 0 10px 26px rgba(37,199,216,.23);
    font-size: .79rem;
    font-weight: 950;
    line-height: 1.3;
    text-align: center;
    text-decoration: none;
  }
  #rk-controls-guide .rk-controls-cta-button:hover,
  #rk-controls-guide .rk-controls-cta-button:focus-visible { color: var(--rk-white); background: var(--rk-orange); }
  #rk-controls-guide .rk-controls-mid-cta { margin: -35px 0 clamp(52px, 8vw, 88px); }
  #rk-controls-guide .rk-controls-final-cta { margin-top: 35px; }

  #rk-controls-guide .rk-controls-steps { counter-reset: rk-controls-step; display: grid; gap: 14px; }
  #rk-controls-guide .rk-controls-step {
    position: relative;
    padding: 21px 22px 21px 76px;
    border: 1px solid var(--rk-line);
    border-radius: 16px;
    background: var(--rk-white);
  }
  #rk-controls-guide .rk-controls-step::before {
    position: absolute;
    top: 20px;
    left: 20px;
    display: grid;
    place-items: center;
    width: 40px;
    height: 40px;
    border-radius: 12px;
    color: var(--rk-white);
    background: var(--rk-blue);
    content: counter(rk-controls-step);
    counter-increment: rk-controls-step;
    font-size: .8rem;
    font-weight: 950;
  }
  #rk-controls-guide .rk-controls-step p:last-child { margin-bottom: 0; }

  #rk-controls-guide .rk-controls-checklist { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 13px; margin: 0; padding: 0; list-style: none; }
  #rk-controls-guide .rk-controls-checklist li {
    position: relative;
    padding: 17px 17px 17px 50px;
    border: 1px solid var(--rk-line);
    border-radius: 14px;
    background: var(--rk-soft);
    color: var(--rk-text);
    font-size: .84rem;
    line-height: 1.5;
  }
  #rk-controls-guide .rk-controls-checklist li::before {
    position: absolute;
    top: 16px;
    left: 16px;
    display: grid;
    place-items: center;
    width: 24px;
    height: 24px;
    border-radius: 7px;
    color: var(--rk-white);
    background: var(--rk-green);
    content: "✓";
    font-size: .7rem;
    font-weight: 950;
  }

  #rk-controls-guide .rk-controls-faq { display: grid; gap: 11px; }
  #rk-controls-guide .rk-controls-faq details { overflow: hidden; border: 1px solid var(--rk-line); border-radius: 14px; background: var(--rk-white); }
  #rk-controls-guide .rk-controls-faq summary { position: relative; padding: 18px 54px 18px 20px; color: var(--rk-dark); cursor: pointer; font-weight: 880; line-height: 1.4; list-style: none; }
  #rk-controls-guide .rk-controls-faq summary::-webkit-details-marker { display: none; }
  #rk-controls-guide .rk-controls-faq summary::after { position: absolute; top: 50%; right: 20px; color: var(--rk-blue); content: "+"; font-size: 1.4rem; font-weight: 950; transform: translateY(-50%); }
  #rk-controls-guide .rk-controls-faq details[open] summary::after { content: "−"; }
  #rk-controls-guide .rk-controls-faq-answer { padding: 0 20px 19px; color: var(--rk-text); }
  #rk-controls-guide .rk-controls-faq-answer p:last-child { margin-bottom: 0; }
  #rk-controls-guide .rk-controls-sources { margin-bottom: 20px; padding-left: 25px; }
  #rk-controls-guide .rk-controls-sources li { margin-bottom: 9px; color: var(--rk-text); }

  #rk-controls-guide .rk-controls-author {
    overflow: hidden;
    margin-top: clamp(55px, 8vw, 90px);
    border: 1px solid var(--rk-line);
    border-radius: 22px;
    background: #f3f8fa;
  }
  #rk-controls-guide .rk-controls-author > input { position: absolute; opacity: 0; pointer-events: none; }
  #rk-controls-guide .rk-controls-author-head {
    display: flex;
    align-items: end;
    justify-content: space-between;
    gap: 20px;
    padding: 27px clamp(24px, 4vw, 42px);
    color: var(--rk-white);
    background: linear-gradient(135deg, #102536, #194e63);
  }
  #rk-controls-guide .rk-controls-author-head h2 { margin-bottom: 5px; color: var(--rk-white); }
  #rk-controls-guide .rk-controls-author-head p { margin-bottom: 0; color: #c7dce4; font-size: .8rem; }
  #rk-controls-guide .rk-controls-author-mark { max-width: 310px; color: #7ceeff; font-size: .61rem; font-weight: 900; letter-spacing: .055em; line-height: 1.45; text-align: right; text-transform: uppercase; }
  #rk-controls-guide .rk-controls-author-layout { display: grid; grid-template-columns: 290px minmax(0, 1fr); }
  #rk-controls-guide .rk-controls-author-side { padding: 34px 27px; color: #dbeaf0; background: #10293a; text-align: center; }
  #rk-controls-guide .rk-controls-author-photo { overflow: hidden; width: 154px; height: 154px; margin: 0 auto 20px; border: 6px solid #365366; border-radius: 50%; background: var(--rk-white); }
  #rk-controls-guide .rk-controls-author-photo img { display: block; width: 100%; height: 100%; object-fit: cover; }
  #rk-controls-guide .rk-controls-author-name { color: var(--rk-white); font-size: 1.16rem; font-weight: 950; }
  #rk-controls-guide .rk-controls-author-role { margin-top: 7px; color: #bfd5de; font-size: .7rem; line-height: 1.45; }
  #rk-controls-guide .rk-controls-author-social-label { margin: 27px 0 10px; color: #8daab6; font-size: .58rem; font-weight: 900; letter-spacing: .06em; text-transform: uppercase; }
  #rk-controls-guide .rk-controls-author-social { display: flex; justify-content: center; gap: 10px; }
  #rk-controls-guide .rk-controls-author-social a { display: grid; place-items: center; width: 44px; height: 44px; border: 1px solid #496b7c; border-radius: 50%; color: #d8ebf1; }
  #rk-controls-guide .rk-controls-author-social a:hover,
  #rk-controls-guide .rk-controls-author-social a:focus-visible { color: var(--rk-white); border-color: var(--rk-cyan); background: var(--rk-blue); }
  #rk-controls-guide .rk-controls-author-social svg { width: 20px; height: 20px; fill: currentColor; }
  #rk-controls-guide .rk-controls-author-main { padding: clamp(27px, 4.5vw, 45px); }
  #rk-controls-guide .rk-controls-author-quote { position: relative; margin: 0 0 25px; padding: 23px 25px 23px 68px; border: 1px solid var(--rk-line); border-radius: 16px; background: var(--rk-white); }
  #rk-controls-guide .rk-controls-author-quote::before { position: absolute; top: 13px; left: 24px; color: var(--rk-cyan); content: "“"; font-family: Georgia, serif; font-size: 3.8rem; font-weight: 900; line-height: 1; }
  #rk-controls-guide .rk-controls-author-quote p { margin-bottom: 0; color: var(--rk-dark); font-weight: 780; }
  #rk-controls-guide .rk-controls-author-tabs { display: flex; flex-wrap: wrap; gap: 9px; margin-bottom: 22px; }
  #rk-controls-guide .rk-controls-author-tab { padding: 8px 13px; border-radius: 999px; color: var(--rk-muted); background: #e3edf1; cursor: pointer; font-size: .67rem; font-weight: 900; }
  #rk-controls-guide .rk-controls-author-panel { display: none; color: var(--rk-text); }
  #rk-controls-guide #rk-controls-author-about:checked ~ .rk-controls-author-layout .rk-controls-author-panel-about,
  #rk-controls-guide #rk-controls-author-exp:checked ~ .rk-controls-author-layout .rk-controls-author-panel-exp,
  #rk-controls-guide #rk-controls-author-method:checked ~ .rk-controls-author-layout .rk-controls-author-panel-method { display: block; }
  #rk-controls-guide #rk-controls-author-about:checked ~ .rk-controls-author-layout label[for="rk-controls-author-about"],
  #rk-controls-guide #rk-controls-author-exp:checked ~ .rk-controls-author-layout label[for="rk-controls-author-exp"],
  #rk-controls-guide #rk-controls-author-method:checked ~ .rk-controls-author-layout label[for="rk-controls-author-method"] { color: var(--rk-white); background: var(--rk-blue); }
  #rk-controls-guide .rk-controls-site-links { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 13px; }
  #rk-controls-guide .rk-controls-site-links a { padding: 7px 10px; border-radius: 999px; background: #e5f3f7; font-size: .68rem; text-decoration: none; }

  @media (max-width: 900px) {
    #rk-controls-guide .rk-controls-hero-metrics,
    #rk-controls-guide .rk-controls-grid-3,
    #rk-controls-guide .rk-controls-grid-4,
    #rk-controls-guide .rk-controls-flow,
    #rk-controls-guide .rk-controls-score-grid,
    #rk-controls-guide .rk-controls-result-columns,
    #rk-controls-guide .rk-controls-system-path { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-controls-guide .rk-controls-flow-item:not(:last-child)::after,
    #rk-controls-guide .rk-controls-system-node:not(:last-child)::after { display: none; }
    #rk-controls-guide .rk-controls-author-layout { grid-template-columns: 240px minmax(0, 1fr); }
  }

  @media (max-width: 680px) {
    #rk-controls-guide { margin: 18px auto 44px; font-size: 16px; }
    #rk-controls-guide .rk-controls-shell { border-radius: 18px; }
    #rk-controls-guide .rk-controls-hero { padding: 34px 22px 31px; }
    #rk-controls-guide .rk-controls-hero-metrics,
    #rk-controls-guide .rk-controls-grid-2,
    #rk-controls-guide .rk-controls-grid-3,
    #rk-controls-guide .rk-controls-grid-4,
    #rk-controls-guide .rk-controls-flow,
    #rk-controls-guide .rk-controls-score-grid,
    #rk-controls-guide .rk-controls-result-columns,
    #rk-controls-guide .rk-controls-system-path,
    #rk-controls-guide .rk-controls-checklist { grid-template-columns: 1fr; }
    #rk-controls-guide .rk-controls-nav { grid-template-columns: 1fr; gap: 5px; }
    #rk-controls-guide .rk-controls-nav-label { padding: 0 0 4px 2px; }
    #rk-controls-guide .rk-controls-content { padding: 27px 19px; }
    #rk-controls-guide .rk-controls-table-wrap { overflow: visible; border: 0; box-shadow: none; background: transparent; }
    #rk-controls-guide .rk-controls-table,
    #rk-controls-guide .rk-controls-table tbody,
    #rk-controls-guide .rk-controls-table tr,
    #rk-controls-guide .rk-controls-table td { display: block; width: 100%; }
    #rk-controls-guide .rk-controls-table thead { display: none; }
    #rk-controls-guide .rk-controls-table tr { overflow: hidden; margin-bottom: 12px; border: 1px solid var(--rk-line); border-radius: 14px; background: var(--rk-white); box-shadow: 0 8px 22px rgba(16,37,54,.055); }
    #rk-controls-guide .rk-controls-table td { display: grid; grid-template-columns: minmax(112px, .85fr) minmax(0, 1.15fr); gap: 12px; padding: 13px 14px; border-bottom: 1px solid var(--rk-line); font-size: .8rem; }
    #rk-controls-guide .rk-controls-table td::before { color: var(--rk-dark); content: attr(data-label); font-size: .68rem; font-weight: 900; line-height: 1.35; }
    #rk-controls-guide .rk-controls-table tr:last-child td:last-child,
    #rk-controls-guide .rk-controls-table td:last-child { border-bottom: 0; }
    #rk-controls-guide .rk-controls-author-head { display: block; }
    #rk-controls-guide .rk-controls-author-mark { margin-top: 12px; text-align: left; }
    #rk-controls-guide .rk-controls-author-layout { grid-template-columns: 1fr; }
    #rk-controls-guide .rk-controls-author-quote { padding-left: 58px; }
    #rk-controls-guide .rk-controls-chart-wrap,
    #rk-controls-guide .rk-controls-chart-wrap canvas { min-height: 255px; height: 255px; }
  }

  @media (prefers-reduced-motion: reduce) {
    #rk-controls-guide *,
    #rk-controls-guide *::before,
    #rk-controls-guide *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; }
  }
</style>

<article id="rk-controls-guide" aria-label="Sterowniki do ogrzewania podłogowego — poradnik i analizator">
  <div class="rk-controls-progress" aria-hidden="true"></div>
  <div class="rk-controls-shell">
    <header class="rk-controls-hero">
      <span class="rk-controls-kicker">Automatyka bez obietnic z sufitu</span>
      <div class="rk-controls-hero-title">Sterowniki do podłogówki: <span>kiedy pomagają, a kiedy komplikują instalację?</span></div>
      <p class="rk-controls-lead">Termostat w każdym pokoju nie jest automatycznie najlepszym rozwiązaniem. Najpierw trzeba rozdzielić regulację temperatury wody, hydraulikę oraz sterowanie pomieszczeniami, a przy pompie ciepła dodatkowo zabezpieczyć minimalny przepływ i stabilną pracę źródła.</p>
      <div class="rk-controls-hero-tags" aria-label="Zakres artykułu">
        <span class="rk-controls-hero-tag">sterowanie pogodowe</span>
        <span class="rk-controls-hero-tag">termostaty pokojowe</span>
        <span class="rk-controls-hero-tag">siłowniki na rozdzielaczu</span>
        <span class="rk-controls-hero-tag">pompa ciepła i przepływ</span>
        <span class="rk-controls-hero-tag">bezwładność podłogi</span>
      </div>
      <div class="rk-controls-byline">
        <span><strong>Autor:</strong> Robert Kucharski</span>
        <span><strong>Aktualizacja techniczna:</strong> 31 sierpnia 2026 r.</span>
        <span><strong>Charakter narzędzia:</strong> analiza koncepcji, nie projekt wykonawczy</span>
      </div>
      <div class="rk-controls-hero-metrics" aria-label="Najważniejsze zasady">
        <div class="rk-controls-hero-metric"><b>Najpierw przepływy</b><span>Automatyka nie zastępuje regulacji hydraulicznej pętli.</span></div>
        <div class="rk-controls-hero-metric"><b>Potem strefy</b><span>Strefa ma sens wtedy, gdy ma własną funkcję albo inne zyski ciepła.</span></div>
        <div class="rk-controls-hero-metric"><b>Bez obietnicy procentów</b><span>Oszczędność zależy od stanu wyjściowego i sposobu użytkowania.</span></div>
      </div>
    </header>

    <nav class="rk-controls-nav" aria-label="Skróty do wszystkich części artykułu">
      <span class="rk-controls-nav-label">Na skróty</span>
      <div class="rk-controls-nav-track">
        <a href="#rk-controls-szybka">Szybka odpowiedź</a>
        <a href="#rk-controls-warstwy">Trzy warstwy</a>
        <a href="#rk-controls-podstawy">Najpierw podstawy</a>
        <a href="#rk-controls-analizator">Analizator</a>
        <a href="#rk-controls-kiedy-warto">Kiedy warto</a>
        <a href="#rk-controls-kiedy-nie">Kiedy nie</a>
        <a href="#rk-controls-hybryda">Hybryda</a>
        <a href="#rk-controls-pompa-ciepla">Pompa ciepła</a>
        <a href="#rk-controls-kotly">Inne źródła</a>
        <a href="#rk-controls-bezwladnosc">Bezwładność</a>
        <a href="#rk-controls-elementy">Elementy systemu</a>
        <a href="#rk-controls-czujnik">Czujnik podłogi</a>
        <a href="#rk-controls-przewodowe">Przewodowe czy radio</a>
        <a href="#rk-controls-strefy">Podział stref</a>
        <a href="#rk-controls-hydraulika">Hydraulika</a>
        <a href="#rk-controls-uruchomienie">Uruchomienie</a>
        <a href="#rk-controls-koszty">Koszty</a>
        <a href="#rk-controls-bledy">Błędy</a>
        <a href="#rk-controls-checklista">Checklista</a>
        <a href="#rk-controls-faq">FAQ</a>
        <a href="#rk-controls-zrodla">Źródła</a>
        <a href="#rk-controls-autor">Autor</a>
      </div>
    </nav>

    <div class="rk-controls-content">
      <section class="rk-controls-section" id="rk-controls-szybka">
        <div class="rk-controls-section-head">
          <span class="rk-controls-eyebrow">Werdykt bez skrótów myślowych</span>
          <h2>Czy warto montować sterowniki do ogrzewania podłogowego?</h2>
          <p>Warto wtedy, gdy automatyka rozwiązuje konkretny problem: różne temperatury, odmienne godziny użytkowania, duże zyski słoneczne, kominek albo konieczność ograniczenia temperatury posadzki. Nie warto traktować termostatów jako zamiennika projektu i regulacji przepływów.</p>
        </div>
        <div class="rk-controls-answer">
          <h3>Najczęściej najlepszy jest układ hybrydowy</h3>
          <p><strong>Regulacja pogodowa</strong> prowadzi temperaturę wody, <strong>nastawy hydrauliczne</strong> rozdzielają przepływ, a <strong>termostaty pokojowe</strong> ograniczają tylko te strefy, które rzeczywiście tego wymagają. W wielu domach nie trzeba zamykać każdej pętli w każdym pokoju.</p>
          <p>Przy pompie ciepła logika stref nie może powodować utraty minimalnego przepływu ani częstego taktowania. Przy ciężkiej, akumulacyjnej podłodze nie należy oczekiwać reakcji podobnej do grzejnika.</p>
        </div>
        <div class="rk-controls-grid-3" style="margin-top:18px">
          <div class="rk-controls-card rk-controls-card-green"><h3>Tak — pełne lub szerokie strefowanie</h3><p>Gdy pomieszczenia mają wyraźnie różne nastawy, harmonogramy i zyski ciepła, a hydraulika została do tego przygotowana.</p></div>
          <div class="rk-controls-card rk-controls-card-blue"><h3>Tak — ale selektywnie</h3><p>Gdy problem dotyczy kilku pomieszczeń: salonu z przeszkleniami, sypialni, łazienki albo pokoju gościnnego.</p></div>
          <div class="rk-controls-card rk-controls-card-orange"><h3>Najpierw nie</h3><p>Gdy nie znamy przepływów, krzywa grzewcza jest źle ustawiona, a termostaty mają jedynie maskować przegrzewanie całej instalacji.</p></div>
        </div>
      </section>

      <section class="rk-controls-section" id="rk-controls-warstwy">
        <div class="rk-controls-section-head">
          <span class="rk-controls-eyebrow">Jedno słowo, trzy różne zadania</span>
          <h2>Sterownik pogodowy, hydraulika i termostat pokojowy</h2>
          <p>Hasło „sterownik do podłogówki” bywa używane dla elementów, które wykonują zupełnie inne zadania. Dopiero ich właściwa kolejność daje stabilną instalację.</p>
        </div>
        <div class="rk-controls-flow">
          <div class="rk-controls-flow-item">
            <div class="rk-controls-number">1</div>
            <h3>Temperatura wody</h3>
            <p>Automatyka źródła lub mieszacza dobiera temperaturę zasilania do warunków zewnętrznych. To ona ustala poziom energii dostępnej dla całej podłogi.</p>
          </div>
          <div class="rk-controls-flow-item">
            <div class="rk-controls-number">2</div>
            <h3>Przepływy w pętlach</h3>
            <p>Pompa, średnice, długości obwodów i nastawy rotametrów rozdzielają wodę zgodnie z wymaganiami pomieszczeń.</p>
          </div>
          <div class="rk-controls-flow-item">
            <div class="rk-controls-number">3</div>
            <h3>Ograniczanie stref</h3>
            <p>Termostat wysyła sygnał do listwy, a siłownik otwiera albo zamyka przypisane pętle. Nie wyznacza jednak ich prawidłowego przepływu.</p>
          </div>
        </div>
        <div class="rk-controls-note" style="margin-top:18px"><p><strong>Ważne:</strong> sterowanie pokojowe działa na końcu łańcucha. Jeśli temperatura zasilania jest za wysoka albo przepływy są przypadkowe, częste zamykanie pętli nie usuwa przyczyny problemu.</p></div>
      </section>

      <section class="rk-controls-section" id="rk-controls-podstawy">
        <div class="rk-controls-section-head">
          <span class="rk-controls-eyebrow">Warunki wejściowe</span>
          <h2>Co powinno działać przed montażem termostatów i siłowników?</h2>
          <p>Automatyka powinna zarządzać poprawnie przygotowaną instalacją, a nie pełnić funkcję awaryjnego regulatora źle dobranych parametrów.</p>
        </div>
        <div class="rk-controls-grid-2">
          <div class="rk-controls-card rk-controls-card-blue">
            <h3>Obliczenia i wykonanie</h3>
            <ul>
              <li>straty ciepła obliczone dla pomieszczeń,</li>
              <li>rozstaw rur wynikający z wymaganej mocy,</li>
              <li>długości pętli i dobiegów,</li>
              <li>projektowe przepływy oraz nastawy rozdzielacza,</li>
              <li>jednoznaczne przypisanie pętli do pomieszczeń.</li>
            </ul>
          </div>
          <div class="rk-controls-card rk-controls-card-orange">
            <h3>Źródło i hydraulika</h3>
            <ul>
              <li>ustalona temperatura lub krzywa grzewcza,</li>
              <li>dobrana pompa obiegowa,</li>
              <li>zapewniony minimalny przepływ i wymagana objętość,</li>
              <li>określona reakcja źródła na zamykanie stref,</li>
              <li>zweryfikowane ograniczenia temperatury posadzki.</li>
            </ul>
          </div>
        </div>
        <p style="margin-top:19px">Jeżeli nie znasz przepływów, zacznij od opracowania o <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">odczycie i ustawianiu rotametrów</a>. Sama liczba termostatów nie odpowie też na pytanie, czy pompa poradzi sobie po zamknięciu części obwodów — do tego służą obliczenia opisane w <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">kalkulatorze doboru pompy obiegowej</a>.</p>
      </section>

      <section class="rk-controls-section" id="rk-controls-analizator">
        <div class="rk-controls-section-head">
          <span class="rk-controls-eyebrow">Narzędzie decyzyjne</span>
          <h2>Interaktywny analizator sterowania ogrzewaniem podłogowym</h2>
          <p>Wybierz warunki swojej instalacji. Analizator nie liczy fikcyjnego ROI. Oddzielnie ocenia korzyść z podziału na strefy, bezwładność, ryzyko hydrauliczne i pilność uporządkowania podstaw.</p>
        </div>

        <div class="rk-controls-analyzer" data-rk-controls-analyzer="">
          <div class="rk-controls-analyzer-head">
            <span class="rk-controls-eyebrow">Sterowanie centralne, selektywne czy pełne strefowanie?</span>
            <h3>Sprawdź koncepcję, zanim kupisz termostaty i siłowniki</h3>
            <p>Wynik jest modelem kwalifikacyjnym. Nie zastępuje minimalnego przepływu z dokumentacji źródła, obliczeń oporów pętli ani projektu automatyki.</p>
          </div>
          <div class="rk-controls-analyzer-body">
            <div class="rk-controls-input-group">
              <h4>1. Źródło ciepła i układ hydrauliczny</h4>
              <p>Te dane decydują, jak groźne może być jednoczesne zamknięcie wielu pętli.</p>
              <div class="rk-controls-fields">
                <div class="rk-controls-field">
                  <label for="rk-controls-source">Źródło ciepła</label>
                  <select id="rk-controls-source">
                    <option value="heat-pump" selected="">Pompa ciepła</option>
                    <option value="gas">Kocioł gazowy kondensacyjny</option>
                    <option value="pellet">Kocioł na pellet lub paliwo stałe</option>
                    <option value="electric">Kocioł elektryczny</option>
                    <option value="other">Inne lub jeszcze nie wybrane</option>
                  </select>
                </div>
                <div class="rk-controls-field">
                  <label for="rk-controls-weather">Sterowanie temperaturą zasilania</label>
                  <select id="rk-controls-weather">
                    <option value="yes" selected="">Regulacja pogodowa jest lub będzie</option>
                    <option value="no">Stała temperatura bez pogodówki</option>
                    <option value="unknown">Nie wiem</option>
                  </select>
                </div>
                <div class="rk-controls-field">
                  <label for="rk-controls-layout">Połączenie źródła z podłogówką</label>
                  <select id="rk-controls-layout">
                    <option value="direct" selected="">Układ bezpośredni</option>
                    <option value="buffer">Bufor lub układ zapewniający objętość</option>
                    <option value="separated">Rozdzielenie hydrauliczne obiegów</option>
                    <option value="unknown">Nie wiem</option>
                  </select>
                </div>
                <div class="rk-controls-field">
                  <label for="rk-controls-min-flow">Minimalny przepływ źródła</label>
                  <select id="rk-controls-min-flow">
                    <option value="secured">Znany i zapewniony po zamknięciu stref</option>
                    <option value="not-secured">Znany, ale może nie być zapewniony</option>
                    <option value="unknown" selected="">Nie znam tej wartości</option>
                    <option value="not-applicable">Nie dotyczy bezpośrednio obiegu podłogi</option>
                  </select>
                  <span class="rk-controls-help">Nie wpisujemy uniwersalnej wartości — wynika ona z wymagań źródła i hydrauliki.</span>
                </div>
              </div>
            </div>

            <div class="rk-controls-input-group">
              <h4>2. Budynek, podłoga i sposób użytkowania</h4>
              <p>Strefowanie jest bardziej uzasadnione, gdy pomieszczenia naprawdę różnią się funkcją albo zyskami ciepła.</p>
              <div class="rk-controls-fields">
                <div class="rk-controls-field">
                  <label for="rk-controls-building">Charakter budynku</label>
                  <select id="rk-controls-building">
                    <option value="low">Bardzo energooszczędny, stabilny cieplnie</option>
                    <option value="standard" selected="">Nowy lub dobrze ocieplony dom</option>
                    <option value="renovation">Modernizowany budynek o większych stratach</option>
                  </select>
                </div>
                <div class="rk-controls-field">
                  <label for="rk-controls-mass">Konstrukcja ogrzewanej podłogi</label>
                  <select id="rk-controls-mass">
                    <option value="light">Lekki lub suchy system</option>
                    <option value="standard" selected="">Standardowy jastrych mokry</option>
                    <option value="heavy">Gruba płyta lub bardzo duża akumulacja</option>
                  </select>
                </div>
                <div class="rk-controls-field">
                  <label for="rk-controls-temperature-diversity">Różnice wymaganych temperatur</label>
                  <select id="rk-controls-temperature-diversity">
                    <option value="same">Prawie wszędzie ta sama temperatura</option>
                    <option value="moderate" selected="">Kilka pomieszczeń ma inną nastawę</option>
                    <option value="different">Wyraźnie różne temperatury i funkcje</option>
                  </select>
                </div>
                <div class="rk-controls-field">
                  <label for="rk-controls-gains">Zyski słoneczne, kominek i urządzenia</label>
                  <select id="rk-controls-gains">
                    <option value="low">Małe i równomierne</option>
                    <option value="medium" selected="">Umiarkowane lub okresowe</option>
                    <option value="high">Duże przeszklenia, kominek albo silne zyski</option>
                  </select>
                </div>
                <div class="rk-controls-field">
                  <label for="rk-controls-usage">Sposób użytkowania pomieszczeń</label>
                  <select id="rk-controls-usage">
                    <option value="constant">Stałe użytkowanie i jeden profil dobowy</option>
                    <option value="variable" selected="">Różne godziny użytkowania</option>
                    <option value="seasonal">Pokoje gościnne lub strefy okresowe</option>
                  </select>
                </div>
                <div class="rk-controls-field">
                  <label for="rk-controls-floor">Okładzina i potrzeba ogranicznika podłogi</label>
                  <select id="rk-controls-floor">
                    <option value="insensitive" selected="">Płytki lub brak szczególnego limitu</option>
                    <option value="sensitive">Drewno, winyl lub zadeklarowany limit</option>
                    <option value="unknown">Nie znam wymagań okładziny</option>
                  </select>
                </div>
              </div>
            </div>

            <div class="rk-controls-input-group">
              <h4>3. Pętle, regulacja i możliwość montażu</h4>
              <p>Duża liczba pętli sterowanych siłownikami zwiększa zakres kontroli, ale może też zwiększać ryzyko utraty przepływu.</p>
              <div class="rk-controls-fields">
                <div class="rk-controls-field">
                  <label for="rk-controls-loops">Łączna liczba pętli</label>
                  <input id="rk-controls-loops" type="number" min="1" max="60" step="1" value="12" inputmode="numeric">
                </div>
                <div class="rk-controls-field">
                  <label for="rk-controls-controlled-loops">Pętle planowane do sterowania siłownikami</label>
                  <input id="rk-controls-controlled-loops" type="number" min="0" max="60" step="1" value="8" inputmode="numeric">
                  <span class="rk-controls-help">To nie znaczy, że wszystkie zamkną się jednocześnie — analizator pokazuje wariant ostrożnościowy.</span>
                </div>
                <div class="rk-controls-field">
                  <label for="rk-controls-balance">Regulacja hydrauliczna pętli</label>
                  <select id="rk-controls-balance">
                    <option value="documented">Mam projektowe przepływy i nastawy</option>
                    <option value="adjusted" selected="">Przepływy zostały wyregulowane w praktyce</option>
                    <option value="unknown">Nie wiem, jakie powinny być przepływy</option>
                    <option value="none">Nie wykonano regulacji</option>
                  </select>
                </div>
                <div class="rk-controls-field">
                  <label for="rk-controls-wiring">Etap instalacji</label>
                  <select id="rk-controls-wiring">
                    <option value="wired" selected="">Budowa — można ułożyć przewody</option>
                    <option value="retrofit">Dom wykończony — bez kucia ścian</option>
                    <option value="flexible">Oba rozwiązania są możliwe</option>
                  </select>
                </div>
              </div>
            </div>

            <div id="rk-controls-error" class="rk-controls-error" role="alert"></div>
            <div class="rk-controls-actions">
              <button id="rk-controls-calculate" class="rk-controls-button" type="button">Przeanalizuj koncepcję</button>
              <button id="rk-controls-reset" class="rk-controls-button rk-controls-button-secondary" type="button">Przywróć dane przykładowe</button>
            </div>

            <div class="rk-controls-result-hero is-selective" id="rk-controls-result-hero" aria-live="polite">
              <span class="rk-controls-result-badge" id="rk-controls-result-badge">Wynik analizatora</span>
              <h4 id="rk-controls-result-title">Hybryda: sterowanie tylko tam, gdzie jest potrzebne</h4>
              <p id="rk-controls-result-lead">Regulacja pogodowa i wyregulowane przepływy powinny prowadzić instalację, a termostaty mogą ograniczać wybrane pomieszczenia o innych zyskach lub harmonogramach.</p>
            </div>

            <div class="rk-controls-score-grid" aria-label="Cztery niezależne oceny analizatora">
              <div class="rk-controls-score-card">
                <span>Korzyść z różnicowania stref</span>
                <strong id="rk-controls-benefit-label">Umiarkowana</strong>
                <div class="rk-controls-score-track"><div id="rk-controls-benefit-bar" class="rk-controls-score-fill"></div></div>
              </div>
              <div class="rk-controls-score-card">
                <span>Bezwładność podłogi</span>
                <strong id="rk-controls-inertia-label">Średnia</strong>
                <div class="rk-controls-score-track"><div id="rk-controls-inertia-bar" class="rk-controls-score-fill is-purple"></div></div>
              </div>
              <div class="rk-controls-score-card">
                <span>Ryzyko hydrauliczne</span>
                <strong id="rk-controls-hydraulic-label">Podwyższone</strong>
                <div class="rk-controls-score-track"><div id="rk-controls-hydraulic-bar" class="rk-controls-score-fill is-orange"></div></div>
              </div>
              <div class="rk-controls-score-card">
                <span>Priorytet uporządkowania podstaw</span>
                <strong id="rk-controls-foundation-label">Do sprawdzenia</strong>
                <div class="rk-controls-score-track"><div id="rk-controls-foundation-bar" class="rk-controls-score-fill is-green"></div></div>
              </div>
            </div>

            <div class="rk-controls-result-columns">
              <div class="rk-controls-result-list"><h4>Co zrobić</h4><ul id="rk-controls-recommendations"></ul></div>
              <div class="rk-controls-result-list"><h4>Co może być potrzebne</h4><ul id="rk-controls-components"></ul></div>
              <div class="rk-controls-result-list"><h4>Co koniecznie sprawdzić</h4><ul id="rk-controls-risks"></ul></div>
            </div>

            <div class="rk-controls-result-block">
              <h4>Jak powinna wyglądać kolejność sterowania?</h4>
              <p>Kolory i opisy zmieniają się wraz z wynikiem. Schemat pokazuje logikę funkcjonalną, a nie połączenia elektryczne.</p>
              <div class="rk-controls-system-path" aria-label="Dynamiczna ścieżka sterowania instalacją">
                <div class="rk-controls-system-node"><b>Źródło ciepła</b><span id="rk-controls-path-source">Pompa ciepła prowadzona pogodowo</span><em class="rk-controls-system-state" id="rk-controls-state-source">baza systemu</em></div>
                <div class="rk-controls-system-node"><b>Hydraulika</b><span id="rk-controls-path-hydraulic">Minimalny przepływ wymaga potwierdzenia</span><em class="rk-controls-system-state is-warn" id="rk-controls-state-hydraulic">sprawdź przepływ</em></div>
                <div class="rk-controls-system-node"><b>Rozdzielacz</b><span id="rk-controls-path-distribution">Projektowe lub wyregulowane przepływy pętli</span><em class="rk-controls-system-state" id="rk-controls-state-distribution">nie zastępuj automatyką</em></div>
                <div class="rk-controls-system-node"><b>Pomieszczenia</b><span id="rk-controls-path-zones">Wybrane strefy z termostatami i siłownikami</span><em class="rk-controls-system-state" id="rk-controls-state-zones">sterowanie selektywne</em></div>
              </div>
            </div>

            <div class="rk-controls-chart-box">
              <h4>Co dzieje się po zamknięciu siłownika?</h4>
              <p id="rk-controls-chart-description">W modelu referencyjnym przepływ zostaje odcięty po 2 godzinach, ale standardowy jastrych nadal oddaje wcześniej zgromadzone ciepło. Wykres pokazuje względną reakcję, a nie temperaturę konkretnego domu.</p>
              <div class="rk-controls-chart-wrap"><canvas id="rk-controls-response-chart" aria-label="Referencyjny wykres sygnału siłownika i opóźnionej emisji ciepła podłogi"></canvas></div>
              <div class="rk-controls-chart-legend"><span class="rk-controls-chart-key">sygnał grzania i przepływu</span><span class="rk-controls-chart-key is-orange">względna emisja podłogi</span></div>
            </div>

            <div id="rk-controls-diagnostics" class="rk-controls-diagnostics" aria-live="polite"></div>
            <p class="rk-controls-analyzer-disclaimer">Analizator nie oblicza oszczędności energii, nie dobiera liczby siłowników i nie potwierdza zgodności z konkretnym źródłem. Wynik służy do uporządkowania decyzji przed projektem i doborem automatyki.</p>
          </div>
        </div>
      </section>

      <aside class="rk-controls-cta rk-controls-mid-cta" aria-label="Zamówienie projektu przygotowanego pod sterowanie">
        <div class="rk-controls-cta-title">Analizator wskazuje kierunek, ale nie zna oporów i przepływów Twoich pętli</div>
        <p>Jeżeli termostaty mają sterować siłownikami, ich podział trzeba powiązać z długościami obwodów, nastawami rozdzielacza, pompą obiegową i wymaganiami źródła. Projekt określa również, które pętle mogą się zamykać i jak zachować stabilny przepływ.</p>
        <a class="rk-controls-cta-button rk-controls-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt podłogówki przygotowany pod sterowanie</a>
      </aside>

      <section class="rk-controls-section" id="rk-controls-kiedy-warto">
        <div class="rk-controls-section-head">
          <span class="rk-controls-eyebrow">Rzeczywiste powody</span>
          <h2>Kiedy pełne sterowanie strefowe ma sens?</h2>
          <p>Najmocniejszym argumentem nie jest sama powierzchnia domu, lecz różnica między wymaganiami poszczególnych pomieszczeń.</p>
        </div>
        <div class="rk-controls-table-wrap">
          <table class="rk-controls-table">
            <thead><tr><th>Sytuacja</th><th>Dlaczego sterowanie może pomóc</th><th>Na co uważać</th></tr></thead>
            <tbody>
              <tr><td data-label="Sytuacja"><strong>Łazienka i sypialnie</strong></td><td data-label="Możliwa korzyść">Pomieszczenia mogą mieć odmienne temperatury komfortu i różny rytm użytkowania.</td><td data-label="Na co uważać">Wspólna pętla dla kilku pomieszczeń uniemożliwi ich niezależne sterowanie.</td></tr>
              <tr><td data-label="Sytuacja"><strong>Salon z dużym przeszkleniem</strong></td><td data-label="Możliwa korzyść">Termostat może ograniczyć dalsze zasilanie strefy podczas silnych zysków słonecznych.</td><td data-label="Na co uważać">Jastrych nadal oddaje ciepło po zamknięciu przepływu.</td></tr>
              <tr><td data-label="Sytuacja"><strong>Kominek lub inne źródło miejscowe</strong></td><td data-label="Możliwa korzyść">Ograniczenie podłogi w ogrzanej części domu zmniejsza nakładanie się źródeł.</td><td data-label="Na co uważać">Ciepło może przemieszczać się do sąsiednich stref i zakłócać odczyty.</td></tr>
              <tr><td data-label="Sytuacja"><strong>Pokój gościnny i pomieszczenia okresowe</strong></td><td data-label="Możliwa korzyść">Można utrzymywać inną temperaturę przez dłuższy okres, a nie tylko przez kilka godzin.</td><td data-label="Na co uważać">Powrót do komfortu jest wolniejszy niż przy grzejniku.</td></tr>
              <tr><td data-label="Sytuacja"><strong>Różne kondygnacje i ekspozycje</strong></td><td data-label="Możliwa korzyść">Strefy mogą mieć inne zyski i inną dynamikę cieplną.</td><td data-label="Na co uważać">Najpierw trzeba wykluczyć błąd przepływów między rozdzielaczami.</td></tr>
            </tbody>
          </table>
        </div>
      </section>

      <section class="rk-controls-section" id="rk-controls-kiedy-nie">
        <div class="rk-controls-section-head">
          <span class="rk-controls-eyebrow">Mniej elektroniki może działać lepiej</span>
          <h2>Kiedy sterowniki pokojowe mogą niewiele zmienić?</h2>
          <p>Nie każda pętla potrzebuje cyklicznego zamykania. W stabilnym budynku dobrze ustawiona temperatura wody i przepływy często wykonują większość pracy.</p>
        </div>
        <div class="rk-controls-grid-2">
          <div class="rk-controls-card rk-controls-card-blue"><h3>Jedna strefa funkcjonalna</h3><p>Mały dom, mieszkanie albo otwarty parter z podobną temperaturą we wszystkich częściach nie zawsze uzasadnia osobny termostat dla każdej pętli.</p></div>
          <div class="rk-controls-card rk-controls-card-purple"><h3>Ciężka płyta grzewcza</h3><p>Duża masa akumulacyjna reaguje wolno. Krótkie harmonogramy i szybkie przełączanie mogą nie zdążyć wpłynąć na komfort w oczekiwanym czasie.</p></div>
          <div class="rk-controls-card rk-controls-card-green"><h3>Dobrze ustawiona pogodówka</h3><p>Jeżeli źródło dostarcza dokładnie tyle ciepła, ile aktualnie potrzebuje budynek, termostaty mogą pełnić głównie funkcję ograniczników.</p></div>
          <div class="rk-controls-card rk-controls-card-orange"><h3>Niewyregulowana instalacja</h3><p>Gdy jedne pomieszczenia są zimne, a inne gorące z powodu błędnych przepływów, siłowniki mogą ukryć objaw bez usunięcia przyczyny.</p></div>
        </div>
        <div class="rk-controls-warning" style="margin-top:18px"><p><strong>Brak pełnego strefowania nie oznacza braku regulacji.</strong> Instalacja nadal potrzebuje kontroli temperatury zasilania, prawidłowej pracy pompy i wyważenia przepływów.</p></div>
      </section>

      <section class="rk-controls-section" id="rk-controls-hybryda">
        <div class="rk-controls-section-head">
          <span class="rk-controls-eyebrow">Rozwiązanie pośrednie</span>
          <h2>Sterowanie selektywne: termostaty tylko w wybranych strefach</h2>
          <p>Układ hybrydowy zachowuje stabilną bazę hydrauliczną i dodaje automatykę tam, gdzie pomieszczenie rzeczywiście zachowuje się inaczej.</p>
        </div>
        <div class="rk-controls-grid-3">
          <div class="rk-controls-card rk-controls-card-blue"><h3>Pętle referencyjne</h3><p>Część prawidłowo wyregulowanych obwodów może pozostać otwarta, jeśli jest to zgodne z koncepcją hydrauliki i wymaganiami źródła.</p></div>
          <div class="rk-controls-card rk-controls-card-green"><h3>Strefy problematyczne</h3><p>Siłowniki obsługują salon z dużymi zyskami, sypialnie o niższej nastawie, łazienkę albo rzadko używane pokoje.</p></div>
          <div class="rk-controls-card rk-controls-card-purple"><h3>Pogodówka jako baza</h3><p>Źródło nadal reguluje temperaturę wody według warunków zewnętrznych, zamiast czekać wyłącznie na sygnał jednego termostatu.</p></div>
        </div>
        <p style="margin-top:18px">Szczegółową budowę listwy, termostatów i siłowników opisuje osobny poradnik o tym, <a href="https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/">jak działa sterowanie strefowe ogrzewaniem</a>. Ten artykuł pozostaje przewodnikiem decyzyjnym i nie dubluje instrukcji podłączania.</p>
      </section>

      <section class="rk-controls-section" id="rk-controls-pompa-ciepla">
        <div class="rk-controls-section-head">
          <span class="rk-controls-eyebrow">Najczęstszy punkt sporny</span>
          <h2>Sterowniki do podłogówki przy pompie ciepła</h2>
          <p>Pompa ciepła może współpracować ze strefami, ale zamykanie obwodów musi być podporządkowane minimalnemu przepływowi, objętości instalacji i logice modulacji urządzenia.</p>
        </div>
        <div class="rk-controls-grid-2">
          <div class="rk-controls-card rk-controls-card-green">
            <h3>Co zwykle sprzyja efektywności?</h3>
            <ul>
              <li>możliwie niska temperatura zasilania,</li>
              <li>długa i spokojna praca zamiast częstych startów,</li>
              <li>regulacja pogodowa dopasowana do budynku,</li>
              <li>stabilny przepływ przez wymiennik i instalację,</li>
              <li>łagodne ograniczanie wybranych pomieszczeń.</li>
            </ul>
          </div>
          <div class="rk-controls-card rk-controls-card-orange">
            <h3>Co może pogorszyć pracę?</h3>
            <ul>
              <li>zamknięcie większości pętli jednocześnie,</li>
              <li>brak odbioru minimalnej mocy źródła,</li>
              <li>agresywne obniżenia i szybkie dogrzewanie,</li>
              <li>sterowanie typu włącz–wyłącz całym domem,</li>
              <li>próba naprawienia złych przepływów siłownikami.</li>
            </ul>
          </div>
        </div>
        <div class="rk-controls-note" style="margin-top:18px"><p><strong>Bufor nie jest automatyczną odpowiedzią.</strong> Czasem wystarczą prawidłowo otwarte obwody i zachowanie wymaganej objętości, a czasem potrzebny jest bufor, obejście lub rozdzielenie obiegów. Decyzję podejmuje się na podstawie hydrauliki oraz wymagań źródła, a nie jednej liczby litrów na kW.</p></div>
      </section>

      <section class="rk-controls-section" id="rk-controls-kotly">
        <div class="rk-controls-section-head">
          <span class="rk-controls-eyebrow">Kocioł gazowy, pelletowy i elektryczny</span>
          <h2>Czy rodzaj źródła zmienia sposób sterowania strefami?</h2>
          <p>Termostat nadal otwiera albo zamyka obwód, ale źródła różnią się modulacją, temperaturą roboczą, bezwładnością i reakcją na utratę odbioru ciepła.</p>
        </div>
        <div class="rk-controls-table-wrap">
          <table class="rk-controls-table">
            <thead><tr><th>Źródło</th><th>Najważniejsza zasada</th><th>Typowe ryzyko</th></tr></thead>
            <tbody>
              <tr><td data-label="Źródło"><strong>Kocioł gazowy kondensacyjny</strong></td><td data-label="Najważniejsza zasada">Wykorzystać modulację i pogodowe prowadzenie niskiej temperatury wody.</td><td data-label="Typowe ryzyko">Mały odbiór po zamknięciu stref może prowadzić do częstych startów.</td></tr>
              <tr><td data-label="Źródło"><strong>Kocioł na pellet</strong></td><td data-label="Najważniejsza zasada">Oddzielić wymagania obiegu kotłowego od niskotemperaturowej podłogówki.</td><td data-label="Typowe ryzyko">Źródło o większej bezwładności nie powinno tracić odbioru w sposób przypadkowy.</td></tr>
              <tr><td data-label="Źródło"><strong>Kocioł elektryczny</strong></td><td data-label="Najważniejsza zasada">Koordynować sygnał zapotrzebowania z pompą i liczbą otwartych obwodów.</td><td data-label="Typowe ryzyko">Proste sterowanie włącz–wyłącz może zwiększać liczbę cykli.</td></tr>
              <tr><td data-label="Źródło"><strong>Sieć lub inne źródło</strong></td><td data-label="Najważniejsza zasada">Sprawdzić warunki temperaturowe i hydrauliczne konkretnego węzła.</td><td data-label="Typowe ryzyko">Brak jednej uniwersalnej logiki dla wszystkich układów.</td></tr>
            </tbody>
          </table>
        </div>
      </section>

      <section class="rk-controls-section" id="rk-controls-bezwladnosc">
        <div class="rk-controls-section-head">
          <span class="rk-controls-eyebrow">Siłownik zamyka wodę, nie energię w jastrychu</span>
          <h2>Bezwładność ogrzewania podłogowego a termostat</h2>
          <p>Po odcięciu przepływu ciepła podłoga nadal oddaje energię zmagazynowaną w konstrukcji. Im cięższa płyta, tym ostrożniej należy podchodzić do harmonogramów i dużych obniżeń temperatury.</p>
        </div>
        <div class="rk-controls-grid-3">
          <div class="rk-controls-card rk-controls-card-green"><h3>System lekki lub suchy</h3><p>Mniejsza masa może szybciej reagować na zmianę zasilania, ale dokładna dynamika zależy od całej konstrukcji i okładziny.</p></div>
          <div class="rk-controls-card rk-controls-card-blue"><h3>Standardowy jastrych</h3><p>Regulator powinien uwzględniać opóźnienie. Krótkie wyłączenia nie muszą powodować zauważalnej zmiany temperatury pokoju.</p></div>
          <div class="rk-controls-card rk-controls-card-purple"><h3>Gruba płyta akumulacyjna</h3><p>Najważniejsze jest łagodne prowadzenie temperatury. Duże obniżenia dobowe mogą działać zbyt późno względem planu użytkownika.</p></div>
        </div>
        <div class="rk-controls-warning" style="margin-top:18px"><p><strong>Nie ustawiamy z artykułu uniwersalnego cyklu PWM, TPI ani histerezy.</strong> Parametry regulatora trzeba dopasować do instrukcji automatyki, czasu pracy siłownika oraz obserwowanej reakcji konkretnej podłogi.</p></div>
      </section>

      <section class="rk-controls-section" id="rk-controls-elementy">
        <div class="rk-controls-section-head">
          <span class="rk-controls-eyebrow">Co rzeczywiście kupujesz?</span>
          <h2>Termostat, listwa, siłownik i sygnał do źródła</h2>
          <p>Kompletny system to nie sam panel na ścianie. Wszystkie elementy muszą mieć zgodne napięcie, sposób komunikacji i logikę działania.</p>
        </div>
        <div class="rk-controls-grid-4">
          <div class="rk-controls-card rk-controls-card-blue"><h3>Termostat</h3><p>Mierzy temperaturę w reprezentatywnym miejscu i przekazuje zapotrzebowanie strefy. Może także obsługiwać czujnik podłogowy.</p></div>
          <div class="rk-controls-card rk-controls-card-purple"><h3>Listwa sterująca</h3><p>Zbiera sygnały z pomieszczeń, zasila siłowniki i może sterować pompą lub przekazywać żądanie grzania.</p></div>
          <div class="rk-controls-card rk-controls-card-green"><h3>Siłownik</h3><p>Zmienia położenie zaworu na belce rozdzielacza. Typ NC albo NO musi być zgodny z projektem i logiką listwy.</p></div>
          <div class="rk-controls-card rk-controls-card-orange"><h3>Źródło i pompa</h3><p>Muszą otrzymać właściwy sygnał oraz zachować dopuszczalny czas pracy, przepływ i odbiór energii.</p></div>
        </div>
        <h3 style="margin-top:27px">NC czy NO?</h3>
        <p>Siłownik NC jest zamknięty bez zasilania, a NO pozostaje wtedy otwarty. Nie ma jednej odpowiedzi odpowiedniej dla każdej instalacji. Trzeba ocenić stan bezpieczny przy zaniku napięcia, zgodność listwy, pobór energii i oczekiwaną pracę zaworów. NC jest często spotykany, ale sama popularność nie zastępuje sprawdzenia kompatybilności.</p>
      </section>

      <section class="rk-controls-section" id="rk-controls-czujnik">
        <div class="rk-controls-section-head">
          <span class="rk-controls-eyebrow">Temperatura powietrza i powierzchni to dwa różne pomiary</span>
          <h2>Czy potrzebny jest czujnik temperatury podłogi?</h2>
          <p>Czujnik podłogowy może pełnić funkcję ogranicznika albo wspomagać komfort. Nie jest jednak automatycznie obowiązkowy przy każdej okładzinie i nie zastępuje prawidłowego ograniczenia temperatury wody.</p>
        </div>
        <div class="rk-controls-grid-2">
          <div class="rk-controls-card rk-controls-card-green">
            <h3>Kiedy jest szczególnie przydatny?</h3>
            <ul>
              <li>gdy dokumentacja okładziny podaje maksymalną temperaturę,</li>
              <li>w pomieszczeniu, gdzie ważna jest minimalna temperatura komfortowa podłogi,</li>
              <li>gdy regulator obsługuje jednocześnie czujnik powietrza i ograniczenie podłogi,</li>
              <li>w układzie wymagającym dodatkowej kontroli lokalnej.</li>
            </ul>
          </div>
          <div class="rk-controls-card rk-controls-card-orange">
            <h3>Czego czujnik nie gwarantuje?</h3>
            <ul>
              <li>nie mierzy najwyższej temperatury całej powierzchni,</li>
              <li>nie naprawia zbyt wysokiej temperatury zasilania,</li>
              <li>nie zastępuje ograniczeń konstrukcji podłogi,</li>
              <li>nie powinien być zabetonowany bez możliwości wymiany.</li>
            </ul>
          </div>
        </div>
        <div class="rk-controls-note" style="margin-top:18px"><p>Czujnik umieszcza się zgodnie z instrukcją systemu, zwykle w wymiennym peszlu i w reprezentatywnym miejscu między przewodami. Limit należy przyjąć z dokumentacji konkretnej okładziny, a nie z jednej wartości powtarzanej dla wszystkich paneli i podłóg drewnianych. Więcej o granicach pracy znajdziesz w opracowaniu o <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">maksymalnej temperaturze zasilania podłogówki</a>.</p></div>
      </section>

      <section class="rk-controls-section" id="rk-controls-przewodowe">
        <div class="rk-controls-section-head">
          <span class="rk-controls-eyebrow">Nowa budowa i modernizacja</span>
          <h2>Sterowanie przewodowe czy bezprzewodowe?</h2>
          <p>Nie będziemy przypisywać systemom fikcyjnych procentów niezawodności. Wybór zależy od etapu inwestycji, możliwości prowadzenia przewodów i akceptowanej obsługi.</p>
        </div>
        <div class="rk-controls-table-wrap">
          <table class="rk-controls-table">
            <thead><tr><th>Kryterium</th><th>System przewodowy</th><th>System bezprzewodowy</th></tr></thead>
            <tbody>
              <tr><td data-label="Kryterium"><strong>Najlepszy etap</strong></td><td data-label="Przewodowy">Budowa lub generalny remont przed wykonaniem tynków.</td><td data-label="Bezprzewodowy">Wykończony dom albo modernizacja bez bruzdowania ścian.</td></tr>
              <tr><td data-label="Kryterium"><strong>Zasilanie</strong></td><td data-label="Przewodowy">Zależne od architektury 24 V, 230 V albo magistrali.</td><td data-label="Bezprzewodowy">Termostaty mogą wymagać baterii lub lokalnego zasilania.</td></tr>
              <tr><td data-label="Kryterium"><strong>Łączność</strong></td><td data-label="Przewodowy">Brak zależności od zasięgu radiowego, ale konieczne prawidłowe okablowanie.</td><td data-label="Bezprzewodowy">Zasięg trzeba sprawdzić w rzeczywistym budynku, szczególnie przez stropy i grube ściany.</td></tr>
              <tr><td data-label="Kryterium"><strong>Serwis</strong></td><td data-label="Przewodowy">Warto opisać przewody i zostawić dokumentację połączeń.</td><td data-label="Bezprzewodowy">Trzeba kontrolować baterie, parowanie urządzeń i dostępność komunikacji.</td></tr>
              <tr><td data-label="Kryterium"><strong>Rozbudowa</strong></td><td data-label="Przewodowy">Łatwa, jeśli wcześniej pozostawiono przewody i rezerwę w listwie.</td><td data-label="Bezprzewodowy">Zwykle prostsza bez prac budowlanych, ale zależna od kompatybilności systemu.</td></tr>
            </tbody>
          </table>
        </div>
      </section>

      <section class="rk-controls-section" id="rk-controls-strefy">
        <div class="rk-controls-section-head">
          <span class="rk-controls-eyebrow">Podział zaczyna się na rzucie</span>
          <h2>Jak prawidłowo podzielić podłogówkę na strefy?</h2>
          <p>Termostat powinien sterować grupą pętli obsługujących obszar o podobnej funkcji, ekspozycji i oczekiwanej temperaturze.</p>
        </div>
        <div class="rk-controls-steps">
          <div class="rk-controls-step"><h3>Zaznacz funkcje pomieszczeń</h3><p>Oddziel łazienki, sypialnie, strefę dzienną, pokoje okresowe oraz pomieszczenia o innych temperaturach projektowych.</p></div>
          <div class="rk-controls-step"><h3>Sprawdź zyski ciepła</h3><p>Duże przeszklenia, kominek, sprzęt i liczba użytkowników mogą uzasadniać osobną regulację części budynku.</p></div>
          <div class="rk-controls-step"><h3>Przypisz pętle do pomieszczeń</h3><p>Wszystkie obwody jednego dużego pokoju powinny otrzymywać spójny sygnał, jeżeli pracują jako jedna strefa.</p></div>
          <div class="rk-controls-step"><h3>Nie prowadź jednej pętli przez różne strefy</h3><p>Jeżeli jedna pętla ogrzewa dwa pomieszczenia o innych nastawach, żaden termostat nie rozdzieli ich fizycznie po wykonaniu posadzki.</p></div>
          <div class="rk-controls-step"><h3>Policz udział zamykanych obwodów</h3><p>Sprawdź wariant, w którym wiele stref osiąga temperaturę jednocześnie. Pompa i źródło nadal muszą pracować w bezpiecznym zakresie.</p></div>
          <div class="rk-controls-step"><h3>Zaplanuj przewody i czujniki</h3><p>Na etapie budowy zdecyduj o trasach, napięciu, miejscu listwy, sygnale do pompy oraz wymiennych peszlach czujników.</p></div>
        </div>
        <p style="margin-top:18px">Podział pętli salonu powinien wynikać z geometrii i długości obwodów. Pomocne będzie opracowanie <a href="https://projekt-ogrzewania.pl/salon-ile-petli-podlogowki/">ile pętli podłogówki zaplanować w salonie</a> oraz poradnik o <a href="https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/">dopuszczalnej długości jednej pętli</a>.</p>
      </section>

      <section class="rk-controls-section" id="rk-controls-hydraulika">
        <div class="rk-controls-section-head">
          <span class="rk-controls-eyebrow">Najważniejsza część, której nie widać na termostacie</span>
          <h2>Zamykanie pętli, minimalny przepływ, pompa i bufor</h2>
          <p>Każdy zamknięty zawór zmienia sieć hydrauliczną. Przepływ całkowity oraz punkt pracy pompy nie pozostają wtedy takie same.</p>
        </div>
        <div class="rk-controls-grid-2">
          <div class="rk-controls-card rk-controls-card-orange">
            <h3>Scenariusz krytyczny</h3>
            <p>Większość termostatów osiąga temperaturę, siłowniki zamykają pętle, a źródło nadal zgłasza pracę. Trzeba przewidzieć, gdzie popłynie woda i gdzie zostanie odebrana minimalna moc.</p>
            <ul>
              <li>minimalny przepływ źródła,</li>
              <li>minimalna objętość instalacji,</li>
              <li>minimalny czas pracy,</li>
              <li>reakcja pompy na wzrost różnicy ciśnień.</li>
            </ul>
          </div>
          <div class="rk-controls-card rk-controls-card-green">
            <h3>Możliwe rozwiązania</h3>
            <p>Projekt może wykorzystywać właściwie dobrane obwody stale otwarte, regulację pompy, obejście, dodatkową objętość, bufor lub rozdzielenie hydrauliczne. Nie każde rozwiązanie pasuje do każdego źródła.</p>
            <p>Przeczytaj także o <a href="https://projekt-ogrzewania.pl/sprzeglo-hydrauliczne-w-instalacji-ogrzewania-podlogowego/">sprzęgle hydraulicznym w podłogówce</a>.</p>
          </div>
        </div>
        <div class="rk-controls-warning" style="margin-top:18px"><p><strong>Trybu pompy nie wybieramy z jednego zdania w internecie.</strong> Charakterystykę należy dopasować do instalacji, zaworów i wymaganego punktu pracy. Automatyczna regulacja różnicy ciśnień może pomagać po zamykaniu pętli, ale nie tworzy brakującego przepływu przez źródło.</p></div>
      </section>

      <section class="rk-controls-section" id="rk-controls-uruchomienie">
        <div class="rk-controls-section-head">
          <span class="rk-controls-eyebrow">Kolejność uruchomienia</span>
          <h2>Jak skonfigurować automatykę bez uniwersalnych nastaw?</h2>
          <p>Nie podajemy jednego czasu PWM ani jednej histerezy. Zamiast tego stosujemy procedurę, która pozwala ocenić zachowanie całej instalacji.</p>
        </div>
        <div class="rk-controls-steps">
          <div class="rk-controls-step"><h3>Uruchom instalację z otwartymi pętlami</h3><p>Sprawdź odpowietrzenie, przepływy, temperaturę zasilania i powrotu oraz pracę pompy.</p></div>
          <div class="rk-controls-step"><h3>Ustaw przepływy przed automatyką</h3><p>Wprowadź nastawy z projektu albo wykonaj świadomą regulację. Termostat nie powinien dusić stale przewymiarowanej pętli.</p></div>
          <div class="rk-controls-step"><h3>Dopasuj krzywą grzewczą</h3><p>W stabilnych warunkach obniżaj temperaturę wody do poziomu zapewniającego komfort bez nadmiernego przegrzewania.</p></div>
          <div class="rk-controls-step"><h3>Sprawdź przypisanie wyjść</h3><p>Każdy termostat musi uruchamiać właściwe siłowniki, a typ NC lub NO powinien odpowiadać konfiguracji listwy.</p></div>
          <div class="rk-controls-step"><h3>Zweryfikuj opóźnienia i sygnał źródła</h3><p>Uwzględnij czas otwarcia siłowników, start pompy i warunki przekazania zapotrzebowania na ciepło.</p></div>
          <div class="rk-controls-step"><h3>Obserwuj pełne cykle cieplne</h3><p>Nie oceniaj podłogówki po kilkunastu minutach. Zapisuj temperaturę, liczbę startów źródła i zachowanie stref przez kilka dni.</p></div>
          <div class="rk-controls-step"><h3>Koryguj małymi krokami</h3><p>Zmieniając wiele parametrów jednocześnie, nie ustalisz, która korekta poprawiła albo pogorszyła pracę.</p></div>
        </div>
      </section>

      <section class="rk-controls-section" id="rk-controls-koszty">
        <div class="rk-controls-section-head">
          <span class="rk-controls-eyebrow">Bez kalkulatora fikcyjnego zwrotu</span>
          <h2>Ile kosztuje sterowanie ogrzewaniem podłogowym?</h2>
          <p>Nie podajemy jednej ceny za punkt ani procentu oszczędności. Koszt zależy od liczby stref, napięcia, komunikacji, funkcji listwy, czujników, okablowania i robocizny.</p>
        </div>
        <div class="rk-controls-table-wrap">
          <table class="rk-controls-table">
            <thead><tr><th>Pozycja budżetu</th><th>Co policzyć</th><th>Co może zmienić koszt</th></tr></thead>
            <tbody>
              <tr><td data-label="Pozycja"><strong>Termostaty</strong></td><td data-label="Co policzyć">Liczbę rzeczywiście niezależnych stref, a nie automatycznie liczbę pomieszczeń.</td><td data-label="Co zmienia koszt">Ekran, programowanie, czujnik podłogi, komunikacja i zasilanie.</td></tr>
              <tr><td data-label="Pozycja"><strong>Siłowniki</strong></td><td data-label="Co policzyć">Liczbę zaworów obsługujących pętle przypisane do stref.</td><td data-label="Co zmienia koszt">Napięcie, NC lub NO, skok i zgodność z zaworem.</td></tr>
              <tr><td data-label="Pozycja"><strong>Listwa lub moduły</strong></td><td data-label="Co policzyć">Liczbę wejść termostatów, wyjść siłowników i sygnałów do pompy lub źródła.</td><td data-label="Co zmienia koszt">Rozbudowa, komunikacja, opóźnienia, integracja i liczba rozdzielaczy.</td></tr>
              <tr><td data-label="Pozycja"><strong>Instalacja elektryczna</strong></td><td data-label="Co policzyć">Przewody, zabezpieczenia, puszki, zasilanie rozdzielacza i opis obwodów.</td><td data-label="Co zmienia koszt">Etap budowy, długość tras oraz konieczność prac wykończeniowych.</td></tr>
              <tr><td data-label="Pozycja"><strong>Uruchomienie</strong></td><td data-label="Co policzyć">Przypisanie stref, test siłowników, konfigurację pompy i sprawdzenie źródła.</td><td data-label="Co zmienia koszt">Liczba stref, brak dokumentacji i konieczność poprawiania hydrauliki.</td></tr>
            </tbody>
          </table>
        </div>
        <div class="rk-controls-note" style="margin-top:18px"><p><strong>Oszczędność nie wynika z zakupu urządzeń.</strong> Pojawia się tylko wtedy, gdy automatyka obniża średnią temperaturę tam, gdzie wcześniej była zbyt wysoka, ogranicza zbędne grzanie albo poprawia wykorzystanie zysków bez pogarszania pracy źródła.</p></div>
      </section>

      <section class="rk-controls-section" id="rk-controls-bledy">
        <div class="rk-controls-section-head">
          <span class="rk-controls-eyebrow">Błędy powtarzające się na budowach</span>
          <h2>Najczęstsze błędy przy sterownikach do podłogówki</h2>
          <p>Najdroższe problemy zwykle nie wynikają z braku funkcji aplikacji, lecz z niewłaściwego podziału stref i pominięcia hydrauliki.</p>
        </div>
        <div class="rk-controls-grid-2">
          <div class="rk-controls-card rk-controls-card-orange"><h3>Automatyka zamiast regulacji</h3><p>Siłowniki zamykają przegrzewane pętle, ale po ich ponownym otwarciu nadal płynie przez nie za dużo wody.</p></div>
          <div class="rk-controls-card rk-controls-card-orange"><h3>Termostat w złym miejscu</h3><p>Słońce, przeciąg, telewizor, kuchnia albo zimna ściana zafałszowują pomiar reprezentujący całą strefę.</p></div>
          <div class="rk-controls-card rk-controls-card-orange"><h3>Jedna pętla w dwóch pomieszczeniach</h3><p>Po wykonaniu posadzki nie można niezależnie sterować częściami jednego obwodu.</p></div>
          <div class="rk-controls-card rk-controls-card-orange"><h3>Zamykanie prawie całej instalacji</h3><p>Brak analizy minimalnego przepływu może prowadzić do alarmów, szumów, krótkich cykli albo niestabilnej pracy.</p></div>
          <div class="rk-controls-card rk-controls-card-orange"><h3>Niezgodne napięcie i logika</h3><p>Listwa, termostaty i siłowniki 24 V lub 230 V oraz typ NC albo NO muszą tworzyć jeden zgodny system.</p></div>
          <div class="rk-controls-card rk-controls-card-orange"><h3>Duże obniżenie na kilka godzin</h3><p>Podłoga może zacząć stygnąć dopiero pod koniec nieobecności, a późniejsze odzyskanie komfortu będzie opóźnione.</p></div>
          <div class="rk-controls-card rk-controls-card-orange"><h3>Czujnik zatopiony bez peszla</h3><p>Awaria czujnika może wymagać ingerencji w wykończoną podłogę, jeśli wcześniej nie zapewniono możliwości jego wymiany.</p></div>
          <div class="rk-controls-card rk-controls-card-orange"><h3>Brak dokumentacji przypisania pętli</h3><p>Podczas uruchomienia nie wiadomo, który termostat ma sterować konkretnym zaworem na rozdzielaczu.</p></div>
        </div>
      </section>

      <section class="rk-controls-section" id="rk-controls-checklista">
        <div class="rk-controls-section-head">
          <span class="rk-controls-eyebrow">Przed zakupem i przed tynkami</span>
          <h2>Checklista planowania sterowania podłogówką</h2>
          <p>Jeśli na większość punktów nie potrafisz jeszcze odpowiedzieć, zacznij od koncepcji instalacji, a nie od wyboru aplikacji i wyglądu termostatu.</p>
        </div>
        <ul class="rk-controls-checklist">
          <li>Znam projektową stratę ciepła każdego pomieszczenia.</li>
          <li>Każda pętla jest jednoznacznie przypisana do strefy.</li>
          <li>Mam długości obwodów i wymagane przepływy.</li>
          <li>Wiem, które pomieszczenia rzeczywiście potrzebują innej temperatury.</li>
          <li>Znam sposób regulacji temperatury zasilania.</li>
          <li>Znam minimalny przepływ i wymaganą objętość źródła.</li>
          <li>Sprawdziłem wariant jednoczesnego zamknięcia wielu pętli.</li>
          <li>Wybrałem typ przewodowy albo radiowy odpowiedni do etapu budowy.</li>
          <li>Napięcie listwy i siłowników jest zgodne.</li>
          <li>Typ NC albo NO odpowiada logice układu.</li>
          <li>Termostaty mają reprezentatywne miejsca montażu.</li>
          <li>Czujniki podłogowe można wymienić bez kucia.</li>
          <li>Znam ograniczenia temperaturowe okładziny.</li>
          <li>Dokumentacja opisuje przewody, wyjścia i strefy.</li>
        </ul>
      </section>

      <section class="rk-controls-section" id="rk-controls-faq">
        <div class="rk-controls-section-head">
          <span class="rk-controls-eyebrow">Szybkie odpowiedzi</span>
          <h2>Sterowniki do ogrzewania podłogowego — FAQ</h2>
          <p>Odpowiedzi celowo unikają uniwersalnych procentów oszczędności i ustawień oderwanych od konkretnego systemu.</p>
        </div>
        <div class="rk-controls-faq">
          <details><summary>Czy podłogówka może działać bez sterowników pokojowych?</summary><div class="rk-controls-faq-answer"><p>Tak. Prawidłowo zaprojektowana i wyregulowana instalacja może pracować na regulacji pogodowej źródła z otwartymi pętlami. Termostaty są wtedy opcjonalnym ograniczeniem wybranych pomieszczeń, a nie warunkiem działania podłogi.</p></div></details>
          <details><summary>Czy trzeba montować termostat w każdym pomieszczeniu?</summary><div class="rk-controls-faq-answer"><p>Nie. Osobny termostat ma sens dla rzeczywiście niezależnej strefy. Otwarta część dzienna o podobnej temperaturze może tworzyć jedną strefę, natomiast łazienka, sypialnie lub pokój okresowy mogą wymagać oddzielnego sterowania.</p></div></details>
          <details><summary>Czy sterowniki zawsze obniżają rachunki?</summary><div class="rk-controls-faq-answer"><p>Nie. Oszczędność zależy od tego, czy wcześniej dochodziło do przegrzewania lub zbędnego ogrzewania. W dobrze ustawionej instalacji dodatkowa redukcja zużycia może być niewielka, a źle zaprojektowane strefy mogą pogorszyć pracę źródła.</p></div></details>
          <details><summary>Czy pompa ciepła potrzebuje siłowników na wszystkich pętlach?</summary><div class="rk-controls-faq-answer"><p>Nie. Często stosuje się pogodowe prowadzenie temperatury i selektywne ograniczanie wybranych stref. Jeżeli siłowniki mogą zamknąć znaczną część instalacji, trzeba sprawdzić minimalny przepływ, objętość i sposób reakcji pompy ciepła.</p></div></details>
          <details><summary>Co jest ważniejsze: sterownik pogodowy czy pokojowy?</summary><div class="rk-controls-faq-answer"><p>Pełnią inne funkcje. Pogodówka prowadzi temperaturę wody dla całej instalacji, a termostat pokojowy ogranicza wybraną strefę na podstawie pomiaru wewnętrznego. W podłogówce często współpracują zamiast się zastępować.</p></div></details>
          <details><summary>Czy przy sterowaniu strefowym zawsze potrzebny jest bufor?</summary><div class="rk-controls-faq-answer"><p>Nie zawsze. Bufor jest jednym z możliwych rozwiązań, ale decyzja zależy od źródła, minimalnego przepływu, wymaganej objętości, liczby pozostających otwartych obwodów i hydrauliki całego układu.</p></div></details>
          <details><summary>Jaka histereza jest najlepsza do podłogówki?</summary><div class="rk-controls-faq-answer"><p>Nie ma jednej wartości dla wszystkich systemów. Ustawienie zależy od algorytmu regulatora, konstrukcji podłogi, miejsca czujnika i reakcji budynku. Należy rozpocząć od zaleceń automatyki i korygować małymi krokami po obserwacji pełnych cykli.</p></div></details>
          <details><summary>Czy PWM lub TPI jest zawsze lepsze od histerezy?</summary><div class="rk-controls-faq-answer"><p>Algorytmy czasowo-proporcjonalne mogą lepiej uwzględniać bezwładność, ale wymagają właściwej konfiguracji i zgodności z listwą, siłownikami oraz źródłem. Nie należy kopiować uniwersalnego czasu cyklu z innej instalacji.</p></div></details>
          <details><summary>Czy czujnik podłogowy jest obowiązkowy przy panelach?</summary><div class="rk-controls-faq-answer"><p>Nie można tego rozstrzygnąć dla wszystkich paneli jednym zdaniem. Trzeba sprawdzić wymagania konkretnej okładziny i systemu. Czujnik może służyć jako dodatkowy ogranicznik, ale nie zastępuje właściwej temperatury zasilania.</p></div></details>
          <details><summary>Czy po wykończeniu domu można zamontować sterowanie bezprzewodowe?</summary><div class="rk-controls-faq-answer"><p>Tak, jeśli wybrany system zapewnia odpowiedni zasięg i można zasilić listwę oraz siłowniki przy rozdzielaczu. Przed zakupem warto sprawdzić komunikację w rzeczywistym budynku i zgodność wszystkich elementów.</p></div></details>
          <details><summary>Czy siłowniki naprawią źle wyregulowane rotametry?</summary><div class="rk-controls-faq-answer"><p>Nie. Po otwarciu zaworu przez pętlę nadal powinien płynąć właściwy strumień wody. Najpierw ustala się przepływy, a dopiero później automatyka okresowo ogranicza wybrane obwody.</p></div></details>
        </div>
      </section>

      <section class="rk-controls-section" id="rk-controls-zrodla">
        <div class="rk-controls-section-head">
          <span class="rk-controls-eyebrow">Dokumenty publiczne i normalizacyjne</span>
          <h2>Źródła i podstawa techniczna opracowania</h2>
          <p>Linki zewnętrzne prowadzą wyłącznie do organizacji normalizacyjnych i instytucji publicznych. Parametry konkretnego regulatora, siłownika i źródła należy dodatkowo potwierdzić w ich dokumentacji, bez linkowania z artykułu do producentów.</p>
        </div>
        <ol class="rk-controls-sources">
          <li><a href="https://www.iso.org/standard/65883.html" target="_blank" rel="noopener nofollow">ISO 52120-1:2021</a> — funkcje automatyki, sterowania i zarządzania technicznego wpływające na charakterystykę energetyczną budynków.</li>
          <li><a href="https://www.iso.org/standard/74289.html" target="_blank" rel="noopener nofollow">ISO/TR 52120-2:2021</a> — wyjaśnienia i uzasadnienie metodyki ISO 52120-1.</li>
          <li><a href="https://eur-lex.europa.eu/legal-content/PL/TXT/?uri=CELEX:32024L1275" target="_blank" rel="noopener nofollow">Dyrektywa Parlamentu Europejskiego i Rady (UE) 2024/1275</a> — charakterystyka energetyczna budynków i rola systemów automatyki oraz sterowania.</li>
          <li><a href="https://www.iso.org/standard/74683.html" target="_blank" rel="noopener nofollow">ISO 11855-2:2021</a> — wyznaczanie mocy systemów ogrzewania i chłodzenia płaszczyznowego.</li>
          <li><a href="https://www.energy.gov/eere/buildings/articles/building-america-technology-solutions-case-study-field-performance-inverter" target="_blank" rel="noopener nofollow">U.S. Department of Energy — terenowa analiza pracy pomp ciepła</a> — między innymi wpływ strategii obniżania i odzyskiwania temperatury na eksploatację.</li>
          <li><a href="https://assets.publishing.service.gov.uk/media/5a82e1daed915d74e62381a7/heating-controls-international-evidence.pdf" target="_blank" rel="noopener nofollow">UK Government — międzynarodowy przegląd dowodów dotyczących sterowania ogrzewaniem</a>.</li>
        </ol>
        <div class="rk-controls-warning"><p><strong>Zakres opracowania:</strong> artykuł nie zastępuje projektu elektrycznego, instrukcji źródła, dokumentacji okładziny ani obliczeń hydraulicznych. Ustawienia automatyki należy sprawdzić w warunkach konkretnej instalacji.</p></div>
      </section>

      <section class="rk-controls-author" id="rk-controls-autor" aria-label="Autor opracowania">
        <input type="radio" name="rk-controls-author-tabs" id="rk-controls-author-about" checked="">
        <input type="radio" name="rk-controls-author-tabs" id="rk-controls-author-exp">
        <input type="radio" name="rk-controls-author-tabs" id="rk-controls-author-method">

        <header class="rk-controls-author-head">
          <div>
            <span class="rk-controls-kicker">Autor i odpowiedzialność merytoryczna</span>
            <h2>Robert Kucharski</h2>
            <p>Projektant instalacji sanitarnych • specjalista HVAC i ogrzewania podłogowego</p>
          </div>
          <span class="rk-controls-author-mark">AUTOMATYKA • HYDRAULIKA • OGRZEWANIE PŁASZCZYZNOWE</span>
        </header>

        <div class="rk-controls-author-layout">
          <aside class="rk-controls-author-side">
            <div class="rk-controls-author-photo"><img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant instalacji sanitarnych i ogrzewania podłogowego" width="600" height="600" loading="lazy" decoding="async"></div>
            <div class="rk-controls-author-name">Robert Kucharski</div>
            <div class="rk-controls-author-role">Projektant instalacji sanitarnych<br>Specjalista HVAC i ogrzewania podłogowego</div>
            <div class="rk-controls-author-social-label">Profile autora</div>
            <div class="rk-controls-author-social" aria-label="Profile Roberta Kucharskiego w mediach społecznościowych">
              <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener nofollow me" aria-label="Robert Kucharski na LinkedIn"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M5.3 3.6A2.3 2.3 0 1 1 .7 3.6a2.3 2.3 0 0 1 4.6 0ZM1.1 8h4.3v13H1.1V8Zm6.9 0h4.1v1.8h.1c.6-1.1 2-2.3 4.1-2.3 4.4 0 5.2 2.9 5.2 6.7V21h-4.3v-6c0-1.4 0-3.3-2-3.3s-2.3 1.6-2.3 3.2V21H8V8Z"></path></svg></a>
              <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="noopener nofollow me" aria-label="Projekt Ogrzewania na Facebooku"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M24 12.1C24 5.4 18.6 0 12 0S0 5.4 0 12.1C0 18.1 4.4 23 10.1 24v-8.4H7.1v-3.5h3V9.5c0-3 1.8-4.7 4.5-4.7 1.3 0 2.7.2 2.7.2v3h-1.5c-1.5 0-1.9.9-1.9 1.8v2.2h3.3l-.5 3.5h-2.8V24C19.6 23 24 18.1 24 12.1Z"></path></svg></a>
              <a href="https://x.com/Projekt_HVAC" target="_blank" rel="noopener nofollow me" aria-label="Projekt HVAC w serwisie X"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M18.9 2H22l-6.8 7.8L23.2 22h-6.3L12 15.6 6.4 22H3.3l7.2-8.2L.8 2h6.5l4.4 5.8L18.9 2Zm-1.1 17.9h1.7L6.4 4H4.6l13.2 15.9Z"></path></svg></a>
            </div>
          </aside>

          <div class="rk-controls-author-main">
            <blockquote class="rk-controls-author-quote"><p>„Dobry sterownik nie naprawia hydrauliki. Najpierw trzeba wiedzieć, ile wody potrzebuje każda pętla i co zrobi źródło, gdy część obwodów się zamknie. Dopiero później wybiera się liczbę stref i sposób regulacji.”</p></blockquote>
            <div class="rk-controls-author-tabs" role="tablist" aria-label="Informacje o autorze">
              <label class="rk-controls-author-tab" for="rk-controls-author-about">O autorze</label>
              <label class="rk-controls-author-tab" for="rk-controls-author-exp">Doświadczenie</label>
              <label class="rk-controls-author-tab" for="rk-controls-author-method">Metodyka</label>
            </div>
            <div class="rk-controls-author-panel rk-controls-author-panel-about">
              <p>Robert Kucharski opracowuje projekty wodnego ogrzewania podłogowego oraz instalacji grzewczych dla domów nowych i modernizowanych. Łączy obliczenia strat ciepła z doborem temperatur, rozstawów rur, długości pętli, przepływów, spadków ciśnienia oraz nastaw rozdzielaczy.</p>
              <p>W analizie automatyki traktuje termostaty, listwy i siłowniki jako element całego układu. Podział na strefy jest koordynowany z geometrią pomieszczeń, liczbą pętli, sposobem użytkowania, źródłem ciepła i minimalnym wymaganym przepływem.</p>
              <p><a href="https://projekt-ogrzewania.pl/author/robert-kucharski/">Zobacz profil autora i pozostałe opracowania</a>.</p>
            </div>
            <div class="rk-controls-author-panel rk-controls-author-panel-exp">
              <p>W praktyce projektowej Robert analizuje pętle nie tylko przy pełnym obciążeniu obliczeniowym, lecz również po częściowym zamknięciu stref. Pozwala to sprawdzić zachowanie pompy obiegowej, rozdzielacza i źródła w warunkach, które pojawiają się przez dużą część sezonu.</p>
              <p>Dokumentacja wykonawcza powinna jednoznacznie wskazywać długości obwodów, przepływy, przypisanie pomieszczeń oraz zalecenia dla automatyki. Dzięki temu instalator nie musi tworzyć logiki sterowania dopiero podczas podłączania listwy.</p>
            </div>
            <div class="rk-controls-author-panel rk-controls-author-panel-method">
              <p>Analizator w tym artykule nie wylicza oszczędności ani czasu zwrotu. Porządkuje czynniki decyzyjne i pokazuje konflikt między korzyścią z lokalnej regulacji a ryzykiem ograniczenia przepływu i opóźnioną reakcją podłogi.</p>
              <p>Robert jest właścicielem i autorem trzech serwisów branżowych, których powiązanie podaje jawnie:</p>
              <div class="rk-controls-site-links"><a href="https://projekt-ogrzewania.pl/">Projekt-Ogrzewania.pl</a><a href="https://remont.biz.pl/" target="_blank" rel="noopener nofollow">Remont.biz.pl</a><a href="https://sobir.pl/" target="_blank" rel="noopener nofollow">Sobir.pl</a></div>
            </div>
          </div>
        </div>
      </section>

      <aside class="rk-controls-cta rk-controls-final-cta" aria-label="Zamówienie projektu ogrzewania podłogowego">
        <div class="rk-controls-cta-title">Zaprojektuj pętle, przepływy i strefy jako jeden system</div>
        <p>Projekt ogrzewania podłogowego obejmuje obliczenia cieplne i hydrauliczne, rozrysowane pętle, długości rur, przepływy oraz nastawy rozdzielaczy. Koncepcja sterowania może zostać powiązana z funkcją pomieszczeń i planowanym źródłem ciepła.</p>
        <a class="rk-controls-cta-button rk-controls-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów kompletny projekt ogrzewania podłogowego</a>
      </aside>
    </div>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt Ogrzewania",
      "inLanguage": "pl-PL",
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"}
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt Ogrzewania",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/robert-kucharski/",
      "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "jobTitle": "Projektant instalacji sanitarnych i specjalista HVAC",
      "knowsAbout": [
        "ogrzewanie podłogowe",
        "automatyka grzewcza",
        "sterowanie strefowe",
        "hydraulika instalacji grzewczych",
        "pompy ciepła",
        "obliczenia cieplne"
      ],
      "sameAs": [
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ],
      "worksFor": [
        {"@id": "https://projekt-ogrzewania.pl/#organization"},
        {"@id": "https://remont.biz.pl/#organization"},
        {"@id": "https://sobir.pl/#organization"}
      ]
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#breadcrumb",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Strona główna",
          "item": "https://projekt-ogrzewania.pl/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Blog",
          "item": "https://projekt-ogrzewania.pl/blog/"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Sterowniki do ogrzewania podłogowego – czy warto je montować?",
          "item": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/"
        }
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webpage",
      "url": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/",
      "name": "Sterowniki do ogrzewania podłogowego – czy warto je montować?",
      "description": "Poradnik i analizator pomagający ocenić, czy w konkretnej instalacji warto zastosować sterowanie centralne, selektywne lub pełne sterowanie strefowe.",
      "inLanguage": "pl-PL",
      "isPartOf": {"@id": "https://projekt-ogrzewania.pl/#website"},
      "breadcrumb": {"@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#breadcrumb"},
      "dateModified": "2026-08-31",
      "mainEntity": {"@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article"}
    },
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article",
      "url": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/",
      "headline": "Sterowniki do ogrzewania podłogowego – czy warto je montować?",
      "alternativeHeadline": "Termostaty i siłowniki do podłogówki: sterowanie centralne, selektywne czy strefowe",
      "description": "Techniczny poradnik o sterownikach pokojowych, siłownikach, regulacji pogodowej, bezwładności podłogi i minimalnym przepływie źródła.",
      "inLanguage": "pl-PL",
      "dateModified": "2026-08-31",
      "author": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"},
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "mainEntityOfPage": {"@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webpage"},
      "about": [
        {"@type": "Thing", "name": "Sterowniki do ogrzewania podłogowego"},
        {"@type": "Thing", "name": "Sterowanie strefowe"},
        {"@type": "Thing", "name": "Termostaty pokojowe"},
        {"@type": "Thing", "name": "Siłowniki termoelektryczne"},
        {"@type": "Thing", "name": "Hydraulika ogrzewania podłogowego"}
      ],
      "citation": [
        "https://www.iso.org/standard/65883.html",
        "https://www.iso.org/standard/74289.html",
        "https://eur-lex.europa.eu/legal-content/PL/TXT/?uri=CELEX:32024L1275",
        "https://www.iso.org/standard/74683.html",
        "https://www.energy.gov/eere/buildings/articles/building-america-technology-solutions-case-study-field-performance-inverter"
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#analyzer",
      "name": "Interaktywny analizator sterowania ogrzewaniem podłogowym",
      "url": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#rk-controls-analizator",
      "applicationCategory": "UtilitiesApplication",
      "operatingSystem": "Any",
      "browserRequirements": "JavaScript",
      "softwareVersion": "1.0",
      "inLanguage": "pl-PL",
      "isAccessibleForFree": true,
      "offers": {
        "@type": "Offer",
        "price": "0",
        "priceCurrency": "PLN"
      },
      "author": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"},
      "description": "Analizator ocenia zasadność strefowania, bezwładność podłogi, ryzyko hydrauliczne i priorytet uporządkowania podstaw bez obiecywania procentowych oszczędności."
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#howto",
      "name": "Jak zaplanować sterowanie ogrzewaniem podłogowym",
      "description": "Procedura planowania i uruchamiania automatyki podłogówki bez uniwersalnych nastaw.",
      "inLanguage": "pl-PL",
      "step": [
        {"@type": "HowToStep", "position": 1, "name": "Uruchom otwarte pętle", "text": "Sprawdź odpowietrzenie, przepływy, temperaturę zasilania i powrotu oraz pracę pompy przy otwartych obwodach."},
        {"@type": "HowToStep", "position": 2, "name": "Ustaw przepływy", "text": "Wprowadź przepływy z projektu lub wykonaj świadomą regulację hydrauliczną przed aktywacją siłowników."},
        {"@type": "HowToStep", "position": 3, "name": "Dopasuj temperaturę wody", "text": "Ustaw regulację pogodową albo parametry źródła tak, aby podłoga nie otrzymywała nadmiernej temperatury."},
        {"@type": "HowToStep", "position": 4, "name": "Przypisz termostaty", "text": "Połącz każdy termostat z właściwymi pętlami i potwierdź zgodność typu NC lub NO oraz napięcia."},
        {"@type": "HowToStep", "position": 5, "name": "Sprawdź przepływ minimalny", "text": "Zweryfikuj pracę źródła i pompy po zamknięciu przewidywanej liczby obwodów."},
        {"@type": "HowToStep", "position": 6, "name": "Obserwuj pełne cykle", "text": "Oceniaj temperatury i liczbę startów źródła przez kilka dni, uwzględniając bezwładność podłogi."},
        {"@type": "HowToStep", "position": 7, "name": "Koryguj małymi krokami", "text": "Zmieniaj pojedyncze parametry i zapisuj efekt zamiast jednoczesnej zmiany wielu ustawień."}
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#faq",
      "inLanguage": "pl-PL",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Czy podłogówka może działać bez sterowników pokojowych?",
          "acceptedAnswer": {"@type": "Answer", "text": "Tak. Prawidłowo zaprojektowana i wyregulowana instalacja może pracować na regulacji pogodowej źródła z otwartymi pętlami. Termostaty mogą być wtedy ograniczeniem wybranych pomieszczeń, a nie warunkiem działania podłogi."}
        },
        {
          "@type": "Question",
          "name": "Czy trzeba montować termostat w każdym pomieszczeniu?",
          "acceptedAnswer": {"@type": "Answer", "text": "Nie. Osobny termostat ma sens dla rzeczywiście niezależnej strefy. Otwarta część dzienna może tworzyć jedną strefę, a łazienka, sypialnie lub pokój okresowy mogą wymagać oddzielnego sterowania."}
        },
        {
          "@type": "Question",
          "name": "Czy sterowniki zawsze obniżają rachunki?",
          "acceptedAnswer": {"@type": "Answer", "text": "Nie. Oszczędność zależy od przegrzewania, wcześniejszego sposobu regulacji i użytkowania. W dobrze ustawionej instalacji dodatkowa redukcja zużycia może być niewielka."}
        },
        {
          "@type": "Question",
          "name": "Czy pompa ciepła potrzebuje siłowników na wszystkich pętlach?",
          "acceptedAnswer": {"@type": "Answer", "text": "Nie. Często stosuje się pogodowe prowadzenie temperatury i selektywne ograniczanie wybranych stref. Przy zamykaniu znacznej części instalacji trzeba sprawdzić minimalny przepływ, objętość i reakcję źródła."}
        },
        {
          "@type": "Question",
          "name": "Co jest ważniejsze: sterownik pogodowy czy pokojowy?",
          "acceptedAnswer": {"@type": "Answer", "text": "Pełnią inne funkcje. Pogodówka prowadzi temperaturę wody, a termostat pokojowy ogranicza wybraną strefę na podstawie pomiaru wewnętrznego. Często powinny współpracować."}
        },
        {
          "@type": "Question",
          "name": "Czy przy sterowaniu strefowym zawsze potrzebny jest bufor?",
          "acceptedAnswer": {"@type": "Answer", "text": "Nie zawsze. Decyzja zależy od źródła, minimalnego przepływu, wymaganej objętości, liczby pozostających otwartych obwodów i hydrauliki całego układu."}
        },
        {
          "@type": "Question",
          "name": "Jaka histereza jest najlepsza do podłogówki?",
          "acceptedAnswer": {"@type": "Answer", "text": "Nie ma jednej wartości dla wszystkich systemów. Ustawienie zależy od algorytmu regulatora, konstrukcji podłogi, czujników i reakcji budynku."}
        },
        {
          "@type": "Question",
          "name": "Czy PWM lub TPI jest zawsze lepsze od histerezy?",
          "acceptedAnswer": {"@type": "Answer", "text": "Algorytmy czasowo-proporcjonalne mogą lepiej uwzględniać bezwładność, ale wymagają właściwej konfiguracji i zgodności z listwą, siłownikami oraz źródłem."}
        },
        {
          "@type": "Question",
          "name": "Czy czujnik podłogowy jest obowiązkowy przy panelach?",
          "acceptedAnswer": {"@type": "Answer", "text": "Należy sprawdzić wymagania konkretnej okładziny i systemu. Czujnik może służyć jako dodatkowy ogranicznik, ale nie zastępuje właściwej temperatury zasilania."}
        },
        {
          "@type": "Question",
          "name": "Czy po wykończeniu domu można zamontować sterowanie bezprzewodowe?",
          "acceptedAnswer": {"@type": "Answer", "text": "Tak, jeżeli system ma odpowiedni zasięg i można zasilić listwę oraz siłowniki przy rozdzielaczu. Trzeba potwierdzić komunikację i kompatybilność elementów."}
        },
        {
          "@type": "Question",
          "name": "Czy siłowniki naprawią źle wyregulowane rotametry?",
          "acceptedAnswer": {"@type": "Answer", "text": "Nie. Po otwarciu zaworu przez pętlę nadal powinien płynąć właściwy strumień wody. Najpierw ustala się przepływy, a dopiero później automatyka ogranicza wybrane obwody."}
        }
      ]
    }
  ]
}
</script>

<script>
(function () {
  "use strict";

  var root = document.getElementById("rk-controls-guide");
  if (!root) { return; }

  var defaults = {
    "rk-controls-source": "heat-pump",
    "rk-controls-weather": "yes",
    "rk-controls-layout": "direct",
    "rk-controls-min-flow": "unknown",
    "rk-controls-building": "standard",
    "rk-controls-mass": "standard",
    "rk-controls-temperature-diversity": "moderate",
    "rk-controls-gains": "medium",
    "rk-controls-usage": "variable",
    "rk-controls-floor": "insensitive",
    "rk-controls-loops": 12,
    "rk-controls-controlled-loops": 8,
    "rk-controls-balance": "adjusted",
    "rk-controls-wiring": "wired"
  };

  function byId(id) { return document.getElementById(id); }

  function valueOf(id, fallback) {
    var element = byId(id);
    if (!element) { return fallback; }
    return String(element.value || fallback);
  }

  function numberOf(id, fallback) {
    var element = byId(id);
    if (!element) { return fallback; }
    var parsed = Number.parseFloat(String(element.value).replace(",", "."));
    if (!Number.isFinite(parsed)) { return fallback; }
    return parsed;
  }

  function clamp(value, minimum, maximum) {
    return Math.min(maximum, Math.max(minimum, value));
  }

  function setText(id, value) {
    var element = byId(id);
    if (element) { element.textContent = value; }
  }

  function setList(id, items) {
    var element = byId(id);
    if (!element) { return; }
    element.innerHTML = items.map(function (item) { return "<li>" + item + "</li>"; }).join("");
  }

  function readData() {
    return {
      source: valueOf("rk-controls-source", defaults["rk-controls-source"]),
      weather: valueOf("rk-controls-weather", defaults["rk-controls-weather"]),
      layout: valueOf("rk-controls-layout", defaults["rk-controls-layout"]),
      minFlow: valueOf("rk-controls-min-flow", defaults["rk-controls-min-flow"]),
      building: valueOf("rk-controls-building", defaults["rk-controls-building"]),
      mass: valueOf("rk-controls-mass", defaults["rk-controls-mass"]),
      temperatureDiversity: valueOf("rk-controls-temperature-diversity", defaults["rk-controls-temperature-diversity"]),
      gains: valueOf("rk-controls-gains", defaults["rk-controls-gains"]),
      usage: valueOf("rk-controls-usage", defaults["rk-controls-usage"]),
      floor: valueOf("rk-controls-floor", defaults["rk-controls-floor"]),
      loops: numberOf("rk-controls-loops", defaults["rk-controls-loops"]),
      controlledLoops: numberOf("rk-controls-controlled-loops", defaults["rk-controls-controlled-loops"]),
      balance: valueOf("rk-controls-balance", defaults["rk-controls-balance"]),
      wiring: valueOf("rk-controls-wiring", defaults["rk-controls-wiring"])
    };
  }

  function validateData(data) {
    var errors = [];
    if (!(data.loops >= 1)) { errors.push("Łączna liczba pętli musi być większa od zera."); }
    if (data.loops > 60) { errors.push("W analizatorze można podać maksymalnie 60 pętli."); }
    if (data.controlledLoops < 0) { errors.push("Liczba sterowanych pętli nie może być ujemna."); }
    if (data.controlledLoops > data.loops) { errors.push("Liczba sterowanych pętli nie może przekraczać liczby wszystkich pętli."); }
    if (data.source === "heat-pump") {
      if (data.layout === "direct") {
        if (data.minFlow === "not-applicable") { errors.push("W bezpośrednim układzie z pompą ciepła minimalnego przepływu nie można oznaczyć jako niedotyczącego instalacji."); }
      }
    }
    return errors;
  }

  function calculateScores(data) {
    var benefit = 22;
    if (data.temperatureDiversity === "moderate") { benefit += 15; }
    if (data.temperatureDiversity === "different") { benefit += 32; }
    if (data.temperatureDiversity === "same") { benefit -= 9; }
    if (data.gains === "medium") { benefit += 9; }
    if (data.gains === "high") { benefit += 22; }
    if (data.usage === "variable") { benefit += 13; }
    if (data.usage === "seasonal") { benefit += 21; }
    if (data.building === "renovation") { benefit += 8; }
    if (data.building === "low") { benefit -= 7; }
    if (data.floor === "sensitive") { benefit += 7; }
    if (data.mass === "light") { benefit += 5; }
    if (data.mass === "heavy") { benefit -= 10; }
    benefit = clamp(benefit, 0, 100);

    var inertia = 58;
    if (data.mass === "light") { inertia = 24; }
    if (data.mass === "heavy") { inertia = 90; }

    var closureRatio = data.loops > 0 ? data.controlledLoops / data.loops : 0;
    var hydraulic = 8 + closureRatio * 36;
    if (data.source === "heat-pump") { hydraulic += 19; }
    if (data.source === "gas") { hydraulic += 8; }
    if (data.source === "pellet") { hydraulic += 13; }
    if (data.source === "electric") { hydraulic += 5; }
    if (data.layout === "direct") { hydraulic += 13; }
    if (data.layout === "buffer") { hydraulic -= 17; }
    if (data.layout === "separated") { hydraulic -= 13; }
    if (data.layout === "unknown") { hydraulic += 14; }
    if (data.minFlow === "secured") { hydraulic -= 22; }
    if (data.minFlow === "not-secured") { hydraulic += 29; }
    if (data.minFlow === "unknown") { hydraulic += 16; }
    if (data.minFlow === "not-applicable") { hydraulic -= 5; }
    if (data.balance === "documented") { hydraulic -= 10; }
    if (data.balance === "adjusted") { hydraulic -= 3; }
    if (data.balance === "unknown") { hydraulic += 8; }
    if (data.balance === "none") { hydraulic += 16; }
    hydraulic = clamp(hydraulic, 0, 100);

    var foundation = 0;
    if (data.weather === "no") { foundation += 30; }
    if (data.weather === "unknown") { foundation += 14; }
    if (data.balance === "adjusted") { foundation += 5; }
    if (data.balance === "unknown") { foundation += 23; }
    if (data.balance === "none") { foundation += 42; }
    if (data.layout === "unknown") { foundation += 12; }
    if (data.source === "heat-pump") {
      if (data.minFlow === "not-secured") { foundation += 37; }
      if (data.minFlow === "unknown") { foundation += 20; }
    }
    if (closureRatio > 0.75) { foundation += 8; }
    foundation = clamp(foundation, 0, 100);

    return {
      benefit: benefit,
      inertia: inertia,
      hydraulic: hydraulic,
      foundation: foundation,
      closureRatio: clamp(closureRatio, 0, 1)
    };
  }

  function chooseCategory(data, scores) {
    var criticalFoundation = data.balance === "none";
    if (data.source === "heat-pump") {
      if (data.minFlow === "not-secured") { criticalFoundation = true; }
    }
    if (criticalFoundation || scores.foundation >= 60) { return "foundation"; }
    if (scores.benefit >= 69) {
      if (scores.hydraulic < 65) {
        if (scores.inertia < 88) { return "zoned"; }
      }
    }
    if (scores.benefit >= 39) { return "selective"; }
    return "central";
  }

  function scoreLabel(score, kind) {
    if (kind === "inertia") {
      if (score < 38) { return "Mała"; }
      if (score < 76) { return "Średnia"; }
      return "Duża";
    }
    if (kind === "risk") {
      if (score < 28) { return "Niskie"; }
      if (score < 52) { return "Umiarkowane"; }
      if (score < 76) { return "Podwyższone"; }
      return "Wysokie";
    }
    if (kind === "foundation") {
      if (score < 20) { return "Niski"; }
      if (score < 46) { return "Do sprawdzenia"; }
      if (score < 72) { return "Wysoki"; }
      return "Najpierw podstawy";
    }
    if (score < 28) { return "Mała"; }
    if (score < 54) { return "Umiarkowana"; }
    if (score < 78) { return "Duża"; }
    return "Bardzo duża";
  }

  function categoryContent(category) {
    var content = {
      central: {
        css: "is-central",
        badge: "Sterowanie centralne",
        title: "Pogodówka i przepływy mogą wykonać większość pracy",
        lead: "Warunki nie wskazują na dużą potrzebę zamykania wielu pętli. Utrzymuj stabilną temperaturę wody i wyregulowane obwody, a automatykę pokojową traktuj jako ograniczenie wybranych wyjątków."
      },
      selective: {
        css: "is-selective",
        badge: "Sterowanie selektywne",
        title: "Hybryda: sterowanie tylko tam, gdzie jest potrzebne",
        lead: "Regulacja pogodowa i wyregulowane przepływy powinny prowadzić instalację, a termostaty mogą ograniczać wybrane pomieszczenia o innych zyskach lub harmonogramach."
      },
      zoned: {
        css: "is-zoned",
        badge: "Rozbudowane strefowanie",
        title: "Pełniejsze sterowanie strefowe ma uzasadnienie funkcjonalne",
        lead: "Pomieszczenia wyraźnie różnią się temperaturami, zyskami lub sposobem użytkowania. Podział na strefy może poprawić kontrolę, jeżeli przepływ źródła i hydraulika pozostaną zabezpieczone."
      },
      foundation: {
        css: "is-foundation",
        badge: "Najpierw uporządkuj podstawy",
        title: "Nie zaczynaj od zakupu pełnego zestawu termostatów",
        lead: "Wprowadzone dane wskazują na brak regulacji, niepewny przepływ albo nieuporządkowaną pracę źródła. Automatyka mogłaby zamaskować problem lub zwiększyć ryzyko hydrauliczne."
      }
    };
    return content[category];
  }

  function sourceLabel(source) {
    if (source === "heat-pump") { return "Pompa ciepła"; }
    if (source === "gas") { return "Kocioł gazowy kondensacyjny"; }
    if (source === "pellet") { return "Kocioł na pellet lub paliwo stałe"; }
    if (source === "electric") { return "Kocioł elektryczny"; }
    return "Źródło wymagające doprecyzowania";
  }

  function buildRecommendations(data, scores, category) {
    var items = [];
    if (category === "foundation") {
      items.push("Ustal przepływy pętli i wymagania źródła przed wyborem liczby termostatów.");
      items.push("Sprawdź regulację temperatury zasilania oraz wariant zamknięcia sterowanych obwodów.");
      items.push("Zaplanuj strefy na rzucie, ale nie uruchamiaj ich jako sposobu naprawy hydrauliki.");
    }
    if (category === "central") {
      items.push("Oprzyj pracę na regulacji temperatury wody i prawidłowych przepływach.");
      items.push("Rozważ jeden czujnik referencyjny albo termostaty tylko w wyjątkowych pomieszczeniach.");
      items.push("Unikaj krótkich, agresywnych harmonogramów dla ciężkiej podłogi.");
    }
    if (category === "selective") {
      items.push("Wybierz kilka stref o innych temperaturach, zyskach lub godzinach użytkowania.");
      items.push("Pozostaw stabilną bazę hydrauliczną zgodnie z projektem i wymaganiami źródła.");
      items.push("Traktuj termostaty jako ograniczniki, a nie główny sposób ustawiania mocy podłogi.");
    }
    if (category === "zoned") {
      items.push("Przypisz wszystkie pętle do jednoznacznych stref funkcjonalnych.");
      items.push("Zaprojektuj sygnał do pompy i źródła dla sytuacji częściowego zapotrzebowania.");
      items.push("Sprawdź hydraulikę przy jednoczesnym zamknięciu planowanej liczby obwodów.");
    }
    if (data.source === "heat-pump") { items.push("Prowadź pompę ciepła możliwie niską temperaturą i ogranicz częste wyłączanie całego źródła."); }
    if (data.mass === "heavy") { items.push("Wprowadzaj tylko łagodne zmiany nastaw i oceniaj wynik po pełnym cyklu cieplnym."); }
    if (data.floor === "sensitive") { items.push("Rozważ czujnik podłogowy jako ogranicznik zgodny z wymaganiami okładziny."); }
    if (scores.closureRatio > 0.75) { items.push("Przeanalizuj wariant, w którym znaczna część planowanych siłowników zamknie się jednocześnie."); }
    return items;
  }

  function buildComponents(data, category) {
    var items = [];
    if (data.weather !== "yes") { items.push("Regulacja pogodowa źródła albo właściwie sterowany obieg mieszający."); }
    if (category === "central") { items.push("Czujnik referencyjny lub prosta kontrola centralna bez siłownika na każdej pętli."); }
    if (category === "selective") { items.push("Termostaty i siłowniki tylko dla wybranych stref funkcjonalnych."); }
    if (category === "zoned") { items.push("Listwa z odpowiednią liczbą wejść oraz termostaty i siłowniki dla zaprojektowanych stref."); }
    if (category === "foundation") { items.push("Dokumentacja przepływów, nastaw i logiki pracy przed zakupem automatyki."); }
    items.push("Pompa obiegowa dobrana do przepływu i zmian oporu po zamknięciu zaworów.");
    if (data.floor === "sensitive") { items.push("Regulator obsługujący ogranicznik podłogi oraz wymienny czujnik w peszlu."); }
    if (data.wiring === "retrofit") { items.push("System radiowy ze sprawdzonym zasięgiem i zasilaniem przy rozdzielaczu."); }
    if (data.wiring === "wired") { items.push("Opisane przewody termostatów, zasilania i sygnału źródła doprowadzone przed tynkami."); }
    if (data.wiring === "flexible") { items.push("Porównanie wersji przewodowej i radiowej pod kątem serwisu oraz rozbudowy."); }
    return items;
  }

  function buildRisks(data, scores) {
    var items = [];
    if (data.balance === "none") { items.push("Brak regulacji hydraulicznej — siłowniki nie ustalą poprawnych przepływów po otwarciu stref."); }
    if (data.balance === "unknown") { items.push("Nieznane przepływy utrudniają ocenę mocy i zachowania instalacji po otwarciu pętli."); }
    if (scores.closureRatio > 0.65) { items.push("Duży udział sterowanych pętli może istotnie zmienić przepływ całkowity i punkt pracy pompy."); }
    if (data.source === "heat-pump") {
      if (data.minFlow === "unknown") { items.push("Nieznany minimalny przepływ pompy ciepła trzeba sprawdzić przed uruchomieniem stref."); }
      if (data.minFlow === "not-secured") { items.push("Minimalny przepływ pompy ciepła może nie zostać zachowany po zamknięciu obwodów."); }
    }
    if (data.weather === "no") { items.push("Stała temperatura zasilania może powodować przegrzewanie, którego termostaty będą tylko okresowo pilnować."); }
    if (data.weather === "unknown") { items.push("Nieznany sposób regulacji temperatury wody uniemożliwia ocenę pełnej logiki systemu."); }
    if (data.mass === "heavy") { items.push("Duża bezwładność ogranicza skuteczność krótkich harmonogramów i szybkich korekt."); }
    if (data.floor === "unknown") { items.push("Nieznane wymagania okładziny należy ustalić przed wyborem limitu temperatury podłogi."); }
    if (items.length === 0) { items.push("Brak oczywistego ryzyka w podanych danych, ale nadal trzeba potwierdzić parametry urządzeń i przepływy."); }
    return items;
  }

  function setState(id, text, warning) {
    var element = byId(id);
    if (!element) { return; }
    element.textContent = text;
    element.className = "rk-controls-system-state";
    if (warning) { element.className += " is-warn"; }
  }

  function renderSystemPath(data, category) {
    var sourceText = sourceLabel(data.source);
    if (data.weather === "yes") { sourceText += " prowadzona regulacją pogodową"; }
    if (data.weather === "no") { sourceText += " ze stałą temperaturą zasilania"; }
    if (data.weather === "unknown") { sourceText += " — sposób regulacji nieznany"; }
    setText("rk-controls-path-source", sourceText);
    setState("rk-controls-state-source", data.weather === "yes" ? "baza systemu" : "ustal regulację wody", data.weather !== "yes");

    var hydraulicText = "Przepływ i objętość wymagają potwierdzenia";
    var hydraulicWarn = true;
    if (data.minFlow === "secured") {
      hydraulicText = "Minimalny przepływ został określony jako zapewniony";
      hydraulicWarn = false;
    }
    if (data.minFlow === "not-secured") { hydraulicText = "Minimalny przepływ może zostać utracony po zamknięciu stref"; }
    if (data.minFlow === "not-applicable") {
      hydraulicText = "Obieg źródła jest rozpatrywany oddzielnie od pętli";
      hydraulicWarn = false;
    }
    setText("rk-controls-path-hydraulic", hydraulicText);
    setState("rk-controls-state-hydraulic", hydraulicWarn ? "sprawdź przepływ" : "warunek zadeklarowany", hydraulicWarn);

    var distributionText = "Projektowe lub wyregulowane przepływy pętli";
    var distributionWarn = false;
    if (data.balance === "unknown") {
      distributionText = "Brak znanych przepływów dla poszczególnych pętli";
      distributionWarn = true;
    }
    if (data.balance === "none") {
      distributionText = "Pętle nie zostały wyregulowane hydraulicznie";
      distributionWarn = true;
    }
    setText("rk-controls-path-distribution", distributionText);
    setState("rk-controls-state-distribution", distributionWarn ? "najpierw wyreguluj" : "nie zastępuj automatyką", distributionWarn);

    var zoneText = "Wybrane strefy z termostatami i siłownikami";
    var zoneState = "sterowanie selektywne";
    var zoneWarn = false;
    if (category === "central") {
      zoneText = "Stabilna baza z ogranicznikami tylko w wyjątkowych pomieszczeniach";
      zoneState = "sterowanie centralne";
    }
    if (category === "zoned") {
      zoneText = "Zaprojektowane strefy funkcjonalne z przypisanymi pętlami";
      zoneState = "szersze strefowanie";
    }
    if (category === "foundation") {
      zoneText = "Podział stref odłóż do czasu uporządkowania przepływów i źródła";
      zoneState = "wstrzymaj dobór urządzeń";
      zoneWarn = true;
    }
    setText("rk-controls-path-zones", zoneText);
    setState("rk-controls-state-zones", zoneState, zoneWarn);
  }

  function drawResponseChart(data) {
    var canvas = byId("rk-controls-response-chart");
    if (!canvas) { return; }
    var context = canvas.getContext("2d");
    if (!context) { return; }
    var wrapperWidth = canvas.parentElement ? canvas.parentElement.clientWidth : 760;
    var width = Math.max(310, wrapperWidth);
    var height = 295;
    var pixelRatio = window.devicePixelRatio || 1;
    canvas.width = Math.round(width * pixelRatio);
    canvas.height = Math.round(height * pixelRatio);
    canvas.style.width = width + "px";
    canvas.style.height = height + "px";
    context.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);
    context.clearRect(0, 0, width, height);

    var padding = {left: 55, right: 22, top: 26, bottom: 45};
    var plotWidth = width - padding.left - padding.right;
    var plotHeight = height - padding.top - padding.bottom;
    var tau = 4.5;
    var massName = "standardowy jastrych";
    if (data.mass === "light") {
      tau = 1.7;
      massName = "lekki system";
    }
    if (data.mass === "heavy") {
      tau = 8.5;
      massName = "gruba płyta akumulacyjna";
    }

    context.font = "11px system-ui, sans-serif";
    context.lineWidth = 1;
    for (var grid = 0; grid <= 4; grid += 1) {
      var y = padding.top + plotHeight * grid / 4;
      context.strokeStyle = "#d6e3e8";
      context.beginPath();
      context.moveTo(padding.left, y);
      context.lineTo(width - padding.right, y);
      context.stroke();
      context.fillStyle = "#647983";
      context.textAlign = "right";
      context.fillText(String(100 - grid * 25) + "%", padding.left - 7, y + 4);
    }
    for (var hourGrid = 0; hourGrid <= 6; hourGrid += 1) {
      var hourValue = hourGrid * 2;
      var xGrid = padding.left + plotWidth * hourValue / 12;
      context.strokeStyle = "#edf3f5";
      context.beginPath();
      context.moveTo(xGrid, padding.top);
      context.lineTo(xGrid, height - padding.bottom);
      context.stroke();
      context.fillStyle = "#647983";
      context.textAlign = "center";
      context.fillText(String(hourValue) + " h", xGrid, height - 22);
    }

    function pointX(hour) { return padding.left + plotWidth * hour / 12; }
    function pointY(percent) { return padding.top + plotHeight * (1 - percent / 100); }

    context.strokeStyle = "#078fbe";
    context.lineWidth = 3;
    context.beginPath();
    context.moveTo(pointX(0), pointY(100));
    context.lineTo(pointX(2), pointY(100));
    context.lineTo(pointX(2), pointY(0));
    context.lineTo(pointX(12), pointY(0));
    context.stroke();

    context.strokeStyle = "#ff6a3d";
    context.lineWidth = 3;
    context.beginPath();
    for (var index = 0; index <= 48; index += 1) {
      var hour = index * 0.25;
      var emission = 58 + hour / 2 * 27;
      if (hour > 2) { emission = 85 * Math.exp(-(hour - 2) / tau); }
      emission = clamp(emission, 0, 100);
      var x = pointX(hour);
      var yPoint = pointY(emission);
      if (index === 0) { context.moveTo(x, yPoint); }
      else { context.lineTo(x, yPoint); }
    }
    context.stroke();

    context.strokeStyle = "#d94b3d";
    context.lineWidth = 1.5;
    context.setLineDash([5, 5]);
    context.beginPath();
    context.moveTo(pointX(2), padding.top);
    context.lineTo(pointX(2), height - padding.bottom);
    context.stroke();
    context.setLineDash([]);
    context.fillStyle = "#a43f34";
    context.textAlign = "left";
    context.fillText("zamknięcie siłownika", pointX(2) + 7, padding.top + 14);

    context.save();
    context.translate(15, padding.top + plotHeight / 2);
    context.rotate(-Math.PI / 2);
    context.fillStyle = "#526a76";
    context.textAlign = "center";
    context.fillText("wartość względna", 0, 0);
    context.restore();

    var description = "Model referencyjny dla konstrukcji: " + massName + ". Po odcięciu przepływu emisja nie spada natychmiast, ponieważ energia pozostaje w podłodze. Wykres nie przewiduje temperatury konkretnego pomieszczenia.";
    setText("rk-controls-chart-description", description);
  }

  function renderDiagnostics(data, scores, category) {
    var diagnostics = [];
    var closurePercent = Math.round(scores.closureRatio * 100);
    diagnostics.push({warn: closurePercent > 65, text: "Siłownikami ma być objęte około " + closurePercent + "% pętli. To nie jest prognoza jednoczesnego zamknięcia, lecz wariant wymagający sprawdzenia hydraulicznego."});
    if (data.weather === "yes") {
      diagnostics.push({warn: false, text: "Zadeklarowano regulację pogodową. Termostaty mogą pełnić funkcję lokalnych ograniczników zamiast sterować temperaturą wody dla całego domu."});
    } else {
      diagnostics.push({warn: true, text: "Brak potwierdzonej regulacji pogodowej. Najpierw ustal sposób prowadzenia temperatury zasilania, aby strefy nie walczyły ze zbyt gorącą wodą."});
    }
    if (data.mass === "heavy") {
      diagnostics.push({warn: true, text: "Duża masa podłogi oznacza wolną reakcję. Krótkie obniżenia i szybkie przełączanie mogą nie przynieść oczekiwanego efektu w czasie użytkowania."});
    } else {
      diagnostics.push({warn: false, text: "Wybrana konstrukcja ma mniejszą lub standardową bezwładność, ale nadal wymaga obserwacji pełnych cykli cieplnych po zmianie nastaw."});
    }
    if (category === "foundation") {
      diagnostics.push({warn: true, text: "Wynik nie odrzuca automatyki. Wskazuje tylko, że kolejność prac powinna rozpocząć się od źródła, przepływów i przypisania pętli."});
    } else {
      diagnostics.push({warn: false, text: "Wynik opisuje koncepcję sterowania, a nie listę zakupową. Dokładna liczba urządzeń wynika z podziału pętli na strefy."});
    }
    diagnostics.push({warn: true, text: "Analizator celowo nie wyświetla procentu oszczędności ani czasu zwrotu. Bez pomiaru stanu wyjściowego takie liczby byłyby założeniem, a nie wynikiem obliczeń."});
    var container = byId("rk-controls-diagnostics");
    if (!container) { return; }
    container.innerHTML = diagnostics.map(function (item) {
      var className = item.warn ? "rk-controls-diagnostic is-warn" : "rk-controls-diagnostic";
      return "<div class=\"" + className + "\">" + item.text + "</div>";
    }).join("");
  }

  function renderResult(data, scores, category) {
    var content = categoryContent(category);
    var hero = byId("rk-controls-result-hero");
    if (hero) { hero.className = "rk-controls-result-hero " + content.css; }
    setText("rk-controls-result-badge", content.badge);
    setText("rk-controls-result-title", content.title);
    setText("rk-controls-result-lead", content.lead);

    setText("rk-controls-benefit-label", scoreLabel(scores.benefit, "benefit"));
    setText("rk-controls-inertia-label", scoreLabel(scores.inertia, "inertia"));
    setText("rk-controls-hydraulic-label", scoreLabel(scores.hydraulic, "risk"));
    setText("rk-controls-foundation-label", scoreLabel(scores.foundation, "foundation"));
    var benefitBar = byId("rk-controls-benefit-bar");
    var inertiaBar = byId("rk-controls-inertia-bar");
    var hydraulicBar = byId("rk-controls-hydraulic-bar");
    var foundationBar = byId("rk-controls-foundation-bar");
    if (benefitBar) { benefitBar.style.width = scores.benefit + "%"; }
    if (inertiaBar) { inertiaBar.style.width = scores.inertia + "%"; }
    if (hydraulicBar) { hydraulicBar.style.width = scores.hydraulic + "%"; }
    if (foundationBar) { foundationBar.style.width = scores.foundation + "%"; }

    setList("rk-controls-recommendations", buildRecommendations(data, scores, category));
    setList("rk-controls-components", buildComponents(data, category));
    setList("rk-controls-risks", buildRisks(data, scores));
    renderSystemPath(data, category);
    drawResponseChart(data);
    renderDiagnostics(data, scores, category);
  }

  function calculate() {
    var data = readData();
    var errors = validateData(data);
    var errorBox = byId("rk-controls-error");
    if (errors.length > 0) {
      if (errorBox) {
        errorBox.textContent = errors.join(" ");
        errorBox.classList.add("is-visible");
      }
      return;
    }
    if (errorBox) {
      errorBox.textContent = "";
      errorBox.classList.remove("is-visible");
    }
    var scores = calculateScores(data);
    var category = chooseCategory(data, scores);
    renderResult(data, scores, category);
  }

  function resetAnalyzer() {
    Object.keys(defaults).forEach(function (id) {
      var element = byId(id);
      if (element) { element.value = String(defaults[id]); }
    });
    calculate();
  }

  var calculateButton = byId("rk-controls-calculate");
  var resetButton = byId("rk-controls-reset");
  if (calculateButton) { calculateButton.addEventListener("click", calculate); }
  if (resetButton) { resetButton.addEventListener("click", resetAnalyzer); }

  var analyzer = root.querySelector("[data-rk-controls-analyzer]");
  if (analyzer) {
    analyzer.querySelectorAll("input, select").forEach(function (field) {
      field.addEventListener("change", calculate);
      field.addEventListener("input", function () {
        window.clearTimeout(field.rkControlsTimer);
        field.rkControlsTimer = window.setTimeout(calculate, 220);
      });
    });
  }

  var navLinks = root.querySelectorAll(".rk-controls-nav-track a[href^='#']");
  navLinks.forEach(function (link) {
    link.addEventListener("click", function (event) {
      var target = root.querySelector(link.getAttribute("href"));
      if (!target) { return; }
      event.preventDefault();
      target.scrollIntoView({behavior: "smooth", block: "start"});
    });
  });

  function updateProgress() {
    var progress = root.querySelector(".rk-controls-progress");
    if (!progress) { return; }
    var documentElement = document.documentElement;
    var scrollTop = window.pageYOffset || documentElement.scrollTop || 0;
    var scrollable = documentElement.scrollHeight - documentElement.clientHeight;
    var percentage = scrollable > 0 ? scrollTop / scrollable * 100 : 0;
    progress.style.width = clamp(percentage, 0, 100) + "%";
  }

  var resizeTimer = 0;
  window.addEventListener("scroll", updateProgress, {passive: true});
  window.addEventListener("resize", function () {
    window.clearTimeout(resizeTimer);
    resizeTimer = window.setTimeout(calculate, 140);
  });

  calculate();
  updateProgress();
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/">Czy warto montować sterowniki do ogrzewania podłogowego?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
