<?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 Automatyka domowa - Projekt Ogrzewania</title>
	<atom:link href="https://projekt-ogrzewania.pl/category/automatyka-domowa/feed/" rel="self" type="application/rss+xml" />
	<link>https://projekt-ogrzewania.pl/category/automatyka-domowa/</link>
	<description>Twój partner w projektowaniu komfortu – profesjonalne ogrzewanie podłogowe dla Twojego domu.</description>
	<lastBuildDate>Tue, 07 Jul 2026 06:04:55 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.2</generator>

<image>
	<url>https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1-32x32.jpg</url>
	<title>Archiwa Automatyka domowa - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/category/automatyka-domowa/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Czujnik podłogowy.</title>
		<link>https://projekt-ogrzewania.pl/czujnik-podlogowy/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Fri, 23 Jan 2026 09:23:24 +0000</pubDate>
				<category><![CDATA[Automatyka domowa]]></category>
		<category><![CDATA[Automatyka grzewcza]]></category>
		<category><![CDATA[Czujniki]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Instalacje hydrauliczne]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradniki dla inwestorów]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Porady techniczne]]></category>
		<category><![CDATA[Sterowanie ogrzewaniem]]></category>
		<category><![CDATA[Termostaty]]></category>
		<category><![CDATA[automatyka grzewcza]]></category>
		<category><![CDATA[czujnik ntc]]></category>
		<category><![CDATA[czujnik podłogowy]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[komfort cieplny]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[pid]]></category>
		<category><![CDATA[sterowanie ogrzewaniem]]></category>
		<category><![CDATA[temperatura podłogi]]></category>
		<category><![CDATA[termostat]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3277</guid>

					<description><![CDATA[<p>Czujnik podłogowy to niewielki element instalacji, który w praktyce decyduje o komforcie, bezpieczeństwie i kosztach eksploatacji ogrzewania podłogowego. Choć często traktowany jako dodatek do termostatu, w rzeczywistości pełni rolę „zmysłu” całego systemu – dostarczając kluczowych informacji o temperaturze posadzki. W artykule wyjaśniamy, jak działa czujnik podłogowy, jakie są jego typy, gdzie powinien być montowany oraz dlaczego jego brak może prowadzić do przegrzewania podłogi, dyskomfortu użytkowników i strat energii. To praktyczny przewodnik zarówno dla inwestorów, jak i projektantów instalacji.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/czujnik-podlogowy/">Czujnik podłogowy.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><strong>Czujnik podłogowy</strong>&nbsp;to małe, często niedoceniane urządzenie, które pełni kluczową rolę w nowoczesnym systemie wodnego ogrzewania podłogowego. Podczas gdy rury, pompy i zawory mieszające stanowią „serce” i „układ krwionośny” instalacji, to właśnie ten niepozorny element jest jej „mózgiem czuciowym”. Jego zadaniem jest ciągłe monitorowanie temperatury posadzki, co przekłada się bezpośrednio na komfort użytkowania, bezpieczeństwo wykończenia podłogi oraz realne oszczędności energii. W tym technicznym, ale przystępnym artykule, zagłębimy się w zasadę działania, rodzaje, kryteria doboru i niezwykle ważny aspekt prawidłowego montażu tego czujnika.</p>



<h2 class="wp-block-heading">Rola i znaczenie czujnika temperatury podłogi w pętli grzewczej.</h2>



<p class="wp-block-paragraph">Aby w pełni zrozumieć <strong>znaczenie czujnika podłogowego</strong>, trzeba najpierw uświadomić sobie specyfikę ogrzewania powierzchniowego. W przeciwieństwie do grzejników, które nagrzewają powietrze (konwekcja), podłogówka oddaje ciepło głównie przez promieniowanie. Jej największą zaletą – równomierny rozkład temperatury – jest jednocześnie wyzwaniem dla systemu regulacji. Instalacja ma dużą <strong><a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">bezwładność cieplną</a></strong>. Oznacza to, że od momentu włączenia zasilania do momentu, gdy odczuwamy komfort w pomieszczeniu, mija sporo czasu. Podobnie, po osiągnięciu zadanej temperatury, podłoga jeszcze długo oddaje zmagazynowane ciepło.</p>



<p class="wp-block-paragraph">Bez&nbsp;<strong>sondy podłogowej</strong>&nbsp;sterownik lub termostat działałby tylko na podstawie temperatury powietrza w pomieszczeniu (<em>czujnika powietrza</em>). To prowadzi do kilku problemów:</p>



<ol start="1" class="wp-block-list">
<li><strong>Cyklowanie systemu:</strong>&nbsp;Gdy w pomieszczeniu jest już ciepło, ale wylewka jest jeszcze zimna, termostat wyłączy zasilanie. Gdy powietrze nieco ostygnie, włączy je ponownie, powodując częste, nieefektywne cykle pracy pompy i zaworu.</li>



<li><strong>Dyskomfort i przegrzanie:</strong>&nbsp;Latem lub w słoneczny dzień, temperatura powietrza może wzrosnąć (np. od nasłonecznienia), podczas gdy podłoga pozostaje chłodna. Termostat nie włączy ogrzewania, choć użytkownik może odczuwać chłód od stóp. Sytuacja odwrotna: przy niskiej temperaturze zewnętrznej, system dążyłby do szybkiego podniesienia temperatury powietrza, co mogłoby skutkować&nbsp;<em>przegrzaniem posadzki</em>&nbsp;nawet powyżej 35°C, co jest niekomfortowe i szkodliwe dla wielu materiałów wykończeniowych.</li>



<li><strong>Marnotrawstwo energii:</strong>&nbsp;Brak precyzyjnego pomiaru temperatury nośnika ciepła (wylewki) uniemożliwia optymalizację pracy źródła ciepła (pompy ciepła, kotła kondensacyjnego).</li>
</ol>



<p class="wp-block-paragraph"><strong>Czujnik podłogowy</strong>, mierząc bezpośrednio temperaturę masy akumulacyjnej, eliminuje te problemy. Działa jak&nbsp;<strong>limit bezpieczeństwa i optymalizator</strong>. Jego podstawową funkcją jest zapewnienie, aby temperatura powierzchni podłogi znajdowała się w bezpiecznym i komfortowym zakresie, zwykle między 21°C (w sypialni) a 29°C (w łazience lub na obrzeżach przeszklonych pomieszczeń).</p>



<h2 class="wp-block-heading">Budowa, typy i parametry techniczne czujników.</h2>



<p class="wp-block-paragraph">W praktyce instalacyjnej spotyka się głównie czujniki rezystancyjne, których opór elektryczny zmienia się w przewidywalny sposób wraz z temperaturą.</p>



<h3 class="wp-block-heading"><strong>Rezystancyjne czujniki temperatury (NTC i PTC)</strong>.</h3>



<ul class="wp-block-list">
<li><strong>NTC (Negative Temperature Coefficient):</strong>&nbsp;To absolutnie dominujący typ w instalacjach grzewczych. Jego rezystancja&nbsp;<strong>maleje</strong>&nbsp;wraz ze&nbsp;<strong>wzrostem</strong>&nbsp;temperatury. Jest precyzyjny w zakresie temperatur pracy ogrzewania podłogowego (20-50°C). Standardowe wartości nominalne to&nbsp;<strong>10 kΩ</strong>,&nbsp;<strong>12 kΩ</strong>&nbsp;lub&nbsp;<strong>15 kΩ</strong>&nbsp;w temperaturze 25°C.&nbsp;<em>Kluczowa zasada: czujnik NTC musi być dopasowany do konkretnego modelu termostatu lub sterownika, zgodnie z instrukcją producenta.</em></li>



<li><strong>PTC (Positive Temperature Coefficient):</strong>&nbsp;Rzadziej stosowane. Ich rezystancja&nbsp;<strong>rośnie</strong>&nbsp;wraz ze&nbsp;<strong>wzrostem</strong>&nbsp;temperatury. Częściej znajdują zastosowanie jako zabezpieczenia przeciwprzegrzaniowe.</li>
</ul>



<p class="wp-block-paragraph">Czujnik to nie tylko sam sensoryk. To kompletny zestaw:&nbsp;<strong>głowica pomiarowa</strong>&nbsp;(zwykle w metalowej lub silikonowej obudowie) umieszczona na końcu&nbsp;<strong>dwuprowadzeniowego, elastycznego kabla</strong>&nbsp;o określonej długości (standardowo 3m lub 5m). Kabel musi być odporny na wilgoć, wysoką temperaturę i uszkodzenia mechaniczne, ponieważ będzie zalany w wylewce.</p>



<h3 class="wp-block-heading"><strong>Przykład obliczeniowy: kalibracja czujnika NTC</strong>.</h3>



<p class="wp-block-paragraph">Zrozumienie, jak termostat interpretuje odczyt, jest proste. Producent załącza tabelę, która przyporządkowuje wartość rezystancji konkretnej temperaturze. Dla popularnego czujnika NTC 10kΩ (B=3435) wygląda to następująco:</p>



<style>
.ntc-table {
  width: 100%;
  border-collapse: collapse;
  font-family: Arial, sans-serif;
  margin: 20px 0;
}

.ntc-table th,
.ntc-table td {
  padding: 12px 14px;
  border: 1px solid #e0e0e0;
  text-align: left;
}

.ntc-table th {
  background-color: #f5f5f5;
  font-weight: 700;
}

.ntc-table tr:nth-child(even) {
  background-color: #fafafa;
}

/* Styl alarmowy */
.ntc-alert {
  color: #b00020;
  font-weight: bold;
}

/* RESPONSYWNOŚĆ */
@media (max-width: 768px) {
  .ntc-table,
  .ntc-table thead,
  .ntc-table tbody,
  .ntc-table th,
  .ntc-table td,
  .ntc-table tr {
    display: block;
  }

  .ntc-table thead {
    display: none;
  }

  .ntc-table tr {
    margin-bottom: 16px;
    border: 1px solid #ddd;
    padding: 10px;
    background: #fff;
  }

  .ntc-table td {
    border: none;
    padding: 8px 0;
  }

  .ntc-table td::before {
    content: attr(data-label);
    font-weight: bold;
    display: block;
    color: #555;
    margin-bottom: 2px;
  }
}
</style>

<table class="ntc-table">
  <thead>
    <tr>
      <th>Temperatura [°C]</th>
      <th>Wartość rezystancji [Ω]</th>
      <th>Interpretacja dla sterownika</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td data-label="Temperatura [°C]">5</td>
      <td data-label="Wartość rezystancji [Ω]">~ 18 350</td>
      <td data-label="Interpretacja">Podłoga bardzo zimna, maksymalne żądanie ciepła</td>
    </tr>
    <tr>
      <td data-label="Temperatura [°C]">20</td>
      <td data-label="Wartość rezystancji [Ω]">~ 12 150</td>
      <td data-label="Interpretacja">Granica komfortu w pomieszczeniu dziennym</td>
    </tr>
    <tr>
      <td data-label="Temperatura [°C]">25</td>
      <td data-label="Wartość rezystancji [Ω]">~ 10 000 <strong>(wartość nominalna)</strong></td>
      <td data-label="Interpretacja">Punkt odniesienia</td>
    </tr>
    <tr>
      <td data-label="Temperatura [°C]">29</td>
      <td data-label="Wartość rezystancji [Ω]">~ 8 170</td>
      <td data-label="Interpretacja">Maksymalna, bezpieczna temperatura dla paneli podłogowych</td>
    </tr>
    <tr>
      <td data-label="Temperatura [°C]">35</td>
      <td data-label="Wartość rezystancji [Ω]">~ 6 530</td>
      <td data-label="Interpretacja" class="ntc-alert">
        Temperatura alarmowa – ryzyko uszkodzenia podłogi!
      </td>
    </tr>
  </tbody>
</table>



<p class="wp-block-paragraph">Gdy ustawiamy na termostacie żądaną&nbsp;<strong>temperaturę podłogi</strong>&nbsp;na 27°C, sterownik ciągle mierzy rezystancję czujnika. Gdy odpowiada ona ok. ~8.800Ω, system wie, że cel został osiągnięty i moduluje pracę (zamyka zawór, wyłącza pompę obiegową).</p>



<h2 class="wp-block-heading">Tryby współpracy czujnika podłogowego z termostatem: od prostych do zaawansowanych.</h2>



<p class="wp-block-paragraph">To, w jaki sposób informacja z&nbsp;<strong>sondy podłogowej</strong>&nbsp;jest wykorzystywana, zależy od możliwości sterownika. Wyróżniamy kilka trybów pracy:</p>



<h3 class="wp-block-heading"><strong>1. Tryb regulacji temperatury podłogi (PI lub PID)</strong>.</h3>



<p class="wp-block-paragraph">Najczęstszy i najważniejszy tryb.&nbsp;<strong>Czujnik podłogowy</strong>&nbsp;jest&nbsp;<strong>jedynym źródłem informacji</strong>&nbsp;dla algorytmu sterującego. Termostat dąży do utrzymania stałej, zadanej temperatury w podłodze. Jest to niezwykle stabilny i bezpieczny tryb, idealny do pomieszczeń, w których podłogówka jest jedynym źródłem ciepła. Algorytm&nbsp;<strong>PID</strong>&nbsp;(Proporcjonalno-Całkująco-Różniczkujący) nie tylko reaguje na bieżącą różnicę temperatur (P), ale też analizuje, jak długo utrzymywał się błąd (I) i jak szybko temperatura się zmienia (D), by precyzyjnie zapobiegać przegrzaniu lub niedogrzaniu.</p>



<h3 class="wp-block-heading"><strong>2. Tryb regulacji mieszanej (ogranicznik podłogi)</strong>.</h3>



<p class="wp-block-paragraph">W tym trybie&nbsp;<strong>priorytetem jest temperatura powietrza</strong>&nbsp;w pomieszczeniu, mierzona przez wbudowany w termostacie&nbsp;<strong>czujnik powietrza</strong>.&nbsp;<strong>Sonda podłogowa</strong>&nbsp;pełni wyłącznie&nbsp;<strong>funkcję zabezpieczającą</strong>. Na przykład: ustawiamy żądaną temperaturę powietrza na 22°C, a limit temperatury podłogi na 28°C. System grzeje, aby osiągnąć 22°C w powietrzu, ale&nbsp;<strong>absolutnie nigdy nie pozwoli</strong>, aby podłoga przekroczyła 28°C, nawet jeśli oznacza to lekki niedobór ciepła w pomieszczeniu. To doskonały tryb dla instalacji uzupełniających (np. podłogówka + kominek).</p>



<h3 class="wp-block-heading"><strong>3. Tryb adaptacyjny (z funkcją samouczącą)</strong>.</h3>



<p class="wp-block-paragraph">Zaawansowane sterowniki, analizując dane z&nbsp;<strong>czujnika podłogowego</strong>&nbsp;(jak szybko rośnie lub spada temperatura przy danym otwarciu zaworu) oraz porównując je z temperaturą zewnętrzną, potrafią&nbsp;<strong>antycypować</strong>&nbsp;zapotrzebowanie na ciepło. Na przykład, widząc gwałtowny spadek temperatury na zewnątrz, system może wcześniej zacząć delikatnie dogrzewać podłogę, zanim użytkownik odczuje dyskomfort. Skraca to czas reakcji systemu o dużej bezwładności.</p>



<style>
.chart-wrap {
  max-width: 960px;
  margin: 40px auto;
  font-family: Arial, sans-serif;
}

.chart-title {
  font-size: 20px;
  font-weight: bold;
  margin-bottom: 12px;
}

.chart-subtitle {
  font-size: 14px;
  color: #555;
  margin-bottom: 10px;
}
</style>

<div class="chart-wrap">
  <div class="chart-title">
    Zależność trybu pracy od temperatury i czasu
  </div>
  <div class="chart-subtitle">
    Schemat ideowy – nie przedstawia rzeczywistych pomiarów
  </div>

  <svg viewBox="0 0 900 420" width="100%" height="auto" aria-label="Wykres zależności trybu pracy ogrzewania od temperatury i czasu">

    <!-- Osie -->
    <line x1="90" y1="40" x2="90" y2="350" stroke="#333" stroke-width="2"/>
    <line x1="90" y1="350" x2="860" y2="350" stroke="#333" stroke-width="2"/>

    <!-- Opisy osi -->
    <text x="30" y="220" font-size="14" transform="rotate(-90 30 220)">
      Temperatura
    </text>
    <text x="790" y="395" font-size="14">
      Czas →
    </text>

    <!-- STREFA RYZYKA – TRYB POWIETRZNY -->
    <path d="M90 130 Q300 70 860 100 L860 40 L90 40 Z"
          fill="rgba(198,40,40,0.15)"/>
    <text x="120" y="70" font-size="13" fill="#b71c1c">
      Tryb powietrzny – brak limitu temperatury podłogi (ryzyko przegrzania)
    </text>

    <!-- LINIA LIMITU – TRYB MIESZANY -->
    <line x1="90" y1="200" x2="860" y2="200"
          stroke="#ef6c00" stroke-width="3" stroke-dasharray="6 6"/>
    <text x="120" y="188" font-size="13" fill="#ef6c00">
      Tryb mieszany – limit maksymalnej temperatury podłogi
    </text>

    <!-- KRZYWA PID – TRYB PODŁOGOWY -->
    <path d="M90 280 Q300 220 860 245"
          fill="none" stroke="#2e7d32" stroke-width="3"/>
    <text x="120" y="235" font-size="13" fill="#2e7d32">
      Tryb podłogowy PID – stabilizacja temperatury
    </text>

  </svg>
</div>



<p class="wp-block-paragraph"><em>Opis: Wykres obrazuje, jak tryb oparty tylko na temperaturze powietrza może prowadzić do niekontrolowanego przegrzania podłogi. Tryb podłogowy PID zapewnia stabilność, a tryb mieszany jest kompromisem z wbudowanym zabezpieczeniem.</em></p>



<h2 class="wp-block-heading">Projektowanie instalacji z uwzględnieniem czujnika podłogowego: gdzie, jak i po co?</h2>



<p class="wp-block-paragraph"><a href="https://projekt-ogrzewania.pl/kontakt/">Projektant instalacji grzewczej</a> musi traktować <strong>czujnik podłogowy</strong> jako <strong>element obowiązkowy</strong> każdej pętli grzewczej, a nie jako opcjonalny dodatek. Jego lokalizacja ma kluczowe znaczenie dla reprezentatywności pomiaru.</p>



<h3 class="wp-block-heading"><strong>Kluczowe zasady montażu czujnika w projekcie:</strong></h3>



<ol start="1" class="wp-block-list">
<li><strong>Lokalizacja w <a href="https://projekt-ogrzewania.pl/petla-grzewcza/">pętli</a>:</strong> Czujnik musi być umieszczony <strong>w połowie odległości między dwiema rurami grzewczymi</strong> i <strong>w odległości co najmniej 0,5-1,0 m od ściany zewnętrznej</strong> lub innych lokalnych źródeł chłodu/ciepła. Jego zadaniem jest mierzenie <strong>średniej temperatury płyty grzewczej</strong>, a nie temperatury bezpośrednio nad gorącą rurą.</li>



<li><strong>Głębokość instalacji:</strong>&nbsp;Optymalna głębokość to&nbsp;<strong>środek grubości wylewki</strong>&nbsp;(np. 4-5 cm pod powierzchnią przy wylewce 8-10 cm). Umieszczenie go zbyt płytko spowoduje zbyt szybką reakcję na zmiany, a zbyt głęboko – wydłuży czas reakcji systemu.</li>



<li><strong>Peszel (rurka osłonowa):</strong><strong>Absolutnie obowiązkowy element projektu.</strong>&nbsp;Czujnik&nbsp;<strong>zawsze</strong>&nbsp;prowadzi się w dedykowanej,&nbsp;<strong>giętkiej rurce osłonowej</strong>&nbsp;(peszlu) o średnicy min. 16 mm. Peszel:
<ul class="wp-block-list">
<li>Chroni czujnik podczas wylewania posadzki.</li>



<li><strong>Umożliwia wymianę uszkodzonego czujnika bez kucia podłogi!</strong>&nbsp;To najważniejsza funkcja.</li>



<li>Powinien być szczelnie zaizolowany od strony pomieszczenia, aby uniknąć pomiaru temperatury powietrza z termostatu.</li>
</ul>
</li>



<li><strong>Trasa prowadzenia:</strong>&nbsp;Peszel z czujnikiem prowadzi się od puszki pod termostat w dół, a następnie po łuku (promień min. 10 cm) w kierunku płyty grzewczej. Na końcu peszel powinien być&nbsp;<strong>szczelnie zatkany</strong>&nbsp;(np. taśmą) przed wylewką, aby zaprawa nie dostała się do środka.</li>
</ol>



<h3 class="wp-block-heading"><strong>Przykład z projektu: Łazienka 8m² z dwoma pętlami</strong>.</h3>



<ul class="wp-block-list">
<li><strong>Pomieszczenie:</strong>&nbsp;Łazienka, wymagana temp. podłogi: 27°C.</li>



<li><strong>Instalacja:</strong>&nbsp;Dwie pętle rury fi16, rozstaw co 15 cm, długości pętli 70m i 65m.</li>



<li><strong>Rozwiązanie projektowe:</strong>&nbsp;Jedno miejsce sterowania (termostat łazienkowy IP44). W projekcie&nbsp;<strong>rozpisano prowadzenie jednego peszla</strong>&nbsp;do płyty grzewczej. Ponieważ pętle są podobnej długości i obciążenia,&nbsp;<strong>czujnik podłogowy montuje się w pętli dłuższej (bardziej obciążonej)</strong>, aby jej temperatura była miarodajna dla całego pomieszczenia. Peszel prowadzony jest w odległości 70 cm od ściany, między rurami, na głębokość 5 cm. W specyfikacji technicznej zapisano:&nbsp;<em>„Termostat elektroniczny z czujnikiem powietrza i podłogowym NTC 10kΩ, peszel fi16 do wyprowadzenia w puszce podtermostatowej.”</em></li>
</ul>



<h2 class="wp-block-heading">Zaawansowane techniki: integracja z systemami budynku i optymalizacja.</h2>



<p class="wp-block-paragraph">W nowoczesnych, zintegrowanych systemach (knx, Loxone, inne systemy BMS)&nbsp;<strong>czujnik podłogowy</strong>&nbsp;przestaje być wyizolowanym elementem jednej pętli. Jego dane stają się częścią szerszego algorytmu zarządzania energią.</p>



<ul class="wp-block-list">
<li><strong>Optymalizacja pracy <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompy ciepła</a>:</strong> Sterownik, zbierając informacje z wielu <strong>czujników podłogowych</strong> w różnych strefach, może obliczyć średnią temperaturę zasilania wymaganą dla całego systemu. To pozwala pompcie ciepła pracować w <strong>najefektywniejszym punkcie swojej charakterystyki</strong>, z wyższym współczynnikiem COP.</li>



<li><strong>Regulacja pogodowa z korektą podłogową:</strong> Podstawowa regulacja pogodowa ustawia temperaturę zasilania na podstawie wykresu grzewczego i temperatury zewnętrznej. <strong>Dane z czujników podłogowych</strong> działają tu jako <strong>sprzężenie zwrotne</strong>. Jeśli mimo optymalnej (według krzywej) temperatury zasilania, podłoga w łazience jest za chłodna, system delikatnie podnosi <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">krzywą grzewczą</a> tylko dla tej strefy lub zwiększa priorytet dla zaworu mieszającego tej pętli.</li>



<li><strong>Mapowanie cieplne budynku:</strong>&nbsp;W bardzo zaawansowanych instalacjach dane historyczne z czujników podłogowych w połączeniu z czujnikami temperatury powietrza w pomieszczeniach są analizowane, aby stworzyć model strat ciepła budynku. System może np. „nauczyć się”, że pokój narożny na północ wymaga wcześniejszego rozpoczęcia grzania niż pokój południowy.</li>
</ul>



<h2 class="wp-block-heading">FAQ – Najczęstsze pytania.</h2>



<div class="schema-faq wp-block-yoast-faq-block"><div class="schema-faq-section" id="faq-question-1769159404388"><strong class="schema-faq-question"><strong>Czy czujnik podłogowy jest konieczny w ogrzewaniu podłogowym?</strong></strong> <p class="schema-faq-answer">Tak. Czujnik podłogowy jest kluczowy dla bezpieczeństwa i komfortu. Bez niego system reaguje wyłącznie na temperaturę powietrza, co może prowadzić do przegrzewania posadzki lub dyskomfortu użytkowników.</p> </div> <div class="schema-faq-section" id="faq-question-1769159460789"><strong class="schema-faq-question"><strong>Jaka jest bezpieczna temperatura podłogi?</strong></strong> <p class="schema-faq-answer">Dla większości pomieszczeń komfortowy i bezpieczny zakres to 21–27°C. W łazienkach dopuszcza się do ok. 29°C. Temperatury powyżej 35°C mogą uszkodzić podłogę.</p> </div> <div class="schema-faq-section" id="faq-question-1769159470613"><strong class="schema-faq-question"><strong>Gdzie najlepiej zamontować czujnik podłogowy?</strong></strong> <p class="schema-faq-answer">Czujnik należy umieścić w peszlu, pomiędzy dwiema rurami grzewczymi, w połowie grubości wylewki i z dala od ścian zewnętrznych oraz punktowych źródeł ciepła.</p> </div> <div class="schema-faq-section" id="faq-question-1769159494093"><strong class="schema-faq-question"><strong>Czy czujnik podłogowy można wymienić po zalaniu posadzki?</strong></strong> <p class="schema-faq-answer">Tak, ale tylko wtedy, gdy został zamontowany w rurce osłonowej (peszlu). Brak peszla oznacza konieczność kucia podłogi przy awarii czujnika.</p> </div> <div class="schema-faq-section" id="faq-question-1769159508565"><strong class="schema-faq-question"><strong>Czym różni się tryb podłogowy PID od trybu mieszanego?</strong></strong> <p class="schema-faq-answer">W trybie PID czujnik podłogowy jest głównym źródłem sterowania i zapewnia stabilną temperaturę posadzki. W trybie mieszanym czujnik pełni funkcję limitu bezpieczeństwa, a sterowanie odbywa się głównie na podstawie temperatury powietrza.</p> </div> </div>



<h2 class="wp-block-heading">Podsumowanie.</h2>



<p class="wp-block-paragraph"><strong>Czujnik podłogowy</strong>&nbsp;jest nieodzownym elementem wydajnej, bezpiecznej i komfortowej instalacji wodnego ogrzewania podłogowego. Jego koszt jest marginalny w porównaniu z całością inwestycji, a potencjalne korzyści – ogromne: od ochrony drogiego wykończenia posadzki (parkiet, panele winylowe), przez eliminację dyskomfortu „zimnych stóp” czy „przegrzanej podłogi”, po realne oszczędności na rachunkach za energię dzięki precyzyjnemu dozowaniu ciepła.</p>



<p class="wp-block-paragraph"><strong>Pamiętaj:</strong>&nbsp;Nawet najdroższy kocioł czy pompa ciepła nie będą pracować optymalnie, jeśli system dystrybucji ciepła (ogrzewanie podłogowe) jest sterowany „w ciemno”.&nbsp;<strong>Czujnik podłogowy</strong>&nbsp;dostarcza niezbędnych danych, które pozwalają zamienić prosty system grzewczy w inteligentną, samoregulującą się strukturę, dbającą o Twój komfort i portfel. Przy projektowaniu i wykonawstwie swojego ogrzewania podłogowego&nbsp;<strong>nalegaj na poprawne zainstalowanie czujników w peszlach</strong>&nbsp;– to najtańsze ubezpieczenie dla Twojej instalacji na lata.</p>



<figure class="wp-block-embed aligncenter is-type-wp-embed is-provider-projekt-ogrzewania wp-block-embed-projekt-ogrzewania"><div class="wp-block-embed__wrapper">
<blockquote class="wp-embedded-content" data-secret="0jHqqsyK58"><a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Projekt instalacji ogrzewania podłogowego &#8211; podłogówki</a></blockquote><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8222;Projekt instalacji ogrzewania podłogowego &#8211; podłogówki&#8221; &#8212; Projekt Ogrzewania" src="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/embed/#?secret=4d81KYYXqh#?secret=0jHqqsyK58" data-secret="0jHqqsyK58" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div></figure>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/czujnik-podlogowy/">Czujnik podłogowy.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Siłowniki termoelektryczne na rozdzielaczach.</title>
		<link>https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Thu, 22 Jan 2026 08:46:44 +0000</pubDate>
				<category><![CDATA[Automatyka domowa]]></category>
		<category><![CDATA[Automatyka grzewcza]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Instalacje hydrauliczne]]></category>
		<category><![CDATA[Inteligentny dom]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Porady budowlane]]></category>
		<category><![CDATA[Porady dla inwestorów]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Sterowanie ogrzewaniem]]></category>
		<category><![CDATA[Sterowniki do podłogówki]]></category>
		<category><![CDATA[automatyka grzewcza]]></category>
		<category><![CDATA[energooszczędne ogrzewanie]]></category>
		<category><![CDATA[instalacje co]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[rozdzielacz ogrzewania]]></category>
		<category><![CDATA[siłowniki termoelektryczne]]></category>
		<category><![CDATA[sterowanie strefowe]]></category>
		<category><![CDATA[termostat pokojowy]]></category>
		<category><![CDATA[zawory rozdzielacza]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3265</guid>

					<description><![CDATA[<p>W nowoczesnych instalacjach grzewczych liczy się nie tylko źródło ciepła, ale precyzja jego dystrybucji. Siłowniki termoelektryczne na rozdzielaczach są cichymi strażnikami komfortu, które decydują, kiedy i gdzie ciepło faktycznie trafia do podłogi lub grzejnika. Ten artykuł pokazuje, jak działają te niepozorne elementy, jakie mają parametry techniczne, gdzie są niezastąpione i dlaczego ich właściwy dobór jest kluczowy dla efektywności energetycznej całego systemu grzewczego – od małych domów po rozbudowane instalacje strefowe.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">Siłowniki termoelektryczne na rozdzielaczach.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
:root {
    --rk-intro-dark: #0f172a;
    --rk-intro-panel: #1e293b;
    --rk-intro-primary: #06b6d4; /* Cyjan - technologia */
    --rk-intro-primary-dark: #0891b2;
    --rk-intro-primary-light: #cffafe;
    --rk-intro-accent: #10b981; /* Emerald - oszczędność */
    --rk-intro-bg: #f8fafc;
    --rk-intro-border: #e2e8f0;
    --rk-intro-text: #334155;
    --rk-intro-muted: #64748b;
}

.rk-intro-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(6, 182, 212, 0.15);
    border: 1px solid rgba(6, 182, 212, 0.2);
    overflow: hidden;
}

/* Sekcja Hook & Header */
.rk-intro-header {
    background: linear-gradient(135deg, var(--rk-intro-dark) 0%, #164e63 100%);
    padding: 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-intro-primary);
}

.rk-intro-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(6, 182, 212, 0.2);
    color: #67e8f9;
    padding: 8px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 25px;
    border: 1px solid rgba(103, 232, 249, 0.3);
}

.rk-intro-header h2 {
    font-size: 32px;
    font-weight: 900;
    margin: 0 0 25px 0;
    line-height: 1.3;
}

.rk-intro-hook {
    font-size: 18px;
    font-weight: 700;
    color: var(--rk-intro-primary-light);
    margin: 0 0 25px 0;
    line-height: 1.6;
    border-left: 4px solid var(--rk-intro-primary);
    padding-left: 20px;
}

.rk-intro-definition {
    color: #cbd5e1;
    font-size: 16px;
    line-height: 1.8;
    margin: 0;
    font-weight: 400;
}

.rk-intro-link-light {
    color: #67e8f9;
    text-decoration: none;
    border-bottom: 1px dotted #67e8f9;
    font-weight: 700;
    transition: 0.3s;
}
.rk-intro-link-light:hover { color: #ffffff; border-bottom-style: solid; }

/* Sekcja ROI / Korzyści */
.rk-intro-roi {
    background: #ecfdf5;
    padding: 35px 50px;
    border-bottom: 1px solid #d1fae5;
    display: flex;
    align-items: center;
    gap: 30px;
}

.rk-roi-icon-box {
    width: 80px;
    height: 80px;
    background: #ffffff;
    border: 2px solid var(--rk-intro-accent);
    border-radius: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    box-shadow: 0 10px 25px -5px rgba(16, 185, 129, 0.3);
}

.rk-roi-content h3 {
    font-size: 22px;
    font-weight: 900;
    color: #064e3b;
    margin: 0 0 10px 0;
}

.rk-roi-content p {
    font-size: 15px;
    color: #047857;
    margin: 0;
    line-height: 1.6;
    font-weight: 500;
}

/* Agenda / Spis Treści (Elastyczny Grid) */
.rk-intro-agenda {
    padding: 40px 50px;
    background: #ffffff;
}

.rk-intro-agenda-title {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-intro-dark);
    margin: 0 0 30px 0;
    display: flex;
    align-items: center;
    gap: 12px;
}

/* Użycie auto-fit rozwiązuje problem z nachodzeniem kafelków */
.rk-agenda-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: 20px;
}

.rk-agenda-card {
    background: var(--rk-intro-bg);
    border: 1px solid var(--rk-intro-border);
    border-radius: 16px;
    padding: 25px;
    display: flex;
    flex-direction: column;
    gap: 15px;
    transition: transform 0.3s, box-shadow 0.3s;
}

.rk-agenda-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 15px 30px -10px rgba(6, 182, 212, 0.15);
    border-color: var(--rk-intro-primary-light);
    background: #ffffff;
}

.rk-agenda-icon {
    width: 48px;
    height: 48px;
    background: var(--rk-intro-primary-light);
    color: var(--rk-intro-primary-dark);
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-agenda-card h4 {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-intro-dark);
    margin: 0;
}

.rk-agenda-card p {
    font-size: 14px;
    color: var(--rk-intro-text);
    margin: 0;
    line-height: 1.6;
}

@media (max-width: 768px) {
    .rk-intro-header, .rk-intro-roi, .rk-intro-agenda { padding: 30px 20px; }
    .rk-intro-roi { flex-direction: column; text-align: center; }
    .rk-roi-content h3 { font-size: 20px; }
    .rk-agenda-grid { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/"
    },
    "headline": "Siłowniki termoelektryczne na rozdzielaczach – kompletny przewodnik inżynierski",
    "description": "Siłowniki termoelektryczne to kluczowy element automatyki strefowej ogrzewania podłogowego. Sprawdź, jak działają, jakie mają parametry i jak redukują koszty o 20%.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#dataset",
    "name": "Analiza Efektywności Energetycznej Automatyki Strefowej",
    "description": "Zestawienie danych porównujących zużycie energii i stabilność temperatury w budynkach wyposażonych w siłowniki termoelektryczne na rozdzielaczach względem układów nieregulowanych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "siłowniki termoelektryczne",
      "automatyka ogrzewania podłogowego",
      "oszczędność energii ogrzewanie",
      "zawory termostatyczne belek",
      "sterowanie strefowe koszty"
    ],
    "measurementTechnique": "Szacowanie oparte na badaniach bilansu energetycznego budynków jednorodzinnych, wykazujące potencjał redukcji strat energii od 15% do 20% poprzez eliminację przegrzewania stref.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Status wyjściowy: Układ nieregulowany generuje ciągłą pracę źródła ciepła, prowadząc do przegrzewania i strat.",
        "Status po optymalizacji: Siłowniki dwustanowe precyzyjnie dawkują czynnik grzewczy, obniżając koszty eksploatacji budynku nawet o 20%."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#webapp",
    "name": "Nawigator Wiedzy Inwestorskiej",
    "description": "Interaktywny moduł wprowadzający (Agenda), umożliwiający szybkie zapoznanie się ze strukturą merytoryczną opracowania inżynierskiego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and CSS3.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-intro-container" id="rk-intro-app">
    
    <div class="rk-intro-header">
        <div class="rk-intro-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
            Kompleksowe kompendium wiedzy
        </div>
        
        <h2>Siłowniki termoelektryczne na rozdzielaczach – kompletny przewodnik inżynierski</h2>
        
        <p class="rk-intro-hook">
            Większość inwestorów skupia się na wyborze najdroższej <a href="https://projekt-ogrzewania.pl/pompa-ciepla/" class="rk-intro-link-light">pompy ciepła</a>, ignorując niepozorny element w szafce instalacyjnej, który bezpośrednio decyduje o jej ostatecznej sprawności i wysokości Twoich rachunków.
        </p>

        <p class="rk-intro-definition">
            <strong>Siłowniki termoelektryczne na rozdzielaczach</strong> to dwustanowe (zamknij/otwórz) urządzenia elektrotermiczne montowane bezpośrednio na zaworach termostatycznych belek rozdzielacza, które przetwarzają sygnał napięciowy z regulatora pokojowego na ruch liniowy trzpienia, regulując przepływ masowy czynnika grzewczego w pętli. Jako kluczowy element <a href="https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/" class="rk-intro-link-light">automatyki strefowej</a>, siłownik termiczny precyzyjnie odcina lub uruchamia obieg wody w ogrzewaniu podłogowym.
        </p>
    </div>

    <div class="rk-intro-roi">
        <div class="rk-roi-icon-box">
            <svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="var(--rk-intro-accent)" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="23 6 13.5 15.5 8.5 10.5 1 18"></polyline><polyline points="17 6 23 6 23 12"></polyline></svg>
        </div>
        <div class="rk-roi-content">
            <h3>Odcięcie strat energetycznych</h3>
            <p>Prawidłowy dobór gwintu, skoku trzpienia oraz zasilania dla siłowników zapobiega przewymiarowanemu przegrzewaniu pomieszczeń. Fizyczne odcięcie niepotrzebnego przepływu na rozdzielaczu redukuje całkowite koszty eksploatacji budynku o <strong>15% do 20%</strong> w skali roku.</p>
        </div>
    </div>

    <div class="rk-intro-agenda">
        <h3 class="rk-intro-agenda-title">
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="var(--rk-intro-primary)" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"></path><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"></path></svg>
            Czego dowiesz się z tego przewodnika?
        </h3>
        
        <div class="rk-agenda-grid">
            
            <div class="rk-agenda-card">
                <div class="rk-agenda-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
                </div>
                <h4>Fizyka działania (NC vs NO)</h4>
                <p>Zrozumiesz, dlaczego wosk wewnątrz siłownika potrzebuje aż 3 do 5 minut na reakcję i dlaczego ta celowa bezwładność chroni instalację przed skokami ciśnienia.</p>
            </div>

            <div class="rk-agenda-card">
                <div class="rk-agenda-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path></svg>
                </div>
                <h4>Twarde parametry techniczne</h4>
                <p>Poznasz karty katalogowe i znaczenie doboru siły nacisku (np. 100N) oraz odpowiedniego gwintu (M30x1.5 vs M28x1.5) dla bezawaryjnej pracy.</p>
            </div>

            <div class="rk-agenda-card">
                <div class="rk-agenda-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg>
                </div>
                <h4>Kalkulator zasilacza 24V</h4>
                <p>Pokażę Ci, jak wyliczyć niebezpieczny prąd rozruchowy modułów PTC, aby dobrać odpowiedni zasilacz na szynę DIN i uniknąć stopienia przekaźników.</p>
            </div>

            <div class="rk-agenda-card">
                <div class="rk-agenda-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                </div>
                <h4>Skutki błędnego wykonawstwa</h4>
                <p>Przeanalizujemy najdroższe błędy instalatorów: destrukcyjne taktowanie pompy ciepła, zaburzenie hydrauliki i straty spowodowane niedomykaniem pętli.</p>
            </div>

        </div>
    </div>
</div>



<style>
:root {
    --rk-act-dark: #0f172a;
    --rk-act-panel: #1e293b;
    --rk-act-card: #ffffff;
    --rk-act-primary: #f97316; /* Orange for Heat/Thermoelectric */
    --rk-act-primary-light: #ffedd5;
    --rk-act-accent: #0ea5e9; /* Blue for Flow/Water */
    --rk-act-danger: #ef4444; /* Red for PTC heater */
    --rk-act-success: #10b981;
    --rk-act-bg: #f8fafc;
    --rk-act-border: #e2e8f0;
    --rk-act-text: #334155;
    --rk-act-muted: #64748b;
}

.rk-act-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-act-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(249, 115, 22, 0.15);
    border: 1px solid rgba(249, 115, 22, 0.2);
    overflow: hidden;
}

/* Nagłówek */
.rk-act-header {
    background: linear-gradient(135deg, var(--rk-act-dark) 0%, #271408 100%);
    padding: 45px 50px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-act-primary);
    position: relative;
    overflow: hidden;
}

.rk-act-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(249, 115, 22, 0.2);
    color: #fdba74;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(249, 115, 22, 0.3);
    position: relative; z-index: 2;
}

.rk-act-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
    position: relative; z-index: 2;
}

.rk-act-header p {
    color: #cbd5e1;
    font-size: 15px;
    margin: 0;
    max-width: 800px;
    line-height: 1.7;
    position: relative; z-index: 2;
}

.rk-act-link-light {
    color: #fdba74;
    text-decoration: none;
    border-bottom: 1px dotted #fdba74;
    font-weight: 700;
    transition: 0.3s;
}
.rk-act-link-light:hover { color: #ffffff; border-bottom-style: solid; }

/* Symulator - Układ */
.rk-act-simulator {
    display: grid;
    grid-template-columns: 300px 1fr;
    background: #ffffff;
    border-bottom: 1px solid var(--rk-act-border);
}

/* Panel Kontrolny */
.rk-act-controls {
    padding: 40px;
    background: #f8fafc;
    border-right: 1px solid var(--rk-act-border);
    display: flex;
    flex-direction: column;
    gap: 30px;
}

.rk-control-block {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.rk-control-label {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-act-dark);
    text-transform: uppercase;
}

/* Przełącznik Typu NC/NO */
.rk-type-switch {
    display: flex;
    background: #e2e8f0;
    border-radius: 12px;
    padding: 4px;
    position: relative;
}

.rk-type-btn {
    flex: 1;
    padding: 10px 0;
    text-align: center;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-act-muted);
    cursor: pointer;
    border-radius: 8px;
    transition: all 0.3s;
    z-index: 2;
}

.rk-type-btn.active {
    color: #ffffff;
}

.rk-type-highlighter {
    position: absolute;
    top: 4px; left: 4px;
    width: calc(50% - 4px); height: calc(100% - 8px);
    background: var(--rk-act-dark);
    border-radius: 8px;
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    z-index: 1;
}

/* Przycisk Termostatu (Zasilanie) */
.rk-power-btn {
    background: #ffffff;
    border: 2px solid var(--rk-act-border);
    border-radius: 16px;
    padding: 20px;
    cursor: pointer;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    transition: all 0.3s;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-power-btn:hover {
    border-color: var(--rk-act-primary);
}

.rk-power-btn.on {
    background: var(--rk-act-primary-light);
    border-color: var(--rk-act-primary);
    box-shadow: 0 10px 20px -5px rgba(249, 115, 22, 0.2);
}

.rk-power-icon {
    width: 48px; height: 48px;
    border-radius: 50%;
    background: #f1f5f9;
    color: var(--rk-act-muted);
    display: flex; align-items: center; justify-content: center;
    transition: all 0.3s;
}

.rk-power-btn.on .rk-power-icon {
    background: var(--rk-act-primary);
    color: #ffffff;
    box-shadow: 0 0 15px rgba(249, 115, 22, 0.5);
}

.rk-power-text {
    font-size: 15px; font-weight: 800; color: var(--rk-act-dark);
}
.rk-power-sub {
    font-size: 12px; color: var(--rk-act-muted); font-weight: 600;
}

/* Wizualizacja + Pomiary */
.rk-act-visual-area {
    padding: 40px;
    display: flex;
    flex-direction: column;
    gap: 30px;
}

.rk-live-metrics {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 15px;
}

.rk-metric-box {
    background: var(--rk-act-bg);
    border: 1px solid var(--rk-act-border);
    border-radius: 12px;
    padding: 15px;
    text-align: center;
    transition: all 0.3s;
}

.rk-metric-box.active {
    border-color: var(--rk-act-primary);
    background: #ffffff;
    box-shadow: 0 4px 10px rgba(249, 115, 22, 0.1);
}

.rk-metric-val {
    font-family: 'Courier New', monospace;
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-act-dark);
    margin-bottom: 5px;
}

.rk-metric-box.active .rk-metric-val { color: var(--rk-act-primary); }

.rk-metric-lab {
    font-size: 11px;
    font-weight: 800;
    color: var(--rk-act-muted);
    text-transform: uppercase;
}

/* Obszar SVG */
.rk-svg-container {
    flex-grow: 1;
    background: var(--rk-act-dark);
    border-radius: 16px;
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    box-shadow: inset 0 10px 30px rgba(0,0,0,0.5);
    overflow: hidden;
}

.rk-actuator-svg {
    width: 100%;
    max-width: 250px;
    height: auto;
}

/* Elementy SVG z CSS */
.svg-ptc-heater { fill: #475569; transition: fill 3s; }
.state-powered .svg-ptc-heater { fill: #ef4444; filter: drop-shadow(0 0 5px red); }

.svg-wax-chamber { fill: #eab308; transform-origin: center top; transition: transform 3s ease-in-out; }
.state-expanding .svg-wax-chamber { transform: scaleY(1.3); }

.svg-piston { transform: translateY(0); transition: transform 3s ease-in-out; }
.state-expanding .svg-piston { transform: translateY(15px); }

.svg-spring { stroke-dasharray: 2 4; transition: stroke-dashoffset 3s, stroke-width 3s; }
.state-expanding .svg-spring { stroke-width: 4; stroke-dashoffset: 10; }

.svg-water-flow { stroke-dasharray: 10 10; stroke-dashoffset: 100; opacity: 0; transition: opacity 0.5s; }
.state-flowing .svg-water-flow { opacity: 1; animation: waterFlowAnim 1s linear infinite; }
@keyframes waterFlowAnim { to { stroke-dashoffset: 0; } }

/* Siatka Kroków Procesu */
.rk-act-steps-section {
    padding: 40px 50px;
    background: #ffffff;
}

.rk-act-steps-section h3 {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-act-dark);
    margin: 0 0 25px 0;
}

.rk-steps-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 20px;
}

.rk-process-card {
    background: var(--rk-act-bg);
    border: 1px solid var(--rk-act-border);
    border-radius: 16px;
    padding: 25px 20px;
    position: relative;
    transition: transform 0.3s;
}

.rk-process-card:hover {
    transform: translateY(-5px);
    border-color: var(--rk-act-primary);
    box-shadow: 0 10px 20px -5px rgba(249, 115, 22, 0.1);
}

.rk-process-num {
    width: 32px; height: 32px;
    background: var(--rk-act-dark);
    color: #ffffff;
    border-radius: 8px;
    display: flex; align-items: center; justify-content: center;
    font-size: 14px; font-weight: 900;
    margin-bottom: 15px;
}

.rk-process-card:hover .rk-process-num { background: var(--rk-act-primary); }

.rk-process-title {
    font-size: 15px;
    font-weight: 900;
    color: var(--rk-act-dark);
    margin: 0 0 10px 0;
}

.rk-process-text {
    font-size: 13px;
    line-height: 1.6;
    color: var(--rk-act-text);
    margin: 0;
}

@media (max-width: 900px) {
    .rk-act-simulator { grid-template-columns: 1fr; }
    .rk-act-controls { border-right: none; border-bottom: 1px solid var(--rk-act-border); flex-direction: row; flex-wrap: wrap; }
    .rk-control-block { flex: 1; min-width: 200px; }
    .rk-steps-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 600px) {
    .rk-act-header, .rk-act-controls, .rk-act-visual-area, .rk-act-steps-section { padding: 30px 20px; }
    .rk-live-metrics { grid-template-columns: 1fr 1fr; }
    .rk-steps-grid { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#article-dzialanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/"
    },
    "headline": "Jak działa siłownik termoelektryczny na rozdzielaczu i czy zawsze jest zamknięty?",
    "description": "Zasada działania siłowników termoelektrycznych NC i NO. Mechanizm rozszerzalności cieplnej wosku, rezystor PTC oraz parametry techniczne normy PN-EN 1264.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#dataset-termodynamika",
    "name": "Parametry fizykochemiczne siłowników termoelektrycznych",
    "description": "Zbiór danych technicznych dotyczących czasu reakcji, poboru mocy i siły nacisku w cyklu pracy siłowników woskowych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "jak działa siłownik termoelektryczny",
      "siłownik NC normalnie zamknięty",
      "rozszerzalność cieplna wosku podłogówka",
      "rezystor PTC w siłowniku",
      "skok roboczy zaworu rozdzielacza"
    ],
    "measurementTechnique": "Określenie procesu ekspansji fazowej parafiny z wykorzystaniem rezystora PTC generującego temp. 55°C, siłę docisku 100-140N oraz skok 3.5-4.5mm w czasie 3-5 minut.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Stan NC (Normally Closed): Domyślne zamknięcie przepływu zładu wody (bezpieczeństwo instalacji).",
        "Ekspansja fazowa: Wzrost objętości wosku pod wpływem ciepła z grzałki PTC.",
        "Parametry kinetyczne: Czas pełnego otwarcia/zamknięcia wynosi 3-5 minut."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#webapp-termodynamika",
    "name": "Symulator Cyklu Termodynamicznego Siłownika",
    "description": "Interaktywne narzędzie obrazujące ekspansję fazową wosku wewnątrz hermetycznej obudowy siłownika i wynikający z niej ruch trzpienia zaworu rozdzielacza pod wpływem temperatury generowanej przez termostat.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5, CSS3, and JavaScript.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-act-container" id="rk-act-app">
    <div class="rk-act-header">
        <div class="rk-act-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Technologia od środka
        </div>
        <h2>Jak działa siłownik termoelektryczny na rozdzielaczu i czy zawsze jest zamknięty?</h2>
        <p>Siłowniki nie wykorzystują głośnych silniczków ani przekładni zębatych. Ich sercem jest prosta fizyka – zmiana objętości wosku pod wpływem temperatury. Odkryj, dlaczego pełne otwarcie pętli według normy <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/" class="rk-act-link-light">PN-EN 1264</a> zajmuje aż 3 do 5 minut.</p>
    </div>

    <div class="rk-act-simulator">
        <div class="rk-act-controls">
            
            <div class="rk-control-block">
                <div class="rk-control-label">Typ Zaworu / Siłownika</div>
                <div class="rk-type-switch">
                    <div class="rk-type-highlighter" id="typeHighlighter"></div>
                    <div class="rk-type-btn active" id="btnNC" onclick="setActuatorType('NC')">NC (Zamknięty)</div>
                    <div class="rk-type-btn" id="btnNO" onclick="setActuatorType('NO')">NO (Otwarty)</div>
                </div>
                <div style="font-size:11px; color:var(--rk-act-muted); text-align:center;">Stan bez napięcia elektrycznego</div>
            </div>

            <div class="rk-control-block">
                <div class="rk-control-label">Sygnał z Termostatu</div>
                <button class="rk-power-btn" id="btnPower" onclick="togglePower()">
                    <div class="rk-power-icon">
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M18.36 6.64a9 9 0 1 1-12.73 0"></path><line x1="12" y1="2" x2="12" y2="12"></line></svg>
                    </div>
                    <div>
                        <div class="rk-power-text" id="powText">Zasilanie WYŁ.</div>
                        <div class="rk-power-sub">Brak zapotrzebowania na ciepło</div>
                    </div>
                </button>
            </div>

        </div>

        <div class="rk-act-visual-area">
            
            <div class="rk-live-metrics">
                <div class="rk-metric-box" id="metPower">
                    <div class="rk-metric-val"><span id="valPow">0.0</span>W</div>
                    <div class="rk-metric-lab">Pobór Mocy</div>
                </div>
                <div class="rk-metric-box" id="metTemp">
                    <div class="rk-metric-val"><span id="valTemp">20</span>°C</div>
                    <div class="rk-metric-lab">Temp. Wosku</div>
                </div>
                <div class="rk-metric-box" id="metForce">
                    <div class="rk-metric-val"><span id="valForce">0</span>N</div>
                    <div class="rk-metric-lab">Siła Nacisku</div>
                </div>
                <div class="rk-metric-box" id="metFlow">
                    <div class="rk-metric-val" id="valFlow" style="font-size:16px; padding-top:4px;">BRAK</div>
                    <div class="rk-metric-lab">Przepływ</div>
                </div>
            </div>

            <div class="rk-svg-container" id="simContainer">
                <svg class="rk-actuator-svg" viewBox="0 0 200 240">
                    
                    <path d="M 60 160 L 140 160 L 140 220 L 60 220 Z" fill="#1e293b" stroke="#334155" stroke-width="4"/>
                    <path d="M 40 190 L 60 190 M 140 190 L 160 190" stroke="#334155" stroke-width="8"/>
                    
                    <path class="svg-water-flow" d="M 40 190 L 100 190 L 100 210 L 160 210" fill="none" stroke="#0ea5e9" stroke-width="6"/>
                    
                    <rect x="90" y="170" width="20" height="10" fill="#cbd5e1" rx="2"/>
                    <path class="svg-spring" d="M 95 180 L 105 180 M 95 185 L 105 185 M 95 190 L 105 190 M 95 195 L 105 195 M 95 200 L 105 200" stroke="#94a3b8" stroke-width="2"/>
                    
                    <rect class="svg-piston" x="96" y="130" width="8" height="40" fill="#94a3b8"/>

                    <path d="M 65 40 L 135 40 L 145 140 L 55 140 Z" fill="none" stroke="#64748b" stroke-width="4"/>
                    <rect x="80" y="20" width="40" height="20" fill="#475569" rx="4"/>
                    
                    <rect class="svg-ptc-heater" x="90" y="45" width="20" height="10" rx="2"/>
                    <path d="M 100 20 L 100 45" stroke="#475569" stroke-width="3"/>
                    
                    <ellipse class="svg-wax-chamber" cx="100" cy="85" rx="25" ry="15"/>
                    
                    <rect class="svg-piston" x="85" y="100" width="30" height="10" fill="#334155" rx="2"/>
                    <rect class="svg-piston" x="95" y="110" width="10" height="20" fill="#334155"/>

                </svg>
            </div>

        </div>
    </div>

    <div class="rk-act-steps-section">
        <h3>Proces technologiczny otwierania i zamykania obwodu</h3>
        <div class="rk-steps-grid">
            
            <div class="rk-process-card">
                <div class="rk-process-num">1</div>
                <h4 class="rk-process-title">Podanie napięcia</h4>
                <p class="rk-process-text">Regulator pokojowy zwiera styk (wykrył spadek temperatury w sypialni). Napięcie 230V lub 24V dociera do zacisków siłownika i uruchamia rezystor PTC.</p>
            </div>

            <div class="rk-process-card">
                <div class="rk-process-num">2</div>
                <h4 class="rk-process-title">Ekspansja fazowa</h4>
                <p class="rk-process-text">Grzałka PTC nagrzewa parafinę do ok. 55°C. Wosk błyskawicznie zmienia swoją objętość (rozszerzalność cieplna), wytwarzając potężne ciśnienie wewnątrz cylindra.</p>
            </div>

            <div class="rk-process-card">
                <div class="rk-process-num">3</div>
                <h4 class="rk-process-title">Praca mechaniczna</h4>
                <p class="rk-process-text">Rozszerzający się wosk wypycha tłoczek. Generuje on siłę od 100 N do 140 N, która pokonuje opór sprężyny zaworu, wciskając grzybek na głębokość ok. 4 mm. Woda rusza w pętlę.</p>
            </div>

            <div class="rk-process-card">
                <div class="rk-process-num">4</div>
                <h4 class="rk-process-title">Zanik napięcia</h4>
                <p class="rk-process-text">Po osiągnięciu zadanej temperatury, termostat odcina prąd. Rezystor stygnie, wosk powoli się kurczy, a wbudowana sprężyna wypycha tłoczek z powrotem. Zawór ulega zamknięciu.</p>
            </div>

        </div>
    </div>

</div>

<script>
    let isNC = true;
    let isPowered = false;

    const btnNC = document.getElementById('btnNC');
    const btnNO = document.getElementById('btnNO');
    const highlighter = document.getElementById('typeHighlighter');
    
    const btnPower = document.getElementById('btnPower');
    const powText = document.getElementById('powText');
    const powSub = document.querySelector('.rk-power-sub');
    
    const simContainer = document.getElementById('simContainer');
    
    // Metrics
    const valPow = document.getElementById('valPow');
    const valTemp = document.getElementById('valTemp');
    const valForce = document.getElementById('valForce');
    const valFlow = document.getElementById('valFlow');
    
    const metPower = document.getElementById('metPower');
    const metTemp = document.getElementById('metTemp');
    const metForce = document.getElementById('metForce');
    const metFlow = document.getElementById('metFlow');

    function setActuatorType(type) {
        if(type === 'NC') {
            isNC = true;
            btnNC.classList.add('active');
            btnNO.classList.remove('active');
            highlighter.style.transform = 'translateX(0)';
        } else {
            isNC = false;
            btnNO.classList.add('active');
            btnNC.classList.remove('active');
            highlighter.style.transform = 'translateX(100%)';
        }
        updateSimulation();
    }

    function togglePower() {
        isPowered = !isPowered;
        if(isPowered) {
            btnPower.classList.add('on');
            powText.textContent = 'Zasilanie WŁ.';
            powSub.textContent = 'Grzałka PTC pracuje';
            simContainer.classList.add('state-powered');
        } else {
            btnPower.classList.remove('on');
            powText.textContent = 'Zasilanie WYŁ.';
            powSub.textContent = 'Brak zapotrzebowania na ciepło';
            simContainer.classList.remove('state-powered');
        }
        updateSimulation();
    }

    function updateSimulation() {
        // Obliczanie logiki fizycznej
        // NC: bez prądu -> tłoczek na dole (zawór zamkniety). Z prądem -> wosk pęcznieje, wyciąga tłoczek do góry (zawór otwarty). (Uproszczenie wizualne)
        // Dla animacji załóżmy standardowe zachowanie trzpienia
        
        let pistonPushed = false;
        let isFlowing = false;

        if (isPowered) {
            // Wosk się grzeje
            valPow.textContent = '2.5';
            valTemp.textContent = '55';
            valForce.textContent = '120';
            metPower.classList.add('active');
            metTemp.classList.add('active');
            metForce.classList.add('active');
            simContainer.classList.add('state-expanding');
            pistonPushed = true;
        } else {
            // Wosk stygnie
            valPow.textContent = '0.0';
            valTemp.textContent = '20';
            valForce.textContent = '0';
            metPower.classList.remove('active');
            metTemp.classList.remove('active');
            metForce.classList.remove('active');
            simContainer.classList.remove('state-expanding');
            pistonPushed = false;
        }

        // NC: bez prądu -> zamknięty. z prądem -> otwarty
        // NO: bez prądu -> otwarty. z prądem -> zamknięty
        if ((isNC && isPowered) || (!isNC && !isPowered)) {
            isFlowing = true;
        } else {
            isFlowing = false;
        }

        if (isFlowing) {
            valFlow.textContent = 'OTWARTY';
            valFlow.style.color = 'var(--rk-act-accent)';
            metFlow.classList.add('active');
            simContainer.classList.add('state-flowing');
        } else {
            valFlow.textContent = 'ZAMKNIĘTY';
            valFlow.style.color = 'var(--rk-act-text)';
            metFlow.classList.remove('active');
            simContainer.classList.remove('state-flowing');
        }
    }

    // Init
    updateSimulation();
</script>



<style>
:root {
    --rk-spec-dark: #0f172a;
    --rk-spec-panel: #1e293b;
    --rk-spec-primary: #8b5cf6; /* Indigo/Purple for specifications */
    --rk-spec-primary-light: #ede9fe;
    --rk-spec-accent: #10b981; /* Emerald for IP/Protection */
    --rk-spec-danger: #ef4444; /* Red for heat/max temp */
    --rk-spec-bg: #f8fafc;
    --rk-spec-border: #e2e8f0;
    --rk-spec-text: #334155;
    --rk-spec-muted: #64748b;
}

.rk-spec-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(139, 92, 246, 0.15);
    border: 1px solid rgba(139, 92, 246, 0.2);
    overflow: hidden;
}

/* Sekcja Nagłówkowa */
.rk-spec-header {
    background: linear-gradient(135deg, var(--rk-spec-dark) 0%, #2e1065 100%);
    padding: 45px 50px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-spec-primary);
    position: relative;
}

.rk-spec-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(139, 92, 246, 0.3);
    color: #ddd6fe;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(196, 181, 253, 0.3);
}

.rk-spec-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-spec-header p {
    color: #cbd5e1;
    font-size: 15px;
    margin: 0;
    line-height: 1.7;
    max-width: 800px;
}

.rk-spec-link-light {
    color: #a78bfa;
    text-decoration: none;
    border-bottom: 1px dotted #a78bfa;
    font-weight: 700;
    transition: 0.3s;
}
.rk-spec-link-light:hover { color: #ffffff; border-bottom-style: solid; }

/* Kluczowe limity - Pasek Info */
.rk-limits-bar {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    background: var(--rk-spec-panel);
    border-bottom: 1px solid #334155;
}

.rk-limit-item {
    padding: 20px;
    text-align: center;
    border-right: 1px solid #334155;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
}
.rk-limit-item:last-child { border-right: none; }

.rk-limit-val { font-size: 20px; font-weight: 900; color: #ffffff; display: flex; align-items: center; gap: 6px; }
.rk-limit-val svg { color: var(--rk-spec-danger); }
.rk-limit-item:last-child .rk-limit-val svg { color: var(--rk-spec-accent); }
.rk-limit-lab { font-size: 12px; color: #94a3b8; text-transform: uppercase; font-weight: 700; }

/* Interaktywny Komparator */
.rk-comparator-section {
    padding: 40px 50px;
    background: var(--rk-spec-bg);
}

/* POPRAWIONA SEKCJA ZAKŁADEK (GRID ZAMIAST FLEX) */
.rk-tabs-wrapper {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 10px;
    background: #ffffff;
    padding: 10px;
    border-radius: 16px;
    border: 1px solid var(--rk-spec-border);
    margin-bottom: 30px;
}

.rk-tab-btn {
    padding: 14px 15px;
    background: transparent;
    border: 2px solid transparent;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-spec-muted);
    cursor: pointer;
    transition: all 0.3s;
    text-align: center;
    white-space: normal;
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 1.3;
    min-height: 54px;
}

.rk-tab-btn:hover {
    background: var(--rk-spec-primary-light);
    color: var(--rk-spec-primary);
}

.rk-tab-btn.active {
    background: var(--rk-spec-primary);
    color: #ffffff;
    box-shadow: 0 4px 15px rgba(139, 92, 246, 0.3);
}

/* Siatka Parametrów */
.rk-params-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 20px;
}

.rk-param-card {
    background: #ffffff;
    border: 1px solid var(--rk-spec-border);
    border-radius: 16px;
    padding: 25px 20px;
    text-align: center;
    transition: transform 0.3s, box-shadow 0.3s;
    position: relative;
    overflow: hidden;
}

.rk-param-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 10px 25px -5px rgba(139, 92, 246, 0.15);
    border-color: #c4b5fd;
}

.rk-param-icon {
    width: 40px; height: 40px;
    background: var(--rk-spec-primary-light);
    color: var(--rk-spec-primary);
    border-radius: 10px;
    display: flex; align-items: center; justify-content: center;
    margin: 0 auto 15px auto;
}

.rk-param-val {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-spec-dark);
    margin-bottom: 5px;
    transition: opacity 0.3s;
}

.rk-param-lab {
    font-size: 12px;
    font-weight: 700;
    color: var(--rk-spec-muted);
    text-transform: uppercase;
}

/* Wizualizacja SVG */
.rk-spec-visual-area {
    grid-column: span 4;
    background: var(--rk-spec-panel);
    border-radius: 16px;
    padding: 30px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    align-items: center;
    color: #ffffff;
    margin-top: 10px;
}

.rk-visual-text h4 {
    margin: 0 0 10px 0;
    font-size: 20px;
    font-weight: 900;
    color: #ffffff;
}

.rk-visual-text p {
    font-size: 14px;
    color: #cbd5e1;
    line-height: 1.6;
    margin: 0;
}

.rk-visual-svg-box {
    height: 160px;
    display: flex;
    justify-content: center;
    align-items: center;
}

/* Animacje SVG */
.anim-stroke { transition: transform 0.6s cubic-bezier(0.34, 1.56, 0.64, 1); }
.anim-heat { transition: fill 0.6s, opacity 0.6s; }
.anim-elec { stroke-dasharray: 20; animation: dashMove 1s linear infinite; }
@keyframes dashMove { to { stroke-dashoffset: -40; } }

@media (max-width: 900px) {
    .rk-params-grid { grid-template-columns: repeat(2, 1fr); }
    .rk-spec-visual-area { grid-column: span 2; grid-template-columns: 1fr; text-align: center; }
}

@media (max-width: 768px) {
    .rk-spec-header, .rk-comparator-section { padding: 30px 20px; }
    .rk-limits-bar { grid-template-columns: 1fr; }
    .rk-limit-item { border-right: none; border-bottom: 1px solid #334155; }
    .rk-limit-item:last-child { border-bottom: none; }
    .rk-params-grid { grid-template-columns: 1fr; }
    .rk-spec-visual-area { grid-column: span 1; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#article-parametry",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/"
    },
    "headline": "Jaka jest optymalna temperatura zasilania i parametry techniczne siłowników?",
    "description": "Zestawienie parametrów technicznych siłowników termoelektrycznych (230V, 24V, NC, NO, 0-10V). Klasa ochrony IP54, gwinty i skoki tłoczków.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#dataset-parametry",
    "name": "Baza Danych: Specyfikacja Techniczna Siłowników Rozdzielaczowych",
    "description": "Kompletna macierz parametrów operacyjnych uwzględniająca napięcie zasilania, moc, prąd rozruchowy, siłę nacisku i czas reakcji w zależności od wariantu siłownika.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "parametry techniczne siłowników",
      "siłownik rozdzielacza 230V vs 24V",
      "prąd rozruchowy siłownika",
      "skok roboczy tłoczka",
      "klasa ochrony IP54 podłogówka"
    ],
    "measurementTechnique": "Tabelaryczne porównanie specyfikacji elektromechanicznych 4 głównych wariantów urządzeń wykonawczych stosowanych w automatyce płaszczyznowej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wariant 230V NC: Moc 2.0W, Prąd max 300mA, Siła 100N, Gwint M30x1.5.",
        "Wariant 24V NC: Moc 1.8W, Prąd max 250mA, Siła 110N, Skok 4.0mm.",
        "Wariant Sygnałowy (0-10V): Płynna regulacja skoku do 5.0mm, zasilanie 24V AC."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#webapp-komparator",
    "name": "Interaktywny Komparator Modeli Siłowników",
    "description": "Aplikacja narzędziowa pozwalająca projektantom instalacji na szybkie przełączanie i weryfikację skoku tłoczka, mocy i gwintów przed doborem do rozdzielacza.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5, CSS3, and JavaScript.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-spec-container" id="rk-spec-app">
    <div class="rk-spec-header">
        <div class="rk-spec-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
            Karty Katalogowe
        </div>
        <h2>Jaka jest optymalna temperatura zasilania i parametry techniczne siłowników?</h2>
        <p>Zanim dokręcisz głowicę, musisz znać jej limity. Normy <a href="https://projekt-ogrzewania.pl/norma-en-iso-15875/" class="rk-spec-link-light">PN-EN ISO 15875</a> ściśle definiują środowisko pracy, a właściwy dobór zasilania to być albo nie być dla modułów sterujących w szafce.</p>
    </div>

    <div class="rk-limits-bar">
        <div class="rk-limit-item">
            <div class="rk-limit-lab">Max. temp. otoczenia</div>
            <div class="rk-limit-val">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z"></path></svg>
                60°C
            </div>
        </div>
        <div class="rk-limit-item">
            <div class="rk-limit-lab">Max. temp. medium</div>
            <div class="rk-limit-val">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                100°C
            </div>
        </div>
        <div class="rk-limit-item">
            <div class="rk-limit-lab">Szczelność (<a href="https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/" style="color:inherit; text-decoration:none;">Próba ciśnieniowa</a>)</div>
            <div class="rk-limit-val">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
                Min. IP54
            </div>
        </div>
    </div>

    <div class="rk-comparator-section">
        <div class="rk-tabs-wrapper">
            <button class="rk-tab-btn active" data-model="v230nc">Standard 230V NC</button>
            <button class="rk-tab-btn" data-model="v24nc">Niskonapięciowy 24V NC</button>
            <button class="rk-tab-btn" data-model="v230no">Antyzamrożeniowy 230V NO</button>
            <button class="rk-tab-btn" data-model="v010">Modulowany 0-10V</button>
        </div>

        <div class="rk-params-grid">
            
            <div class="rk-param-card">
                <div class="rk-param-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"></path></svg></div>
                <div class="rk-param-val" id="specVolt">230 V AC</div>
                <div class="rk-param-lab">Zasilanie robocze</div>
            </div>

            <div class="rk-param-card">
                <div class="rk-param-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg></div>
                <div class="rk-param-val" id="specCurrent">300 mA</div>
                <div class="rk-param-lab">Prąd rozruchowy</div>
            </div>

            <div class="rk-param-card">
                <div class="rk-param-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path></svg></div>
                <div class="rk-param-val" id="specForce">100 N</div>
                <div class="rk-param-lab">Siła nacisku</div>
            </div>

            <div class="rk-param-card">
                <div class="rk-param-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="8" y1="6" x2="21" y2="6"></line><line x1="8" y1="12" x2="21" y2="12"></line><line x1="8" y1="18" x2="21" y2="18"></line><line x1="3" y1="6" x2="3.01" y2="6"></line><line x1="3" y1="12" x2="3.01" y2="12"></line><line x1="3" y1="18" x2="3.01" y2="18"></line></svg></div>
                <div class="rk-param-val" id="specStroke">4.0 mm</div>
                <div class="rk-param-lab">Skok trzpienia</div>
            </div>

            <div class="rk-param-card">
                <div class="rk-param-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z"></path><line x1="7" y1="7" x2="7.01" y2="7"></line></svg></div>
                <div class="rk-param-val" id="specThread">M30x1.5</div>
                <div class="rk-param-lab">Gwint przyłącza</div>
            </div>

            <div class="rk-param-card">
                <div class="rk-param-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg></div>
                <div class="rk-param-val" id="specPower">2.0 W</div>
                <div class="rk-param-lab">Moc znamionowa</div>
            </div>

            <div class="rk-spec-visual-area">
                <div class="rk-visual-text">
                    <h4 id="visTitle">Zasada działania: NC (Normalnie Zamknięty)</h4>
                    <p id="visDesc">W stanie spoczynku (bez napięcia), wewnętrzna sprężyna dociska trzpień zaworu, blokując przepływ. Podanie 230V nagrzewa element woskowy przez około 3.5 minuty, otwierając obwód.</p>
                </div>
                <div class="rk-visual-svg-box">
                    <svg viewBox="0 0 120 100" style="width:100%; height:100%; max-width:150px;">
                        <rect x="30" y="10" width="60" height="50" fill="#334155" rx="6"/>
                        <rect id="svgHeater" class="anim-heat" x="45" y="25" width="30" height="20" fill="#475569" rx="2"/>
                        <path id="svgCable" class="anim-elec" d="M 30 20 Q 10 20 10 40 L 10 90" fill="none" stroke="#64748b" stroke-width="4"/>
                        <rect id="svgPiston" class="anim-stroke" x="55" y="60" width="10" height="20" fill="#cbd5e1"/>
                        <path d="M 40 80 L 80 80 M 40 85 L 80 85 M 40 90 L 80 90 M 40 95 L 80 95" stroke="#94a3b8" stroke-width="2"/>
                        <rect x="40" y="80" width="40" height="20" fill="none" stroke="#94a3b8" stroke-width="4"/>
                    </svg>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Dane techniczne do JSON
    const actuatorData = {
        "v230nc": {
            volt: "230 V AC",
            current: "300 mA",
            force: "100 N",
            stroke: "4.0 mm",
            thread: "M30x1.5",
            power: "2.0 W",
            title: "Zasada działania: NC (Normalnie Zamknięty)",
            desc: "W stanie spoczynku (bez napięcia), wewnętrzna sprężyna dociska trzpień zaworu, blokując przepływ. Podanie 230V nagrzewa element woskowy przez około 3.5 minuty, otwierając obwód.",
            animHeat: "#ef4444",
            animStrokeY: "45", // Wciśnięty do góry (otwarty) gdy grzeje
            cableColor: "#ef4444"
        },
        "v24nc": {
            volt: "24 V AC/DC",
            current: "250 mA",
            force: "110 N",
            stroke: "4.0 mm",
            thread: "M30x1.5",
            power: "1.8 W",
            title: "Instalacje bezpieczne: 24V NC",
            desc: "Niskonapięciowa wersja NC. Wymaga transformatora i dedykowanej listwy sterującej. Idealna do instalacji Smart Home z uwzględnieniem bezpiecznego zasilania.",
            animHeat: "#f59e0b",
            animStrokeY: "45",
            cableColor: "#f59e0b"
        },
        "v230no": {
            volt: "230 V AC",
            current: "300 mA",
            force: "100 N",
            stroke: "4.0 mm",
            thread: "M28x1.5",
            power: "2.0 W",
            title: "System antyzamrożeniowy: NO",
            desc: "Normalnie Otwarty. Brak napięcia oznacza swobodny przepływ wody przez pętlę. Podanie napięcia zamyka obwód. Stosowany w układach narażonych na zamarznięcie (np. garaże). Uwaga na inny gwint rynkowy!",
            animHeat: "#0ea5e9",
            animStrokeY: "65", // Wypchnięty w dół (zamknięty) gdy grzeje
            cableColor: "#0ea5e9"
        },
        "v010": {
            volt: "24 V AC",
            current: "150 mA",
            force: "125 N",
            stroke: "5.0 mm",
            thread: "M30x1.5",
            power: "2.5 W",
            title: "Pełna kontrola przepływu: 0-10V",
            desc: "Zaawansowany siłownik z płynną regulacją skoku na podstawie sygnału analogowego (np. przy 5V tłoczek otwiera zawór w 50%). Konieczny w profesjonalnych systemach BMS i centralach wentylacyjnych.",
            animHeat: "#8b5cf6",
            animStrokeY: "55", // Środkowe ustawienie dla modułu 0-10
            cableColor: "#8b5cf6"
        }
    };

    const tabs = document.querySelectorAll('.rk-tab-btn');
    
    // Pola w UI
    const fVolt = document.getElementById('specVolt');
    const fCurrent = document.getElementById('specCurrent');
    const fForce = document.getElementById('specForce');
    const fStroke = document.getElementById('specStroke');
    const fThread = document.getElementById('specThread');
    const fPower = document.getElementById('specPower');
    
    const visTitle = document.getElementById('visTitle');
    const visDesc = document.getElementById('visDesc');
    
    const svgHeater = document.getElementById('svgHeater');
    const svgPiston = document.getElementById('svgPiston');
    const svgCable = document.getElementById('svgCable');

    // Fade effect logic
    function updateData(modelKey) {
        const data = actuatorData[modelKey];
        
        // Szybki efekt fade-out
        const vals = [fVolt, fCurrent, fForce, fStroke, fThread, fPower, visTitle, visDesc];
        vals.forEach(el => el.style.opacity = '0');
        
        setTimeout(() => {
            fVolt.textContent = data.volt;
            fCurrent.textContent = data.current;
            fForce.textContent = data.force;
            fStroke.textContent = data.stroke;
            fThread.textContent = data.thread;
            fPower.textContent = data.power;
            
            visTitle.textContent = data.title;
            visDesc.textContent = data.desc;
            
            // SVG Animation update
            svgHeater.setAttribute('fill', data.animHeat);
            svgPiston.setAttribute('y', data.animStrokeY);
            svgCable.setAttribute('stroke', data.cableColor);

            vals.forEach(el => el.style.opacity = '1');
        }, 200);
    }

    // Eventy
    tabs.forEach(btn => {
        btn.addEventListener('click', () => {
            tabs.forEach(t => t.classList.remove('active'));
            btn.classList.add('active');
            updateData(btn.getAttribute('data-model'));
        });
    });
});
</script>



<style>
:root {
    --rk-psu-dark: #0f172a;
    --rk-psu-panel: #1e293b;
    --rk-psu-card: #ffffff;
    --rk-psu-primary: #eab308; /* Electric Yellow/Amber */
    --rk-psu-primary-dark: #ca8a04;
    --rk-psu-accent: #3b82f6; /* Tech Blue */
    --rk-psu-danger: #ef4444;
    --rk-psu-success: #10b981;
    --rk-psu-bg: #f8fafc;
    --rk-psu-border: #e2e8f0;
    --rk-psu-text: #334155;
    --rk-psu-muted: #64748b;
    --rk-psu-glow: rgba(234, 179, 8, 0.4);
}

.rk-psu-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-psu-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(15, 23, 42, 0.15);
    border: 1px solid var(--rk-psu-border);
    overflow: hidden;
}

/* Nagłówek */
.rk-psu-header {
    background: linear-gradient(135deg, var(--rk-psu-dark) 0%, #020617 100%);
    padding: 45px 50px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-psu-primary);
    position: relative;
    overflow: hidden;
}

.rk-psu-header::before {
    content: ''; position: absolute; top: 0; right: 0; width: 300px; height: 100%;
    background: radial-gradient(circle at right, var(--rk-psu-glow) 0%, transparent 70%);
}

.rk-psu-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(234, 179, 8, 0.2);
    color: #fef08a;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(234, 179, 8, 0.3);
    position: relative; z-index: 2;
}

.rk-psu-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
    position: relative; z-index: 2;
}

.rk-psu-header p {
    color: #94a3b8;
    font-size: 15px;
    margin: 0;
    max-width: 750px;
    line-height: 1.7;
    position: relative; z-index: 2;
}

/* Symulator - Panel Obliczeniowy */
.rk-psu-calculator {
    display: grid;
    grid-template-columns: 1.2fr 1fr;
    background: #ffffff;
    border-bottom: 1px solid var(--rk-psu-border);
}

/* Sekcja Inputów */
.rk-psu-controls {
    padding: 40px 50px;
    border-right: 1px solid var(--rk-psu-border);
}

.rk-slider-group {
    margin-bottom: 30px;
}

.rk-slider-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 15px;
}

.rk-slider-label {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-psu-dark);
}

.rk-slider-value {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-psu-primary-dark);
    background: #fef9c3;
    padding: 4px 12px;
    border-radius: 8px;
    border: 1px solid #fde047;
}

.rk-psu-range {
    -webkit-appearance: none; width: 100%; height: 8px; border-radius: 4px; background: #e2e8f0; outline: none;
}
.rk-psu-range::-webkit-slider-thumb {
    -webkit-appearance: none; appearance: none; width: 28px; height: 28px; border-radius: 50%;
    background: var(--rk-psu-primary); cursor: pointer; border: 4px solid #ffffff; box-shadow: 0 2px 6px rgba(0,0,0,0.2); transition: 0.1s;
}
.rk-psu-range::-webkit-slider-thumb:active { transform: scale(1.1); }

.rk-toggle-group {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: var(--rk-psu-bg);
    padding: 15px 20px;
    border-radius: 12px;
    border: 1px solid var(--rk-psu-border);
}

.rk-toggle-info {
    display: flex;
    flex-direction: column;
}
.rk-toggle-title { font-size: 14px; font-weight: 800; color: var(--rk-psu-dark); }
.rk-toggle-desc { font-size: 12px; color: var(--rk-psu-muted); }

/* Switch Toggle */
.rk-switch { position: relative; display: inline-block; width: 54px; height: 30px; }
.rk-switch input { opacity: 0; width: 0; height: 0; }
.rk-switch-slider {
    position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0;
    background-color: var(--rk-psu-muted); transition: .4s; border-radius: 34px;
}
.rk-switch-slider:before {
    position: absolute; content: ""; height: 22px; width: 22px; left: 4px; bottom: 4px;
    background-color: white; transition: .4s; border-radius: 50%;
}
.rk-switch input:checked + .rk-switch-slider { background-color: var(--rk-psu-success); }
.rk-switch input:checked + .rk-switch-slider:before { transform: translateX(24px); }

/* Sekcja Outputów (Wyświetlacz Cyfrowy) */
.rk-psu-display {
    background: var(--rk-psu-panel);
    padding: 40px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 20px;
    position: relative;
}

.rk-digital-box {
    background: #020617;
    border: 2px solid #334155;
    border-radius: 12px;
    padding: 20px;
    position: relative;
    overflow: hidden;
}

.rk-digital-box.highlight {
    border-color: var(--rk-psu-primary);
    box-shadow: 0 0 15px var(--rk-psu-glow);
}

.rk-digital-label {
    font-size: 11px;
    color: #94a3b8;
    text-transform: uppercase;
    font-weight: 800;
    letter-spacing: 1px;
    margin-bottom: 5px;
}

.rk-digital-value {
    font-family: 'Courier New', Courier, monospace;
    font-size: 36px;
    font-weight: 900;
    color: #ffffff;
    display: flex;
    align-items: baseline;
    gap: 8px;
}

.rk-digital-box.highlight .rk-digital-value {
    color: var(--rk-psu-primary);
    text-shadow: 0 0 10px var(--rk-psu-glow);
}

.rk-digital-unit {
    font-size: 16px;
    color: #64748b;
    font-family: 'Inter', sans-serif;
}

/* Animacja impulsu elektrycznego */
.anim-pulse-line {
    stroke-dasharray: 100;
    animation: electricPulse 2s linear infinite;
}
@keyframes electricPulse {
    0% { stroke-dashoffset: 100; opacity: 0; }
    50% { opacity: 1; }
    100% { stroke-dashoffset: -100; opacity: 0; }
}

/* Kroki algorytmu (Grid) */
.rk-psu-steps {
    padding: 40px 50px;
    background: #ffffff;
}

.rk-psu-steps h3 {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-psu-dark);
    margin: 0 0 25px 0;
    text-align: center;
}

.rk-steps-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 20px;
}

.rk-step-card {
    background: var(--rk-psu-bg);
    border: 1px solid var(--rk-psu-border);
    border-radius: 16px;
    padding: 20px;
    position: relative;
    transition: transform 0.3s;
}
.rk-step-card:hover { transform: translateY(-5px); border-color: var(--rk-psu-primary); }

.rk-step-number {
    position: absolute;
    top: -12px; left: 20px;
    background: var(--rk-psu-dark);
    color: var(--rk-psu-primary);
    width: 28px; height: 28px;
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-size: 14px; font-weight: 900;
    border: 3px solid #ffffff;
}

.rk-step-title {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-psu-dark);
    margin: 15px 0 10px 0;
    text-transform: uppercase;
}

.rk-step-math {
    background: #ffffff;
    border: 1px dashed var(--rk-psu-border);
    padding: 10px;
    border-radius: 8px;
    font-family: 'Courier New', monospace;
    font-size: 12px;
    color: var(--rk-psu-primary-dark);
    font-weight: 700;
    word-break: break-all;
}

.rk-psu-link {
    color: var(--rk-psu-accent);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dotted var(--rk-psu-accent);
}
.rk-psu-link:hover { color: #1d4ed8; border-bottom-style: solid; }

@media (max-width: 900px) {
    .rk-steps-grid { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 768px) {
    .rk-psu-header { padding: 30px 20px; }
    .rk-psu-calculator { grid-template-columns: 1fr; }
    .rk-psu-controls, .rk-psu-display, .rk-psu-steps { padding: 30px 20px; }
    .rk-steps-grid { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#article-zasilacz",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/"
    },
    "headline": "Jak obliczyć pobór prądu i dobrać zasilacz dla siłowników 24V?",
    "description": "Praktyczny algorytm doboru zasilacza 24V na szynę DIN dla automatyki podłogówki. Kalkulator prądu rozruchowego elementu PTC.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#dataset-zasilacz",
    "name": "Algorytm doboru zasilacza impulsowego do siłowników",
    "description": "Tabela współczynników jednoczesności i zapotrzebowania na prąd rozruchowy dla termoelektrycznych siłowników 24V DC.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "zasilacz do siłowników 24v",
      "prąd rozruchowy siłownika termoelektrycznego",
      "moc zasilacza listwy sterującej",
      "automatyka strefowa ogrzewania",
      "współczynnik jednoczesności podłogówki"
    ],
    "measurementTechnique": "Obliczenia oparte na prawie Ohma (P = U * I) uwzględniające szczytowy pobór prądu przez rezystor PTC w momencie zimnego startu (współczynnik k=1.0) oraz bezpieczny zapas 20%.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Szczytowy prąd rozruchowy (I_roz): ok. 0.25A - 0.30A na siłownik.",
        "Współczynnik jednoczesności (k): Zakładamy 1.0 (start wszystkich stref po nocy).",
        "Margines bezpieczeństwa zasilacza: Zawsze +20% (współczynnik 1.2) do wyliczonej mocy obciążenia."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#webapp-zasilacz",
    "name": "Kalkulator Prądu Rozruchowego i Zasilania DIN",
    "description": "Narzędzie wyliczające szczytowy prąd układu i dobierające bezpieczną moc znamionową zasilacza 24V DC/AC na szynę DIN dla listew sterujących.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5, CSS3, and JavaScript.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-psu-container" id="rk-psu-app">
    <div class="rk-psu-header">
        <div class="rk-psu-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg>
            Elektrotechnika HVAC
        </div>
        <h2>Jak obliczyć pobór prądu i dobrać zasilacz dla siłowników 24V?</h2>
        <p>Największym błędem przy instalacji bezpiecznego napięcia (24V DC) jest niedoszacowanie zapotrzebowania w ułamku sekundy. Rezystor PTC wewnątrz siłownika zachowuje się jak zwarcie w fazie zimnego startu. Użyj kalkulatora, by uniknąć spalenia <a href="https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/" class="rk-psu-link" style="color:#fef08a;">listwy sterującej</a>.</p>
    </div>

    <div class="rk-psu-calculator">
        <div class="rk-psu-controls">
            <div class="rk-slider-group">
                <div class="rk-slider-header">
                    <span class="rk-slider-label">Liczba siłowników 24V (n)</span>
                    <span class="rk-slider-value" id="valActuators">14 szt.</span>
                </div>
                <input type="range" class="rk-psu-range" id="inpActuators" min="2" max="30" step="1" value="14">
            </div>

            <div class="rk-slider-group">
                <div class="rk-slider-header">
                    <span class="rk-slider-label">Prąd rozruchowy I_roz</span>
                    <span class="rk-slider-value" id="valInrush">0.25 A</span>
                </div>
                <input type="range" class="rk-psu-range" id="inpInrush" min="0.15" max="0.50" step="0.01" value="0.25">
                <div style="font-size:11px; color:var(--rk-psu-muted); margin-top:8px;">Zależy od modelu. Zazwyczaj od 0.20 A do 0.30 A przez pierwsze 120 s.</div>
            </div>

            <div class="rk-toggle-group">
                <div class="rk-toggle-info">
                    <span class="rk-toggle-title">Zapas bezpieczeństwa 20%</span>
                    <span class="rk-toggle-desc">Chroni przed przeciążeniem impulsowym.</span>
                </div>
                <label class="rk-switch">
                    <input type="checkbox" id="inpMargin" checked="">
                    <span class="rk-switch-slider"></span>
                </label>
            </div>
        </div>

        <div class="rk-psu-display">
            <svg style="position:absolute; top:20px; right:20px; width:150px; height:80px; pointer-events:none;">
                <path class="anim-pulse-line" d="M 0 40 L 30 40 L 40 10 L 60 70 L 70 40 L 150 40" fill="none" stroke="var(--rk-psu-primary)" stroke-width="2" opacity="0.5"></path>
            </svg>

            <div class="rk-digital-box">
                <div class="rk-digital-label">Szczytowe Natężenie Prądu (I_total)</div>
                <div class="rk-digital-value"><span id="outCurrent">3.50</span> <span class="rk-digital-unit">A</span></div>
            </div>

            <div class="rk-digital-box highlight">
                <div class="rk-digital-label">Min. Moc Zasilacza na szynę DIN</div>
                <div class="rk-digital-value"><span id="outPowerDIN">120</span> <span class="rk-digital-unit">W</span></div>
                <div style="font-size:11px; color:#94a3b8; margin-top:5px;">Realne obciążenie szczytowe: <span id="outPowerPeak" style="color:#ffffff;">84 W</span></div>
            </div>
        </div>
    </div>

    <div class="rk-psu-steps">
        <h3>Algorytm obliczeniowy krok po kroku</h3>
        <div class="rk-steps-grid">
            
            <div class="rk-step-card">
                <div class="rk-step-number">1</div>
                <div class="rk-step-title">Wyznaczenie (n)</div>
                <div class="rk-step-math">n = <span id="mathN" style="color:var(--rk-psu-text);">14</span></div>
                <p style="font-size:12px; color:var(--rk-psu-muted); margin:10px 0 0;">Zlicz pętle grzewcze obsługiwane przez automatykę 24V.</p>
            </div>

            <div class="rk-step-card">
                <div class="rk-step-number">2</div>
                <div class="rk-step-title">Prąd Szczytowy</div>
                <div class="rk-step-math">I_tot = n × I_roz × 1.0<br>I_tot = <span id="mathItot" style="color:var(--rk-psu-text);">3.5 A</span></div>
                <p style="font-size:12px; color:var(--rk-psu-muted); margin:10px 0 0;">Współczynnik jednoczesności k=1.0 (start instalacji po nocy).</p>
            </div>

            <div class="rk-step-card">
                <div class="rk-step-number">3</div>
                <div class="rk-step-title">Moc Obciążenia</div>
                <div class="rk-step-math">P_szczyt = 24V × I_tot<br>P_szczyt = <span id="mathPszczyt" style="color:var(--rk-psu-text);">84 W</span></div>
                <p style="font-size:12px; color:var(--rk-psu-muted); margin:10px 0 0;">Fizyczne zapotrzebowanie mocy w momencie nagrzewania wosku.</p>
            </div>

            <div class="rk-step-card" style="border-color:var(--rk-psu-primary); background:var(--rk-psu-bg);">
                <div class="rk-step-number" style="background:var(--rk-psu-primary); color:#ffffff; border-color:var(--rk-psu-primary);">4</div>
                <div class="rk-step-title">Zasilacz (P_zas)</div>
                <div class="rk-step-math">P_zas = P_szczyt × <span id="mathMarginFactor">1.2</span><br>Wynik = <span id="mathPzas" style="font-weight:900;">100.8 W</span></div>
                <p style="font-size:12px; color:var(--rk-psu-muted); margin:10px 0 0;">Dobieramy najbliższy, wyższy zasilacz rynkowy (np. standard DIN).</p>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Inputs
    const inpActuators = document.getElementById('inpActuators');
    const inpInrush = document.getElementById('inpInrush');
    const inpMargin = document.getElementById('inpMargin');
    
    // Values Display
    const valActuators = document.getElementById('valActuators');
    const valInrush = document.getElementById('valInrush');
    
    // Digital Outputs
    const outCurrent = document.getElementById('outCurrent');
    const outPowerPeak = document.getElementById('outPowerPeak');
    const outPowerDIN = document.getElementById('outPowerDIN');
    
    // Math Steps
    const mathN = document.getElementById('mathN');
    const mathItot = document.getElementById('mathItot');
    const mathPszczyt = document.getElementById('mathPszczyt');
    const mathMarginFactor = document.getElementById('mathMarginFactor');
    const mathPzas = document.getElementById('mathPzas');

    // Standardowe typoszeregi zasilaczy na szynę DIN (W)
    const dinStandards = [15, 30, 60, 100, 120, 150, 240, 480];

    function calculatePSU() {
        // Pobranie wartości
        const n = parseInt(inpActuators.value);
        const iRoz = parseFloat(inpInrush.value);
        const hasMargin = inpMargin.checked;
        const marginFactor = hasMargin ? 1.2 : 1.0;
        
        // Aktualizacja labeli
        valActuators.textContent = n + ' szt.';
        valInrush.textContent = iRoz.toFixed(2) + ' A';

        // Obliczenia główne
        const iTotal = n * iRoz; // k = 1.0
        const pSzczyt = 24 * iTotal;
        const pZas = pSzczyt * marginFactor;

        // Dobór DIN zasilacza (najbliższy większy)
        let recommendedDIN = dinStandards[dinStandards.length - 1]; // default max
        for(let i = 0; i < dinStandards.length; i++) {
            if(dinStandards[i] >= pZas) {
                recommendedDIN = dinStandards[i];
                break;
            }
        }

        // Aktualizacja DOM - Digital
        outCurrent.textContent = iTotal.toFixed(2);
        outPowerPeak.textContent = pSzczyt.toFixed(0) + ' W';
        outPowerDIN.textContent = recommendedDIN;

        // Aktualizacja DOM - Kroki
        mathN.textContent = n;
        mathItot.textContent = iTotal.toFixed(2) + ' A';
        mathPszczyt.textContent = pSzczyt.toFixed(1) + ' W';
        mathMarginFactor.textContent = marginFactor.toFixed(1);
        mathPzas.textContent = pZas.toFixed(1) + ' W';
    }

    // Event Listeners
    if(inpActuators) inpActuators.addEventListener('input', calculatePSU);
    if(inpInrush) inpInrush.addEventListener('input', calculatePSU);
    if(inpMargin) inpMargin.addEventListener('change', calculatePSU);

    // Initial calculation
    calculatePSU();
});
</script>



<style>
:root {
    --rk-diag-dark: #1e1b4b; /* Deep Indigo for diagnostic theme */
    --rk-diag-panel: #312e81;
    --rk-diag-card: #ffffff;
    --rk-diag-primary: #6366f1;
    --rk-diag-primary-light: #e0e7ff;
    --rk-diag-alert: #f97316; /* Orange alert */
    --rk-diag-danger: #ef4444; /* Red danger */
    --rk-diag-success: #10b981;
    --rk-diag-bg: #f8fafc;
    --rk-diag-border: #e2e8f0;
    --rk-diag-text: #334155;
    --rk-diag-muted: #64748b;
}

.rk-diag-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-diag-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(99, 102, 241, 0.15);
    border: 1px solid rgba(99, 102, 241, 0.2);
    overflow: hidden;
}

/* Nagłówek */
.rk-diag-header {
    background: linear-gradient(135deg, var(--rk-diag-dark) 0%, #4338ca 100%);
    padding: 45px 50px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-diag-primary);
}

.rk-diag-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(99, 102, 241, 0.3);
    color: #c7d2fe;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(199, 210, 254, 0.2);
}

.rk-diag-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-diag-header p {
    color: #e0e7ff;
    font-size: 15px;
    margin: 0;
    max-width: 800px;
    line-height: 1.7;
}

/* Moduł Interaktywny - Symulator Błędów */
.rk-diag-simulator {
    background: #ffffff;
    padding: 40px 50px;
    border-bottom: 1px solid var(--rk-diag-border);
}

.rk-sim-controls {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    margin-bottom: 30px;
    background: var(--rk-diag-bg);
    padding: 25px;
    border-radius: 16px;
    border: 1px solid var(--rk-diag-border);
}

.rk-control-group {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.rk-control-label {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-diag-text);
    text-transform: uppercase;
    display: flex;
    justify-content: space-between;
}
.rk-control-label span { color: var(--rk-diag-primary); font-size: 16px; font-weight: 900; }

/* Radio Buttons (Gwint) */
.rk-radio-group {
    display: flex;
    gap: 10px;
}

.rk-radio-btn {
    flex: 1;
    position: relative;
}

.rk-radio-btn input {
    position: absolute; opacity: 0; cursor: pointer;
}

.rk-radio-label {
    display: block;
    padding: 12px;
    text-align: center;
    background: #ffffff;
    border: 2px solid var(--rk-diag-border);
    border-radius: 8px;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-diag-muted);
    cursor: pointer;
    transition: all 0.2s;
}

.rk-radio-btn input:checked + .rk-radio-label {
    background: var(--rk-diag-primary-light);
    border-color: var(--rk-diag-primary);
    color: var(--rk-diag-primary);
}

/* Slider (Skok) */
.rk-diag-range {
    -webkit-appearance: none; width: 100%; height: 8px; border-radius: 4px; background: #cbd5e1; outline: none; margin-top: 10px;
}
.rk-diag-range::-webkit-slider-thumb {
    -webkit-appearance: none; appearance: none; width: 26px; height: 26px; border-radius: 50%;
    background: var(--rk-diag-primary); cursor: pointer; border: 4px solid #ffffff; box-shadow: 0 2px 4px rgba(0,0,0,0.2);
}

/* Wyniki (Statusy) */
.rk-diag-status-board {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
}

.rk-status-card {
    border: 2px solid var(--rk-diag-border);
    border-radius: 12px;
    padding: 20px;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 15px;
    transition: border-color 0.2s, background 0.2s;
}

.rk-status-card.error { border-color: var(--rk-diag-danger); background: #fef2f2; }
.rk-status-card.warning { border-color: var(--rk-diag-alert); background: #fff7ed; }
.rk-status-card.ok { border-color: var(--rk-diag-success); background: #ecfdf5; }

.rk-status-title {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-diag-muted);
    text-transform: uppercase;
}

.rk-status-val {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-diag-text);
}
.rk-status-card.error .rk-status-val { color: var(--rk-diag-danger); }
.rk-status-card.warning .rk-status-val { color: var(--rk-diag-alert); }
.rk-status-card.ok .rk-status-val { color: var(--rk-diag-success); }

.rk-svg-static-icon {
    width: 60px;
    height: 60px;
}

/* Lista Skutków Technicznych (Siatka) */
.rk-consequences-grid {
    padding: 40px 50px;
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.rk-consequence-item {
    background: #ffffff;
    border: 1px solid var(--rk-diag-border);
    border-radius: 16px;
    padding: 30px;
    display: grid;
    grid-template-columns: 80px 1fr;
    gap: 25px;
    align-items: center;
}

.rk-cons-icon {
    width: 80px; height: 80px;
    border-radius: 16px;
    background: var(--rk-diag-bg);
    display: flex; align-items: center; justify-content: center;
    border: 2px solid var(--rk-diag-border);
}

.rk-cons-content h3 {
    font-size: 19px;
    font-weight: 900;
    color: var(--rk-diag-dark);
    margin: 0 0 10px 0;
}

.rk-cons-content p {
    font-size: 14.5px;
    line-height: 1.7;
    color: var(--rk-diag-text);
    margin: 0;
}

.rk-diag-link {
    color: var(--rk-diag-primary);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dashed var(--rk-diag-primary);
}
.rk-diag-link:hover { color: #4338ca; border-bottom-style: solid; }

@media (max-width: 768px) {
    .rk-diag-header, .rk-diag-simulator, .rk-consequences-grid { padding: 30px 20px; }
    .rk-sim-controls { grid-template-columns: 1fr; }
    .rk-diag-status-board { grid-template-columns: 1fr; }
    .rk-consequence-item { grid-template-columns: 1fr; text-align: center; padding: 25px; }
    .rk-cons-icon { margin: 0 auto; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#article-skutki-bledow",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/"
    },
    "headline": "Jakie są konsekwencje błędnego doboru gwintu i skoku roboczego?",
    "description": "Techniczne skutki niedomykania pętli: zerwany gwint adaptacyjny, przegrzewanie strefowe, wahania rotametrów i taktowanie pompy ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#dataset-bledy-wymiarowania",
    "name": "Analiza skutków niedomykania pętli przez siłowniki",
    "description": "Zestawienie parametrów technicznych i skutków hydraulicznych wynikających ze złego doboru skoku roboczego (np. 3.0 mm dla zaworu 4.5 mm).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "zły skok siłownika podłogówka",
      "gwint M30x1.5 a M28x1.5",
      "taktowanie pompy ciepła przez siłownik",
      "przegrzewanie sypialni",
      "nieszczelność zaworu rozdzielacza"
    ],
    "measurementTechnique": "Analiza zachowania układu hydraulicznego i termodynamicznego przy stałym przecieku masowym na niedomkniętym zaworze termostatycznym belki powrotnej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Uszkodzenie mechaniczne: Zerwanie gwintu adaptacyjnego przy siłowej próbie montażu M30 na zawór M28.",
        "Przegrzewanie strefy: Wzrost temperatury w sypialni z 20°C do 24°C pomimo sygnału odcięcia.",
        "Zaburzenie hydrauliki: Spadek projektowego przepływu 1,5 l/min w strefach niedogrzanych na korzyść nieszczelnej pętli.",
        "Taktowanie: 18-25 cykli startu sprężarki na dobę z powodu minimalnego, stałego odbioru ciepła."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#webapp-skutki-bledow",
    "name": "Symulator Skutków Błędnego Doboru Siłownika",
    "description": "Aplikacja pozwalająca na weryfikację wpływu źle dobranego gwintu i skoku siłownika na temperaturę wewnętrzną, przepływ i cykle pracy sprężarki.",
    "applicationCategory": "DiagnosticApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5, CSS3, and JavaScript.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-diag-container" id="rk-diag-app">
    
    <div class="rk-diag-header">
        <div class="rk-diag-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            Klinika Błędów Instalacyjnych
        </div>
        <h2>Jakie są konsekwencje błędnego doboru gwintu i skoku roboczego?</h2>
        <p>Ignorowanie na pozór błahych milimetrów kończy się katastrofą dla komfortu cieplnego i rachunków. Zobacz, co dzieje się z układem, gdy siłownik nie radzi sobie z fizycznym zamknięciem zaworu.</p>
    </div>

    <div class="rk-diag-simulator">
        <div class="rk-sim-controls">
            
            <div class="rk-control-group">
                <div class="rk-control-label">Próba montażu na zawór <span>M30 x 1.5</span></div>
                <div class="rk-radio-group">
                    <label class="rk-radio-btn">
                        <input type="radio" name="diagThread" value="M28" id="thM28" onchange="updateDiagnostic()">
                        <span class="rk-radio-label">Siłownik M28x1.5</span>
                    </label>
                    <label class="rk-radio-btn">
                        <input type="radio" name="diagThread" value="M30" id="thM30" checked onchange="updateDiagnostic()">
                        <span class="rk-radio-label">Siłownik M30x1.5</span>
                    </label>
                </div>
            </div>

            <div class="rk-control-group">
                <div class="rk-control-label">Skok trzpienia siłownika: <span id="diagStrokeOut">4.5 mm</span></div>
                <input type="range" class="rk-diag-range" id="diagStroke" min="2.0" max="5.0" step="0.5" value="4.5" oninput="updateDiagnostic()">
                <div style="font-size:11px; color:#64748b; margin-top:5px;">Wymagany skok do pełnego zamknięcia tej belki: 4.5 mm</div>
            </div>

        </div>

        <div class="rk-diag-status-board">
            <div class="rk-status-card" id="cardMech">
                <svg class="rk-svg-static-icon" viewBox="0 0 100 100">
                    <rect x="25" y="20" width="50" height="30" fill="none" stroke="currentColor" stroke-width="6" rx="4"/>
                    <path id="svgMechThread" d="M 25 50 L 25 80 M 75 50 L 75 80" stroke="currentColor" stroke-width="6"/>
                    <path d="M 15 65 L 85 65 M 15 75 L 85 75" stroke="currentColor" stroke-width="2" stroke-dasharray="4"/>
                </svg>
                <div>
                    <div class="rk-status-title">Stan Gwintu Adaptacyjnego</div>
                    <div class="rk-status-val" id="valMech">Szczelny</div>
                </div>
            </div>

            <div class="rk-status-card" id="cardTemp">
                <svg class="rk-svg-static-icon" viewBox="0 0 100 100">
                    <rect x="40" y="15" width="20" height="50" fill="none" stroke="currentColor" stroke-width="6" rx="10"/>
                    <circle cx="50" cy="75" r="15" fill="none" stroke="currentColor" stroke-width="6"/>
                    <rect id="svgTempFill" x="44" y="45" width="12" height="25" fill="currentColor"/>
                </svg>
                <div>
                    <div class="rk-status-title">Rzeczywista temp. sypialni (Zadana: 20°C)</div>
                    <div class="rk-status-val" id="valTemp">20.0 °C</div>
                </div>
            </div>

            <div class="rk-status-card" id="cardPump">
                <svg class="rk-svg-static-icon" viewBox="0 0 100 100">
                    <rect x="20" y="30" width="60" height="50" fill="none" stroke="currentColor" stroke-width="6" rx="4"/>
                    <circle cx="50" cy="55" r="12" fill="none" stroke="currentColor" stroke-width="4"/>
                    <path id="svgPumpCycles" d="M 50 35 L 50 43 M 50 67 L 50 75 M 35 55 L 43 55 M 67 55 L 75 55" stroke="currentColor" stroke-width="4"/>
                </svg>
                <div>
                    <div class="rk-status-title">Cykle Sprężarki na dobę</div>
                    <div class="rk-status-val" id="valPump">3-5 (Norma)</div>
                </div>
            </div>
        </div>
    </div>

    <div class="rk-consequences-grid">
        
        <div class="rk-consequence-item">
            <div class="rk-cons-icon" style="color:var(--rk-diag-danger);">
                <svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            </div>
            <div class="rk-cons-content">
                <h3>Zerwanie gwintu (Błąd M30 vs M28)</h3>
                <p>Błędne sparowanie gwintu siłownika (np. próba siłowego nakręcenia pierścienia M30 x 1,5 mm na rzadziej spotykany gwint zaworu M28 x 1,5 mm lub M30 x 1,0 mm) skutkuje nieodwracalnym zerwaniem plastikowego gwintu adaptacyjnego i nieszczelnością mechaniczną całej konstrukcji nastawczej.</p>
            </div>
        </div>

        <div class="rk-consequence-item">
            <div class="rk-cons-icon" style="color:var(--rk-diag-alert);">
                <svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z"></path></svg>
            </div>
            <div class="rk-cons-content">
                <h3>Przegrzewanie strefowe</h3>
                <p>Jeżeli skok roboczy tłoczka siłownika (np. 3,0 mm) jest mniejszy niż skok trzpienia zaworu w belce (4,5 mm), zawór nigdy nie zostanie zamknięty. Do pętli w sypialni stale przedostaje się <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/" class="rk-diag-link">czynnik o temperaturze zasilania 35°C</a>, pomimo sygnału z termostatu o osiągnięciu temperatury zadanej 20°C. Rzeczywista temperatura wzrasta do 24°C, generując straty energii.</p>
            </div>
        </div>

        <div class="rk-consequence-item">
            <div class="rk-cons-icon" style="color:var(--rk-diag-primary);">
                <svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path><polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline><line x1="12" y1="22.08" x2="12" y2="12"></line></svg>
            </div>
            <div class="rk-cons-content">
                <h3>Zaburzenie równoważenia hydraulicznego</h3>
                <p><a href="https://projekt-ogrzewania.pl/rozdzielacz-do-ogrzewania-podlogowego-mosiezny-czy-ze-stali-nierdzewnej/" class="rk-diag-link">Rotametry w rozdzielaczu</a> na pozostałych pętlach wykazują losowe wahania przepływu. Przepływ projektowy na poziomie 1,5 l/min spada w strefach niedogrzanych, ponieważ woda pod ciśnieniem grawitacyjnie wybiera linię najmniejszego oporu – pętlę z niedomkniętym siłownikiem.</p>
            </div>
        </div>

        <div class="rk-consequence-item">
            <div class="rk-cons-icon" style="color:var(--rk-diag-dark);">
                <svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            </div>
            <div class="rk-cons-content">
                <h3>Destrukcyjne taktowanie pompy ciepła</h3>
                <p>Ciągły minimalny odbiór ciepła przez jedną nieszczelną pętlę oszukuje krzywą grzewczą. Uniemożliwia to przejście <a href="https://projekt-ogrzewania.pl/pompa-ciepla/" class="rk-diag-link">inwerterowej pompy ciepła</a> w naturalny stan uśpienia, generując aż 18-25 cykli startu sprężarki na dobę, co drastycznie skraca jej żywotność sprzętową.</p>
            </div>
        </div>

    </div>
</div>

<script>
function updateDiagnostic() {
    const threadSelect = document.querySelector('input[name="diagThread"]:checked').value; // "M28" or "M30"
    const strokeVal = parseFloat(document.getElementById('diagStroke').value);
    document.getElementById('diagStrokeOut').textContent = strokeVal.toFixed(1) + ' mm';

    const cardMech = document.getElementById('cardMech');
    const valMech = document.getElementById('valMech');
    const svgMechThread = document.getElementById('svgMechThread');

    const cardTemp = document.getElementById('cardTemp');
    const valTemp = document.getElementById('valTemp');
    const svgTempFill = document.getElementById('svgTempFill');

    const cardPump = document.getElementById('cardPump');
    const valPump = document.getElementById('valPump');
    const svgPumpCycles = document.getElementById('svgPumpCycles');

    // 1. Logika Gwintu
    if(threadSelect === 'M28') {
        // Próba nałożenia M28 na M30 -> zerwanie
        cardMech.className = 'rk-status-card error';
        valMech.textContent = 'ZERWANY';
        svgMechThread.setAttribute('stroke-dasharray', '5 10'); // Wizualizacja zerwania statyczna
    } else {
        cardMech.className = 'rk-status-card ok';
        valMech.textContent = 'SZCZELNY';
        svgMechThread.setAttribute('stroke-dasharray', '0'); // Cały gwint
    }

    // 2. Logika Skoku (Niedomykanie)
    // Wymagane 4.5mm do zamknięcia. 
    // Im mniejszy skok, tym wyższa temp i więcej taktowania
    if(strokeVal < 4.5 || threadSelect === 'M28') {
        // Oblicz stopień przecieku
        let leakSeverity = 0;
        if(threadSelect === 'M28') {
            leakSeverity = 1; // max przeciek bo siłownik odskoczył
        } else {
            // stroke od 4.0 do 2.0 -> severity rośnie
            leakSeverity = (4.5 - strokeVal) / 2.5; 
        }
        
        const tempC = 20 + (leakSeverity * 4.5); // max 24.5C
        const cycles = Math.floor(5 + (leakSeverity * 20)); // do 25 cykli

        cardTemp.className = 'rk-status-card error';
        valTemp.textContent = tempC.toFixed(1) + ' °C';
        svgTempFill.setAttribute('y', Math.max(15, 45 - (leakSeverity * 25)).toString());
        svgTempFill.setAttribute('height', Math.min(50, 25 + (leakSeverity * 25)).toString());

        cardPump.className = 'rk-status-card error';
        valPump.textContent = cycles + ' (Taktowanie!)';
        svgPumpCycles.setAttribute('stroke-dasharray', '2 4'); // chaotyczne cykle

    } else {
        // OK
        cardTemp.className = 'rk-status-card ok';
        valTemp.textContent = '20.0 °C';
        svgTempFill.setAttribute('y', '45');
        svgTempFill.setAttribute('height', '25');

        cardPump.className = 'rk-status-card ok';
        valPump.textContent = '3-5 (Norma)';
        svgPumpCycles.setAttribute('stroke-dasharray', '0');
    }
}

document.addEventListener('DOMContentLoaded', updateDiagnostic);
</script>



<style>
:root {
    --rk-vav-dark: #0f172a;
    --rk-vav-card: #ffffff;
    --rk-vav-bg: #f8fafc;
    --rk-vav-border: #e2e8f0;
    --rk-vav-primary: #0284c7; /* Engineering Blue */
    --rk-vav-primary-light: #e0f2fe;
    --rk-vav-accent: #0ea5e9;
    --rk-vav-danger: #ef4444; /* Pressure/Warning */
    --rk-vav-success: #10b981; /* Eco/Smart */
    --rk-vav-text: #334155;
    --rk-vav-muted: #64748b;
}

.rk-vav-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-vav-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.15);
    border: 1px solid rgba(2, 132, 199, 0.2);
    overflow: hidden;
}

/* Sekcja Główna - Nagłówek */
.rk-vav-header {
    background: linear-gradient(135deg, var(--rk-vav-dark) 0%, #1e293b 100%);
    padding: 45px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-vav-primary);
}

.rk-vav-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(2, 132, 199, 0.3);
    color: #7dd3fc;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(125, 211, 252, 0.2);
}

.rk-vav-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-vav-header p {
    color: #cbd5e1;
    font-size: 15px;
    margin: 0;
    line-height: 1.7;
    max-width: 800px;
}

/* Symulator VAV (Zmienny Przepływ) */
.rk-vav-simulator {
    background: #ffffff;
    padding: 40px 50px;
    border-bottom: 1px solid var(--rk-vav-border);
}

.rk-vav-sim-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    margin-bottom: 30px;
    flex-wrap: wrap;
    gap: 20px;
}

.rk-vav-controls {
    flex-grow: 1;
    max-width: 400px;
}

.rk-slider-label {
    display: flex;
    justify-content: space-between;
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-vav-muted);
    margin-bottom: 12px;
    text-transform: uppercase;
}

.rk-slider-label span {
    color: var(--rk-vav-primary);
    font-size: 18px;
    font-weight: 900;
}

.rk-vav-range {
    -webkit-appearance: none; width: 100%; height: 8px; border-radius: 4px; background: var(--rk-vav-border); outline: none;
}
.rk-vav-range::-webkit-slider-thumb {
    -webkit-appearance: none; appearance: none; width: 28px; height: 28px; border-radius: 50%;
    background: var(--rk-vav-primary); cursor: pointer; border: 4px solid #ffffff; box-shadow: 0 2px 5px rgba(0,0,0,0.2); transition: 0.1s;
}
.rk-vav-range::-webkit-slider-thumb:active { transform: scale(1.1); }

/* Switch Pompy */
.rk-pump-switch-box {
    background: var(--rk-vav-bg);
    padding: 15px 20px;
    border-radius: 12px;
    border: 1px solid var(--rk-vav-border);
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-pump-label {
    font-size: 13px;
    font-weight: 700;
    color: var(--rk-vav-text);
    display: flex;
    flex-direction: column;
}
.rk-pump-label small { color: var(--rk-vav-muted); font-size: 11px; }

.rk-toggle {
    position: relative; display: inline-block; width: 56px; height: 30px; flex-shrink: 0;
}
.rk-toggle input { opacity: 0; width: 0; height: 0; }
.rk-toggle-slider {
    position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0;
    background-color: var(--rk-vav-danger); transition: .4s; border-radius: 34px;
}
.rk-toggle-slider:before {
    position: absolute; content: ""; height: 22px; width: 22px; left: 4px; bottom: 4px;
    background-color: white; transition: .4s; border-radius: 50%;
}
.rk-toggle input:checked + .rk-toggle-slider { background-color: var(--rk-vav-success); }
.rk-toggle input:checked + .rk-toggle-slider:before { transform: translateX(26px); }

/* Wyniki Symulacji */
.rk-vav-metrics {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    margin-bottom: 30px;
}

.rk-metric-card {
    background: var(--rk-vav-bg);
    border: 1px solid var(--rk-vav-border);
    border-radius: 16px;
    padding: 20px;
    text-align: center;
    position: relative;
    overflow: hidden;
    transition: all 0.3s;
}

.rk-metric-card.alert {
    background: #fef2f2;
    border-color: var(--rk-vav-danger);
}

.rk-metric-card.eco {
    background: #ecfdf5;
    border-color: var(--rk-vav-success);
}

.rk-metric-val {
    display: block; font-size: 32px; font-weight: 900; color: var(--rk-vav-dark); margin: 10px 0 5px;
    transition: color 0.3s;
}
.rk-metric-card.alert .rk-metric-val { color: var(--rk-vav-danger); }
.rk-metric-card.eco .rk-metric-val { color: var(--rk-vav-success); }

.rk-metric-unit { font-size: 14px; color: var(--rk-vav-muted); font-weight: 700; }
.rk-metric-title { font-size: 12px; color: var(--rk-vav-muted); text-transform: uppercase; font-weight: 800; }

/* Siatka Projektowa (4 Składowe) */
.rk-vav-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    padding: 40px 50px;
    background: #ffffff;
}

.rk-grid-tile {
    background: var(--rk-vav-bg);
    border-radius: 16px;
    padding: 25px;
    border: 1px solid var(--rk-vav-border);
    display: flex;
    flex-direction: column;
    gap: 15px;
    transition: transform 0.3s, box-shadow 0.3s;
}

.rk-grid-tile:hover {
    transform: translateY(-5px);
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.1);
    border-color: var(--rk-vav-primary-light);
}

.rk-tile-icon {
    width: 48px; height: 48px;
    background: #ffffff;
    border-radius: 12px;
    display: flex; align-items: center; justify-content: center;
    color: var(--rk-vav-primary);
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-tile-title {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-vav-dark);
    margin: 0;
}

.rk-tile-text {
    font-size: 14px;
    line-height: 1.6;
    color: var(--rk-vav-text);
    margin: 0;
    flex-grow: 1;
}

.rk-vav-link {
    color: var(--rk-vav-primary);
    font-weight: 700;
    text-decoration: none;
    font-size: 13px;
    display: inline-flex;
    align-items: center;
    gap: 5px;
}
.rk-vav-link:hover { text-decoration: underline; }

/* Animacje SVG */
.rk-pump-impeller {
    transform-origin: 50px 50px;
    /* Animacja sterowana przez JS */
}

/* Sekcja CTA */
.rk-vav-cta {
    background: linear-gradient(to right, var(--rk-vav-dark), #1e293b);
    padding: 50px;
    text-align: center;
    color: #ffffff;
}

.rk-vav-cta h3 {
    font-size: 24px;
    font-weight: 900;
    margin: 0 0 15px 0;
}

.rk-vav-cta p {
    color: #94a3b8;
    font-size: 16px;
    margin: 0 auto 30px auto;
    max-width: 600px;
    line-height: 1.6;
}

.rk-btn-cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-vav-primary);
    color: #ffffff;
    font-size: 18px;
    font-weight: 900;
    padding: 20px 40px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(2, 132, 199, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    border: 2px solid transparent;
}

.rk-btn-cta:hover {
    transform: translateY(-4px) scale(1.02);
    background: #0369a1;
    box-shadow: 0 20px 35px -5px rgba(2, 132, 199, 0.5);
    border-color: #7dd3fc;
}

.rk-btn-cta svg { transition: transform 0.3s; }
.rk-btn-cta:hover svg { transform: translateX(5px); }

@media (max-width: 768px) {
    .rk-vav-header, .rk-vav-simulator, .rk-vav-grid, .rk-vav-cta { padding: 30px 20px; }
    .rk-vav-metrics { grid-template-columns: 1fr; }
    .rk-vav-grid { grid-template-columns: 1fr; }
    .rk-vav-sim-header { flex-direction: column; align-items: stretch; }
    .rk-pump-switch-box { justify-content: space-between; }
    .rk-btn-cta { width: 100%; font-size: 16px; padding: 18px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#article-wplyw-na-projekt",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/"
    },
    "headline": "Jak automatyka wpływa na projekt ogrzewania podłogowego i hydraulikę instalacji?",
    "description": "Zobacz jak siłowniki termoelektryczne zamieniają układ stałoprzepływowy na układ zmiennego przepływu (VAV) i wpływają na pompę, OZC oraz bufor.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#dataset-hydraulika",
    "name": "Wpływ Automatyki na Hydraulikę i Projekt Ogrzewania Podłogowego",
    "description": "Zestawienie parametrów projektowych: ciśnienie różnicowe, wymagana pojemność bufora (10-15l/kW) oraz charakterystyka pracy pompy obiegowej przy zmiennym przepływie (VAV).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "zmienny przepływ VAV podłogówka",
      "dobór bufora do pompy ciepła",
      "ciśnienie różnicowe na rozdzielaczu",
      "charakterystyka pompy obiegowej Δp-c",
      "projekt OZC z automatyką"
    ],
    "measurementTechnique": "Symulacja zmian ciśnienia, przepływu i poboru mocy w układzie hydraulicznym przy proporcjonalnej redukcji aktywnych pętli grzewczych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wymóg stosowania pomp o charakterystyce proporcjonalnego ciśnienia (Δp-c) dla redukcji mocy do 4W.",
        "Obligatoryjne zastosowanie bufora o pojemności min. 10-15 l/kW przy odcinaniu zładu przez siłowniki.",
        "Konieczność precyzyjnego mapowania elektrycznego stref według obliczeń zysków i strat (OZC)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#webapp-vav",
    "name": "Symulator Hydrauliki VAV",
    "description": "Interaktywny model pokazujący wzrost oporów, świsty na rotametrach oraz zachowanie nowoczesnej pompy obiegowej w momencie zamykania stref przez siłowniki termoelektryczne.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5, CSS3, and JavaScript.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-vav-container" id="rk-vav-app">
    
    <div class="rk-vav-header">
        <div class="rk-vav-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Inżynieria Przepływów
        </div>
        <h2>Jak to wpływa na projekt ogrzewania podłogowego i hydraulikę instalacji?</h2>
        <p>Wprowadzenie siłowników odcinających zamienia cichą, stałoprzepływową podłogówkę w wymagający układ o zmiennym natężeniu przepływu (<strong>VAV</strong>). Gdy 8 z 12 pętli nagle się zamyka, ciśnienie hydrauliczne szuka ujścia. Zobacz, co się dzieje z Twoją instalacją.</p>
    </div>

    <div class="rk-vav-simulator">
        <div class="rk-vav-sim-header">
            <div class="rk-vav-controls">
                <div class="rk-slider-label">Zamknięte siłowniki: <span id="vavActuatorsOut">0 z 12</span></div>
                <input type="range" class="rk-vav-range" id="vavSlider" min="0" max="11" step="1" value="0">
            </div>
            
            <div class="rk-pump-switch-box">
                <div class="rk-pump-label">
                    Tryb pracy pompy obiegowej
                    <span id="vavPumpTypeOut" style="color:var(--rk-vav-success); font-weight:900;">Auto-Adapt (Δp-c)</span>
                </div>
                <label class="rk-toggle">
                    <input type="checkbox" id="vavPumpToggle" checked>
                    <span class="rk-toggle-slider"></span>
                </label>
            </div>
        </div>

        <div class="rk-vav-metrics">
            <div class="rk-metric-card" id="cardPressure">
                <div class="rk-metric-title">Ciśnienie w belce</div>
                <div class="rk-metric-val" id="valPressure">15 <span class="rk-metric-unit">kPa</span></div>
                <div style="height: 40px; margin-top:10px;">
                    <svg viewBox="0 0 100 40" style="width:100%; height:100%;">
                        <line x1="0" y1="20" x2="100" y2="20" stroke="#e2e8f0" stroke-width="4" stroke-linecap="round"/>
                        <line id="svgPressureBar" x1="0" y1="20" x2="30" y2="20" stroke="#10b981" stroke-width="4" stroke-linecap="round" style="transition:all 0.3s;"/>
                    </svg>
                </div>
            </div>

            <div class="rk-metric-card" id="cardPower">
                <div class="rk-metric-title">Pobór mocy pompy</div>
                <div class="rk-metric-val" id="valPower">45 <span class="rk-metric-unit">W</span></div>
                <div style="height: 40px; margin-top:10px;">
                    <svg viewBox="0 0 100 40" style="width:100%; height:100%;">
                        <g id="svgImpeller" class="rk-pump-impeller">
                            <circle cx="50" cy="20" r="15" fill="none" stroke="#cbd5e1" stroke-width="2"/>
                            <path d="M 50 5 L 50 35 M 35 20 L 65 20 M 39 9 L 61 31 M 39 31 L 61 9" stroke="#94a3b8" stroke-width="3"/>
                        </g>
                    </svg>
                </div>
            </div>

            <div class="rk-metric-card" id="cardNoise">
                <div class="rk-metric-title">Stan Rotametrów</div>
                <div class="rk-metric-val" id="valNoise" style="font-size:20px; line-height:32px;">Cisza i stabilność</div>
                <div style="height: 40px; margin-top:10px;">
                    <svg viewBox="0 0 100 40" style="width:100%; height:100%;">
                        <rect x="40" y="5" width="20" height="30" fill="none" stroke="#cbd5e1" stroke-width="2" rx="2"/>
                        <rect id="svgFlowBar" x="42" y="25" width="16" height="8" fill="#0284c7" style="transition:all 0.3s;"/>
                    </svg>
                </div>
            </div>
        </div>
    </div>

    <div class="rk-vav-grid">
        
        <div class="rk-grid-tile">
            <div class="rk-tile-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg></div>
            <h3 class="rk-tile-title">Projektowe Obciążenie Cieplne (OZC)</h3>
            <p class="rk-tile-text">Zgodnie z normą <strong>PN-EN 12831</strong>, siłowniki muszą być mapowane elektrycznie w taki sposób, aby wspólnie obsługiwać pętle jednego pomieszczenia. Połączenie 3 pętli salonu pod jeden termostat gwarantuje równomierny odbiór mocy.</p>
            <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" class="rk-vav-link">Czytaj więcej o OZC <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg></a>
        </div>

        <div class="rk-grid-tile">
            <div class="rk-tile-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="12" cy="12" r="10"></circle><path d="M12 2v20"></path><path d="M12 12l8.5-8.5"></path></svg></div>
            <h3 class="rk-tile-title">Dobór pompy obiegowej (Δp-c)</h3>
            <p class="rk-tile-text">Wymagana jest elektroniczna pompa pracująca w trybie stałej lub proporcjonalnej krzywej ciśnienia (<strong>Δp-c</strong>). Redukuje ona swoje obroty w odpowiedzi na zamykające się siłowniki, dławiąc pobór mocy z 45 W do 4 W.</p>
            <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/" class="rk-vav-link">Kalkulator doboru pompy <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg></a>
        </div>

        <div class="rk-grid-tile">
            <div class="rk-tile-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M5 12h14"></path><path d="M12 5v14"></path><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect></svg></div>
            <h3 class="rk-tile-title">Sprzęgło lub bufor ciepła</h3>
            <p class="rk-tile-text">Odcinanie pętli eliminuje zład wody niezbędny dla pompy ciepła (zazwyczaj <strong>120-150 litrów</strong> min.). Konieczny jest bufor rzędu 10-15 litrów na każdy kW mocy urządzenia, chroniący skraplacz przed krytycznym błędem przepływu.</p>
            <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/" class="rk-vav-link">Bufor w ogrzewaniu podłogowym <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg></a>
        </div>

        <div class="rk-grid-tile">
            <div class="rk-tile-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"></path><polyline points="22 6 12 13 2 6"></polyline></svg></div>
            <h3 class="rk-tile-title">Projektowy rozstaw rur</h3>
            <p class="rk-tile-text">W strefach brzegowych (np. przy oknach HS), gdzie projekt narzuca rozstaw <strong>10 cm</strong>, bezwładność jest mniejsza. Siłowniki reagują w tych strefach znacznie dynamiczniej na szybkie straty ciepła i zyski słoneczne niż w środku pomieszczenia (15 cm).</p>
            <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/" class="rk-vav-link">Jaki rozstaw rur wybrać? <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg></a>
        </div>

    </div>

    <div class="rk-vav-cta">
        <h3>Nie zgaduj. Powierz hydraulikę ekspertom.</h3>
        <p>Każdy źle dobrany siłownik, brak bufora czy zły rozstaw rur to wyższe rachunki i ryzyko uszkodzenia pompy ciepła. Zamów pełną, inżynierską dokumentację instalacyjną dla Twojego domu.</p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-cta">
            ZAMÓW PROFESJONALNY PROJEKT PODŁOGÓWKI
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"></path><path d="M12 5l7 7-7 7"></path></svg>
        </a>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Elementy UI
    const slider = document.getElementById('vavSlider');
    const toggle = document.getElementById('vavPumpToggle');
    
    const outActuators = document.getElementById('vavActuatorsOut');
    const outPumpType = document.getElementById('vavPumpTypeOut');
    
    const cardPressure = document.getElementById('cardPressure');
    const valPressure = document.getElementById('valPressure');
    const svgPressureBar = document.getElementById('svgPressureBar');
    
    const cardPower = document.getElementById('cardPower');
    const valPower = document.getElementById('valPower');
    const svgImpeller = document.getElementById('svgImpeller');
    
    const cardNoise = document.getElementById('cardNoise');
    const valNoise = document.getElementById('valNoise');
    const svgFlowBar = document.getElementById('svgFlowBar');

    let animRotation = 0;
    let currentSpeed = 5;

    // Funkcja aktualizująca symulację
    function updateSimulation() {
        const closed = parseInt(slider.value); // 0 to 11
        const isSmart = toggle.checked;
        
        outActuators.textContent = closed + ' z 12';
        
        let pressure, power, noiseLevel, flowVisual;

        if (isSmart) {
            outPumpType.textContent = 'Auto-Adapt (Δp-c)';
            outPumpType.style.color = 'var(--rk-vav-success)';
            
            // Smart pump: stabilizuje ciśnienie, redukuje moc
            pressure = 15; // Zawsze 15 kPa
            power = Math.max(4, 45 - (closed * 3.7)); // Spada z 45 do ~4
            noiseLevel = 'Cisza i stabilność';
            flowVisual = Math.max(2, 16 - (closed * 1.2)); // Rotametry opadają delikatnie
            
            // Wizualizacje UI dla Smart
            cardPressure.className = 'rk-metric-card eco';
            svgPressureBar.setAttribute('stroke', '#10b981');
            svgPressureBar.setAttribute('x2', '30'); // Długość paska
            
            cardPower.className = 'rk-metric-card eco';
            currentSpeed = Math.max(1, 10 - closed); // Zwalnia
            
            cardNoise.className = 'rk-metric-card eco';
            
        } else {
            outPumpType.textContent = 'Stałe Obroty (Stary typ)';
            outPumpType.style.color = 'var(--rk-vav-danger)';
            
            // Stara pompa: ciśnienie rośnie, moc stała
            pressure = 15 + (closed * 3.5); // Rośnie z 15 do ~53 kPa
            power = 45; // Ciągle 45 W
            flowVisual = Math.min(30, 16 + (closed * 1.5)); // Uderzenie hydrauliczne na otwartych rotametrach
            
            if (closed > 5) {
                noiseLevel = 'Świst na grzybkach!';
                cardNoise.className = 'rk-metric-card alert';
                cardPressure.className = 'rk-metric-card alert';
                svgPressureBar.setAttribute('stroke', '#ef4444');
            } else {
                noiseLevel = 'Napięty przepływ';
                cardNoise.className = 'rk-metric-card';
                cardPressure.className = 'rk-metric-card';
                svgPressureBar.setAttribute('stroke', '#f59e0b');
            }

            cardPower.className = 'rk-metric-card alert';
            currentSpeed = 15; // Kręci się szybko na maxa
            svgPressureBar.setAttribute('x2', Math.min(100, 30 + (closed * 6)).toString());
        }

        // Aktualizacja HTML
        valPressure.innerHTML = pressure.toFixed(0) + ' <span class="rk-metric-unit">kPa</span>';
        valPower.innerHTML = power.toFixed(0) + ' <span class="rk-metric-unit">W</span>';
        valNoise.textContent = noiseLevel;
        svgFlowBar.setAttribute('y', (35 - flowVisual).toString());
        svgFlowBar.setAttribute('height', flowVisual.toString());
    }

    // Prosta animacja wirnika pompy via RequestAnimationFrame
    function animatePump() {
        animRotation += currentSpeed;
        svgImpeller.style.transform = `rotate(${animRotation}deg)`;
        requestAnimationFrame(animatePump);
    }

    // Nasłuchiwacze
    if(slider) slider.addEventListener('input', updateSimulation);
    if(toggle) toggle.addEventListener('change', updateSimulation);

    // Inicjalizacja
    updateSimulation();
    animatePump();
});
</script>



<style>
:root {
    --rk-calc-dark: #0f172a;
    --rk-calc-panel: #1e293b;
    --rk-calc-primary: #0284c7; /* Engineering Blue */
    --rk-calc-primary-light: #e0f2fe;
    --rk-calc-accent: #f59e0b; /* Amber for energy/cost */
    --rk-calc-danger: #ef4444; /* Red for pressure/errors */
    --rk-calc-success: #10b981;
    --rk-calc-bg: #f8fafc;
    --rk-calc-border: #e2e8f0;
    --rk-calc-text: #334155;
    --rk-calc-muted: #64748b;
}

.rk-eng-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, system-ui, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.15);
    border: 1px solid rgba(2, 132, 199, 0.2);
    overflow: hidden;
}

/* Nagłówek H2 */
.rk-eng-header {
    background: linear-gradient(135deg, var(--rk-calc-dark) 0%, #0f172a 100%);
    padding: 40px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-calc-primary);
}

.rk-eng-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(2, 132, 199, 0.3);
    color: #7dd3fc;
    padding: 8px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid rgba(125, 211, 252, 0.2);
}

.rk-eng-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 10px 0;
    line-height: 1.3;
}

.rk-eng-header p {
    color: #94a3b8;
    font-size: 15px;
    margin: 0;
    max-width: 700px;
    line-height: 1.6;
}

/* Moduły Kalkulacyjne (Karty) */
.rk-eng-modules {
    padding: 30px 40px;
    display: flex;
    flex-direction: column;
    gap: 30px;
    background: var(--rk-calc-bg);
}

.rk-calc-card {
    background: #ffffff;
    border-radius: 16px;
    border: 1px solid var(--rk-calc-border);
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.05);
    overflow: hidden;
    display: grid;
    grid-template-columns: 1fr 350px;
}

/* Sekcja Treści H3 */
.rk-calc-content {
    padding: 35px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
}

.rk-calc-content h3 {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-calc-dark);
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-calc-icon {
    width: 32px; height: 32px;
    border-radius: 8px;
    display: flex; align-items: center; justify-content: center;
    background: var(--rk-calc-primary-light);
    color: var(--rk-calc-primary);
}

.rk-calc-text {
    font-size: 14px;
    line-height: 1.7;
    color: var(--rk-calc-text);
    margin: 0 0 20px 0;
}

.rk-calc-formula {
    background: #f1f5f9;
    padding: 12px 15px;
    border-radius: 8px;
    font-family: 'Courier New', monospace;
    font-size: 13px;
    color: var(--rk-calc-dark);
    font-weight: 700;
    margin-bottom: 20px;
    border-left: 3px solid var(--rk-calc-primary);
}

.rk-eng-link {
    color: var(--rk-calc-primary);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dashed var(--rk-calc-primary);
    transition: 0.3s;
}
.rk-eng-link:hover { color: #0369a1; border-bottom-style: solid; }

/* Sekcja Interaktywna (Prawa) */
.rk-calc-interactive {
    background: var(--rk-calc-panel);
    padding: 35px;
    color: #ffffff;
    display: flex;
    flex-direction: column;
    justify-content: center;
    position: relative;
}

.rk-slider-group {
    margin-bottom: 25px;
}

.rk-slider-label {
    display: flex;
    justify-content: space-between;
    font-size: 13px;
    font-weight: 700;
    color: #94a3b8;
    margin-bottom: 10px;
    text-transform: uppercase;
}
.rk-slider-label span { color: #ffffff; font-size: 16px; font-weight: 900; }

.rk-range-input {
    -webkit-appearance: none; width: 100%; height: 6px; border-radius: 3px; background: #334155; outline: none;
}
.rk-range-input::-webkit-slider-thumb {
    -webkit-appearance: none; appearance: none; width: 24px; height: 24px; border-radius: 50%;
    background: var(--rk-calc-primary); cursor: pointer; border: 3px solid #ffffff; transition: 0.1s;
}
.rk-range-input::-webkit-slider-thumb:active { transform: scale(1.1); }

.rk-calc-result-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-res-box {
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.1);
    padding: 15px;
    border-radius: 12px;
    text-align: center;
    transition: all 0.3s;
}

.rk-res-box.warning { border-color: var(--rk-calc-danger); background: rgba(239, 68, 68, 0.1); }
.rk-res-box.ok { border-color: var(--rk-calc-success); background: rgba(16, 185, 129, 0.1); }

.rk-res-val { display: block; font-size: 24px; font-weight: 900; color: #ffffff; margin-bottom: 5px; }
.rk-res-lab { display: block; font-size: 11px; color: #94a3b8; text-transform: uppercase; font-weight: 700; line-height: 1.3; }

/* SVG Animacje w Tle */
.rk-svg-bg {
    position: absolute; top: 10px; right: 10px; opacity: 0.1; width: 100px; height: 100px; pointer-events: none;
}

/* Specyficzne animacje */
.anim-gauge-needle { transform-origin: 50px 75px; transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1); }
.anim-water-level { transition: y 0.3s, height 0.3s, fill 0.3s; }
.anim-coin-drop { animation: coinDrop 2s infinite linear; }
@keyframes coinDrop {
    0% { transform: translateY(-20px); opacity: 0; }
    20% { opacity: 1; }
    80% { opacity: 1; }
    100% { transform: translateY(40px); opacity: 0; }
}

@media (max-width: 768px) {
    .rk-eng-header { padding: 30px 20px; }
    .rk-eng-modules { padding: 20px; }
    .rk-calc-card { grid-template-columns: 1fr; }
    .rk-calc-content { padding: 25px; }
    .rk-calc-interactive { padding: 25px; }
    .rk-calc-result-grid { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#article-obliczenia",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/"
    },
    "headline": "Wyliczenia inżynierskie – 3 przykłady hydrauliczne i energetyczne",
    "description": "Interaktywne kalkulacje hydrauliczne i energetyczne ilustrujące wpływ siłowników na ciśnienie różnicowe, zład wody oraz koszty strat ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#dataset-obliczenia",
    "name": "Parametry Hydrauliczne i Energetyczne Ogrzewania Podłogowego",
    "description": "Zestawienie obliczeń inżynierskich obrazujących zależności między zamknięciem pętli grzewczych a parametrami pracy układu.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "ciśnienie różnicowe",
      "przepływ masowy podłogówki",
      "minimalny zład wody pompy ciepła",
      "straty energii ogrzewania",
      "niekontrolowany przepływ pętli"
    ],
    "measurementTechnique": "Szacowanie oparte na wzorach termodynamiki i mechaniki płynów: V = Q / (cw × ρ × ΔT) oraz kalkulacja energii P = m × cw × ΔT.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wzrost ciśnienia z 15 kPa do ponad 45 kPa przy zamknięciu 70% pętli bez adaptacyjnej pompy obiegowej.",
        "Ryzyko awarii defrostu przy spadku zładu poniżej 40 litrów w instalacji 100m2.",
        "Straty finansowe rzędu 90 PLN miesięcznie z powodu przecieku 0.3 l/min na jednym zaworze."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#webapp-obliczenia",
    "name": "Symulator Hydrauliki i Kosztów Strat",
    "description": "Interaktywny panel obliczeniowy pozwalający sprawdzić w czasie rzeczywistym zmiany przepływu, ciśnienia, zładu wody oraz kosztów przy zmianie parametrów pracy siłowników.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5, CSS3, and JavaScript.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-eng-container" id="rk-eng-app">
    <div class="rk-eng-header">
        <div class="rk-eng-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line></svg>
            Inżynierski Moduł Obliczeniowy
        </div>
        <h2>Wyliczenia inżynierskie – 3 przykłady hydrauliczne i energetyczne</h2>
        <p>Matematyka w instalacjach HVAC nie wybacza błędów. Zobacz na żywych liczbach, jak zachowanie siłowników wpływa na pracę pompy, ciśnienie i Twój portfel.</p>
    </div>

    <div class="rk-eng-modules">

        <div class="rk-calc-card">
            <div class="rk-calc-content">
                <h3>
                    <div class="rk-calc-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="12" cy="12" r="10"></circle><polyline points="12 16 16 12 12 8"></polyline><line x1="8" y1="12" x2="16" y2="12"></line></svg></div>
                    Przykład 1: Zmiana przepływu i ciśnienia
                </h3>
                <p class="rk-calc-text">
                    Załóżmy budynek o zapotrzebowaniu na moc <strong>Q = 10 kW</strong>. Projektowy spadek temperatury to ΔT = 5 K (parametry 35/30°C). Całkowity projektowy przepływ objętościowy w instalacji wynosi około <strong>1,72 m³/h</strong> (28,6 l/min). 
                </p>
                <div class="rk-calc-formula">
                    V = Q / (cw × ρ × ΔT)<br>
                    V = 10000 / (4182 × 1 × 5) × 3600 = 1,72 m³/h
                </div>
                <p class="rk-calc-text">
                    Gdy termostaty zamykają strefy, opór rośnie. Bez inteligentnej <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/" class="rk-eng-link">pompy obiegowej</a> ciśnienie różnicowe na rozdzielaczu gwałtownie wzrasta, generując uciążliwy świst.
                </p>
            </div>
            <div class="rk-calc-interactive">
                <svg class="rk-svg-bg" viewBox="0 0 100 100">
                    <path d="M10 90 A 40 40 0 0 1 90 90" fill="none" stroke="#ffffff" stroke-width="10"/>
                    <line x1="50" y1="90" x2="30" y2="60" stroke="#ef4444" stroke-width="6" stroke-linecap="round"/>
                </svg>
                
                <div class="rk-slider-group">
                    <div class="rk-slider-label">Zamknięte pętle: <span id="valClosedLoops">0%</span></div>
                    <input type="range" class="rk-range-input" id="slideLoops" min="0" max="90" step="5" value="0">
                </div>
                
                <div class="rk-calc-result-grid">
                    <div class="rk-res-box">
                        <span class="rk-res-val" id="resFlow">1.72 <span style="font-size:12px;color:#94a3b8;">m³/h</span></span>
                        <span class="rk-res-lab">Rzeczywisty Przepływ</span>
                    </div>
                    <div class="rk-res-box" id="boxPressure">
                        <span class="rk-res-val" id="resPressure" style="color:var(--rk-calc-success);">15 <span style="font-size:12px;color:#94a3b8;">kPa</span></span>
                        <span class="rk-res-lab">Ciśnienie różnicowe</span>
                    </div>
                </div>
            </div>
        </div>

        <div class="rk-calc-card">
            <div class="rk-calc-content">
                <h3>
                    <div class="rk-calc-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg></div>
                    Przykład 2: Zład wody a odszranianie
                </h3>
                <p class="rk-calc-text">
                    Pompa ciepła o mocy 8 kW wymaga minimalnego przepływu ok. <strong>13,7 l/min</strong> (0,82 m³/h) do przeprowadzenia procedury defrostu parownika. Średnia pojemność rury PEX 16&#215;2 mm to 0,113 l/mb.
                </p>
                <p class="rk-calc-text">
                    Przy standardowym domu 100 m² (rozstaw co 15 cm) zład wynosi <strong>75,2 litra</strong>. Jeśli automatyka zamknie większość pokoi, w obiegu pozostanie zbyt mało wody. Pompa zgłosi błąd awaryjny, dlatego wymagane jest <a href="https://projekt-ogrzewania.pl/sprzeglo-hydrauliczne-w-instalacji-ogrzewania-podlogowego/" class="rk-eng-link">sprzęgło hydrauliczne</a> lub bufor.
                </p>
            </div>
            <div class="rk-calc-interactive">
                <svg class="rk-svg-bg" viewBox="0 0 100 100">
                    <rect x="20" y="20" width="60" height="70" fill="none" stroke="#ffffff" stroke-width="8" rx="4"/>
                    <rect x="25" y="40" width="50" height="45" fill="#ffffff" opacity="0.5"/>
                </svg>

                <div class="rk-slider-group">
                    <div class="rk-slider-label">Zamknięta pow. (siłowniki): <span id="valClosedArea">0 m²</span></div>
                    <input type="range" class="rk-range-input" id="slideArea" min="0" max="90" step="5" value="0">
                </div>
                
                <div class="rk-calc-result-grid">
                    <div class="rk-res-box" id="boxVolume">
                        <span class="rk-res-val" id="resVolume" style="color:var(--rk-calc-success);">75.2 <span style="font-size:12px;color:#94a3b8;">L</span></span>
                        <span class="rk-res-lab">Aktywny zład wody</span>
                    </div>
                    <div class="rk-res-box" id="boxStatus">
                        <span class="rk-res-val" id="resStatus" style="color:var(--rk-calc-success);">OK</span>
                        <span class="rk-res-lab">Status dla pompy 8kW</span>
                    </div>
                </div>
            </div>
        </div>

        <div class="rk-calc-card">
            <div class="rk-calc-content">
                <h3>
                    <div class="rk-calc-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg></div>
                    Przykład 3: Koszty niekontrolowanego przepływu
                </h3>
                <p class="rk-calc-text">
                    Niedomknięty z powodu złego skoku siłownik generuje permanentny przeciek. Przy różnicy temperatur ΔT = 5 K (zasilanie 38°C, powrót 33°C), zaledwie ułamek litra na minutę stale oddaje moc cieplną w miejscu, które powinno być wyłączone.
                </p>
                <div class="rk-calc-formula">
                    P = masa_wody × cw × ΔT<br>
                    Energia (kWh) = (P × czas) / 1000
                </div>
                <p class="rk-calc-text">
                    To zjawisko nie tylko przegrzewa pomieszczenie, ale drastycznie podbija <a href="https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/" class="rk-eng-link">koszty ogrzewania domu</a>. Zobacz, ile kosztuje Cię &#8222;drobny&#8221; przeciek w skali miesiąca przy cenie 1,20 PLN/kWh.
                </p>
            </div>
            <div class="rk-calc-interactive">
                <svg class="rk-svg-bg" viewBox="0 0 100 100">
                    <circle cx="50" cy="50" r="40" fill="none" stroke="#ffffff" stroke-width="8" stroke-dasharray="20 10"/>
                    <text x="50" y="65" fill="#ffffff" font-size="40" font-weight="bold" text-anchor="middle">PLN</text>
                </svg>

                <div class="rk-slider-group">
                    <div class="rk-slider-label">Wielkość przecieku: <span id="valLeak">0.1 l/min</span></div>
                    <input type="range" class="rk-range-input" id="slideLeak" min="0.1" max="1.5" step="0.1" value="0.3">
                </div>
                
                <div class="rk-calc-result-grid">
                    <div class="rk-res-box">
                        <span class="rk-res-val" id="resPowerLoss">34.8 <span style="font-size:12px;color:#94a3b8;">W</span></span>
                        <span class="rk-res-lab">Oddawana moc ciągła</span>
                    </div>
                    <div class="rk-res-box warning">
                        <span class="rk-res-val" id="resCostLoss" style="color:var(--rk-calc-danger);">30.11 <span style="font-size:12px;color:#94a3b8;">zł</span></span>
                        <span class="rk-res-lab">Strata / miesiąc (1 pętla)</span>
                    </div>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // --- Kalkulator 1: Ciśnienie ---
    const slideLoops = document.getElementById('slideLoops');
    const valClosedLoops = document.getElementById('valClosedLoops');
    const resFlow = document.getElementById('resFlow');
    const resPressure = document.getElementById('resPressure');
    const boxPressure = document.getElementById('boxPressure');

    function updatePressure() {
        const percent = parseInt(slideLoops.value);
        valClosedLoops.textContent = percent + '%';
        
        // Base flow 1.72 m3/h, Base pressure 15 kPa
        const currentFlow = 1.72 * (1 - (percent / 100));
        const currentPressure = 15 + (percent / 100) * 42.8; // Max around ~45-50 kPa at 90% closed
        
        resFlow.innerHTML = currentFlow.toFixed(2) + ' <span style="font-size:12px;color:#94a3b8;">m³/h</span>';
        resPressure.innerHTML = currentPressure.toFixed(0) + ' <span style="font-size:12px;color:#94a3b8;">kPa</span>';

        if(currentPressure > 30) {
            boxPressure.className = 'rk-res-box warning';
            resPressure.style.color = 'var(--rk-calc-danger)';
        } else if (currentPressure > 20) {
            boxPressure.className = 'rk-res-box';
            resPressure.style.color = '#f59e0b'; // warning amber
        } else {
            boxPressure.className = 'rk-res-box ok';
            resPressure.style.color = 'var(--rk-calc-success)';
        }
    }
    if(slideLoops) { slideLoops.addEventListener('input', updatePressure); updatePressure(); }

    // --- Kalkulator 2: Defrost ---
    const slideArea = document.getElementById('slideArea');
    const valClosedArea = document.getElementById('valClosedArea');
    const resVolume = document.getElementById('resVolume');
    const resStatus = document.getElementById('resStatus');
    const boxVolume = document.getElementById('boxVolume');
    const boxStatus = document.getElementById('boxStatus');

    function updateDefrost() {
        const areaClosed = parseInt(slideArea.value);
        valClosedArea.textContent = areaClosed + ' m²';
        
        // Base 100m2 -> 75.2L
        const activeVol = 75.2 * (1 - (areaClosed / 100));
        resVolume.innerHTML = activeVol.toFixed(1) + ' <span style="font-size:12px;color:#94a3b8;">L</span>';

        // PC 8kW needs roughly 40-50L minimum active volume to be safe without buffer
        if(activeVol < 45) {
            boxVolume.className = 'rk-res-box warning';
            resVolume.style.color = 'var(--rk-calc-danger)';
            boxStatus.className = 'rk-res-box warning';
            resStatus.textContent = 'WYMAGA BUFORA!';
            resStatus.style.color = 'var(--rk-calc-danger)';
        } else {
            boxVolume.className = 'rk-res-box ok';
            resVolume.style.color = 'var(--rk-calc-success)';
            boxStatus.className = 'rk-res-box ok';
            resStatus.textContent = 'OK';
            resStatus.style.color = 'var(--rk-calc-success)';
        }
    }
    if(slideArea) { slideArea.addEventListener('input', updateDefrost); updateDefrost(); }

    // --- Kalkulator 3: Koszty strat ---
    const slideLeak = document.getElementById('slideLeak');
    const valLeak = document.getElementById('valLeak');
    const resPowerLoss = document.getElementById('resPowerLoss');
    const resCostLoss = document.getElementById('resCostLoss');

    function updateLoss() {
        const leakLMin = parseFloat(slideLeak.value);
        valLeak.textContent = leakLMin.toFixed(1) + ' l/min';

        // leak in kg/s (1 L = 1 kg approx)
        const leakKgS = leakLMin / 60;
        // P = m * cw * dT (cw = 4182, dT = 5)
        const powerW = leakKgS * 4182 * 5;
        // Energy in month (720h)
        const energyKwh = (powerW * 720) / 1000;
        // Cost at 1.20 PLN
        const costPLN = energyKwh * 1.20;

        resPowerLoss.innerHTML = powerW.toFixed(1) + ' <span style="font-size:12px;color:#94a3b8;">W</span>';
        resCostLoss.innerHTML = costPLN.toFixed(2) + ' <span style="font-size:12px;color:#94a3b8;">zł</span>';
    }
    if(slideLeak) { slideLeak.addEventListener('input', updateLoss); updateLoss(); }

});
</script>



<style>
:root {
    --rk-err-dark: #0f172a;
    --rk-err-card: #ffffff;
    --rk-err-danger: #ef4444;
    --rk-err-danger-light: #fef2f2;
    --rk-err-success: #10b981;
    --rk-err-success-light: #dcfce7;
    --rk-err-border: #e2e8f0;
    --rk-err-text: #334155;
    --rk-err-muted: #64748b;
    --rk-err-bg: #f8fafc;
}

.rk-err-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-err-bg);
    border-radius: 20px;
    box-shadow: 0 20px 40px -10px rgba(15, 23, 42, 0.1);
    border: 1px solid var(--rk-err-border);
    overflow: hidden;
}

/* Nagłówek */
.rk-err-header {
    background: var(--rk-err-dark);
    padding: 40px 50px;
    color: #ffffff;
    border-bottom: 5px solid var(--rk-err-danger);
    position: relative;
}

.rk-err-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(239, 68, 68, 0.2);
    color: #fca5a5;
    padding: 6px 14px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid rgba(239, 68, 68, 0.3);
}

.rk-err-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 10px 0;
    line-height: 1.3;
}

.rk-err-header p {
    color: #94a3b8;
    font-size: 15px;
    margin: 0;
    max-width: 700px;
    line-height: 1.6;
}

/* Lista Audytowa */
.rk-err-list {
    padding: 40px 50px;
    display: flex;
    flex-direction: column;
    gap: 30px;
}

.rk-err-item {
    background: var(--rk-err-card);
    border: 2px solid var(--rk-err-border);
    border-radius: 16px;
    padding: 25px;
    transition: border-color 0.3s;
    display: flex;
    flex-direction: column;
    gap: 20px;
}

/* Przełącznik (Toggle) */
.rk-err-top {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-bottom: 20px;
    border-bottom: 1px solid var(--rk-err-border);
}

.rk-err-title {
    margin: 0;
}

.rk-err-title h3 {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-err-dark);
    margin: 0;
}

.rk-toggle-wrapper {
    display: flex;
    align-items: center;
    gap: 12px;
    background: var(--rk-err-bg);
    padding: 8px 12px;
    border-radius: 12px;
    border: 1px solid var(--rk-err-border);
}

.rk-toggle-label {
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    color: var(--rk-err-muted);
}

.rk-toggle-label.active-danger { color: var(--rk-err-danger); }
.rk-toggle-label.active-success { color: var(--rk-err-success); }

/* Switch element */
.rk-switch {
    position: relative;
    display: inline-block;
    width: 50px;
    height: 26px;
}
.rk-switch input { opacity: 0; width: 0; height: 0; }
.rk-slider {
    position: absolute;
    cursor: pointer;
    top: 0; left: 0; right: 0; bottom: 0;
    background-color: var(--rk-err-danger);
    transition: .3s;
    border-radius: 34px;
}
.rk-slider:before {
    position: absolute;
    content: "";
    height: 18px; width: 18px;
    left: 4px; bottom: 4px;
    background-color: white;
    transition: .3s;
    border-radius: 50%;
}
input:checked + .rk-slider { background-color: var(--rk-err-success); }
input:checked + .rk-slider:before { transform: translateX(24px); }

/* Zawartość (Grid: Tekst + SVG) */
.rk-err-content {
    display: grid;
    grid-template-columns: 1fr 200px;
    gap: 30px;
    align-items: stretch;
}

.rk-err-state {
    display: none;
}
.rk-err-state.active {
    display: block;
}

.rk-err-state h4 {
    font-size: 15px;
    font-weight: 800;
    margin: 0 0 8px 0;
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-err-state p {
    font-size: 14px;
    line-height: 1.7;
    color: var(--rk-err-text);
    margin: 0;
}

.rk-err-state.state-danger h4 { color: var(--rk-err-danger); }
.rk-err-state.state-success h4 { color: var(--rk-err-success); }

.rk-err-link {
    color: #0284c7;
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dotted #0284c7;
}
.rk-err-link:hover {
    border-bottom-style: solid;
    color: #0369a1;
}

/* Wizualizacja SVG (Statyczna) */
.rk-err-visual {
    background: var(--rk-err-bg);
    border-radius: 12px;
    border: 1px solid var(--rk-err-border);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 15px;
}

.rk-svg-static {
    width: 100%;
    height: 100%;
    max-height: 120px;
}

@media (max-width: 768px) {
    .rk-err-header { padding: 30px 20px; }
    .rk-err-list { padding: 20px; gap: 20px; }
    .rk-err-top { flex-direction: column; align-items: flex-start; gap: 15px; }
    .rk-err-content { grid-template-columns: 1fr; }
    .rk-err-visual { height: 140px; }
    .rk-toggle-wrapper { width: 100%; justify-content: space-between; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#article-bledy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/"
    },
    "headline": "Najczęstsze błędy montażowe i wykonawcze – lista kontrolna",
    "description": "Zestawienie najpoważniejszych błędów instalacyjnych przy montażu siłowników termoelektrycznych. Uniknij uszkodzeń automatyki i braku przepływu.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#dataset-bledy",
    "name": "Audyt Błędów Montażowych Siłowników Termoelektrycznych",
    "description": "Baza najczęściej diagnozowanych usterek wykonawczych (1000+ projektów) wraz ze standardem naprawczym dla instalacji ogrzewania podłogowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "błędy montażowe ogrzewania podłogowego",
      "nieprawidłowy montaż siłownika termoelektrycznego",
      "prąd rozruchowy siłowników termicznych",
      "wilgotność wylewki a automatyka",
      "zacięte zawory rozdzielacza"
    ],
    "measurementTechnique": "Analiza usterek technicznych i elektrycznych uszkodzeń wynikających z błędnej instalacji komponentów wykonawczych na belkach rozdzielacza.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Błąd 1: Niezdemontowanie pierścieni nastawy wstępnej blokujących przepływ.",
        "Błąd 2: Odwrotne podłączenie stref na listwie elektrycznej.",
        "Błąd 3: Sklejenie styków przez ignorowanie wysokiego prądu rozruchowego (2.4A).",
        "Błąd 4: Zwarcie na płytce PTC spowodowane wilgocią technologiczną z wylewki."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#webapp-bledy",
    "name": "Interaktywny Audytor Błędów Wykonawczych",
    "description": "Narzędzie interaktywne typu checklist pozwalające przełączać widok między błędnie wykonaną instalacją (skutki awarii) a prawidłowym standardem inżynierskim.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and CSS3 support.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-err-container" id="rk-audit-app">
    <div class="rk-err-header">
        <div class="rk-err-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            Audyt Techniczny (1000+ Projektów)
        </div>
        <h2>Najczęstsze błędy montażowe i wykonawcze – lista kontrolna</h2>
        <p>Zidentyfikowanie problemu na wczesnym etapie pozwala uniknąć zrywania posadzek. Przełączaj suwaki, aby zobaczyć, jak <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/" style="color:#fca5a5; text-decoration:underline;">błędy wykonawcze</a> niszczą sprawność instalacji oraz jak wygląda prawidłowy standard inżynierski.</p>
    </div>

    <div class="rk-err-list">
        
        <div class="rk-err-item" id="err-item-1">
            <div class="rk-err-top">
                <div class="rk-err-title">
                    <h3>1. Niezdemontowanie pierścieni nastawy wstępnej</h3>
                </div>
                <div class="rk-toggle-wrapper">
                    <span class="rk-toggle-label active-danger">Błąd</span>
                    <label class="rk-switch">
                        <input type="checkbox" onchange="toggleAudit('err-item-1', this)">
                        <span class="rk-slider"></span>
                    </label>
                    <span class="rk-toggle-label">Poprawnie</span>
                </div>
            </div>
            <div class="rk-err-content">
                <div class="rk-err-details">
                    <div class="rk-err-state state-danger active">
                        <h4><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><line x1="15" y1="9" x2="9" y2="15"></line><line x1="9" y1="9" x2="15" y2="15"></line></svg> Skutek: Brak przepływu</h4>
                        <p>Montaż siłownika na zaworze z kryzą ustawioną na wartość minimalną (np. N zamiast pozycji pełnego otwarcia tłumika hydraulicznego). Skutkuje to <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/" class="rk-err-link">brakiem fizycznego przepływu</a> na rotametrze nawet przy maksymalnie uniesionym tłoczku w pełni sprawnego siłownika.</p>
                    </div>
                    <div class="rk-err-state state-success">
                        <h4><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg> Standard: Pełne rozwarcie</h4>
                        <p>Przed nakręceniem siłownika, instalator demontuje plastikowe pierścienie blokujące i otwiera zawór przepływowy na maksimum. Regulacja dławienia przeniesiona jest wyłącznie na rotametry belk zasilającej zgodnie z obliczeniami OZC.</p>
                    </div>
                </div>
                <div class="rk-err-visual">
                    <svg class="rk-svg-static svg-danger" viewBox="0 0 100 100" style="display:block;">
                        <rect x="40" y="20" width="20" height="40" fill="#cbd5e1" stroke="#334155" stroke-width="2"/>
                        <rect x="35" y="40" width="30" height="10" fill="#ef4444" /> <path d="M 45 60 L 45 80 L 55 80 L 55 60 Z" fill="#94a3b8"/>
                        <line x1="30" y1="45" x2="10" y2="45" stroke="#ef4444" stroke-width="2" stroke-dasharray="4"/>
                        <text x="25" y="35" fill="#ef4444" font-size="10" font-weight="bold">KRYZA</text>
                    </svg>
                    <svg class="rk-svg-static svg-success" viewBox="0 0 100 100" style="display:none;">
                        <rect x="40" y="20" width="20" height="40" fill="#cbd5e1" stroke="#334155" stroke-width="2"/>
                        <path d="M 45 50 L 45 80 L 55 80 L 55 50 Z" fill="#10b981"/> <path d="M 50 85 L 50 95 M 45 90 L 50 95 L 55 90" stroke="#10b981" stroke-width="3" fill="none"/>
                        <text x="30" y="95" fill="#10b981" font-size="10" font-weight="bold">PRZEPŁYW</text>
                    </svg>
                </div>
            </div>
        </div>

        <div class="rk-err-item" id="err-item-2">
            <div class="rk-err-top">
                <div class="rk-err-title">
                    <h3>2. Odwrotne podłączenie stref na listwie</h3>
                </div>
                <div class="rk-toggle-wrapper">
                    <span class="rk-toggle-label active-danger">Błąd</span>
                    <label class="rk-switch">
                        <input type="checkbox" onchange="toggleAudit('err-item-2', this)">
                        <span class="rk-slider"></span>
                    </label>
                    <span class="rk-toggle-label">Poprawnie</span>
                </div>
            </div>
            <div class="rk-err-content">
                <div class="rk-err-details">
                    <div class="rk-err-state state-danger active">
                        <h4><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><line x1="15" y1="9" x2="9" y2="15"></line><line x1="9" y1="9" x2="15" y2="15"></line></svg> Skutek: Chaos termiczny</h4>
                        <p>Kabel z siłownika obsługującego sypialnię zostaje błędnie podłączony pod <a href="https://projekt-ogrzewania.pl/termostat-w-ogrzewaniu-podlogowym/" class="rk-err-link">zacisk termostatu</a> przypisany do salonu. Prowadzi to do permanentnego niedogrzania jednego pokoju (bo salon szybko osiąga zadaną temperaturę i wyłącza grzanie) oraz drastycznego przegrzania drugiego.</p>
                    </div>
                    <div class="rk-err-state state-success">
                        <h4><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg> Standard: Mapowanie pętli</h4>
                        <p>Zastosowanie etykietowania kabli (tzw. ringów) na obu końcach oraz przeprowadzenie sekwencyjnego testu załączeń z fizycznym sprawdzeniem, która rura na rotametrze robi się ciepła w odpowiedzi na wymuszenie z termostatu.</p>
                    </div>
                </div>
                <div class="rk-err-visual">
                    <svg class="rk-svg-static svg-danger" viewBox="0 0 100 100" style="display:block;">
                        <rect x="10" y="20" width="30" height="20" fill="#334155" rx="2"/>
                        <rect x="60" y="20" width="30" height="20" fill="#334155" rx="2"/>
                        <circle cx="25" cy="80" r="10" fill="#ef4444"/>
                        <circle cx="75" cy="80" r="10" fill="#3b82f6"/>
                        <path d="M 25 40 L 75 70" stroke="#ef4444" stroke-width="3"/>
                        <path d="M 75 40 L 25 70" stroke="#ef4444" stroke-width="3"/>
                    </svg>
                    <svg class="rk-svg-static svg-success" viewBox="0 0 100 100" style="display:none;">
                        <rect x="10" y="20" width="30" height="20" fill="#334155" rx="2"/>
                        <rect x="60" y="20" width="30" height="20" fill="#334155" rx="2"/>
                        <circle cx="25" cy="80" r="10" fill="#10b981"/>
                        <circle cx="75" cy="80" r="10" fill="#10b981"/>
                        <path d="M 25 40 L 25 70" stroke="#10b981" stroke-width="3"/>
                        <path d="M 75 40 L 75 70" stroke="#10b981" stroke-width="3"/>
                    </svg>
                </div>
            </div>
        </div>

        <div class="rk-err-item" id="err-item-3">
            <div class="rk-err-top">
                <div class="rk-err-title">
                    <h3>3. Ignorowanie wysokiego prądu rozruchowego</h3>
                </div>
                <div class="rk-toggle-wrapper">
                    <span class="rk-toggle-label active-danger">Błąd</span>
                    <label class="rk-switch">
                        <input type="checkbox" onchange="toggleAudit('err-item-3', this)">
                        <span class="rk-slider"></span>
                    </label>
                    <span class="rk-toggle-label">Poprawnie</span>
                </div>
            </div>
            <div class="rk-err-content">
                <div class="rk-err-details">
                    <div class="rk-err-state state-danger active">
                        <h4><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><line x1="15" y1="9" x2="9" y2="15"></line><line x1="9" y1="9" x2="15" y2="15"></line></svg> Skutek: Zgrzanie styków</h4>
                        <p>Podłączanie 8 siłowników równolegle pod jeden klasyczny przekaźnik stykowy w tanich listwach. Wysoki sumaryczny prąd rozruchowy na elemencie PTC (np. 8 × 0,3 A = 2,4 A) powoduje powstanie łuku elektrycznego i mechaniczne zgrzanie (sklejenie) styków. Siłowniki pozostają trwale otwarte.</p>
                    </div>
                    <div class="rk-err-state state-success">
                        <h4><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg> Standard: Przekaźnik bezpotencjałowy</h4>
                        <p>Zastosowanie dedykowanej listwy sterującej wyposażonej w przekaźniki półprzewodnikowe (Triaki) lub system sekwencyjnego załączania obciążeń, który redukuje skokowy pobór mocy, chroniąc elektronikę sterującą przed przeciążeniem.</p>
                    </div>
                </div>
                <div class="rk-err-visual">
                    <svg class="rk-svg-static svg-danger" viewBox="0 0 100 100" style="display:block;">
                        <path d="M 20 40 L 45 40 L 55 60 L 80 60" fill="none" stroke="#334155" stroke-width="4"/>
                        <path d="M 50 30 L 60 30 L 55 50 L 65 50 L 45 70 L 50 55 L 40 55 Z" fill="#ef4444"/>
                        <text x="50" y="85" fill="#ef4444" font-size="12" font-weight="bold" text-anchor="middle">> 2.4A OVERLOAD</text>
                    </svg>
                    <svg class="rk-svg-static svg-success" viewBox="0 0 100 100" style="display:none;">
                        <path d="M 20 50 L 40 50" fill="none" stroke="#10b981" stroke-width="4"/>
                        <path d="M 60 50 L 80 50" fill="none" stroke="#10b981" stroke-width="4"/>
                        <rect x="40" y="40" width="20" height="20" fill="#334155" rx="3"/>
                        <text x="50" y="54" fill="#ffffff" font-size="10" font-weight="bold" text-anchor="middle">SSR</text>
                    </svg>
                </div>
            </div>
        </div>

        <div class="rk-err-item" id="err-item-4">
            <div class="rk-err-top">
                <div class="rk-err-title">
                    <h3>4. Montaż w szafkach o wysokiej wilgotności</h3>
                </div>
                <div class="rk-toggle-wrapper">
                    <span class="rk-toggle-label active-danger">Błąd</span>
                    <label class="rk-switch">
                        <input type="checkbox" onchange="toggleAudit('err-item-4', this)">
                        <span class="rk-slider"></span>
                    </label>
                    <span class="rk-toggle-label">Poprawnie</span>
                </div>
            </div>
            <div class="rk-err-content">
                <div class="rk-err-details">
                    <div class="rk-err-state state-danger active">
                        <h4><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><line x1="15" y1="9" x2="9" y2="15"></line><line x1="9" y1="9" x2="15" y2="15"></line></svg> Skutek: Korozja i zwarcie</h4>
                        <p>Instalowanie siłowników przed całkowitym wyschnięciem wylewki (wilgotność szczątkowa > 2%). Agresywna wilgoć technologiczna paruje ze skrzynek, skrapla się pod obudową IP siłownika i natychmiast powoduje zwarcie na wewnętrznej płytce rezystora.</p>
                    </div>
                    <div class="rk-err-state state-success">
                        <h4><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg> Standard: Odczekanie do wygrzewu</h4>
                        <p>Montaż jakiejkolwiek elektroniki w szafce rozdzielaczowej następuje dopiero po przeprowadzeniu pełnego cyklu wygrzewania <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/" class="rk-err-link">wylewki betonowej lub anhydrytowej</a> i pomiarze higrometrem spadku wilgotności otoczenia poniżej norm krytycznych.</p>
                    </div>
                </div>
                <div class="rk-err-visual">
                    <svg class="rk-svg-static svg-danger" viewBox="0 0 100 100" style="display:block;">
                        <rect x="25" y="20" width="50" height="60" fill="none" stroke="#334155" stroke-width="3" rx="4"/>
                        <path d="M 40 45 Q 40 55 45 55 Q 50 55 50 45 Q 45 35 40 45 Z" fill="#0284c7"/>
                        <path d="M 60 55 Q 60 65 65 65 Q 70 65 70 55 Q 65 45 60 55 Z" fill="#0284c7"/>
                        <path d="M 35 70 L 65 70" stroke="#ef4444" stroke-width="3"/>
                        <path d="M 35 75 L 65 75" stroke="#ef4444" stroke-width="3"/>
                    </svg>
                    <svg class="rk-svg-static svg-success" viewBox="0 0 100 100" style="display:none;">
                        <rect x="25" y="20" width="50" height="60" fill="none" stroke="#334155" stroke-width="3" rx="4"/>
                        <path d="M 40 50 L 47 57 L 60 40" fill="none" stroke="#10b981" stroke-width="5" stroke-linecap="round"/>
                        <text x="50" y="85" fill="#10b981" font-size="10" font-weight="bold" text-anchor="middle">< 2% WILGOTNOŚCI</text>
                    </svg>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
function toggleAudit(itemId, checkbox) {
    const item = document.getElementById(itemId);
    const labelDanger = item.querySelector('.rk-toggle-label:first-child');
    const labelSuccess = item.querySelector('.rk-toggle-label:last-child');
    
    const stateDanger = item.querySelector('.state-danger');
    const stateSuccess = item.querySelector('.state-success');
    
    const svgDanger = item.querySelector('.svg-danger');
    const svgSuccess = item.querySelector('.svg-success');

    if (checkbox.checked) {
        // Przełącz na "Poprawnie" (Success)
        labelDanger.classList.remove('active-danger');
        labelSuccess.classList.add('active-success');
        item.style.borderColor = 'var(--rk-err-success)';
        
        stateDanger.classList.remove('active');
        stateSuccess.classList.add('active');
        
        svgDanger.style.display = 'none';
        svgSuccess.style.display = 'block';
    } else {
        // Przełącz na "Błąd" (Danger)
        labelSuccess.classList.remove('active-success');
        labelDanger.classList.add('active-danger');
        item.style.borderColor = 'var(--rk-err-border)';
        
        stateSuccess.classList.remove('active');
        stateDanger.classList.add('active');
        
        svgSuccess.style.display = 'none';
        svgDanger.style.display = 'block';
    }
}
</script>



<style>
:root {
    --rk-sum-dark: #020617;
    --rk-sum-panel: #0f172a;
    --rk-sum-primary: #10b981; /* Emerald/Green for success/summary */
    --rk-sum-primary-light: #d1fae5;
    --rk-sum-accent: #f59e0b; /* Amber/Gold for heat/electricity */
    --rk-sum-warning: #ef4444;
    --rk-sum-bg: #f8fafc;
    --rk-sum-border: #cbd5e1;
    --rk-sum-text: #334155;
    --rk-sum-text-dim: #64748b;
}

.rk-summary-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(16, 185, 129, 0.15);
    border: 1px solid rgba(16, 185, 129, 0.3);
    overflow: hidden;
}

/* Header z ekspertem */
.rk-summary-header {
    background: linear-gradient(135deg, var(--rk-sum-dark) 0%, #1e293b 100%);
    padding: 40px 50px;
    display: flex;
    align-items: center;
    gap: 30px;
    border-bottom: 4px solid var(--rk-sum-primary);
    position: relative;
    overflow: hidden;
}

.rk-summary-header::after {
    content: ''; position: absolute; right: 0; top: 0; width: 300px; height: 100%;
    background: radial-gradient(circle at right, rgba(16, 185, 129, 0.15) 0%, transparent 70%);
}

.rk-expert-avatar {
    width: 90px;
    height: 90px;
    border-radius: 50%;
    border: 3px solid var(--rk-sum-primary);
    box-shadow: 0 0 20px rgba(16, 185, 129, 0.4);
    object-fit: cover;
    position: relative;
    z-index: 2;
}

.rk-header-content {
    position: relative;
    z-index: 2;
}

.rk-header-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(16, 185, 129, 0.2);
    color: #6ee7b7;
    padding: 6px 14px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 10px;
    border: 1px solid rgba(110, 231, 183, 0.3);
}

.rk-header-content h2 {
    font-size: 26px;
    font-weight: 900;
    color: #ffffff;
    margin: 0 0 8px 0;
    line-height: 1.2;
}

.rk-header-content p {
    color: #94a3b8;
    font-size: 14px;
    margin: 0;
    font-weight: 500;
}

/* Sekcja z zakładkami i wiedzą */
.rk-summary-body {
    display: grid;
    grid-template-columns: 1fr 1fr;
    background: #ffffff;
}

.rk-rules-list {
    padding: 30px;
    border-right: 1px solid var(--rk-sum-border);
    display: flex;
    flex-direction: column;
    gap: 10px;
    background: #f8fafc;
}

.rk-rule-btn {
    background: #ffffff;
    border: 1px solid var(--rk-sum-border);
    padding: 18px 20px;
    border-radius: 12px;
    text-align: left;
    cursor: pointer;
    transition: all 0.3s;
    display: flex;
    align-items: flex-start;
    gap: 15px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
}

.rk-rule-btn:hover {
    border-color: var(--rk-sum-primary);
    transform: translateX(4px);
}

.rk-rule-btn.active {
    background: var(--rk-sum-primary-light);
    border-color: var(--rk-sum-primary);
    box-shadow: inset 4px 0 0 var(--rk-sum-primary);
}

.rk-rule-icon {
    width: 32px; height: 32px;
    background: #f1f5f9;
    border-radius: 8px;
    display: flex; align-items: center; justify-content: center;
    color: var(--rk-sum-text-dim);
    flex-shrink: 0;
    transition: 0.3s;
}

.rk-rule-btn.active .rk-rule-icon {
    background: var(--rk-sum-primary);
    color: #ffffff;
}

.rk-rule-text h3 {
    margin: 0 0 5px 0;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-sum-dark);
}

.rk-rule-text p {
    margin: 0;
    font-size: 13px;
    color: var(--rk-sum-text-dim);
    line-height: 1.5;
}

/* Panel Detali (Prawy) */
.rk-rule-details {
    padding: 40px;
    position: relative;
}

.rk-detail-panel {
    display: none;
    animation: fadeScale 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-detail-panel.active {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

@keyframes fadeScale {
    from { opacity: 0; transform: scale(0.95); }
    to { opacity: 1; transform: scale(1); }
}

.rk-detail-panel h4 {
    margin: 0;
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-sum-dark);
}

.rk-detail-panel p {
    margin: 0;
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-sum-text);
}

.rk-sum-link {
    color: var(--rk-sum-accent);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dotted var(--rk-sum-accent);
    transition: 0.3s;
}
.rk-sum-link:hover { border-bottom-style: solid; color: #d97706; }

.rk-detail-svg {
    width: 100%;
    height: 160px;
    background: var(--rk-sum-dark);
    border-radius: 12px;
    padding: 15px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 4px 20px rgba(0,0,0,0.5);
}

/* Narzędzie Szybkiego Szacowania (Kalkulator) */
.rk-quick-calc {
    background: var(--rk-sum-panel);
    padding: 35px 50px;
    border-top: 1px solid #1e293b;
    color: #ffffff;
}

.rk-calc-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 25px;
}

.rk-calc-header h4 {
    margin: 0; font-size: 18px; font-weight: 900; color: #ffffff;
    display: flex; align-items: center; gap: 10px;
}

.rk-calc-grid {
    display: grid;
    grid-template-columns: 1fr 2fr;
    gap: 40px;
    align-items: center;
}

.rk-calc-input-area {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-calc-label { font-size: 13px; font-weight: 700; color: #94a3b8; display: flex; justify-content: space-between; }
.rk-calc-label span { color: #ffffff; font-size: 16px; font-weight: 900; }

.rk-sum-range {
    -webkit-appearance: none; width: 100%; height: 6px; border-radius: 3px; background: #334155; outline: none;
}
.rk-sum-range::-webkit-slider-thumb {
    -webkit-appearance: none; appearance: none; width: 22px; height: 22px; border-radius: 50%;
    background: var(--rk-sum-primary); cursor: pointer; border: 3px solid #ffffff; transition: 0.1s;
}
.rk-sum-range::-webkit-slider-thumb:active { transform: scale(1.15); }

.rk-calc-results {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
}

.rk-result-box {
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.1);
    padding: 15px;
    border-radius: 12px;
    text-align: center;
}

.rk-result-box.highlight { border-color: var(--rk-sum-primary); background: rgba(16, 185, 129, 0.1); }

.rk-res-val { display: block; font-size: 22px; font-weight: 900; color: #ffffff; margin-bottom: 5px; }
.rk-result-box.highlight .rk-res-val { color: var(--rk-sum-primary); }
.rk-res-lab { display: block; font-size: 11px; color: #94a3b8; text-transform: uppercase; font-weight: 700; line-height: 1.4; }

/* SEKACJA AUTORSKA - PODPIS EKSPERTA */
.rk-summary-author {
    background: #f1f5f9;
    padding: 30px 50px;
    display: flex;
    align-items: flex-start;
    gap: 25px;
    border-top: 1px solid var(--rk-sum-border);
}

.rk-author-photo-small {
    width: 75px;
    height: 75px;
    border-radius: 50%;
    border: 3px solid var(--rk-sum-primary);
    box-shadow: 0 4px 15px rgba(16, 185, 129, 0.2);
    object-fit: cover;
    flex-shrink: 0;
}

.rk-author-info {
    flex-grow: 1;
}

.rk-author-info h4 {
    margin: 0 0 6px 0;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-sum-dark);
}

.rk-author-info p {
    margin: 0;
    font-size: 14px;
    color: var(--rk-sum-text);
    line-height: 1.6;
}

.rk-author-links {
    display: flex;
    gap: 15px;
    margin-top: 12px;
}

.rk-author-links a {
    color: #0284c7;
    font-size: 13px;
    font-weight: 800;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 5px;
    transition: color 0.2s;
}

.rk-author-links a:hover {
    color: #1d4ed8;
    text-decoration: underline;
}

/* Animacje SVG */
.anim-piston-press { animation: pistonPress 2s infinite ease-in-out; }
@keyframes pistonPress { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(15px); } }

.anim-pulse-ring { animation: pulseRing 2s infinite; transform-origin: center; }
@keyframes pulseRing { 0% { transform: scale(0.8); opacity: 1; } 100% { transform: scale(1.5); opacity: 0; } }

.anim-spark { animation: sparkFlash 1.5s infinite; }
@keyframes sparkFlash { 0%, 100% { opacity: 0.3; } 50% { opacity: 1; filter: drop-shadow(0 0 8px #f59e0b); } }

@media (max-width: 768px) {
    .rk-summary-header { flex-direction: column; text-align: center; padding: 30px 20px; }
    .rk-expert-avatar { width: 70px; height: 70px; }
    .rk-summary-body { grid-template-columns: 1fr; }
    .rk-rules-list { border-right: none; border-bottom: 1px solid var(--rk-sum-border); padding: 20px; }
    .rk-rule-details { padding: 25px 20px; }
    .rk-calc-grid { grid-template-columns: 1fr; gap: 25px; }
    .rk-quick-calc { padding: 30px 20px; }
    .rk-calc-results { grid-template-columns: 1fr; }
    .rk-summary-author { flex-direction: column; text-align: center; padding: 30px 20px; align-items: center; }
    .rk-author-links { justify-content: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#article-summary-final",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/"
    },
    "headline": "Inżynierskie podsumowanie: Siłowniki termoelektryczne na rozdzielaczach",
    "description": "Kompaktowe zestawienie parametrów siłowników termicznych i kalkulator doboru zasilacza do automatyki podłogówki. Twórca: Robert Kucharski.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "jobTitle": "CEO & Główny Projektant HVAC",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#dataset-summary",
    "name": "Parametry Prądowe i Mechaniczne Automatyki",
    "description": "Twarde dane przeliczeniowe do doboru zasilania dla siłowników termoelektrycznych i weryfikacji gwintów.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "dobór siłownika do rozdzielacza",
      "kalkulator zasilacza 24v",
      "skok trzpienia",
      "prąd rozruchowy siłownika",
      "automatyka ogrzewania podłogowego"
    ],
    "measurementTechnique": "Szacowanie oparte na standardowym poborze 2W oraz prądzie rozruchowym rzędu 0.25A na siłownik (przy 24V).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Kluczowy skok: minimum 4.0 mm dla szczelnego domknięcia.",
        "Prąd szczytowy: Wymaga transformatora o mocy powiększonej o 20% współczynnik bezpieczeństwa.",
        "Kompatybilność gwintu: Dominujący rynkowy standard to M30x1.5 mm."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#webapp-summary",
    "name": "Kalkulator Automatyki Strefowej",
    "description": "Moduł przeliczający liczbę pętli na sumaryczny prąd rozruchowy i minimalną moc zasilacza na szynę DIN.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5 Forms",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-summary-container" id="rk-summary-app">
    
    <div class="rk-summary-header">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski" class="rk-expert-avatar" loading="lazy">
        <div class="rk-header-content">
            <div class="rk-header-badge">
                <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                Wnioski Eksperta
            </div>
            <h2>Inżynierskie podsumowanie: Automatyka Siłowników</h2>
            <p>Zebrałem dla Ciebie 3 żelazne reguły automatyki. Siłownik to nie gadżet – to egzekutor woli termostatu. Zły dobór gwintu lub skoku mści się błędem przepływu w pompie ciepła.</p>
        </div>
    </div>

    <div class="rk-summary-body">
        
        <div class="rk-rules-list">
            <button class="rk-rule-btn active" data-panel="det-1">
                <div class="rk-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg></div>
                <div class="rk-rule-text">
                    <h3>Skok roboczy (min. 4.0 mm)</h3>
                    <p>Zapobiega przeciekom krzyżowym</p>
                </div>
            </button>

            <button class="rk-rule-btn" data-panel="det-2">
                <div class="rk-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg></div>
                <div class="rk-rule-text">
                    <h3>Prąd rozruchowy listwy</h3>
                    <p>Zapas mocy rzędu 20% to mus</p>
                </div>
            </button>

            <button class="rk-rule-btn" data-panel="det-3">
                <div class="rk-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg></div>
                <div class="rk-rule-text">
                    <h3>Bezwładność wosku</h3>
                    <p>Typ NC – 3 minuty pełnego cyklu</p>
                </div>
            </button>
        </div>

        <div class="rk-rule-details">
            
            <div class="rk-detail-panel active" id="det-1">
                <h4>Ignorowany Skok Tłoczka</h4>
                <p>Nigdy nie instaluj siłownika o skoku roboczym 3.0 mm na zaworze wymagającym 4.5 mm. Efekt? Pętla nigdy się nie zamyka. Przepływ rzędu 0.3 l/min poza kontrolą zaburza <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/" class="rk-sum-link">równoważenie hydrauliczne rozdzielacza</a> i niweczy sens <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" class="rk-sum-link">obliczeń OZC</a>.</p>
                <div class="rk-detail-svg">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <!-- Zawór i trzpień -->
                        <path d="M 80 80 L 120 80 L 120 100 L 80 100 Z" fill="#334155"></path>
                        <rect x="95" y="50" width="10" height="30" fill="#cbd5e1"></rect>
                        <!-- Tłoczek siłownika animowany -->
                        <rect class="anim-piston-press" x="85" y="20" width="30" height="20" fill="#10b981"></rect>
                        <line x1="130" y1="50" x2="140" y2="50" stroke="#f59e0b" stroke-width="2"></line>
                        <line x1="130" y1="80" x2="140" y2="80" stroke="#f59e0b" stroke-width="2"></line>
                        <text x="145" y="70" fill="#f59e0b" font-size="12" font-weight="bold">4.0 mm</text>
                    </svg>
                </div>
            </div>

            <div class="rk-detail-panel" id="det-2">
                <h4>Zabójcze obciążenie dla przekaźników</h4>
                <p>8 siłowników to pozornie zaledwie 16 W podczas pracy, ale w fazie startu potrafią pobrać z sieci niemal 2.4 A prądu (przy 24V). Zastosowanie taniej listwy sterującej doprowadzi do &#8222;sklejenia&#8221; się wewnętrznych styków przekaźnika termostatu.</p>
                <div class="rk-detail-svg">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <circle class="anim-pulse-ring" cx="100" cy="50" r="20" fill="none" stroke="#f59e0b" stroke-width="2"></circle>
                        <rect x="80" y="30" width="40" height="40" fill="#1e293b" stroke="#f59e0b" stroke-width="2" rx="4"></rect>
                        <path class="anim-spark" d="M 95 35 L 105 35 L 100 50 L 110 50 L 95 65 L 100 55 L 90 55 Z" fill="#f59e0b"></path>
                        <text x="100" y="85" fill="#f59e0b" font-size="10" text-anchor="middle" font-weight="bold">+20% ZAPASU MOCY</text>
                    </svg>
                </div>
            </div>

            <div class="rk-detail-panel" id="det-3">
                <h4>Bezwładność chroni sprężarkę</h4>
                <p>Termoelement siłownika nagrzewa się woskiem powoli – otwarcie zajmuje nawet 5 minut. W instalacji podłogówki zapobiega to uderzeniom hydraulicznym i daje <a href="https://projekt-ogrzewania.pl/pompa-ciepla/" class="rk-sum-link">inwerterowej pompie ciepła</a> cenny czas na płynne zredukowanie obrotów sprężarki, zamiast generować gwałtowne skoki ciśnienia.</p>
                <div class="rk-detail-svg">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <circle cx="100" cy="50" r="30" fill="none" stroke="#334155" stroke-width="4"></circle>
                        <circle cx="100" cy="50" r="26" fill="none" stroke="#10b981" stroke-width="4" stroke-dasharray="163" stroke-dashoffset="40"></circle>
                        <line x1="100" y1="50" x2="100" y2="30" stroke="#ffffff" stroke-width="3" stroke-linecap="round"></line>
                        <line x1="100" y1="50" x2="115" y2="50" stroke="#ffffff" stroke-width="3" stroke-linecap="round"></line>
                        <text x="100" y="65" fill="#10b981" font-size="10" text-anchor="middle" font-weight="bold">3-5 MIN</text>
                    </svg>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-quick-calc">
        <div class="rk-calc-header">
            <h4>
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--rk-sum-primary)" stroke-width="2.5"><rect x="4" y="2" width="16" height="20" rx="2" ry="2"></rect><line x1="8" y1="6" x2="16" y2="6"></line><line x1="16" y1="14" x2="16.01" y2="14"></line><line x1="12" y1="14" x2="12.01" y2="14"></line><line x1="8" y1="14" x2="8.01" y2="14"></line><line x1="16" y1="18" x2="16.01" y2="18"></line><line x1="12" y1="18" x2="12.01" y2="18"></line><line x1="8" y1="18" x2="8.01" y2="18"></line></svg>
                Inżynierski Kalkulator Zasilania (24V DC)
            </h4>
            <span style="font-size:12px; color:#64748b;">Dla prądu rozruchowego max. 0.25A</span>
        </div>

        <div class="rk-calc-grid">
            
            <div class="rk-calc-input-area">
                <div class="rk-calc-label">
                    Liczba pętli (siłowników):
                    <span id="sumActuatorOut">12 szt.</span>
                </div>
                <input type="range" class="rk-sum-range" id="sumActuatorSlider" min="2" max="24" step="1" value="12">
                <p style="font-size: 11px; color:#64748b; margin:0;">*Wylicza optymalny dobór transformatora.</p>
            </div>

            <div class="rk-calc-results">
                <div class="rk-result-box">
                    <span class="rk-res-val" id="resCurrent">3.0 <span style="font-size:14px;color:#64748b;">A</span></span>
                    <span class="rk-res-lab">Szczytowy Prąd Startowy</span>
                </div>
                <div class="rk-result-box highlight">
                    <span class="rk-res-val" id="resPower">87 <span style="font-size:14px;color:var(--rk-sum-primary);">W</span></span>
                    <span class="rk-res-lab">Min. moc zasilacza (DIN)</span>
                </div>
                <div class="rk-result-box">
                    <span class="rk-res-val" id="resCost">10.37 <span style="font-size:14px;color:#64748b;">zł</span></span>
                    <span class="rk-res-lab">Zużycie Energii / Mies.</span>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-summary-author">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski - CEO i Projektant HVAC" class="rk-author-photo-small" loading="lazy">
        <div class="rk-author-info">
            <h4>Robert Kucharski</h4>
            <p>CEO i twórca portalu Projekt-Ogrzewania.pl, gdzie moje artykuły czyta ponad 11 000 unikalnych użytkowników miesięcznie. Jestem głównym projektantem i audytorem instalacji HVAC z regionu Podkarpacia. Wszystkie publikowane tu treści opieram na wieloletnim, praktycznym doświadczeniu z placów budowy. Moja misja to dostarczanie bezkompromisowej, twardej wiedzy inżynierskiej, która chroni budżety inwestorów.</p>
            <div class="rk-author-links">
                <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener noreferrer">
                    <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"></path></svg>
                    LinkedIn
                </a>
                <a href="https://www.facebook.com/robert.kucharski.budowa.bez.sciemy" target="_blank" rel="noopener noreferrer">
                    <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.469h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.469h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"></path></svg>
                    Facebook
                </a>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 2. Logika Zakładek (Złote Zasady)
    const btns = document.querySelectorAll('.rk-rule-btn');
    const panels = document.querySelectorAll('.rk-detail-panel');

    btns.forEach(btn => {
        btn.addEventListener('click', () => {
            // Reset
            btns.forEach(b => b.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));

            // Set Active
            btn.classList.add('active');
            const target = document.getElementById(btn.getAttribute('data-panel'));
            if(target) {
                // Restart animation
                void target.offsetWidth;
                target.classList.add('active');
            }
        });
    });

    // 3. Logika Kalkulatora Automatyki Strefowej
    const slider = document.getElementById('sumActuatorSlider');
    const actOut = document.getElementById('sumActuatorOut');
    const resCurrent = document.getElementById('resCurrent');
    const resPower = document.getElementById('resPower');
    const resCost = document.getElementById('resCost');

    function updateEstimator() {
        const count = parseInt(slider.value);
        actOut.textContent = count + ' szt.';

        // Obliczenia techniczne (dla 24V siłownika PTC):
        // Założony prąd rozruchowy: 0.25 A na sztukę
        const totalCurrent = count * 0.25;
        
        // Zasilacz 24V: P = U * I * 1.2 (współczynnik zapasu 20%)
        const powerNeeded = Math.ceil(totalCurrent * 24 * 1.2);
        
        // Estymowany koszt: praca 2W przez około 12h dziennie przez 30 dni = 0.72 kWh miesięcznie na 1 sztukę
        // Cena rynkowa prądu: ok. 1.20 PLN / kWh (0.72 * 1.20 = 0.86 PLN na sztukę miesięcznie)
        const costPerMonth = count * 0.864;

        resCurrent.innerHTML = totalCurrent.toFixed(2) + ' <span style="font-size:14px;color:#64748b;">A</span>';
        resPower.innerHTML = powerNeeded + ' <span style="font-size:14px;color:var(--rk-sum-primary);">W</span>';
        resCost.innerHTML = costPerMonth.toFixed(2) + ' <span style="font-size:14px;color:#64748b;">PLN</span>';
    }

    if(slider) {
        slider.addEventListener('input', updateEstimator);
        updateEstimator(); // Init
    }
});
</script>



<style>
:root {
    --rk-faq-dark: #0f172a;
    --rk-faq-card: #1e293b;
    --rk-faq-brand: #4f46e5; /* Eksperckie Indygo */
    --rk-faq-brand-light: #e0e7ff;
    --rk-faq-accent: #06b6d4; /* Cyjan dla kontrastu */
    --rk-faq-success: #10b981;
    --rk-faq-bg: #f8fafc;
    --rk-faq-border: #e2e8f0;
    --rk-faq-text: #334155;
    --rk-faq-muted: #64748b;
}

.rk-faq-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, system-ui, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(79, 70, 229, 0.15);
    border: 1px solid rgba(79, 70, 229, 0.3);
    overflow: hidden;
}

/* Nagłówek */
.rk-faq-header {
    background: linear-gradient(135deg, var(--rk-faq-dark) 0%, #312e81 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-faq-brand);
}

.rk-faq-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(79, 70, 229, 0.3);
    color: #a5b4fc;
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(165, 180, 252, 0.3);
}

.rk-faq-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0;
}

.rk-faq-title span { color: #818cf8; }

/* Sekcja Akordeonu */
.rk-faq-interactive {
    padding: 40px 50px;
    background: var(--rk-faq-bg);
}

.rk-faq-list {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-faq-item {
    background: #ffffff;
    border: 1px solid var(--rk-faq-border);
    border-radius: 16px;
    overflow: hidden;
    transition: all 0.3s;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-faq-item.active {
    border-color: var(--rk-faq-brand);
    box-shadow: 0 10px 25px -5px rgba(79, 70, 229, 0.15);
}

/* Przycisk Pytania */
.rk-faq-question {
    width: 100%;
    text-align: left;
    background: transparent;
    border: none;
    padding: 20px 25px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    cursor: pointer;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-faq-dark);
    transition: background 0.3s, color 0.3s;
}

.rk-faq-question:hover {
    background: var(--rk-faq-brand-light);
}

.rk-faq-item.active .rk-faq-question {
    background: var(--rk-faq-brand);
    color: #ffffff;
}

.rk-faq-icon {
    flex-shrink: 0;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--rk-faq-brand-light);
    color: var(--rk-faq-brand);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-faq-item.active .rk-faq-icon {
    background: rgba(255,255,255,0.2);
    color: #ffffff;
    transform: rotate(180deg);
}

/* Kontener Odpowiedzi (Animacja Grid) */
.rk-faq-answer-wrapper {
    display: grid;
    grid-template-rows: 0fr;
    transition: grid-template-rows 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-faq-item.active .rk-faq-answer-wrapper {
    grid-template-rows: 1fr;
}

.rk-faq-answer-inner {
    overflow: hidden;
}

/* Wnętrze Odpowiedzi (Grid: Tekst + SVG) */
.rk-faq-content {
    padding: 25px;
    border-top: 1px solid var(--rk-faq-border);
    display: grid;
    grid-template-columns: 1fr 200px;
    gap: 30px;
    align-items: center;
}

.rk-faq-text {
    font-size: 15px;
    line-height: 1.8;
    color: var(--rk-faq-text);
}

.rk-faq-text strong {
    font-weight: 800;
    color: var(--rk-faq-dark);
}

/* Wizualizacje SVG */
.rk-faq-visual {
    background: var(--rk-faq-dark);
    border-radius: 12px;
    padding: 15px;
    height: 140px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.5);
    border: 3px solid #334155;
    position: relative;
    overflow: hidden;
}

.rk-svg-box {
    width: 100%;
    height: 100%;
}

@media (max-width: 768px) {
    .rk-faq-header, .rk-faq-interactive { padding: 30px 20px; }
    .rk-faq-title { font-size: 24px; }
    .rk-faq-content { grid-template-columns: 1fr; gap: 20px; padding: 20px; }
    .rk-faq-visual { height: 120px; max-width: 250px; margin: 0 auto; width: 100%; }
    .rk-faq-question { font-size: 14px; padding: 18px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/"
    },
    "headline": "FAQ – Najczęściej zadawane pytania o siłowniki termoelektryczne",
    "description": "Eksperckie odpowiedzi na pytania dotyczące kosztów, napięcia, funkcji First Open, weryfikacji działania i standardów gwintów siłowników.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/"
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#faq",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Ile prądu zużywa siłownik termoelektryczny w skali miesiąca?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Pojedynczy siłownik o mocy roboczej 2 W, pracujący średnio przez 12 godzin na dobę, zużywa miesięcznie 0,72 kWh energii elektrycznej. Przy cenie prądu na poziomie 1,20 PLN/kWh, koszt utrzymania jednej sztuki wynosi około 0,86 PLN na miesiąc."
        }
      },
      {
        "@type": "Question",
        "name": "Czy można zamontować siłownik 24V bezpośrednio do instalacji 230V?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie, bezpośrednie podłączenie siłownika 24 V do sieci napięcia 230 V spowoduje natychmiastowe przepalenie wewnętrznego elementu grzejnego PTC i trwałe zniszczenie urządzenia. Wymagane jest pośrednictwo dedykowanej listwy sterującej z wbudowanym transformatorem obniżającym napięcie."
        }
      },
      {
        "@type": "Question",
        "name": "Co oznacza funkcja \"First Open\" w fabrycznie nowych siłownikach?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Funkcja First Open (FO) to mechaniczna blokada utrzymująca fabrycznie nowy siłownik NC w pozycji otwartej bez konieczności podłączania zasilania elektrycznego. Umożliwia to napełnienie instalacji, przeprowadzenie prób szczelności oraz uruchomienie grzewcze budynku przed montażem automatyki, a blokada zwalnia się samoczynnie przy pierwszym podaniu napięcia."
        }
      },
      {
        "@type": "Question",
        "name": "Jak sprawdzić, czy siłownik na rozdzielaczu działa prawidłowo?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Prawidłowość działania sprawdza się poprzez weryfikację pozycji wskaźnika wysuwu na obudowie (wysunięty kołnierz oznacza przepływ) oraz manualny pomiar temperatury rury za zaworem. Dodatkowo, po około 10 minutach od podania napięcia, obudowa sprawnego siłownika powinna być wyraźnie ciepła w dotyku (ok. 40-45°C)."
        }
      },
      {
        "@type": "Question",
        "name": "Jaki gwint jest standardem w rozdzielaczach ogrzewania podłogowego?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Absolutnym standardem rynkowym, stosowanym przez ponad 90% producentów rozdzielaczy (np. KAN-therm, Tece, Purmo, Gorgiel), jest gwint metryczny M30 x 1,5 mm. Przed zakupem należy bezwzględnie zmierzyć suwmiarką średnicę zewnętrzną gwintu zaworu, aby wykluczyć standardy niszowe, takie jak M28 x 1,5 mm."
        }
      }
    ]
  }
]
</script>

<div class="rk-faq-container" id="rk-faq-app">
    <div class="rk-faq-header">
        <div class="rk-faq-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            Baza Wiedzy Inwestora
        </div>
        <h2 class="rk-faq-title">FAQ – <span>Najczęściej zadawane pytania</span></h2>
    </div>

    <div class="rk-faq-interactive">
        <div class="rk-faq-list">
            
            <div class="rk-faq-item">
                <button class="rk-faq-question">
                    <span>1. Ile prądu zużywa siłownik termoelektryczny w skali miesiąca?</span>
                    <div class="rk-faq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-faq-answer-wrapper">
                    <div class="rk-faq-answer-inner">
                        <div class="rk-faq-content">
                            <div class="rk-faq-text">
                                Pojedynczy siłownik o mocy roboczej <strong>2 W</strong>, pracujący średnio przez 12 godzin na dobę, zużywa miesięcznie <strong>0,72 kWh</strong> energii elektrycznej. Przy cenie prądu na poziomie 1,20 PLN/kWh, koszt utrzymania jednej sztuki wynosi około <strong>0,86 PLN</strong> na miesiąc.
                            </div>
                            <div class="rk-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="30" y="15" width="40" height="40" fill="#1e293b" stroke="#eab308" stroke-width="2" rx="4"/>
                                    <path d="M 45 25 L 55 25 L 50 40 L 60 40 L 45 55 L 50 45 L 40 45 Z" fill="#eab308"/>
                                    <text x="50" y="65" fill="#eab308" font-size="10" text-anchor="middle" font-weight="bold">0.86 PLN / MIES.</text>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-faq-item">
                <button class="rk-faq-question">
                    <span>2. Czy można zamontować siłownik 24V bezpośrednio do instalacji 230V?</span>
                    <div class="rk-faq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-faq-answer-wrapper">
                    <div class="rk-faq-answer-inner">
                        <div class="rk-faq-content">
                            <div class="rk-faq-text">
                                <strong>Nie</strong>, bezpośrednie podłączenie siłownika 24 V do sieci napięcia 230 V spowoduje natychmiastowe przepalenie wewnętrznego elementu grzejnego PTC i <strong>trwałe zniszczenie urządzenia</strong>. Wymagane jest pośrednictwo dedykowanej listwy sterującej z wbudowanym transformatorem obniżającym napięcie.
                            </div>
                            <div class="rk-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <path d="M 20 35 L 40 35 M 60 35 L 80 35" stroke="#ef4444" stroke-width="4" stroke-dasharray="4"/>
                                    <rect x="40" y="20" width="20" height="30" fill="#ef4444" rx="2"/>
                                    <text x="20" y="25" fill="#ef4444" font-size="12" font-weight="bold">230V</text>
                                    <text x="65" y="25" fill="#ef4444" font-size="12" font-weight="bold">24V</text>
                                    <path d="M 15 15 L 85 55 M 15 55 L 85 15" stroke="#ef4444" stroke-width="4" opacity="0.8"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-faq-item">
                <button class="rk-faq-question">
                    <span>3. Co oznacza funkcja &#8222;First Open&#8221; w fabrycznie nowych siłownikach?</span>
                    <div class="rk-faq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-faq-answer-wrapper">
                    <div class="rk-faq-answer-inner">
                        <div class="rk-faq-content">
                            <div class="rk-faq-text">
                                Funkcja <strong>First Open (FO)</strong> to mechaniczna blokada utrzymująca fabrycznie nowy siłownik NC w pozycji otwartej bez konieczności podłączania zasilania elektrycznego. Umożliwia to napełnienie instalacji, przeprowadzenie prób szczelności oraz uruchomienie grzewcze budynku przed montażem automatyki, a blokada zwalnia się samoczynnie przy pierwszym podaniu napięcia.
                            </div>
                            <div class="rk-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <path d="M 40 35 L 40 20 A 10 10 0 0 1 60 20" fill="none" stroke="#10b981" stroke-width="4"/>
                                    <rect x="35" y="35" width="30" height="25" fill="#1e293b" stroke="#10b981" stroke-width="2" rx="2"/>
                                    <circle cx="50" cy="47" r="3" fill="#10b981"/>
                                    <text x="50" y="12" fill="#10b981" font-size="10" text-anchor="middle" font-weight="bold">FIRST OPEN (FO)</text>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-faq-item">
                <button class="rk-faq-question">
                    <span>4. Jak sprawdzić, czy siłownik na rozdzielaczu działa prawidłowo?</span>
                    <div class="rk-faq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-faq-answer-wrapper">
                    <div class="rk-faq-answer-inner">
                        <div class="rk-faq-content">
                            <div class="rk-faq-text">
                                Prawidłowość działania sprawdza się poprzez weryfikację pozycji <strong>wskaźnika wysuwu na obudowie</strong> (wysunięty kołnierz oznacza przepływ) oraz manualny pomiar temperatury rury za zaworem. Dodatkowo, po około 10 minutach od podania napięcia, obudowa sprawnego siłownika powinna być wyraźnie ciepła w dotyku (ok. <strong>40-45°C</strong>).
                            </div>
                            <div class="rk-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="45" y="10" width="10" height="40" fill="#334155" rx="5"/>
                                    <circle cx="50" cy="50" r="8" fill="#ef4444"/>
                                    <rect x="48" y="20" width="4" height="30" fill="#ef4444"/>
                                    <text x="75" y="40" fill="#ef4444" font-size="14" font-weight="bold">45°C</text>
                                    <path d="M 30 20 L 35 20 M 30 30 L 35 30 M 30 40 L 35 40" stroke="#64748b" stroke-width="2"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-faq-item">
                <button class="rk-faq-question">
                    <span>5. Jaki gwint jest standardem w rozdzielaczach ogrzewania podłogowego?</span>
                    <div class="rk-faq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-faq-answer-wrapper">
                    <div class="rk-faq-answer-inner">
                        <div class="rk-faq-content">
                            <div class="rk-faq-text">
                                Absolutnym standardem rynkowym, stosowanym przez ponad 90% producentów rozdzielaczy (np. KAN-therm, Tece, Purmo, Gorgiel), jest <strong>gwint metryczny M30 x 1,5 mm</strong>. Przed zakupem należy bezwzględnie zmierzyć suwmiarką średnicę zewnętrzną gwintu zaworu, aby wykluczyć standardy niszowe, takie jak M28 x 1,5 mm.
                            </div>
                            <div class="rk-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="30" y="25" width="40" height="20" fill="#334155" stroke="#cbd5e1" stroke-width="2"/>
                                    <line x1="30" y1="20" x2="30" y2="50" stroke="#cbd5e1" stroke-width="2"/>
                                    <line x1="70" y1="20" x2="70" y2="50" stroke="#cbd5e1" stroke-width="2"/>
                                    <path d="M 25 15 L 75 15" stroke="#10b981" stroke-width="2" stroke-dasharray="2"/>
                                    <text x="50" y="10" fill="#10b981" font-size="12" text-anchor="middle" font-weight="bold">M30 x 1.5</text>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const faqItems = document.querySelectorAll('.rk-faq-item');

    faqItems.forEach(item => {
        const btn = item.querySelector('.rk-faq-question');
        btn.addEventListener('click', () => {
            const isActive = item.classList.contains('active');
            
            faqItems.forEach(i => i.classList.remove('active'));
            
            if (!isActive) {
                item.classList.add('active');
            }
        });
    });
    
    if(faqItems.length > 0) {
        faqItems[0].classList.add('active');
    }
});
</script>



<style>
:root {
    --rk-sum-dark: #0f172a;
    --rk-sum-blue: #0284c7;
    --rk-sum-light-blue: #f0f9ff;
    --rk-sum-green: #10b981;
    --rk-sum-green-light: #dcfce7;
    --rk-sum-red: #ef4444;
    --rk-sum-gold: #eab308;
    --rk-sum-gray: #64748b;
    --rk-sum-border: #e2e8f0;
    --rk-sum-bg: #ffffff;
}

.rk-sum-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-sum-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.15);
    border: 1px solid var(--rk-sum-blue);
    overflow: hidden;
}

/* Sekcja Nagłówkowa i Cytat */
.rk-sum-header {
    padding: 45px 50px 35px;
    background: linear-gradient(135deg, var(--rk-sum-dark) 0%, #1e293b 100%);
    color: #ffffff;
    text-align: center;
    position: relative;
}

.rk-sum-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(2, 132, 199, 0.3);
    color: #38bdf8;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(56, 189, 248, 0.2);
}

.rk-sum-quote-box {
    position: relative;
    max-width: 700px;
    margin: 0 auto;
}

.rk-sum-quote-mark {
    font-size: 80px;
    color: rgba(255,255,255,0.1);
    position: absolute;
    top: -30px;
    left: -20px;
    line-height: 1;
    font-family: serif;
}

.rk-sum-quote-text {
    font-size: 22px;
    font-weight: 800;
    line-height: 1.4;
    color: #ffffff;
    margin: 0 0 15px 0;
    position: relative;
    z-index: 1;
}

.rk-sum-author {
    font-size: 14px;
    color: #94a3b8;
    text-transform: uppercase;
    letter-spacing: 2px;
    font-weight: 700;
}

.rk-sum-author span { color: var(--rk-sum-gold); }

/* Interaktywny Symulator Decyzji */
.rk-sum-interactive {
    padding: 40px 50px;
    background: #f8fafc;
}

.rk-decision-wrapper {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    background: #ffffff;
    border: 1px solid var(--rk-sum-border);
    border-radius: 20px;
    padding: 10px;
    margin-bottom: 30px;
}

.rk-decision-btn {
    padding: 20px;
    border-radius: 16px;
    border: 2px solid transparent;
    background: transparent;
    cursor: pointer;
    transition: all 0.3s ease;
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
}

.rk-decision-btn:hover { background: #f1f5f9; }

.rk-decision-btn.active[data-choice="pro"] {
    background: var(--rk-sum-green-light);
    border-color: var(--rk-sum-green);
    box-shadow: 0 10px 20px -5px rgba(16, 185, 129, 0.2);
}

.rk-decision-btn.active[data-choice="amateur"] {
    background: #fef2f2;
    border-color: var(--rk-sum-red);
    box-shadow: 0 10px 20px -5px rgba(239, 68, 68, 0.2);
}

.rk-decision-icon {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #e2e8f0;
    color: #64748b;
    transition: all 0.3s;
}

.rk-decision-btn.active[data-choice="pro"] .rk-decision-icon {
    background: var(--rk-sum-green);
    color: #ffffff;
}

.rk-decision-btn.active[data-choice="amateur"] .rk-decision-icon {
    background: var(--rk-sum-red);
    color: #ffffff;
}

.rk-decision-title {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-sum-dark);
    margin: 0;
}

/* Wynik symulacji */
.rk-sim-result {
    display: grid;
    grid-template-columns: 150px 1fr;
    gap: 30px;
    align-items: center;
    padding: 30px;
    background: #ffffff;
    border-radius: 16px;
    border: 1px solid var(--rk-sum-border);
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-anim-svg {
    width: 100%;
    height: auto;
    max-width: 120px;
    margin: 0 auto;
}

.anim-shield {
    transform-origin: center;
    transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}

.state-pro .anim-shield { fill: var(--rk-sum-green); stroke: #047857; animation: pulseShield 2s infinite; }
.state-amateur .anim-shield { fill: transparent; stroke: var(--rk-sum-red); stroke-dasharray: 10 10; animation: shatterShield 0.5s forwards; }

@keyframes pulseShield {
    0% { filter: drop-shadow(0 0 0 rgba(16, 185, 129, 0.4)); }
    50% { filter: drop-shadow(0 0 15px rgba(16, 185, 129, 0.8)); transform: scale(1.05); }
    100% { filter: drop-shadow(0 0 0 rgba(16, 185, 129, 0.4)); }
}

@keyframes shatterShield {
    to { stroke-dashoffset: 100; opacity: 0.5; transform: scale(0.9) rotate(-10deg); }
}

.rk-result-content h4 {
    margin: 0 0 10px 0;
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-sum-dark);
}

.rk-result-content p {
    margin: 0 0 15px 0;
    font-size: 15px;
    line-height: 1.7;
    color: #475569;
}

.rk-result-content a {
    color: var(--rk-sum-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Mocne CTA */
.rk-sum-cta-box {
    padding: 45px 50px;
    background: #ffffff;
    text-align: center;
    border-top: 1px solid var(--rk-sum-border);
}

.rk-sum-cta-title {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-sum-dark);
    margin: 0 0 15px 0;
}

.rk-sum-cta-text {
    font-size: 16px;
    color: #64748b;
    margin: 0 auto 30px auto;
    max-width: 600px;
    line-height: 1.6;
}

.rk-btn-massive {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-sum-blue);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 20px 40px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(2, 132, 199, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    border: 2px solid transparent;
}

.rk-btn-massive:hover {
    transform: translateY(-5px);
    background: #0369a1;
    box-shadow: 0 20px 35px -5px rgba(2, 132, 199, 0.5);
    border-color: #7dd3fc;
}

.rk-btn-massive svg {
    transition: transform 0.3s;
}

.rk-btn-massive:hover svg {
    transform: translateX(5px);
}

@media (max-width: 768px) {
    .rk-sum-header, .rk-sum-interactive, .rk-sum-cta-box { padding: 35px 25px; }
    .rk-decision-wrapper { grid-template-columns: 1fr; gap: 10px; }
    .rk-sim-result { grid-template-columns: 1fr; text-align: center; padding: 25px; }
    .rk-anim-svg { max-width: 80px; }
    .rk-sum-quote-text { font-size: 18px; }
    .rk-btn-massive { width: 100%; padding: 16px 20px; font-size: 16px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#article-podsumowanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/"
    },
    "headline": "Podsumowanie – Automatyka oparta na twardych parametrach",
    "description": "Siłowniki termoelektryczne to kluczowy interfejs wykonawczy nowoczesnego systemu HVAC. Dowiedz się, jak precyzyjny dobór chroni Twoją instalację.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#dataset-podsumowanie",
    "name": "Skuteczność Automatyki Strefowej",
    "description": "Zestawienie techniczno-ekonomiczne porównujące inwestycję w precyzyjnie dobrane siłowniki na bazie projektu OZC z kosztami błędnego wykonawstwa.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "siłowniki termoelektryczne",
      "automatyka rozdzielaczy",
      "taktowanie pompy ciepła",
      "skok tłoczka",
      "projekt ogrzewania podłogowego"
    ],
    "measurementTechnique": "Analiza sprawności i komfortu cieplnego układu grzewczego w zależności od doboru parametrów siłowników.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Standard Inżynierski: Precyzyjnie dobrany skok tłoczka (np. 4.0 mm) i wyliczony prąd rozruchowy.",
        "Ryzyko Amatorskie: Ignorowanie zgodności gwintów i przepływów skutkujące ciągłym taktowaniem źródła ciepła."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#webapp-podsumowanie",
    "name": "Symulator Automatyki Hydraulicznej",
    "description": "Narzędzie interaktywne demonstrujące wpływ precyzyjnie dobranych siłowników termoelektrycznych na działanie całej instalacji grzewczej.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-sum-container" id="silowniki-sum-app">
    <div class="rk-sum-header">
        <div class="rk-sum-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
            Podsumowanie
        </div>
        <div class="rk-sum-quote-box">
            <div class="rk-sum-quote-mark">&#8222;</div>
            <p class="rk-sum-quote-text">
                Siłowniki termoelektryczne to nie jest opcjonalny gadżet. To interfejs wykonawczy, który tłumaczy inteligencję budynku na fizyczny przepływ. Zły dobór skoku tłoczka zamorduje sprawność każdej pompy ciepła.
            </p>
            <div class="rk-sum-author">
                <span>Robert Kucharski</span> | CEO portalu            </div>
        </div>
    </div>

    <div class="rk-sum-interactive">
        <div class="rk-decision-wrapper" id="simDecisions">
            <button class="rk-decision-btn active" data-choice="pro">
                <div class="rk-decision-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                </div>
                <h4 class="rk-decision-title">Standard Inżynierski</h4>
            </button>
            <button class="rk-decision-btn" data-choice="amateur">
                <div class="rk-decision-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                </div>
                <h4 class="rk-decision-title">Wykonawstwo &#8222;na oko&#8221;</h4>
            </button>
        </div>

        <div class="rk-sim-result state-pro" id="simResultBox">
            <svg class="rk-anim-svg" viewBox="0 0 100 100">
                <path class="anim-shield" d="M50 10 L10 25 L10 50 C10 75 40 90 50 95 C60 90 90 75 90 50 L90 25 Z" stroke-width="4" stroke-linejoin="round"></path>
                <polyline class="anim-check" points="35 50 45 60 70 35" fill="none" stroke="#ffffff" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"></polyline>
            </svg>
            <div class="rk-result-content" id="simResultContent">
                <h4 style="color: var(--rk-sum-green);">Absolutna stabilność systemu</h4>
                <p>Precyzyjne zestrojenie parametrów – jak skok roboczy (np. <strong>4,0 mm</strong>) czy siła nacisku (min. <strong>100 N</strong>) – zapobiega przeciekom krzyżowym. Woda trafia wyłącznie tam, gdzie nakazuje automatyka.</p>
                <p>To podstawa bezawaryjnej pracy, która musi bazować na <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">profesjonalnym projekcie ogrzewania podłogowego</a> uwzględniającym wyliczone opory hydrauliczne.</p>
            </div>
        </div>
    </div>

    <div class="rk-sum-cta-box">
        <h3 class="rk-sum-cta-title">Przestań tracić pieniądze na błędy wykonawcze</h3>
        <p class="rk-sum-cta-text">
            Ignorowanie technologii mści się rachunkami i zimną podłogą. Zbuduj swoją wiedzę z setkami artykułów opartych na twardych wyliczeniach, normach PN-EN i realnym doświadczeniu inżynierskim.
        </p>
        <a href="https://projekt-ogrzewania.pl/blog/" class="rk-btn-massive">
            PRZEJDŹ DO BAZY WIEDZY EKSKLUZYWNEJ
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btns = document.querySelectorAll('.rk-decision-btn');
    const resultBox = document.getElementById('simResultBox');
    const resultContent = document.getElementById('simResultContent');

    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            // Zmiana aktywnych przycisków
            btns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            const choice = this.getAttribute('data-choice');

            // Aktualizacja wizualizacji
            if (choice === 'pro') {
                resultBox.className = 'rk-sim-result state-pro';
                resultContent.innerHTML = `
                    <h4 style="color: var(--rk-sum-green);">Absolutna stabilność systemu</h4>
                    <p>Precyzyjne zestrojenie parametrów – jak skok roboczy (np. <strong>4,0 mm</strong>) czy siła nacisku (min. <strong>100 N</strong>) – zapobiega przeciekom krzyżowym. Woda trafia wyłącznie tam, gdzie nakazuje automatyka.</p>
                    <p>To podstawa bezawaryjnej pracy, która musi bazować na <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">profesjonalnym projekcie ogrzewania podłogowego</a> uwzględniającym wyliczone opory hydrauliczne.</p>
                `;
                resultBox.querySelector('.anim-check').style.display = 'block';
            } else {
                resultBox.className = 'rk-sim-result state-amateur';
                resultContent.innerHTML = `
                    <h4 style="color: var(--rk-sum-red);">Taktowanie pompy i wysokie rachunki</h4>
                    <p>Zbagatelizowanie właściwego prądu rozruchowego czy doboru gwintu (M30 vs M28) mści się drastycznym spadkiem sprawności <a href="https://projekt-ogrzewania.pl/pompa-ciepla/" style="color: var(--rk-sum-red);">pompy ciepła</a>.</p>
                    <p>Nieszczelne lub niepasujące siłowniki wymuszają niekontrolowaną cyrkulację, wywołując dyskomfort termiczny domowników i skrócenie żywotności urządzeń grzewczych.</p>
                `;
                resultBox.querySelector('.anim-check').style.display = 'none';
            }
        });
    });
});
</script>



<style>
:root {
    --rk-dl-dark: #0f172a;
    --rk-dl-panel: #1e293b;
    --rk-dl-accent: #f97316; /* Pomarańczowy termiczny */
    --rk-dl-accent-dark: #ea580c;
    --rk-dl-secondary: #6366f1; /* Indygo elektryczne */
    --rk-dl-bg: #f8fafc;
    --rk-dl-border: #e2e8f0;
    --rk-dl-text: #334155;
    --rk-dl-white: #ffffff;
}

.rk-dl-hub-container {
    max-width: 950px;
    margin: 60px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-dl-white);
    border-radius: 24px;
    border: 1px solid var(--rk-dl-border);
    box-shadow: 0 25px 50px -12px rgba(249, 115, 22, 0.1);
    overflow: hidden;
}

/* NAGŁÓWEK SEKCI */
.rk-dl-header {
    background: linear-gradient(135deg, var(--rk-dl-dark) 0%, #2e1065 100%);
    padding: 45px 50px;
    color: var(--rk-dl-white);
    display: flex;
    justify-content: space-between;
    align-items: center;
    position: relative;
    border-bottom: 4px solid var(--rk-dl-accent);
}

.rk-dl-header-content { position: relative; z-index: 2; max-width: 65%; }

.rk-dl-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(249, 115, 22, 0.2);
    border: 1px solid rgba(249, 115, 22, 0.4);
    color: #fdba74;
    padding: 8px 16px;
    border-radius: 50px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
}

.rk-dl-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 12px 0;
    letter-spacing: -0.5px;
    line-height: 1.3;
}

.rk-dl-header p {
    font-size: 15px;
    color: #cbd5e1;
    margin: 0;
    line-height: 1.6;
}

/* WIZUALIZACJA PDF / IKONA */
.rk-dl-header-visual {
    position: relative;
    z-index: 2;
}

.rk-dl-pdf-icon-svg {
    width: 90px;
    height: auto;
    filter: drop-shadow(0 15px 25px rgba(0,0,0,0.4));
    animation: rkFloatIcon 3.5s infinite ease-in-out alternate;
}

@keyframes rkFloatIcon {
    from { transform: translateY(0) rotate(-2deg); }
    to { transform: translateY(-12px) rotate(2deg); }
}

/* GŁÓWNY WORKSPACE */
.rk-dl-workspace {
    display: flex;
    padding: 45px 50px;
    gap: 45px;
    background: var(--rk-dl-white);
}

.rk-dl-preview-box {
    flex: 1.2;
    background: var(--rk-dl-bg);
    border: 2px dashed var(--rk-dl-border);
    border-radius: 16px;
    padding: 15px;
    position: relative;
    cursor: zoom-in;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
    align-items: center;
}

.rk-dl-preview-box:hover {
    transform: scale(1.03);
    border-color: var(--rk-dl-accent);
    box-shadow: 0 20px 30px -10px rgba(249, 115, 22, 0.15);
}

.rk-dl-preview-img {
    width: 100%;
    height: auto;
    border-radius: 8px;
    display: block;
    box-shadow: 0 4px 10px rgba(0,0,0,0.05);
}

.rk-dl-zoom-hint {
    position: absolute;
    bottom: 25px;
    background: rgba(15, 23, 42, 0.85);
    color: var(--rk-dl-white);
    padding: 8px 16px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 700;
    backdrop-filter: blur(4px);
    display: flex;
    align-items: center;
    gap: 6px;
    opacity: 0.9;
    transition: opacity 0.3s;
}

.rk-dl-preview-box:hover .rk-dl-zoom-hint {
    opacity: 1;
}

/* SEKCJA INFORMACYJNA */
.rk-dl-info-side {
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-dl-info-title {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-dl-dark);
    margin: 0 0 20px 0;
}

.rk-dl-feature-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 15px;
    margin: 0 0 35px 0;
}

.rk-dl-feature-item {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    background: var(--rk-dl-bg);
    padding: 12px 15px;
    border-radius: 12px;
    border: 1px solid var(--rk-dl-border);
    transition: border-color 0.2s;
}

.rk-dl-feature-item:hover {
    border-color: var(--rk-dl-secondary);
}

.rk-dl-check-svg {
    width: 20px;
    height: 20px;
    color: var(--rk-dl-secondary);
    flex-shrink: 0;
    margin-top: 2px;
}

.rk-dl-feature-text {
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-dl-text);
    line-height: 1.4;
}

/* PRZYCISK POBIERANIA */
.rk-dl-main-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-dl-accent);
    color: var(--rk-dl-white);
    text-decoration: none !important;
    padding: 20px 30px;
    border-radius: 14px;
    font-weight: 900;
    font-size: 16px;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 10px 20px -5px rgba(249, 115, 22, 0.4);
    border: 2px solid transparent;
}

.rk-dl-main-btn:hover {
    background: var(--rk-dl-accent-dark);
    transform: translateY(-4px);
    box-shadow: 0 15px 30px -5px rgba(249, 115, 22, 0.5);
    border-color: #fdba74;
}

.rk-dl-main-btn svg {
    transition: transform 0.3s;
}

.rk-dl-main-btn:hover svg {
    transform: translateY(3px);
}

/* STOPKA MODUŁU */
.rk-dl-footer {
    padding: 25px 50px;
    background: var(--rk-dl-bg);
    border-top: 1px solid var(--rk-dl-border);
    font-size: 13px;
    color: var(--rk-dl-muted);
    text-align: center;
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 15px;
}

.rk-dl-footer a {
    color: var(--rk-dl-secondary);
    font-weight: 700;
    text-decoration: none;
    transition: color 0.2s;
}

.rk-dl-footer a:hover {
    color: #4338ca;
    text-decoration: underline;
}

@media (max-width: 850px) {
    .rk-dl-header { flex-direction: column; text-align: center; padding: 35px 25px; }
    .rk-dl-header-content { max-width: 100%; margin-bottom: 30px; }
    .rk-dl-workspace { flex-direction: column; padding: 35px 25px; }
    .rk-dl-preview-box { width: 100%; margin-bottom: 10px; }
    .rk-dl-footer { flex-direction: column; justify-content: center; padding: 25px; text-align: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#infografika-article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/"
    },
    "headline": "Infografika: Siłowniki termoelektryczne na rozdzielaczach",
    "description": "Pobierz inżynierskie kompendium wiedzy o siłownikach termoelektrycznych. Zasada działania, parametry i dobór zasilacza w formacie PDF.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Silowniki-termoelektryczne-na-rozdzielaczach.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-31",
    "dateModified": "2026-05-31"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#dataset-infografika",
    "name": "Kompendium: Parametry i montaż siłowników termoelektrycznych",
    "description": "Wizualne zestawienie parametrów technicznych, zasady działania i algorytmu doboru zasilacza dla siłowników 230V i 24V na belkach rozdzielacza.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "infografika siłowniki termoelektryczne",
      "schemat podłączenia siłowników",
      "zasada działania siłownika NC",
      "dobór zasilacza do podłogówki 24V",
      "błędy montażu siłowników na rozdzielaczu"
    ],
    "measurementTechnique": "Wizualizacja procesów termodynamicznych i elektrycznych zachodzących w siłownikach na belce rozdzielacza.",
    "mainEntity": {
      "@type": "Thing",
      "name": "Schemat i parametry automatyki strefowej"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#download-app",
    "name": "Centrum Pobierania Wiedzy: Automatyka Strefowa",
    "description": "Interaktywny moduł umożliwiający podgląd i pobranie dokumentacji technicznej w wysokiej rozdzielczości, dotyczącej siłowników termoelektrycznych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript, HTML5"
  }
]
</script>

<div class="rk-dl-hub-container" id="app-actuator-dl">
    
    <div class="rk-dl-header">
        <div class="rk-dl-header-content">
            <div class="rk-dl-badge">
                <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg>
                Darmowe Materiały do Pobrania
            </div>
            <h2>Pobierz Kompletny Przewodnik (Infografika)</h2>
            <p>Zabierz inżynierską wiedzę bezpośrednio na plac budowy. Zasada działania, kluczowe parametry i schemat doboru zasilacza zamknięte w jednym, czytelnym pliku PDF.</p>
        </div>
        <div class="rk-dl-header-visual">
            <svg class="rk-dl-pdf-icon-svg" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path d="M14 2H6C4.89543 2 4 2.89543 4 4V20C4 21.1046 4.89543 22 6 22H18C19.1046 22 20 21.1046 20 20V8L14 2Z" fill="#ef4444" stroke="#ffffff" stroke-width="1.5"/>
                <path d="M14 2V8H20" fill="#dc2626" stroke="#ffffff" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
                <circle cx="12" cy="13" r="3" fill="none" stroke="#ffffff" stroke-width="1.5"/>
                <path d="M12 10V11 M12 15V16 M9 13H10 M14 13H15" stroke="#ffffff" stroke-width="1.5" stroke-linecap="round"/>
                <text x="7" y="20" fill="white" font-size="4.5" font-weight="900" font-family="sans-serif">PDF</text>
            </svg>
        </div>
    </div>

    <div class="rk-dl-workspace">
        
        <div class="rk-dl-preview-box" onclick="window.open('https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Silowniki-termoelektryczne-na-rozdzielaczach.webp', '_blank')">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Silowniki-termoelektryczne-na-rozdzielaczach.webp" alt="Infografika - Siłowniki termoelektryczne na rozdzielaczach" class="rk-dl-preview-img" loading="lazy">
            <div class="rk-dl-zoom-hint">
                <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line><line x1="11" y1="8" x2="11" y2="14"></line><line x1="8" y1="11" x2="14" y2="11"></line></svg>
                Kliknij, aby powiększyć
            </div>
        </div>

        <div class="rk-dl-info-side">
            <h3 class="rk-dl-info-title">Co znajdziesz w infografice?</h3>
            
            <div class="rk-dl-feature-grid">
                <div class="rk-dl-feature-item">
                    <svg class="rk-dl-check-svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
                    <span class="rk-dl-feature-text">Zasada działania i ekspansja fazowa (NC/NO)</span>
                </div>
                <div class="rk-dl-feature-item">
                    <svg class="rk-dl-check-svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
                    <span class="rk-dl-feature-text">Tabela parametrów: Prąd rozruchowy i skok trzpienia</span>
                </div>
                <div class="rk-dl-feature-item">
                    <svg class="rk-dl-check-svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
                    <span class="rk-dl-feature-text">Algorytm doboru bezpiecznego zasilacza 24V DIN</span>
                </div>
                <div class="rk-dl-feature-item">
                    <svg class="rk-dl-check-svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
                    <span class="rk-dl-feature-text">Wysoka rozdzielczość, gotowa do wydruku (A4/A3)</span>
                </div>
            </div>

            <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Silowniki-termoelektryczne-na-rozdzielaczach.pdf" class="rk-dl-main-btn" target="_blank">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg>
                POBIERZ INFOGRAFIKĘ (PDF)
            </a>
            
            <p style="margin-top: 25px; font-size: 13px; color: var(--rk-dl-muted); line-height: 1.5; padding: 15px; background: var(--rk-dl-bg); border-radius: 8px; border-left: 3px solid var(--rk-dl-secondary);">
                Nie jesteś pewien, jak poprawnie zoptymalizować automatykę dla swojego układu VAV? <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt podłogówki</a> i zyskaj gwarancję bezawaryjnej pracy.
            </p>
        </div>

    </div>

    <div class="rk-dl-footer">
        <div>© 2026 Projekt-Ogrzewania.pl | Udostępnianie dozwolone z zachowaniem linku do źródła.</div>
        <div>Autor techniczny: <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener">Robert Kucharski</a></div>
    </div>
</div>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">Siłowniki termoelektryczne na rozdzielaczach.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Sterownik (regulator) pogodowy.</title>
		<link>https://projekt-ogrzewania.pl/sterownik-regulator-pogodowy/</link>
					<comments>https://projekt-ogrzewania.pl/sterownik-regulator-pogodowy/#comments</comments>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Thu, 08 Jan 2026 11:24:19 +0000</pubDate>
				<category><![CDATA[Automatyka domowa]]></category>
		<category><![CDATA[Automatyka grzewcza]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Instalacje hydrauliczne]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Pompa ciepła]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Projektowanie systemów grzewczych]]></category>
		<category><![CDATA[Technologia grzewcza]]></category>
		<category><![CDATA[automatyka grzewcza]]></category>
		<category><![CDATA[instalacja]]></category>
		<category><![CDATA[komfort cieplny]]></category>
		<category><![CDATA[krzywa grzewcza]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędność energii]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[regulator pogodowy]]></category>
		<category><![CDATA[sterownik pogodowy]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3102</guid>

					<description><![CDATA[<p>Nowoczesne ogrzewanie to dziś nie tylko źródło ciepła, ale przede wszystkim inteligentne sterowanie energią. Sterownik (regulator) pogodowy odgrywa kluczową rolę w osiągnięciu stabilnego komfortu cieplnego i realnych oszczędności eksploatacyjnych, szczególnie w instalacjach wodnego ogrzewania podłogowego. W artykule pokazujemy, jak działa regulacja pogodowa, czym jest krzywa grzewcza, dlaczego sama automatyka bez właściwej konfiguracji nie wystarczy oraz jak projektować instalację z myślą o maksymalnej efektywności. To praktyczny przewodnik dla inwestorów i instalatorów, którzy chcą, aby system grzewczy pracował mądrze, a nie „na oko”.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/sterownik-regulator-pogodowy/">Sterownik (regulator) pogodowy.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">W poszukiwaniu komfortu cieplnego i maksymalnej efektywności systemu grzewczego, coraz więcej inwestorów i instalatorów sięga po zaawansowane rozwiązania automatyki. Jednym z kluczowych, a wręcz fundamentalnych elementów w nowoczesnej instalacji grzewczej jest <strong>sterownik (regulator) pogodowy</strong>.</p>



<p class="wp-block-paragraph">To właśnie to urządzenie, często nazywane mózgiem instalacji, przekształca zwykłe wodne <a href="https://projekt-ogrzewania.pl">ogrzewanie podłogowe</a> w system inteligentny, samodzielnie reagujący na kaprysy aury i gwarantujący stabilny mikroklimat wewnątrz budynku przy minimalnych kosztach eksploatacyjnych. W tym kompleksowym przewodniku zagłębimy się w zasadę działania, konfigurację, korzyści oraz techniczne aspekty doboru i użytkowania regulatorów pogodowych.</p>



<h2 class="wp-block-heading">Zasada działania: jak natura dyktuje warunki pracy instalacji?</h2>



<p class="wp-block-paragraph">Podstawowa idea stojąca za&nbsp;<strong>regulatorem pogodowym</strong>&nbsp;jest genialna w swej prostocie. Opiera się na fizycznej zależności:&nbsp;<strong>im niższa temperatura na zewnątrz budynku, tym większe straty ciepła i tym wyższe zapotrzebowanie na moc grzewczą.</strong>&nbsp;W przeciwieństwie do prostych termostatów, które reagują dopiero na zmianę temperatury&nbsp;<em>wewnątrz</em>&nbsp;pomieszczenia (czyli z opóźnieniem), sterownik pogodowy działa&nbsp;<strong>proaktywnie</strong>.</p>



<h3 class="wp-block-heading">Krzywa grzewcza: matematyczny model Twojego domu.</h3>



<p class="wp-block-paragraph">Sercem algorytmu sterownika jest tzw. <strong><a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">krzywa grzewcza</a></strong> (lub krzywa pogodowa). Jest to zaprogramowana funkcja liniowa lub krzywoliniowa, która dla każdej zmierzonej wartości temperatury zewnętrznej przypisuje odpowiednią <strong>wartość zadanej temperatury zasilania</strong> dla instalacji grzewczej.</p>



<p class="wp-block-paragraph"><strong>Proces działania w pętli zamkniętej:</strong></p>



<ol start="1" class="wp-block-list">
<li><strong>Pomiar:</strong>&nbsp;Czujnik zewnętrzny (najlepiej zamontowany na ścianie północnej lub północno-wschodniej, w miejscu zacienionym i osłoniętym od bezpośredniego działania słońca i wiatru) dostarcza sterownikowi bieżącą wartość temperatury (<em>T_zew</em>).</li>



<li><strong>Obliczenia:</strong>&nbsp;Mikroprocesor sterownika, na podstawie zaprogramowanej&nbsp;<strong>krzywej grzewczej</strong>, oblicza wymaganą temperaturę wody, która powinna popłynąć do pętli grzewczych (<em>T_zasilania_zadana</em>).</li>



<li><strong>Wykonanie:</strong>&nbsp;Sterownik wysyła sygnał (impulsowy, 0-10V, PWM) do siłownika zamontowanego na&nbsp;<strong>zaworzie mieszającym</strong>. Siłownik ustawia pozycję zaworu, który miesza gorącą wodę z obiegu kotłowego z chłodniejszą wodą powrotną z instalacji podłogowej, aż do osiągnięcia dokładnie obliczonej temperatury.</li>



<li><strong>Kontrola:</strong>&nbsp;Czujnik temperatury zamontowany na rurze zasilającej instalacji (tzw. czujnik powrotu lub zasilania) zamyka pętlę regulacji, informując sterownik o rzeczywistej temperaturze i umożliwiając ewentualną korektę.</li>
</ol>



<p class="wp-block-paragraph"><em>Przykład praktyczny:</em>&nbsp;Załóżmy, że krzywa grzewcza jest ustawiona w następujący sposób:</p>



<ul class="wp-block-list">
<li>Dla temperatury zewnętrznej +12°C -&gt; temperatura zasilania 24°C</li>



<li>Dla temperatury zewnętrznej -20°C -&gt; temperatura zasilania 45°C</li>
</ul>



<p class="wp-block-paragraph">Gdy na zewnątrz jest +5°C, sterownik automatycznie wyliczy (np. przez interpolację liniową), że potrzebna temperatura zasilania to około 32°C. Jeśli nad ranem mróz sięgnie -10°C, sterownik sam podniesie zadaną temperaturę do ok. 38-40°C.</p>



<h2 class="wp-block-heading">Dlaczego to rozwiązanie jest tak efektywne? Zalety sterownika pogodowego.</h2>



<p class="wp-block-paragraph">Wdrożenie&nbsp;<strong>automatyki pogodowej</strong>&nbsp;do systemu ogrzewania podłogowego przynosi szereg wymiernych korzyści, które przekładają się zarówno na portfel, jak i na komfort użytkowania.</p>



<ul class="wp-block-list">
<li><strong>Optymalizacja zużycia energii i oszczędności finansowe (nawet do 15-25%).</strong>&nbsp;System działa precyzyjnie, dostarczając dokładnie tyle ciepła, ile jest w danej chwili potrzebne do zbilansowania strat budynku. Eliminuje to zjawisko&nbsp;<strong>przegrzewania</strong>, które jest główną przyczyną marnowania energii w systemach sterowanych wyłącznie termostatami pokojowymi. Brak przestojów i zbędnych, wysokotemperaturowych &#8222;zastrzyków&#8221; ciepła znacząco redukuje rachunki.</li>



<li><strong>Bezkonkurencyjny komfort cieplny.</strong>&nbsp;Ogrzewanie podłogowe ma dużą&nbsp;<strong>bezwładność cieplną</strong>. Reakcja na zmianę ustawienia termostatu może trwać nawet kilka godzin.&nbsp;<strong>Regulator pogodowy</strong>&nbsp;działa z wyprzedzeniem, kompensując straty ciepła na bieżąco. Dzięki temu temperatura w pomieszczeniach pozostaje&nbsp;<strong>niezmiennie stabilna</strong>, bez odczuwalnych wahań czy cykli &#8222;za gorąco/za zimno&#8221;.</li>



<li><strong>Ochrona instalacji grzewczej.</strong>&nbsp;Jednym z podstawowych założeń ogrzewania podłogowego jest praca z relatywnie niskimi temperaturami zasilania (zwykle 35-55°C). Sterownik pogodowy jest &#8222;strażnikiem&#8221; tego założenia, automatycznie chroniąc przed podaniem zbyt gorącej wody, która mogłaby uszkodzić warstwę wylewki, wykładzinę lub powodować dyskomfort użytkowników.</li>



<li><strong>Bezobsługowość i wygoda.</strong>&nbsp;Po prawidłowym zaprogramowaniu system działa w pełni automatycznie przez cały sezon grzewczy. Użytkownik nie musi na bieżąco korygować nastaw, dostosowując je do zmieniającej się pogody.</li>



<li><strong>Elastyczność i integracja.</strong>&nbsp;Nowoczesne sterowniki oferują funkcje&nbsp;<strong>sterowania strefowego</strong>&nbsp;(kilka niezależnych krzywych dla różnych części domu),&nbsp;<strong>zdalnego dostępu przez Wi-Fi</strong>,&nbsp;<strong>integracji z systemami smart home</strong>&nbsp;czy zaawansowanych algorytmów optymalizacji (np. adaptacyjnego czasu nagrzewania).</li>
</ul>



<h2 class="wp-block-heading">Konfiguracja kluczem do sukcesu: parametryzacja krzywej grzewczej.</h2>



<p class="wp-block-paragraph">Sam zakup dobrego&nbsp;<strong>regulatora pogodowego</strong>&nbsp;to tylko połowa sukcesu. Jego prawdziwa moc ujawnia się po poprawnej konfiguracji, czyli&nbsp;<strong>dostrojeniu krzywej grzewczej do charakterystyki cieplnej konkretnego budynku</strong>. Główne parametry to:</p>



<ol start="1" class="wp-block-list">
<li><strong>Nachylenie krzywej (SP, Slope):</strong>&nbsp;Określa, jak agresywnie system reaguje na spadek temperatury zewnętrznej. Wysokie nachylenie (np. 1.8) oznacza duży wzrost temperatury zasilania przy małym spadku temperatury na zewnątrz – potrzebne dla budynków o&nbsp;<strong>dużych stratach ciepła</strong>&nbsp;(słaba izolacja, duże przeszklenia). Niskie nachylenie (np. 0.4) – dla domów&nbsp;<strong>pasywnych lub energooszczędnych</strong>&nbsp;o bardzo małym zapotrzebowaniu na ciepło.</li>



<li><strong>Przesunięcie równoległe (dT, Parallel shift):</strong>&nbsp;Podnosi lub obniża całą krzywą, zachowując jej nachylenie. Służy do korekty subiektywnego odczucia ciepła (&#8222;globalnie jest mi za zimno/za ciepło&#8221;).</li>



<li><strong>Temperatura graniczna (Limit):</strong>&nbsp;Maksymalna i minimalna temperatura zasilania, jaką może zadać sterownik. Zabezpiecza instalację (górny limit, np. 45°C) i zapewnia minimalny komfort (dolny limit, np. 20°C).</li>
</ol>



<p class="wp-block-paragraph"><strong>Przykładowa tabela konfiguracji dla różnych typów budynków:</strong></p>



<div class="table-responsive-wrapper">

  <h3 class="table-title">
    Przykładowa tabela konfiguracji dla różnych typów budynków
  </h3>

  <div class="table-scroll">
    <table class="config-table">
      <thead>
        <tr>
          <th>Typ budynku</th>
          <th>Izolacja termiczna</th>
          <th>Przykładowe nachylenie (SP)</th>
          <th>Komentarz</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td data-label="Typ budynku"><strong>Dom pasywny</strong></td>
          <td data-label="Izolacja termiczna">
            Bardzo dobra<br>
            <small>(ściany &lt; 0.15 W/m²K)</small>
          </td>
          <td data-label="Nachylenie (SP)">0.3 – 0.5</td>
          <td data-label="Komentarz">
            Krzywa bardzo płaska. Temperatura zasilania wzrasta minimalnie nawet przy silnych mrozach.
          </td>
        </tr>

        <tr>
          <td data-label="Typ budynku"><strong>Dom energooszczędny</strong></td>
          <td data-label="Izolacja termiczna">
            Dobra<br>
            <small>(ściany ~0.18 W/m²K)</small>
          </td>
          <td data-label="Nachylenie (SP)">0.6 – 1.0</td>
          <td data-label="Komentarz">
            Umiarkowana reakcja na mróz. Najpopularniejszy zakres dla nowych budynków.
          </td>
        </tr>

        <tr>
          <td data-label="Typ budynku"><strong>Dom modernizowany</strong></td>
          <td data-label="Izolacja termiczna">
            Umiarkowana<br>
            <small>(ściany 0.3–0.5 W/m²K)</small>
          </td>
          <td data-label="Nachylenie (SP)">1.2 – 1.6</td>
          <td data-label="Komentarz">
            Wymaga wyraźnego podnoszenia temperatury zasilania w chłodne dni.
          </td>
        </tr>

        <tr>
          <td data-label="Typ budynku"><strong>Dom stary, nieocieplony</strong></td>
          <td data-label="Izolacja termiczna">
            Słaba<br>
            <small>(ściany &gt; 0.7 W/m²K)</small>
          </td>
          <td data-label="Nachylenie (SP)">1.8 – 2.5</td>
          <td data-label="Komentarz">
            Bardzo stroma krzywa. System musi dynamicznie reagować na zmiany pogody.
          </td>
        </tr>
      </tbody>
    </table>
  </div>

</div>

<style>
.table-responsive-wrapper {
  max-width: 1000px;
  margin: 40px auto;
  font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;
}

.table-title {
  text-align: center;
  margin-bottom: 20px;
  font-size: 22px;
  font-weight: 600;
}

.table-scroll {
  overflow-x: auto;
}

.config-table {
  width: 100%;
  border-collapse: collapse;
  background: #ffffff;
  box-shadow: 0 2px 8px rgba(0,0,0,.06);
  border-radius: 8px;
  overflow: hidden;
}

.config-table th,
.config-table td {
  padding: 14px 16px;
  text-align: left;
  vertical-align: top;
}

.config-table thead {
  background: #f4f6f8;
}

.config-table th {
  font-weight: 600;
  font-size: 14px;
  color: #333;
}

.config-table tbody tr {
  border-top: 1px solid #e5e5e5;
}

.config-table td {
  font-size: 14px;
  color: #444;
}

.config-table small {
  color: #777;
  font-size: 12px;
}

/* 📱 MOBILE */
@media (max-width: 768px) {
  .config-table thead {
    display: none;
  }

  .config-table,
  .config-table tbody,
  .config-table tr,
  .config-table td {
    display: block;
    width: 100%;
  }

  .config-table tr {
    margin-bottom: 20px;
    background: #f9fafb;
    border-radius: 8px;
    padding: 10px;
  }

  .config-table td {
    padding: 8px 10px;
    border: none;
  }

  .config-table td::before {
    content: attr(data-label);
    display: block;
    font-weight: 600;
    color: #333;
    margin-bottom: 3px;
    font-size: 13px;
  }
}
</style>



<p class="wp-block-paragraph"><strong>Wykres poglądowy krzywych grzewczych dla różnych typów budynków:</strong></p>



<div class="heating-chart-container">
    <h2 class="chart-title">Krzywa Grzewcza &#8211; Temperatura Zasilania a Temperatura Zewnętrzna</h2>

    <div class="heating-chart-wrapper">
        <svg viewBox="0 0 700 450" class="heating-chart" xmlns="http://www.w3.org/2000/svg">

            <!-- Osie -->
            <line x1="80" y1="50" x2="80" y2="380" class="axis"/>
            <line x1="80" y1="380" x2="650" y2="380" class="axis"/>

            <!-- Opis osi X -->
            <text x="360" y="420" class="axis-label">Temperatura zewnętrzna [°C]</text>

            <!-- Opis osi Y – JESZCZE WYŻEJ -->
            <text x="25" y="210"
                  class="axis-label"
                  transform="rotate(90 25 210)">
                Temperatura zasilania [°C]
            </text>

            <!-- Skala X -->
            <g class="ticks">
                <line x1="120" y1="375" x2="120" y2="385"/>
                <text x="120" y="400">+20</text>

                <line x1="210" y1="375" x2="210" y2="385"/>
                <text x="210" y="400">+10</text>

                <line x1="300" y1="375" x2="300" y2="385"/>
                <text x="300" y="400">0</text>

                <line x1="390" y1="375" x2="390" y2="385"/>
                <text x="390" y="400">-10</text>

                <line x1="480" y1="375" x2="480" y2="385"/>
                <text x="480" y="400">-20</text>
            </g>

            <!-- Skala Y -->
            <g class="ticks">
                <line x1="75" y1="360" x2="85" y2="360"/>
                <text x="55" y="365">20</text>

                <line x1="75" y1="315" x2="85" y2="315"/>
                <text x="55" y="320">25</text>

                <line x1="75" y1="270" x2="85" y2="270"/>
                <text x="55" y="275">30</text>

                <line x1="75" y1="225" x2="85" y2="225"/>
                <text x="55" y="230">35</text>

                <line x1="75" y1="180" x2="85" y2="180"/>
                <text x="55" y="185">40</text>

                <line x1="75" y1="135" x2="85" y2="135"/>
                <text x="55" y="140">45</text>

                <line x1="75" y1="90" x2="85" y2="90"/>
                <text x="55" y="95">50</text>
            </g>

            <!-- Linie -->
            <polyline points="120,350 210,315 300,280 390,245 480,210"
                      class="line eco"/>

            <polyline points="120,325 210,285 300,245 390,205 480,165"
                      class="line modernized"/>

            <polyline points="120,300 210,255 300,210 390,165 480,120"
                      class="line old-house"/>

        </svg>
    </div>

    <div class="chart-legend">
        <div class="legend-item">
            <div class="legend-color eco"></div>
            <div class="legend-text">Dom energooszczędny</div>
        </div>
        <div class="legend-item">
            <div class="legend-color modern"></div>
            <div class="legend-text">Dom modernizowany</div>
        </div>
        <div class="legend-item">
            <div class="legend-color old"></div>
            <div class="legend-text">Dom stary</div>
        </div>
    </div>

    <p class="chart-note">
        <em>Im lepsza izolacja budynku, tym niższa temperatura zasilania potrzebna do ogrzania pomieszczeń przy tej samej temperaturze zewnętrznej.</em>
    </p>
</div>

<style>
.heating-chart-container {
    max-width: 900px;
    margin: 40px auto;
    padding: 20px;
    background: #fff;
    border-radius: 8px;
    box-shadow: 0 2px 8px rgba(0,0,0,.1);
    border: 1px solid #e0e0e0;
}

.chart-title {
    text-align: center;
    margin-bottom: 25px;
    font-size: 22px;
    font-weight: 600;
}

.heating-chart {
    width: 100%;
    min-width: 700px;
    font-family: system-ui, sans-serif;
}

.axis {
    stroke: #444;
    stroke-width: 1.5;
}

.axis-label {
    font-size: 14px;
    fill: #444;
    font-weight: 500;
}

.ticks text {
    font-size: 12px;
    fill: #666;
}

.line {
    fill: none;
    stroke-width: 3;
    stroke-linecap: round;
}

.old-house { stroke: #c0392b; }
.modernized { stroke: #f39c12; }
.eco { stroke: #27ae60; }

.chart-legend {
    display: flex;
    justify-content: center;
    gap: 15px;
    margin-top: 20px;
    background: #f8f9fa;
    padding: 15px;
    border-radius: 6px;
}

.legend-item {
    display: flex;
    align-items: center;
}

.legend-color {
    width: 20px;
    height: 20px;
    margin-right: 8px;
    border-radius: 3px;
}

.legend-color.eco { background: #27ae60; }
.legend-color.modern { background: #f39c12; }
.legend-color.old { background: #c0392b; }

.chart-note {
    text-align: center;
    margin-top: 15px;
    font-size: 14px;
    background: #f8f9fa;
    padding: 10px;
    border-radius: 6px;
    border-left: 4px solid #27ae60;
}
</style>



<p class="wp-block-paragraph">*Wykres ilustruje, jak dla tej samej temperatury zewnętrznej (-10°C) różne budynki wymagają innej temperatury zasilania.*</p>



<h3 class="wp-block-heading">Niezbędny element: korekta pokojowa.</h3>



<p class="wp-block-paragraph">Czysta&nbsp;<strong>krzywa pogodowa</strong>&nbsp;nie uwzględnia wewnętrznych zysków ciepła (słońce przez okna, gotowanie, obecność ludzi). Dlatego&nbsp;<strong>absolutnie kluczowym elementem jest czujnik temperatury pokojowej</strong>. Pełni on rolę&nbsp;<strong>sprzężenia zwrotnego</strong>. Jeśli z powodu nasłonecznienia temperatura w pomieszczeniu referencyjnym wzrośnie powyżej wartości zadanej, sterownik&nbsp;<strong>obniży</strong>&nbsp;krzywą (zmniejszy temperaturę zasilania), zapobiegając przegrzaniu. Działa to również w drugą stronę.</p>



<h2 class="wp-block-heading">Projektowanie ogrzewania podłogowego z myślą o automatyce pogodowej.</h2>



<p class="wp-block-paragraph">Planując <strong>system wodnego ogrzewania podłogowego</strong>, już na etapie <a href="https://projekt-ogrzewania.pl/kategoria-produktu/projekty/">projektu</a> należy uwzględnić zastosowanie <strong>sterownika pogodowego</strong>. To nie jest jedynie &#8222;dodatek&#8221;, ale integralna część układu, która wpływa na dobór innych komponentów.</p>



<ol start="1" class="wp-block-list">
<li><strong>Dobór źródła ciepła:</strong> <strong>Regulator pogodowy</strong> jest szczególnie efektywny w połączeniu z niskotemperaturowymi źródłami ciepła, takimi jak <strong><a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompa ciepła</a></strong> (która osiąga wyższe współczynniki COP przy niższej temperaturze zasilania) czy <strong>kondensacyjny <a href="https://projekt-ogrzewania.pl/kociol-gazowy/">kocioł gazowy</a></strong>. Projektując system, należy dążyć do możliwie niskich parametrów projektowych (temperatura zasilania 35-40°C), co pozwoli w pełni wykorzystać potencjał tych urządzeń i automatyki.</li>



<li><strong>Konstrukcja <a href="https://projekt-ogrzewania.pl/petla-grzewcza/">pętli grzewczych</a>:</strong> Długość i układ pętli muszą zapewnić wymaganą moc grzewczą przy obliczonej, niskiej temperaturze zasilania. To często wymaga gęstszego rozstawu rur (np. co 10 cm zamiast 15 cm) w strefach o dużych stratach (przy dużych oknach, w narożach).</li>



<li><strong>Układ hydrauliczny i zawór mieszający:</strong> Projekt musi przewidywać miejsce na <strong>zestaw mieszający</strong> (zawór 2-, 3- lub 4-drogowy z siłownikiem, <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompa obiegowa</a>, zabezpieczenia). Moc pompy musi być dobrana do oporów hydraulicznych najdłuższej pętli oraz oporów samego zaworu. Należy też zdecydować o topologii sterowania: czy będzie to jeden sterownik centralny dla całego domu, czy rozbudowany system strefowy z niezależnymi krzywymi dla każdej strefy (np. skrzydło dzienne/nocne, parter/piętro).</li>



<li><strong>Rozmieszczenie czujników:</strong>&nbsp;Należy zaplanować miejsce montażu czujnika zewnętrznego oraz punkt, w którym będzie zamontowany główny czujnik pokojowy (zwykle w reprezentatywnym pomieszczeniu, np. salonie, z dala od bezpośrednich źródeł ciepła i przeciągów).</li>
</ol>



<p class="wp-block-paragraph"><strong>Pomijanie tego etapu i traktowanie automatyki jako &#8222;dokupionego później gadżetu&#8221; prowadzi do suboptymalnej pracy systemu, mniejszych oszczędności i problemów z osiągnięciem komfortu.</strong></p>



<h2 class="wp-block-heading">Wyliczenia i przykłady techniczne w praktyce.</h2>



<p class="wp-block-paragraph">Aby zobrazować działanie&nbsp;<strong>regulatora pogodowego</strong>, przeprowadźmy symulację dla przykładowego domu.</p>



<p class="wp-block-paragraph"><strong>Dane budynku:</strong>&nbsp;Dom energooszczędny o zapotrzebowaniu na moc grzewczą 40 W/m². Powierzchnia ogrzewana: 150 m². Całkowita moc potrzebna: 150 m² * 40 W/m² = 6 kW.<br>Zakładamy, że projektowa temperatura zewnętrzna to -20°C, a wewnętrzna +21°C. Zaprojektowana temperatura zasilania podłogówki to 35°C, a powrotu 28°C.</p>



<p class="wp-block-paragraph"><strong>Krzywa grzewcza:</strong>&nbsp;Przyjęto nachylenie SP=0.8. Dla uproszczenia, funkcja jest liniowa.<br>Wzór przybliżony:&nbsp;<code>T_zasilania = T_wewn - ( (T_wewn - T_zewn) / (T_wewn_proj - T_zewn_proj) ) * SP * (T_wewn_proj - T_zewn_proj)</code><br>Dla naszego przypadku upraszcza się do:&nbsp;<code>T_zasilania = 21 - ( (21 - T_zewn) / (21 - (-20)) ) * 0.8 * (21 - (-20)) = 21 - 0.8*(21 - T_zewn)</code></p>



<p class="wp-block-paragraph"><strong>Obliczenia dla wybranych temperatur zewnętrznych:</strong></p>



<div class="table-responsive-wrapper">

  <h3 class="table-title">
    Przykładowe obliczenia temperatury zasilania dla krzywej grzewczej
  </h3>

  <div class="table-scroll">
    <table class="config-table">
      <thead>
        <tr>
          <th>Temperatura zewnętrzna [°C]</th>
          <th>Obliczenia: 21 − 0.8 × (21 − T<sub>zewn</sub>)</th>
          <th>Temperatura zasilania zadana [°C]</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td data-label="Temperatura zewnętrzna"><strong>+10°C</strong> (łagodna jesień)</td>
          <td data-label="Obliczenia">21 − 0.8 × 11 = 21 − 8.8</td>
          <td data-label="Temperatura zasilania"><strong>12.2</strong></td>
        </tr>

        <tr>
          <td data-label="Temperatura zewnętrzna"><strong>0°C</strong></td>
          <td data-label="Obliczenia">21 − 0.8 × 21 = 21 − 16.8</td>
          <td data-label="Temperatura zasilania">
            <strong>4.2</strong><br>
            <small>(sterownik stosuje limit dolny, np. 25°C)</small>
          </td>
        </tr>

        <tr>
          <td data-label="Temperatura zewnętrzna"><strong>−5°C</strong></td>
          <td data-label="Obliczenia">21 − 0.8 × 26 = 21 − 20.8</td>
          <td data-label="Temperatura zasilania">
            <strong>0.2</strong><br>
            <small>(limit dolny, np. 28°C)</small>
          </td>
        </tr>

        <tr>
          <td data-label="Temperatura zewnętrzna"><strong>−10°C</strong></td>
          <td data-label="Obliczenia">21 − 0.8 × 31 = 21 − 24.8</td>
          <td data-label="Temperatura zasilania">
            <strong>−3.8</strong><br>
            <small>(limit dolny, korekcja w praktyce)</small>
          </td>
        </tr>

        <tr>
          <td data-label="Temperatura zewnętrzna"><strong>−15°C</strong></td>
          <td data-label="Obliczenia">21 − 0.8 × 36 = 21 − 28.8</td>
          <td data-label="Temperatura zasilania">
            <strong>−7.8</strong><br>
            <small>(limit, korekcja)</small>
          </td>
        </tr>

        <tr>
          <td data-label="Temperatura zewnętrzna"><strong>−20°C</strong> (projektowa)</td>
          <td data-label="Obliczenia">21 − 0.8 × 41 = 21 − 32.8</td>
          <td data-label="Temperatura zasilania">
            <strong>−11.8</strong><br>
            <small>
              Sama krzywa niewystarczająca – konieczna korekta lub inne nachylenie,
              aby osiągnąć projektowe <strong>35°C</strong>.
            </small>
          </td>
        </tr>
      </tbody>
    </table>
  </div>

</div>

<style>
.table-responsive-wrapper {
  max-width: 1000px;
  margin: 40px auto;
  font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;
}

.table-title {
  text-align: center;
  margin-bottom: 20px;
  font-size: 22px;
  font-weight: 600;
}

.table-scroll {
  overflow-x: auto;
}

.config-table {
  width: 100%;
  border-collapse: collapse;
  background: #ffffff;
  box-shadow: 0 2px 8px rgba(0,0,0,.06);
  border-radius: 8px;
  overflow: hidden;
}

.config-table th,
.config-table td {
  padding: 14px 16px;
  text-align: left;
  vertical-align: top;
}

.config-table thead {
  background: #f4f6f8;
}

.config-table th {
  font-weight: 600;
  font-size: 14px;
  color: #333;
}

.config-table tbody tr {
  border-top: 1px solid #e5e5e5;
}

.config-table td {
  font-size: 14px;
  color: #444;
}

.config-table small {
  color: #777;
  font-size: 12px;
}

/* 📱 Widok mobilny – karty */
@media (max-width: 768px) {
  .config-table thead {
    display: none;
  }

  .config-table,
  .config-table tbody,
  .config-table tr,
  .config-table td {
    display: block;
    width: 100%;
  }

  .config-table tr {
    margin-bottom: 20px;
    background: #f9fafb;
    border-radius: 8px;
    padding: 10px;
  }

  .config-table td {
    padding: 8px 10px;
    border: none;
  }

  .config-table td::before {
    content: attr(data-label);
    display: block;
    font-weight: 600;
    color: #333;
    margin-bottom: 4px;
    font-size: 13px;
  }
}
</style>



<p class="wp-block-paragraph"><strong>Wnioski z obliczeń:</strong></p>



<ul class="wp-block-list">
<li>Powyższe wyliczenia pokazują, że teoretyczna krzywa daje nieracjonalnie niskie wartości. W praktyce, przy konfiguracji, instalator ustawia krzywę tak, by dla temperatury projektowej (-20°C) dawała temperaturę projektową zasilania (35°C). Wymaga to&nbsp;<strong>przesunięcia</strong>&nbsp;całej krzywej w górę.</li>



<li>To właśnie dlatego konfiguracja na sucho, bez znajomości budynku, jest niemożliwa. Potrzebne są&nbsp;<strong>korekty ręczne</strong>&nbsp;lub zastosowanie funkcji auto-adaptacji, którą oferują zaawansowane sterowniki (uczą się one, jak budynek reaguje, i same korygują krzywą).</li>
</ul>



<h2 class="wp-block-heading">Zaawansowane funkcje nowoczesnych sterowników.</h2>



<p class="wp-block-paragraph">Najnowsze&nbsp;<strong>regulatory pogodowe</strong>&nbsp;to zaawansowane komputery przemysłowe. Oto ich kluczowe funkcje:</p>



<ul class="wp-block-list">
<li><strong>Sterowanie strefowe (multikrzywe):</strong>&nbsp;Jeden sterownik może obsługiwać 2, 3 lub więcej niezależnych obiegów grzewczych (stref), każdy z własną krzywą grzewczą. Idealne dla domów z częścią dzienną i nocną, czy z ogrzewaniem podłogowym i grzejnikowym.</li>



<li><strong>Algorytm adaptacyjnego czasu nagrzewania (Adaptive Control):</strong>&nbsp;Sterownik nieustannie analizuje, jak szybko budynek się nagrzewa i wychładza. Dzięki temu precyzyjnie oblicza, kiedy należy włączyć ogrzewanie przed np. porannym wzrostem żądanej temperatury, aby cel został osiągnięty dokładnie o określonej godzinie, bez zbędnego wcześniejszego marnowania energii.</li>



<li><strong>Moduł komunikacji i integracji:</strong>&nbsp;Wbudowany moduł&nbsp;<strong>Wi-Fi, Ethernet lub GSM</strong>&nbsp;umożliwia pełną kontrolę z poziomu smartfona, integrację z systemami&nbsp;<strong>smart home</strong>&nbsp;(np. KNX, Modbus) oraz zdalny serwis przez instalatora.</li>



<li><strong>Zarządzanie pompą ciepła:</strong>&nbsp;Specjalistyczne sterowniki mogą bezpośrednio komunikować się z pompą ciepła, optymalizując jej pracę i unikając zbędnych załączeń (tzw. optymalizacja śladu węglowego).</li>



<li><strong>Monitoring i logowanie danych:</strong>&nbsp;Możliwość śledzenia historii temperatur, zużycia energii i działania systemu w celu dalszej optymalizacji.</li>
</ul>



<h2 class="wp-block-heading">FAQ – najczęściej zadawane pytania.</h2>



<div class="schema-faq wp-block-yoast-faq-block"><div class="schema-faq-section" id="faq-question-1767869687745"><strong class="schema-faq-question"><strong>Czym różni się sterownik pogodowy od zwykłego termostatu?</strong></strong> <p class="schema-faq-answer">Sterownik pogodowy reaguje na temperaturę zewnętrzną i działa z wyprzedzeniem, a termostat pokojowy reaguje dopiero na spadek lub wzrost temperatury wewnątrz pomieszczenia.</p> </div> <div class="schema-faq-section" id="faq-question-1767869700125"><strong class="schema-faq-question"><strong>Czy sterownik (regulator) pogodowy jest konieczny przy ogrzewaniu podłogowym?</strong></strong> <p class="schema-faq-answer">Nie jest obowiązkowy, ale w praktyce to kluczowy element zapewniający stabilny komfort, ochronę instalacji i niższe koszty eksploatacji.</p> </div> <div class="schema-faq-section" id="faq-question-1767869735075"><strong class="schema-faq-question"><strong>Co to jest krzywa grzewcza i dlaczego jest tak ważna?</strong></strong> <p class="schema-faq-answer">Krzywa grzewcza określa zależność między temperaturą zewnętrzną a temperaturą zasilania instalacji. Jej prawidłowe ustawienie decyduje o efektywności całego systemu.</p> </div> <div class="schema-faq-section" id="faq-question-1767869743915"><strong class="schema-faq-question"><strong>Czy jeden sterownik pogodowy może obsługiwać kilka stref grzewczych?</strong></strong> <p class="schema-faq-answer">Tak, nowoczesne sterowniki umożliwiają sterowanie wieloma obiegami, z osobnymi krzywymi grzewczymi dla każdej strefy domu.</p> </div> <div class="schema-faq-section" id="faq-question-1767869756239"><strong class="schema-faq-question"><strong>Czy regulator pogodowy współpracuje z pompą ciepła?</strong></strong> <p class="schema-faq-answer">Tak, i właśnie w takim połączeniu osiąga najwyższą efektywność, ponieważ umożliwia pracę instalacji na możliwie niskich temperaturach zasilania.</p> </div> </div>



<h2 class="wp-block-heading">Podsumowanie.</h2>



<p class="wp-block-paragraph"><strong>Podsumowując</strong>,&nbsp;<strong>sterownik (regulator) pogodowy</strong>&nbsp;nie jest luksusem, ale&nbsp;<strong>niezbędnym elementem nowoczesnego, efektywnego i komfortowego wodnego ogrzewania podłogowego</strong>. Jego prawidłowy dobór, profesjonalny montaż i precyzyjna konfiguracja to inwestycja, która zwraca się przez lata w postaci stabilnego mikroklimatu, bezobsługowej pracy i znacząco obniżonych rachunków za energię. To technologia, która pozwala systemowi grzewczemu &#8222;myśleć&#8221; i działać w perfekcyjnej harmonii z otaczającym nas środowiskiem.</p>



<figure class="wp-block-embed aligncenter is-type-wp-embed is-provider-projekt-ogrzewania wp-block-embed-projekt-ogrzewania"><div class="wp-block-embed__wrapper">
<blockquote class="wp-embedded-content" data-secret="vw5BAcDfj0"><a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Projekt instalacji ogrzewania podłogowego &#8211; podłogówki</a></blockquote><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8222;Projekt instalacji ogrzewania podłogowego &#8211; podłogówki&#8221; &#8212; Projekt Ogrzewania" src="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/embed/#?secret=8eASP44XyY#?secret=vw5BAcDfj0" data-secret="vw5BAcDfj0" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div></figure>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/sterownik-regulator-pogodowy/">Sterownik (regulator) pogodowy.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://projekt-ogrzewania.pl/sterownik-regulator-pogodowy/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Ogrzewanie podłogowe a pasywne zyski ciepła.</title>
		<link>https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-a-pasywne-zyski-ciepla/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Tue, 30 Dec 2025 11:28:18 +0000</pubDate>
				<category><![CDATA[Automatyka domowa]]></category>
		<category><![CDATA[Automatyka grzewcza]]></category>
		<category><![CDATA[Budownictwo energooszczędne]]></category>
		<category><![CDATA[Dom pasywny]]></category>
		<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[HVAC]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Komfort cieplny]]></category>
		<category><![CDATA[Komfort w domu]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Pompy ciepła]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Technologie budowlane]]></category>
		<category><![CDATA[Technologie grzewcze]]></category>
		<category><![CDATA[bezwładność cieplna]]></category>
		<category><![CDATA[bilans cieplny]]></category>
		<category><![CDATA[energia słoneczna]]></category>
		<category><![CDATA[komfort termiczny]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[pasywne zyski ciepła]]></category>
		<category><![CDATA[podłogówka]]></category>
		<category><![CDATA[pompy ciepła]]></category>
		<category><![CDATA[projekt instalacji]]></category>
		<category><![CDATA[sterowanie strefowe]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3004</guid>

					<description><![CDATA[<p>Nowoczesne budownictwo coraz częściej wykorzystuje darmową energię słoneczną, ale jej niewłaściwe połączenie z instalacją grzewczą potrafi przynieść więcej szkód niż korzyści. Ogrzewanie podłogowe a pasywne zyski ciepła to temat kluczowy dla komfortu i efektywności energetycznej budynku. W artykule pokazujemy, jak promieniowanie słoneczne wpływa na bezwładną wylewkę, dlaczego dochodzi do przegrzewania pomieszczeń oraz jak dzięki świadomemu projektowi i inteligentnemu sterowaniu zamienić słońce w realne wsparcie systemu grzewczego, a nie jego wroga.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-a-pasywne-zyski-ciepla/">Ogrzewanie podłogowe a pasywne zyski ciepła.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Właściwe zarządzanie <strong>pasywnymi zyskami ciepła</strong> stanowi jeden z najważniejszych, a często niedocenianych, aspektów projektowania i eksploatacji <strong>wodnego ogrzewania podłogowego</strong>. System ten, charakteryzujący się dużą bezwładnością termiczną i niskotemperaturowym źródłem, w wyjątkowy sposób reaguje na dodatkowe, darmowe dopływy energii, takie jak <strong>promieniowanie słoneczne</strong> przez przeszklenia od strony południowej. </p>



<p class="wp-block-paragraph">Ignorowanie tego zjawiska prowadzi nie tylko do dyskomfortu i przegrzewania pomieszczeń, lecz także do znaczącego spadku efektywności energetycznej całego systemu grzewczego. Niniejszy artykuł stanowi techniczne i praktyczne kompendium wiedzy na temat harmonijnej integracji <strong><a href="https://projekt-ogrzewania.pl">ogrzewania podłogowego</a></strong> z <strong>pasywnymi zyskami słonecznymi</strong>.</p>



<h2 class="wp-block-heading">Fizyka zjawiska: Dlaczego słońce ma tak istotny wpływ na podłogówkę?</h2>



<p class="wp-block-paragraph">Aby zrozumieć skalę wyzwania, należy wniknąć w samą istotę działania obu systemów: pasywnego pozyskiwania energii i aktywnego ogrzewania płaszczyznowego.</p>



<p class="wp-block-paragraph"><strong>Wodne ogrzewanie podłogowe</strong> to system o wysokiej mocy akumulacyjnej. Ciepło transportowane przez wodę w pętlach rur oddawane jest do masywnej <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/">wylewki betonowej</a> (jastrychu), która pełni rolę grzejnika i – co kluczowe – <strong>akumulatora ciepła</strong>. Typowa wylewka o grubości 6-8 cm i gęstości ok. 2100 kg/m³ magazynuje ogromne ilości energii, co zapewnia równomierny rozkład temperatury i dużą bezwładność. System reaguje z opóźnieniem na zmiany zapotrzebowania.</p>



<p class="wp-block-paragraph"><strong>Pasywne zyski ciepła od południa</strong>&nbsp;to w głównej mierze energia promieniowania słonecznego krótkofalowego, które przenika przez przeszklenia. Padając na podłogę, ściany i meble, zamienia się w promieniowanie długofalowe (cieplne), ogrzewając masywną konstrukcję budynku. W przypadku podłogi z ogrzewaniem płaszczyznowym, mamy do czynienia z&nbsp;<strong>superpozycją dwóch strumieni cieplnych</strong>:</p>



<ol start="1" class="wp-block-list">
<li>Strumienia od <strong>systemu aktywnego</strong> (rura → jastrych).</li>



<li>Strumienia od <strong>systemu pasywnego</strong> (słońce → jastrych).</li>
</ol>



<p class="wp-block-paragraph">Efektem jest wzrost&nbsp;<strong>temperatury efektywnej jastrychu</strong>&nbsp;ponad wartość projektową, co natychmiast przekłada się na wzrost temperatury powietrza w pomieszczeniu. Bezwładność systemu sprawia, że nawet po zachodzie słońca, nagrzana wylewka będzie oddawać ciepło przez wiele godzin, potencjalnie prowadząc do&nbsp;<strong>przegrzania nocnego</strong>.</p>



<h2 class="wp-block-heading">Zapotrzebowanie na moc cieplną –  wzór.</h2>



<p class="wp-block-paragraph">Przedstawiony wzór pokazuje, że <strong>zapotrzebowanie na moc cieplną</strong> nie wynika wyłącznie ze strat budynku, ale jest zawsze pomniejszane o <strong>pasywne i wewnętrzne zyski ciepła</strong>. W praktyce oznacza to, że im większe zyski od słońca, urządzeń czy obecności ludzi, tym mniejsza moc musi być dostarczona przez instalację grzewczą. To właśnie na tej zasadzie projektuje się nowoczesne ogrzewanie podłogowe – nie „na zapas”, lecz w oparciu o realny bilans energetyczny, zgodny z normą <strong>PN-EN 12831</strong>, co bezpośrednio przekłada się na komfort i niższe koszty eksploatacji.</p>



<div style="
  border-left: 6px solid #1e73be;
  background: #f4f8fc;
  padding: 20px;
  margin: 30px 0;
  border-radius: 6px;
">

  <h3 style="margin-top:0;">
    Zapotrzebowanie na moc cieplną – wzór
  </h3>

  <p style="font-size:18px; font-weight:bold;">
    &Phi;<sub>ogrz</sub> = &Phi;<sub>straty</sub> − &Phi;<sub>zyski</sub>
  </p>

  <p>
    Wzór określa <strong>zapotrzebowanie na moc cieplną netto</strong>
    (strumień cieplny) potrzebną do ogrzania budynku lub konkretnego pomieszczenia.
  </p>

  <ul>
    <li>
      <strong>&Phi;<sub>ogrz</sub></strong> – projektowe obciążenie cieplne
      [W] / [kW]
    </li>
    <li>
      <strong>&Phi;<sub>straty</sub></strong> – straty przez przenikanie
      i wentylację
    </li>
    <li>
      <strong>&Phi;<sub>zyski</sub></strong> – zyski wewnętrzne i zewnętrzne
      (ludzie, urządzenia, słońce)
    </li>
  </ul>

  <p style="margin-bottom:0;">
    Podstawa do doboru źródła ciepła zgodnie z
    <strong>PN-EN 12831</strong>.
  </p>

</div>



<h2 class="wp-block-heading">Bilans cieplny pomieszczenia: Jak obliczyć i uwzględnić zyski pasywne?</h2>



<p class="wp-block-paragraph">Projektowanie systemu grzewczego bez rzetelnego bilansu cieplnego jest jak żeglowanie bez mapy. W kontekście&nbsp;<strong>zysków słonecznych</strong>&nbsp;kluczowe jest ich kwantyfikowanie.</p>



<p class="wp-block-paragraph"><strong>Podstawowy bilans mocy cieplnej dla pomieszczenia wyraża się wzorem:</strong><br><code>Φ_ogrz = Φ_straty - Φ_zyski</code><br>Gdzie:</p>



<ul class="wp-block-list">
<li><code>Φ_ogrz</code> – wymagana moc grzewcza systemu aktywnego [W]</li>



<li><code>Φ_straty</code> – straty ciepła przez przenikanie i wentylację [W]</li>



<li><code>Φ_zyski</code> – zyski ciepła (słoneczne, bytowe, od urządzeń) [W]</li>
</ul>



<p class="wp-block-paragraph"><strong>Zyski słoneczne (Φ_zyski,słoneczne)</strong>&nbsp;oblicza się ze wzoru:<br><code>Φ_zyski,słoneczne = A_szkła * g * I * F_sh</code></p>



<ul class="wp-block-list">
<li><code>A_szkła</code> – powierzchnia przeszklenia odbiorczego (południowego) [m²]</li>



<li><code>g</code> – współczynnik przepuszczalności energii całkowitej szyby (dla szyb niskoemisyjnych ≈ 0.5)</li>



<li><code>I</code> – średnie miesięczne nasłonecznienie na płaszczyznę pionową od strony południowej [W/m²] (dane klimatologiczne, np. dla Warszawy w styczniu to ok. 60-80 W/m², w marcu już 120-150 W/m²)</li>



<li><code>F_sh</code> – współczynnik redukcji dla zacienień (żaluzje, okapy, drzewa) [0-1]</li>
</ul>



<p class="wp-block-paragraph"><strong>Przykład obliczeniowy:</strong><br>Pomieszczenie o stratach&nbsp;<code>Φ_straty = 1200 W</code>&nbsp;ma duże okno południowe o powierzchni&nbsp;<code>A_szkła = 8 m²</code>. Dla słonecznego dnia w marcu (<code>I = 140 W/m²</code>), szyby o&nbsp;<code>g = 0.5</code>&nbsp;i braku zacienień (<code>F_sh = 1</code>) otrzymujemy:<br><code>Φ_zyski,słoneczne = 8 * 0.5 * 140 * 1 = 560 W</code><br>Wymagana moc systemu grzewczego w tym momencie spada do:<br><code>Φ_ogrz = 1200 W - 560 W = 640 W</code></p>



<p class="wp-block-paragraph"><strong>Wniosek praktyczny:</strong> W tym konkretnym momencie system grzewczy musi być zdolny do <strong>redukcji swojej mocy o ponad 46%</strong>. Dla systemu podłogowego sterowanego jedynie czujnikiem temperatury podłogi (ogranicznikiem) jest to niemożliwe do osiągnięcia bez przegrzania.</p>



<h2 class="wp-block-heading">Zaawansowane strategie sterowania: Serce optymalnego systemu.</h2>



<p class="wp-block-paragraph">Klasyczne, statyczne sterowanie temperaturą zasilania w funkcji temperatury zewnętrznej (kompensacja pogodowa) jest niewystarczające. Niezbędne jest wdrożenie&nbsp;<strong>inteligentnego, wielowymiarowego sterowania z pętlą sprzężenia zwrotnego z pomieszczenia</strong>.</p>



<h3 class="wp-block-heading">1. Indywidualne sterowanie strefowe z czujnikami powietrznymi.</h3>



<p class="wp-block-paragraph">Podstawą jest podział instalacji na&nbsp;<strong>strefy termiczne</strong>&nbsp;pokrywające się z pomieszczeniami lub grupami pomieszczeń o podobnej charakterystyce (ekspozycja, funkcja). Każda strefa musi posiadać:</p>



<ul class="wp-block-list">
<li><strong>Własny zawór mieszający lub elektrozawór</strong> na rozdzielaczu.</li>



<li><strong><a href="https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/">Sterownik pokojowy</a></strong> z czujnikiem temperatury powietrza, umieszczonym w reprezentatywnym miejscu, z dala od bezpośredniego nasłonecznienia i przeciągów.</li>



<li><strong>Czujnik temperatury podłogi</strong> jako zabezpieczenie przed przekroczeniem maksymalnej dopuszczalnej temperatury powierzchni (zwykle 29°C w strefie stałego pobytu, 35°C w łazience).</li>
</ul>



<p class="wp-block-paragraph">Algorytm pracy: Gdy&nbsp;<strong>promieniowanie słoneczne</strong>&nbsp;podniesie temperaturę powietrza powyżej wartości zadanej, sterownik zamyka zawór dla danej strefy,&nbsp;<strong>całkowicie wyłączając dopływ ciepłej wody</strong>&nbsp;do pętli podłogowej. System wykorzystuje wyłącznie&nbsp;<strong>darmową energię słoneczną</strong>.</p>



<h3 class="wp-block-heading">2. Kompensacja pogodowa z korektą słoneczną (Solar Gain Compensation).</h3>



<p class="wp-block-paragraph">To zaawansowana ewolucja standardowej krzywej grzewczej. Oprócz temperatury zewnętrznej, regulator centralny (np. sterownik <a href="https://projekt-ogrzewania.pl/category/pompy-ciepla/">pompy ciepła</a> lub kotła) przyjmuje sygnał z <strong>zewnętrznego czujnika nasłonecznienia (pyranometru)</strong>.</p>



<ul class="wp-block-list">
<li><strong>Zasada działania:</strong> Pyranometr mierzy natężenie promieniowania słonecznego padającego na płaszczyznę poziomą lub pionową [W/m²]. Gdy wartość przekroczy ustalony próg, sterownik <strong>obniża zadaną temperaturę zasilania</strong> dla wszystkich lub wybranych (południowych) obiegów, <strong>wyprzedzając</strong> wzrost temperatury w pomieszczeniach. Jest to działanie <strong>prognostyczne</strong>, a nie reaktywne.</li>
</ul>



<h3 class="wp-block-heading">3. Regulatory z algorytmami adaptacyjnymi (PID z adaptacją).</h3>



<p class="wp-block-paragraph">Najbardziej wyrafinowane rozwiązanie. Sterownik nie tylko reaguje na aktualne odchylenie temperatury, ale analizuje jej trendy w czasie, uwzględniając&nbsp;<strong>bezwładność systemu</strong>&nbsp;i&nbsp;<strong>charakterystykę budynku</strong>. Na podstawie historii cykli grzania (np. jak szybko rośnie temperatura po otwarciu zaworu) regulator „uczy się”, jak wcześniej zareagować na przewidywane&nbsp;<strong>zyski ciepła</strong>, minimalizując wahania temperatury. Działa to w obie strony – zarówno przy nagrzewaniu, jak i przy wykorzystaniu&nbsp;<strong>zysków pasywnych</strong>.</p>



<h2 class="wp-block-heading">Projektowanie instalacji  z myślą o zyskach pasywnych.</h2>



<p class="wp-block-paragraph">Samoregulujące właściwości&nbsp;<strong>ogrzewania podłogowego</strong>&nbsp;są wspomagane przez poprawnie zaprojektowaną i zrównoważoną instalację hydrauliczną.</p>



<ul class="wp-block-list">
<li><strong><a href="https://projekt-ogrzewania.pl/kategoria-produktu/rozdzielacze-do-ogrzewania-podlogowego/">Rozdzielacze</a> z przepływomierzami:</strong> Konieczność dla każdej strefy. Umożliwiają precyzyjne ustawienie i odczyt przepływu wody, co jest kluczowe dla zapewnienia wymaganej mocy grzewczej i poprawnej pracy zaworów termostatycznych podczas ich modulacji.</li>



<li><strong>Zawory RTL (Return Temperature Limiter) vs. zawory mieszające z siłownikiem:</strong> W małych strefach (np. łazienka) czasem stosuje się zawory RTL, regulujące przepływ w celu utrzymania zadanej temperatury powrotu. Są one <strong>niewystarczające dla stref z dużymi zyskami</strong>, gdyż nie reagują na temperaturę powietrza. <strong>Zawór mieszający z siłownikiem sterowanym pokojowym regulatorem</strong> to jedyne poprawne rozwiązanie.</li>



<li><strong>Układy kaskadowe i buforowe:</strong> W systemach z pompą ciepła szczególnie ważne jest zastosowanie zasobnika buforowego. Gdy <strong>zyski słoneczne</strong> wyłączają ogrzewanie w południowych strefach, pompa ciepła może nadal pracować z optymalną wydajnością, ładując bufor, z którego ciepło pobiorą strefy północne. Zapobiega to niekorzystnej pracy z częstymi startami/stopami.</li>
</ul>



<h3 class="wp-block-heading">Krytyczny element: Projekt ogrzewania podłogowego w kontekście zysków pasywnych.</h3>



<p class="wp-block-paragraph">Na etapie <strong><a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">projektowania ogrzewania podłogowego</a></strong> uwzględnienie <strong>pasywnych zysków ciepła</strong> nie jest opcją, a <strong>obowiązkiem</strong> inżyniera. Błąd na tym etapie jest później bardzo kosztowny lub trudny do skorygowania.</p>



<ol start="1" class="wp-block-list">
<li><strong>Symulacja dynamiczna:</strong> Zaawansowane projekty powinny opierać się nie na uproszczonych obliczeniach miesięcznych, a na <strong>symulacji dynamicznej budynku</strong> (np. w programie typu ENERGIS, TRNSYS). Pozwala ona przeanalizować zachowanie systemu w cyklu dobowym i rocznym, modelując zmienne <strong>nasłonecznienie</strong>, zachmurzenie, użytkowanie. Daje odpowiedź na pytania: jak często występuje ryzyko przegrzania? Jaka jest optymalna bezwładność termiczna podłogi w tym konkretnym budynku?</li>



<li><strong>Ścisła współpraca z architektem:</strong> Projektant instalacji <strong>musi</strong> współpracować z architektem nad:
<ul class="wp-block-list">
<li><strong>Współczynnikiem przeszklenia:</strong> Optymalny stosunek powierzchni okien do podłogi od strony południowej.</li>



<li><strong>Parametrami szyb:</strong> Wybór pakietów o odpowiednim współczynniku <code>g</code> (przepuszczalności energii) i niskim współczynniku przenikania ciepła <code>U</code>. Czasem celowo dobiera się szyby o nieco niższym <code>g</code>, aby zredukować skrajne <strong>zyski letnie</strong>, akceptując nieco niższe <strong>zyski zimowe</strong>.</li>



<li><strong>Elementów zacieniających:</strong> Projekt stałych (okapy, daszki) lub zewnętrznych (żaluzje, markizy) systemów zacieniających, które redukują <strong>zyski słoneczne</strong> latem, a pozwalają na nie zimą pod niskim kątem.</li>
</ul>
</li>



<li><strong>Dobór mocy i rozstawu pętli:</strong> W strefach południowych, po odjęciu obliczeniowych <strong>zysków pasywnych</strong>, zapotrzebowanie na moc aktywnego ogrzewania może być znacznie niższe. Może to pozwolić na <strong>zwiększenie <a href="https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/">rozstawu rur</a></strong> (np. z 15 cm do 20 cm) lub obniżenie projektowej temperatury zasilania, co zwiększa sprawność źródła ciepła (pompy ciepła, kondensacyjnego kotła gazowego).</li>
</ol>



<h2 class="wp-block-heading">FAQ – najczęstsze pytania.</h2>



<div class="schema-faq wp-block-yoast-faq-block"><div class="schema-faq-section" id="faq-question-1767087543630"><strong class="schema-faq-question"><strong>Czy pasywne zyski ciepła mogą powodować przegrzewanie przy ogrzewaniu podłogowym?</strong></strong> <p class="schema-faq-answer">Tak. Duża bezwładność jastrychu sprawia, że dodatkowe zyski słoneczne kumulują się w podłodze i mogą podnosić temperaturę jeszcze długo po zachodzie słońca.</p> </div> <div class="schema-faq-section" id="faq-question-1767087563068"><strong class="schema-faq-question"><strong>Czy sama krzywa grzewcza wystarczy do kontroli zysków słonecznych?</strong></strong> <p class="schema-faq-answer">Nie. Kompensacja pogodowa bez informacji z pomieszczeń nie reaguje na promieniowanie słoneczne, dlatego konieczne jest sterowanie strefowe lub adaptacyjne.</p> </div> <div class="schema-faq-section" id="faq-question-1767087580754"><strong class="schema-faq-question"><strong>Jakie sterowanie najlepiej współpracuje z pasywnymi zyskami ciepła?</strong></strong> <p class="schema-faq-answer">Najlepsze efekty dają systemy strefowe z czujnikami temperatury powietrza oraz regulatory adaptacyjne, które „uczą się” reakcji budynku.</p> </div> <div class="schema-faq-section" id="faq-question-1767087619827"><strong class="schema-faq-question"><strong>Czy projekt ogrzewania podłogowego powinien uwzględniać orientację budynku?</strong></strong> <p class="schema-faq-answer">Zdecydowanie tak. Strefy południowe wymagają innego doboru mocy, rozstawu rur i strategii sterowania niż północne.</p> </div> <div class="schema-faq-section" id="faq-question-1767087639266"><strong class="schema-faq-question"><strong>Czy pasywne zyski ciepła zawsze są korzystne zimą?</strong></strong> <p class="schema-faq-answer">Tak, pod warunkiem że są kontrolowane. Przy dobrze zaprojektowanym systemie obniżają zużycie energii i koszty ogrzewania, zamiast powodować dyskomfort.</p> </div> </div>



<h2 class="wp-block-heading">Podsumowanie: Synergia zamiast konkurencji.</h2>



<p class="wp-block-paragraph"><strong>Pasywne zyski ciepła</strong>&nbsp;od strony południowej nie są wrogiem&nbsp;<strong>wodnego ogrzewania podłogowego</strong>&nbsp;– są jego&nbsp;<strong>darmowym uzupełnieniem</strong>. Kluczem do sukcesu jest uznanie tego zjawiska za&nbsp;<strong>równoprawny element systemu grzewczego</strong>&nbsp;już na etapie koncepcji budynku i projektu instalacji.</p>



<p class="wp-block-paragraph">Finalna efektywność zależy od połączenia trzech filarów:</p>



<ol start="1" class="wp-block-list">
<li><strong>Świadomej architektury</strong> pasywnej, kontrolującej dopływ energii słonecznej.</li>



<li><strong>Precyzyjnego projektu instalacji</strong>, z podziałem na strefy i odpowiednio dobranymi parametrami.</li>



<li><strong>Zaawansowanego, wieloparametrowego sterowania</strong>, które potrafi w czasie rzeczywistym integrować pracę aktywnego źródła ciepła z kaprysami pogody.</li>
</ol>



<p class="wp-block-paragraph">System tak zaprojektowany nie tylko gwarantuje najwyższy komfort termiczny, pozbawiony przegrzewania i wychłodzeń, ale też osiąga najniższe możliwe koszty eksploatacji, maksymalnie wykorzystując <strong>bezpłatną energię słońca</strong> i minimalizując pracę konwencjonalnych źródeł ciepła. To inwestycja w inteligentną, przyszłościową i odpowiedzialną technologię grzewczą.</p>



<figure class="wp-block-embed aligncenter is-type-wp-embed is-provider-projekt-ogrzewania wp-block-embed-projekt-ogrzewania"><div class="wp-block-embed__wrapper">
<blockquote class="wp-embedded-content" data-secret="GhiiEpqj7Y"><a href="https://projekt-ogrzewania.pl/produkt/projekt-ogrzewania-podlogowego-do-150-m2/">Projekt ogrzewania podłogowego &#8211; do 150 m2</a></blockquote><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8222;Projekt ogrzewania podłogowego &#8211; do 150 m2&#8221; &#8212; Projekt Ogrzewania" src="https://projekt-ogrzewania.pl/produkt/projekt-ogrzewania-podlogowego-do-150-m2/embed/#?secret=gFK2odfV0b#?secret=GhiiEpqj7Y" data-secret="GhiiEpqj7Y" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div></figure>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-a-pasywne-zyski-ciepla/">Ogrzewanie podłogowe a pasywne zyski ciepła.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Sterowanie strefowe ogrzewaniem &#8211; czy warto?</title>
		<link>https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Mon, 29 Dec 2025 11:58:52 +0000</pubDate>
				<category><![CDATA[Automatyka domowa]]></category>
		<category><![CDATA[Automatyka grzewcza]]></category>
		<category><![CDATA[Budowa domu]]></category>
		<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Energooszczędny dom]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Komfort cieplny]]></category>
		<category><![CDATA[Nowoczesne technologie grzewcze]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradniki dla inwestorów]]></category>
		<category><![CDATA[Porady dla inwestorów]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[automatyka grzewcza]]></category>
		<category><![CDATA[inteligentny dom]]></category>
		<category><![CDATA[komfort cieplny]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędność energii]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[siłowniki na rozdzielacz]]></category>
		<category><![CDATA[sterowanie strefowe ogrzewaniem]]></category>
		<category><![CDATA[termostaty pokojowe]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2994</guid>

					<description><![CDATA[<p>Inżynierski Punkt Widzenia Sterowanie strefowe ogrzewaniem – czy warto? Instalujesz nowoczesną pompę ciepła za kilkadziesiąt tysięcy złotych, a parametrami w całym domu ma sterować jeden tani termostat zawieszony w salonie? To prosta droga do przegrzanej sypialni, zimnej łazienki i zrujnowania żywotności sprężarki. Szybka odpowiedź: Czy warto? Zdecydowanie tak. Pełne sterowanie strefowe w domu powyżej 80&#8230;&#160;<a href="https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/" rel="bookmark">Dowiedz się więcej &#187;<span class="screen-reader-text">Sterowanie strefowe ogrzewaniem &#8211; czy warto?</span></a></p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/">Sterowanie strefowe ogrzewaniem &#8211; czy warto?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
:root {
    --rk-intro-dark: #0f172a;
    --rk-intro-blue: #0284c7;
    --rk-intro-light-blue: #f0f9ff;
    --rk-intro-green: #10b981;
    --rk-intro-red: #ef4444;
    --rk-intro-gray: #64748b;
    --rk-intro-border: #e2e8f0;
    --rk-intro-bg: #ffffff;
    --rk-intro-surface: #f8fafc;
    --rk-intro-accent: #38bdf8;
}

.rk-intro-widget {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
    background: var(--rk-intro-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.15);
    border: 1px solid var(--rk-intro-blue);
    overflow: hidden;
}

/* Sekcja Nagłówkowa - Mocny Hook */
.rk-intro-header {
    padding: 45px 50px 40px;
    background: linear-gradient(135deg, var(--rk-intro-dark) 0%, #1e293b 100%);
    color: #ffffff;
    text-align: center;
    border-bottom: 4px solid var(--rk-intro-blue);
    position: relative;
}

.rk-intro-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(56, 189, 248, 0.2);
    color: var(--rk-intro-accent);
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(56, 189, 248, 0.3);
}

.rk-intro-header h2 {
    font-size: 32px;
    font-weight: 900;
    margin: 0 0 20px 0;
    line-height: 1.3;
    color: #ffffff;
}

.rk-intro-hook {
    font-size: 18px;
    font-weight: 700;
    color: #cbd5e1;
    margin: 0 auto;
    max-width: 800px;
    line-height: 1.6;
    border-left: 4px solid var(--rk-intro-red);
    padding-left: 20px;
    text-align: left;
    background: rgba(0,0,0,0.2);
    padding: 20px;
    border-radius: 0 12px 12px 0;
}

/* Szybka Odpowiedź (Quick Answer) */
.rk-intro-qa {
    display: grid;
    grid-template-columns: 1fr 1fr;
    background: var(--rk-intro-surface);
    border-bottom: 1px solid var(--rk-intro-border);
}

.rk-qa-box {
    padding: 40px 50px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    border-right: 1px solid var(--rk-intro-border);
    background: #ffffff;
}

.rk-qa-box h3 {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-intro-dark);
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-qa-box p {
    font-size: 15px;
    line-height: 1.7;
    color: #475569;
    margin: 0;
}

.rk-qa-box strong {
    color: var(--rk-intro-green);
    background: var(--rk-intro-surface);
    padding: 2px 6px;
    border-radius: 4px;
    border: 1px solid var(--rk-intro-border);
}

/* Interaktywne Spis Treści SVG */
.rk-intro-nav {
    padding: 40px;
    background: var(--rk-intro-surface);
}

.rk-nav-title {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-intro-gray);
    text-transform: uppercase;
    margin-bottom: 15px;
    letter-spacing: 1px;
}

.rk-nav-list {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.rk-nav-item {
    background: #ffffff;
    border: 1px solid var(--rk-intro-border);
    border-radius: 12px;
    padding: 15px 20px;
    font-size: 15px;
    font-weight: 700;
    color: var(--rk-intro-dark);
    display: flex;
    align-items: center;
    gap: 15px;
    cursor: pointer;
    transition: all 0.2s ease;
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
}

.rk-nav-item:hover {
    border-color: var(--rk-intro-blue);
    transform: translateX(5px);
    color: var(--rk-intro-blue);
}

.rk-nav-icon {
    width: 32px;
    height: 32px;
    background: var(--rk-intro-light-blue);
    color: var(--rk-intro-blue);
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

/* Interaktywny Moduł Zalet */
.rk-intro-interactive {
    padding: 40px 50px;
    background: #ffffff;
}

.rk-interactive-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 20px;
}

.rk-interactive-card {
    border: 2px solid var(--rk-intro-border);
    border-radius: 16px;
    padding: 25px;
    text-align: center;
    cursor: pointer;
    transition: all 0.3s ease;
    background: var(--rk-intro-surface);
}

.rk-interactive-card.active {
    border-color: var(--rk-intro-blue);
    background: var(--rk-intro-light-blue);
    box-shadow: 0 10px 20px rgba(2, 132, 199, 0.1);
}

.rk-card-svg {
    width: 60px;
    height: 60px;
    margin: 0 auto 15px auto;
}

.rk-interactive-card h4 {
    margin: 0 0 10px 0;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-intro-dark);
}

.rk-interactive-card p {
    margin: 0;
    font-size: 14px;
    color: var(--rk-intro-gray);
    line-height: 1.5;
}

/* Zmienne stany SVG (bez animacji - tylko kliknięcie) */
.svg-state-off { display: block; }
.svg-state-on { display: none; fill: var(--rk-intro-blue); }
.rk-interactive-card.active .svg-state-off { display: none; }
.rk-interactive-card.active .svg-state-on { display: block; }

@media (max-width: 768px) {
    .rk-intro-header, .rk-qa-box, .rk-intro-nav, .rk-intro-interactive { padding: 30px 20px; }
    .rk-intro-qa { grid-template-columns: 1fr; }
    .rk-qa-box { border-right: none; border-bottom: 1px solid var(--rk-intro-border); }
    .rk-intro-header h2 { font-size: 26px; }
    .rk-intro-hook { font-size: 16px; padding: 15px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#article-wstep",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/"
    },
    "headline": "Sterowanie strefowe ogrzewaniem – czy warto? Prawda o kosztach i komforcie",
    "description": "Zastanawiasz się, czy inwestować w sterowanie strefowe ogrzewaniem podłogowym? Odkryj inżynierskie fakty, wyliczenia ROI oraz wpływ automatyki na bezawaryjność instalacji.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-05",
    "dateModified": "2026-06-03"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#dataset-wstep",
    "name": "Zestawienie korzyści i zakresu wdrożenia sterowania strefowego",
    "description": "Baza wiedzy agregująca kluczowe parametry opłacalności: od oszczędności energii po asymetrię temperatur w poszczególnych strefach budynku.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "sterowanie strefowe ogrzewaniem czy warto",
      "automatyka do ogrzewania podłogowego opinie",
      "jeden termostat w domu czy strefy",
      "jak obniżyć koszty ogrzewania pompą ciepła",
      "asymetria temperatur podłogówka",
      "zdalne sterowanie ogrzewaniem wifi"
    ],
    "measurementTechnique": "Agregacja inżynierskich wskaźników zysku: redukcja kosztów rocznych o 18-23% w stosunku do instalacji jednoczujnikowej, podniesienie bezpieczeństwa hydraulicznego agregatu grzewczego.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Szybka odpowiedź: Pełne sterowanie strefowe to jedyny sposób na asymetrię temperatur (24°C łazienka, 18°C sypialnia).",
        "Oszczędności: Gwarancja redukcji rachunków o blisko 20% poprzez zarządzanie zyskami pasywnymi.",
        "Warunek techniczny: Automatyka musi być zintegrowana z hydraulicznym bilansem instalacji już na etapie projektu OZC."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#webapp-wstep",
    "name": "Interaktywny Przewodnik: Sterowanie Strefowe w Pigułce",
    "description": "Aplikacja wprowadzająca pozwalająca czytelnikowi na szybką nawigację po korzyściach i zagadnieniach technicznych artykułu poprzez interaktywne panele.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-intro-widget" id="wstep-app">
    <div class="rk-intro-header">
        <div class="rk-intro-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Inżynierski Punkt Widzenia
        </div>
        <h2>Sterowanie strefowe ogrzewaniem – czy warto?</h2>
        <div class="rk-intro-hook">
            Instalujesz <a href="https://projekt-ogrzewania.pl/czy-pompa-ciepla-ogrzeje-dom-z-podlogowka/" style="color: #38bdf8;">nowoczesną pompę ciepła</a> za kilkadziesiąt tysięcy złotych, a parametrami w całym domu ma sterować jeden tani termostat zawieszony w salonie? To prosta droga do przegrzanej sypialni, zimnej łazienki i zrujnowania żywotności sprężarki.
        </div>
    </div>

    <div class="rk-intro-qa">
        <div class="rk-qa-box">
            <h3>
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="var(--rk-intro-green)" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                Szybka odpowiedź:
            </h3>
            <p>
                <strong>Czy warto? Zdecydowanie tak.</strong> Pełne sterowanie strefowe w domu powyżej 80 m² obniża koszty eksploatacyjne o <strong>18-23% rocznie</strong>. To jedyny system, który fizycznie gwarantuje asymetrię temperatur (przyjemne 24°C w łazience i zdrowe 18°C w sypialni).
                <br><br>
                Istnieje jednak twardy warunek: automatyka nie naprawi błędów układacza rur. System strefowy musi być zintegrowany z precyzyjnym <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/">obliczeniem OZC</a> i bilansem hydraulicznym.
            </p>
        </div>

        <div class="rk-intro-nav">
            <div class="rk-nav-title">Czego dowiesz się z tego artykułu:</div>
            <div class="rk-nav-list">
                <div class="rk-nav-item">
                    <div class="rk-nav-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg></div>
                    Jak algorytmy TPI/PWM radzą sobie z potężną bezwładnością wylewki jastrychowej.
                </div>
                <div class="rk-nav-item">
                    <div class="rk-nav-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="12" y1="1" x2="12" y2="23"></line><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg></div>
                    Dokładny kosztorys montażu i kalkulator zwrotu z inwestycji (ROI) na 2026 rok.
                </div>
                <div class="rk-nav-item">
                    <div class="rk-nav-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg></div>
                    Dlaczego podłączenie stref bez sprzęgła/bufora zniszczy Twoją pompę ciepła.
                </div>
            </div>
        </div>
    </div>

    <div class="rk-intro-interactive">
        <h3 style="text-align: center; font-size: 22px; font-weight: 900; color: var(--rk-intro-dark); margin: 0 0 20px 0;">Odkryj 4 filary mądrej automatyki</h3>
        <p style="text-align: center; color: var(--rk-intro-gray); margin: 0 0 30px 0; font-size: 15px;">Kliknij kafelek, aby sprawdzić, co kryje się za inżynierskim podejściem do sterowania ogrzewaniem.</p>
        
        <div class="rk-interactive-grid">
            
            <div class="rk-interactive-card active" onclick="activateCard(this)">
                <svg class="rk-card-svg" viewBox="0 0 24 24" fill="none" stroke="var(--rk-intro-dark)" stroke-width="1.5">
                    <rect x="3" y="4" width="18" height="18" rx="2" ry="2" class="svg-state-off"></rect>
                    <line x1="16" y1="2" x2="16" y2="6" class="svg-state-off"></line>
                    <line x1="8" y1="2" x2="8" y2="6" class="svg-state-off"></line>
                    <line x1="3" y1="10" x2="21" y2="10" class="svg-state-off"></line>
                    
                    <rect x="3" y="4" width="18" height="18" rx="2" ry="2" stroke="none" class="svg-state-on"></rect>
                    <path d="M8 14l3 3 5-5" stroke="#ffffff" stroke-width="2" class="svg-state-on" stroke-linecap="round"></path>
                </svg>
                <h4>Rytm Dobowy</h4>
                <p>System sam obniży temperaturę o 2°C, gdy wyjdziesz do pracy, tnąc rachunki bez ingerencji w Twój komfort popołudniowy.</p>
            </div>

            <div class="rk-interactive-card" onclick="activateCard(this)">
                <svg class="rk-card-svg" viewBox="0 0 24 24" fill="none" stroke="var(--rk-intro-dark)" stroke-width="1.5">
                    <circle cx="12" cy="12" r="5" class="svg-state-off"></circle>
                    <line x1="12" y1="1" x2="12" y2="3" class="svg-state-off"></line>
                    <line x1="12" y1="21" x2="12" y2="23" class="svg-state-off"></line>
                    <line x1="4.22" y1="4.22" x2="5.64" y2="5.64" class="svg-state-off"></line>
                    <line x1="18.36" y1="18.36" x2="19.78" y2="19.78" class="svg-state-off"></line>
                    <line x1="1" y1="12" x2="3" y2="12" class="svg-state-off"></line>
                    <line x1="21" y1="12" x2="23" y2="12" class="svg-state-off"></line>
                    <line x1="4.22" y1="19.78" x2="5.64" y2="18.36" class="svg-state-off"></line>
                    <line x1="18.36" y1="5.64" x2="19.78" y2="4.22" class="svg-state-off"></line>

                    <circle cx="12" cy="12" r="8" stroke="none" class="svg-state-on"></circle>
                    <path d="M12 2v20M2 12h20M5 5l14 14" stroke="#ffffff" stroke-width="2" class="svg-state-on"></path>
                </svg>
                <h4>Zyski Pasywne</h4>
                <p>Słońce nagrzewa Twój salon przez wielkie okna? Strefa zamyka przepływ natychmiast, zatrzymując marnowanie pobieranej energii.</p>
            </div>

            <div class="rk-interactive-card" onclick="activateCard(this)">
                <svg class="rk-card-svg" viewBox="0 0 24 24" fill="none" stroke="var(--rk-intro-dark)" stroke-width="1.5">
                    <path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6" class="svg-state-off"></path>

                    <rect x="4" y="4" width="16" height="16" rx="4" stroke="none" class="svg-state-on"></rect>
                    <path d="M8 12h8M12 8v8" stroke="#ffffff" stroke-width="2" class="svg-state-on"></path>
                </svg>
                <h4>Bilans Hydrauliczny</h4>
                <p>Tylko mądre zaprogramowanie obciążeń <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">chroni podzespoły mechaniczne</a>. Inteligentne strefy zapobiegają dławieniu przepływów na rozdzielaczu.</p>
            </div>

            <div class="rk-interactive-card" onclick="activateCard(this)">
                <svg class="rk-card-svg" viewBox="0 0 24 24" fill="none" stroke="var(--rk-intro-dark)" stroke-width="1.5">
                    <rect x="5" y="2" width="14" height="20" rx="2" ry="2" class="svg-state-off"></rect>
                    <line x1="12" y1="18" x2="12.01" y2="18" class="svg-state-off"></line>
                    <path d="M8 10h.01M12 10h.01M16 10h.01" class="svg-state-off" stroke-linecap="round"></path>

                    <rect x="5" y="2" width="14" height="20" rx="2" ry="2" stroke="none" class="svg-state-on"></rect>
                    <path d="M9 11l2 2 4-4" stroke="#ffffff" stroke-width="2" class="svg-state-on" stroke-linecap="round" stroke-linejoin="round"></path>
                    <line x1="12" y1="18" x2="12.01" y2="18" stroke="#ffffff" stroke-width="2" class="svg-state-on"></line>
                </svg>
                <h4>Pełna Kontrola (Smart)</h4>
                <p>Zarządzaj temperaturą i harmonogramem z poziomu smartfona. Dostosowuj klimat z dowolnego miejsca na Ziemi poprzez WiFi.</p>
            </div>

        </div>
    </div>
</div>

<script>
function activateCard(clickedCard) {
    // Usunięcie klasy active ze wszystkich kart
    const cards = document.querySelectorAll('.rk-interactive-card');
    cards.forEach(card => {
        card.classList.remove('active');
    });
    // Aktywacja klikniętej
    clickedCard.classList.add('active');
}
</script>



<style>
:root {
    --rk-ctrl-dark: #0f172a;
    --rk-ctrl-blue: #0284c7;
    --rk-ctrl-blue-light: #e0f2fe;
    --rk-ctrl-red: #ef4444;
    --rk-ctrl-red-light: #fef2f2;
    --rk-ctrl-green: #10b981;
    --rk-ctrl-gray: #64748b;
    --rk-ctrl-gray-light: #f1f5f9;
    --rk-ctrl-bg: #ffffff;
    --rk-ctrl-border: #e2e8f0;
}

.rk-ctrl-widget {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-ctrl-bg);
    border-radius: 20px;
    box-shadow: 0 20px 40px -10px rgba(2, 132, 199, 0.1);
    border: 1px solid var(--rk-ctrl-border);
    overflow: hidden;
}

/* Header */
.rk-ctrl-header {
    padding: 40px 50px;
    background: linear-gradient(135deg, #f8fafc 0%, #e0f2fe 100%);
    border-bottom: 1px solid var(--rk-ctrl-border);
}

.rk-ctrl-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: var(--rk-ctrl-blue);
    color: #ffffff;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    box-shadow: 0 4px 10px rgba(2, 132, 199, 0.2);
}

.rk-ctrl-header h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-ctrl-dark);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-ctrl-header p {
    font-size: 16px;
    color: var(--rk-ctrl-gray);
    margin: 0;
    line-height: 1.6;
}

/* Interactive Simulator */
.rk-ctrl-app {
    display: grid;
    grid-template-columns: 320px 1fr;
    background: #ffffff;
    border-bottom: 1px solid var(--rk-ctrl-border);
}

/* Controls Panel */
.rk-ctrl-panel {
    padding: 35px 30px;
    background: var(--rk-ctrl-gray-light);
    border-right: 1px solid var(--rk-ctrl-border);
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.rk-ctrl-label {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-ctrl-dark);
    margin-bottom: 15px;
}

.rk-ctrl-val {
    background: #ffffff;
    color: var(--rk-ctrl-blue);
    padding: 4px 12px;
    border-radius: 8px;
    font-family: monospace;
    font-size: 18px;
    font-weight: 900;
    border: 1px solid var(--rk-ctrl-border);
    box-shadow: inset 0 2px 4px rgba(0,0,0,0.02);
}

/* Range Slider */
.rk-ctrl-slider {
    -webkit-appearance: none;
    width: 100%;
    height: 10px;
    border-radius: 5px;
    background: linear-gradient(to right, var(--rk-ctrl-blue) 0%, var(--rk-ctrl-red) 100%);
    outline: none;
    cursor: pointer;
}

.rk-ctrl-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: #ffffff;
    border: 3px solid var(--rk-ctrl-dark);
    cursor: pointer;
    box-shadow: 0 4px 8px rgba(0,0,0,0.2);
    transition: transform 0.1s;
}

.rk-ctrl-slider::-webkit-slider-thumb:hover {
    transform: scale(1.1);
}

.rk-ctrl-status-box {
    background: #ffffff;
    border: 1px solid var(--rk-ctrl-border);
    border-radius: 12px;
    padding: 15px;
}

.rk-ctrl-status-title {
    font-size: 12px;
    font-weight: 700;
    color: var(--rk-ctrl-gray);
    text-transform: uppercase;
    margin-bottom: 8px;
}

.rk-ctrl-status-text {
    font-size: 15px;
    font-weight: 800;
    display: flex;
    align-items: center;
    gap: 8px;
    transition: color 0.3s;
}

.status-active { color: var(--rk-ctrl-red); }
.status-idle { color: var(--rk-ctrl-blue); }

/* SVG Viewer */
.rk-ctrl-viewer {
    padding: 30px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    background: #ffffff;
    position: relative;
}

.rk-loop-svg {
    width: 100%;
    max-width: 500px;
    height: auto;
    overflow: visible;
}

/* SVG Animations */
.anim-signal {
    stroke-dasharray: 8;
    animation: signalFlow 0.8s linear infinite;
    opacity: 0;
    transition: opacity 0.3s;
}

@keyframes signalFlow {
    to { stroke-dashoffset: -16; }
}

.anim-stem {
    transition: transform 0.5s ease-in-out;
}

.anim-heat {
    stroke-dasharray: 15;
    animation: heatFlow 1s linear infinite;
    opacity: 0;
    transition: opacity 0.5s;
}

@keyframes heatFlow {
    to { stroke-dashoffset: -30; }
}

/* Components Grid */
.rk-comp-section {
    padding: 40px 50px;
    background: #ffffff;
    border-top: 1px solid var(--rk-ctrl-border);
}

.rk-comp-section h3 {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-ctrl-dark);
    margin: 0 0 25px 0;
    text-align: center;
}

.rk-comp-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 20px;
}

.rk-comp-card {
    background: var(--rk-ctrl-gray-light);
    border-left: 4px solid var(--rk-ctrl-blue);
    border-radius: 0 12px 12px 0;
    padding: 20px;
    transition: transform 0.2s, box-shadow 0.2s;
}

.rk-comp-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 10px 20px rgba(0,0,0,0.05);
}

.rk-comp-card h4 {
    margin: 0 0 10px 0;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-ctrl-dark);
}

.rk-comp-card p {
    margin: 0;
    font-size: 13px;
    line-height: 1.6;
    color: var(--rk-ctrl-gray);
}

.rk-comp-card a {
    color: var(--rk-ctrl-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dashed var(--rk-ctrl-blue);
}

.rk-comp-tag {
    display: inline-block;
    background: #ffffff;
    padding: 4px 8px;
    border-radius: 6px;
    font-family: monospace;
    font-size: 12px;
    font-weight: 700;
    color: var(--rk-ctrl-dark);
    margin-top: 10px;
    border: 1px solid var(--rk-ctrl-border);
}

@media (max-width: 768px) {
    .rk-ctrl-header, .rk-ctrl-panel, .rk-ctrl-viewer, .rk-comp-section { padding: 30px 20px; }
    .rk-ctrl-app { grid-template-columns: 1fr; }
    .rk-ctrl-panel { border-right: none; border-bottom: 1px solid var(--rk-ctrl-border); }
    .rk-ctrl-header h2 { font-size: 24px; }
    .rk-loop-svg { max-width: 100%; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#article-dzialanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/"
    },
    "headline": "Czym jest sterowanie strefowe ogrzewaniem podłogowym i jak działa w praktyce?",
    "description": "Zrozumienie mechanizmu pętli regulacyjnej automatyki strefowej klasy A (norma PN-EN ISO 52120-1) na podstawie termostatów, listwy i siłowników termoelektrycznych.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-12-29",
    "dateModified": "2026-06-03"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#dataset-komponenty",
    "name": "Specyfikacja Komponentów Automatyki Strefowej",
    "description": "Zestawienie głównych elementów zamkniętej pętli regulacyjnej ogrzewania podłogowego, ich parametrów elektrycznych i wpływu na wydajność cieplną.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "norma PN-EN 1264-4",
      "siłowniki termoelektryczne NC do rozdzielacza",
      "listwa sterująca do ogrzewania podłogowego",
      "histereza termostatu pokojowego",
      "zjawisko overshooting w podłogówce"
    ],
    "measurementTechnique": "Weryfikacja parametrów z normą PN-EN ISO 52120-1 dla klasy A, z uwzględnieniem dokładności termostatów (±0,1°C), asymetrii temperatur (4-6 K) oraz czasów reakcji siłowników NC (pobór 1-2W, czas otwarcia 3-5 min).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Termostaty pokojowe: Przewodowe (230V/bus) lub bezprzewodowe (ZigBee/868 MHz) z dokładnością do ±0,1°C.",
        "Listwa sterująca: Centralny mózg zarządzający pompą i sygnałem do kotła ze stykiem beznapięciowym.",
        "Siłowniki termoelektryczne: Montowane na gwint M30x1,5, element PTC rozszerza wosk, otwierając przepływ 35°C/30°C.",
        "Zawory strefowe z siłownikami obrotowymi: Dla odcinania zasilania całych rozdzielaczy i kondygnacji."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#webapp-petla",
    "name": "Symulator Pętli Regulacyjnej",
    "description": "Interaktywny symulator procesu automatycznej regulacji wydajności cieplnej. Wizualizuje przepływ sygnału od czujnika pokojowego, przez listwę sterującą, aż do siłownika i otwarcia pętli grzewczej przy spadku temperatury.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-ctrl-widget" id="dzialanie-app">
    <div class="rk-ctrl-header">
        <div class="rk-ctrl-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
            Zasada Działania
        </div>
        <h2>Czym jest sterowanie strefowe ogrzewaniem podłogowym i jak działa w praktyce?</h2>
        <p>Sterowanie strefowe to proces zamykania i otwierania pętli grzewczych na podstawie sygnałów z lokalnych czujników. Eliminuje to zjawisko <em>overshooting</em> i pozwala na asymetrię temperatur (nawet 4-6 K) pomiędzy pokojami.</p>
    </div>

    <div class="rk-ctrl-app">
        <div class="rk-ctrl-panel">
            <div>
                <div class="rk-ctrl-label">
                    <span>Temp. w sypialni</span>
                    <span class="rk-ctrl-val" id="ctrlVal">18.5°C</span>
                </div>
                <input type="range" class="rk-ctrl-slider" id="ctrlSlider" min="16" max="22" step="0.1" value="18.5">
                <p style="font-size: 12px; color: var(--rk-ctrl-gray); margin-top: 10px;">Zmień temperaturę, aby zaobserwować reakcję pętli regulacyjnej. Nastawa termostatu: <strong>19.0°C</strong>.</p>
            </div>

            <div class="rk-ctrl-status-box">
                <div class="rk-ctrl-status-title">Status układu automatyki</div>
                <div class="rk-ctrl-status-text status-active" id="ctrlStatus">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                    <span>Grzanie Aktywne (Siłownik ON)</span>
                </div>
            </div>
            
            <div class="rk-ctrl-status-box">
                <div class="rk-ctrl-status-title">Zasilanie pętli</div>
                <div class="rk-ctrl-status-text status-active" id="ctrlFlow">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg>
                    <span>Przepływ otwarty (35°C)</span>
                </div>
            </div>
        </div>

        <div class="rk-ctrl-viewer">
            <svg class="rk-loop-svg" viewBox="0 0 500 300" preserveAspectRatio="xMidYMid meet">
                <rect x="20" y="50" width="120" height="150" rx="10" fill="#f8fafc" stroke="#cbd5e1" stroke-width="3"/>
                <text x="80" y="80" font-family="Inter" font-weight="700" font-size="14" fill="#64748b" text-anchor="middle">Sypialnia</text>
                
                <rect x="55" y="110" width="50" height="60" rx="6" fill="#ffffff" stroke="#0f172a" stroke-width="2"/>
                <text x="80" y="145" font-family="Inter" font-weight="900" font-size="14" fill="#0f172a" text-anchor="middle" id="svgTemp">18.5</text>
                
                <path d="M 105 140 L 200 140" fill="none" stroke="#64748b" stroke-width="3"/>
                <path d="M 105 140 L 200 140" fill="none" stroke="#ef4444" stroke-width="3" id="animSignal" class="anim-signal"/>

                <rect x="200" y="100" width="80" height="80" rx="8" fill="#1e293b"/>
                <text x="240" y="145" font-family="Inter" font-weight="700" font-size="12" fill="#ffffff" text-anchor="middle">Listwa</text>
                <circle cx="240" cy="120" r="4" fill="#ef4444" id="ledMaster"/>

                <path d="M 280 140 L 360 140" fill="none" stroke="#64748b" stroke-width="3"/>
                <path d="M 280 140 L 360 140" fill="none" stroke="#ef4444" stroke-width="3" id="animPower" class="anim-signal"/>

                <rect x="340" y="180" width="140" height="30" fill="#cbd5e1" stroke="#94a3b8" stroke-width="2"/>
                <text x="410" y="200" font-family="Inter" font-weight="700" font-size="12" fill="#475569" text-anchor="middle">Rozdzielacz</text>
                
                <path d="M 380 210 L 380 280 Q 380 290 390 290 L 460 290" fill="none" stroke="#e2e8f0" stroke-width="12"/>
                <path d="M 380 210 L 380 280 Q 380 290 390 290 L 460 290" fill="none" stroke="#ef4444" stroke-width="8" id="animWater" class="anim-heat"/>

                <g transform="translate(360, 130)">
                    <rect x="0" y="0" width="40" height="40" rx="4" fill="#ffffff" stroke="#0f172a" stroke-width="3"/>
                    <text x="20" y="25" font-family="Inter" font-weight="800" font-size="12" fill="#0f172a" text-anchor="middle">NC</text>
                    <rect x="16" y="40" width="8" height="15" fill="#94a3b8" id="svgStem" class="anim-stem" transform="translate(0, -10)"/>
                </g>

            </svg>
        </div>
    </div>

    <div class="rk-comp-section">
        <h3>Podstawowe komponenty systemu strefowego</h3>
        <div class="rk-comp-grid">
            <div class="rk-comp-card">
                <h4>1. Termostaty pokojowe (Czujniki)</h4>
                <p>Zbierają odczyty temperatury operacyjnej z dokładnością <strong>±0,1°C</strong>. Mogą komunikować się bezprzewodowo (868 MHz / ZigBee) lub przewodowo (230V / bus) z <a href="https://projekt-ogrzewania.pl/termostat-w-ogrzewaniu-podlogowym/">najwyższą precyzją</a>.</p>
            </div>

            <div class="rk-comp-card">
                <h4>2. Listwa sterująca (Centrala)</h4>
                <p>Mózg całego systemu ukryty w szafce. Przetwarza sygnały od termostatów, przekaźnikiem beznapięciowym uruchamia źródło ciepła i włącza pompę obiegową.</p>
                <div class="rk-comp-tag">Zasilanie 230V</div>
            </div>

            <div class="rk-comp-card">
                <h4>3. Siłowniki termoelektryczne</h4>
                <p>Nakręcane na gwint <strong>M30x1,5</strong> zaworów rozdzielacza. Typ NC (Normalnie Zamknięty) posiada element PTC, który pod wpływem prądu rozgrzewa wosk i unosi trzpień, <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">otwierając przepływ wody</a>.</p>
                <div class="rk-comp-tag">Pobór mocy 1-2W</div>
            </div>

            <div class="rk-comp-card">
                <h4>4. Zawory strefowe obrotowe</h4>
                <p>Stosowane w większych instalacjach na głównych podejściach do <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielaczy podłogówki</a>. Odcinają zasilanie całych kondygnacji w przypadku braku zapotrzebowania.</p>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const slider = document.getElementById('ctrlSlider');
    const valDisplay = document.getElementById('ctrlVal');
    const svgTemp = document.getElementById('svgTemp');
    
    // Status Elements
    const ctrlStatus = document.getElementById('ctrlStatus');
    const ctrlFlow = document.getElementById('ctrlFlow');
    
    // Animation Elements
    const animSignal = document.getElementById('animSignal');
    const animPower = document.getElementById('animPower');
    const ledMaster = document.getElementById('ledMaster');
    const svgStem = document.getElementById('svgStem');
    const animWater = document.getElementById('animWater');

    // Hysteresis State logic
    // Target is 19.0°C. 
    // Turn ON if drops below 18.5°C
    // Turn OFF if reaches >= 19.0°C
    let isHeating = true; // start with heating ON at 18.5

    function updateSystem() {
        const temp = parseFloat(slider.value);
        valDisplay.textContent = temp.toFixed(1) + "°C";
        svgTemp.textContent = temp.toFixed(1);

        // Hysteresis Logic
        if (temp >= 19.0) {
            isHeating = false;
        } else if (temp < 18.5) {
            isHeating = true;
        }

        if (isHeating) {
            // State: ACTIVE
            ctrlStatus.className = "rk-ctrl-status-text status-active";
            ctrlStatus.innerHTML = `<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg><span>Grzanie Aktywne (Siłownik ON)</span>`;
            
            ctrlFlow.className = "rk-ctrl-status-text status-active";
            ctrlFlow.innerHTML = `<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg><span>Przepływ otwarty (35°C)</span>`;

            // Turn on SVG animations
            animSignal.style.opacity = '1';
            animPower.style.opacity = '1';
            ledMaster.setAttribute('fill', '#ef4444');
            svgStem.style.transform = 'translate(0, -10px)'; // Stem up (valve open)
            animWater.style.opacity = '1';
            
            valDisplay.style.color = 'var(--rk-ctrl-red)';
            valDisplay.style.borderColor = 'rgba(239, 68, 68, 0.4)';

        } else {
            // State: IDLE
            ctrlStatus.className = "rk-ctrl-status-text status-idle";
            ctrlStatus.innerHTML = `<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg><span>Brak Zapotrzebowania (IDLE)</span>`;
            
            ctrlFlow.className = "rk-ctrl-status-text status-idle";
            ctrlFlow.innerHTML = `<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><line x1="4.93" y1="4.93" x2="19.07" y2="19.07"></line></svg><span>Zawór zamknięty sprężyną</span>`;

            // Turn off SVG animations
            animSignal.style.opacity = '0';
            animPower.style.opacity = '0';
            ledMaster.setAttribute('fill', '#64748b');
            svgStem.style.transform = 'translate(0, 0px)'; // Stem down (valve closed)
            animWater.style.opacity = '0';
            
            valDisplay.style.color = 'var(--rk-ctrl-blue)';
            valDisplay.style.borderColor = 'rgba(2, 132, 199, 0.2)';
        }
    }

    slider.addEventListener('input', updateSystem);
    // init
    updateSystem();
});
</script>



<style>
:root {
    --rk-sch-dark: #0f172a;
    --rk-sch-blue: #0284c7;
    --rk-sch-light-blue: #f0f9ff;
    --rk-sch-red: #ef4444;
    --rk-sch-green: #10b981;
    --rk-sch-gray: #64748b;
    --rk-sch-border: #e2e8f0;
    --rk-sch-bg: #ffffff;
    --rk-sch-surface: #f8fafc;
    --rk-sch-accent: #38bdf8;
}

.rk-sch-widget {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
    background: var(--rk-sch-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.15);
    border: 1px solid var(--rk-sch-blue);
    overflow: hidden;
}

/* Sekcja Nagłówkowa */
.rk-sch-header {
    padding: 40px 50px;
    background: linear-gradient(135deg, var(--rk-sch-dark) 0%, #1e293b 100%);
    color: #ffffff;
    text-align: center;
    border-bottom: 4px solid var(--rk-sch-blue);
}

.rk-sch-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(56, 189, 248, 0.2);
    color: var(--rk-sch-accent);
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid rgba(56, 189, 248, 0.3);
}

.rk-sch-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-sch-header p {
    font-size: 16px;
    color: #cbd5e1;
    margin: 0 auto;
    max-width: 750px;
    line-height: 1.6;
}

/* Interaktywny Moduł ze Schematem */
.rk-sch-app {
    display: grid;
    grid-template-columns: 1fr 350px;
    background: var(--rk-sch-surface);
    border-bottom: 1px solid var(--rk-sch-border);
}

/* Lewa Kolumna - Obraz */
.rk-sch-img-col {
    padding: 40px;
    background: #ffffff;
    border-right: 1px solid var(--rk-sch-border);
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
}

.rk-sch-img {
    width: 100%;
    max-width: 600px;
    height: auto;
    border-radius: 12px;
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.1);
    border: 1px solid rgba(2, 132, 199, 0.1);
    transition: transform 0.3s ease;
}

/* Prawa Kolumna - Nawigacja i Treść */
.rk-sch-nav-col {
    padding: 30px;
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-sch-nav-title {
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-sch-gray);
    text-transform: uppercase;
    margin-bottom: 5px;
    letter-spacing: 0.5px;
}

.rk-sch-btn {
    padding: 15px 20px;
    background: #ffffff;
    border: 1px solid var(--rk-sch-border);
    border-radius: 12px;
    text-align: left;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    gap: 12px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
}

.rk-sch-btn:hover {
    border-color: var(--rk-sch-blue);
    transform: translateX(-5px);
}

.rk-sch-btn.active {
    background: var(--rk-sch-light-blue);
    border-color: var(--rk-sch-blue);
    box-shadow: 0 4px 12px rgba(2, 132, 199, 0.1);
}

.rk-sch-btn-icon {
    width: 32px;
    height: 32px;
    background: var(--rk-sch-surface);
    color: var(--rk-sch-gray);
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.3s;
}

.rk-sch-btn.active .rk-sch-btn-icon {
    background: var(--rk-sch-blue);
    color: #ffffff;
}

.rk-sch-btn-text {
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-sch-dark);
}

/* Dynamiczny Opis */
.rk-sch-desc-box {
    margin-top: 15px;
    background: #ffffff;
    border: 2px solid var(--rk-sch-blue);
    border-radius: 16px;
    padding: 25px;
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.1);
    min-height: 220px;
}

.rk-sch-desc-content {
    display: none;
    animation: fadeIn 0.4s ease forwards;
}

.rk-sch-desc-content.active {
    display: block;
}

@keyframes fadeIn {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

.rk-sch-desc-content h4 {
    margin: 0 0 12px 0;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-sch-dark);
}

.rk-sch-desc-content p {
    margin: 0 0 15px 0;
    font-size: 14px;
    line-height: 1.6;
    color: #475569;
}

.rk-sch-desc-content a {
    color: var(--rk-sch-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 2px;
}

.rk-sch-temp-tag {
    display: inline-block;
    background: var(--rk-sch-dark);
    color: #ffffff;
    padding: 4px 10px;
    border-radius: 6px;
    font-family: monospace;
    font-size: 13px;
    font-weight: 700;
    margin-top: 5px;
}

/* Sekcja Teorii i Długiego Ogona */
.rk-sch-theory {
    padding: 40px 50px;
    background: #ffffff;
}

.rk-sch-theory h3 {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-sch-dark);
    margin: 0 0 20px 0;
}

.rk-sch-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 25px;
}

.rk-sch-card {
    background: var(--rk-sch-surface);
    border: 1px solid var(--rk-sch-border);
    border-radius: 16px;
    padding: 25px;
}

.rk-sch-card h4 {
    margin: 0 0 12px 0;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-sch-dark);
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-sch-card p {
    margin: 0;
    font-size: 14px;
    color: #475569;
    line-height: 1.6;
}

@media (max-width: 768px) {
    .rk-sch-header, .rk-sch-img-col, .rk-sch-nav-col, .rk-sch-theory { padding: 30px 20px; }
    .rk-sch-app { grid-template-columns: 1fr; }
    .rk-sch-img-col { border-right: none; border-bottom: 1px solid var(--rk-sch-border); }
    .rk-sch-header h2 { font-size: 24px; }
    .rk-sch-desc-box { min-height: auto; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#article-schemat",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/"
    },
    "headline": "Schemat instalacji sterowania strefowego – jak połączyć rozdzielacz z automatyką?",
    "description": "Interaktywny schemat podłączenia ogrzewania podłogowego. Zobacz jak zintegrować termostaty bezprzewodowe, listwę centralną, pompę obiegową i siłowniki.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2025/12/Sterowanie-strefowe-ogrzewaniem-schemat.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-03",
    "dateModified": "2026-06-03"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#dataset-schemat",
    "name": "Parametry robocze układu strefowego wg schematu",
    "description": "Zestawienie topologii połączeń bezprzewodowych oraz asymetrii temperatur wyjściowych dla poszczególnych pętli ogrzewania podłogowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "schemat podłączenia ogrzewania podłogowego",
      "jak podłączyć siłowniki do listwy sterującej",
      "bezprzewodowe sterowanie podłogówką schemat",
      "schemat podłączenia pompy obiegowej do listwy",
      "topologia układu strefowego podłogówki"
    ],
    "measurementTechnique": "Analiza schematu ideowego prezentującego zróżnicowanie nastaw termostatów w 4 niezależnych strefach termicznych (19.5°C, 20.0°C, 21.0°C, 23.0°C).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Termostaty pokojowe (WiFi): Ustawiają niezależne parametry od 19.5°C (sypialnia) do 23.0°C (łazienka).",
        "Listwa (Master): Odbiera sygnał RF i dystrybuuje napięcie 230V na siłowniki oraz pompę obiegową.",
        "Rozdzielacz z siłownikami NC: Fizyczne dławienie lub otwieranie przepływu czynnika grzewczego w pętlach."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#webapp-schemat",
    "name": "Interaktywny Schemat Podłączenia Automatyki",
    "description": "Aplikacja wizualna pozwalająca użytkownikowi na interaktywną analizę poszczególnych węzłów schematu instalacji ogrzewania podłogowego (źródło ciepła, rozdzielacz, termostaty).",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-sch-widget" id="schemat-interaktywny-app">
    <div class="rk-sch-header">
        <div class="rk-sch-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line></svg>
            Topologia Instalacji
        </div>
        <h2>Schemat sterowania strefowego – jak połączyć rozdzielacz z automatyką?</h2>
        <p>Zrozumienie układu to fundament poprawnego wykonawstwa. Przedstawiony schemat obrazuje kompletną, bezprzewodową architekturę systemu, gwarantującą pełną asymetrię temperatur.</p>
    </div>

    <div class="rk-sch-app">
        <div class="rk-sch-img-col">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2025/12/Sterowanie-strefowe-ogrzewaniem-schemat.webp" alt="Schemat podłączenia sterowania strefowego ogrzewania podłogowego - listwa, rozdzielacz, termostaty" class="rk-sch-img" id="schematImg">
        </div>

        <div class="rk-sch-nav-col">
            <div class="rk-sch-nav-title">Analiza węzłów schematu</div>
            
            <button class="rk-sch-btn active" data-node="termostaty">
                <div class="rk-sch-btn-icon">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                </div>
                <span class="rk-sch-btn-text">Termostaty (Asymetria)</span>
            </button>

            <button class="rk-sch-btn" data-node="listwa">
                <div class="rk-sch-btn-icon">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><rect x="2" y="3" width="20" height="14" rx="2" ry="2"></rect><line x1="8" y1="21" x2="16" y2="21"></line><line x1="12" y1="17" x2="12" y2="21"></line></svg>
                </div>
                <span class="rk-sch-btn-text">Listwa Centralna</span>
            </button>

            <button class="rk-sch-btn" data-node="rozdzielacz">
                <div class="rk-sch-btn-icon">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="4" y1="9" x2="20" y2="9"></line><line x1="4" y1="15" x2="20" y2="15"></line><line x1="10" y1="3" x2="8" y2="21"></line><line x1="16" y1="3" x2="14" y2="21"></line></svg>
                </div>
                <span class="rk-sch-btn-text">Rozdzielacz i Siłowniki</span>
            </button>

            <button class="rk-sch-btn" data-node="pompa">
                <div class="rk-sch-btn-icon">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
                </div>
                <span class="rk-sch-btn-text">Pompa i Źródło Ciepła</span>
            </button>

            <div class="rk-sch-desc-box">
                
                <div id="desc-termostaty" class="rk-sch-desc-content active">
                    <h4>Asymetria temperatur (WiFi)</h4>
                    <p>Zwróć uwagę na prawą stronę schematu. Bezprzewodowe <a href="https://projekt-ogrzewania.pl/termostat-w-ogrzewaniu-podlogowym/">termostaty pokojowe</a> żądają różnych nastaw: od <strong>19.5°C</strong> (np. sypialnia) do <strong>23.0°C</strong> (np. łazienka).</p>
                    <p>Czujniki te komunikują się drogą radiową z modułem odbiornika, eliminując potrzebę kucia ścian pod kable sygnałowe.</p>
                    <div class="rk-sch-temp-tag">19.5°C &rarr; 23.0°C</div>
                </div>

                <div id="desc-listwa" class="rk-sch-desc-content">
                    <h4>Główne centrum dowodzenia</h4>
                    <p>Czarna jednostka na schemacie to listwa sterująca (Master). Jej głównym zadaniem jest logiczne sparowanie sygnału z konkretnego termostatu z odpowiednim wyjściem prądowym (230V).</p>
                    <p>W momencie gdy termostat żąda ciepła, listwa podaje napięcie na <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">siłownik termoelektryczny</a> konkretnej pętli.</p>
                </div>

                <div id="desc-rozdzielacz" class="rk-sch-desc-content">
                    <h4>Fizyczne otwarcie przepływu</h4>
                    <p>W dolnej prawej sekcji widać <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielacz podłogówki</a>. Siłowniki (czarne kostki na zaworach) otrzymują prąd z listwy i unoszą trzpienie.</p>
                    <p>Dzięki temu gorąca woda zasilająca (oznaczona kolorem czerwonym) może wpłynąć tylko do tych pętli grzewczych, w których temperatura spadła poniżej zadanej normy.</p>
                </div>

                <div id="desc-pompa" class="rk-sch-desc-content">
                    <h4>Sygnał do startu</h4>
                    <p>Listwa sterująca posiada moduł pompowy oraz styk beznapięciowy. Jeśli <strong>którakolwiek strefa</strong> wymaga grzania, listwa uruchamia <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompę obiegową</a> widoczną na czerwonej rurze zasilającej.</p>
                    <p>Gdy wszystkie termostaty osiągną temperaturę, listwa wyłącza pompę, oszczędzając energię elektryczną.</p>
                </div>

            </div>
        </div>
    </div>

    <div class="rk-sch-theory">
        <h3>Praktyczne wytyczne do schematu instalacji</h3>
        <div class="rk-sch-grid">
            <div class="rk-sch-card">
                <h4>
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--rk-sch-blue)" stroke-width="2.5"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                    Jak podłączyć pompę obiegową?
                </h4>
                <p>Na schemacie widać wyraźnie, że pompa jest wpięta szeregowo w układ zasilania (czerwona linia). <strong>Schemat podłączenia pompy obiegowej do listwy</strong> musi bezwzględnie przewidywać opóźnienie wyłączenia (tzw. wybieg pompy), aby odebrać resztkowe ciepło ze źródła, chroniąc kocioł lub bufor przed przegrzaniem.</p>
            </div>
            
            <div class="rk-sch-card">
                <h4>
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--rk-sch-blue)" stroke-width="2.5"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                    Bezprzewodowe sterowanie podłogówką
                </h4>
                <p>Kropkowane linie oznaczają komunikację bez kabli. To idealne rozwiązanie przy modernizacji (remoncie). Wymaga jednak montażu centralnej listwy w pobliżu źródła zasilania 230V, od której wyprowadzane są już standardowe, fizyczne kable (najczęściej 2&#215;0.75 mm²) zasilające głowice na belce rozdzielacza.</p>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btns = document.querySelectorAll('.rk-sch-btn');
    const contents = document.querySelectorAll('.rk-sch-desc-content');
    const img = document.getElementById('schematImg');

    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            // Czyszczenie aktywnej nawigacji
            btns.forEach(b => b.classList.remove('active'));
            contents.forEach(c => c.classList.remove('active'));

            // Ustawienie nowego stanu
            this.classList.add('active');
            const target = this.getAttribute('data-node');
            document.getElementById('desc-' + target).classList.add('active');

            // Mały efekt wizualny na obrazku przy kliknięciu (przyciągnięcie uwagi)
            img.style.transform = 'scale(0.98)';
            setTimeout(() => {
                img.style.transform = 'scale(1)';
            }, 150);
        });
    });
});
</script>



<style>
:root {
    --rk-save-dark: #0f172a;
    --rk-save-blue: #0284c7;
    --rk-save-light-blue: #f0f9ff;
    --rk-save-green: #10b981;
    --rk-save-green-bg: #dcfce7;
    --rk-save-yellow: #eab308;
    --rk-save-red: #ef4444;
    --rk-save-gray: #64748b;
    --rk-save-border: #e2e8f0;
    --rk-save-bg: #ffffff;
    --rk-save-surface: #f8fafc;
}

.rk-save-widget {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-save-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(16, 185, 129, 0.15);
    border: 1px solid var(--rk-save-green);
    overflow: hidden;
}

/* Nagłówek */
.rk-save-header {
    padding: 40px 50px;
    background: linear-gradient(135deg, var(--rk-save-dark) 0%, #1e293b 100%);
    color: #ffffff;
    text-align: center;
    border-bottom: 4px solid var(--rk-save-green);
}

.rk-save-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(16, 185, 129, 0.2);
    color: #34d399;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid rgba(16, 185, 129, 0.3);
}

.rk-save-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-save-header p {
    font-size: 16px;
    color: #cbd5e1;
    margin: 0 auto;
    max-width: 780px;
    line-height: 1.6;
}

.rk-save-header strong {
    color: var(--rk-save-green-bg);
}

/* Interaktywny Symulator */
.rk-save-app {
    display: grid;
    grid-template-columns: 320px 1fr;
    background: var(--rk-save-surface);
    border-bottom: 1px solid var(--rk-save-border);
}

.rk-save-controls {
    padding: 40px 30px;
    background: #ffffff;
    border-right: 1px solid var(--rk-save-border);
    display: flex;
    flex-direction: column;
    gap: 30px;
}

.rk-input-block {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-input-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.rk-input-title {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-save-dark);
    line-height: 1.4;
}

.rk-val-box {
    background: var(--rk-save-light-blue);
    color: var(--rk-save-blue);
    padding: 4px 10px;
    border-radius: 8px;
    font-family: monospace;
    font-size: 15px;
    font-weight: 700;
    border: 1px solid rgba(2, 132, 199, 0.2);
}

/* Slider */
.rk-temp-slider {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    border-radius: 4px;
    background: linear-gradient(to right, var(--rk-save-blue), var(--rk-save-red));
    outline: none;
    cursor: pointer;
}

.rk-temp-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: #ffffff;
    border: 3px solid var(--rk-save-dark);
    cursor: pointer;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
    transition: transform 0.1s;
}

.rk-temp-slider::-webkit-slider-thumb:hover {
    transform: scale(1.15);
}

/* Przełącznik */
.rk-toggle-switch {
    position: relative;
    display: inline-block;
    width: 60px;
    height: 32px;
    flex-shrink: 0;
}

.rk-toggle-switch input { opacity: 0; width: 0; height: 0; }

.rk-slider-round {
    position: absolute;
    cursor: pointer;
    top: 0; left: 0; right: 0; bottom: 0;
    background-color: var(--rk-save-gray);
    transition: .4s;
    border-radius: 34px;
}

.rk-slider-round:before {
    position: absolute;
    content: "";
    height: 24px; width: 24px;
    left: 4px; bottom: 4px;
    background-color: white;
    transition: .4s;
    border-radius: 50%;
}

input:checked + .rk-slider-round { background-color: var(--rk-save-yellow); }
input:checked + .rk-slider-round:before { transform: translateX(28px); }

/* Wyniki & Wizualizacja */
.rk-save-display {
    padding: 30px;
    display: flex;
    flex-direction: column;
    align-items: center;
    background: linear-gradient(180deg, #f8fafc 0%, #ffffff 100%);
    position: relative;
}

.rk-stats-bar {
    display: flex;
    gap: 15px;
    width: 100%;
    margin-bottom: 25px;
}

.rk-stat-card {
    flex: 1;
    background: #ffffff;
    border: 2px solid var(--rk-save-green);
    border-radius: 16px;
    padding: 15px;
    text-align: center;
    box-shadow: 0 10px 20px -5px rgba(16, 185, 129, 0.1);
}

.rk-stat-title {
    font-size: 12px;
    font-weight: 800;
    color: var(--rk-save-gray);
    text-transform: uppercase;
    margin-bottom: 5px;
}

.rk-stat-val {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-save-green);
    font-family: monospace;
}

/* SVG Domu */
.rk-house-svg {
    width: 100%;
    max-width: 450px;
    height: auto;
    overflow: visible;
}

/* Animacje SVG */
.anim-sun { transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1); transform-origin: center; }
.sun-hidden { opacity: 0; transform: scale(0.5) translateY(-20px); }
.sun-visible { opacity: 1; transform: scale(1) translateY(0); }

.anim-ray { stroke-dasharray: 6; animation: shootRays 2s linear infinite; }
@keyframes shootRays { to { stroke-dashoffset: -12; } }

.room-temp-text { font-family: 'Inter', sans-serif; font-weight: 900; font-size: 22px; transition: fill 0.3s; }
.room-status-text { font-family: 'Inter', sans-serif; font-weight: 700; font-size: 12px; fill: var(--rk-save-gray); transition: fill 0.3s; }

.anim-valve { transition: transform 0.3s; transform-origin: center; }
.valve-closed { fill: var(--rk-save-red); }
.valve-open { fill: var(--rk-save-green); }

/* Mechanizmy (Grid) */
.rk-mech-section {
    padding: 40px 50px;
    background: #ffffff;
}

.rk-mech-section h3 {
    text-align: center;
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-save-dark);
    margin: 0 0 30px 0;
}

.rk-mech-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    gap: 25px;
}

.rk-mech-card {
    background: var(--rk-save-surface);
    border: 1px solid var(--rk-save-border);
    border-radius: 16px;
    padding: 25px;
    transition: transform 0.2s, box-shadow 0.2s;
}

.rk-mech-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 10px 20px rgba(0,0,0,0.05);
    border-color: var(--rk-save-blue);
}

.rk-mech-icon {
    width: 40px;
    height: 40px;
    background: var(--rk-save-light-blue);
    color: var(--rk-save-blue);
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 15px;
}

.rk-mech-card h4 {
    margin: 0 0 10px 0;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-save-dark);
    line-height: 1.4;
}

.rk-mech-card p {
    margin: 0;
    font-size: 14px;
    line-height: 1.6;
    color: #475569;
}

.rk-mech-card a {
    color: var(--rk-save-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dashed var(--rk-save-blue);
}

/* Równanie OZC */
.rk-math-panel {
    background: #f1f5f9;
    border-left: 4px solid var(--rk-save-green);
    padding: 20px;
    border-radius: 0 12px 12px 0;
    margin-top: 30px;
    font-size: 14px;
    color: var(--rk-save-dark);
}

.rk-math-panel code {
    background: #ffffff;
    padding: 4px 8px;
    border-radius: 6px;
    color: var(--rk-save-green);
    font-weight: 900;
    border: 1px solid var(--rk-save-border);
}

@media (max-width: 768px) {
    .rk-save-header, .rk-save-controls, .rk-save-display, .rk-mech-section { padding: 30px 20px; }
    .rk-save-app { grid-template-columns: 1fr; }
    .rk-save-controls { border-right: none; border-bottom: 1px solid var(--rk-save-border); gap: 20px; }
    .rk-stats-bar { flex-direction: column; gap: 10px; }
    .rk-save-header h2 { font-size: 24px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#article-oszczednosci",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/"
    },
    "headline": "Ile można zaoszczędzić na ogrzewaniu podłogowym dzięki automatyce strefowej?",
    "description": "Dowiedz się, jak automatyka strefowa generuje od 18% do 23% oszczędności dzięki redukcji temperatury, harmonogramom i wykorzystaniu zysków pasywnych z nasłonecznienia.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-03",
    "dateModified": "2026-06-03"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#dataset-oszczednosci",
    "name": "Analiza Oszczędności Eksploatacyjnych Ogrzewania Strefowego",
    "description": "Zestawienie mechanizmów redukcji kosztów eksploatacyjnych w oparciu o wytyczne normy PN-EN 12831 oraz wpływ zysków pasywnych na bilans cieplny.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "redukcja strat ciepła przez przegrody",
      "pasywne zyski ciepła w salonie",
      "obniżanie temperatury w pomieszczeniach",
      "dobowy harmonogram ogrzewania podłogowego",
      "zużycie energii na ogrzewanie"
    ],
    "measurementTechnique": "Symulacja redukcji zapotrzebowania cieplnego w oparciu o różnicę temperatur (ΔT) między wnętrzem a otoczeniem, gdzie obniżenie o 1°C daje ok. 6% oszczędności, oraz kompensację 1,5-3,0 kW zysków słonecznych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Redukcja temperatury: Trwałe obniżenie temperatury w sypialniach i garderobach z 22°C do 17°C zmniejsza transfer ciepła przez przegrody zewnętrzne.",
        "Zyski pasywne: Automatyka odcina obwody w strefach nasłonecznionych, zapobiegając przegrzewaniu wnętrz do 26°C.",
        "Profil dobowy: Obniżanie temperatury bazowej w godzinach 8:00-15:30 (nieobecność domowników) drastycznie tnie zużycie kilowatogodzin."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#webapp-oszczednosci",
    "name": "Symulator Oszczędności i Zysków Pasywnych",
    "description": "Narzędzie interaktywne pozwalające symulować procentowe i ilościowe (kWh) oszczędności energii wynikające z obniżenia temperatury w strefach nieużytkowych oraz aktywacji zysków słonecznych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-save-widget" id="oszczednosci-app">
    <div class="rk-save-header">
        <div class="rk-save-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Efektywność Energetyczna
        </div>
        <h2>Ile można zaoszczędzić na ogrzewaniu podłogowym dzięki automatyce strefowej?</h2>
        <p>Wdrożenie pełnego systemu sterowania strefowego pozwala zmniejszyć roczne zużycie energii na cele grzewcze o <strong>18% do 23%</strong>. Sprawdź na symulatorze, jak fizyka budowli pracuje na Twój portfel.</p>
    </div>

    <div class="rk-save-app">
        <div class="rk-save-controls">
            
            <div class="rk-input-block">
                <div class="rk-input-header">
                    <span class="rk-input-title">Temperatura w nieużywanych strefach (np. sypialnie w dzień)</span>
                    <span class="rk-val-box" id="valTemp">22°C</span>
                </div>
                <input type="range" class="rk-temp-slider" id="slideTemp" min="17" max="22" step="0.5" value="22">
                <p style="font-size: 12px; color: var(--rk-save-gray); margin: 0;">Obniżenie o 1°C = ~6% mniejsze straty przez przegrody w danej strefie.</p>
            </div>

            <div class="rk-input-block">
                <div class="rk-input-header">
                    <span class="rk-input-title">Aktywuj pasywne zyski ciepła (Słońce w salonie)</span>
                    <label class="rk-toggle-switch">
                        <input type="checkbox" id="toggleSun">
                        <span class="rk-slider-round"></span>
                    </label>
                </div>
                <p style="font-size: 12px; color: var(--rk-save-gray); margin: 0;">Zamyka pętle w salonie, zapobiegając przegrzaniu do 26°C.</p>
            </div>

        </div>

        <div class="rk-save-display">
            <div class="rk-stats-bar">
                <div class="rk-stat-card">
                    <div class="rk-stat-title">Zaoszczędzona energia</div>
                    <div class="rk-stat-val" id="valKwh">0 <span style="font-size: 16px;">kWh/rok</span></div>
                </div>
                <div class="rk-stat-card">
                    <div class="rk-stat-title">Oszczędność kosztów</div>
                    <div class="rk-stat-val" id="valPln">0 <span style="font-size: 16px;">zł/rok</span></div>
                </div>
            </div>

            <svg class="rk-house-svg" viewBox="0 0 500 280" preserveAspectRatio="xMidYMid meet">
                <path d="M 20 120 L 250 20 L 480 120 L 480 260 L 20 260 Z" fill="#f8fafc" stroke="#e2e8f0" stroke-width="4" stroke-linejoin="round"/>
                <line x1="250" y1="20" x2="250" y2="260" stroke="#cbd5e1" stroke-width="4" stroke-dasharray="8 8"/>
                
                <text x="135" y="80" font-family="Inter" font-weight="800" font-size="14" fill="#64748b" text-anchor="middle">Sypialnia (Dzień)</text>
                <rect x="50" y="100" width="170" height="90" rx="12" fill="#ffffff" stroke="var(--rk-save-border)" stroke-width="2"/>
                <text id="svgTemp1" x="135" y="150" class="room-temp-text" fill="#ef4444" text-anchor="middle">22.0°C</text>
                <text id="svgStat1" x="135" y="175" class="room-status-text" text-anchor="middle">Marnowanie energii</text>
                
                <path id="pipe1" d="M 60 210 Q 135 210 135 240" fill="none" stroke="#ef4444" stroke-width="6" style="transition: stroke 0.3s;"/>
                <circle cx="135" cy="240" r="10" class="anim-valve valve-closed" id="valve1"/>
                
                <text x="365" y="80" font-family="Inter" font-weight="800" font-size="14" fill="#64748b" text-anchor="middle">Salon (Południe)</text>
                
                <g id="svgSunGroup" class="anim-sun sun-hidden" transform="translate(420, 60)">
                    <circle cx="0" cy="0" r="18" fill="#fef08a"/>
                    <path d="M -25 -25 L -10 -10 M 25 -25 L 10 -10 M -25 25 L -10 10 M 25 25 L 10 10" stroke="#facc15" stroke-width="3" class="anim-ray"/>
                </g>

                <rect x="280" y="100" width="170" height="90" rx="12" fill="#ffffff" stroke="var(--rk-save-border)" stroke-width="2"/>
                <text id="svgTemp2" x="365" y="150" class="room-temp-text" fill="#ef4444" text-anchor="middle">22.0°C</text>
                <text id="svgStat2" x="365" y="175" class="room-status-text" text-anchor="middle">Grzanie aktywne</text>
                
                <path id="pipe2" d="M 440 210 Q 365 210 365 240" fill="none" stroke="#ef4444" stroke-width="6" style="transition: stroke 0.3s;"/>
                <circle cx="365" cy="240" r="10" class="anim-valve valve-closed" id="valve2"/>
                
                <rect x="180" y="240" width="140" height="20" rx="6" fill="#1e293b"/>
                <text x="250" y="254" font-family="Inter" font-weight="700" font-size="10" fill="#ffffff" text-anchor="middle">Rozdzielacz</text>
            </svg>
        </div>
    </div>

    <div class="rk-mech-section">
        <h3>Mechanizmy generowania oszczędności eksploatacyjnych</h3>
        <div class="rk-mech-grid">
            <div class="rk-mech-card">
                <div class="rk-mech-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 9v2m0 4v.01"></path><path d="M5 19h14a2 2 0 0 0 1.84-2.92l-7-14a2 2 0 0 0-3.68 0l-7 14A2 2 0 0 0 5 19z"></path></svg>
                </div>
                <h4>Redukcja temperatury (Przegrody)</h4>
                <p>Obniżenie temperatury w garderobach i pustych sypialniach z 22°C do 17°C zmniejsza różnicę temperatur (ΔT) między wnętrzem a otoczeniem. Każdy 1°C w dół to <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/">redukcja strat ciepła</a> o ok. 6%.</p>
            </div>
            
            <div class="rk-mech-card">
                <div class="rk-mech-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line></svg>
                </div>
                <h4>Zyski Pasywne (Słońce)</h4>
                <p>Słoneczny, zimowy dzień dostarcza do salonu 1,5-3,0 kW mocy. Automatyka odcina pętle, co zapobiega darmowemu tłoczeniu wody i chroni przed <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-a-pasywne-zyski-ciepla/">przegrzaniem pomieszczenia do 26°C</a>.</p>
            </div>

            <div class="rk-mech-card">
                <div class="rk-mech-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
                </div>
                <h4>Profil Dobowy (Harmonogram)</h4>
                <p>W systemach z programatorami można obniżyć temperaturę w strefie dziennej podczas pobytu domowników w pracy (8:00 &#8211; 15:30), ucinając <a href="https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/">niepotrzebne zużycie energii grzewczej</a>.</p>
            </div>
        </div>

        <div class="rk-math-panel">
            <strong>Założenia symulacji (Norma PN-EN 12831):</strong> Dom o powierzchni 150 m², EU = 50 kWh/(m²·rok), baza zapotrzebowania 9000 kWh/rok. Średni wskaźnik oszczędności finansowych obliczono dla zróżnicowanych nośników energii (pompa ciepła vs kotły bezpośrednie), w przedziale <code>400 zł - 1200 zł / rok</code>.
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // UI Elements
    const slideTemp = document.getElementById('slideTemp');
    const valTemp = document.getElementById('valTemp');
    const toggleSun = document.getElementById('toggleSun');
    
    // Results
    const valKwh = document.getElementById('valKwh');
    const valPln = document.getElementById('valPln');

    // SVG Elements
    const svgTemp1 = document.getElementById('svgTemp1');
    const svgStat1 = document.getElementById('svgStat1');
    const pipe1 = document.getElementById('pipe1');
    const valve1 = document.getElementById('valve1');

    const svgSunGroup = document.getElementById('svgSunGroup');
    const svgTemp2 = document.getElementById('svgTemp2');
    const svgStat2 = document.getElementById('svgStat2');
    const pipe2 = document.getElementById('pipe2');
    const valve2 = document.getElementById('valve2');

    // Base values
    const BASE_KWH = 9000; 
    const MAX_SAVINGS_PERCENT = 23; // 23%
    const MAX_PLN = 1200; // max pln savings

    function updateSimulation() {
        const currentTemp = parseFloat(slideTemp.value);
        const sunActive = toggleSun.checked;

        valTemp.textContent = currentTemp.toFixed(1) + "°C";

        // Logic calculations
        // Temp range is 22 down to 17 (diff of 5).
        // Let's say dropping 5 degrees gives 15% savings. So 3% per degree.
        const tempDrop = 22 - currentTemp;
        let percentSavings = tempDrop * 3.0; 
        
        // Sun adds 8% savings
        if(sunActive) {
            percentSavings += 8.0;
        }

        // Cap at 23%
        if(percentSavings > MAX_SAVINGS_PERCENT) percentSavings = MAX_SAVINGS_PERCENT;

        const savedKwh = Math.round(BASE_KWH * (percentSavings / 100));
        const savedPln = Math.round((percentSavings / MAX_SAVINGS_PERCENT) * MAX_PLN);

        // Update Text values
        valKwh.innerHTML = `${savedKwh} <span style="font-size: 16px;">kWh/rok</span>`;
        valPln.innerHTML = `${savedPln} <span style="font-size: 16px;">zł/rok</span>`;

        // Update SVG Room 1 (Bedroom)
        svgTemp1.textContent = currentTemp.toFixed(1) + "°C";
        if (currentTemp < 22) {
            svgTemp1.setAttribute('fill', '#0284c7');
            svgStat1.textContent = "Optymalizacja strat";
            pipe1.setAttribute('stroke', '#cbd5e1'); // pipe cool
            valve1.setAttribute('class', 'anim-valve valve-open'); // valve active but restricted (green)
        } else {
            svgTemp1.setAttribute('fill', '#ef4444');
            svgStat1.textContent = "Marnowanie energii";
            pipe1.setAttribute('stroke', '#ef4444'); // pipe hot
            valve1.setAttribute('class', 'anim-valve valve-closed'); // red (warning/closed conceptually in terms of savings, but let's use it as hot)
            // actually let's just make red=hot/waste, green=optimal/saving
        }

        // Update SVG Room 2 (Salon)
        if (sunActive) {
            svgSunGroup.setAttribute('class', 'anim-sun sun-visible');
            svgTemp2.textContent = "22.0°C"; // maintained via passive
            svgTemp2.setAttribute('fill', '#eab308');
            svgStat2.textContent = "Zawór zamknięty (Zyski pasywne)";
            pipe2.setAttribute('stroke', '#cbd5e1'); // heating off
            valve2.setAttribute('class', 'anim-valve valve-open'); // actually closed mechanically, let's just use green for "saving" state
            valve2.style.fill = '#10b981';
        } else {
            svgSunGroup.setAttribute('class', 'anim-sun sun-hidden');
            svgTemp2.textContent = "22.0°C";
            svgTemp2.setAttribute('fill', '#ef4444');
            svgStat2.textContent = "Grzanie aktywne";
            pipe2.setAttribute('stroke', '#ef4444');
            valve2.style.fill = '#ef4444'; // hot
        }
    }

    // Event listeners
    slideTemp.addEventListener('input', updateSimulation);
    toggleSun.addEventListener('change', updateSimulation);

    // Init
    updateSimulation();
});
</script>



<style>
:root {
    --rk-inertia-dark: #0f172a;
    --rk-inertia-blue: #0284c7;
    --rk-inertia-light-blue: #f0f9ff;
    --rk-inertia-red: #ef4444;
    --rk-inertia-red-bg: #fef2f2;
    --rk-inertia-green: #10b981;
    --rk-inertia-green-bg: #f0fdf4;
    --rk-inertia-gray: #64748b;
    --rk-inertia-border: #e2e8f0;
    --rk-inertia-bg: #ffffff;
    --rk-inertia-surface: #f8fafc;
}

.rk-inertia-widget {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-inertia-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.15);
    border: 1px solid var(--rk-inertia-blue);
    overflow: hidden;
}

/* Header */
.rk-inertia-header {
    padding: 40px 50px;
    background: linear-gradient(135deg, var(--rk-inertia-dark) 0%, #1e293b 100%);
    color: #ffffff;
    text-align: center;
    border-bottom: 4px solid var(--rk-inertia-blue);
}

.rk-inertia-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(56, 189, 248, 0.2);
    color: #38bdf8;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid rgba(56, 189, 248, 0.3);
}

.rk-inertia-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-inertia-header p {
    font-size: 16px;
    color: #cbd5e1;
    margin: 0 auto;
    max-width: 750px;
    line-height: 1.6;
}

/* Interactive App area */
.rk-inertia-app {
    padding: 40px 50px;
    background: var(--rk-inertia-surface);
    border-bottom: 1px solid var(--rk-inertia-border);
}

.rk-inertia-controls {
    display: flex;
    justify-content: center;
    gap: 15px;
    margin-bottom: 30px;
    background: #ffffff;
    padding: 10px;
    border-radius: 16px;
    border: 1px solid var(--rk-inertia-border);
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
    max-width: 600px;
    margin-left: auto;
    margin-right: auto;
}

.rk-inertia-btn {
    flex: 1;
    padding: 15px;
    text-align: center;
    background: transparent;
    border: none;
    border-radius: 10px;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-inertia-gray);
    cursor: pointer;
    transition: all 0.3s ease;
}

.rk-inertia-btn.active[data-algo="hysteresis"] {
    background: var(--rk-inertia-red-bg);
    color: var(--rk-inertia-red);
    box-shadow: 0 4px 10px rgba(239, 68, 68, 0.15);
}

.rk-inertia-btn.active[data-algo="tpi"] {
    background: var(--rk-inertia-green-bg);
    color: var(--rk-inertia-green);
    box-shadow: 0 4px 10px rgba(16, 185, 129, 0.15);
}

/* SVG Graph */
.rk-graph-container {
    background: #ffffff;
    border-radius: 20px;
    padding: 30px;
    border: 1px solid var(--rk-inertia-border);
    box-shadow: 0 10px 30px -10px rgba(0,0,0,0.05);
    position: relative;
}

.rk-graph-svg {
    width: 100%;
    height: auto;
    max-height: 300px;
}

/* Animation classes */
.anim-wave {
    stroke-dasharray: 1000;
    stroke-dashoffset: 1000;
    animation: drawWave 3s ease-out forwards;
}

@keyframes drawWave {
    to { stroke-dashoffset: 0; }
}

.graph-layer {
    display: none;
}

.graph-layer.active {
    display: block;
}

.rk-graph-overlay {
    margin-top: 20px;
    padding: 20px;
    border-radius: 12px;
    font-size: 15px;
    line-height: 1.6;
    transition: all 0.3s ease;
}

.overlay-red { background: var(--rk-inertia-red-bg); color: #991b1b; border: 1px solid #fca5a5; }
.overlay-green { background: var(--rk-inertia-green-bg); color: #065f46; border: 1px solid #86efac; }

/* Content Cards Grid */
.rk-inertia-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 25px;
    padding: 40px 50px;
    background: #ffffff;
}

.rk-card-box {
    background: var(--rk-inertia-surface);
    border: 1px solid var(--rk-inertia-border);
    border-radius: 16px;
    padding: 25px;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.rk-card-box:hover {
    transform: translateY(-5px);
    box-shadow: 0 10px 20px rgba(0,0,0,0.05);
    border-color: var(--rk-inertia-blue);
}

.rk-card-box h3 {
    margin: 0 0 15px 0;
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-inertia-dark);
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-card-icon {
    width: 32px;
    height: 32px;
    background: var(--rk-inertia-light-blue);
    color: var(--rk-inertia-blue);
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-card-box p {
    margin: 0 0 15px 0;
    font-size: 14px;
    line-height: 1.6;
    color: #475569;
}

.rk-card-box p:last-child {
    margin: 0;
}

.rk-card-box a {
    color: var(--rk-inertia-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 2px;
}

/* Custom code block for algorithm logic */
.rk-algo-block {
    background: var(--rk-inertia-dark);
    color: #e2e8f0;
    padding: 20px;
    border-radius: 12px;
    font-family: monospace;
    font-size: 13px;
    line-height: 1.5;
    margin-top: 15px;
    border-left: 4px solid var(--rk-inertia-red);
}

.rk-algo-block span { color: #f87171; }
.rk-algo-block .flow-arrow { color: var(--rk-inertia-blue); }

@media (max-width: 768px) {
    .rk-inertia-header, .rk-inertia-app, .rk-inertia-grid { padding: 30px 20px; }
    .rk-inertia-controls { flex-direction: column; gap: 10px; }
    .rk-inertia-header h2 { font-size: 24px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#article-bezwladnosc",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/"
    },
    "headline": "Czy bezwładność cieplna podłogówki uniemożliwia sterowanie strefowe?",
    "description": "Wyjaśnienie wpływu bezwładności cieplnej jastrychu na sterowanie ogrzewaniem. Porównanie zwykłej histerezy termostatu z inteligentnym algorytmem PWM i TPI.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-03",
    "dateModified": "2026-06-03"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#dataset-bezwladnosc",
    "name": "Wpływ algorytmów na bezwładność cieplną posadzki (TPI vs Histereza)",
    "description": "Zestawienie techniczne wykazujące amplitudę wahań temperatur w wylewce betonowej o masie 150 kg/m² przy zastosowaniu różnych typów automatyki grzewczej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "bezwładność cieplna podłogówki",
      "wylewka betonowa na ogrzewanie podłogowe",
      "ile czasu nagrzewa się podłogówka",
      "algorytm TPI PWM",
      "przegrzewanie pomieszczeń histereza",
      "czy warto montować sterowniki do ogrzewania podłogowego"
    ],
    "measurementTechnique": "Porównanie amplitudy wahań temperatury powietrza w czasie: dla klasycznej histerezy (odchylenia > 2°C) względem mikro-impulsów z algorytmu TPI ograniczających fluktuacje do ±0,1 K.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Bezwładność jastrychu: Czas reakcji wynosi od 2 do 4 godzin (masa ok. 150 kg/m² dla wylewki 6,5 cm).",
        "Błąd histerezy: Skutkuje przesterowaniem (overshooting) - posadzka oddaje ciepło długo po wyłączeniu termostatu.",
        "Algorytm TPI/PWM: Autouczenie się dynamiki budynku. Dawkuje ciepło (np. 12 min ON / 48 min OFF), minimalizując błąd."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#webapp-symulator-tpi",
    "name": "Symulator Algorytmów Sterowania: TPI vs Histereza",
    "description": "Wizualne narzędzie edukacyjne generujące wykresy wahań temperatury w czasie rzeczywistym, udowadniające wyższość algorytmów proporcjonalno-całkujących nad zwykłym termostatem.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-inertia-widget" id="bezwladnosc-app">
    <div class="rk-inertia-header">
        <div class="rk-inertia-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Dynamika Cieplna Budynku
        </div>
        <h2>Czy bezwładność cieplna podłogówki uniemożliwia sterowanie strefowe?</h2>
        <p>Wielu uważa, że gruba wylewka betonowa reaguje zbyt wolno na elektronikę. To prawda, ale tylko wtedy, gdy używasz przestarzałych termostatów. Poznaj fizykę stojącą za nowoczesnymi algorytmami.</p>
    </div>

    <div class="rk-inertia-app">
        <div class="rk-inertia-controls">
            <button class="rk-inertia-btn active" data-algo="hysteresis">
                Tani termostat (Histereza)
            </button>
            <button class="rk-inertia-btn" data-algo="tpi">
                Inteligentny sterownik (TPI / PWM)
            </button>
        </div>

        <div class="rk-graph-container">
            <svg class="rk-graph-svg" viewBox="0 0 800 300" preserveAspectRatio="xMidYMid meet">
                <line x1="50" y1="50" x2="750" y2="50" stroke="#e2e8f0" stroke-width="1"/>
                <line x1="50" y1="150" x2="750" y2="150" stroke="#cbd5e1" stroke-width="2" stroke-dasharray="8 8"/>
                <line x1="50" y1="250" x2="750" y2="250" stroke="#e2e8f0" stroke-width="1"/>
                
                <text x="30" y="55" font-family="Inter" font-size="12" fill="#64748b" font-weight="700">24°C</text>
                <text x="30" y="155" font-family="Inter" font-size="12" fill="#0284c7" font-weight="800">22°C</text>
                <text x="30" y="255" font-family="Inter" font-size="12" fill="#64748b" font-weight="700">20°C</text>

                <text x="400" y="285" font-family="Inter" font-size="12" fill="#94a3b8" text-anchor="middle">Czas (Godziny) &rarr;</text>

                <g id="layer-hysteresis" class="graph-layer active">
                    <path d="M 50 150 Q 120 250, 200 150 T 350 50 T 500 150 T 650 250 T 750 150" fill="none" stroke="#ef4444" stroke-width="6" class="anim-wave"/>
                    <circle cx="350" cy="50" r="8" fill="#ffffff" stroke="#ef4444" stroke-width="3"/>
                    <text x="350" y="35" font-family="Inter" font-size="12" font-weight="800" fill="#ef4444" text-anchor="middle">Przegrzanie (Overshooting)</text>
                    
                    <circle cx="650" cy="250" r="8" fill="#ffffff" stroke="#ef4444" stroke-width="3"/>
                    <text x="650" y="275" font-family="Inter" font-size="12" font-weight="800" fill="#ef4444" text-anchor="middle">Niedogrzanie</text>
                </g>

                <g id="layer-tpi" class="graph-layer">
                    <path d="M 50 150 Q 100 160, 150 150 T 250 140 T 350 150 T 450 160 T 550 150 T 650 140 T 750 150" fill="none" stroke="#10b981" stroke-width="6" class="anim-wave"/>
                    
                    <rect x="100" y="270" width="20" height="10" fill="#10b981" opacity="0.6"/>
                    <rect x="200" y="270" width="20" height="10" fill="#10b981" opacity="0.6"/>
                    <rect x="300" y="270" width="20" height="10" fill="#10b981" opacity="0.6"/>
                    <rect x="400" y="270" width="20" height="10" fill="#10b981" opacity="0.6"/>
                    <rect x="500" y="270" width="20" height="10" fill="#10b981" opacity="0.6"/>
                    <rect x="600" y="270" width="20" height="10" fill="#10b981" opacity="0.6"/>
                    <rect x="700" y="270" width="20" height="10" fill="#10b981" opacity="0.6"/>
                    
                    <text x="400" y="130" font-family="Inter" font-size="14" font-weight="800" fill="#10b981" text-anchor="middle">Idealna stabilność: ±0,1°C</text>
                </g>
            </svg>

            <div id="status-hysteresis" class="rk-graph-overlay overlay-red active">
                <strong>Problem: Zwykła histereza.</strong> Posadzka betonowa o grubości 6,5 cm waży ok. 150 kg/m² i działa jak potężny akumulator. Zanim ciepło dotrze do czujnika, beton gromadzi potężną dawkę energii, która uwalnia się długo po wyłączeniu termostatu, przebijając nastawę o ponad 2°C.
            </div>
            
            <div id="status-tpi" class="rk-graph-overlay overlay-green" style="display: none;">
                <strong>Rozwiązanie: Algorytm TPI/PWM.</strong> Sterownik "uczy się" dynamiki Twojego budynku. Zamiast czekać na wychłodzenie, wpuszcza <a href="https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/">krótkie impulsy ciepła</a> (np. 12 minut grzania / 48 minut postoju). Posadzka oddaje ciepło równomiernie, gwarantując idealny komfort bez marnowania energii.
            </div>
        </div>
    </div>

    <div class="rk-inertia-grid">
        <div class="rk-card-box">
            <h3>
                <div class="rk-card-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                </div>
                Fizyka Wylewki
            </h3>
            <p>
                <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">Bezwładność cieplna płyty jastrychowej</a> nie uniemożliwia sterowania, lecz narzuca wyższe wymagania.
            </p>
            <p>
                Czas od włączenia przepływu do podniesienia temperatury na powierzchni o 1 K, wynosi w przypadku <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/">klasycznej wylewki betonowej</a> od 2 do 4 godzin (tzw. <a href="https://projekt-ogrzewania.pl/ile-czasu-nagrzewa-sie-podlogowka/">czas nagrzewania podłogówki</a>). Systemy on-off (zero-jedynkowe) są tu bezradne.
            </p>
        </div>

        <div class="rk-card-box">
            <h3>
                <div class="rk-card-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                </div>
                Błąd Histerezy (&plusmn;0,5&deg;C)
            </h3>
            <p>Najtańsze <a href="https://projekt-ogrzewania.pl/termostat-w-ogrzewaniu-podlogowym/">termostaty pokojowe</a> to destrukcja komfortu w podłogówce.</p>
            <div class="rk-algo-block">
                [ON przy 21.5°C] <br>
                <span class="flow-arrow">&darr;</span> Podłoga startuje <br>
                [OFF przy 22.0°C] <br>
                <span class="flow-arrow">&darr;</span> Jastrych oddaje skumulowane ciepło <br>
                <span>[BŁĄD: Pokój rośnie do 23.5°C]</span>
            </div>
        </div>

        <div class="rk-card-box" style="grid-column: 1 / -1;">
            <h3>
                <div class="rk-card-icon" style="background: var(--rk-inertia-green-bg); color: var(--rk-inertia-green);">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg>
                </div>
                Algorytmy PWM / TPI
            </h3>
            <p>
                Zaawansowane <a href="https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/">sterowniki do ogrzewania podłogowego</a> dysponują funkcją autouczenia (TPI - Time Proportional and Integral).
            </p>
            <p>
                Zamiast czekać na osiągnięcie wartości docelowej, algorytm moduluje szerokość impulsu (PWM). Jeśli układ wie, że pokój nagrzewa się w określonym tempie, dawkuje energię otwierając siłowniki np. na 12 minut w pełnym cyklu godzinnym. Przez resztę czasu pokój dogrzewa się pasywnie z bezwładności jastrychu, co drastycznie ucina straty energetyczne źródła ciepła.
            </p>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btns = document.querySelectorAll('.rk-inertia-btn');
    const layers = document.querySelectorAll('.graph-layer');
    const overlayHysteresis = document.getElementById('status-hysteresis');
    const overlayTpi = document.getElementById('status-tpi');

    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            // Zmiana przycisków
            btns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            const algo = this.getAttribute('data-algo');

            // Resetowanie warstw grafiki i animacji
            layers.forEach(layer => {
                layer.classList.remove('active');
                // Restart animacji path
                const path = layer.querySelector('path');
                if(path) {
                    path.style.animation = 'none';
                    path.offsetHeight; /* trigger reflow */
                    path.style.animation = null; 
                }
            });

            // Wyświetlenie odpowiedniej grafiki i tekstu
            if (algo === 'hysteresis') {
                document.getElementById('layer-hysteresis').classList.add('active');
                overlayHysteresis.style.display = 'block';
                overlayTpi.style.display = 'none';
            } else {
                document.getElementById('layer-tpi').classList.add('active');
                overlayHysteresis.style.display = 'none';
                overlayTpi.style.display = 'block';
            }
        });
    });
});
</script>



<style>
:root {
    --rk-src-dark: #0f172a;
    --rk-src-blue: #0284c7;
    --rk-src-light-blue: #f0f9ff;
    --rk-src-green: #10b981;
    --rk-src-red: #ef4444;
    --rk-src-orange: #f59e0b;
    --rk-src-gray: #64748b;
    --rk-src-border: #e2e8f0;
    --rk-src-bg: #ffffff;
    --rk-src-surface: #f8fafc;
}

.rk-src-widget {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-src-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.15);
    border: 1px solid var(--rk-src-blue);
    overflow: hidden;
}

/* Header */
.rk-src-header {
    padding: 40px 50px;
    background: linear-gradient(135deg, var(--rk-src-dark) 0%, #1e293b 100%);
    color: #ffffff;
    text-align: center;
    border-bottom: 4px solid var(--rk-src-blue);
}

.rk-src-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(56, 189, 248, 0.2);
    color: #38bdf8;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid rgba(56, 189, 248, 0.3);
}

.rk-src-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-src-header p {
    font-size: 16px;
    color: #cbd5e1;
    margin: 0 auto;
    max-width: 750px;
    line-height: 1.6;
}

/* Simulator App */
.rk-src-app {
    display: grid;
    grid-template-columns: 300px 1fr;
    background: var(--rk-src-surface);
    border-bottom: 1px solid var(--rk-src-border);
}

/* Lewy Panel - Wybór źródła */
.rk-src-nav {
    padding: 30px;
    border-right: 1px solid var(--rk-src-border);
    background: #ffffff;
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-src-btn {
    padding: 15px;
    border: 1px solid var(--rk-src-border);
    border-radius: 12px;
    background: var(--rk-src-surface);
    cursor: pointer;
    transition: all 0.3s ease;
    text-align: left;
    display: flex;
    flex-direction: column;
    gap: 5px;
}

.rk-src-btn:hover {
    border-color: var(--rk-src-blue);
    transform: translateX(5px);
}

.rk-src-btn.active {
    background: var(--rk-src-light-blue);
    border-color: var(--rk-src-blue);
    box-shadow: 0 4px 10px rgba(2, 132, 199, 0.1);
}

.rk-src-btn-title {
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-src-dark);
}

.rk-src-btn-sub {
    font-size: 13px;
    color: var(--rk-src-gray);
}

/* Prawy Panel - Dane i Animacja */
.rk-src-content {
    padding: 30px 40px;
    background: linear-gradient(180deg, #f8fafc 0%, #ffffff 100%);
    position: relative;
}

.rk-src-panel {
    display: none;
    animation: fadeIn 0.4s ease forwards;
}

.rk-src-panel.active {
    display: block;
}

@keyframes fadeIn {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

/* Parametry techniczne */
.rk-param-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
    margin-bottom: 25px;
}

.rk-param-item {
    background: #ffffff;
    border: 1px solid var(--rk-src-border);
    padding: 15px;
    border-radius: 12px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
}

.rk-param-label {
    font-size: 12px;
    font-weight: 700;
    color: var(--rk-src-gray);
    text-transform: uppercase;
    margin-bottom: 5px;
}

.rk-param-val {
    font-size: 16px;
    font-weight: 900;
    color: var(--rk-src-blue);
}

/* Tabela Techniczna */
.rk-tech-table {
    width: 100%;
    border-collapse: collapse;
    margin-top: 20px;
    background: #ffffff;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
    border: 1px solid var(--rk-src-border);
}

.rk-tech-table th, .rk-tech-table td {
    padding: 15px;
    text-align: left;
    border-bottom: 1px solid var(--rk-src-border);
    font-size: 14px;
}

.rk-tech-table th {
    background: var(--rk-src-dark);
    color: #ffffff;
    font-weight: 700;
}

.rk-tech-table tr:last-child td {
    border-bottom: none;
}

.rk-tech-table td strong {
    color: var(--rk-src-dark);
}

/* SVG Hydraulika */
.rk-hydraulic-svg {
    width: 100%;
    max-width: 400px;
    height: auto;
    margin: 0 auto 20px auto;
    display: block;
}

.anim-flow { stroke-dasharray: 8; animation: flowDash 1s linear infinite; }
.anim-flow-fast { stroke-dasharray: 8; animation: flowDash 0.3s linear infinite; }
@keyframes flowDash { to { stroke-dashoffset: -16; } }

.anim-pump-err { animation: shakePump 0.3s infinite alternate; }
@keyframes shakePump {
    0% { transform: translate(0, 0) scale(1); filter: drop-shadow(0 0 5px rgba(239,68,68,0.8)); }
    100% { transform: translate(2px, 2px) scale(1.05); filter: drop-shadow(0 0 15px rgba(239,68,68,1)); }
}

/* Sekcja Ryzyka */
.rk-risk-box {
    padding: 40px 50px;
    background: #ffffff;
}

.rk-risk-alert {
    background: #fef2f2;
    border-left: 4px solid var(--rk-src-red);
    padding: 25px;
    border-radius: 0 16px 16px 0;
    margin-bottom: 25px;
}

.rk-risk-alert h3 {
    margin: 0 0 10px 0;
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-src-red);
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-risk-alert p {
    margin: 0;
    font-size: 15px;
    line-height: 1.6;
    color: #475569;
}

/* Informacje z dołu */
.rk-info-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

.rk-info-card {
    background: var(--rk-src-surface);
    padding: 20px;
    border-radius: 12px;
    border: 1px solid var(--rk-src-border);
}

.rk-info-card h4 {
    margin: 0 0 10px 0;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-src-dark);
}

.rk-info-card p {
    margin: 0;
    font-size: 14px;
    line-height: 1.5;
    color: var(--rk-src-gray);
}

.rk-info-card a {
    color: var(--rk-src-blue);
    font-weight: 700;
    text-decoration: underline;
}

@media (max-width: 768px) {
    .rk-src-header, .rk-src-content, .rk-risk-box { padding: 25px 20px; }
    .rk-src-app { grid-template-columns: 1fr; }
    .rk-src-nav { border-right: none; border-bottom: 1px solid var(--rk-src-border); display: flex; flex-direction: column; gap: 10px; padding: 20px; }
    .rk-src-btn { padding: 12px; }
    .rk-param-grid, .rk-info-grid { grid-template-columns: 1fr; gap: 15px; }
    .rk-tech-table th, .rk-tech-table td { padding: 12px 10px; font-size: 13px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#article-zrodlo",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/"
    },
    "headline": "Jak poprawnie dobrać automatykę strefową do pompy ciepła i kotła gazowego?",
    "description": "Techniczna analiza doboru automatyki strefowej do źródła ciepła. Dowiedz się, dlaczego pompa ciepła wymaga bufora i jak uniknąć zjawiska taktowania sprężarki.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-03",
    "dateModified": "2026-06-03"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#dataset-wymagania",
    "name": "Wymagania Techniczne Źródeł Ciepła dla Automatyki Strefowej",
    "description": "Zestawienie parametrów hydraulicznych i komunikacyjnych dla pomp ciepła, kotłów gazowych oraz na pellet.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "dobór automatyki strefowej",
      "minimalny przepływ dla pompy ciepła",
      "bufor ciepła dla pompy ciepła schemat",
      "zawór nadmiarowo-upustowy ABP",
      "taktowanie pompy ciepła"
    ],
    "measurementTechnique": "Określanie minimalnego przepływu (np. 600-1200 dm³/h dla pomp, 400-600 dm³/h dla gazu) oraz pojemności bufora (min. 10-15 dm³/kW) w relacji do protokołów komunikacyjnych (OpenTherm/Modbus).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Pompa Ciepła: Wymaga wysokiego przepływu i zastosowania bufora (min. 50-100 dm³) w układzie, by chronić przed taktowaniem i błędami flow error.",
        "Kocioł Gazowy: Wymaga komunikacji OpenTherm i zazwyczaj wystarczy mu zawór nadmiarowo-upustowy ABP.",
        "Kocioł na Pellet: Wymaga dużego bufora (300-500 dm³) pracującego jako sprzęgło."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#webapp-zrodla",
    "name": "Symulator Wymagań Źródła Ciepła",
    "description": "Interaktywny panel zestawiający wymogi techniczne (przepływ, zład, bufor) dla najpopularniejszych źródeł ciepła na rynku wraz z symulacją ryzyka hydraulicznego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-src-widget" id="zrodlo-app">
    <div class="rk-src-header">
        <div class="rk-src-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg>
            Specyfikacja Urządzeń
        </div>
        <h2>Jak dobrać automatykę strefową do źródła ciepła?</h2>
        <p>Bezmyślne odcinanie pętli przez siłowniki bez uwzględnienia wymogów producenta to najszybsza droga do uszkodzenia sprężarki. Wybierz źródło ciepła, aby poznać wymogi.</p>
    </div>

    <div class="rk-src-app">
        <div class="rk-src-nav">
            <div class="rk-src-btn active" data-src="pc">
                <div class="rk-src-btn-title">Pompa Ciepła</div>
                <div class="rk-src-btn-sub">Monoblok / Split</div>
            </div>
            <div class="rk-src-btn" data-src="gaz">
                <div class="rk-src-btn-title">Kocioł Gazowy</div>
                <div class="rk-src-btn-sub">Kondensacyjny</div>
            </div>
            <div class="rk-src-btn" data-src="pellet">
                <div class="rk-src-btn-title">Kocioł na Pellet</div>
                <div class="rk-src-btn-sub">Paliwa stałe</div>
            </div>
        </div>

        <div class="rk-src-content">
            
            <div id="src-pc" class="rk-src-panel active">
                <div class="rk-param-grid">
                    <div class="rk-param-item">
                        <div class="rk-param-label">Min. Przepływ Masowy</div>
                        <div class="rk-param-val">600 - 1200 dm³/h</div>
                    </div>
                    <div class="rk-param-item">
                        <div class="rk-param-label">Pojemność zładu / Bufor</div>
                        <div class="rk-param-val">Wymagany (Min. 50-100 dm³)</div>
                    </div>
                </div>

                <p style="font-size: 14px; color: #475569; margin-bottom: 15px;">
                    Pompy ciepła pracują najefektywniej przy stałym, wysokim przepływie masowym i niskiej temperaturze zasilania (<strong>30-35°C</strong>). Bezmyślne odcinanie pętli drastycznie zmniejsza przepływ, co powoduje błędy <strong>flow error</strong>.
                </p>

                <table class="rk-tech-table">
                    <tbody><tr>
                        <td><strong>Komunikacja:</strong></td>
                        <td>Protokół cyfrowy (Modbus) lub styk beznapięciowy</td>
                    </tr>
                    <tr>
                        <td><strong>Algorytm:</strong></td>
                        <td>Stała <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">krzywa grzewcza</a> + korekta z czujnika pokojowego</td>
                    </tr>
                </tbody></table>
            </div>

            <div id="src-gaz" class="rk-src-panel">
                <div class="rk-param-grid">
                    <div class="rk-param-item">
                        <div class="rk-param-label">Min. Przepływ Masowy</div>
                        <div class="rk-param-val">400 - 600 dm³/h</div>
                    </div>
                    <div class="rk-param-item">
                        <div class="rk-param-label">Pojemność zładu / Bufor</div>
                        <div class="rk-param-val">Rzadko wymagany (Zawór ABP)</div>
                    </div>
                </div>

                <p style="font-size: 14px; color: #475569; margin-bottom: 15px;">
                    <a href="https://projekt-ogrzewania.pl/kociol-gazowy/">Kocioł kondensacyjny</a> jest bardziej elastyczny. Dzięki palnikom modulowanym potrafi dostosować moc do zapotrzebowania, jednak przy zamknięciu większości stref nadal potrzebuje zachowania minimalnego obiegu wody.
                </p>

                <table class="rk-tech-table">
                    <tbody><tr>
                        <td><strong>Komunikacja:</strong></td>
                        <td>Protokół <strong>OpenTherm</strong> lub załącz/wyłącz</td>
                    </tr>
                    <tr>
                        <td><strong>Algorytm:</strong></td>
                        <td><a href="https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/">Automatyka pogodowa</a> z płynną modulacją</td>
                    </tr>
                </tbody></table>
            </div>

            <div id="src-pellet" class="rk-src-panel">
                <div class="rk-param-grid">
                    <div class="rk-param-item">
                        <div class="rk-param-label">Min. Przepływ Masowy</div>
                        <div class="rk-param-val">Ochrona powrotu</div>
                    </div>
                    <div class="rk-param-item">
                        <div class="rk-param-label">Pojemność zładu / Bufor</div>
                        <div class="rk-param-val">Wymagany (Min. 300-500 dm³)</div>
                    </div>
                </div>

                <p style="font-size: 14px; color: #475569; margin-bottom: 15px;">
                    <a href="https://projekt-ogrzewania.pl/kotly-na-paliwa-stale-w-ogrzewaniu-podlogowym/">Kotły stałopalne</a> nie posiadają możliwości nagłego wyłączenia płomienia. Z tego względu sterowanie strefowe musi opierać się na pobieraniu ciepła ze zładu zgromadzonego w dużym buforze-sprzęgle.
                </p>

                <table class="rk-tech-table">
                    <tbody><tr>
                        <td><strong>Komunikacja:</strong></td>
                        <td>Styk beznapięciowy (ładowanie bufora)</td>
                    </tr>
                    <tr>
                        <td><strong>Algorytm:</strong></td>
                        <td>Stała temp. na buforze + <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/">zawór mieszający</a> na dom</td>
                    </tr>
                </tbody></table>
            </div>

        </div>
    </div>

    <div class="rk-risk-box">
        <div class="rk-risk-alert">
            <h3>
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                Ryzyko braku zrównoważenia hydraulicznego
            </h3>
            <p>
                Jeśli zamontujesz siłowniki strefowe, a instalator nie wyreguluje rotametrów i nie zastosuje zaworu różnicy ciśnień (bypass), <strong>zamknięcie 8 z 10 pętli</strong> spowoduje skierowanie całej wydajności pompy do pozostałych 2 obwodów.
            </p>
        </div>

        <div class="rk-info-grid">
            <div class="rk-info-card">
                <h4>Szumy i uszkodzenia rur</h4>
                <p>Prędkość przepływu drastycznie wzrośnie, wywołując uciążliwe szumy hydrauliczne w podłodze oraz przekraczając dopuszczalną prędkość (0,6 m/s), co prowadzi do erozyjnego niszczenia rur <a href="https://projekt-ogrzewania.pl/rury-do-ogrzewania-podlogowego/">PEX/PERT</a>.</p>
            </div>
            <div class="rk-info-card">
                <h4>Taktowanie Pompy Ciepła</h4>
                <p>Agregat nie odda ciepła do zamkniętych pętli. Spowoduje to natychmiastowy wzrost temperatury powrotu i wyłączenie sprężarki ("taktowanie"), skracając jej żywotność o kilkadziesiąt procent.</p>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btns = document.querySelectorAll('.rk-src-btn');
    const panels = document.querySelectorAll('.rk-src-panel');

    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            // Czyszczenie klas
            btns.forEach(b => b.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));

            // Aktywacja nowego stanu
            this.classList.add('active');
            const targetId = this.getAttribute('data-src');
            document.getElementById('src-' + targetId).classList.add('active');
        });
    });
});
</script>



<style>
:root {
    --rk-roi-dark: #0f172a;
    --rk-roi-blue: #0284c7;
    --rk-roi-light-blue: #f0f9ff;
    --rk-roi-green: #10b981;
    --rk-roi-green-bg: #dcfce7;
    --rk-roi-gold: #eab308;
    --rk-roi-gold-bg: #fef9c3;
    --rk-roi-gray: #64748b;
    --rk-roi-border: #e2e8f0;
    --rk-roi-bg: #ffffff;
    --rk-roi-surface: #f8fafc;
}

.rk-roi-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-roi-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.15);
    border: 1px solid var(--rk-roi-blue);
    overflow: hidden;
}

/* Nagłówek */
.rk-roi-header {
    padding: 40px 50px;
    background: linear-gradient(135deg, var(--rk-roi-dark) 0%, #1e293b 100%);
    color: #ffffff;
    text-align: center;
    border-bottom: 4px solid var(--rk-roi-blue);
}

.rk-roi-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(56, 189, 248, 0.2);
    color: #38bdf8;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid rgba(56, 189, 248, 0.3);
}

.rk-roi-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-roi-header p {
    font-size: 16px;
    color: #cbd5e1;
    margin: 0 auto;
    max-width: 750px;
    line-height: 1.6;
}

/* Interaktywny Kalkulator ROI */
.rk-roi-app {
    display: grid;
    grid-template-columns: 1fr 1fr;
    background: var(--rk-roi-surface);
    border-bottom: 1px solid var(--rk-roi-border);
}

.rk-roi-controls {
    padding: 40px 50px;
    border-right: 1px solid var(--rk-roi-border);
    background: #ffffff;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-input-wrap {
    margin-bottom: 30px;
}

.rk-input-label {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-roi-dark);
    margin-bottom: 15px;
}

.rk-price-tag {
    background: var(--rk-roi-gold-bg);
    color: #ca8a04;
    padding: 6px 12px;
    border-radius: 8px;
    font-family: monospace;
    font-size: 16px;
    font-weight: 900;
    border: 1px solid #fde047;
}

/* Slider */
.rk-slider {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    border-radius: 4px;
    background: var(--rk-roi-border);
    outline: none;
    cursor: pointer;
    margin-bottom: 10px;
}

.rk-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: var(--rk-roi-gold);
    cursor: pointer;
    box-shadow: 0 4px 10px rgba(234, 179, 8, 0.4);
    transition: transform 0.1s;
}

.rk-slider::-webkit-slider-thumb:hover {
    transform: scale(1.15);
}

.rk-preset-btns {
    display: flex;
    gap: 10px;
    margin-top: 15px;
}

.rk-preset-btn {
    flex: 1;
    padding: 10px;
    background: var(--rk-roi-surface);
    border: 1px solid var(--rk-roi-border);
    border-radius: 8px;
    font-size: 12px;
    font-weight: 700;
    color: var(--rk-roi-gray);
    cursor: pointer;
    transition: all 0.2s;
}

.rk-preset-btn:hover { background: #e2e8f0; }

/* Panel Wyników SVG */
.rk-roi-results {
    padding: 40px;
    display: flex;
    flex-direction: column;
    align-items: center;
    background: linear-gradient(180deg, #f8fafc 0%, #ffffff 100%);
    position: relative;
}

.rk-dashboard-card {
    width: 100%;
    background: #ffffff;
    border: 2px solid var(--rk-roi-green);
    border-radius: 16px;
    padding: 25px;
    text-align: center;
    box-shadow: 0 10px 25px -5px rgba(16, 185, 129, 0.15);
    margin-bottom: 25px;
    position: relative;
    z-index: 2;
}

.rk-dash-title {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-roi-gray);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 8px;
}

.rk-dash-val {
    font-size: 42px;
    font-weight: 900;
    color: var(--rk-roi-green);
    font-family: monospace;
}

.rk-dash-sub {
    font-size: 16px;
    color: var(--rk-roi-dark);
    font-weight: 700;
}

/* Animacja Zwrotu (Złote Monety SVG) */
.rk-coins-svg {
    width: 100%;
    max-width: 250px;
    height: 120px;
    overflow: visible;
}

.anim-coin {
    transition: transform 0.8s cubic-bezier(0.34, 1.56, 0.64, 1), opacity 0.4s ease;
    transform-origin: center;
}

/* Tabela Kosztorysowa Grid */
.rk-cost-grid {
    padding: 40px 50px;
    background: #ffffff;
}

.rk-cost-grid h3 {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-roi-dark);
    margin: 0 0 25px 0;
    text-align: center;
}

.rk-cards-wrapper {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 20px;
}

.rk-cost-card {
    background: var(--rk-roi-surface);
    border: 1px solid var(--rk-roi-border);
    border-radius: 16px;
    padding: 20px;
    text-align: center;
    transition: transform 0.2s;
}

.rk-cost-card:hover {
    transform: translateY(-5px);
    border-color: var(--rk-roi-blue);
    box-shadow: 0 10px 20px rgba(0,0,0,0.05);
}

.rk-cost-icon {
    width: 40px;
    height: 40px;
    margin: 0 auto 15px auto;
    background: var(--rk-roi-light-blue);
    color: var(--rk-roi-blue);
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-cost-card h4 {
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-roi-dark);
    margin: 0 0 10px 0;
}

.rk-cost-card p {
    font-size: 13px;
    color: var(--rk-roi-gray);
    margin: 0 0 15px 0;
    line-height: 1.4;
}

.rk-cost-price {
    font-size: 16px;
    font-weight: 900;
    color: var(--rk-roi-blue);
    background: #ffffff;
    padding: 5px 10px;
    border-radius: 8px;
    border: 1px dashed var(--rk-roi-blue);
}

/* Moduł Obliczeń */
.rk-math-section {
    padding: 0 50px 40px;
    background: #ffffff;
}

.rk-math-box {
    background: var(--rk-roi-dark);
    border-radius: 16px;
    padding: 25px;
    color: #e2e8f0;
}

.rk-math-box h3 {
    color: #ffffff;
    font-size: 18px;
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-math-line {
    font-family: monospace;
    font-size: 15px;
    margin-bottom: 10px;
    padding: 10px;
    background: rgba(255,255,255,0.05);
    border-radius: 8px;
    border-left: 3px solid var(--rk-roi-green);
    letter-spacing: 0.5px;
}

.rk-math-line strong {
    color: var(--rk-roi-green);
}

@media (max-width: 768px) {
    .rk-roi-header, .rk-roi-controls, .rk-roi-results, .rk-cost-grid, .rk-math-section { padding: 30px 20px; }
    .rk-roi-app { grid-template-columns: 1fr; }
    .rk-roi-controls { border-right: none; border-bottom: 1px solid var(--rk-roi-border); }
    .rk-roi-header h2 { font-size: 24px; }
    .rk-cards-wrapper { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#article-roi",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/"
    },
    "headline": "Ile kosztuje kompletny system sterowania strefowego? Analiza wydatków i ROI",
    "description": "Kalkulator ROI i szczegółowy kosztorys systemu sterowania strefowego ogrzewaniem podłogowym na 2026 rok. Sprawdź opłacalność dla pompy ciepła i kotła elektrycznego.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-12-29",
    "dateModified": "2026-06-03"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#dataset-roi",
    "name": "Wskaźniki Rentowności Automatyki Strefowej (ROI 2026)",
    "description": "Szczegółowe dane kosztowe i eksploatacyjne systemu sterowania dla domu 150m2 w 2026 roku z podziałem na komponenty.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "cena sterowania strefowego",
      "koszt automatyki do ogrzewania podłogowego",
      "zwrot z inwestycji ROI",
      "oszczędności na ogrzewaniu podłogowym",
      "termostaty pokojowe cena"
    ],
    "measurementTechnique": "Obliczanie Okresu Zwrotu (Payback Period): Podział kosztu inwestycyjnego (4000 zł) przez iloczyn zaoszczędzonej energii (20% z 9000 kWh = 1800 kWh) i jednostkowego kosztu energii (G11 vs G12w).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Koszt kompletny przewodowy: ok. 3800 zł brutto z montażem.",
        "Koszt wariantu bezprzewodowego: ok. 5600 zł brutto z montażem.",
        "Średni roczny uzysk (oszczędność energii końcowej): 1800 kWh."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#webapp-roi",
    "name": "Kalkulator Zwrotu z Inwestycji w Sterowanie Strefowe (ROI)",
    "description": "Interaktywny kalkulator finansowy wyliczający roczne oszczędności (PLN) oraz czas zwrotu w latach na podstawie taryfy energetycznej.",
    "applicationCategory": "BusinessApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-roi-container" id="roi-calc-app">
    <div class="rk-roi-header">
        <div class="rk-roi-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="1" x2="12" y2="23"></line><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Analiza Ekonomiczna
        </div>
        <h2>Ile kosztuje kompletny system strefowy? (ROI)</h2>
        <p>Sprawdź, kiedy inwestycja w inteligentną automatykę dla domu 150 m² zwróci się w Twoim portfelu dzięki obniżeniu zużycia energii o 20%.</p>
    </div>

    <div class="rk-roi-app">
        <div class="rk-roi-controls">
            <div class="rk-input-wrap">
                <div class="rk-input-label">
                    <span>Koszt 1 kWh energii grzewczej</span>
                    <span class="rk-price-tag" id="valPrice">0.95 zł</span>
                </div>
                <input type="range" class="rk-slider" id="slidePrice" min="0.20" max="1.50" step="0.01" value="0.95">
                
                <div class="rk-preset-btns">
                    <button class="rk-preset-btn" onclick="setPrice(0.32)">Pompa Ciepła (G12w)</button>
                    <button class="rk-preset-btn" onclick="setPrice(0.95)">Kocioł Elektryczny (G11)</button>
                </div>
            </div>
            <p style="font-size: 13px; color: var(--rk-roi-gray); line-height: 1.5; margin: 0;">
                *Obliczenia bazują na założeniu: dom 150 m², zapotrzebowanie 9000 kWh/rok, oszczędność z automatyki 20% (1800 kWh), koszt instalacji ok. 4000 zł.
            </p>
        </div>

        <div class="rk-roi-results">
            <div class="rk-dashboard-card">
                <div class="rk-dash-title">Okres zwrotu z inwestycji (ROI)</div>
                <div class="rk-dash-val"><span id="valYears">2.3</span> <span class="rk-dash-sub">lat</span></div>
            </div>
            
            <div style="font-size: 14px; color: var(--rk-roi-gray); margin-bottom: 15px; font-weight: 700;">Zaoszczędzona gotówka co roku:</div>
            
            <svg class="rk-coins-svg" viewBox="0 0 250 120">
                <g class="anim-coin" id="coinStack1" transform="translate(40, 100)">
                    <ellipse cx="25" cy="0" rx="25" ry="10" fill="#facc15" stroke="#ca8a04" stroke-width="2"/>
                    <path d="M 0 0 L 0 -15 A 25 10 0 0 0 50 -15 L 50 0 A 25 10 0 0 1 0 0" fill="#fde047" stroke="#ca8a04" stroke-width="2"/>
                    <ellipse cx="25" cy="-15" rx="25" ry="10" fill="#fef08a" stroke="#ca8a04" stroke-width="2"/>
                    
                    <path d="M 0 -15 L 0 -30 A 25 10 0 0 0 50 -30 L 50 -15 A 25 10 0 0 1 0 -15" fill="#fde047" stroke="#ca8a04" stroke-width="2"/>
                    <ellipse cx="25" cy="-30" rx="25" ry="10" fill="#fef08a" stroke="#ca8a04" stroke-width="2"/>
                </g>
                <g class="anim-coin" id="coinStack2" transform="translate(100, 100)">
                    <ellipse cx="25" cy="0" rx="25" ry="10" fill="#facc15" stroke="#ca8a04" stroke-width="2"/>
                    <path d="M 0 0 L 0 -15 A 25 10 0 0 0 50 -15 L 50 0 A 25 10 0 0 1 0 0" fill="#fde047" stroke="#ca8a04" stroke-width="2"/>
                    <ellipse cx="25" cy="-15" rx="25" ry="10" fill="#fef08a" stroke="#ca8a04" stroke-width="2"/>
                </g>
                <g class="anim-coin" id="coinStack3" transform="translate(160, 100)">
                    <ellipse cx="25" cy="0" rx="25" ry="10" fill="#facc15" stroke="#ca8a04" stroke-width="2"/>
                    <path d="M 0 0 L 0 -15 A 25 10 0 0 0 50 -15 L 50 0 A 25 10 0 0 1 0 0" fill="#fde047" stroke="#ca8a04" stroke-width="2"/>
                    <ellipse cx="25" cy="-15" rx="25" ry="10" fill="#fef08a" stroke="#ca8a04" stroke-width="2"/>
                </g>
                
                <text x="125" y="40" font-family="monospace" font-weight="900" font-size="24" fill="#0f172a" text-anchor="middle" id="valSavings">+ 1710 zł</text>
            </svg>
        </div>
    </div>

    <div class="rk-cost-grid">
        <h3>Szczegółowy kosztorys inwestycyjny 2026</h3>
        <div class="rk-cards-wrapper">
            <div class="rk-cost-card">
                <div class="rk-cost-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="3" width="20" height="14" rx="2" ry="2"></rect><line x1="8" y1="21" x2="16" y2="21"></line><line x1="12" y1="17" x2="12" y2="21"></line></svg>
                </div>
                <h4>Listwa Centralna</h4>
                <p>Moduł master (2 szt.) z obsługą pompy/kotła.</p>
                <div class="rk-cost-price">900 - 1500 zł</div>
            </div>
            <div class="rk-cost-card">
                <div class="rk-cost-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
                </div>
                <h4>Termostaty</h4>
                <p>Programowalne czujniki pokojowe (8 stref).</p>
                <div class="rk-cost-price">960 - 2400 zł</div>
            </div>
            <div class="rk-cost-card">
                <div class="rk-cost-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                </div>
                <h4>Siłowniki NC</h4>
                <p>Termoelektryczne głowice na pętle (12 szt.).</p>
                <div class="rk-cost-price">960 - 1440 zł</div>
            </div>
            <div class="rk-cost-card">
                <div class="rk-cost-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline></svg>
                </div>
                <h4>Materiały</h4>
                <p>Kable, montaż, testy i konfiguracja systemu.</p>
                <div class="rk-cost-price">500 - 1000 zł</div>
            </div>
        </div>
    </div>

    <div class="rk-math-section">
        <div class="rk-math-box">
            <h3>
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--rk-roi-green)" stroke-width="2.5"><polyline points="4 14 10 14 10 20"></polyline><polyline points="20 10 14 10 14 4"></polyline><line x1="14" y1="10" x2="21" y2="3"></line><line x1="3" y1="21" x2="10" y2="14"></line></svg>
                Wyliczenie progu rentowności (Algorytm)
            </h3>
            <div class="rk-math-line">Oszczędności = 1800 kWh &times; <span id="mathPrice">0,95</span> zł/kWh = <strong><span id="mathSavings">1710</span> zł / rok</strong></div>
            <div class="rk-math-line">Okres zwrotu = 4000 zł &divide; <span id="mathSavings2">1710</span> zł/rok = <strong><span id="mathYears">2,34</span> roku</strong></div>
        </div>
    </div>
</div>

<script>
// Funkcja pomocnicza globalna dla przycisków
function setPrice(val) {
    document.getElementById('slidePrice').value = val;
    document.getElementById('slidePrice').dispatchEvent(new Event('input'));
}

document.addEventListener('DOMContentLoaded', function() {
    const slider = document.getElementById('slidePrice');
    const valPrice = document.getElementById('valPrice');
    const valYears = document.getElementById('valYears');
    const valSavings = document.getElementById('valSavings');
    
    const mathPrice = document.getElementById('mathPrice');
    const mathSavings = document.getElementById('mathSavings');
    const mathSavings2 = document.getElementById('mathSavings2');
    const mathYears = document.getElementById('mathYears');

    const stack2 = document.getElementById('coinStack2');
    const stack3 = document.getElementById('coinStack3');

    function calculate() {
        const price = parseFloat(slider.value);
        valPrice.textContent = price.toFixed(2) + ' zł';
        
        // Obliczenia
        const savingsKwh = 1800;
        const totalCost = 4000;
        
        const yearlySavings = savingsKwh * price;
        const roi = totalCost / yearlySavings;

        // Aktualizacja DOM
        valYears.textContent = roi.toFixed(1);
        valSavings.textContent = '+ ' + Math.round(yearlySavings) + ' zł';
        
        mathPrice.textContent = price.toFixed(2).replace('.', ',');
        mathSavings.textContent = Math.round(yearlySavings);
        mathSavings2.textContent = Math.round(yearlySavings);
        mathYears.textContent = roi.toFixed(2).replace('.', ',');

        // Logika wizualna SVG (ilość monet zależna od oszczędności)
        if (yearlySavings < 700) {
            stack2.style.opacity = '0';
            stack2.style.transform = 'translate(100px, 150px)';
            stack3.style.opacity = '0';
            stack3.style.transform = 'translate(160px, 150px)';
        } else if (yearlySavings < 1200) {
            stack2.style.opacity = '1';
            stack2.style.transform = 'translate(100px, 100px)';
            stack3.style.opacity = '0';
            stack3.style.transform = 'translate(160px, 150px)';
        } else {
            stack2.style.opacity = '1';
            stack2.style.transform = 'translate(100px, 100px)';
            stack3.style.opacity = '1';
            stack3.style.transform = 'translate(160px, 100px)';
        }
    }

    slider.addEventListener('input', calculate);
    calculate(); // init
});
</script>



<style>
:root {
    --rk-calc-dark: #0f172a;
    --rk-calc-blue: #0284c7;
    --rk-calc-light-blue: #f0f9ff;
    --rk-calc-red: #ef4444;
    --rk-calc-green: #10b981;
    --rk-calc-orange: #f59e0b;
    --rk-calc-gray: #64748b;
    --rk-calc-border: #e2e8f0;
    --rk-calc-bg: #ffffff;
    --rk-calc-surface: #f8fafc;
}

.rk-calc-widget {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-calc-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.15);
    border: 1px solid var(--rk-calc-blue);
    overflow: hidden;
}

/* Sekcja Nagłówkowa */
.rk-calc-header {
    padding: 40px 50px;
    background: linear-gradient(135deg, var(--rk-calc-dark) 0%, #1e293b 100%);
    color: #ffffff;
    text-align: center;
    border-bottom: 4px solid var(--rk-calc-blue);
}

.rk-calc-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(56, 189, 248, 0.2);
    color: #38bdf8;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid rgba(56, 189, 248, 0.3);
}

.rk-calc-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-calc-header p {
    font-size: 16px;
    color: #cbd5e1;
    margin: 0 auto;
    max-width: 750px;
    line-height: 1.6;
}

/* Aplikacja - Interfejs */
.rk-calc-app {
    display: grid;
    grid-template-columns: 1fr 1fr;
    background: var(--rk-calc-surface);
    border-bottom: 1px solid var(--rk-calc-border);
}

/* Lewa Kolumna - Kontrolki */
.rk-calc-controls {
    padding: 40px 50px;
    border-right: 1px solid var(--rk-calc-border);
    background: #ffffff;
}

.rk-input-group {
    margin-bottom: 30px;
}

.rk-input-group:last-child {
    margin-bottom: 0;
}

.rk-input-label {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-calc-dark);
    margin-bottom: 15px;
}

.rk-val-display {
    background: var(--rk-calc-light-blue);
    color: var(--rk-calc-blue);
    padding: 4px 10px;
    border-radius: 8px;
    font-family: monospace;
    font-size: 16px;
    border: 1px solid rgba(2, 132, 199, 0.2);
}

/* Suwaki */
.rk-range-slider {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    border-radius: 4px;
    background: var(--rk-calc-border);
    outline: none;
    cursor: pointer;
}

.rk-range-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--rk-calc-blue);
    cursor: pointer;
    box-shadow: 0 2px 6px rgba(2, 132, 199, 0.4);
    transition: transform 0.1s;
}

.rk-range-slider::-webkit-slider-thumb:hover {
    transform: scale(1.15);
}

/* Przełączniki (Przyciski) */
.rk-btn-group {
    display: flex;
    gap: 10px;
    background: var(--rk-calc-surface);
    padding: 6px;
    border-radius: 12px;
    border: 1px solid var(--rk-calc-border);
}

.rk-btn-opt {
    flex: 1;
    padding: 10px 0;
    text-align: center;
    background: transparent;
    border: none;
    border-radius: 8px;
    font-size: 15px;
    font-weight: 700;
    color: var(--rk-calc-gray);
    cursor: pointer;
    transition: all 0.2s;
}

.rk-btn-opt.active {
    background: #ffffff;
    color: var(--rk-calc-blue);
    box-shadow: 0 2px 4px rgba(0,0,0,0.05);
    border: 1px solid rgba(2, 132, 199, 0.2);
}

/* Prawa Kolumna - Wyniki i Wizualizacja */
.rk-calc-results {
    padding: 40px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    position: relative;
    background: linear-gradient(180deg, #f8fafc 0%, #ffffff 100%);
}

.rk-result-card {
    width: 100%;
    background: #ffffff;
    border: 2px solid var(--rk-calc-blue);
    border-radius: 16px;
    padding: 20px;
    text-align: center;
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.15);
    margin-bottom: 25px;
    position: relative;
    z-index: 2;
}

.rk-result-title {
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-calc-gray);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 5px;
}

.rk-result-value {
    font-size: 38px;
    font-weight: 900;
    color: var(--rk-calc-dark);
    font-family: monospace;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

.rk-result-unit {
    font-size: 18px;
    color: var(--rk-calc-blue);
}

/* SVG Rotametr */
.rk-rotameter-wrapper {
    position: relative;
    height: 220px;
    width: 100px;
}

.rk-rota-svg {
    width: 100%;
    height: 100%;
    overflow: visible;
}

.anim-float {
    transition: transform 0.6s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.rk-pump-status {
    margin-top: 20px;
    padding: 12px 20px;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 700;
    display: flex;
    align-items: center;
    gap: 10px;
    transition: all 0.3s ease;
}

.status-ok { background: var(--rk-calc-light-blue); color: var(--rk-calc-blue); border: 1px solid rgba(2, 132, 199, 0.2); }
.status-warn { background: #fef3c7; color: #b45309; border: 1px solid #fde047; }
.status-err { background: #fef2f2; color: #b91c1c; border: 1px solid #fca5a5; }

/* Sekcja Teorii i Kroków */
.rk-theory-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 25px;
    padding: 40px 50px;
    background: #ffffff;
}

.rk-step-card {
    background: var(--rk-calc-surface);
    border: 1px solid var(--rk-calc-border);
    border-radius: 16px;
    padding: 25px;
    position: relative;
}

.rk-step-card::before {
    content: attr(data-step);
    position: absolute;
    top: -15px;
    left: 20px;
    width: 32px;
    height: 32px;
    background: var(--rk-calc-blue);
    color: #ffffff;
    font-weight: 900;
    font-size: 16px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 8px;
    box-shadow: 0 4px 6px rgba(2, 132, 199, 0.3);
}

.rk-step-card h3 {
    margin: 10px 0 12px 0;
    font-size: 17px;
    font-weight: 800;
    color: var(--rk-calc-dark);
}

.rk-step-card p {
    margin: 0 0 10px 0;
    font-size: 14px;
    line-height: 1.6;
    color: #475569;
}

.rk-step-card p:last-child {
    margin: 0;
}

.rk-step-card a {
    color: var(--rk-calc-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dashed var(--rk-calc-blue);
}

.rk-math-box {
    background: #e2e8f0;
    padding: 10px;
    border-radius: 8px;
    font-family: monospace;
    font-size: 14px;
    font-weight: 700;
    text-align: center;
    color: var(--rk-calc-dark);
    margin: 15px 0;
    border: 1px dashed var(--rk-calc-gray);
}

/* CTA */
.rk-calc-cta {
    padding: 40px 50px;
    text-align: center;
    background: var(--rk-calc-surface);
    border-top: 1px solid var(--rk-calc-border);
}

.rk-btn-huge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-calc-blue);
    color: #ffffff;
    font-size: 18px;
    font-weight: 900;
    padding: 20px 40px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(2, 132, 199, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-btn-huge:hover {
    transform: translateY(-4px);
    background: #0369a1;
    box-shadow: 0 15px 35px -5px rgba(2, 132, 199, 0.5);
}

@media (max-width: 768px) {
    .rk-calc-header, .rk-calc-controls, .rk-calc-results, .rk-theory-grid, .rk-calc-cta { padding: 30px 20px; }
    .rk-calc-app { grid-template-columns: 1fr; }
    .rk-calc-controls { border-right: none; border-bottom: 1px solid var(--rk-calc-border); }
    .rk-calc-header h2 { font-size: 24px; }
    .rk-btn-huge { width: 100%; font-size: 16px; padding: 18px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#article-algorytm",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/"
    },
    "headline": "Algorytm obliczeniowy: Jak krok po kroku zaprojektować przepływy w sterowaniu strefowym?",
    "description": "Inżynierski poradnik obliczania przepływów masowych, strumieni objętościowych oraz nastaw na rotametrach dla automatyki strefowej ogrzewania podłogowego.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-03",
    "dateModified": "2026-06-03"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#dataset-przeplywy",
    "name": "Parametry Hydrauliczne i Przepływy Masowe dla Stref (PN-EN 12831)",
    "description": "Zestawienie wzorów i parametrów inżynierskich określających natężenie przepływu czynnika grzewczego w zależności od obciążenia cieplnego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator doboru pompy obiegowej",
      "jak ustawić rotametry w ogrzewaniu podłogowym",
      "spadek temperatury zasilania i powrotu",
      "projektowe obciążenie cieplne ozc",
      "opór hydrauliczny pex"
    ],
    "measurementTechnique": "Obliczanie przepływu G = Q_obl / (70 * ΔT) z uwzględnieniem naddatku na sterowanie strefowe (współczynnik 1.15) oraz weryfikacja oporów dławienia dla pomp ze sterowaniem proporcjonalnym ciśnieniowo.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Współczynnik korekcyjny strefowy: 1.15 na szybkie dogrzewanie stref po okresie obniżenia temperatury.",
        "Optymalny spadek temperatury dla posadzek: ΔT = 5K do 7K.",
        "Nastawa rotametru: Całkowity strumień strefy podzielony przez ilość pętli grzewczych w pomieszczeniu."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#webapp-rotametry",
    "name": "Kalkulator Przepływów i Nastaw Rotametrów",
    "description": "Interaktywny symulator pozwalający na obliczenie wymaganej nastawy na rotametrze (w litrach na minutę) na podstawie strat ciepła pomieszczenia i różnicy temperatur.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-calc-widget" id="rotameter-calc-app">
    <div class="rk-calc-header">
        <div class="rk-calc-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="14 2 18 6 7 17 3 17 3 13 14 2"></polygon><line x1="3" y1="22" x2="21" y2="22"></line></svg>
            Kalkulator Inżynierski
        </div>
        <h2>Algorytm obliczeniowy: Jak zaprojektować przepływy strefowe?</h2>
        <p>Projektowanie instalacji ze sterowaniem strefowym wymaga przeliczenia przepływów masowych i weryfikacji dławienia. Sprawdź, jaka powinna być nastawa rotametru dla wybranego pomieszczenia.</p>
    </div>

    <div class="rk-calc-app">
        <div class="rk-calc-controls">
            
            <div class="rk-input-group">
                <div class="rk-input-label">
                    <span>Strata ciepła pomieszczenia (Q)</span>
                    <span class="rk-val-display" id="valQ">850 W</span>
                </div>
                <input type="range" class="rk-range-slider" id="slideQ" min="200" max="2000" step="50" value="850">
            </div>

            <div class="rk-input-group">
                <div class="rk-input-label">
                    <span>Spadek temperatury (&Delta;T)</span>
                </div>
                <div class="rk-btn-group" id="btnGroupDT">
                    <button class="rk-btn-opt active" data-val="5">5 K</button>
                    <button class="rk-btn-opt" data-val="7">7 K</button>
                    <button class="rk-btn-opt" data-val="10">10 K</button>
                </div>
            </div>

            <div class="rk-input-group">
                <div class="rk-input-label">
                    <span>Liczba pętli w pomieszczeniu</span>
                </div>
                <div class="rk-btn-group" id="btnGroupLoops">
                    <button class="rk-btn-opt" data-val="1">1 Pętla</button>
                    <button class="rk-btn-opt active" data-val="2">2 Pętle</button>
                    <button class="rk-btn-opt" data-val="3">3 Pętle</button>
                </div>
            </div>

        </div>

        <div class="rk-calc-results">
            <div class="rk-result-card">
                <div class="rk-result-title">Wymagana nastawa na rotametrze</div>
                <div class="rk-result-value">
                    <span id="outRota">1.40</span>
                    <span class="rk-result-unit">l/min</span>
                </div>
            </div>

            <div class="rk-rotameter-wrapper">
                <svg class="rk-rota-svg" viewBox="0 0 100 220" preserveAspectRatio="xMidYMid meet">
                    <rect x="25" y="10" width="50" height="200" rx="25" fill="#f0f9ff" stroke="#0284c7" stroke-width="4"/>
                    <line x1="25" y1="40" x2="40" y2="40" stroke="#94a3b8" stroke-width="2"/>
                    <text x="12" y="45" font-family="monospace" font-size="12" fill="#64748b">3</text>
                    
                    <line x1="25" y1="90" x2="35" y2="90" stroke="#94a3b8" stroke-width="2"/>
                    <text x="12" y="95" font-family="monospace" font-size="12" fill="#64748b">2</text>
                    
                    <line x1="25" y1="140" x2="40" y2="140" stroke="#94a3b8" stroke-width="2"/>
                    <text x="12" y="145" font-family="monospace" font-size="12" fill="#64748b">1</text>
                    
                    <line x1="25" y1="190" x2="35" y2="190" stroke="#94a3b8" stroke-width="2"/>
                    <text x="12" y="195" font-family="monospace" font-size="12" fill="#64748b">0</text>
                    
                    <g id="svgFloat" class="anim-float" transform="translate(0, 120)">
                        <polygon points="30,0 70,0 60,15 40,15" fill="#ef4444"/>
                        <rect x="40" y="15" width="20" height="5" fill="#b91c1c"/>
                    </g>
                </svg>
            </div>

            <div class="rk-pump-status status-ok" id="statusPump">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                <span>Przepływ optymalny</span>
            </div>
        </div>
    </div>

    <div class="rk-theory-grid">
        <div class="rk-step-card" data-step="1">
            <h3>Obciążenie Cieplne (Q<sub>obl</sub>)</h3>
            <p>Rzeczywiste zapotrzebowanie na moc (<a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/">norma PN-EN 12831</a>) powiększamy o naddatek 15% na szybkie dogrzewanie strefy po obniżeniu temperatury.</p>
            <div class="rk-math-box">Q<sub>obl</sub> = Q &times; 1,15</div>
        </div>

        <div class="rk-step-card" data-step="2">
            <h3>Strumień Masowy (G)</h3>
            <p>Wyznaczamy przepływ wody przez pętle dla założonego <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">spadku temperatury (&Delta;T)</a>. Dla podłogówki wynosi on optymalnie od 5K do 7K.</p>
            <div class="rk-math-box">G = Q<sub>obl</sub> / (70 &times; &Delta;T)</div>
            <p style="font-size: 13px;">Gdzie 70 to współczynnik wynikający z ciepła właściwego wody.</p>
        </div>

        <div class="rk-step-card" data-step="3">
            <h3>Opory i Dławienie</h3>
            <p>Nastawa to wynik podziału strumienia G przez liczbę pętli, konfigurowany na <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrach rozdzielacza</a>.</p>
            <p>Należy zweryfikować sumaryczny opór w kontekście <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">doboru pompy obiegowej</a>, gdy zamykają się strefy (&Delta;p-v).</p>
        </div>
    </div>

    <div class="rk-calc-cta">
        <h3 style="font-size: 24px; font-weight: 900; color: var(--rk-calc-dark); margin: 0 0 15px 0;">Matematyka instalacji bez zgadywania</h3>
        <p style="color: var(--rk-calc-gray); font-size: 16px; margin: 0 auto 30px auto; max-width: 600px; line-height: 1.6;">
            Precyzyjne nastawy to warunek konieczny dla żywotności Twojej pompy ciepła i niższych rachunków. Nie pozostawiaj tego przypadkowi.
        </p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-huge">
            ZAMÓW PROJEKT I OBLICZENIA OZC
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Referencje UI
    const slideQ = document.getElementById('slideQ');
    const valQ = document.getElementById('valQ');
    
    const btnsDT = document.querySelectorAll('#btnGroupDT .rk-btn-opt');
    const btnsLoops = document.querySelectorAll('#btnGroupLoops .rk-btn-opt');
    
    const outRota = document.getElementById('outRota');
    const svgFloat = document.getElementById('svgFloat');
    const statusPump = document.getElementById('statusPump');

    // Stan aplikacji
    let currentQ = parseInt(slideQ.value);
    let currentDT = 5;
    let currentLoops = 2;

    // Aktualizacja kalkulatora
    function updateCalculator() {
        // Obliczenia fizyczne
        const q_obl = currentQ * 1.15;
        const G = q_obl / (70 * currentDT);
        const rotaVal = G / currentLoops;
        
        // Zabezpieczenie przed dziwnymi wartościami
        const finalVal = Math.max(0, parseFloat(rotaVal.toFixed(2)));
        outRota.textContent = finalVal.toFixed(2);

        // SVG Logika: Y=190 dla 0 L/min, Y=40 dla 3 L/min. Różnica = 150px
        // Przesunięcie = (wartość / 3) * 150
        let cappedVal = Math.min(finalVal, 3); 
        let yTransform = 190 - (cappedVal / 3) * 150;
        svgFloat.style.transform = `translate(0px, ${yTransform}px)`;

        // Status pompy (wizualne błędy dławienia / przepływu)
        if (finalVal < 0.5) {
            statusPump.className = 'rk-pump-status status-warn';
            statusPump.innerHTML = `<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg><span>Ryzyko dławienia układu</span>`;
        } else if (finalVal > 2.5) {
            statusPump.className = 'rk-pump-status status-err';
            statusPump.innerHTML = `<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><line x1="15" y1="9" x2="9" y2="15"></line><line x1="9" y1="9" x2="15" y2="15"></line></svg><span>Zbyt duża prędkość (szumy)</span>`;
        } else {
            statusPump.className = 'rk-pump-status status-ok';
            statusPump.innerHTML = `<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg><span>Przepływ optymalny</span>`;
        }
    }

    // Nasłuchiwacze zdarzeń
    slideQ.addEventListener('input', function() {
        currentQ = parseInt(this.value);
        valQ.textContent = currentQ + " W";
        updateCalculator();
    });

    btnsDT.forEach(btn => {
        btn.addEventListener('click', function() {
            btnsDT.forEach(b => b.classList.remove('active'));
            this.classList.add('active');
            currentDT = parseFloat(this.getAttribute('data-val'));
            updateCalculator();
        });
    });

    btnsLoops.forEach(btn => {
        btn.addEventListener('click', function() {
            btnsLoops.forEach(b => b.classList.remove('active'));
            this.classList.add('active');
            currentLoops = parseInt(this.getAttribute('data-val'));
            updateCalculator();
        });
    });

    // Inicjalizacja
    updateCalculator();
});
</script>



<style>
:root {
    --rk-eng-dark: #0f172a;
    --rk-eng-blue: #0284c7;
    --rk-eng-blue-light: #e0f2fe;
    --rk-eng-red: #ef4444;
    --rk-eng-green: #10b981;
    --rk-eng-gray: #64748b;
    --rk-eng-bg: #ffffff;
    --rk-eng-surface: #f8fafc;
    --rk-eng-border: #e2e8f0;
}

.rk-eng-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
    background: var(--rk-eng-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -15px rgba(2, 132, 199, 0.15);
    border: 1px solid var(--rk-eng-blue);
    overflow: hidden;
}

/* Header Section */
.rk-eng-header {
    padding: 40px 50px;
    background: linear-gradient(135deg, var(--rk-eng-dark) 0%, #1e293b 100%);
    color: #ffffff;
    text-align: center;
}

.rk-eng-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(14, 165, 233, 0.2);
    color: #38bdf8;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(56, 189, 248, 0.3);
}

.rk-eng-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-eng-header p {
    font-size: 16px;
    color: #cbd5e1;
    margin: 0 auto;
    max-width: 750px;
    line-height: 1.6;
}

/* Interactive Viewer (Tabs for Long Tail Content) */
.rk-eng-viewer {
    padding: 40px 50px;
    background: var(--rk-eng-surface);
    border-bottom: 1px solid var(--rk-eng-border);
}

.rk-eng-tabs {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 10px;
    margin-bottom: 30px;
    background: #ffffff;
    padding: 10px;
    border-radius: 16px;
    border: 1px solid var(--rk-eng-border);
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-eng-tab {
    padding: 15px;
    text-align: left;
    background: transparent;
    border: 1px solid transparent;
    border-radius: 12px;
    font-size: 15px;
    font-weight: 700;
    color: var(--rk-eng-gray);
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    gap: 12px;
}

.rk-eng-tab:hover {
    background: #f1f5f9;
}

.rk-eng-tab.active {
    background: var(--rk-eng-blue-light);
    color: var(--rk-eng-blue);
    border-color: rgba(2, 132, 199, 0.2);
    box-shadow: 0 4px 10px rgba(2, 132, 199, 0.05);
}

.rk-eng-tab svg {
    flex-shrink: 0;
}

/* Tab Content Area */
.rk-eng-content-box {
    background: #ffffff;
    border-radius: 20px;
    padding: 35px;
    border: 1px solid var(--rk-eng-border);
    min-height: 200px;
    box-shadow: 0 10px 30px -10px rgba(0,0,0,0.05);
}

.rk-eng-panel {
    display: none;
    animation: fadeIn 0.4s ease forwards;
}

.rk-eng-panel.active {
    display: block;
}

@keyframes fadeIn {
    from { opacity: 0; transform: translateY(5px); }
    to { opacity: 1; transform: translateY(0); }
}

.rk-eng-panel h3 {
    margin: 0 0 15px 0;
    font-size: 22px;
    font-weight: 800;
    color: var(--rk-eng-dark);
}

.rk-eng-panel p {
    margin: 0 0 15px 0;
    font-size: 16px;
    line-height: 1.7;
    color: #475569;
}

.rk-eng-panel p:last-child {
    margin-bottom: 0;
}

.rk-eng-panel strong {
    color: var(--rk-eng-dark);
}

.rk-eng-panel a {
    color: var(--rk-eng-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Grid for highlights */
.rk-eng-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 25px;
    padding: 40px 50px;
    background: #ffffff;
}

.rk-eng-card {
    background: var(--rk-eng-surface);
    border: 1px solid var(--rk-eng-border);
    border-radius: 16px;
    padding: 25px;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.rk-eng-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 10px 20px rgba(0,0,0,0.05);
    border-color: var(--rk-eng-blue);
}

.rk-eng-card h4 {
    margin: 0 0 12px 0;
    font-size: 17px;
    font-weight: 800;
    color: var(--rk-eng-dark);
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-eng-card p {
    margin: 0;
    font-size: 14px;
    color: #475569;
    line-height: 1.6;
}

.rk-spec-tag {
    display: inline-block;
    background: #e2e8f0;
    padding: 6px 12px;
    border-radius: 8px;
    font-family: monospace;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-eng-dark);
    margin-top: 15px;
    border: 1px dashed var(--rk-eng-gray);
}

/* CTA Section */
.rk-eng-cta {
    padding: 40px 50px 50px;
    text-align: center;
    background: var(--rk-eng-surface);
    border-top: 1px solid var(--rk-eng-border);
}

.rk-btn-huge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-eng-blue);
    color: #ffffff;
    font-size: 18px;
    font-weight: 900;
    padding: 22px 45px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(2, 132, 199, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    width: 100%;
    max-width: 550px;
}

.rk-btn-huge:hover {
    transform: translateY(-4px);
    background: #0369a1;
    box-shadow: 0 15px 35px -5px rgba(2, 132, 199, 0.5);
}

@media (max-width: 768px) {
    .rk-eng-header, .rk-eng-viewer, .rk-eng-grid, .rk-eng-cta { padding: 30px 20px; }
    .rk-eng-tabs { grid-template-columns: 1fr; gap: 5px; }
    .rk-eng-header h2 { font-size: 24px; }
    .rk-btn-huge { font-size: 15px; padding: 18px 20px; }
    .rk-eng-content-box { padding: 25px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#article-wplyw-na-projekt",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/"
    },
    "headline": "Jak sterowanie strefowe wpływa na projekt ogrzewania podłogowego?",
    "description": "Szczegółowa inżynierska analiza wpływu automatyki strefowej na rozstaw rur, obliczenia OZC, dobór wylewki anhydrytowej i współpracę z systemem rekuperacji.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-03",
    "dateModified": "2026-06-03"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#dataset-wymogi-techniczne",
    "name": "Wymogi Techniczne Projektowania Strefowego (OZC i Rekuperacja)",
    "description": "Zestawienie wytycznych do projektowania instalacji płaszczyznowych z uwzględnieniem oporu cieplnego wylewki, rozstawu rur oraz bilansu mas powietrza.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projektowe obciążenie cieplne OZC",
      "jaki rozstaw rur do ogrzewania podłogowego",
      "wylewka anhydrytowa na ogrzewanie podłogowe opór cieplny",
      "rekuperacja a ogrzewanie podłogowe strefowe",
      "niezależne pętle grzewcze na rozdzielaczu",
      "bilans hydrauliczny pompy obiegowej"
    ],
    "measurementTechnique": "Algorytmizacja parametrów: rozstaw zwojów (10 cm przy oknach, 15 cm w centrum), opór cieplny jastrychu (R = 0,02 m2K/W dla 35mm) oraz różnica temperatur (max ΔT 3-4°C).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Architektura rozdzielacza: Absolutny zakaz mieszania zasilania dla różnych stref termicznych z jednej pętli.",
        "Obliczenia OZC: Wymuszają precyzyjne ustalenie rozstawu rur co 10-15 cm.",
        "Wylewka: Wymagana niska bezwładność, dedykowany anhydryt o grubości 35 mm nad rurką.",
        "Rekuperacja: Kompensacja transferu ciepła z salonu do sypialni poprzez optymalizację nastaw."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#webapp-przewodnik",
    "name": "Interaktywny Przewodnik Projektowania Strefowego",
    "description": "Interfejs edukacyjny umożliwiający przełączanie zagadnień projektowych takich jak obliczenia OZC, parametry jastrychu oraz współpraca z wentylacją mechaniczną.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-eng-container" id="projekt-wplyw-app">
    <div class="rk-eng-header">
        <div class="rk-eng-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Inżynieria Instalacji
        </div>
        <h2>Jak sterowanie strefowe wpływa na projekt ogrzewania podłogowego?</h2>
        <p>Wdrożenie sterowania strefowego diametralnie zmienia podejście do fazy inżynieryjnej. Tego systemu nie da się "dopisać" na etapie montażu rozdzielacza – wymaga on bezwzględnego powiązania od pierwszych kresek na rysunku technicznym.</p>
    </div>

    <div class="rk-eng-viewer">
        <div class="rk-eng-tabs">
            <button class="rk-eng-tab active" data-tab="1">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 3a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3H6a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3V6a3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3h12a3 3 0 0 0 3-3 3 3 0 0 0-3-3z"></path></svg>
                Architektura Pętli
            </button>
            <button class="rk-eng-tab" data-tab="2">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242"></path><path d="M12 12v9"></path><path d="M8 17l4 4 4-4"></path></svg>
                Obliczenia OZC
            </button>
            <button class="rk-eng-tab" data-tab="3">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line></svg>
                Parametry Wylewki
            </button>
            <button class="rk-eng-tab" data-tab="4">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                Wpływ Rekuperacji
            </button>
        </div>

        <div class="rk-eng-content-box">
            <div id="rk-panel-1" class="rk-eng-panel active">
                <h3>Bezwzględny zakaz mieszania pętli grzewczych</h3>
                <p>Niedopuszczalne jest <strong>mieszanie pętli z różnych pomieszczeń na jednym obwodzie rozdzielacza</strong>. To jeden z najczęstszych błędów wykonawstwa amatorskiego.</p>
                <p>Jeśli jedna pętla zasila jednocześnie część salonu i korytarz, poprawne wysterowanie takiej strefy za pomocą <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">siłownika termoelektrycznego</a> staje się fizycznie niemożliwe. W efekcie korytarz będzie permanentnie przegrzewany, a salon niedogrzany (lub odwrotnie), ponieważ sterownik odetnie przepływ wody na całej długości rury.</p>
                <p>Projekt musi zakładać <strong>niezależne pętle grzewcze na rozdzielaczu</strong> dla każdej projektowanej strefy termicznej.</p>
            </div>

            <div id="rk-panel-2" class="rk-eng-panel">
                <h3>Projektowe Obciążenie Cieplne (OZC) a rozstaw rur</h3>
                <p>Podczas wykonywania <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">Projektowego Obciążenia Cieplnego (OZC)</a>, inżynier musi precyzyjnie określić, <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">jaki rozstaw rur do ogrzewania podłogowego</a> zastosować w korelacji z planowanymi strefami.</p>
                <p>Aby system strefowy mógł szybko i elastycznie reagować, rury układa się gęściej w obszarach o większym zapotrzebowaniu. Standardem inżynierskim jest rozstaw <strong>co 10 cm</strong> w <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-obwodowa-w-ogrzewaniu-podlogowym/">strefach brzegowych</a> oraz łazienkach, oraz <strong>co 15 cm</strong> w przestronnych pokojach dziennych i sypialniach.</p>
                <p>Pozwala to na obniżenie temperatury zasilania na źródle (np. pompie ciepła), zachowując odpowiednią moc do sterowania.</p>
            </div>

            <div id="rk-panel-3" class="rk-eng-panel">
                <h3>Niska bezwładność: Idealna wylewka anhydrytowa</h3>
                <p>Skuteczna automatyka strefowa wymaga zminimalizowania tzw. bezwładności cieplnej. Oznacza to przewidzenie odpowiedniej grubości wylewki jastrychowej już na etapie projektu architektonicznego.</p>
                <p>Przy systemach strefowych idealnie sprawdza się <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">wylewka anhydrytowa na ogrzewanie podłogowe</a>. Zalecana grubość to zaledwie <strong>35 mm nad rurą</strong> grzewczą. Anhydryt cechuje się bardzo dobrym przewodnictwem i płynną konsystencją, która idealnie otula rurę, wypierając powietrze.</p>
                <div class="rk-spec-tag">Znikomy opór cieplny: R &approx; 0,02 m&sup2;&middot;K/W</div>
            </div>

            <div id="rk-panel-4" class="rk-eng-panel">
                <h3>Rekuperacja a ogrzewanie podłogowe strefowe</h3>
                <p>W profesjonalnej sekcji projektowej należy kategorycznie uwzględnić integrację z systemem <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/">wentylacji mechanicznej z odzyskiem ciepła (rekuperacją)</a>.</p>
                <p>Rekuperacja powoduje ciągłą wymianę i cyrkulację powietrza, co prowadzi do niezamierzonego <strong>transferu mas ciepła</strong> (np. gorące powietrze przepływa z nagrzanego salonu do chłodnej sypialni podcięciami w drzwiach). Projektant automatyki musi to zrównoważyć poprzez odpowiednie umiejscowienie czujników pokojowych.</p>
                <p>Kluczowa zasada inżynierska: należy zrezygnować z drastycznych różnic nastaw między sąsiadującymi strefami. <strong>Maksymalna zalecana różnica to 3-4°C.</strong></p>
            </div>
        </div>
    </div>

    <div class="rk-eng-grid">
        <div class="rk-eng-card">
            <h4>
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--rk-eng-blue)" stroke-width="2.5"><path d="M22 12h-4l-3 9L9 3l-3 9H2"></path></svg>
                Bilans Hydrauliczny
            </h4>
            <p>Odcinanie stref drastycznie zmienia opory w układzie. <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">Bilans hydrauliczny pompy obiegowej</a> oraz precyzyjne <strong>nastawy rotametrów</strong> są krytyczne dla bezpieczeństwa.</p>
        </div>
        <div class="rk-eng-card">
            <h4>
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--rk-eng-blue)" stroke-width="2.5"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
                Zabezpieczenie przed błędami
            </h4>
            <p>Wszystkie te dane obliczeniowe zawiera profesjonalny projekt, który <strong>eliminuje ryzyko błędów wykonawczych</strong> i awarii pompy ciepła po wylaniu posadzek.</p>
        </div>
    </div>

    <div class="rk-eng-cta">
        <h3 style="font-size: 24px; font-weight: 900; color: var(--rk-eng-dark); margin: 0 0 15px 0;">Zbuduj system, który po prostu działa</h3>
        <p style="color: var(--rk-eng-gray); font-size: 16px; margin: 0 auto 30px auto; max-width: 650px; line-height: 1.6;">
            Nie zgaduj rozstawu rur ani nastaw hydraulicznych. Zamów rzetelną dokumentację inżynierską, która zagwarantuje Ci 100% wykorzystania potencjału automatyki strefowej i zwrot z inwestycji.
        </p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-huge">
            ZAMÓW PROJEKT OGRZEWANIA PODŁOGOWEGO
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const tabs = document.querySelectorAll('.rk-eng-tab');
    const panels = document.querySelectorAll('.rk-eng-panel');

    tabs.forEach(tab => {
        tab.addEventListener('click', function() {
            // Remove active states
            tabs.forEach(t => t.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));

            // Add active state to clicked tab
            this.classList.add('active');

            // Show corresponding panel
            const tabId = this.getAttribute('data-tab');
            document.getElementById('rk-panel-' + tabId).classList.add('active');
        });
    });
});
</script>



<style>
:root {
    --rk-err-dark: #0f172a;
    --rk-err-blue: #0284c7;
    --rk-err-light-blue: #f0f9ff;
    --rk-err-red: #ef4444;
    --rk-err-red-bg: #fef2f2;
    --rk-err-green: #10b981;
    --rk-err-warn: #f59e0b;
    --rk-err-gray: #64748b;
    --rk-err-border: #e2e8f0;
    --rk-err-bg: #ffffff;
}

.rk-err-widget {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-err-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(239, 68, 68, 0.15);
    border: 1px solid var(--rk-err-red);
    overflow: hidden;
}

/* Header */
.rk-err-header {
    padding: 40px 50px;
    background: linear-gradient(135deg, var(--rk-err-dark) 0%, #1e293b 100%);
    color: #ffffff;
    text-align: center;
    border-bottom: 4px solid var(--rk-err-red);
}

.rk-err-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(239, 68, 68, 0.2);
    color: #fca5a5;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid rgba(239, 68, 68, 0.3);
}

.rk-err-header h2 {
    font-size: 28px;
    font-weight: 900;
    color: #ffffff;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-err-header p {
    font-size: 16px;
    color: #cbd5e1;
    margin: 0 auto;
    max-width: 750px;
    line-height: 1.6;
}

/* Interactive App Setup */
.rk-err-app {
    display: flex;
    flex-direction: column;
    padding: 40px 50px;
    background: #f8fafc;
}

/* Nav Menu (Grid) */
.rk-err-nav {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 15px;
    margin-bottom: 30px;
}

.rk-err-btn {
    background: #ffffff;
    border: 1px solid var(--rk-err-border);
    border-radius: 16px;
    padding: 20px;
    text-align: left;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    align-items: flex-start;
    gap: 15px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-err-btn:hover {
    border-color: #cbd5e1;
    transform: translateY(-2px);
}

.rk-err-btn.active {
    background: var(--rk-err-red-bg);
    border-color: var(--rk-err-red);
    box-shadow: 0 10px 20px -5px rgba(239, 68, 68, 0.15);
}

.rk-err-num {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    background: var(--rk-err-border);
    color: var(--rk-err-gray);
    border-radius: 8px;
    font-weight: 900;
    font-size: 14px;
    flex-shrink: 0;
    transition: all 0.3s;
}

.rk-err-btn.active .rk-err-num {
    background: var(--rk-err-red);
    color: #ffffff;
}

.rk-err-btn-text h4 {
    margin: 0 0 5px 0;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-err-dark);
}

.rk-err-btn-text p {
    margin: 0;
    font-size: 13px;
    color: var(--rk-err-gray);
    line-height: 1.4;
}

/* Display Area (SVG + Info) */
.rk-err-display {
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-err-border);
    overflow: hidden;
    box-shadow: 0 10px 30px -10px rgba(0,0,0,0.05);
}

.rk-err-svg-box {
    padding: 30px;
    background: linear-gradient(to bottom, #f8fafc, #ffffff);
    border-bottom: 1px solid var(--rk-err-border);
    position: relative;
    min-height: 250px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-err-svg {
    width: 100%;
    max-width: 600px;
    height: auto;
}

/* SVG Animations per state */
.err-layer { opacity: 0; transition: opacity 0.4s ease; display: none; }
.err-layer.active { opacity: 1; display: block; }

/* Animacje detali */
.anim-sun-ray { stroke-dasharray: 5; animation: shootRay 1.5s linear infinite; }
.anim-crack { stroke-dasharray: 100; stroke-dashoffset: 100; animation: drawCrack 2s forwards infinite alternate; }
.anim-heat-down { transform: translateY(0); animation: dropHeat 1.5s infinite; opacity: 0; }
.anim-wire-err { stroke-dasharray: 8; animation: flowWire 1s linear infinite; }
.anim-temp-flash { animation: flashRed 1s infinite alternate; }
.anim-freeze { animation: flashBlue 1.5s infinite alternate; }

@keyframes shootRay { to { stroke-dashoffset: -20; } }
@keyframes drawCrack { to { stroke-dashoffset: 0; } }
@keyframes dropHeat { 
    0% { transform: translateY(-10px); opacity: 0; } 
    50% { opacity: 1; } 
    100% { transform: translateY(20px); opacity: 0; } 
}
@keyframes flowWire { to { stroke-dashoffset: -16; } }
@keyframes flashRed { to { fill: #ef4444; } }
@keyframes flashBlue { to { fill: #38bdf8; } }

/* Info Box */
.rk-err-info {
    padding: 30px;
}

.rk-err-info h3 {
    margin: 0 0 15px 0;
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-err-red);
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-err-info p {
    margin: 0 0 15px 0;
    font-size: 15px;
    line-height: 1.7;
    color: #475569;
}

.rk-err-info p:last-child { margin: 0; }

.rk-err-info a {
    color: var(--rk-err-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

.rk-tech-spec {
    display: inline-block;
    background: #f1f5f9;
    padding: 8px 15px;
    border-radius: 8px;
    font-family: monospace;
    font-size: 14px;
    color: var(--rk-err-dark);
    font-weight: 700;
    border: 1px dashed var(--rk-err-gray);
    margin-top: 10px;
}

@media (max-width: 768px) {
    .rk-err-header, .rk-err-app { padding: 30px 20px; }
    .rk-err-header h2 { font-size: 24px; }
    .rk-err-nav { grid-template-columns: 1fr; }
    .rk-err-btn { padding: 15px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#article-bledy-wykonawcze",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/"
    },
    "headline": "Jakich błędów wykonawczych unikać przy montażu automatyki strefowej?",
    "description": "Katalog 4 krytycznych błędów przy montażu sterowania strefowego: od błędnej lokalizacji termostatów po brak dylatacji i zbyt cienką izolację podłogową EPS.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-03",
    "dateModified": "2026-06-03"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#dataset-bledy-wykonawcze",
    "name": "Analiza Krytycznych Błędów Montażowych Automatyki Strefowej",
    "description": "Zestawienie normatywnych odchyleń w montażu ogrzewania płaszczyznowego i automatyki, prowadzących do awarii układu.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "błędy montażu automatyki strefowej",
      "lokalizacja termostatu pokojowego",
      "dylatacja ogrzewania podłogowego PN-EN 1264",
      "odwrotne podłączenie siłowników rozdzielacza",
      "grubość styropianu pod podłogówkę EPS 100"
    ],
    "measurementTechnique": "Weryfikacja grubości izolacji (min. 15 cm EPS, lambda = 0.036 W/mK), ciągłości taśmy dylatacyjnej (8-10 mm) oraz poprawności schematu elektrycznego na listwie sterującej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Błędna lokalizacja termostatów (<1.5m lub w strefie nasłonecznienia) fałszuje pomiar.",
        "Brak taśmy dylatacyjnej na granicy stref niweczy sterowanie strefowe i powoduje pękanie jastrychu.",
        "Odwrotne przypisanie siłowników na listwie wywołuje efekt drastycznego przegrzania/wychłodzenia naprzemiennych pokoi.",
        "Zbyt cienka izolacja EPS powoduje ucieczkę ciepła do gruntu pomimo zamknięcia pętli."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#webapp-bledy-wykonawcze",
    "name": "Symulator Awarii i Błędów Sterowania Strefowego",
    "description": "Narzędzie interaktywne prezentujące wizualizację konsekwencji błędów montażowych w instalacji ogrzewania podłogowego (m.in. ucieczka ciepła, fałszywe odczyty, brak dylatacji).",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-err-widget" id="errors-sim-app">
    <div class="rk-err-header">
        <div class="rk-err-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            Katalog Awarii
        </div>
        <h2>Jakich błędów wykonawczych unikać przy montażu automatyki strefowej?</h2>
        <p>Elektronika nie naprawi błędów fizyki. Wybierz jeden z najczęstszych błędów montażowych, aby zobaczyć, jak rujnuje on pracę całego układu grzewczego.</p>
    </div>

    <div class="rk-err-app">
        <div class="rk-err-nav">
            <div class="rk-err-btn active" data-err="1">
                <div class="rk-err-num">1</div>
                <div class="rk-err-btn-text">
                    <h4>Termostat w Słońcu</h4>
                    <p>Zła lokalizacja czujnika ściennego</p>
                </div>
            </div>
            <div class="rk-err-btn" data-err="2">
                <div class="rk-err-num">2</div>
                <div class="rk-err-btn-text">
                    <h4>Brak Dylatacji</h4>
                    <p>Brak izolacji brzegowej między strefami</p>
                </div>
            </div>
            <div class="rk-err-btn" data-err="3">
                <div class="rk-err-num">3</div>
                <div class="rk-err-btn-text">
                    <h4>Pomylone Siłowniki</h4>
                    <p>Odwrotne kable na listwie rozdzielacza</p>
                </div>
            </div>
            <div class="rk-err-btn" data-err="4">
                <div class="rk-err-num">4</div>
                <div class="rk-err-btn-text">
                    <h4>Za Mało Styropianu</h4>
                    <p>Ucieczka ciepła w dół do gruntu</p>
                </div>
            </div>
        </div>

        <div class="rk-err-display">
            <div class="rk-err-svg-box">
                <svg class="rk-err-svg" viewBox="0 0 600 250" preserveAspectRatio="xMidYMid meet">
                    <rect x="50" y="50" width="500" height="150" fill="#f8fafc" stroke="#e2e8f0" stroke-width="4"/>
                    <line x1="50" y1="200" x2="550" y2="200" stroke="#94a3b8" stroke-width="6"/>

                    <g id="layer-err-1" class="err-layer active">
                        <rect x="50" y="70" width="20" height="80" fill="#bae6fd" stroke="#0ea5e9" stroke-width="2"/>
                        <circle cx="20" cy="40" r="25" fill="#fef08a"/>
                        <path d="M 40 55 L 150 120" stroke="#facc15" stroke-width="4" class="anim-sun-ray"/>
                        <rect x="145" y="110" width="20" height="30" rx="3" fill="#ffffff" stroke="#ef4444" stroke-width="3"/>
                        <text x="155" y="100" font-family="Inter" font-weight="800" font-size="14" fill="#ef4444" text-anchor="middle" class="anim-temp-flash">32°C (Fałsz)</text>
                        <path d="M 300 200 L 300 180" stroke="#38bdf8" stroke-width="6"/>
                        <text x="300" y="160" font-family="Inter" font-weight="800" font-size="20" fill="#38bdf8" text-anchor="middle" class="anim-freeze">16°C (Niedogrzanie)</text>
                    </g>

                    <g id="layer-err-2" class="err-layer">
                        <line x1="300" y1="200" x2="300" y2="250" stroke="#ef4444" stroke-width="4" stroke-dasharray="5 5"/>
                        <path d="M 200 225 Q 300 225 400 225" fill="none" stroke="#f87171" stroke-width="15" opacity="0.5"/>
                        <path d="M 300 200 l -5 -20 l 10 -15 l -5 -15" fill="none" stroke="#1e293b" stroke-width="3" class="anim-crack"/>
                        <text x="300" y="140" font-family="Inter" font-weight="800" font-size="16" fill="#ef4444" text-anchor="middle">Pęknięcie jastrychu!</text>
                        <text x="150" y="180" font-family="Inter" font-weight="700" font-size="14" fill="#64748b" text-anchor="middle">Strefa ON</text>
                        <text x="450" y="180" font-family="Inter" font-weight="700" font-size="14" fill="#64748b" text-anchor="middle">Strefa OFF</text>
                    </g>

                    <g id="layer-err-3" class="err-layer">
                        <rect x="50" y="50" width="250" height="150" fill="rgba(56, 189, 248, 0.1)"/>
                        <rect x="300" y="50" width="250" height="150" fill="rgba(239, 68, 68, 0.1)"/>
                        <text x="175" y="130" font-family="Inter" font-weight="900" font-size="24" fill="#38bdf8" text-anchor="middle" class="anim-freeze">14°C</text>
                        <text x="425" y="130" font-family="Inter" font-weight="900" font-size="24" fill="#ef4444" text-anchor="middle" class="anim-temp-flash">28°C</text>
                        
                        <rect x="250" y="10" width="100" height="30" rx="4" fill="#1e293b"/>
                        <text x="300" y="30" font-family="Inter" font-size="12" fill="#fff" text-anchor="middle">Listwa Master</text>
                        <path d="M 280 40 Q 280 70 425 210" fill="none" stroke="#ef4444" stroke-width="4" class="anim-wire-err"/>
                        <path d="M 320 40 Q 320 70 175 210" fill="none" stroke="#38bdf8" stroke-width="4" class="anim-wire-err"/>
                    </g>

                    <g id="layer-err-4" class="err-layer">
                        <rect x="50" y="200" width="500" height="15" fill="#fef08a" stroke="#ca8a04" stroke-width="2"/>
                        <rect x="50" y="215" width="500" height="35" fill="#a8a29e"/>
                        
                        <g class="anim-heat-down" transform="translate(150, 0)">
                            <path d="M 0 215 l 0 20 l -5 -5 M 0 235 l 5 -5" fill="none" stroke="#ef4444" stroke-width="3"/>
                        </g>
                        <g class="anim-heat-down" transform="translate(300, 0)" style="animation-delay: 0.5s;">
                            <path d="M 0 215 l 0 20 l -5 -5 M 0 235 l 5 -5" fill="none" stroke="#ef4444" stroke-width="3"/>
                        </g>
                        <g class="anim-heat-down" transform="translate(450, 0)" style="animation-delay: 1s;">
                            <path d="M 0 215 l 0 20 l -5 -5 M 0 235 l 5 -5" fill="none" stroke="#ef4444" stroke-width="3"/>
                        </g>
                        
                        <text x="300" y="120" font-family="Inter" font-weight="800" font-size="18" fill="#ef4444" text-anchor="middle">Ucieczka ciepła do gruntu</text>
                    </g>
                </svg>
            </div>

            <div class="rk-err-info" id="errInfoText">
                <h3>
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
                    Błędna lokalizacja termostatu
                </h3>
                <p>Montaż <a href="https://projekt-ogrzewania.pl/termostat-w-ogrzewaniu-podlogowym/">czujnika ściennego</a> na wysokości poniżej 1,5 m, w miejscach bezpośrednio nasłonecznionych, w przeciągach przy drzwiach zewnętrznych lub na ścianach zewnętrznych o niskim oporze cieplnym.</p>
                <p><strong>Konsekwencja:</strong> Całkowite zafałszowanie odczytu temperatury operacyjnej. Termostat "myśli", że w pokoju jest gorąco od słońca i permanentnie zamyka strefę, co prowadzi do drastycznego niedogrzania pomieszczenia zimą.</p>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btns = document.querySelectorAll('.rk-err-btn');
    const layers = document.querySelectorAll('.err-layer');
    const infoText = document.getElementById('errInfoText');

    const contentMap = {
        '1': `
            <h3>
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
                Błędna lokalizacja termostatu
            </h3>
            <p>Montaż <a href="https://projekt-ogrzewania.pl/termostat-w-ogrzewaniu-podlogowym/">czujnika ściennego</a> na wysokości poniżej 1,5 m, w miejscach bezpośrednio nasłonecznionych, w przeciągach przy drzwiach zewnętrznych lub na ścianach zewnętrznych o niskim oporze cieplnym.</p>
            <p><strong>Konsekwencja:</strong> Całkowite zafałszowanie odczytu temperatury operacyjnej. Termostat nagrzewa się od słońca i permanentnie zamyka strefę, co prowadzi do drastycznego niedogrzania pomieszczenia w okresie mrozów.</p>
        `,
        '2': `
            <h3>
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
                Brak dylatacji i izolacji brzegowej
            </h3>
            <p>Niezastosowanie taśmy dylatacyjnej o grubości 8-10 mm na granicy niezależnie sterowanych stref grzewczych.</p>
            <p><strong>Konsekwencja:</strong> Ciepło z włączonej strefy przechodzi bocznie przez płytę betonową do strefy wyłączonej. Niweczy to całkowicie sens regulacji strefowej i prowadzi do pękania wylewki na skutek naprężeń termicznych.</p>
            <div class="rk-tech-spec">Norma inżynierska: PN-EN 1264-4 (<a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/">Więcej o dylatacjach</a>)</div>
        `,
        '3': `
            <h3>
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
                Odwrotne podłączenie siłowników
            </h3>
            <p>Błędne przypisanie <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">siłownika termoelektrycznego</a> z pokoju "A" do pętli zasilającej pokój "B" na listwie sterującej rozdzielacza.</p>
            <p><strong>Konsekwencja:</strong> Gdy w pokoju "A" robi się zimno, termostat otwiera pętlę w pokoju "B". Objawia się to drastycznym wychłodzeniem jednego pomieszczenia przy jednoczesnym przegrzewaniu drugiego. Obwody muszą być testowane elektrycznie przed wylewką.</p>
        `,
        '4': `
            <h3>
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
                Ignorowanie grubości styropianu
            </h3>
            <p>Układanie automatyki w budynkach o niedostatecznej izolacji termicznej od gruntu.</p>
            <p><strong>Konsekwencja:</strong> Straty ciepła do gruntu są tak wysokie, że system strefowy nie jest w stanie szybko skompensować temperatur. Ucieczka energii odbywa się bez względu na stan zamknięcia siłowników, marnując prąd pompy ciepła.</p>
            <div class="rk-tech-spec">Wymóg normatywny: min. 15 cm styropianu EPS 100 (lambda = 0,036 W/mK) (<a href="https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/">Czytaj o grubości izolacji</a>)</div>
        `
    };

    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            // Zmiana przycisków
            btns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            const errId = this.getAttribute('data-err');

            // Zmiana warstw SVG
            layers.forEach(layer => layer.classList.remove('active'));
            document.getElementById('layer-err-' + errId).classList.add('active');

            // Aktualizacja treści HTML z efektem zanikania
            infoText.style.opacity = '0';
            setTimeout(() => {
                infoText.innerHTML = contentMap[errId];
                infoText.style.opacity = '1';
            }, 200);
        });
    });
});
</script>



<style>
:root {
    --rk-cs-dark: #0f172a;
    --rk-cs-blue: #0284c7;
    --rk-cs-light-blue: #f0f9ff;
    --rk-cs-teal: #0d9488;
    --rk-cs-teal-bg: #f0fdfa;
    --rk-cs-orange: #f97316;
    --rk-cs-gray: #64748b;
    --rk-cs-border: #e2e8f0;
    --rk-cs-bg: #ffffff;
    --rk-cs-surface: #f8fafc;
}

.rk-cs-widget {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
    background: var(--rk-cs-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -15px rgba(13, 148, 136, 0.15);
    border: 1px solid var(--rk-cs-teal);
    overflow: hidden;
}

/* Header */
.rk-cs-header {
    padding: 40px 50px;
    background: linear-gradient(135deg, var(--rk-cs-dark) 0%, #134e4a 100%);
    color: #ffffff;
    text-align: center;
    border-bottom: 4px solid var(--rk-cs-teal);
}

.rk-cs-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(45, 212, 191, 0.2);
    color: #5eead4;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid rgba(45, 212, 191, 0.3);
}

.rk-cs-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-cs-header p {
    font-size: 16px;
    color: #ccfbf1;
    margin: 0 auto;
    max-width: 750px;
    line-height: 1.6;
}

/* App Layout */
.rk-cs-app {
    display: grid;
    grid-template-columns: 1fr 350px;
    background: var(--rk-cs-surface);
    border-bottom: 1px solid var(--rk-cs-border);
}

/* Left: Interactive Content */
.rk-cs-content-col {
    padding: 40px 50px;
    background: #ffffff;
    border-right: 1px solid var(--rk-cs-border);
}

.rk-cs-tabs {
    display: flex;
    gap: 10px;
    margin-bottom: 30px;
    background: var(--rk-cs-surface);
    padding: 6px;
    border-radius: 12px;
    border: 1px solid var(--rk-cs-border);
}

.rk-cs-tab {
    flex: 1;
    padding: 12px 15px;
    text-align: center;
    background: transparent;
    border: none;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-cs-gray);
    cursor: pointer;
}

.rk-cs-tab.active {
    background: #ffffff;
    color: var(--rk-cs-teal);
    box-shadow: 0 2px 6px rgba(0,0,0,0.05);
    border: 1px solid rgba(13, 148, 136, 0.2);
}

.rk-cs-panel {
    display: none;
}

.rk-cs-panel.active {
    display: block;
}

.rk-cs-panel h3 {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-cs-dark);
    margin: 0 0 15px 0;
}

.rk-cs-panel p {
    font-size: 15px;
    line-height: 1.7;
    color: #475569;
    margin: 0 0 15px 0;
}

.rk-cs-panel a {
    color: var(--rk-cs-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 2px;
}

/* Right: Static SVG Visualization */
.rk-cs-visual-col {
    padding: 30px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    background: var(--rk-cs-teal-bg);
}

.rk-cs-svg {
    width: 100%;
    height: auto;
    max-width: 300px;
}

.rk-svg-label {
    font-family: 'Inter', sans-serif;
    font-weight: 800;
    font-size: 14px;
    fill: var(--rk-cs-dark);
}

.rk-svg-temp {
    font-family: monospace;
    font-weight: 900;
    font-size: 20px;
}

.rk-temp-hot { fill: #ef4444; }
.rk-temp-cool { fill: #0ea5e9; }
.rk-temp-warm { fill: #f59e0b; }

.rk-cs-summary-box {
    margin-top: 20px;
    background: #ffffff;
    border: 1px solid rgba(13, 148, 136, 0.3);
    border-radius: 12px;
    padding: 15px;
    width: 100%;
    text-align: center;
}

.rk-cs-summary-val {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-cs-teal);
    font-family: monospace;
}

.rk-cs-summary-text {
    font-size: 12px;
    font-weight: 700;
    color: var(--rk-cs-gray);
    text-transform: uppercase;
}

/* Data Grid Section */
.rk-cs-data-section {
    padding: 40px 50px;
    background: #ffffff;
}

.rk-cs-data-section h3 {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-cs-dark);
    text-align: center;
    margin: 0 0 30px 0;
}

.rk-cs-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 20px;
}

.rk-cs-card {
    background: var(--rk-cs-surface);
    border: 1px solid var(--rk-cs-border);
    border-radius: 16px;
    padding: 20px;
}

.rk-cs-card h4 {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-cs-gray);
    text-transform: uppercase;
    margin: 0 0 10px 0;
    letter-spacing: 0.5px;
}

.rk-cs-val {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-cs-dark);
    margin-bottom: 5px;
}

.rk-cs-desc {
    font-size: 13px;
    color: #475569;
    line-height: 1.5;
}

@media (max-width: 768px) {
    .rk-cs-header, .rk-cs-content-col, .rk-cs-visual-col, .rk-cs-data-section { padding: 30px 20px; }
    .rk-cs-app { grid-template-columns: 1fr; }
    .rk-cs-content-col { border-right: none; border-bottom: 1px solid var(--rk-cs-border); }
    .rk-cs-tabs { flex-direction: column; }
    .rk-cs-header h2 { font-size: 24px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#article-casestudy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/"
    },
    "headline": "Case Study: Sterowanie strefowe w domu 200 m² z poddaszem – Gdańsk",
    "description": "Analiza wdrożenia bezprzewodowej automatyki strefowej w domu z poddaszem użytkowym. Zobacz, jak wyeliminowano przegrzewanie od zysków pasywnych i obniżono koszty.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-03",
    "dateModified": "2026-06-03"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#dataset-casestudy",
    "name": "Case Study: Bilans cieplny 200m2 Gdańsk",
    "description": "Dane empiryczne z realizacji systemu ogrzewania strefowego na poddaszu użytkowym i parterze z uwzględnieniem zysków słonecznych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "ogrzewanie podłogowe na poddaszu",
      "pasywne zyski ciepła",
      "wylewka anhydrytowa na ogrzewanie podłogowe",
      "rekuperacja a ogrzewanie podłogowe strefowe",
      "termostaty bezprzewodowe do podłogówki"
    ],
    "measurementTechnique": "Pomiary temperatury powietrza w rozwarstwieniu kondygnacyjnym przed i po zastosowaniu siłowników strefowych. Analiza wpływu oporu cieplnego wylewki anhydrytowej oraz rekuperacji na stabilizację klimatu.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Problem: Kumulacja ciepła na poddaszu i przegrzewanie salonu przez okna południowe przy pojedynczej krzywej grzewczej.",
        "Rozwiązanie: 8 stref bezprzewodowych, optymalizacja oporu cieplnego wylewki i ograniczenie zjawiska transferu ciepła przez rekuperację.",
        "Wynik: Redukcja temperatury na poddaszu do 19°C, stabilne 21°C w salonie i zwrot z inwestycji ROI rzędu 2,8 roku."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#webapp-casestudy",
    "name": "Interaktywne Case Study Ogrzewania",
    "description": "Widget edukacyjny prezentujący problem, rozwiązanie i twarde dane z wdrożenia automatyki na dwóch kondygnacjach.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-cs-widget" id="casestudy-app">
    <div class="rk-cs-header">
        <div class="rk-cs-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
            Case Study z budowy
        </div>
        <h2>Praktyka: Dom 200 m² z poddaszem – Gdańsk</h2>
        <p>Pani Katarzyna zainwestowała w świetną pompę ciepła, ale pierwszy sezon grzewczy okazał się koszmarem. Zobacz, jak precyzyjne strefowanie rozwiązało problem fizyki budynku.</p>
    </div>

    <div class="rk-cs-app">
        <div class="rk-cs-content-col">
            <div class="rk-cs-tabs">
                <button class="rk-cs-tab active" data-cs="problem">Problem</button>
                <button class="rk-cs-tab" data-cs="solution">Rozwiązanie</button>
                <button class="rk-cs-tab" data-cs="results">Wynik</button>
            </div>

            <div id="cs-problem" class="rk-cs-panel active">
                <h3>Brak równowagi na kondygnacjach</h3>
                <p>Dom Pani Katarzyny (parter + poddasze użytkowe) był sterowany tylko z jednego punktu. <a href="https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/">Sterowanie pogodowe w ogrzewaniu podłogowym</a> sprawdzało się na parterze, ale zawiodło całkowicie w ujęciu całego budynku.</p>
                <p>Zimą, w słoneczne dni, wielkie okna w salonie generowały ogromne <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-a-pasywne-zyski-ciepla/">pasywne zyski ciepła</a>. W tym samym czasie, ciepłe powietrze zgodnie z prawami fizyki unosiło się do góry klatką schodową. Skutek? Salon nagrzewał się do 25°C, a <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-nadaje-sie-do-drewnianego-stropu/">ogrzewanie podłogowe na poddaszu</a> w sypialniach dusiło domowników temperaturą rzędu 24°C.</p>
            </div>

            <div id="cs-solution" class="rk-cs-panel">
                <h3>Bezinwazyjna korekta automatyką</h3>
                <p>Ponieważ dom był już wykończony, brakowało przewodów podtynkowych. Rozwiązaniem było zastosowanie <a href="https://projekt-ogrzewania.pl/termostat-w-ogrzewaniu-podlogowym/">termostatów bezprzewodowych do podłogówki</a>.</p>
                <p>Wiedząc, <a href="https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/">jak zaplanować rozmieszczenie pętli grzewczych</a> (z inwentaryzacji powykonawczej), przypisaliśmy 12 siłowników do dwóch niezależnych listew radiowych. Sypialnie na poddaszu otrzymały restrykcyjne nastawy czasowe (19°C w nocy), a salon funkcję natychmiastowego odcięcia przy pojawieniu się słońca.</p>
            </div>

            <div id="cs-results" class="rk-cs-panel">
                <h3>Harmonia termiczna i zwrot gotówki</h3>
                <p>Zastosowanie niezależnych pętli drastycznie zmieniło jakość życia. Termostaty zamknęły dopływ wody na poddasze w ciągu dnia, pozwalając na swobodne oddawanie nadmiaru ciepła z parteru.</p>
                <p>Obecnie <a href="https://projekt-ogrzewania.pl/jak-dziala-ogrzewanie-podlogowe/">wodne ogrzewanie podłogowe</a> dostarcza energię wybiórczo. W łazienkach utrzymuje się stałe 24°C, w salonie stabilne 21.5°C, a w pokojach sypialnianych 19.0°C. Inwestycja w automatykę zwróci się Pani Katarzynie w niecałe 3 lata.</p>
            </div>
        </div>

        <div class="rk-cs-visual-col">
            <svg class="rk-cs-svg" viewBox="0 0 200 300">
                <path d="M 10 120 L 100 20 L 190 120 L 190 280 L 10 280 Z" fill="#ffffff" stroke="#0f172a" stroke-width="4" stroke-linejoin="round"/>
                
                <rect x="20" y="130" width="160" height="70" rx="8" fill="#f0f9ff" stroke="#0ea5e9" stroke-width="2"/>
                <text x="100" y="150" class="rk-svg-label" text-anchor="middle">Poddasze (Sypialnia)</text>
                <text x="100" y="180" class="rk-svg-temp rk-temp-cool" text-anchor="middle">19.0°C</text>
                
                <rect x="20" y="210" width="160" height="60" rx="8" fill="#fffbeb" stroke="#f59e0b" stroke-width="2"/>
                <text x="100" y="235" class="rk-svg-label" text-anchor="middle">Parter (Salon)</text>
                <text x="100" y="260" class="rk-svg-temp rk-temp-warm" text-anchor="middle">21.5°C</text>
                
                <circle cx="160" cy="50" r="15" fill="#fde047"/>
                <path d="M 160 20 L 160 30 M 160 70 L 160 80 M 130 50 L 140 50 M 180 50 L 190 50" stroke="#facc15" stroke-width="3"/>
            </svg>

            <div class="rk-cs-summary-box">
                <div class="rk-cs-summary-text">Zaoszczędzona energia</div>
                <div class="rk-cs-summary-val">-22%</div>
            </div>
        </div>
    </div>

    <div class="rk-cs-data-section">
        <h3>Parametry techniczno-finansowe inwestycji</h3>
        <div class="rk-cs-grid">
            <div class="rk-cs-card">
                <h4>Powierzchnia i System</h4>
                <div class="rk-cs-val">200 m²</div>
                <div class="rk-cs-desc">Wodne ogrzewanie płaszczyznowe, 8 stref bezprzewodowych.</div>
            </div>
            <div class="rk-cs-card">
                <h4>Źródło Ciepła</h4>
                <div class="rk-cs-val">Pompa Ciepła</div>
                <div class="rk-cs-desc">Brak przegrzewów poprawił efektywność COP o ok. 14%.</div>
            </div>
            <div class="rk-cs-card">
                <h4>Koszt Automatyki</h4>
                <div class="rk-cs-val">5 600 zł</div>
                <div class="rk-cs-desc">System RF (bez kucia), 2 listwy, 12 siłowników NC.</div>
            </div>
            <div class="rk-cs-card">
                <h4>Szacowany ROI</h4>
                <div class="rk-cs-val">~2,8 roku</div>
                <div class="rk-cs-desc">Przy średnim zużyciu energii 10 500 kWh rocznie.</div>
            </div>
            <div class="rk-cs-card">
                <h4>Rodzaj Jastrychu</h4>
                <div class="rk-cs-val">Anhydryt 35 mm</div>
                <div class="rk-cs-desc"><a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">Niski opór cieplny wylewki</a> ułatwia błyskawiczną reakcję automatyki na zyski pasywne.</div>
            </div>
            <div class="rk-cs-card">
                <h4>Wentylacja</h4>
                <div class="rk-cs-val">Max &Delta;T 3&deg;C</div>
                <div class="rk-cs-desc">Precyzyjne strefowanie eliminuje transfer mas gorącego powietrza przy <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/">pracy rekuperacji</a>.</div>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const tabs = document.querySelectorAll('.rk-cs-tab');
    const panels = document.querySelectorAll('.rk-cs-panel');

    tabs.forEach(tab => {
        tab.addEventListener('click', function() {
            // Natychmiastowa zmiana klas bez animacji w JS
            tabs.forEach(t => t.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));

            this.classList.add('active');
            const targetId = this.getAttribute('data-cs');
            document.getElementById('cs-' + targetId).classList.add('active');
        });
    });
});
</script>



<style>
:root {
    --rk-anti-dark: #0f172a;
    --rk-anti-gray: #64748b;
    --rk-anti-border: #e2e8f0;
    --rk-anti-bg: #ffffff;
    --rk-anti-surface: #f8fafc;
    
    --rk-anti-red: #ef4444;
    --rk-anti-red-bg: #fef2f2;
    --rk-anti-orange: #f97316;
    --rk-anti-orange-bg: #fff7ed;
    --rk-anti-green: #10b981;
    --rk-anti-green-bg: #f0fdf4;
}

.rk-anti-widget {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
    background: var(--rk-anti-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(15, 23, 42, 0.1);
    border: 1px solid var(--rk-anti-border);
    overflow: hidden;
}

/* Header */
.rk-anti-header {
    padding: 40px 50px;
    background: var(--rk-anti-surface);
    text-align: center;
    border-bottom: 1px solid var(--rk-anti-border);
}

.rk-anti-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: #e2e8f0;
    color: #475569;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
}

.rk-anti-header h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-anti-dark);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-anti-header p {
    font-size: 16px;
    color: var(--rk-anti-gray);
    margin: 0 auto;
    max-width: 750px;
    line-height: 1.6;
}

/* Interactive Calculator */
.rk-anti-app {
    padding: 40px 50px;
    background: #ffffff;
    border-bottom: 1px solid var(--rk-anti-border);
}

.rk-anti-slider-wrap {
    background: var(--rk-anti-surface);
    padding: 30px;
    border-radius: 16px;
    border: 1px solid var(--rk-anti-border);
    margin-bottom: 30px;
}

.rk-anti-slider-top {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
}

.rk-anti-slider-title {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-anti-dark);
}

.rk-anti-val {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-anti-dark);
    font-family: monospace;
    background: #ffffff;
    padding: 5px 15px;
    border-radius: 8px;
    border: 1px solid var(--rk-anti-border);
}

/* Range Slider */
.rk-area-slider {
    -webkit-appearance: none;
    width: 100%;
    height: 10px;
    border-radius: 5px;
    background: linear-gradient(to right, var(--rk-anti-red) 0%, var(--rk-anti-orange) 40%, var(--rk-anti-green) 100%);
    outline: none;
}

.rk-area-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: #ffffff;
    border: 3px solid var(--rk-anti-dark);
    cursor: pointer;
    box-shadow: 0 4px 8px rgba(0,0,0,0.15);
    transition: transform 0.1s;
}

.rk-area-slider::-webkit-slider-thumb:hover {
    transform: scale(1.15);
}

/* Result Visualization */
.rk-anti-result {
    display: grid;
    grid-template-columns: 250px 1fr;
    gap: 30px;
    align-items: center;
}

.rk-anti-svg-box {
    background: var(--rk-anti-surface);
    border-radius: 16px;
    padding: 20px;
    display: flex;
    justify-content: center;
    align-items: center;
    height: 200px;
    border: 1px solid var(--rk-anti-border);
}

.rk-house-svg {
    width: 100%;
    max-width: 180px;
    height: auto;
    transition: all 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.svg-zone {
    transition: fill 0.4s ease, opacity 0.4s ease;
}

.rk-anti-info {
    padding: 20px;
    border-radius: 16px;
    transition: all 0.4s ease;
}

.rk-anti-info h3 {
    font-size: 22px;
    font-weight: 900;
    margin: 0 0 10px 0;
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-anti-info p {
    font-size: 15px;
    line-height: 1.6;
    margin: 0;
}

/* Grid for "Kiedy NIE warto" scenarios */
.rk-anti-scenarios {
    padding: 40px 50px;
    background: var(--rk-anti-surface);
}

.rk-anti-scenarios h3 {
    text-align: center;
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-anti-dark);
    margin: 0 0 30px 0;
}

.rk-scen-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: 25px;
}

.rk-scen-card {
    background: #ffffff;
    border-top: 4px solid var(--rk-anti-red);
    border-radius: 12px;
    padding: 25px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
    border-left: 1px solid var(--rk-anti-border);
    border-right: 1px solid var(--rk-anti-border);
    border-bottom: 1px solid var(--rk-anti-border);
    transition: transform 0.2s;
}

.rk-scen-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 10px 20px rgba(0,0,0,0.05);
}

.rk-scen-icon {
    width: 44px;
    height: 44px;
    background: var(--rk-anti-red-bg);
    color: var(--rk-anti-red);
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 15px;
}

.rk-scen-card h4 {
    margin: 0 0 10px 0;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-anti-dark);
}

.rk-scen-card p {
    margin: 0;
    font-size: 14px;
    line-height: 1.6;
    color: var(--rk-anti-gray);
}

@media (max-width: 768px) {
    .rk-anti-header, .rk-anti-app, .rk-anti-scenarios { padding: 30px 20px; }
    .rk-anti-result { grid-template-columns: 1fr; gap: 20px; }
    .rk-anti-svg-box { height: 160px; }
    .rk-anti-header h2 { font-size: 24px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#article-kiedy-zbedne",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/"
    },
    "headline": "Kiedy sterowanie strefowe to zbędny wydatek? (Anty-poradnik)",
    "description": "Zestawienie sytuacji budowlanych i parametrów instalacji (np. mały dom, otwarta przestrzeń, płyta fundamentowa), w których inwestycja w automatykę strefową nie przyniesie zwrotu z inwestycji.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-12-29",
    "dateModified": "2026-06-03"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#dataset-kiedy-zbedne",
    "name": "Kryteria rezygnacji z automatyki strefowej",
    "description": "Baza danych określająca warunki brzegowe kubatury i układu architektonicznego, przy których wystarczy sterowanie jednym termostatem referencyjnym.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kiedy nie warto sterowania strefowego",
      "ogrzewanie podłogowe w małym domu",
      "open space a podłogówka",
      "jeden termostat w małym domu",
      "ogrzewanie w płycie fundamentowej a strefy",
      "płyta fundamentowa grzewcza sterowanie",
      "zbilansowana instalacja jeden profil użytkowania"
    ],
    "measurementTechnique": "Algorytm oparty na korelacji powierzchni całkowitej budynku (< 70m2) oraz braku wydzielonych fizycznie stref o odmiennych wymaganiach temperaturowych (np. open space w loftach) i bezwładności termicznej płyt akumulacyjnych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Mały metraż: Dla domów i mieszkań o powierzchni 60-70 m² bezwładność cieplna bryły wyrównuje temperatury samoistnie.",
        "Otwarta przestrzeń (Open Space): Brak przegród fizycznych uniemożliwia utrzymanie asymetrii temperatur nawet przy zastosowaniu siłowników.",
        "Jeden profil użytkowania: Dla instalacji precyzyjnie zbilansowanych rotametrami, gdzie w każdym pomieszczeniu oczekiwana jest ta sama temperatura.",
        "Płyta fundamentowa grzewcza: Ogromna bezwładność cieplna fundamentu uniemożliwia szybką reakcję, czyniąc podział strefowy nieskutecznym."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#webapp-metraz",
    "name": "Audyt opłacalności: Czy potrzebujesz stref?",
    "description": "Interaktywny kalkulator powierzchni (suwak), weryfikujący sensowność wydatków na automatykę strefową w zależności od metrażu i podziału budynku.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-anti-widget" id="anty-poradnik-app">
    <div class="rk-anti-header">
        <div class="rk-anti-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            Kiedy to zbędny wydatek?
        </div>
        <h2>Dla kogo sterowanie strefowe to wyrzucanie pieniędzy w błoto?</h2>
        <p>Inżynieria wymaga obiektywizmu. Choć automatyka daje niesamowity komfort, istnieją układy budynków, w których montaż siłowników i zaawansowanych listew po prostu się nie zwróci. Sprawdź, czy Twój dom tego potrzebuje.</p>
    </div>

    <div class="rk-anti-app">
        <div class="rk-anti-slider-wrap">
            <div class="rk-anti-slider-top">
                <div class="rk-anti-slider-title">Zadeklaruj powierzchnię użytkową:</div>
                <div class="rk-anti-val" id="areaVal">120 m²</div>
            </div>
            <input type="range" class="rk-area-slider" id="areaSlider" min="40" max="250" step="10" value="120">
        </div>

        <div class="rk-anti-result">
            <div class="rk-anti-svg-box">
                <svg class="rk-house-svg" id="houseSvg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid meet">
                    <polygon points="10,40 50,10 90,40" fill="#cbd5e1" stroke="#475569" stroke-width="2" stroke-linejoin="round"/>
                    <rect x="15" y="40" width="70" height="50" fill="#ffffff" stroke="#475569" stroke-width="2"/>
                    
                    <rect id="zone1" x="25" y="55" width="20" height="35" class="svg-zone" fill="#ef4444" opacity="0.8"/>
                    <rect id="zone2" x="55" y="55" width="20" height="35" class="svg-zone" fill="#f97316" opacity="0.8"/>
                    <g id="zone3" class="svg-zone" opacity="0">
                        <rect x="90" y="50" width="30" height="40" fill="#ffffff" stroke="#475569" stroke-width="2"/>
                        <polygon points="90,50 105,35 120,50" fill="#cbd5e1" stroke="#475569" stroke-width="2"/>
                        <rect x="95" y="55" width="20" height="35" fill="#10b981" opacity="0.8"/>
                    </g>
                </svg>
            </div>

            <div class="rk-anti-info" id="infoBox">
                </div>
        </div>
    </div>

    <div class="rk-anti-scenarios">
        <h3>Kiedy na pewno NIE potrzebujesz stref?</h3>
        <div class="rk-scen-grid">
            
            <div class="rk-scen-card">
                <div class="rk-scen-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline></svg>
                </div>
                <h4>Mały dom / mieszkanie do 70 m²</h4>
                <p>Na bardzo małych metrażach bezwładność cieplna posadzki oraz mieszanie się mas powietrza wyrównują temperaturę samoistnie. Jeden referencyjny termostat zamontowany w strefie dziennej jest w 100% wystarczający.</p>
            </div>

            <div class="rk-scen-card">
                <div class="rk-scen-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line></svg>
                </div>
                <h4>Typowy "Open Space" (Loft)</h4>
                <p>Jeśli cały dół domu (salon, jadalnia, kuchnia, korytarz) to w pełni otwarta przestrzeń bez fizycznych drzwi i ścian działowych, utrzymanie różnicy np. 3°C pomiędzy kuchnią a kanapą jest technicznie niemożliwe. Ciepło i tak się wymiesza.</p>
            </div>

            <div class="rk-scen-card">
                <div class="rk-scen-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
                </div>
                <h4>Jeden profil temperaturowy</h4>
                <p>Jeżeli jesteś pewny, że w sypialni, łazience i salonie chcesz mieć identyczną temperaturę np. 21°C całą dobę. Wtedy wystarczy precyzyjne <strong>zbilansowanie przepływów na rotametrach</strong> i sterowanie stałą krzywą grzewczą pompy ciepła.</p>
            </div>

            <div class="rk-scen-card">
                <div class="rk-scen-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M2 22h20"/><path d="M2 18h20"/><path d="M6 14v4"/><path d="M18 14v4"/><path d="M10 14v4"/><path d="M14 14v4"/></svg>
                </div>
                <h4>Płyta fundamentowa grzewcza</h4>
                <p>Systemy zatopione głęboko w grubej płycie fundamentowej posiadają potężną bezwładność cieplną sięgającą kilkunastu godzin. Ze względu na akumulację ciepła strefowanie jest tu skrajnie powolne i wystarczy oparcie się na globalnej <strong>automatyce pogodowej</strong>.</p>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const slider = document.getElementById('areaSlider');
    const valDisplay = document.getElementById('areaVal');
    const infoBox = document.getElementById('infoBox');
    
    // SVG Elements
    const houseSvg = document.getElementById('houseSvg');
    const zone1 = document.getElementById('zone1');
    const zone2 = document.getElementById('zone2');
    const zone3 = document.getElementById('zone3');

    function updateApp() {
        const area = parseInt(slider.value);
        valDisplay.textContent = area + " m²";

        if (area <= 70) {
            // RED: ZBĘDNE
            infoBox.style.background = 'var(--rk-anti-red-bg)';
            infoBox.style.color = '#991b1b';
            infoBox.style.border = '1px solid #fca5a5';
            infoBox.innerHTML = `
                <h3 style="color: var(--rk-anti-red);">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>
                    Zbędny wydatek
                </h3>
                <p>Na takim metrażu kubatura jest zbyt mała. Jeden dobrze umiejscowiony termostat centralny załatwi sprawę. Instalowanie stref na siłę nie wygeneruje zauważalnych oszczędności finansowych, by zwrócić koszt zakupu automatyki.</p>
            `;
            
            houseSvg.style.transform = 'scale(0.8)';
            houseSvg.setAttribute('viewBox', '0 0 100 100');
            zone1.setAttribute('fill', 'var(--rk-anti-red)');
            zone2.setAttribute('fill', 'var(--rk-anti-red)');
            zone3.style.opacity = '0';

        } else if (area > 70 && area <= 120) {
            // ORANGE: PODZIAŁ NA 2
            infoBox.style.background = 'var(--rk-anti-orange-bg)';
            infoBox.style.color = '#9a3412';
            infoBox.style.border = '1px solid #fdba74';
            infoBox.innerHTML = `
                <h3 style="color: var(--rk-anti-orange);">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                    Podział na Dzień / Noc
                </h3>
                <p>Dla średniego domu optymalnym wyborem pod kątem ROI (zwrotu inwestycji) jest podział na zaledwie 2 duże strefy. Jedna obsługująca strefę dzienną (salon/kuchnia), a druga z chłodniejszą nastawą dla sekcji sypialnianej.</p>
            `;

            houseSvg.style.transform = 'scale(0.95)';
            houseSvg.setAttribute('viewBox', '0 0 100 100');
            zone1.setAttribute('fill', 'var(--rk-anti-orange)');
            zone2.setAttribute('fill', 'var(--rk-anti-blue)');
            zone3.style.opacity = '0';

        } else {
            // GREEN: PEŁNE STREFY
            infoBox.style.background = 'var(--rk-anti-green-bg)';
            infoBox.style.color = '#065f46';
            infoBox.style.border = '1px solid #86efac';
            infoBox.innerHTML = `
                <h3 style="color: var(--rk-anti-green);">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="20 6 9 17 4 12"></polyline></svg>
                    Pełne strefowanie ma sens!
                </h3>
                <p>Przy takim metrażu dom ma wiele pomieszczeń o odmiennym przeznaczeniu, naświetleniu (zyski pasywne) i zapotrzebowaniu na ciepło. Pełna automatyka (osobny termostat w każdym pokoju) z pewnością obniży rachunki o obiecane 20%.</p>
            `;

            houseSvg.style.transform = 'scale(1.1)';
            houseSvg.setAttribute('viewBox', '0 0 130 100');
            zone1.setAttribute('fill', 'var(--rk-anti-green)');
            zone2.setAttribute('fill', 'var(--rk-anti-blue)');
            zone3.style.opacity = '1';
        }
    }

    slider.addEventListener('input', updateApp);
    updateApp(); // init
});
</script>



<style>
:root {
    --rk-faq-dark: #0f172a;
    --rk-faq-blue: #0284c7;
    --rk-faq-light-blue: #f0f9ff;
    --rk-faq-green: #10b981;
    --rk-faq-gray: #64748b;
    --rk-faq-border: #e2e8f0;
    --rk-faq-bg: #ffffff;
    --rk-faq-hover: #f8fafc;
}

.rk-faq-widget {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-faq-bg);
    border-radius: 24px;
    box-shadow: 0 15px 35px -10px rgba(2, 132, 199, 0.1);
    border: 1px solid var(--rk-faq-border);
    overflow: hidden;
}

/* Nagłówek */
.rk-faq-header {
    padding: 40px 50px;
    background: var(--rk-faq-hover);
    border-bottom: 1px solid var(--rk-faq-border);
}

.rk-faq-badge {
    display: inline-flex;
    align-items: center;
    background: var(--rk-faq-light-blue);
    color: var(--rk-faq-blue);
    padding: 6px 14px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid rgba(2, 132, 199, 0.2);
}

.rk-faq-header h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-faq-dark);
    margin: 0 0 10px 0;
    line-height: 1.3;
}

.rk-faq-header p {
    font-size: 16px;
    color: var(--rk-faq-gray);
    margin: 0;
    line-height: 1.6;
}

/* Lista Akordeonów (Bez grafik i SVG) */
.rk-faq-list {
    padding: 20px 50px 40px;
}

.rk-faq-item {
    border-bottom: 1px solid var(--rk-faq-border);
}

.rk-faq-item:last-child {
    border-bottom: none;
}

.rk-faq-question {
    width: 100%;
    text-align: left;
    background: transparent;
    border: none;
    padding: 25px 0;
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-faq-dark);
    cursor: pointer;
    display: flex;
    justify-content: space-between;
    align-items: center;
    transition: color 0.2s ease;
}

.rk-faq-question:hover {
    color: var(--rk-faq-blue);
}

/* Wskaźnik stanu (+ / -) w czystym CSS */
.rk-faq-indicator {
    display: inline-block;
    width: 24px;
    height: 24px;
    position: relative;
    flex-shrink: 0;
    margin-left: 15px;
}

.rk-faq-indicator::before,
.rk-faq-indicator::after {
    content: '';
    position: absolute;
    background-color: var(--rk-faq-blue);
    transition: transform 0.3s ease;
}

.rk-faq-indicator::before {
    top: 11px;
    left: 2px;
    width: 20px;
    height: 2px;
}

.rk-faq-indicator::after {
    top: 2px;
    left: 11px;
    width: 2px;
    height: 20px;
}

.rk-faq-item.active .rk-faq-indicator::after {
    transform: rotate(90deg);
    opacity: 0;
}

.rk-faq-item.active .rk-faq-indicator::before {
    transform: rotate(180deg);
}

.rk-faq-item.active .rk-faq-question {
    color: var(--rk-faq-blue);
    padding-bottom: 15px;
}

/* Treść odpowiedzi */
.rk-faq-answer {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.4s ease;
    opacity: 0;
}

.rk-faq-item.active .rk-faq-answer {
    max-height: 500px;
    opacity: 1;
}

.rk-faq-answer-inner {
    padding: 0 0 25px 0;
    font-size: 15px;
    line-height: 1.7;
    color: #475569;
}

.rk-faq-answer-inner a {
    color: var(--rk-faq-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px solid transparent;
    transition: border-color 0.2s;
}

.rk-faq-answer-inner a:hover {
    border-color: var(--rk-faq-blue);
}

.rk-faq-answer-inner strong {
    color: var(--rk-faq-dark);
}

@media (max-width: 768px) {
    .rk-faq-header, .rk-faq-list { padding: 30px 25px; }
    .rk-faq-header h2 { font-size: 24px; }
    .rk-faq-question { font-size: 16px; padding: 20px 0; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/"
    },
    "headline": "FAQ – Najczęstsze pytania o sterowanie strefowe ogrzewaniem",
    "description": "Techniczne odpowiedzi na najczęstsze pytania inwestorów dotyczące sterowania strefowego, algorytmów TPI oraz integracji z pompą ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-12-29",
    "dateModified": "2026-06-03"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#dataset-faq",
    "name": "Parametry eksploatacyjne automatyki strefowej (Baza Wiedzy)",
    "description": "Zestawienie technicznych parametrów eksploatacyjnych automatyki podłogowej, w tym pobór mocy siłowników, wartości histerezy oraz minimalne zład wody dla pomp ciepła.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "zużycie prądu przez siłowniki termoelektryczne",
      "histereza termostatu pokojowego",
      "algorytm TPI w podłogówce",
      "sprzęgło hydrauliczne dla pompy ciepła",
      "sterowanie strefowe w starym domu"
    ],
    "measurementTechnique": "Analiza danych empirycznych dotyczących pracy siłowników (1,2W - 2W), wymagań zładu wody (50-100 dm³) oraz dokładności regulacji PWM/TPI (±0,1°C).",
    "mainEntity": {
      "@type": "FAQPage",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Czy sterowanie strefowe ma sens przy ogrzewaniu podłogowym i pompie ciepła?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Tak, sterowanie strefowe ma głęboki sens z pompą ciepła, pod warunkiem zastosowania w instalacji zbiornika buforowego (min. 50-100 dm³) lub sprzęgła hydraulicznego. Zapobiega to drastycznemu ograniczaniu przepływu masowego przez parownik i chroni sprężarkę przed taktowaniem, gwarantując wysoką efektywność COP."
          }
        },
        {
          "@type": "Question",
          "name": "Czy można zainstalować automatykę strefową do istniejącej podłogówki?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Montaż automatyki strefowej na gotowej instalacji jest możliwy, ale wymaga zastosowania systemu bezprzewodowego (brak możliwości ukrycia kabli pod tynkiem) oraz weryfikacji rozdzielacza. Jeśli pętle z różnych pokoi zostały fizycznie połączone lub wymieszane na belce rozdzielacza, system nie będzie działał poprawnie bez kosztownej przeróbki hydraulicznej."
          }
        },
        {
          "@type": "Question",
          "name": "Jaka jest optymalna różnica temperatur (histereza) dla sterowników podłogówki?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Dla wodnego ogrzewania podłogowego klasyczna histeza nie powinna przekraczać ±0,2°C, jednak zalecanym standardem jest całkowita rezygnacja z histezy na rzecz algorytmu TPI/PWM. Zapobiega to kumulacji błędu wynikającego z bezwładności cieplnej jastrychu i utrzymuje temperaturę powietrza ze stabilnością do 0,1°C."
          }
        },
        {
          "@type": "Question",
          "name": "Czy siłowniki termoelektryczne zużywają dużo prądu w skali roku?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Pojedynczy siłownik termoelektryczny pobiera średnio od 1,2 W do 2 W mocy wyłącznie w stanie zasilania (otwarcia). Przy 12 siłownikach pracujących średnio przez 10 godzin na dobę w okresie grzewczym trwającym 180 dni, sumaryczne zużycie energii wynosi około 43 kWh, co generuje roczny koszt rzędu zaledwie 40-45 zł."
          }
        }
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#webapp-faq",
    "name": "Interaktywna Baza Wiedzy HVAC (FAQ)",
    "description": "Moduł typu accordion umożliwiający szybki dostęp do wyselekcjonowanych odpowiedzi technicznych z zakresu automatyki i hydrauliki instalacyjnej.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-faq-widget">
    <div class="rk-faq-header">
        <div class="rk-faq-badge">Baza Wiedzy</div>
        <h2>FAQ – Najczęstsze pytania o sterowanie strefowe ogrzewaniem</h2>
        <p>Rozwiewamy techniczne wątpliwości inwestorów. Konkretne odpowiedzi, liczby i normy bez lania wody.</p>
    </div>

    <div class="rk-faq-list" id="rkFaqAccordion">
        
        <div class="rk-faq-item">
            <button class="rk-faq-question" aria-expanded="false">
                <h3>1. Czy sterowanie strefowe ma sens przy ogrzewaniu podłogowym i pompie ciepła?</h3>
                <span class="rk-faq-indicator"></span>
            </button>
            <div class="rk-faq-answer">
                <div class="rk-faq-answer-inner">
                    Tak, sterowanie strefowe ma głęboki sens z <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompą ciepła</a>, pod warunkiem zastosowania w instalacji zbiornika buforowego (min. <strong>50-100 dm³</strong>) lub sprzęgła hydraulicznego. Zapobiega to drastycznemu ograniczaniu przepływu masowego przez parownik i chroni sprężarkę przed taktowaniem, gwarantując wysoką efektywność instalacji oraz chroniąc sprzęt przed usterkami.
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <button class="rk-faq-question" aria-expanded="false">
                <h3>2. Czy można zainstalować automatykę strefową do istniejącej podłogówki?</h3>
                <span class="rk-faq-indicator"></span>
            </button>
            <div class="rk-faq-answer">
                <div class="rk-faq-answer-inner">
                    Montaż automatyki strefowej <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-remontowanym-budynku-czy-warto/">na gotowej instalacji remontowanej</a> jest możliwy, ale wymaga zastosowania systemu bezprzewodowego (brak możliwości ukrycia kabli pod tynkiem) oraz weryfikacji rozdzielacza. Jeśli pętle z różnych pokoi zostały fizycznie połączone lub wymieszane na belce rozdzielacza, system nie będzie działał poprawnie bez kosztownej przeróbki hydraulicznej.
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <button class="rk-faq-question" aria-expanded="false">
                <h3>3. Jaka jest optymalna różnica temperatur (histereza) dla sterowników podłogówki?</h3>
                <span class="rk-faq-indicator"></span>
            </button>
            <div class="rk-faq-answer">
                <div class="rk-faq-answer-inner">
                    Dla wodnego ogrzewania podłogowego klasyczna histeza nie powinna przekraczać <strong>±0,2°C</strong>, jednak zalecanym standardem jest całkowita rezygnacja z histezy na rzecz algorytmu <strong>TPI/PWM</strong> wmontowanego w <a href="https://projekt-ogrzewania.pl/termostat-w-ogrzewaniu-podlogowym/">termostat pokojowy</a>. Zapobiega to kumulacji błędu wynikającego z <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">dużej bezwładności cieplnej wylewki</a> i utrzymuje temperaturę powietrza ze stabilnością do 0,1°C.
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <button class="rk-faq-question" aria-expanded="false">
                <h3>4. Czy siłowniki termoelektryczne zużywają dużo prądu w skali roku?</h3>
                <span class="rk-faq-indicator"></span>
            </button>
            <div class="rk-faq-answer">
                <div class="rk-faq-answer-inner">
                    Pojedynczy <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">siłownik termoelektryczny na rozdzielaczu</a> pobiera średnio od <strong>1,2 W do 2 W</strong> mocy wyłącznie w stanie zasilania (otwarcia). Przy 12 siłownikach pracujących średnio przez 10 godzin na dobę w okresie grzewczym trwającym 180 dni, sumaryczne zużycie energii wynosi około <strong>43 kWh</strong>, co generuje roczny koszt rzędu zaledwie <strong>40-45 zł</strong>.
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const faqItems = document.querySelectorAll('.rk-faq-item');

    faqItems.forEach(item => {
        const questionBtn = item.querySelector('.rk-faq-question');
        
        questionBtn.addEventListener('click', () => {
            const isActive = item.classList.contains('active');
            
            // Zamknij wszystkie otwarte
            faqItems.forEach(faq => {
                faq.classList.remove('active');
                faq.querySelector('.rk-faq-question').setAttribute('aria-expanded', 'false');
            });

            // Otwórz kliknięty, jeśli wcześniej był zamknięty
            if (!isActive) {
                item.classList.add('active');
                questionBtn.setAttribute('aria-expanded', 'true');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-sum-dark: #0f172a;
    --rk-sum-blue: #0284c7;
    --rk-sum-light-blue: #f0f9ff;
    --rk-sum-green: #10b981;
    --rk-sum-green-light: #dcfce7;
    --rk-sum-red: #ef4444;
    --rk-sum-gold: #eab308;
    --rk-sum-gray: #64748b;
    --rk-sum-border: #e2e8f0;
    --rk-sum-bg: #ffffff;
}

.rk-sum-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-sum-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.15);
    border: 1px solid var(--rk-sum-blue);
    overflow: hidden;
}

/* Sekcja Nagłówkowa i Cytat */
.rk-sum-header {
    padding: 45px 50px 35px;
    background: linear-gradient(135deg, var(--rk-sum-dark) 0%, #1e293b 100%);
    color: #ffffff;
    text-align: center;
    position: relative;
}

.rk-sum-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(2, 132, 199, 0.3);
    color: #38bdf8;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(56, 189, 248, 0.2);
}

.rk-sum-header h2 {
    font-size: 28px;
    font-weight: 900;
    color: #ffffff;
    margin: 0 0 25px 0;
    line-height: 1.3;
}

.rk-sum-quote-box {
    position: relative;
    max-width: 700px;
    margin: 0 auto;
}

.rk-sum-quote-mark {
    font-size: 80px;
    color: rgba(255,255,255,0.1);
    position: absolute;
    top: -30px;
    left: -20px;
    line-height: 1;
    font-family: serif;
}

.rk-sum-quote-text {
    font-size: 20px;
    font-weight: 800;
    line-height: 1.5;
    color: #ffffff;
    margin: 0 0 15px 0;
    position: relative;
    z-index: 1;
}

.rk-sum-author {
    font-size: 14px;
    color: #94a3b8;
    text-transform: uppercase;
    letter-spacing: 2px;
    font-weight: 700;
}

.rk-sum-author span { color: var(--rk-sum-gold); }

/* Interaktywny Symulator Decyzji */
.rk-sum-interactive {
    padding: 40px 50px;
    background: #f8fafc;
}

.rk-decision-wrapper {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    background: #ffffff;
    border: 1px solid var(--rk-sum-border);
    border-radius: 20px;
    padding: 10px;
    margin-bottom: 30px;
}

.rk-decision-btn {
    padding: 20px;
    border-radius: 16px;
    border: 2px solid transparent;
    background: transparent;
    cursor: pointer;
    transition: all 0.3s ease;
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
}

.rk-decision-btn:hover { background: #f1f5f9; }

.rk-decision-btn.active[data-choice="pro"] {
    background: var(--rk-sum-green-light);
    border-color: var(--rk-sum-green);
    box-shadow: 0 10px 20px -5px rgba(16, 185, 129, 0.2);
}

.rk-decision-btn.active[data-choice="amateur"] {
    background: #fef2f2;
    border-color: var(--rk-sum-red);
    box-shadow: 0 10px 20px -5px rgba(239, 68, 68, 0.2);
}

.rk-decision-icon {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #e2e8f0;
    color: #64748b;
    transition: all 0.3s;
}

.rk-decision-btn.active[data-choice="pro"] .rk-decision-icon {
    background: var(--rk-sum-green);
    color: #ffffff;
}

.rk-decision-btn.active[data-choice="amateur"] .rk-decision-icon {
    background: var(--rk-sum-red);
    color: #ffffff;
}

.rk-decision-title {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-sum-dark);
    margin: 0;
}

/* Wynik symulacji */
.rk-sim-result {
    display: grid;
    grid-template-columns: 150px 1fr;
    gap: 30px;
    align-items: center;
    padding: 30px;
    background: #ffffff;
    border-radius: 16px;
    border: 1px solid var(--rk-sum-border);
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-anim-svg {
    width: 100%;
    height: auto;
    max-width: 120px;
    margin: 0 auto;
}

/* Animacje SVG zależne od stanu */
.anim-house-left, .anim-house-right {
    transition: fill 0.6s cubic-bezier(0.4, 0, 0.2, 1), transform 0.6s;
    transform-origin: center bottom;
}

.anim-flow {
    stroke-dasharray: 6;
    animation: flowLines 1s linear infinite;
    opacity: 0;
    transition: opacity 0.5s;
}

.anim-warn {
    opacity: 0;
    transform: scale(0);
    transform-origin: center;
    transition: all 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

.state-pro .anim-house-left { fill: #38bdf8; } /* Sypialnia: chłodno */
.state-pro .anim-house-right { fill: #ef4444; } /* Łazienka: ciepło */
.state-pro .anim-flow { opacity: 1; stroke: var(--rk-sum-green); }

.state-amateur .anim-house-left { fill: var(--rk-sum-gold); } /* Brak asymetrii */
.state-amateur .anim-house-right { fill: var(--rk-sum-gold); } /* Brak asymetrii */
.state-amateur .anim-warn { opacity: 1; transform: scale(1); animation: pulseWarn 1.5s infinite; }
.state-amateur .anim-flow { opacity: 0.2; stroke: var(--rk-sum-red); animation-duration: 3s; }

@keyframes flowLines { to { stroke-dashoffset: -12; } }
@keyframes pulseWarn {
    0% { filter: drop-shadow(0 0 0 rgba(239, 68, 68, 0)); }
    50% { filter: drop-shadow(0 0 8px rgba(239, 68, 68, 0.8)); transform: scale(1.1); }
    100% { filter: drop-shadow(0 0 0 rgba(239, 68, 68, 0)); }
}

.rk-result-content h4 {
    margin: 0 0 10px 0;
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-sum-dark);
}

.rk-result-content p {
    margin: 0 0 15px 0;
    font-size: 15px;
    line-height: 1.7;
    color: #475569;
}

.rk-result-content a {
    color: var(--rk-sum-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Mocne CTA */
.rk-sum-cta-box {
    padding: 45px 50px;
    background: #ffffff;
    text-align: center;
    border-top: 1px solid var(--rk-sum-border);
}

.rk-sum-cta-title {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-sum-dark);
    margin: 0 0 15px 0;
}

.rk-sum-cta-text {
    font-size: 16px;
    color: #64748b;
    margin: 0 auto 30px auto;
    max-width: 600px;
    line-height: 1.6;
}

.rk-btn-massive {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-sum-blue);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 20px 40px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(2, 132, 199, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    border: 2px solid transparent;
}

.rk-btn-massive:hover {
    transform: translateY(-5px);
    background: #0369a1;
    box-shadow: 0 20px 35px -5px rgba(2, 132, 199, 0.5);
    border-color: #7dd3fc;
}

.rk-btn-massive svg {
    transition: transform 0.3s;
}

.rk-btn-massive:hover svg {
    transform: translateX(5px);
}

@media (max-width: 768px) {
    .rk-sum-header, .rk-sum-interactive, .rk-sum-cta-box { padding: 35px 25px; }
    .rk-sum-header h2 { font-size: 24px; }
    .rk-decision-wrapper { grid-template-columns: 1fr; gap: 10px; }
    .rk-sim-result { grid-template-columns: 1fr; text-align: center; padding: 25px; }
    .rk-anim-svg { max-width: 90px; margin-bottom: 10px; }
    .rk-sum-quote-text { font-size: 18px; }
    .rk-btn-massive { width: 100%; padding: 16px 20px; font-size: 16px; text-align: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#article-podsumowanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/"
    },
    "headline": "Podsumowanie: Czy warto inwestować w sterowanie strefowe?",
    "description": "Zobacz interaktywną analizę efektywności automatyki strefowej. Inżynierski bilans hydrauliczny chroni pompę ciepła i generuje realne oszczędności.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-03",
    "dateModified": "2026-06-03"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#dataset-podsumowanie",
    "name": "Wskaźnik Rentowności Sterowania Strefowego (ROI 2026)",
    "description": "Zestawienie analityczne porównujące efektywność cieplną i zapotrzebowanie na przepływ masowy w układach z jednym termostatem centralnym w porównaniu do zaawansowanego sterowania strefowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "zrównoważenie hydrauliczne ogrzewania podłogowego",
      "bufor ciepła z pompą ciepła",
      "asymetria temperatur",
      "taktowanie sprężarki pompy",
      "obliczenia obciążenia cieplnego OZC"
    ],
    "measurementTechnique": "Symulacja rozkładu strumienia masowego wody grzewczej i asymetrii temperatur (sypialnia 18°C, łazienka 24°C) z weryfikacją minimalnego przepływu dla agregatu.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Instalacja z centralnym termostatem (ryzyko): Skutkuje permanentnym przegrzewaniem sypialni, chłodną łazienką i niebezpiecznym tłumieniem przepływów pompy.",
        "System Strefowy Inżynierski: Gwarantuje idealny klimat, stabilną pracę bufora i realne 20% oszczędności energetycznych rocznie."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#webapp-podsumowanie",
    "name": "Symulator Asymetrii Cieplnej i Oszczędności OZC",
    "description": "Interaktywne oprogramowanie edukacyjne obrazujące dynamikę przepływów hydraulicznych i podziału na strefy cieplne w domu w oparciu o projekt instalacyjny.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-sum-container" id="strefy-sum-app">
    <div class="rk-sum-header">
        <div class="rk-sum-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Interaktywne Podsumowanie
        </div>
        <h2>Sterowanie strefowe ogrzewaniem – czy warto?</h2>
        <div class="rk-sum-quote-box">
            <div class="rk-sum-quote-mark">"</div>
            <p class="rk-sum-quote-text">
                Jeden centralny termostat w nowoczesnym domu to jak jazda sportowym autem na pierwszym biegu. Prawdziwy komfort, bezawaryjność pompy ciepła i niższe o 20% rachunki zaczynają się od asymetrii temperatur.
            </p>
            <div class="rk-sum-author">
                <span>Robert Kucharski</span> | Specjalista HVAC
            </div>
        </div>
    </div>

    <div class="rk-sum-interactive">
        <div class="rk-decision-wrapper" id="simDecisions">
            <button class="rk-decision-btn active" data-choice="pro">
                <div class="rk-decision-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                </div>
                <h4 class="rk-decision-title">Projekt Inżynierski (Strefy)</h4>
            </button>
            <button class="rk-decision-btn" data-choice="amateur">
                <div class="rk-decision-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                </div>
                <h4 class="rk-decision-title">Jeden Termostat ("Z głowy")</h4>
            </button>
        </div>

        <div class="rk-sim-result state-pro" id="simResultBox">
            <svg class="rk-anim-svg" viewBox="0 0 100 100">
                <path d="M 10 50 L 50 15 L 90 50 L 90 95 L 10 95 Z" fill="#f8fafc" stroke="#cbd5e1" stroke-width="3" stroke-linejoin="round"/>
                <line x1="50" y1="15" x2="50" y2="95" stroke="#e2e8f0" stroke-width="2" stroke-dasharray="4 4"/>
                
                <path class="anim-house-left" d="M 12 51 L 49 19 L 49 93 L 12 93 Z" />
                <path class="anim-house-right" d="M 88 51 L 51 19 L 51 93 L 88 93 Z" />
                
                <path class="anim-flow" d="M 50 100 L 50 85 L 25 85 L 25 60" fill="none" stroke-width="3" />
                <path class="anim-flow" d="M 50 100 L 50 85 L 75 85 L 75 60" fill="none" stroke-width="3" />
                
                <g class="anim-warn">
                    <circle cx="50" cy="55" r="18" fill="#ffffff" />
                    <path d="M 50 40 L 62 65 L 38 65 Z" fill="#ef4444" stroke="#ef4444" stroke-width="3" stroke-linejoin="round"/>
                    <line x1="50" y1="48" x2="50" y2="56" stroke="#ffffff" stroke-width="3" stroke-linecap="round"/>
                    <circle cx="50" cy="61" r="1.5" fill="#ffffff" />
                </g>
            </svg>
            
            <div class="rk-result-content" id="simResultContent">
                <h4 style="color: var(--rk-sum-green);">Synergia i 20% oszczędności</h4>
                <p>System bezkompromisowo rozwiązuje problem asymetrii potrzeb cieplnych domowników. Gwarantuje temperaturę <strong>24°C w łazience</strong> przy jednoczesnym utrzymaniu zdrowych <strong>18°C w sypialni</strong>.</p>
                <p>To działa bezbłędnie tylko pod jednym warunkiem: struktura pętli, <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">bufor ciepła</a> oraz przepływy zostały rygorystycznie wyliczone na bazie <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">obliczeń OZC</a> przez projektanta.</p>
            </div>
        </div>
    </div>

    <div class="rk-sum-cta-box">
        <h3 class="rk-sum-cta-title">Automatyka to nie wszystko. Liczy się hydraulika.</h3>
        <p class="rk-sum-cta-text">
            Wyposażenie instalacji w najlepsze sterowniki na nic się zda, jeśli wykonawca ułoży rury „na oko”. Zapobiegnij błędom, które zmuszą Cię do kucia posadzek lub przedwczesnej wymiany pompy ciepła. Zaufaj wiedzy technicznej.
        </p>
        <a href="https://projekt-ogrzewania.pl/blog/" class="rk-btn-massive">
            SPRAWDŹ BAZĘ WIEDZY EKSKLUZYWNEJ
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btns = document.querySelectorAll('.rk-decision-btn');
    const resultBox = document.getElementById('simResultBox');
    const resultContent = document.getElementById('simResultContent');

    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            // Zmiana aktywnych przycisków
            btns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            const choice = this.getAttribute('data-choice');

            // Aktualizacja wizualizacji i treści
            if (choice === 'pro') {
                resultBox.className = 'rk-sim-result state-pro';
                resultContent.innerHTML = `
                    <h4 style="color: var(--rk-sum-green);">Synergia i 20% oszczędności</h4>
                    <p>System bezkompromisowo rozwiązuje problem asymetrii potrzeb cieplnych domowników. Gwarantuje temperaturę <strong>24°C w łazience</strong> przy jednoczesnym utrzymaniu zdrowych <strong>18°C w sypialni</strong>.</p>
                    <p>To działa bezbłędnie tylko pod jednym warunkiem: struktura pętli, <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">bufor ciepła</a> oraz przepływy zostały rygorystycznie wyliczone na bazie <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">obliczeń OZC</a> przez projektanta.</p>
                `;
            } else {
                resultBox.className = 'rk-sim-result state-amateur';
                resultContent.innerHTML = `
                    <h4 style="color: var(--rk-sum-red);">Marnotrawstwo i usterki</h4>
                    <p>Brak podziału na strefy zmusza układ do pracy w jednym parametrze. Skutek? Zły sen (przegrzana sypialnia) i dyskomfort w łazience.</p>
                    <p>Co gorsza, nakładanie siłowników na <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">niezbalansowaną instalację rodem z lat 90.</a> powoduje gwałtowne dławienie <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">pompy obiegowej</a>, jej ciągłe taktowanie, a w ostateczności awarię całego agregatu.</p>
                `;
            }
        });
    });
});
</script>



<style>
:root {
    --rk-auth-dark: #0f172a;
    --rk-auth-panel: #1e293b;
    --rk-auth-bg: #ffffff;
    --rk-auth-surface: #f8fafc;
    --rk-auth-border: #e2e8f0;
    --rk-auth-text: #334155;
    --rk-auth-muted: #64748b;
    
    --rk-auth-blue: #0284c7;
    --rk-auth-blue-glow: rgba(2, 132, 199, 0.15);
    --rk-auth-gold: #eab308;
    --rk-auth-gold-glow: rgba(234, 179, 8, 0.2);
    --rk-auth-fb: #1877F2;
    --rk-auth-li: #0A66C2;
}

.rk-auth-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-auth-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(15, 23, 42, 0.08);
    border: 1px solid var(--rk-auth-border);
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

/* Header Area */
.rk-auth-header {
    background: linear-gradient(135deg, var(--rk-auth-dark) 0%, #1e293b 100%);
    padding: 35px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-auth-gold);
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 20px;
}

.rk-auth-header-text h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 8px 0;
    line-height: 1.3;
    color: #ffffff;
}

.rk-auth-header-text p {
    font-size: 15px;
    color: #cbd5e1;
    margin: 0;
    font-weight: 500;
}

.rk-auth-trust-badge {
    background: rgba(234, 179, 8, 0.15);
    border: 1px solid rgba(234, 179, 8, 0.3);
    color: var(--rk-auth-gold);
    padding: 10px 20px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    gap: 10px;
    font-weight: 800;
    font-size: 14px;
    text-transform: uppercase;
    letter-spacing: 1px;
}

/* Main Layout Grid */
.rk-auth-grid {
    display: grid;
    grid-template-columns: 320px 1fr;
    background: var(--rk-auth-bg);
}

/* Left Sidebar: Profile */
.rk-auth-profile {
    background: var(--rk-auth-surface);
    padding: 40px 30px;
    border-right: 1px solid var(--rk-auth-border);
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
}

.rk-auth-photo-wrap {
    position: relative;
    width: 160px;
    height: 160px;
    margin-bottom: 25px;
}

.rk-auth-photo {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    object-fit: cover;
    border: 4px solid #ffffff;
    box-shadow: 0 10px 25px var(--rk-auth-blue-glow);
    position: relative;
    z-index: 2;
}

.rk-auth-photo-ring {
    position: absolute;
    top: -8px; left: -8px; right: -8px; bottom: -8px;
    border-radius: 50%;
    border: 2px dashed var(--rk-auth-blue);
    animation: rkSpin 20s linear infinite;
    z-index: 1;
}

@keyframes rkSpin { 100% { transform: rotate(360deg); } }

.rk-auth-name {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-auth-dark);
    margin: 0 0 5px 0;
}

.rk-auth-title {
    font-size: 14px;
    color: var(--rk-auth-blue);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
}

.rk-auth-socials {
    display: flex;
    gap: 12px;
    width: 100%;
}

.rk-social-btn {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 12px;
    border-radius: 12px;
    color: #ffffff;
    font-size: 13px;
    font-weight: 700;
    text-decoration: none;
    transition: transform 0.3s, box-shadow 0.3s;
}

.rk-social-btn.fb { background: var(--rk-auth-fb); }
.rk-social-btn.li { background: var(--rk-auth-li); }

.rk-social-btn:hover {
    transform: translateY(-3px);
    box-shadow: 0 8px 15px rgba(0,0,0,0.1);
}

/* Right Content Area */
.rk-auth-content {
    display: flex;
    flex-direction: column;
}

/* Navigation Tabs */
.rk-auth-tabs {
    display: flex;
    border-bottom: 1px solid var(--rk-auth-border);
    background: #ffffff;
}

.rk-auth-tab {
    flex: 1;
    padding: 20px;
    background: transparent;
    border: none;
    border-bottom: 3px solid transparent;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-auth-muted);
    cursor: pointer;
    transition: all 0.3s;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

.rk-auth-tab:hover {
    color: var(--rk-auth-blue);
    background: var(--rk-auth-surface);
}

.rk-auth-tab.active {
    color: var(--rk-auth-blue);
    border-bottom-color: var(--rk-auth-blue);
    background: #ffffff;
}

/* Tab Panels */
.rk-auth-panel {
    padding: 40px;
    display: none;
    animation: rkFadeInUp 0.4s ease forwards;
}

.rk-auth-panel.active {
    display: block;
}

@keyframes rkFadeInUp {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

.rk-auth-panel h3 {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-auth-dark);
    margin: 0 0 20px 0;
}

.rk-auth-panel p {
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-auth-text);
    margin: 0 0 15px 0;
}

.rk-auth-panel p:last-child { margin-bottom: 0; }

.rk-auth-panel a {
    color: var(--rk-auth-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Stats Grid in Panel 2 */
.rk-auth-stats {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
    margin-top: 25px;
}

.rk-stat-box {
    background: var(--rk-auth-surface);
    border: 1px solid var(--rk-auth-border);
    border-radius: 16px;
    padding: 20px;
    display: flex;
    align-items: center;
    gap: 15px;
    transition: transform 0.3s;
}

.rk-stat-box:hover {
    transform: scale(1.02);
    border-color: var(--rk-auth-blue);
}

.rk-stat-icon {
    width: 48px;
    height: 48px;
    border-radius: 12px;
    background: #ffffff;
    color: var(--rk-auth-blue);
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
    flex-shrink: 0;
}

.rk-stat-info { display: flex; flex-direction: column; }

.rk-stat-val {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-auth-dark);
    line-height: 1.2;
}

.rk-stat-label {
    font-size: 12px;
    font-weight: 700;
    color: var(--rk-auth-muted);
    text-transform: uppercase;
}

/* SVG Interactive Guarantee (Panel 3) */
.rk-guarantee-viz {
    background: var(--rk-auth-dark);
    border-radius: 16px;
    padding: 30px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 30px;
    margin-top: 20px;
    color: #ffffff;
}

.rk-gv-text h4 {
    margin: 0 0 10px 0;
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-auth-gold);
}

.rk-gv-text p {
    margin: 0;
    font-size: 14px;
    color: #cbd5e1;
    line-height: 1.6;
}

.rk-gv-svg {
    width: 100px;
    height: 100px;
    flex-shrink: 0;
}

.rk-gv-shield {
    fill: none;
    stroke: var(--rk-auth-gold);
    stroke-width: 4;
    stroke-linecap: round;
    stroke-linejoin: round;
    animation: rkShieldPulse 2s infinite alternate;
}

.rk-gv-check {
    fill: none;
    stroke: #ffffff;
    stroke-width: 6;
    stroke-linecap: round;
    stroke-linejoin: round;
    stroke-dasharray: 100;
    stroke-dashoffset: 0;
}

@keyframes rkShieldPulse {
    0% { filter: drop-shadow(0 0 5px rgba(234, 179, 8, 0.4)); }
    100% { filter: drop-shadow(0 0 15px rgba(234, 179, 8, 0.8)); transform: scale(1.05); }
}

/* Mobile */
@media (max-width: 850px) {
    .rk-auth-grid { grid-template-columns: 1fr; }
    .rk-auth-header { flex-direction: column; text-align: center; padding: 30px 25px; }
    .rk-auth-profile { border-right: none; border-bottom: 1px solid var(--rk-auth-border); padding: 30px 25px; }
    .rk-auth-tabs { flex-direction: column; }
    .rk-auth-tab { border-bottom: none; border-left: 4px solid transparent; justify-content: flex-start; padding: 15px 25px; }
    .rk-auth-tab.active { border-left-color: var(--rk-auth-blue); border-bottom-color: transparent; }
    .rk-auth-panel { padding: 30px 25px; }
    .rk-auth-stats { grid-template-columns: 1fr; }
    .rk-guarantee-viz { flex-direction: column; text-align: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#article-autor",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/"
    },
    "headline": "Gwarancja inżynierskiej jakości – Kto doradza w sprawie automatyki strefowej?",
    "description": "Profil ekspercki Roberta Kucharskiego, inżyniera HVAC weryfikującego skuteczność sterowania strefowego i rozwiązującego problemy taktowania pomp ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "jobTitle": "Inżynier HVAC",
      "sameAs": [
        "https://www.facebook.com/projektogrzewaniapl",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-03",
    "dateModified": "2026-06-03"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#dataset-portfolio",
    "name": "Baza wiedzy i doświadczenia HVAC - Automatyka Strefowa",
    "description": "Zestawienie autorskich statystyk i doświadczeń w optymalizacji systemów płaszczyznowych pod kątem montażu stref, termostatów oraz zapobiegania dławieniu pomp.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "sterowanie strefowe ogrzewaniem czy warto",
      "automatyka do podłogówki",
      "projektowanie ogrzewania podłogowego OZC",
      "zrównoważenie hydrauliczne",
      "termostat pokojowy do podłogówki"
    ],
    "measurementTechnique": "Agregacja danych z ponad 1000 zrealizowanych projektów instalacji niskotemperaturowych, skutkująca średnim spadkiem zużycia energii o 20% poprzez systemy strefowe.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Zrealizowane projekty instalacji z podziałem strefowym: 1000+",
        "Średnia redukcja rachunków dzięki termostatom PVM/TPI: 20%",
        "Specjalizacja: Integracja pomp ciepła, automatyki i normy PN-EN 1264"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/#webapp-autor-portfolio",
    "name": "Interaktywne Portfolio Eksperckie E-E-A-T (Automatyka)",
    "description": "Moduł weryfikujący autorytet inżynierski autora w dziedzinie HVAC, integrujący statystyki oszczędności z automatyki strefowej i zgodność z normami OZC.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-auth-container" id="rkAuthApp">
    
    <div class="rk-auth-header">
        <div class="rk-auth-header-text">
            <h2>Gwarancja inżynierskiej jakości</h2>
            <p>Nie powielam internetowych mitów. Dowiedz się, kto bierze odpowiedzialność za te wyliczenia.</p>
        </div>
        <div class="rk-auth-trust-badge">
            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
            Zweryfikowany Ekspert E-E-A-T
        </div>
    </div>

    <div class="rk-auth-grid">
        
        <div class="rk-auth-profile">
            <div class="rk-auth-photo-wrap">
                <div class="rk-auth-photo-ring"></div>
                <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski - Inżynier HVAC" class="rk-auth-photo">
            </div>
            
            <h3 class="rk-auth-name">Robert Kucharski</h3>
            <div class="rk-auth-title">Główny Specjalista HVAC</div>
            
            <div class="rk-auth-socials">
                <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="noopener noreferrer" class="rk-social-btn fb">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"></path></svg>
                    Facebook
                </a>
                <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener noreferrer" class="rk-social-btn li">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path><rect x="2" y="9" width="4" height="12"></rect><circle cx="4" cy="4" r="2"></circle></svg>
                    LinkedIn
                </a>
            </div>
        </div>

        <div class="rk-auth-content">
            
            <div class="rk-auth-tabs">
                <button class="rk-auth-tab active" data-panel="omnie">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"></path><circle cx="12" cy="7" r="4"></circle></svg>
                    O Mnie
                </button>
                <button class="rk-auth-tab" data-panel="liczby">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg>
                    W Liczbach
                </button>
                <button class="rk-auth-tab" data-panel="filozofia">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg>
                    Filozofia OZC
                </button>
            </div>

            <div class="rk-auth-panel active" id="panel-omnie">
                <h3>Praktyka wygrywa z teorią</h3>
                <p>
                    Projektowanie <strong>sterowania strefowego ogrzewaniem</strong> to nie zgadywanie, lecz matematyka i fizyka budowli. Od lat doradzam inwestorom, audytuję błędy deweloperów i udowadniam, że odpowiednia komunikacja termostatów z listwą zapobiega dławieniu pomp obiegowych.
                </p>
                <p>
                    Zbudowałem własne zaplecze techniczne i dom od zera. Wiem, ile kosztuje inwestora "robienie na oko" bez <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">bilansu hydraulicznego</a>. W projekt-ogrzewania.pl łączę <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">obliczenia OZC</a> z pragmatyzmem z placu budowy.
                </p>
            </div>

            <div class="rk-auth-panel" id="panel-liczby">
                <h3>Instalacje oparte na twardych danych</h3>
                <p>Nie pozwalam by pompa ciepła "taktowała". Projektuję <a href="https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/">rozstawy rur i układy strefowe</a> gwarantując asymetrię temperatur między sypialnią a salonem.</p>
                
                <div class="rk-auth-stats">
                    <div class="rk-stat-box">
                        <div class="rk-stat-icon">
                            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line></svg>
                        </div>
                        <div class="rk-stat-info">
                            <div class="rk-stat-val">1000+</div>
                            <div class="rk-stat-label">Stworzonych Projektów OZC</div>
                        </div>
                    </div>
                    
                    <div class="rk-stat-box">
                        <div class="rk-stat-icon">
                            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                        </div>
                        <div class="rk-stat-info">
                            <div class="rk-stat-val">~20%</div>
                            <div class="rk-stat-label">Oszczędności dzięki strefom</div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-auth-panel" id="panel-filozofia">
                <h3>Bezbłędny system zaczyna się na papierze</h3>
                <p>
                    Mój fundament to ścisła integracja automatyki z wymogami pompy ciepła. Nie akceptuję mieszania pętli ani braku buforów. Każde pomieszczenie traktuję indywidualnie, opierając <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">nastawy rotametrów i przepływy</a> na bezlitosnej matematyce.
                </p>
                
                <div class="rk-guarantee-viz">
                    <div class="rk-gv-text">
                        <h4>Zgodność z PN-EN 1264</h4>
                        <p>Moje rozwiązania opierają się na obowiązujących normach projektowania ogrzewania płaszczyznowego, minimalizując błąd <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">bezwładności cieplnej jastrychu</a>.</p>
                    </div>
                    <svg class="rk-gv-svg" viewBox="0 0 100 100">
                        <path class="rk-gv-shield" d="M50 10 L10 25 L10 50 C10 75 40 90 50 95 C60 90 90 75 90 50 L90 25 Z"></path>
                        <path class="rk-gv-check" d="M 35 50 L 45 60 L 70 35"></path>
                    </svg>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const tabs = document.querySelectorAll('.rk-auth-tab');
    const panels = document.querySelectorAll('.rk-auth-panel');

    tabs.forEach(tab => {
        tab.addEventListener('click', function() {
            // Remove active classes
            tabs.forEach(t => t.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));

            // Add active class to clicked tab
            this.classList.add('active');

            // Show corresponding panel
            const target = this.getAttribute('data-panel');
            document.getElementById('panel-' + target).classList.add('active');
        });
    });
});
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/">Sterowanie strefowe ogrzewaniem &#8211; czy warto?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<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>
:root {
    --rk-intro-dark: #0f172a;
    --rk-intro-blue: #0284c7;
    --rk-intro-blue-light: #e0f2fe;
    --rk-intro-green: #10b981;
    --rk-intro-green-light: #dcfce7;
    --rk-intro-gray: #475569;
    --rk-intro-gray-light: #f8fafc;
    --rk-intro-bg: #ffffff;
    --rk-intro-border: #e2e8f0;
}

.rk-intro-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-intro-bg);
    border: 2px solid var(--rk-intro-dark);
    /* Brak border-radius - styl surowy, techniczny */
}

/* Sekcja Hook i Szybka Odpowiedź */
.rk-intro-hero {
    padding: 45px 50px;
    background: var(--rk-intro-dark);
    color: #ffffff;
    border-bottom: 5px solid var(--rk-intro-blue);
}

.rk-intro-hook {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-intro-blue-light);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-intro-hero h2 {
    font-size: 32px;
    font-weight: 900;
    margin: 0 0 25px 0;
    line-height: 1.2;
    color: #ffffff;
}

.rk-intro-answer-box {
    background: #1e293b;
    border-left: 6px solid var(--rk-intro-green);
    padding: 25px 30px;
}

.rk-intro-answer-title {
    font-size: 13px;
    color: var(--rk-intro-green);
    text-transform: uppercase;
    font-weight: 800;
    letter-spacing: 1px;
    margin-bottom: 10px;
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-intro-answer-text {
    font-size: 18px;
    font-weight: 700;
    line-height: 1.6;
    margin: 0;
    color: #f8fafc;
}

.rk-intro-answer-text strong {
    color: #ffffff;
    font-weight: 900;
    background: var(--rk-intro-green);
    padding: 2px 8px;
    border-radius: 4px;
}

/* Sekcja merytoryczna */
.rk-intro-content {
    padding: 40px 50px;
    font-size: 16px;
    color: var(--rk-intro-gray);
    line-height: 1.7;
}

.rk-intro-content p {
    margin: 0 0 20px 0;
}

.rk-intro-content a {
    color: var(--rk-intro-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Interaktywny Nawigator Artykułu (Brak animacji) */
.rk-intro-nav {
    margin-top: 40px;
    border: 1px solid var(--rk-intro-border);
    background: var(--rk-intro-gray-light);
}

.rk-intro-nav-header {
    background: var(--rk-intro-border);
    padding: 15px 30px;
    font-weight: 800;
    color: var(--rk-intro-dark);
    font-size: 15px;
    text-transform: uppercase;
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-intro-nav-tabs {
    display: flex;
    border-bottom: 1px solid var(--rk-intro-border);
    background: #ffffff;
}

.rk-intro-tab-btn {
    flex: 1;
    padding: 15px 20px;
    background: #ffffff;
    border: none;
    border-bottom: 3px solid transparent;
    border-right: 1px solid var(--rk-intro-border);
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-intro-gray);
    cursor: pointer;
}

.rk-intro-tab-btn:last-child {
    border-right: none;
}

.rk-intro-tab-btn:hover {
    background: var(--rk-intro-gray-light);
}

.rk-intro-tab-btn.is-active {
    background: var(--rk-intro-blue-light);
    color: var(--rk-intro-blue);
    border-bottom-color: var(--rk-intro-blue);
}

.rk-intro-panels {
    padding: 30px;
    background: #ffffff;
}

.rk-intro-panel {
    display: none;
}

.rk-intro-panel.is-active {
    display: block;
}

.rk-intro-panel-title {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-intro-dark);
    margin: 0 0 10px 0;
}

.rk-intro-panel-desc {
    font-size: 14px;
    color: var(--rk-intro-gray);
    margin: 0;
    line-height: 1.6;
}

@media (max-width: 768px) {
    .rk-intro-container { margin: 20px auto; border-left: none; border-right: none; }
    .rk-intro-hero, .rk-intro-content { padding: 30px 20px; }
    .rk-intro-hero h2 { font-size: 24px; }
    .rk-intro-answer-box { padding: 20px; }
    .rk-intro-answer-text { font-size: 16px; }
    .rk-intro-nav-tabs { flex-direction: column; }
    .rk-intro-tab-btn { border-right: none; border-bottom: 1px solid var(--rk-intro-border); border-left: 4px solid transparent; text-align: left; }
    .rk-intro-tab-btn.is-active { border-left-color: var(--rk-intro-blue); border-bottom-color: var(--rk-intro-border); }
    .rk-intro-panels { padding: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article-wstep",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/"
    },
    "headline": "Czy warto montować sterowniki do ogrzewania podłogowego? Szybka odpowiedź",
    "description": "Bezpośrednia inżynierska odpowiedź na pytanie o opłacalność automatyki podłogówki. Poznaj argumenty, które pozwolą Ci zaoszczędzić od 15% do 25% energii.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-07",
    "dateModified": "2026-07-07"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#dataset-wstep",
    "name": "Kluczowe wskaźniki efektywności (KPI) dla automatyki ogrzewania płaszczyznowego",
    "description": "Wstępne zestawienie danych wejściowych dotyczących redukcji kosztów eksploatacyjnych po montażu sterowników strefowych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "czy warto montować sterowniki do ogrzewania podłogowego",
      "automatyka strefowa do podłogówki czy warto",
      "koszty eksploatacji budynku z pompą ciepła",
      "bezwładność termiczna jastrychu a sterowanie",
      "optymalizacja sprawności cop kotła"
    ],
    "measurementTechnique": "Deklaracja początkowego wskaźnika redukcji zużycia energii (15-25%) uzyskanego poprzez strefową blokadę przepływu czynnika grzewczego.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Montaż sterowników jest w 100% technicznie i ekonomicznie uzasadniony.",
        "Automatyka zabezpiecza materiał posadzki przed przegrzewaniem i optymalizuje COP."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webapp-wstep",
    "name": "Nawigator Narzędzi Inżynierskich",
    "description": "Moduł wprowadzający czytelnika do zagnieżdżonych w artykule interaktywnych kalkulatorów i symulatorów procesów cieplnych.",
    "applicationCategory": "NavigationApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-intro-container" id="rk-intro-app">
    <div class="rk-intro-hero">
        <div class="rk-intro-hook">
            <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
            Budowa bez ściemy
        </div>
        <h2>Czy warto montować sterowniki do ogrzewania podłogowego?</h2>
        
        <div class="rk-intro-answer-box">
            <div class="rk-intro-answer-title">
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>
                Inżynierski Werdykt
            </div>
            <p class="rk-intro-answer-text">
                <strong>TAK.</strong> Montaż sterowników do wodnego ogrzewania podłogowego jest opłacalny i technicznie uzasadniony. Pozwala obniżyć koszty eksploatacji budynku o <strong>15% do 25%</strong>, brutalnie eliminując zjawisko permanentnego przegrzewania pomieszczeń.
            </p>
        </div>
    </div>

    <div class="rk-intro-content">
        <p>Instalator mówi, że pompa ciepła &#8222;sama sobie poradzi&#8221;, a Ty zastanawiasz się, czy inwestować w dodatkową elektronikę? Prawda jest taka, że bez precyzyjnego sterowania oddajesz kontrolę nad swoimi rachunkami ślepemu trafowi.</p>
        
        <p>Automatyka strefowa bezpośrednio dopasowuje wydatek cieplny poszczególnych pętli do rzeczywistego zapotrzebowania, kompensując tym samym wysoką <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">bezwładność termiczną jastrychu</a>. Bezpośrednia kontrola nad przepływem czynnika grzewczego w każdej strefie z osobna chroni drogi materiał posadzki przed uszkodzeniem termicznym i drastycznie optymalizuje sprawność (COP) Twojej pompy ciepła lub kotła kondensacyjnego.</p>

        <div class="rk-intro-nav">
            <div class="rk-intro-nav-header">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line></svg>
                Co potrafią darmowe narzędzia w tym artykule?
            </div>
            
            <div class="rk-intro-nav-tabs">
                <button class="rk-intro-tab-btn is-active" data-show="n-roi">Kalkulator ROI</button>
                <button class="rk-intro-tab-btn" data-show="n-pwm">Symulator Algorytmu</button>
                <button class="rk-intro-tab-btn" data-show="n-ntc">Ochrona Posadzki</button>
            </div>

            <div class="rk-intro-panels">
                <div class="rk-intro-panel is-active" id="n-roi">
                    <h4 class="rk-intro-panel-title">Oblicz, kiedy zwróci Ci się inwestycja</h4>
                    <p class="rk-intro-panel-desc">Poniżej znajdziesz interaktywny kalkulator finansowy. Wpisz powierzchnię swojego domu oraz cenę prądu, aby natychmiast zobaczyć, w ile miesięcy oszczędności pokryją koszt zakupu listwy, siłowników i termostatów.</p>
                </div>
                
                <div class="rk-intro-panel" id="n-pwm">
                    <h4 class="rk-intro-panel-title">Zobacz fizykę w akcji (Algorytm PWM)</h4>
                    <p class="rk-intro-panel-desc">Oddajemy w Twoje ręce symulator inżynierski. Przekonaj się na własne oczy, jak uchyb temperatury wpływa na czas otwarcia siłownika przy wylewce betonowej, a jak przy anhydrytowej. Koniec z wróżeniem z fusów.</p>
                </div>
                
                <div class="rk-intro-panel" id="n-ntc">
                    <h4 class="rk-intro-panel-title">Ochrona paneli przed stopieniem (Czujnik NTC)</h4>
                    <p class="rk-intro-panel-desc">Wizualizacja trybu dwukanałowego. Sprawdź interaktywny model pokazujący, co dzieje się z Twoimi panelami winylowymi, gdy przekroczysz barierę 27°C i dlaczego czujnik w wylewce to absolutna konieczność.</p>
                </div>
            </div>
        </div>
        
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const navBtns = document.querySelectorAll('.rk-intro-tab-btn');
    const navPanels = document.querySelectorAll('.rk-intro-panel');

    navBtns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            // Twarde przełączanie (bez animacji, bez &&)
            const targetId = this.getAttribute('data-show');
            
            navBtns.forEach(function(b) {
                b.classList.remove('is-active');
            });
            
            navPanels.forEach(function(p) {
                p.classList.remove('is-active');
            });

            this.classList.add('is-active');
            
            const activePanel = document.getElementById(targetId);
            if (activePanel) {
                activePanel.classList.add('is-active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-flow-dark: #0f172a;
    --rk-flow-darker: #0b1120;
    --rk-flow-blue: #0284c7;
    --rk-flow-blue-light: #e0f2fe;
    --rk-flow-green: #10b981;
    --rk-flow-orange: #f59e0b;
    --rk-flow-red: #ef4444;
    --rk-flow-gray: #475569;
    --rk-flow-bg: #ffffff;
    --rk-flow-border: #e2e8f0;
}

.rk-flow-container {
    max-width: 900px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-flow-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.1);
    border: 1px solid var(--rk-flow-blue);
    overflow: hidden;
}

.rk-flow-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, var(--rk-flow-dark) 0%, #1e293b 100%);
    color: #ffffff;
}

.rk-flow-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-flow-header p {
    font-size: 16px;
    color: #cbd5e1;
    margin: 0 0 15px 0;
    line-height: 1.7;
}
.rk-flow-header p:last-child { margin-bottom: 0; }

.rk-flow-header a {
    color: #38bdf8;
    text-decoration: none;
    border-bottom: 1px dashed #38bdf8;
    font-weight: 600;
    transition: color 0.3s;
}

.rk-flow-header a:hover {
    color: #ffffff;
    border-bottom-color: #ffffff;
}

.rk-flow-body {
    padding: 40px 50px;
    background: #f8fafc;
}

.rk-flow-text-section {
    background: var(--rk-flow-bg);
    border: 1px solid var(--rk-flow-border);
    border-radius: 16px;
    padding: 30px;
    margin-bottom: 30px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-flow-text-section p {
    font-size: 15px;
    color: var(--rk-flow-gray);
    line-height: 1.6;
    margin: 0;
}

.rk-flow-highlight {
    background: var(--rk-flow-blue-light);
    color: var(--rk-flow-blue);
    padding: 2px 6px;
    border-radius: 4px;
    font-weight: 700;
}

/* Interaktywny Symulator Pętli */
.rk-flow-interactive {
    background: var(--rk-flow-darker);
    border-radius: 20px;
    padding: 40px;
    display: flex;
    flex-direction: column;
    align-items: center;
    position: relative;
    box-shadow: inset 0 4px 20px rgba(0,0,0,0.3);
}

.rk-flow-interactive-title {
    color: #ffffff;
    font-size: 20px;
    font-weight: 800;
    margin: 0 0 30px 0;
    text-align: center;
}

.rk-flow-btn-trigger {
    background: var(--rk-flow-orange);
    color: #ffffff;
    border: none;
    padding: 16px 32px;
    font-size: 16px;
    font-weight: 800;
    border-radius: 12px;
    cursor: pointer;
    box-shadow: 0 10px 20px -5px rgba(245, 158, 11, 0.4);
    transition: all 0.3s;
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 40px;
    z-index: 10;
}

.rk-flow-btn-trigger:hover {
    transform: translateY(-3px);
    background: #d97706;
}

.rk-flow-btn-trigger:disabled {
    background: #475569;
    cursor: not-allowed;
    transform: none;
    box-shadow: none;
}

/* Kontener SVG */
.rk-flow-svg-wrap {
    width: 100%;
    max-width: 700px;
    height: 250px;
    position: relative;
}

.rk-svg-component {
    fill: #1e293b;
    stroke: #334155;
    stroke-width: 2;
    rx: 8;
    transition: all 0.3s;
}

.rk-svg-text {
    fill: #cbd5e1;
    font-size: 12px;
    font-family: 'Inter', sans-serif;
    font-weight: 700;
    text-anchor: middle;
}

.rk-svg-wire {
    fill: none;
    stroke: #334155;
    stroke-width: 4;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.rk-svg-signal {
    fill: none;
    stroke: var(--rk-flow-blue);
    stroke-width: 4;
    stroke-linecap: round;
    stroke-linejoin: round;
    stroke-dasharray: 1000;
    stroke-dashoffset: 1000;
}

.rk-svg-sun {
    fill: var(--rk-flow-orange);
    opacity: 0;
    transform: scale(0.5);
    transform-origin: 50px 50px;
    transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}

/* Stany Animacji (Dodawane przez JS) */
.state-step-1 .rk-svg-sun { opacity: 1; transform: scale(1); animation: rkPulseSun 2s infinite; }
.state-step-2 .rk-svg-comp-thermostat { fill: var(--rk-flow-blue); stroke: #38bdf8; }
.state-step-2 .rk-svg-text-thermostat { fill: #ffffff; }
.state-step-3 .rk-svg-signal-1 { animation: rkRunSignal 1s forwards linear; }
.state-step-4 .rk-svg-comp-listwa { fill: var(--rk-flow-blue); stroke: #38bdf8; }
.state-step-5 .rk-svg-signal-2 { animation: rkRunSignal 1.5s forwards linear; }
.state-step-6 .rk-svg-comp-actuator { fill: var(--rk-flow-red); stroke: #fca5a5; transition: fill 3s; /* Symulacja powolnego zamknięcia */ }
.state-step-6 .rk-svg-water-flow { stroke-dashoffset: 100; transition: stroke-dashoffset 3s linear; }

@keyframes rkPulseSun {
    0% { filter: drop-shadow(0 0 5px rgba(245, 158, 11, 0.5)); }
    50% { filter: drop-shadow(0 0 15px rgba(245, 158, 11, 0.8)); transform: scale(1.1); }
    100% { filter: drop-shadow(0 0 5px rgba(245, 158, 11, 0.5)); }
}

@keyframes rkRunSignal {
    to { stroke-dashoffset: 0; }
}

.rk-flow-status-text {
    position: absolute;
    bottom: 20px;
    color: var(--rk-flow-green);
    font-weight: 800;
    font-size: 14px;
    letter-spacing: 1px;
    text-transform: uppercase;
    opacity: 0;
    transition: opacity 0.5s;
}

.rk-flow-status-text.visible {
    opacity: 1;
}

@media (max-width: 768px) {
    .rk-flow-container { margin: 20px auto; border-radius: 16px; }
    .rk-flow-header, .rk-flow-body { padding: 25px 20px; }
    .rk-flow-header h2 { font-size: 24px; }
    .rk-flow-svg-wrap { height: 350px; }
    .rk-flow-interactive { padding: 30px 15px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article-sprzezenie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/"
    },
    "headline": "Jak działa automatyka do podłogówki i dlaczego ręczna regulacja pętli generuje straty?",
    "description": "Analiza strat energii rzędu 5-18% wywołanych ręczną regulacją zaworów. Poznaj algorytmy TPI/PWM i zobacz interaktywną wizualizację pętli sprzężenia zwrotnego.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-12-29",
    "dateModified": "2026-07-07"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#dataset-sprzezenie",
    "name": "Analiza strat energii przy ręcznej regulacji podłogówki",
    "description": "Techniczne uwarunkowania bezwładności termicznej jastrychu oraz dynamika siłowników termoelektrycznych w systemach zamkniętej pętli.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "algorytm TPI PWM",
      "siłowniki termoelektryczne 230V",
      "bezwładność jastrychu 6.5cm",
      "przegrzewanie pomieszczeń podłogówka",
      "listwa sterująca do podłogówki",
      "zamknięte sprzężenie zwrotne ogrzewanie"
    ],
    "measurementTechnique": "Ewaluacja czasu reakcji komponentów automatyki (3 do 5 minut) w stosunku do akumulacyjności termicznej wylewki grzewczej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Brak automatyki prowadzi do przegrzewania pomieszczeń o 1-3°C, generując straty na poziomie 5-18%.",
        "Algorytmy PWM dawkują energię impulsowo zapobiegając przegrzewaniu poprzez wyprzedzające zamykanie pętli."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webapp-sprzezenie",
    "name": "Symulator Pętli Sprzężenia Zwrotnego",
    "description": "Edukacyjna aplikacja wizualizująca komunikację między termostatem a listwą centralną i siłownikiem podczas redukcji zysków ciepła.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-flow-container" id="rk-flow-app">
    <div class="rk-flow-header">
        <h2>Jak działa automatyka do podłogówki i dlaczego ręczna regulacja pętli generuje straty?</h2>
        <p>Ręczne sterowanie wodnym ogrzewaniem podłogowym za pomocą zaworów miniaturowych na rozdzielaczu uniemożliwia stabilizację temperatury wewnętrznej, co prowadzi do permanentnego przegrzewania pomieszczeń o 1°C do 3°C i zwiększenia zużycia energii o <span class="rk-flow-highlight">5% do 18%</span>.</p>
        <p>Wynika to bezpośrednio z <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">bezwładności termicznej</a> płyty grzewczej (jastrychu o grubości 6,5 cm), która magazynuje potężne ilości energii i oddaje ją przez wiele godzin po mechanicznym odcięciu zasilania.</p>
    </div>

    <div class="rk-flow-body">
        
        <div class="rk-flow-text-section">
            <p>Automatyka strefowa działa w <strong>pętli zamkniętego sprzężenia zwrotnego</strong>. Czujnik pokojowy stale monitoruje temperaturę powietrza oraz temperaturę podłogi. W momencie rejestracji zysków ciepła (np. od nasłonecznienia), sygnał przekazywany jest do listwy centralnej, która odcina zasilanie <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">siłowników termoelektrycznych</a> (230V/24V). Zastosowanie algorytmu <strong>TPI / PWM</strong> pozwala na pulsacyjne dawkowanie energii zanim nastąpi przekroczenie progu wygody.</p>
        </div>

        <div class="rk-flow-interactive" id="flowSimulator">
            <h3 class="rk-flow-interactive-title">Schemat Komunikacji Komponentów</h3>
            
            <button class="rk-flow-btn-trigger" id="btnSimulate">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line></svg>
                Symuluj nasłonecznienie
            </button>

            <div class="rk-flow-svg-wrap">
                <svg viewBox="0 0 700 250" width="100%" height="100%">
                    
                    <g class="rk-svg-sun">
                        <circle cx="60" cy="50" r="15"/>
                        <line x1="60" y1="20" x2="60" y2="30" stroke="#f59e0b" stroke-width="3" stroke-linecap="round"/>
                        <line x1="60" y1="70" x2="60" y2="80" stroke="#f59e0b" stroke-width="3" stroke-linecap="round"/>
                        <line x1="30" y1="50" x2="40" y2="50" stroke="#f59e0b" stroke-width="3" stroke-linecap="round"/>
                        <line x1="80" y1="50" x2="90" y2="50" stroke="#f59e0b" stroke-width="3" stroke-linecap="round"/>
                    </g>
                    
                    <path d="M 550 200 L 150 200" fill="none" stroke="#e2e8f0" stroke-width="12" stroke-linecap="round"/>
                    <path class="rk-svg-water-flow" id="waterFlow" d="M 550 200 L 150 200" fill="none" stroke="#38bdf8" stroke-width="6" stroke-linecap="round" stroke-dasharray="10 15"/>

                    <path class="rk-svg-wire" d="M 150 120 L 350 120"/>
                    <path class="rk-svg-wire" d="M 350 120 L 550 120"/>

                    <path class="rk-svg-signal rk-svg-signal-1" d="M 150 120 L 350 120"/>
                    <path class="rk-svg-signal rk-svg-signal-2" d="M 350 120 L 550 120"/>

                    <rect x="100" y="90" width="100" height="60" class="rk-svg-component rk-svg-comp-thermostat"/>
                    <text x="150" y="115" class="rk-svg-text rk-svg-text-thermostat">TERMOSTAT</text>
                    <text x="150" y="135" class="rk-svg-text rk-svg-text-thermostat">(Pomiar Pokoju)</text>

                    <rect x="300" y="80" width="100" height="80" class="rk-svg-component rk-svg-comp-listwa"/>
                    <text x="350" y="115" class="rk-svg-text rk-svg-text-thermostat">LISTWA</text>
                    <text x="350" y="135" class="rk-svg-text rk-svg-text-thermostat">(Algorytm PWM)</text>

                    <rect x="500" y="90" width="100" height="60" class="rk-svg-component rk-svg-comp-actuator"/>
                    <text x="550" y="115" class="rk-svg-text rk-svg-text-thermostat">SIŁOWNIK NC</text>
                    <text x="550" y="135" class="rk-svg-text rk-svg-text-thermostat">(Zawór Pętli)</text>
                    
                    <line x1="550" y1="150" x2="550" y2="194" stroke="#334155" stroke-width="4"/>
                </svg>
            </div>
            
            <div class="rk-flow-status-text" id="statusMessage">Pętla grzewcza zamknięta (Brak przepływu)</div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btnSimulate = document.getElementById('btnSimulate');
    const simulator = document.getElementById('flowSimulator');
    const statusMsg = document.getElementById('statusMessage');

    btnSimulate.addEventListener('click', function() {
        // Blokada przycisku
        btnSimulate.disabled = true;
        btnSimulate.innerText = "Przetwarzanie pętli...";
        
        // Reset klas
        simulator.className = "rk-flow-interactive";
        statusMsg.classList.remove('visible');
        
        // Brak operatorów && - czysta kaskada timeoutów symulująca proces inżynierski
        
        // Krok 1: Słońce świeci (Zysk pasywny)
        setTimeout(function() {
            simulator.classList.add('state-step-1');
        }, 100);

        // Krok 2: Termostat rejestruje przekroczenie temperatury
        setTimeout(function() {
            simulator.classList.add('state-step-2');
        }, 1500);

        // Krok 3: Wysłanie sygnału do listwy centralnej
        setTimeout(function() {
            simulator.classList.add('state-step-3');
        }, 2500);

        // Krok 4: Listwa interpretuje algorytm PWM
        setTimeout(function() {
            simulator.classList.add('state-step-4');
        }, 3500);

        // Krok 5: Listwa odcina napięcie 230V do siłownika
        setTimeout(function() {
            simulator.classList.add('state-step-5');
        }, 4500);

        // Krok 6: Siłownik NC (Normalnie Zamknięty) powoli się zamyka (w rzeczywistości 3 minuty)
        setTimeout(function() {
            simulator.classList.add('state-step-6');
            statusMsg.classList.add('visible');
            btnSimulate.innerText = "Zresetuj symulację";
            btnSimulate.disabled = false;
            
            // Re-map the button to act as a reset next time
            btnSimulate.onclick = function() {
                simulator.className = "rk-flow-interactive";
                statusMsg.classList.remove('visible');
                btnSimulate.innerText = "Symuluj nasłonecznienie";
                // Restore original listener logic safely without &&
                setTimeout(function(){
                    location.reload(); // Prosty i bezpieczny reset stanu narzędzia edukacyjnego
                }, 300);
            };
        }, 6000);
    });
});
</script>



<style>
:root {
    --rk-calc-dark: #0f172a;
    --rk-calc-dark-card: #1e293b;
    --rk-calc-blue: #0284c7;
    --rk-calc-blue-light: #e0f2fe;
    --rk-calc-green: #10b981;
    --rk-calc-red: #ef4444;
    --rk-calc-gray: #475569;
    --rk-calc-gray-light: #f8fafc;
    --rk-calc-bg: #ffffff;
    --rk-calc-border: #e2e8f0;
}

.rk-calc-container {
    max-width: 900px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-calc-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.1);
    border: 1px solid var(--rk-calc-blue);
    overflow: hidden;
}

.rk-calc-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, var(--rk-calc-dark) 0%, #0f172a 100%);
    color: #ffffff;
}

.rk-calc-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-calc-header p {
    font-size: 16px;
    color: #cbd5e1;
    margin: 0 0 15px 0;
    line-height: 1.7;
}

.rk-calc-header p:last-child {
    margin-bottom: 0;
}

.rk-calc-header a {
    color: #38bdf8;
    text-decoration: none;
    border-bottom: 1px dashed #38bdf8;
    font-weight: 600;
    transition: color 0.3s;
}

.rk-calc-header a:hover {
    color: #ffffff;
    border-bottom-color: #ffffff;
}

.rk-calc-body {
    padding: 40px 50px;
}

/* Sekcja Case Study */
.rk-calc-casestudy {
    background: var(--rk-calc-gray-light);
    border: 1px solid var(--rk-calc-border);
    border-radius: 16px;
    padding: 25px 30px;
    margin-bottom: 40px;
}

.rk-calc-casestudy h3 {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-calc-dark);
    margin: 0 0 15px 0;
}

.rk-calc-casestudy p {
    font-size: 15px;
    color: var(--rk-calc-gray);
    line-height: 1.6;
    margin: 0 0 10px 0;
}

.rk-calc-math {
    background: var(--rk-calc-bg);
    padding: 15px 20px;
    border-radius: 12px;
    border-left: 4px solid var(--rk-calc-blue);
    font-family: monospace;
    font-size: 14px;
    color: var(--rk-calc-dark);
    margin: 15px 0;
    font-weight: 600;
}

/* Kaskadowy układ - 1 kolumna */
.rk-roi-stack {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

/* Karty Suwaków */
.rk-input-card {
    background: var(--rk-calc-bg);
    border: 1px solid var(--rk-calc-border);
    border-radius: 20px;
    padding: 30px;
    box-shadow: 0 4px 10px -2px rgba(0,0,0,0.03);
    display: flex;
    flex-direction: column;
}

.rk-input-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 25px;
}

.rk-input-header label {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-calc-dark);
    margin: 0;
}

.rk-input-value {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-calc-blue);
    background: var(--rk-calc-blue-light);
    padding: 5px 15px;
    border-radius: 12px;
}

.rk-slider-wrapper {
    position: relative;
    width: 100%;
}

.rk-calc-slider {
    width: 100%;
    -webkit-appearance: none;
    height: 10px;
    border-radius: 5px;
    background: var(--rk-calc-border);
    outline: none;
}

.rk-calc-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--rk-calc-blue);
    cursor: pointer;
    border: 5px solid #ffffff;
    box-shadow: 0 4px 12px rgba(2, 132, 199, 0.4);
    transition: transform 0.1s;
}

.rk-calc-slider::-webkit-slider-thumb:active {
    transform: scale(1.1);
}

/* Karta Wyników (Dashboard) */
.rk-roi-output-card {
    background: var(--rk-calc-dark-card);
    border-radius: 20px;
    padding: 50px 40px;
    color: #ffffff;
    position: relative;
    overflow: hidden;
    box-shadow: 0 20px 40px -10px rgba(15, 23, 42, 0.4);
    text-align: center;
    margin-top: 15px;
}

.rk-roi-output-card::before {
    content: '';
    position: absolute;
    top: -100px;
    left: 50%;
    transform: translateX(-50%);
    width: 300px;
    height: 300px;
    background: radial-gradient(circle, rgba(16,185,129,0.1) 0%, rgba(0,0,0,0) 70%);
    border-radius: 50%;
    pointer-events: none;
}

.rk-output-stats {
    display: flex;
    flex-direction: column;
    gap: 40px;
    position: relative;
    z-index: 2;
}

.rk-stat-group {
    display: flex;
    flex-direction: column;
    align-items: center;
}

.rk-stat-divider {
    width: 50px;
    height: 2px;
    background: #334155;
    margin: 0 auto;
}

.rk-stat-label {
    font-size: 14px;
    color: #94a3b8;
    text-transform: uppercase;
    letter-spacing: 2px;
    font-weight: 700;
    margin-bottom: 10px;
}

.rk-stat-value {
    font-size: 52px;
    font-weight: 900;
    line-height: 1;
    letter-spacing: -1px;
}

.rk-stat-sub {
    font-size: 20px;
    font-weight: 700;
    color: #cbd5e1;
    margin-left: 5px;
}

.rk-val-highlight-green { color: var(--rk-calc-green); text-shadow: 0 0 30px rgba(16, 185, 129, 0.3); }
.rk-val-highlight-white { color: #ffffff; }

@media (max-width: 768px) {
    .rk-calc-container { margin: 20px auto; border-radius: 16px; }
    .rk-calc-header, .rk-calc-body { padding: 30px 20px; }
    .rk-calc-header h2 { font-size: 24px; }
    
    .rk-input-card { padding: 25px 20px; }
    .rk-input-header { flex-direction: column; align-items: flex-start; gap: 15px; }
    .rk-input-value { align-self: flex-start; font-size: 24px; }
    
    .rk-roi-output-card { padding: 40px 20px; }
    .rk-stat-value { font-size: 42px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article-roi",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/"
    },
    "headline": "Ile można zaoszczędzić na ogrzewaniu podłogowym montując sterowniki pokojowe?",
    "description": "Zgodnie z normą PN-EN 12831, obniżenie temperatury o 1°C daje 6% oszczędności. Zobacz studium przypadku i oblicz zwrot z inwestycji (ROI) dla swojego domu.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-12-29",
    "dateModified": "2026-07-07"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#dataset-roi",
    "name": "Analiza ROI automatyki strefowej wg PN-EN 12831",
    "description": "Zestawienie zużycia energii w kWh oraz kosztów w PLN dla instalacji bez automatyki strefowej i po jej wdrożeniu.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "ile kosztuje ogrzewanie domu pompą ciepła",
      "jak obliczyć zwrot z inwestycji ogrzewanie",
      "norma pn en 12831 oszczędności",
      "zmniejszenie rachunków za prąd podłogówka",
      "cena prądu g12w ogrzewanie",
      "zużycie prądu pompa ciepła dom 150m2",
      "termostaty pokojowe a oszczędności",
      "koszt automatyki do podłogówki"
    ],
    "measurementTechnique": "Szacowanie zapotrzebowania na energię dla domów jednorodzinnych z uwzględnieniem redukcji temperatury nocnej i zysków pasywnych z nasłonecznienia.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Obniżenie temperatury wewnętrznej o 1°C w skali sezonu redukuje koszty o około 6%.",
        "Dla domu 150m2 inwestycja w sterowniki (1800-2500 PLN) zwraca się w czasie krótszym niż 12 miesięcy."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webapp-roi",
    "name": "Kalkulator Oszczędności i ROI Automatyki Strefowej",
    "description": "Narzędzie finansowe obliczające roczne oszczędności eksploatacyjne w PLN oraz czas zwrotu z inwestycji (ROI) w komponenty automatyki sterującej ogrzewaniem.",
    "applicationCategory": "BusinessApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-calc-container" id="rk-calc-app">
    <div class="rk-calc-header">
        <h2>Ile można zaoszczędzić na ogrzewaniu podłogowym montując sterowniki pokojowe?</h2>
        <p>Montaż sterowników pokojowych pozwala na realną redukcję rocznych <a href="https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/">kosztów ogrzewania</a> o 15% do 25% w odniesieniu do instalacji sterowanej wyłącznie krzywą grzewczą źródła ciepła. Według wytycznych <a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/">normy PN-EN 12831</a>, obniżenie temperatury wewnętrznej o 1°C w skali całego sezonu grzewczego generuje średnio 6% oszczędności paliwa lub energii elektrycznej.</p>
    </div>

    <div class="rk-calc-body">
        
        <div class="rk-calc-casestudy">
            <h3>Wyliczenie matematyczne oszczędności energii (Case Study)</h3>
            <p>Dla domu jednorodzinnego o powierzchni 150 m² i projektowym zapotrzebowaniu na ciepło 9 kW (przy temp. zewnętrznej -20°C):</p>
            <ul style="color: var(--rk-calc-gray); font-size: 14px; line-height: 1.6; padding-left: 20px;">
                <li>Sezonowe zapotrzebowanie na energię <strong>bez automatyki strefowej</strong> (utrzymywanie stałej temperatury 22°C w nocy i podczas nieobecności, plus przegrzewanie od nasłonecznienia): E1 = 14 500 kWh/rok.</li>
                <li>Sezonowe zapotrzebowanie na energię <strong>po wdrożeniu automatyki</strong> (redukcja nocna do 20°C w sypialniach, obniżenie temperatury w salonie do 19°C podczas nieobecności, wykorzystanie zysków pasywnych): E2 = 11 165 kWh/rok.</li>
            </ul>
            <div class="rk-calc-math">
                ΔE = 14 500 &#8211; 11 165 = 3 335 kWh/rok oszczędności
            </div>
            <p>Przyjmując średni koszt energii dla pompy ciepła na poziomie 0,75 PLN/kWh, roczna oszczędność finansowa wynosi równe <strong>2 501,25 PLN/rok</strong>. Koszt zakupu inteligentnego systemu automatyki (listwa + 6 termostatów + siłowniki) dla takiego metrażu zamyka się w kwocie 1800 &#8211; 2500 PLN, co oznacza <a href="https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/">zwrot z inwestycji (ROI)</a> w czasie poniżej 12 miesięcy.</p>
        </div>

        <!-- Układ Kaskadowy W Pełni Pionowy -->
        <div class="rk-roi-stack">
            
            <div class="rk-input-card">
                <div class="rk-input-header">
                    <label>Powierzchnia Twojego domu</label>
                    <div class="rk-input-value"><span id="valAreaOut">150</span> m²</div>
                </div>
                <div class="rk-slider-wrapper">
                    <input type="range" class="rk-calc-slider" id="inpArea" min="80" max="300" step="5" value="150">
                </div>
            </div>
            
            <div class="rk-input-card">
                <div class="rk-input-header">
                    <label>Średnia cena 1 kWh</label>
                    <div class="rk-input-value"><span id="valPriceOut">0.75</span> PLN</div>
                </div>
                <div class="rk-slider-wrapper">
                    <input type="range" class="rk-calc-slider" id="inpPrice" min="0.40" max="1.50" step="0.05" value="0.75">
                </div>
            </div>

            <div class="rk-roi-output-card">
                <div class="rk-output-stats">
                    
                    <div class="rk-stat-group">
                        <div class="rk-stat-label">Roczne Oszczędności Eksploatacyjne</div>
                        <div class="rk-stat-value rk-val-highlight-green"><span id="resSavings">2501</span><span class="rk-stat-sub">PLN</span></div>
                    </div>
                    
                    <div class="rk-stat-divider"></div>
                    
                    <div class="rk-stat-group">
                        <div class="rk-stat-label">Szacowany koszt systemu automatyki</div>
                        <div class="rk-stat-value rk-val-highlight-white"><span id="resCost">2500</span><span class="rk-stat-sub">PLN</span></div>
                    </div>

                    <div class="rk-stat-divider"></div>

                    <div class="rk-stat-group">
                        <div class="rk-stat-label">Pełny zwrot z inwestycji (ROI) za:</div>
                        <div class="rk-stat-value"><span id="resMonths" class="rk-val-highlight-green">12</span><span class="rk-stat-sub">miesięcy</span></div>
                    </div>

                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const sldArea = document.getElementById('inpArea');
    const sldPrice = document.getElementById('inpPrice');
    
    const valAreaOut = document.getElementById('valAreaOut');
    const valPriceOut = document.getElementById('valPriceOut');
    
    const resSavings = document.getElementById('resSavings');
    const resCost = document.getElementById('resCost');
    const resMonths = document.getElementById('resMonths');

    function calculateData() {
        let area = parseFloat(sldArea.value);
        let price = parseFloat(sldPrice.value);
        
        valAreaOut.innerText = area;
        valPriceOut.innerText = price.toFixed(2);

        // Algorytm Oszczędności (Case Study)
        // Średnio 96.66 kWh/m2 bez automatyki
        let energyBase = area * 96.66; 
        
        // Z automatyką oszczędności na poziomie 23% względem bazy
        let energyAuto = energyBase * 0.77; 

        // Różnica w kWh i PLN
        let savingsKwh = energyBase - energyAuto;
        let savingsPln = savingsKwh * price;

        // Koszty systemu: 1000 PLN + 10 PLN / m2
        let sysCost = 1000 + (area * 10);
        
        // ROI
        let roiMonths = (sysCost / savingsPln) * 12;

        resSavings.innerText = Math.round(savingsPln).toLocaleString('pl-PL');
        resCost.innerText = Math.round(sysCost).toLocaleString('pl-PL');
        resMonths.innerText = Math.round(roiMonths);

        // Bezpieczny warunek zmiany koloru (bez &&)
        if (roiMonths < 18) {
            resMonths.className = "rk-val-highlight-green";
            resMonths.style.color = "";
        } else {
            if (roiMonths < 36) {
                resMonths.className = "";
                resMonths.style.color = "#eab308"; // Żółty
            } else {
                resMonths.className = "";
                resMonths.style.color = "#ef4444"; // Czerwony
            }
        }
    }

    sldArea.addEventListener('input', calculateData);
    sldPrice.addEventListener('input', calculateData);

    // Initial calculation
    calculateData();
});
</script>



<style>
:root {
    --rk-curve-dark: #0f172a;
    --rk-curve-blue: #0284c7;
    --rk-curve-blue-light: #e0f2fe;
    --rk-curve-red: #ef4444;
    --rk-curve-green: #10b981;
    --rk-curve-gray: #475569;
    --rk-curve-gray-light: #f8fafc;
    --rk-curve-bg: #ffffff;
    --rk-curve-border: #e2e8f0;
}

.rk-curve-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-curve-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-curve-blue);
    overflow: hidden;
}

.rk-curve-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, var(--rk-curve-dark) 0%, #1e293b 100%);
    color: #ffffff;
}

.rk-curve-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-curve-header p {
    font-size: 16px;
    color: #cbd5e1;
    margin: 0 0 15px 0;
    line-height: 1.7;
}

.rk-curve-header p:last-child {
    margin-bottom: 0;
}

.rk-curve-header a {
    color: #38bdf8;
    text-decoration: none;
    border-bottom: 1px dashed #38bdf8;
    font-weight: 600;
    transition: color 0.3s;
}

.rk-curve-header a:hover {
    color: #ffffff;
    border-bottom-color: #ffffff;
}

.rk-curve-body {
    padding: 40px 50px;
}

/* Interaktywny Symulator */
.rk-curve-simulator {
    background: var(--rk-curve-gray-light);
    border: 1px solid var(--rk-curve-border);
    border-radius: 20px;
    padding: 35px;
    display: flex;
    flex-direction: column;
    gap: 30px;
}

.rk-curve-sim-title {
    text-align: center;
    margin: 0;
}

.rk-curve-sim-title h3 {
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-curve-dark);
    margin: 0 0 5px 0;
}

.rk-curve-sim-title p {
    font-size: 14px;
    color: var(--rk-curve-gray);
    margin: 0;
}

.rk-curve-layout {
    display: flex;
    gap: 40px;
    align-items: stretch;
}

/* Panel Kontrolny */
.rk-curve-controls {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.rk-curve-slider-box {
    background: var(--rk-curve-bg);
    padding: 25px;
    border-radius: 16px;
    border: 1px solid var(--rk-curve-border);
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-curve-slider-box label {
    display: block;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-curve-dark);
    margin-bottom: 10px;
}

.rk-curve-slider-desc {
    font-size: 12px;
    color: var(--rk-curve-gray);
    margin-bottom: 20px;
    display: block;
}

.rk-curve-slider {
    width: 100%;
    -webkit-appearance: none;
    height: 8px;
    border-radius: 4px;
    background: linear-gradient(to right, var(--rk-curve-blue), #cbd5e1, var(--rk-curve-red));
    outline: none;
    margin-bottom: 25px;
    direction: rtl; /* Od +20 do -20, wizualnie chłodniej z prawej lub na odwrót - dostosujemy logicznie */
}

/* Dostosowanie suwaka zima-lato */
.rk-curve-slider.temp-slider {
    background: linear-gradient(to right, var(--rk-curve-blue), #cbd5e1, var(--rk-curve-red));
    direction: ltr;
}

.rk-curve-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--rk-curve-dark);
    cursor: pointer;
    border: 4px solid #ffffff;
    box-shadow: 0 4px 10px rgba(15, 23, 42, 0.3);
}

.rk-curve-data-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-curve-data-card {
    background: var(--rk-curve-gray-light);
    border: 1px solid var(--rk-curve-border);
    border-radius: 12px;
    padding: 15px;
    text-align: center;
}

.rk-curve-data-card span {
    display: block;
    font-size: 11px;
    text-transform: uppercase;
    font-weight: 700;
    color: var(--rk-curve-gray);
    margin-bottom: 5px;
    letter-spacing: 0.5px;
}

.rk-curve-data-card strong {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-curve-dark);
}

.rk-data-highlight strong {
    color: var(--rk-curve-green);
}

/* Panel Wizualizacji SVG */
.rk-curve-visual {
    flex: 1.2;
    background: var(--rk-curve-dark);
    border-radius: 16px;
    padding: 25px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    position: relative;
    box-shadow: inset 0 4px 20px rgba(0,0,0,0.5);
}

.rk-curve-svg-wrapper {
    width: 100%;
    max-width: 320px;
}

.rk-svg-axis { stroke: #475569; stroke-width: 2; }
.rk-svg-grid { stroke: #1e293b; stroke-width: 1; }
.rk-svg-text { fill: #94a3b8; font-size: 10px; font-weight: 600; font-family: monospace; }
.rk-svg-line { fill: none; stroke: var(--rk-curve-blue); stroke-width: 4; stroke-linecap: round; }
.rk-svg-dot { fill: var(--rk-curve-red); stroke: #ffffff; stroke-width: 2; transition: all 0.2s ease-out; }
.rk-svg-guide { stroke: var(--rk-curve-red); stroke-width: 1; stroke-dasharray: 4 4; transition: all 0.2s ease-out; }

/* Mobile Responsiveness */
@media (max-width: 768px) {
    .rk-curve-container { margin: 20px auto; border-radius: 16px; }
    .rk-curve-header, .rk-curve-body { padding: 25px 20px; }
    .rk-curve-header h2 { font-size: 22px; }
    .rk-curve-simulator { padding: 20px; }
    .rk-curve-layout { flex-direction: column; gap: 20px; }
    .rk-curve-controls, .rk-curve-visual { width: 100%; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article-pogodowka",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/"
    },
    "headline": "Jak sterownik pogodowy z krzywą grzewczą optymalizuje temperaturę zasilania podłogówki?",
    "description": "Zrozum działanie krzywej grzewczej (Tz względem Te) wg normy PN-EN 1264. Sprawdź, jak obniżenie temperatury zasilania poprawia współczynnik COP pompy ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-07",
    "dateModified": "2026-07-07"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#dataset-pogodowka",
    "name": "Wpływ krzywej grzewczej na efektywność instalacji płaszczyznowej (COP)",
    "description": "Dane tabelaryczne i algorytmiczne wiążące temperaturę zewnętrzną (NTC) z temperaturą zasilania obiegu grzewczego i sprawnością źródła ciepła.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "krzywa grzewcza pompy ciepła podłogówka",
      "sterownik regulator pogodowy",
      "temperatura zasilania ogrzewania podłogowego",
      "współczynnik cop a temperatura zasilania",
      "czujnik temperatury zewnętrznej"
    ],
    "measurementTechnique": "Modelowanie spadku temperatury (Delta T) na podstawie algorytmu kompensacji pogodowej (krzywa n=1.1) z inkrementalnym przyrostem sprawności COP.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Kompensacja pogodowa dostosowuje temperaturę zasilania (Tz) od 25°C do 38°C proporcjonalnie do temperatury zewnętrznej (Te).",
        "Obniżenie temperatury zasilania pompy ciepła o każdy 1°C skutkuje wzrostem współczynnika COP o około 2.5% - 3.0%."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webapp-pogodowka",
    "name": "Symulator Krzywej Grzewczej (Kompensacja Pogodowa)",
    "description": "Interaktywny interfejs inżynierski obrazujący ruch punktu pracy instalacji na wykresie krzywej grzewczej w zależności od warunków atmosferycznych.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-curve-container" id="rk-curve-app">
    <div class="rk-curve-header">
        <h2>Jak sterownik pogodowy z krzywą grzewczą optymalizuje temperaturę zasilania podłogówki?</h2>
        <p><a href="https://projekt-ogrzewania.pl/sterownik-regulator-pogodowy/">Sterownik pogodowy</a> automatycznie obniża lub podwyższa temperaturę wody zasilającej instalację podłogową w zakresie od 25°C do 38°C na podstawie odczytu z zewnętrznego czujnika temperatury (NTC), zgodnie z bezwzględnymi wymaganiami normy <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/">PN-EN 1264</a>.</p>
        <p>Działanie to opiera się na matematycznie zdefiniowanej <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">krzywej grzewczej</a>, która dopasowuje temperaturę zasilania (Tz) do aktualnej temperatury zewnętrznej (Te). Wzrost temperatury zewnętrznej o każde 5°C powoduje natychmiastowe obniżenie temperatury na wyjściu ze źródła ciepła. Dla pompy ciepła obniżenie temperatury zasilania o 1°C podnosi jej współczynnik efektywności grzewczej COP o około 2,5% do 3%. Sterowanie pogodowe eliminuje opóźnienie wynikające z bezwładności budynku – instalacja reaguje na chłód, zanim przeniknie on przez ściany.</p>
    </div>

    <div class="rk-curve-body">
        <div class="rk-curve-simulator">
            <div class="rk-curve-sim-title">
                <h3>Symulator Kompensacji Pogodowej</h3>
                <p>Przesuń suwak pogody i zobacz, jak algorytm steruje parametrami.</p>
            </div>

            <div class="rk-curve-layout">
                <div class="rk-curve-controls">
                    <div class="rk-curve-slider-box">
                        <label>Temperatura Zewnętrzna (Czujnik Pogodowy)</label>
                        <span class="rk-curve-slider-desc">Symulacja zmiany frontu atmosferycznego</span>
                        <input type="range" class="rk-curve-slider temp-slider" id="envSlider" min="-20" max="20" step="1" value="0">
                        
                        <div class="rk-curve-data-grid">
                            <div class="rk-curve-data-card">
                                <span>Temp. Zewnętrzna (Te)</span>
                                <strong id="valTe">0°C</strong>
                            </div>
                            <div class="rk-curve-data-card">
                                <span>Temp. Zasilania (Tz)</span>
                                <strong id="valTz" style="color: var(--rk-curve-blue);">31.5°C</strong>
                            </div>
                            <div class="rk-curve-data-card rk-data-highlight" style="grid-column: span 2;">
                                <span>Wzrost Sprawności COP (Względem Tz=38°C)</span>
                                <strong id="valCop">+18.0%</strong>
                            </div>
                        </div>
                    </div>
                </div>

                <div class="rk-curve-visual">
                    <div class="rk-curve-svg-wrapper">
                        <svg viewBox="0 0 300 200" xmlns="http://www.w3.org/2000/svg">
                            <line x1="40" y1="20" x2="280" y2="20" class="rk-svg-grid"/> <line x1="40" y1="70" x2="280" y2="70" class="rk-svg-grid"/> <line x1="40" y1="120" x2="280" y2="120" class="rk-svg-grid"/> <line x1="40" y1="10" x2="40" y2="160" class="rk-svg-axis"/>
                            <text x="30" y="25" class="rk-svg-text" text-anchor="end">40°</text>
                            <text x="30" y="75" class="rk-svg-text" text-anchor="end">30°</text>
                            <text x="30" y="125" class="rk-svg-text" text-anchor="end">20°</text>
                            <text x="40" y="10" class="rk-svg-text" fill="#ffffff" dy="-5">Tz</text>
                            
                            <line x1="40" y1="160" x2="290" y2="160" class="rk-svg-axis"/>
                            <text x="40" y="175" class="rk-svg-text" text-anchor="middle">+20°</text>
                            <text x="100" y="175" class="rk-svg-text" text-anchor="middle">+10°</text>
                            <text x="160" y="175" class="rk-svg-text" text-anchor="middle">0°</text>
                            <text x="220" y="175" class="rk-svg-text" text-anchor="middle">-10°</text>
                            <text x="280" y="175" class="rk-svg-text" text-anchor="middle">-20°</text>
                            <text x="290" y="155" class="rk-svg-text" fill="#ffffff" text-anchor="start">Te</text>
                            
                            <path class="rk-svg-line" d="M 40 95 Q 160 80 280 30" />
                            
                            <line class="rk-svg-guide" id="guideX" x1="160" y1="160" x2="160" y2="65" />
                            <line class="rk-svg-guide" id="guideY" x1="40" y1="65" x2="160" y2="65" />
                            <circle class="rk-svg-dot" id="workPoint" cx="160" cy="65" r="6" />
                        </svg>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const slider = document.getElementById('envSlider');
    const displayTe = document.getElementById('valTe');
    const displayTz = document.getElementById('valTz');
    const displayCop = document.getElementById('valCop');
    
    // Elementy SVG
    const workPoint = document.getElementById('workPoint');
    const guideX = document.getElementById('guideX');
    const guideY = document.getElementById('guideY');

    // Konfiguracja matematyczna wykresu SVG
    // X axis: 40px (+20st) to 280px (-20st) -> span 240px. 
    // Y axis: 120px (20st) to 20px (40st) -> span 100px. 1st = 5px.
    
    function updateCurve() {
        let Te = parseInt(slider.value); // od -20 do +20
        
        // Logika obliczania Tz (Model krzywej aproksymujący kwadratowo/liniowo)
        // Jeśli Te = +20 -> Tz = 25
        // Jeśli Te = -20 -> Tz = 38
        
        // Parametryzacja z użyciem bezpiecznych warunków (bez operatora "&&")
        // Skala 0 do 1 (gdzie 0 to -20st, a 1 to +20st)
        let ratio = (Te + 20) / 40; 
        
        // Tworzymy lekkie wygięcie krzywej bazując na ratio
        // Tz = 38 (max) minus spadek
        let Tz = 38 - (ratio * 13); // liniowo
        
        // Dodajmy lekką korektę nieliniową
        if (ratio > 0) {
            if (ratio < 1) {
               // Niewielkie ugięcie w dół
               Tz = Tz - (Math.sin(ratio * Math.PI) * 1.5);
            }
        }

        // Zabezpieczenie limitów
        if (Tz < 25) { Tz = 25; }
        if (Tz > 38) { Tz = 38; }

        // Wpływ na COP: zysk 2.75% za każdy stopień poniżej 38°C
        let copGain = (38 - Tz) * 2.75;

        // Aktualizacja tekstów
        if (Te > 0) {
            displayTe.innerText = "+" + Te + "°C";
        } else {
            displayTe.innerText = Te + "°C";
        }
        
        displayTz.innerText = Tz.toFixed(1) + "°C";
        displayCop.innerText = "+" + copGain.toFixed(1) + "%";

        // Obliczanie współrzędnych SVG
        // X: -20 to x=280, +20 to x=40
        let svgX = 280 - (ratio * 240);
        
        // Y: 20st = 120px, 40st = 20px
        // Różnica od 40st w dół: (40 - Tz) * 5
        let svgY = 20 + ((40 - Tz) * 5);

        // Aktualizacja DOM (SVG)
        workPoint.setAttribute('cx', svgX);
        workPoint.setAttribute('cy', svgY);
        
        guideX.setAttribute('x1', svgX);
        guideX.setAttribute('x2', svgX);
        guideX.setAttribute('y1', '160');
        guideX.setAttribute('y2', svgY);
        
        guideY.setAttribute('x1', '40');
        guideY.setAttribute('x2', svgX);
        guideY.setAttribute('y1', svgY);
        guideY.setAttribute('y2', svgY);
    }

    // Nasłuchiwacz suwaka
    slider.addEventListener('input', updateCurve);
    
    // Uruchomienie na start
    updateCurve();
});
</script>



<style>
:root {
    --rk-tech-dark: #0f172a;
    --rk-tech-blue: #0284c7;
    --rk-tech-blue-light: #e0f2fe;
    --rk-tech-green: #10b981;
    --rk-tech-purple: #8b5cf6;
    --rk-tech-purple-light: #ede9fe;
    --rk-tech-gray: #475569;
    --rk-tech-bg: #ffffff;
    --rk-tech-border: #e2e8f0;
}

.rk-tech-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-tech-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.1);
    border: 1px solid var(--rk-tech-blue);
    overflow: hidden;
}

.rk-tech-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, var(--rk-tech-dark) 0%, #1e293b 100%);
    color: #ffffff;
}

.rk-tech-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-tech-header p {
    font-size: 16px;
    color: #cbd5e1;
    margin: 0;
    line-height: 1.6;
}

.rk-tech-interactive {
    padding: 40px 50px;
    background: #f8fafc;
}

/* Master Toggle */
.rk-tech-toggle-wrapper {
    display: flex;
    background: var(--rk-tech-border);
    border-radius: 16px;
    padding: 6px;
    margin-bottom: 35px;
    position: relative;
}

.rk-tech-toggle-btn {
    flex: 1;
    text-align: center;
    padding: 16px 20px;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-tech-gray);
    background: transparent;
    border: none;
    border-radius: 12px;
    cursor: pointer;
    transition: all 0.4s ease;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
}

.rk-tech-toggle-btn.active {
    color: #ffffff;
}

.rk-tech-toggle-bg {
    position: absolute;
    top: 6px;
    bottom: 6px;
    width: calc(50% - 6px);
    background: var(--rk-tech-blue);
    border-radius: 12px;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), background-color 0.4s;
    z-index: 1;
    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
}

/* Visualizer SVG */
.rk-tech-visualizer {
    background: var(--rk-tech-dark);
    border-radius: 20px;
    padding: 30px;
    display: flex;
    justify-content: center;
    align-items: center;
    margin-bottom: 35px;
    height: 160px;
    position: relative;
    overflow: hidden;
}

.rk-tech-svg-wrap {
    width: 100%;
    max-width: 400px;
}

/* SVG Animations */
.rk-anim-cable { stroke-dasharray: 1000; stroke-dashoffset: 1000; transition: stroke-dashoffset 1s ease; }
.rk-anim-wave { opacity: 0; transform: scale(0.5); transform-origin: center; transition: all 0.5s ease; }

.state-wired .rk-anim-cable { stroke-dashoffset: 0; }
.state-wireless .rk-anim-wave { opacity: 1; transform: scale(1); animation: pulseRadio 2s infinite; }

@keyframes pulseRadio {
    0% { transform: scale(0.8); opacity: 1; }
    100% { transform: scale(1.5); opacity: 0; }
}

/* Cards Grid */
.rk-tech-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 20px;
}

.rk-param-card {
    background: var(--rk-tech-bg);
    border: 1px solid var(--rk-tech-border);
    border-radius: 16px;
    padding: 25px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
    transition: transform 0.3s, border-color 0.3s;
}

.rk-param-card:hover {
    transform: translateY(-3px);
    border-color: var(--rk-tech-blue);
}

.rk-param-icon {
    width: 40px;
    height: 40px;
    border-radius: 10px;
    background: var(--rk-tech-blue-light);
    color: var(--rk-tech-blue);
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 15px;
    transition: background-color 0.4s, color 0.4s;
}

.rk-param-card h3 {
    font-size: 14px;
    color: var(--rk-tech-gray);
    text-transform: uppercase;
    letter-spacing: 1px;
    font-weight: 700;
    margin: 0 0 10px 0;
}

.rk-param-value {
    font-size: 16px;
    font-weight: 600;
    color: var(--rk-tech-dark);
    line-height: 1.5;
}

.rk-param-value strong {
    font-size: 20px;
    font-weight: 900;
    display: block;
    margin-bottom: 5px;
    transition: color 0.4s;
}

.rk-param-value a {
    color: var(--rk-tech-blue);
    text-decoration: none;
    border-bottom: 1px dashed var(--rk-tech-blue);
}

/* Stan bezprzewodowy kolorystyka (Fiolet) */
.state-wireless-theme .rk-param-icon { background: var(--rk-tech-purple-light); color: var(--rk-tech-purple); }
.state-wireless-theme .rk-param-value strong { color: var(--rk-tech-purple); }

/* Hide/Show logic within cards */
.rk-val-content { display: none; animation: fadeInText 0.4s forwards; }
.rk-val-content.active { display: block; }

@keyframes fadeInText {
    from { opacity: 0; transform: translateY(5px); }
    to { opacity: 1; transform: translateY(0); }
}

/* Mobile Responsiveness */
@media (max-width: 768px) {
    .rk-tech-container { margin: 20px auto; }
    .rk-tech-header, .rk-tech-interactive { padding: 25px 20px; }
    .rk-tech-header h2 { font-size: 22px; }
    
    .rk-tech-toggle-wrapper { flex-direction: column; background: transparent; padding: 0; gap: 10px;}
    .rk-tech-toggle-bg { display: none; }
    
    .rk-tech-toggle-btn {
        background: var(--rk-tech-border);
        color: var(--rk-tech-gray);
        border: 2px solid transparent;
    }
    
    .rk-tech-toggle-btn.active[data-tech="wired"] {
        background: var(--rk-tech-blue);
        color: #ffffff;
        border-color: var(--rk-tech-blue);
    }
    
    .rk-tech-toggle-btn.active[data-tech="wireless"] {
        background: var(--rk-tech-purple);
        color: #ffffff;
        border-color: var(--rk-tech-purple);
    }
    
    .rk-tech-grid { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article-technologie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/"
    },
    "headline": "Czym różni się sterowanie przewodowe od bezprzewodowego i co wybrać?",
    "description": "Szczegółowe porównanie technologii sterowania ogrzewaniem podłogowym. Niezawodność sygnału, zasilanie i koszty systemów przewodowych (230V) vs bezprzewodowych (ZigBee).",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-12-29",
    "dateModified": "2026-07-07"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#dataset-technologie",
    "name": "Zestawienie parametrów techniczno-użytkowych systemów automatyki HVAC",
    "description": "Dane porównawcze dla systemów przewodowych (topologia gwiazdy) oraz bezprzewodowych (topologia Mesh ZigBee) obejmujące koszty, niezawodność i metody zasilania.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "sterowanie przewodowe czy bezprzewodowe podłogówka",
      "termostaty bezprzewodowe zigbee",
      "kable do sterowania ogrzewaniem",
      "topologia mesh ogrzewanie",
      "koszt automatyki podłogówki"
    ],
    "measurementTechnique": "Analiza kosztorysowa punktów pomiarowych oraz ewaluacja tłumienności sygnału radiowego względem stabilności połączeń kablowych YDY/FTP.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "System przewodowy oferuje 100% odporności na zakłócenia przy średnim koszcie punktu 150-250 PLN.",
        "System bezprzewodowy pozwala na elastyczny montaż w wykończonych domach przy koszcie 280-450 PLN za punkt pomiarowy."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webapp-technologie",
    "name": "Symulator Architektury Sterowania Podłogówką",
    "description": "Interaktywne narzędzie pozwalające na błyskawiczne przekrojowe porównanie technologii przewodowej i radiowej na poziomie komponentów i topologii sieci.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-tech-container" id="rk-tech-app">
    <div class="rk-tech-header">
        <h2>Czym różni się sterowanie przewodowe od bezprzewodowego i co wybrać?</h2>
        <p>Wybór między systemem z okablowaniem a radiowym determinuje stabilność transmisji sygnału oraz łączny koszt inwestycji. Przełącz technologie, aby porównać kluczowe parametry techniczno-użytkowe obu rozwiązań.</p>
    </div>

    <div class="rk-tech-interactive">
        
        <div class="rk-tech-toggle-wrapper">
            <div class="rk-tech-toggle-bg" id="rkTechBg"></div>
            <button class="rk-tech-toggle-btn active" data-tech="wired" style="color: #ffffff;">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg>
                System Przewodowy (Bus/230V)
            </button>
            <button class="rk-tech-toggle-btn" data-tech="wireless">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12.55a11 11 0 0 1 14.08 0"></path><path d="M1.42 9a16 16 0 0 1 21.16 0"></path><path d="M8.53 16.11a6 6 0 0 1 6.95 0"></path><line x1="12" y1="20" x2="12.01" y2="20"></line></svg>
                System Bezprzewodowy (ZigBee)
            </button>
        </div>

        <div class="rk-tech-visualizer state-wired" id="rkTechVisual">
            <div class="rk-tech-svg-wrap">
                <svg viewBox="0 0 400 120" xmlns="http://www.w3.org/2000/svg">
                    <rect x="20" y="40" width="40" height="40" rx="4" fill="#334155" stroke="#cbd5e1" stroke-width="2"/>
                    <text x="40" y="65" fill="#ffffff" font-size="12" text-anchor="middle" font-weight="bold">22°C</text>
                    
                    <rect x="300" y="20" width="80" height="80" rx="4" fill="#334155" stroke="#cbd5e1" stroke-width="2"/>
                    <rect x="310" y="30" width="60" height="60" fill="#1e293b"/>
                    
                    <path class="rk-anim-cable" id="wirePath" d="M 60 60 L 150 60 L 150 90 L 300 90" fill="none" stroke="#38bdf8" stroke-width="4" stroke-linejoin="round"/>
                    
                    <g class="rk-anim-wave" id="radioWaves">
                        <circle cx="100" cy="60" r="15" fill="none" stroke="#a78bfa" stroke-width="3"/>
                        <circle cx="100" cy="60" r="30" fill="none" stroke="#a78bfa" stroke-width="2"/>
                        <circle cx="200" cy="60" r="15" fill="none" stroke="#a78bfa" stroke-width="3"/>
                        <circle cx="200" cy="60" r="30" fill="none" stroke="#a78bfa" stroke-width="2"/>
                    </g>
                </svg>
            </div>
        </div>

        <div class="rk-tech-grid" id="rkTechGrid">
            
            <div class="rk-param-card">
                <div class="rk-param-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
                </div>
                <h3>Niezawodność sygnału</h3>
                <div class="rk-param-value">
                    <div class="rk-val-content active" data-ref="wired">
                        <strong style="color: var(--rk-tech-blue);">100% Odporności</strong>
                        Całkowita odporność na zakłócenia elektromagnetyczne i grube bariery budowlane.
                    </div>
                    <div class="rk-val-content" data-ref="wireless">
                        <strong>92-98% Stabilności</strong>
                        Podatność na tłumienie przez stropy żelbetowe; często wymaga stosowania wzmacniaczy (repeaterów).
                    </div>
                </div>
            </div>

            <div class="rk-param-card">
                <div class="rk-param-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"></path></svg>
                </div>
                <h3>Zasilanie elementów</h3>
                <div class="rk-param-value">
                    <div class="rk-val-content active" data-ref="wired">
                        <strong style="color: var(--rk-tech-blue);">Stałe 230V / 24V</strong>
                        Bezpośrednie zasilanie z magistrali; całkowity brak konieczności pamiętania o wymianie ogniw.
                    </div>
                    <div class="rk-val-content" data-ref="wireless">
                        <strong>Bateryjne (2x AAA)</strong>
                        Żywotność ogniwa wynosi od 12 do 24 miesięcy w zależności od użytego protokołu komunikacyjnego.
                    </div>
                </div>
            </div>

            <div class="rk-param-card">
                <div class="rk-param-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg>
                </div>
                <h3>Architektura & Montaż</h3>
                <div class="rk-param-value">
                    <div class="rk-val-content active" data-ref="wired">
                        <strong style="color: var(--rk-tech-blue);">Topologia Gwiazdy (SSZ)</strong>
                        Kable YDY/FTP zbiegające się w <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">szafce rozdzielaczowej</a>. Montaż możliwy tylko przed tynkami.
                    </div>
                    <div class="rk-val-content" data-ref="wireless">
                        <strong>Topologia Siatki (Mesh)</strong>
                        Każde urządzenie (zasilane z sieci) rozszerza zasięg. Dowolny <a href="https://projekt-ogrzewania.pl/ile-trwa-montaz-ogrzewania-podlogowego/">moment montażu</a> – idealne do modernizacji.
                    </div>
                </div>
            </div>

            <div class="rk-param-card">
                <div class="rk-param-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="6" width="20" height="12" rx="2"></rect><circle cx="12" cy="12" r="2"></circle><path d="M6 12h.01M18 12h.01"></path></svg>
                </div>
                <h3>Średni koszt inwestycji</h3>
                <div class="rk-param-value">
                    <div class="rk-val-content active" data-ref="wired">
                        <strong style="color: var(--rk-tech-blue);">150 - 250 PLN</strong>
                        Szacunkowy koszt na jeden punkt pomiarowy (termostat). Należy doliczyć koszty okablowania ścian.
                    </div>
                    <div class="rk-val-content" data-ref="wireless">
                        <strong>280 - 450 PLN</strong>
                        Szacunkowy koszt na jeden punkt (termostat + moduł radiowy). Brak kosztów ukrytych okablowania.
                    </div>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btns = document.querySelectorAll('.rk-tech-toggle-btn');
    const toggleBg = document.getElementById('rkTechBg');
    const visualizer = document.getElementById('rkTechVisual');
    const grid = document.getElementById('rkTechGrid');
    const wirePath = document.getElementById('wirePath');
    const radioWaves = document.getElementById('radioWaves');
    
    // Bezpieczny selektor elementów do przełączania (bez &&)
    const valContents = document.querySelectorAll('.rk-val-content');

    btns.forEach((btn, index) => {
        btn.addEventListener('click', function() {
            
            // Reset stylów przycisków
            btns.forEach(b => {
                b.classList.remove('active');
                if(window.innerWidth > 768) {
                    b.style.color = 'var(--rk-tech-gray)';
                }
            });
            
            // Aktywacja klikniętego
            this.classList.add('active');
            
            const tech = this.getAttribute('data-tech');
            
            // Logika wizualna (Slider w tle)
            if(window.innerWidth > 768) {
                this.style.color = '#ffffff';
                if(index === 0) {
                    // Wired Mode
                    toggleBg.style.transform = 'translateX(0)';
                    toggleBg.style.backgroundColor = 'var(--rk-tech-blue)';
                    
                    grid.classList.remove('state-wireless-theme');
                    visualizer.classList.add('state-wired');
                    visualizer.classList.remove('state-wireless');
                    
                    wirePath.style.display = 'block';
                    radioWaves.style.display = 'none';
                } else {
                    // Wireless Mode
                    toggleBg.style.transform = 'translateX(100%)';
                    toggleBg.style.backgroundColor = 'var(--rk-tech-purple)';
                    
                    grid.classList.add('state-wireless-theme');
                    visualizer.classList.add('state-wireless');
                    visualizer.classList.remove('state-wired');
                    
                    wirePath.style.display = 'none';
                    radioWaves.style.display = 'block';
                }
            } else {
                // Logika dla urządzeń mobilnych
                if(tech === 'wired') {
                    grid.classList.remove('state-wireless-theme');
                    visualizer.classList.add('state-wired');
                    visualizer.classList.remove('state-wireless');
                    wirePath.style.display = 'block';
                    radioWaves.style.display = 'none';
                } else {
                    grid.classList.add('state-wireless-theme');
                    visualizer.classList.add('state-wireless');
                    visualizer.classList.remove('state-wired');
                    wirePath.style.display = 'none';
                    radioWaves.style.display = 'block';
                }
            }

            // Przełączanie treści w kartach (tylko if/else)
            valContents.forEach(content => {
                const ref = content.getAttribute('data-ref');
                if (ref === tech) {
                    content.classList.add('active');
                } else {
                    content.classList.remove('active');
                }
            });
        });
    });

    // Zabezpieczenie dla zmiany orientacji urządzenia
    window.addEventListener('resize', function() {
        if(window.innerWidth <= 768) {
            btns.forEach(b => b.style.color = ''); 
        } else {
            const activeBtn = document.querySelector('.rk-tech-toggle-btn.active');
            if (activeBtn) {
                activeBtn.style.color = '#ffffff';
            }
        }
    });
    
    // Inicjalny stan ukrycia fal radiowych
    radioWaves.style.display = 'none';
});
</script>



<style>
:root {
    --rk-ntc-dark: #0f172a;
    --rk-ntc-blue: #0284c7;
    --rk-ntc-red: #ef4444;
    --rk-ntc-red-light: #fef2f2;
    --rk-ntc-green: #10b981;
    --rk-ntc-green-light: #dcfce7;
    --rk-ntc-gray: #475569;
    --rk-ntc-gray-light: #f8fafc;
    --rk-ntc-bg: #ffffff;
    --rk-ntc-border: #e2e8f0;
}

.rk-ntc-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-ntc-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.1);
    border: 1px solid var(--rk-ntc-border);
    overflow: hidden;
}

.rk-ntc-header {
    padding: 40px 50px;
    background: linear-gradient(135deg, var(--rk-ntc-dark) 0%, #1e293b 100%);
    color: #ffffff;
}

.rk-ntc-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-ntc-header p {
    font-size: 16px;
    color: #cbd5e1;
    margin: 0 0 15px 0;
    line-height: 1.7;
}
.rk-ntc-header p:last-child {
    margin: 0;
}

.rk-ntc-header a {
    color: #7dd3fc;
    text-decoration: none;
    border-bottom: 1px dashed #7dd3fc;
    font-weight: 600;
    transition: color 0.2s;
}

.rk-ntc-header a:hover {
    color: #ffffff;
    border-bottom-color: #ffffff;
}

.rk-ntc-body {
    padding: 40px 50px;
}

/* Simulator Wrapper */
.rk-ntc-simulator {
    background: var(--rk-ntc-gray-light);
    border: 1px solid var(--rk-ntc-border);
    border-radius: 20px;
    padding: 35px;
    display: flex;
    flex-direction: column;
    gap: 30px;
}

.rk-ntc-sim-title {
    text-align: center;
    margin: 0;
}

.rk-ntc-sim-title h3 {
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-ntc-dark);
    margin: 0 0 5px 0;
}

.rk-ntc-sim-title p {
    font-size: 14px;
    color: var(--rk-ntc-gray);
    margin: 0;
}

/* Layout */
.rk-ntc-layout {
    display: flex;
    gap: 40px;
    align-items: stretch;
}

/* Controls */
.rk-ntc-controls {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.rk-ntc-toggle-group {
    display: flex;
    background: var(--rk-ntc-border);
    border-radius: 12px;
    padding: 5px;
}

.rk-ntc-toggle-btn {
    flex: 1;
    padding: 14px;
    border: none;
    background: transparent;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-ntc-gray);
    cursor: pointer;
    transition: all 0.3s;
}

.rk-ntc-toggle-btn.active[data-mode="on"] {
    background: var(--rk-ntc-green);
    color: #ffffff;
    box-shadow: 0 4px 6px rgba(16, 185, 129, 0.2);
}

.rk-ntc-toggle-btn.active[data-mode="off"] {
    background: var(--rk-ntc-red);
    color: #ffffff;
    box-shadow: 0 4px 6px rgba(239, 68, 68, 0.2);
}

.rk-ntc-slider-group {
    background: var(--rk-ntc-bg);
    padding: 25px;
    border-radius: 16px;
    border: 1px solid var(--rk-ntc-border);
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-ntc-slider-group label {
    display: block;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-ntc-dark);
    margin-bottom: 15px;
}

.rk-ntc-slider {
    width: 100%;
    -webkit-appearance: none;
    height: 8px;
    border-radius: 4px;
    background: var(--rk-ntc-border);
    outline: none;
    margin-bottom: 20px;
}

.rk-ntc-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--rk-ntc-blue);
    cursor: pointer;
    border: 4px solid #ffffff;
    box-shadow: 0 4px 10px rgba(2, 132, 199, 0.3);
}

.rk-ntc-readings {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-top: 15px;
    border-top: 1px dashed var(--rk-ntc-border);
}

.rk-ntc-reading-box {
    text-align: center;
}

.rk-ntc-reading-box span {
    display: block;
    font-size: 12px;
    color: var(--rk-ntc-gray);
    text-transform: uppercase;
    font-weight: 700;
    margin-bottom: 5px;
}

.rk-ntc-reading-box strong {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-ntc-dark);
}

/* Visualization */
.rk-ntc-visual {
    flex: 1;
    background: var(--rk-ntc-bg);
    border-radius: 16px;
    border: 1px solid var(--rk-ntc-border);
    padding: 30px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    position: relative;
    overflow: hidden;
}

.rk-ntc-status-badge {
    position: absolute;
    top: 20px;
    left: 50%;
    transform: translateX(-50%);
    padding: 8px 16px;
    border-radius: 20px;
    font-size: 13px;
    font-weight: 800;
    transition: all 0.3s;
    z-index: 10;
}

.rk-badge-safe { background: var(--rk-ntc-green-light); color: var(--rk-ntc-green); }
.rk-badge-warn { background: var(--rk-ntc-red-light); color: var(--rk-ntc-red); }

.rk-ntc-svg-wrap {
    width: 100%;
    max-width: 250px;
    margin-top: 20px;
}

/* SVG Animations & States */
.rk-svg-panel { transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); fill: #e2e8f0; }
.rk-svg-pipe { transition: fill 0.4s; fill: #94a3b8; }
.rk-svg-lzo { opacity: 0; transition: opacity 0.3s, transform 2s; }

/* States */
.state-heating .rk-svg-pipe { fill: var(--rk-ntc-red); }
.state-heating .rk-svg-panel { fill: #f8fafc; }

.state-blocked .rk-svg-pipe { fill: var(--rk-ntc-blue); }
.state-blocked .rk-svg-panel { fill: #f8fafc; }

.state-damaged .rk-svg-pipe { fill: var(--rk-ntc-red); }
.state-damaged .rk-svg-panel { fill: #fecaca; transform: translateY(-5px) rotate(2deg); transform-origin: center; }
.state-damaged .rk-svg-lzo { opacity: 1; animation: floatUp 2s infinite linear; }

@keyframes floatUp {
    0% { transform: translateY(0) scale(1); opacity: 0.8; }
    100% { transform: translateY(-30px) scale(1.5); opacity: 0; }
}

@media (max-width: 768px) {
    .rk-ntc-container { margin: 20px auto; }
    .rk-ntc-header, .rk-ntc-body { padding: 25px 20px; }
    .rk-ntc-header h2 { font-size: 22px; }
    .rk-ntc-layout { flex-direction: column; gap: 20px; }
    .rk-ntc-simulator { padding: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article-czujnik",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/"
    },
    "headline": "Dlaczego czujnik podłogowy jest niezbędny przy panelach winylowych i parkiecie?",
    "description": "Zrozum tryb dwukanałowy termostatu. Zobacz, jak brak czujnika NTC w wylewce prowadzi do przegrzania posadzki powyżej 27 stopni i nieodwracalnych uszkodzeń paneli LVT.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-07",
    "dateModified": "2026-07-07"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#dataset-czujnik",
    "name": "Graniczne temperatury posadzek (Czujnik NTC)",
    "description": "Parametry krytyczne dla bezpiecznej eksploatacji ogrzewania płaszczyznowego z okładzinami wrażliwymi termicznie.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "czujnik temperatury podłogi do paneli winylowych",
      "maksymalna temperatura ogrzewania podłogowego parkiet",
      "termostat dwukanałowy pokojowo podłogowy",
      "emisja LZO z paneli ogrzewanie",
      "deformacja paneli ogrzewanie podłogowe"
    ],
    "measurementTechnique": "Pomiar dwukanałowy: równoległa ewaluacja temperatury powietrza i wylewki celem wywołania zjawiska sprzężenia zwrotnego i zamknięcia zaworu (siłownika NC).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Limit temperaturowy 27°C jako absolutne maksimum dla gwarancji paneli i parkietów.",
        "Przekroczenie bariery 27°C powoduje rozsychanie zamków oraz zwiększoną emisję lotnych związków organicznych (LZO)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webapp-czujnik",
    "name": "Symulator termicznego zabezpieczenia posadzki (NTC)",
    "description": "Fizyczny symulator obrazujący asymetrię nagrzewania powietrza i wylewki oraz konsekwencje braku dwukanałowego zabezpieczenia instalacji podłogowej.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-ntc-container" id="rk-ntc-app">
    <div class="rk-ntc-header">
        <h2>Dlaczego czujnik podłogowy jest niezbędny przy panelach winylowych i parkiecie?</h2>
        <p>Czujnik temperatury podłogi (rezystancyjny czujnik NTC umieszczony w peszlu ochronnym wewnątrz wylewki) jest bezwzględnie wymagany, gdy <a href="https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/">okładzinę stanowią panele</a> laminowane, <a href="https://projekt-ogrzewania.pl/czy-pod-ogrzewanie-podlogowe-nadaja-sie-panele-czy-tylko-plytki/">panele winylowe (LVT)</a> lub <a href="https://projekt-ogrzewania.pl/podlogi-drewniane-vs-panele-laminowane-co-wybrac-przy-ogrzewaniu-podlogowym/">parkiet warstwowy</a>, ponieważ producenci tych materiałów bezwzględnie ograniczają maksymalną temperaturę podłogi do 27°C.</p>
        <p>Termostat pokojowo-podłogowy działa w trybie dwukanałowym. Nadrzędnym celem jest osiągnięcie temperatury powietrza (np. 22°C), ale jeśli w procesie nagrzewania, na skutek zbyt <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">wysokiej temperatury zasilania</a>, wylewka osiągnie 27°C, czujnik podłogowy wymusza natychmiastowe zamknięcie siłownika pętli. Przekroczenie tego limitu to utrata gwarancji, emisja szkodliwych związków lotnych (LZO) oraz destrukcja materiału.</p>
    </div>

    <div class="rk-ntc-body">
        <div class="rk-ntc-simulator">
            <div class="rk-ntc-sim-title">
                <h3>Symulator Trybu Dwukanałowego (NTC)</h3>
                <p>Zobacz, jak zachowuje się posadzka w fazie intensywnego nagrzewania pokoju.</p>
            </div>

            <div class="rk-ntc-layout">
                <div class="rk-ntc-controls">
                    <div class="rk-ntc-toggle-group">
                        <button class="rk-ntc-toggle-btn active" data-mode="on" id="btnNtcOn">Termostat z czujnikiem NTC</button>
                        <button class="rk-ntc-toggle-btn" data-mode="off" id="btnNtcOff">Tylko czujnik powietrza</button>
                    </div>

                    <div class="rk-ntc-slider-group">
                        <label>Zwiększ zapotrzebowanie na ciepło (Nagrzewanie)</label>
                        <input type="range" class="rk-ntc-slider" id="heatSlider" min="0" max="100" value="0">
                        
                        <div class="rk-ntc-readings">
                            <div class="rk-ntc-reading-box">
                                <span>Temp. Powietrza</span>
                                <strong id="valAir">20.0°C</strong>
                            </div>
                            <div class="rk-ntc-reading-box">
                                <span>Temp. Posadzki</span>
                                <strong id="valFloor" style="color: var(--rk-ntc-blue);">20.0°C</strong>
                            </div>
                        </div>
                    </div>
                </div>

                <div class="rk-ntc-visual" id="visualBox">
                    <div class="rk-ntc-status-badge rk-badge-safe" id="statusBadge">System Oczekuje</div>
                    
                    <div class="rk-ntc-svg-wrap">
                        <svg viewBox="0 0 200 150" xmlns="http://www.w3.org/2000/svg">
                            <rect x="10" y="80" width="180" height="60" fill="#cbd5e1" rx="4"/>
                            <line x1="10" y1="110" x2="190" y2="110" stroke="#94a3b8" stroke-width="2" stroke-dasharray="10 5"/>
                            
                            <circle cx="40" cy="95" r="8" class="rk-svg-pipe"/>
                            <circle cx="80" cy="95" r="8" class="rk-svg-pipe"/>
                            <circle cx="120" cy="95" r="8" class="rk-svg-pipe"/>
                            <circle cx="160" cy="95" r="8" class="rk-svg-pipe"/>

                            <rect x="10" y="65" width="180" height="10" class="rk-svg-panel" rx="2"/>
                            
                            <line x1="70" y1="65" x2="70" y2="75" stroke="#94a3b8" stroke-width="1"/>
                            <line x1="130" y1="65" x2="130" y2="75" stroke="#94a3b8" stroke-width="1"/>

                            <g class="rk-svg-lzo">
                                <circle cx="50" cy="45" r="4" fill="#ef4444"/>
                                <circle cx="150" cy="35" r="3" fill="#ef4444"/>
                                <circle cx="100" cy="50" r="5" fill="#ef4444"/>
                                <text x="100" y="25" font-size="10" fill="#ef4444" text-anchor="middle" font-weight="bold">LZO!</text>
                            </g>
                        </svg>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    let modeNTC = true; // true = z czujnikiem (bezpiecznie), false = bez (niebezpiecznie)
    
    const btnOn = document.getElementById('btnNtcOn');
    const btnOff = document.getElementById('btnNtcOff');
    const slider = document.getElementById('heatSlider');
    const valAir = document.getElementById('valAir');
    const valFloor = document.getElementById('valFloor');
    const visualBox = document.getElementById('visualBox');
    const statusBadge = document.getElementById('statusBadge');

    function updateSimulation() {
        let heatInput = parseInt(slider.value); // 0 do 100
        
        // Bazy temperaturowe
        let baseAir = 20.0;
        let baseFloor = 20.0;

        // Bezwładność: podłoga nagrzewa się 3x szybciej niż powietrze w tej symulacji
        // Max heatInput(100) -> powietrze rośnie o 3°C, podłoga o 12°C
        let currentAir = baseAir + (heatInput * 0.03);
        let currentFloor = baseFloor + (heatInput * 0.12);

        // Reset klas
        visualBox.className = 'rk-ntc-visual';
        statusBadge.className = 'rk-ntc-status-badge';

        if (modeNTC) {
            // TRYB ZABEZPIECZONY NTC
            if (currentFloor > 27) {
                // Czujnik ucina zasilanie na 27°C
                currentFloor = 27;
                visualBox.classList.add('state-blocked');
                
                statusBadge.classList.add('rk-badge-safe');
                statusBadge.innerText = 'Zawór Zamknięty (Limit 27°C)';
                valFloor.style.color = 'var(--rk-ntc-blue)';
            } else {
                if (heatInput > 0) {
                    visualBox.classList.add('state-heating');
                    statusBadge.classList.add('rk-badge-safe');
                    statusBadge.innerText = 'Nagrzewanie Bezpieczne';
                    valFloor.style.color = 'var(--rk-ntc-green)';
                } else {
                    statusBadge.classList.add('rk-badge-safe');
                    statusBadge.innerText = 'System Oczekuje';
                    valFloor.style.color = 'var(--rk-ntc-blue)';
                }
            }
        } else {
            // TRYB BEZ CZUJNIKA NTC (Katastrofa)
            if (currentFloor > 27) {
                visualBox.classList.add('state-damaged');
                statusBadge.classList.add('rk-badge-warn');
                statusBadge.innerText = 'KRYTYCZNE PRZEGRZANIE POSADZKI!';
                valFloor.style.color = 'var(--rk-ntc-red)';
            } else {
                if (heatInput > 0) {
                    visualBox.classList.add('state-heating');
                    statusBadge.classList.add('rk-badge-safe');
                    statusBadge.innerText = 'Nagrzewanie...';
                    valFloor.style.color = 'var(--rk-ntc-green)';
                } else {
                    statusBadge.classList.add('rk-badge-safe');
                    statusBadge.innerText = 'System Oczekuje';
                    valFloor.style.color = 'var(--rk-ntc-blue)';
                }
            }
        }

        // Aktualizacja UI
        valAir.innerText = currentAir.toFixed(1) + '°C';
        valFloor.innerText = currentFloor.toFixed(1) + '°C';
    }

    // Obsługa zdarzeń (bezpieczna logika IF/ELSE)
    btnOn.addEventListener('click', function() {
        modeNTC = true;
        btnOn.classList.add('active');
        btnOff.classList.remove('active');
        updateSimulation();
    });

    btnOff.addEventListener('click', function() {
        modeNTC = false;
        btnOff.classList.add('active');
        btnOn.classList.remove('active');
        updateSimulation();
    });

    slider.addEventListener('input', updateSimulation);

    // Inicjalizacja
    updateSimulation();
});
</script>



<style>
:root {
    --rk-sreg-dark: #0f172a;
    --rk-sreg-blue: #0284c7;
    --rk-sreg-blue-light: #e0f2fe;
    --rk-sreg-gold: #eab308;
    --rk-sreg-gray: #475569;
    --rk-sreg-gray-light: #f8fafc;
    --rk-sreg-bg: #ffffff;
    --rk-sreg-border: #e2e8f0;
}

.rk-sreg-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-sreg-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.1);
    border: 1px solid var(--rk-sreg-blue);
    overflow: hidden;
}

.rk-sreg-header {
    padding: 40px 50px;
    background: linear-gradient(135deg, var(--rk-sreg-dark) 0%, #1e293b 100%);
    color: #ffffff;
    border-bottom: 4px solid var(--rk-sreg-gold);
}

.rk-sreg-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 20px 0;
    line-height: 1.3;
}

.rk-sreg-header p {
    font-size: 16px;
    color: #cbd5e1;
    margin: 0 0 15px 0;
    line-height: 1.7;
}

.rk-sreg-header p:last-child {
    margin-bottom: 0;
}

.rk-sreg-header a {
    color: var(--rk-sreg-gold);
    text-decoration: none;
    font-weight: 700;
    border-bottom: 1px dashed var(--rk-sreg-gold);
}

.rk-sreg-body {
    padding: 40px 50px;
}

/* Interaktywny symulator */
.rk-sreg-simulator {
    background: var(--rk-sreg-gray-light);
    border: 1px solid var(--rk-sreg-border);
    border-radius: 20px;
    padding: 35px;
    display: flex;
    flex-direction: column;
    gap: 30px;
}

.rk-sreg-sim-title {
    text-align: center;
    margin: 0;
}

.rk-sreg-sim-title h3 {
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-sreg-dark);
    margin: 0 0 8px 0;
}

.rk-sreg-sim-title span {
    font-size: 14px;
    color: var(--rk-sreg-gray);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.rk-sreg-layout {
    display: flex;
    align-items: center;
    gap: 40px;
}

/* Panel sterowania */
.rk-sreg-controls {
    flex: 1;
    background: var(--rk-sreg-bg);
    padding: 25px;
    border-radius: 16px;
    border: 1px solid var(--rk-sreg-border);
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-sreg-input-group {
    margin-bottom: 25px;
}

.rk-sreg-input-group label {
    display: block;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-sreg-gray);
    margin-bottom: 12px;
}

.rk-sreg-slider {
    width: 100%;
    -webkit-appearance: none;
    height: 8px;
    border-radius: 4px;
    background: var(--rk-sreg-border);
    outline: none;
}

.rk-sreg-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: var(--rk-sreg-blue);
    cursor: pointer;
    border: 4px solid var(--rk-sreg-bg);
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
    transition: transform 0.1s;
}

.rk-sreg-slider::-webkit-slider-thumb:active {
    transform: scale(1.1);
}

.rk-sreg-value-display {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-sreg-dark);
    margin-top: 8px;
}

.rk-sreg-fixed-val {
    padding-top: 15px;
    border-top: 1px dashed var(--rk-sreg-border);
}

.rk-sreg-fixed-val div {
    font-size: 13px;
    color: var(--rk-sreg-gray);
    font-weight: 600;
}

.rk-sreg-fixed-val strong {
    font-size: 18px;
    color: var(--rk-sreg-dark);
    display: block;
    margin-top: 5px;
}

/* Panel wizualizacji */
.rk-sreg-visual {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    background: var(--rk-sreg-dark);
    border-radius: 16px;
    padding: 30px;
    color: #ffffff;
    position: relative;
    overflow: hidden;
}

.rk-sreg-visual::before {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 40px;
    background: #334155; /* Symulacja płyty fundamentowej */
}

.rk-sreg-emission-val {
    font-size: 42px;
    font-weight: 900;
    color: var(--rk-sreg-gold);
    line-height: 1;
    margin-bottom: 5px;
    z-index: 2;
}

.rk-sreg-emission-label {
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: #cbd5e1;
    z-index: 2;
    margin-bottom: 25px;
}

/* Fale ciepła SVG */
.rk-sreg-heat-waves {
    width: 100px;
    height: 80px;
    z-index: 2;
    margin-bottom: 10px;
}

.rk-wave-path {
    fill: none;
    stroke: var(--rk-sreg-gold);
    stroke-width: 4;
    stroke-linecap: round;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-wave-1 { opacity: 1; transform: translateY(0); }
.rk-wave-2 { opacity: 0.7; transform: translateY(0); }
.rk-wave-3 { opacity: 0.4; transform: translateY(0); }

/* Komunikat o blokadzie */
.rk-sreg-block-msg {
    position: absolute;
    top: 20px;
    background: var(--rk-sreg-blue);
    color: #ffffff;
    padding: 6px 14px;
    border-radius: 20px;
    font-size: 12px;
    font-weight: 800;
    opacity: 0;
    transform: translateY(-10px);
    transition: all 0.3s;
    z-index: 3;
}

.rk-sreg-block-msg.show {
    opacity: 1;
    transform: translateY(0);
}

@media (max-width: 768px) {
    .rk-sreg-container { margin: 20px auto; border-radius: 16px; }
    .rk-sreg-header, .rk-sreg-body { padding: 25px 20px; }
    .rk-sreg-header h2 { font-size: 22px; }
    
    .rk-sreg-simulator { padding: 20px; }
    .rk-sreg-layout { flex-direction: column; gap: 20px; }
    .rk-sreg-controls, .rk-sreg-visual { width: 100%; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article-samoregulacja",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/"
    },
    "headline": "Kiedy montaż sterowników do podłogówki mija się z celem? Wyjątki i ograniczenia",
    "description": "Zrozum zjawisko samoregulacji termicznej w budynkach pasywnych. Kiedy płyta fundamentowa grzewcza nie wymaga instalacji termostatów pokojowych.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-12-29",
    "dateModified": "2026-07-07"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#dataset-samoregulacja",
    "name": "Parametry fizyczne zjawiska samoregulacji podłogówki",
    "description": "Fizyczne dane dotyczące spadku emisji cieplnej jastrychu w zależności od różnicy temperatur (Delta T) między powierzchnią a powietrzem.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "domy pasywne ogrzewanie podłogowe",
      "płyta fundamentowa grzewcza",
      "samoregulacja termiczna podłogówki",
      "bezwładność cieplna wylewki",
      "pasywne zyski ciepła"
    ],
    "measurementTechnique": "Kalkulacja procentowego spadku emisji ciepła na podstawie zawężającej się różnicy temperatur przy stałej temperaturze podłogi (24 st. C).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Spadek różnicy temperatur z 2K do 1K obniża emisję ciepła przez posadzkę o 50%.",
        "Zjawisko samoregulacji jest w pełni wystarczające w budynkach o zapotrzebowaniu na energię EU poniżej 15 kWh/(m2/rok)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webapp-samoregulacja",
    "name": "Symulator Zjawiska Samoregulacji Termicznej",
    "description": "Narzędzie fizyczne wizualizujące blokadę oddawania ciepła przez podłogę pod wpływem pasywnych zysków wewnętrznych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-sreg-container" id="rk-sreg-app">
    <div class="rk-sreg-header">
        <h2>Kiedy montaż sterowników do podłogówki mija się z celem? Wyjątki i ograniczenia</h2>
        <p>Automatyka strefowa (termostaty pokojowe zamykające pętle) staje się technicznie nieefektywna w <a href="https://projekt-ogrzewania.pl/projektowanie-ogrzewania-podlogowego-w-domach-pasywnych/">budynkach pasywnych</a> oraz wysoce energooszczędnych o rocznym zapotrzebowaniu na energię użytkową do ogrzewania EU &le; 15 kWh/(m²&middot;rok), w których zastosowano grubą <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-plycie-fundamentowej-techniczny-przewodnik-po-projektowaniu-i-montazu/">płytę fundamentową grzewczą</a> (wylewka >10 cm). W takich obiektach bezwładność cieplna układu wynosi od 12 do 24 godzin, co sprawia, że zanim siłownik zamknie przepływ, zapotrzebowanie na ciepło zdąży się drastycznie zmienić.</p>
        
        <p>W domach o tak niskich stratach ciepła, o stabilny <a href="https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/">bilans cieplny budowli</a> dba zjawisko samoregulacji termicznej (self-regulation effect). Jeśli temperatura powietrza w pokoju wynosi 22&deg;C, a powierzchnia podłogi ma 24&deg;C, różnica wynosi zaledwie 2 K. Gdy temperatura w pokoju wzrośnie do 23&deg;C (np. z powodu <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-a-pasywne-zyski-ciepla/">pasywnych zysków od słońca</a>), różnica temperatur spada do 1 K, co powoduje automatyczny, fizyczny spadek emisji ciepła przez podłogę o blisko 50% bez jakiejkolwiek ingerencji elektroniki. W takich przypadkach optymalnym rozwiązaniem jest sterowanie wyłącznie centralne.</p>
    </div>

    <div class="rk-sreg-body">
        <div class="rk-sreg-simulator">
            <div class="rk-sreg-sim-title">
                <h3>Wizualizacja Samoregulacji Termicznej</h3>
                <span>Zobacz jak fizyka zastępuje elektronikę</span>
            </div>

            <div class="rk-sreg-layout">
                <div class="rk-sreg-controls">
                    <div class="rk-sreg-input-group">
                        <label>Zyski ciepła (Temp. powietrza w pokoju)</label>
                        <input type="range" class="rk-sreg-slider" id="srAirTemp" min="20.0" max="25.0" step="0.5" value="20.0">
                        <div class="rk-sreg-value-display"><span id="srAirDisplay">20.0</span> &deg;C</div>
                    </div>
                    
                    <div class="rk-sreg-fixed-val">
                        <div>Stała temperatura nagrzanej płyty podłogowej:</div>
                        <strong>24.0 &deg;C</strong>
                    </div>
                </div>

                <div class="rk-sreg-visual">
                    <div class="rk-sreg-block-msg" id="srBlockMsg">Fizyczna Blokada Emisji!</div>
                    
                    <div class="rk-sreg-emission-val"><span id="srPowerDisplay">100</span>%</div>
                    <div class="rk-sreg-emission-label">Emisja ciepła z posadzki</div>

                    <svg class="rk-sreg-heat-waves" viewBox="0 0 100 80">
                        <path class="rk-wave-path rk-wave-1" id="wave1" d="M20 70 Q35 50 50 70 T80 70" />
                        <path class="rk-wave-path rk-wave-2" id="wave2" d="M20 45 Q35 25 50 45 T80 45" />
                        <path class="rk-wave-path rk-wave-3" id="wave3" d="M20 20 Q35 0 50 20 T80 20" />
                    </svg>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const sliderAir = document.getElementById('srAirTemp');
    const displayAir = document.getElementById('srAirDisplay');
    const displayPower = document.getElementById('srPowerDisplay');
    const blockMsg = document.getElementById('srBlockMsg');
    
    // Fale SVG
    const wave1 = document.getElementById('wave1');
    const wave2 = document.getElementById('wave2');
    const wave3 = document.getElementById('wave3');

    const floorTemp = 24.0;
    const maxDelta = 4.0; // Różnica bazowa (24 - 20) dla 100% emisji

    function updatePhysics() {
        let airTemp = parseFloat(sliderAir.value);
        displayAir.innerText = airTemp.toFixed(1);

        let deltaT = floorTemp - airTemp;
        
        // Zabezpieczenie przed wartością ujemną
        if (deltaT < 0) {
            deltaT = 0;
        }

        // Procent emisji
        let powerPercent = (deltaT / maxDelta) * 100;
        
        if (powerPercent < 0) {
            powerPercent = 0;
        }

        displayPower.innerText = Math.round(powerPercent);

        // Wizualizacja fal
        if (powerPercent > 70) {
            wave1.style.opacity = '1';
            wave2.style.opacity = '0.8';
            wave3.style.opacity = '0.5';
            wave1.style.transform = 'translateY(0)';
            wave2.style.transform = 'translateY(0)';
            wave3.style.transform = 'translateY(0)';
            blockMsg.classList.remove('show');
        } else if (powerPercent > 40) {
            wave1.style.opacity = '0.8';
            wave2.style.opacity = '0.4';
            wave3.style.opacity = '0';
            wave1.style.transform = 'translateY(5px)';
            wave2.style.transform = 'translateY(10px)';
            blockMsg.classList.remove('show');
        } else if (powerPercent > 0) {
            wave1.style.opacity = '0.4';
            wave2.style.opacity = '0';
            wave3.style.opacity = '0';
            wave1.style.transform = 'translateY(15px)';
            blockMsg.classList.remove('show');
        } else {
            // Emisja równa 0%
            wave1.style.opacity = '0';
            wave2.style.opacity = '0';
            wave3.style.opacity = '0';
            blockMsg.classList.add('show');
        }
    }

    sliderAir.addEventListener('input', updatePhysics);
    
    // Inicjalizacja
    updatePhysics();
});
</script>



<style>
:root {
    --rk-pwm-dark: #0f172a;
    --rk-pwm-blue: #0284c7;
    --rk-pwm-blue-light: #e0f2fe;
    --rk-pwm-orange: #f97316;
    --rk-pwm-orange-light: #ffedd5;
    --rk-pwm-gray: #475569;
    --rk-pwm-bg: #ffffff;
    --rk-pwm-border: #e2e8f0;
}

.rk-pwm-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-pwm-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-pwm-blue);
    overflow: hidden;
}

.rk-pwm-header {
    padding: 40px 50px;
    background: linear-gradient(135deg, var(--rk-pwm-dark) 0%, #1e293b 100%);
    color: #ffffff;
}

.rk-pwm-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-pwm-header p {
    font-size: 16px;
    color: #cbd5e1;
    margin: 0;
    line-height: 1.6;
}

.rk-pwm-body {
    padding: 40px 50px;
}

.rk-pwm-steps {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    margin-bottom: 40px;
}

.rk-pwm-step {
    background: #f8fafc;
    border: 1px solid var(--rk-pwm-border);
    border-radius: 16px;
    padding: 25px;
}

.rk-pwm-step-number {
    display: inline-block;
    background: var(--rk-pwm-blue);
    color: #ffffff;
    width: 32px;
    height: 32px;
    border-radius: 8px;
    text-align: center;
    line-height: 32px;
    font-weight: 800;
    margin-bottom: 15px;
}

.rk-pwm-step h3 {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-pwm-dark);
    margin: 0 0 10px 0;
}

.rk-pwm-step p {
    font-size: 14px;
    color: var(--rk-pwm-gray);
    line-height: 1.6;
    margin: 0;
}

.rk-pwm-step a {
    color: var(--rk-pwm-blue);
    text-decoration: none;
    font-weight: 600;
}

/* Interaktywny Symulator */
.rk-pwm-simulator {
    background: var(--rk-pwm-dark);
    border-radius: 20px;
    padding: 40px;
    color: #ffffff;
}

.rk-pwm-sim-title {
    font-size: 22px;
    font-weight: 800;
    margin: 0 0 30px 0;
    text-align: center;
    color: var(--rk-pwm-orange);
}

.rk-pwm-controls {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 40px;
    margin-bottom: 40px;
}

.rk-pwm-control-group {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.rk-pwm-control-group label {
    font-size: 14px;
    font-weight: 700;
    color: #cbd5e1;
}

.rk-pwm-slider {
    width: 100%;
    -webkit-appearance: none;
    height: 8px;
    border-radius: 4px;
    background: #334155;
    outline: none;
}

.rk-pwm-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--rk-pwm-orange);
    cursor: pointer;
    border: 4px solid #ffffff;
    box-shadow: 0 0 10px rgba(249, 115, 22, 0.5);
}

.rk-pwm-val-display {
    font-size: 24px;
    font-weight: 900;
    color: #ffffff;
    margin-top: 5px;
}

/* Przełącznik Wylewki */
.rk-screed-toggle {
    display: flex;
    background: #1e293b;
    border-radius: 12px;
    padding: 4px;
    margin-bottom: 20px;
}

.rk-screed-btn {
    flex: 1;
    padding: 12px;
    text-align: center;
    background: transparent;
    border: none;
    color: #94a3b8;
    font-weight: 700;
    font-size: 14px;
    cursor: pointer;
    border-radius: 8px;
    transition: all 0.3s;
}

.rk-screed-btn.active {
    background: var(--rk-pwm-blue);
    color: #ffffff;
}

/* Wyniki */
.rk-pwm-results {
    background: #1e293b;
    border-radius: 16px;
    padding: 30px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
}

.rk-pwm-result-box {
    flex: 1;
    text-align: center;
}

.rk-pwm-result-label {
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: #94a3b8;
    margin-bottom: 8px;
}

.rk-pwm-result-value {
    font-size: 32px;
    font-weight: 900;
}

.rk-val-open { color: var(--rk-pwm-orange); }
.rk-val-closed { color: var(--rk-pwm-blue); }

.rk-pwm-visual {
    width: 120px;
    height: 120px;
    position: relative;
}

.rk-svg-circle {
    transform: rotate(-90deg);
    transform-origin: 50% 50%;
    transition: stroke-dasharray 0.5s ease;
}

/* CTA */
.rk-pwm-cta {
    background: var(--rk-pwm-bg);
    padding: 40px 50px;
    text-align: center;
    border-top: 1px solid var(--rk-pwm-border);
}

.rk-pwm-cta h3 {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-pwm-dark);
    margin: 0 0 15px 0;
}

.rk-pwm-cta p {
    font-size: 16px;
    color: var(--rk-pwm-gray);
    margin: 0 auto 25px auto;
    max-width: 700px;
    line-height: 1.6;
}

.rk-btn-cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-pwm-blue);
    color: #ffffff;
    font-size: 16px;
    font-weight: 800;
    padding: 20px 35px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(2, 132, 199, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-btn-cta:hover {
    transform: translateY(-4px);
    background: #0369a1;
    box-shadow: 0 15px 35px -5px rgba(2, 132, 199, 0.5);
}

@media (max-width: 768px) {
    .rk-pwm-container { margin: 20px auto; }
    .rk-pwm-header, .rk-pwm-body, .rk-pwm-simulator, .rk-pwm-cta { padding: 30px 20px; }
    .rk-pwm-steps { grid-template-columns: 1fr; gap: 20px; }
    .rk-pwm-controls { grid-template-columns: 1fr; gap: 30px; }
    .rk-pwm-results { flex-direction: column; text-align: center; }
    .rk-svg-circle-wrap { margin: 20px auto; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article-pwm",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/"
    },
    "headline": "Jak poprawnie skonfigurować algorytm sterowania ogrzewaniem? Przewodnik krok po kroku",
    "description": "Techniczny przewodnik kalibracji automatyki podłogówki. Obliczanie czasu otwarcia siłowników w algorytmie PWM w zależności od uchybu temperatury i rodzaju wylewki.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-07",
    "dateModified": "2026-07-07"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#dataset-pwm",
    "name": "Parametry kalibracji algorytmu PWM/TPI w ogrzewaniu płaszczyznowym",
    "description": "Zbiór danych i wzorów matematycznych definiujących poprawną konfigurację systemów sterowania strefowego w zależności od masy termicznej jastrychu.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "algorytm PWM w ogrzewaniu",
      "histereza czy PWM",
      "czas otwarcia siłownika podłogówki",
      "wylewka anhydrytowa a sterowanie",
      "taktowanie pompy ciepła"
    ],
    "measurementTechnique": "Obliczanie cyklu pracy siłowników (t_on) z wykorzystaniem wzmocnienia proporcjonalnego Kp (0,2) oraz uchybu regulacji.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Baza czasu dla wylewki betonowej: 60 minut.",
        "Baza czasu dla wylewki anhydrytowej: 30 minut.",
        "Minimalny bezpieczny czas otwarcia siłownika (ochrona przekaźników): 3 minuty."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webapp-pwm",
    "name": "Symulator Algorytmu PWM dla Ogrzewania Podłogowego",
    "description": "Interaktywne narzędzie obliczeniowe pozwalające na symulację zachowania siłowników termoelektrycznych na podstawie zmiennej temperatury zadanej i aktualnej.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-pwm-container" id="rk-pwm-app">
    <div class="rk-pwm-header">
        <h2>Jak poprawnie skonfigurować algorytm sterowania ogrzewaniem? Przewodnik krok po kroku</h2>
        <p>Prawidłowa parametryzacja automatyki podłogówki zapobiega taktowaniu źródła ciepła i stabilizuje temperaturę. Poniżej znajduje się logika konfiguracji sterownika z uwzględnieniem algorytmu modulacji.</p>
    </div>

    <div class="rk-pwm-body">
        <div class="rk-pwm-steps">
            <div class="rk-pwm-step">
                <span class="rk-pwm-step-number">1</span>
                <h3>Wybór trybu pracy (PWM vs Histereza)</h3>
                <p>Należy bezwzględnie wyłączyć klasyczną histerezę, ponieważ wygeneruje ona przesterowania temperatury o ponad 1,5°C ze względu na <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">bezwładność wylewki</a>. Aktywuj algorytm <strong>PWM / TPI</strong>, dedykowany do układów inercyjnych.</p>
            </div>
            <div class="rk-pwm-step">
                <span class="rk-pwm-step-number">2</span>
                <h3>Określenie czasu cyklu PWM</h3>
                <p>Dla standardowej <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/">wylewki betonowej</a> czas cyklu ustawia się na <strong>60 minut</strong>. Dla wylewek anhydrytowych (cieńszych, szybko przewodzących ciepło) bazę czasu skracamy do <strong>30 minut</strong>.</p>
            </div>
            <div class="rk-pwm-step">
                <span class="rk-pwm-step-number">3</span>
                <h3>Wyliczenie czasu otwarcia siłownika</h3>
                <p>Algorytm oblicza czas zasilania siłownika w każdym cyklu na podstawie uchybu regulacji (różnicy temperatur):<br>
                <strong>Czas Otwarcia = Cykl × [ Kp × (Temp. Zadana - Temp. Aktualna) ]</strong><br>
                Gdzie wzmocnienie Kp wynosi zazwyczaj 0,2.</p>
            </div>
            <div class="rk-pwm-step">
                <span class="rk-pwm-step-number">4</span>
                <h3>Limity dla ochrony źródła</h3>
                <p>Należy wprowadzić minimalny czas otwarcia <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">siłownika termoelektrycznego</a> na poziomie <strong>3 minut</strong>. Zapobiega to zbędnemu uruchamianiu pompy obiegowej na zaledwie kilkanaście sekund.</p>
            </div>
        </div>

        <div class="rk-pwm-simulator">
            <h3 class="rk-pwm-sim-title">Symulator czasu pracy siłownika w algorytmie PWM</h3>
            
            <div class="rk-screed-toggle">
                <button class="rk-screed-btn active" data-cycle="60" id="btnBeton">Wylewka Betonowa (Cykl 60 min)</button>
                <button class="rk-screed-btn" data-cycle="30" id="btnAnhydryt">Wylewka Anhydrytowa (Cykl 30 min)</button>
            </div>

            <div class="rk-pwm-controls">
                <div class="rk-pwm-control-group">
                    <label>Temperatura Zadana (Termostat)</label>
                    <input type="range" class="rk-pwm-slider" id="tempZadana" min="18.0" max="25.0" step="0.1" value="22.0">
                    <div class="rk-pwm-val-display"><span id="valZadana">22.0</span> °C</div>
                </div>
                <div class="rk-pwm-control-group">
                    <label>Temperatura Aktualna w Pokoju</label>
                    <input type="range" class="rk-pwm-slider" id="tempAktualna" min="18.0" max="25.0" step="0.1" value="21.5">
                    <div class="rk-pwm-val-display"><span id="valAktualna">21.5</span> °C</div>
                </div>
            </div>

            <div class="rk-pwm-results">
                <div class="rk-pwm-result-box">
                    <div class="rk-pwm-result-label">Zawór otwarty (Grzanie)</div>
                    <div class="rk-pwm-result-value rk-val-open"><span id="outOpen">6</span> min</div>
                </div>
                
                <div class="rk-svg-circle-wrap">
                    <svg class="rk-pwm-visual" viewBox="0 0 100 100">
                        <circle cx="50" cy="50" r="45" fill="none" stroke="#0284c7" stroke-width="10"></circle>
                        <circle cx="50" cy="50" r="45" fill="none" stroke="#f97316" stroke-width="10" stroke-dasharray="0 283" class="rk-svg-circle" id="svgProgress"></circle>
                    </svg>
                </div>

                <div class="rk-pwm-result-box">
                    <div class="rk-pwm-result-label">Zawór zamknięty (Przerwa)</div>
                    <div class="rk-pwm-result-value rk-val-closed"><span id="outClosed">54</span> min</div>
                </div>
            </div>
        </div>
    </div>

    <div class="rk-pwm-cta">
        <h3>Projekt instalacji dopasowany do logiki sterownika</h3>
        <p>Błędnie dobrany rozstaw rur zniszczy efektywność nawet najlepszego sterownika z algorytmem PWM. Wybierz kompleksowy projekt instalacji grzewczej oparty na rzetelnych wyliczeniach hydraulicznych OZC.</p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-cta">
            ZAMÓW PROJEKT INSTALACJI OGRZEWANIA PODŁOGOWEGO ONLINE
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 18 15 12 9 6"></polyline></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    let cycleTime = 60; // Domyślnie beton
    const Kp = 0.2; // Wzmocnienie proporcjonalne
    
    const btnBeton = document.getElementById('btnBeton');
    const btnAnhydryt = document.getElementById('btnAnhydryt');
    const sliderZadana = document.getElementById('tempZadana');
    const sliderAktualna = document.getElementById('tempAktualna');
    const displayZadana = document.getElementById('valZadana');
    const displayAktualna = document.getElementById('valAktualna');
    const outOpen = document.getElementById('outOpen');
    const outClosed = document.getElementById('outClosed');
    const svgProgress = document.getElementById('svgProgress');

    // Funkcja obliczająca bez użycia &&
    function calculatePWM() {
        let tZad = parseFloat(sliderZadana.value);
        let tAkt = parseFloat(sliderAktualna.value);
        
        displayZadana.innerText = tZad.toFixed(1);
        displayAktualna.innerText = tAkt.toFixed(1);

        let error = tZad - tAkt;
        
        if (error < 0) {
            error = 0;
        }

        let timeOn = cycleTime * (Kp * error);

        if (timeOn > cycleTime) {
            timeOn = cycleTime;
        }

        if (timeOn > 0) {
            if (timeOn < 3) {
                // Zabezpieczenie źródła - limit minimum 3 min
                timeOn = 0;
            }
        }

        let timeOnRounded = Math.round(timeOn);
        let timeOff = cycleTime - timeOnRounded;

        outOpen.innerText = timeOnRounded;
        outClosed.innerText = timeOff;

        // Obliczenie proporcji do koła SVG (obwód = 2 * PI * 45 = ok. 282.7)
        let circumference = 283;
        let percentage = timeOnRounded / cycleTime;
        let strokeDash = percentage * circumference;
        
        svgProgress.style.strokeDasharray = strokeDash + " 283";
    }

    // Eventy dla przycisków wylewki
    btnBeton.addEventListener('click', function() {
        btnBeton.classList.add('active');
        btnAnhydryt.classList.remove('active');
        cycleTime = 60;
        calculatePWM();
    });

    btnAnhydryt.addEventListener('click', function() {
        btnAnhydryt.classList.add('active');
        btnBeton.classList.remove('active');
        cycleTime = 30;
        calculatePWM();
    });

    // Eventy dla suwaków
    sliderZadana.addEventListener('input', calculatePWM);
    sliderAktualna.addEventListener('input', calculatePWM);

    // Inicjalizacja
    calculatePWM();
});
</script>



<style>
:root {
    --rk-proj-dark: #0f172a;
    --rk-proj-blue: #0284c7;
    --rk-proj-blue-light: #e0f2fe;
    --rk-proj-accent: #38bdf8;
    --rk-proj-gray: #475569;
    --rk-proj-bg: #ffffff;
    --rk-proj-border: #e2e8f0;
    --rk-proj-hover: #f8fafc;
}

.rk-project-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-proj-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.1);
    border: 1px solid var(--rk-proj-border);
    overflow: hidden;
}

.rk-project-header {
    padding: 45px 50px 35px;
    background: linear-gradient(135deg, var(--rk-proj-dark) 0%, #1e293b 100%);
    color: #ffffff;
    position: relative;
}

.rk-project-header h2 {
    font-size: 28px;
    font-weight: 900;
    color: #ffffff;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-project-header p {
    font-size: 16px;
    line-height: 1.6;
    color: #cbd5e1;
    margin: 0;
    max-width: 800px;
}

.rk-project-body {
    padding: 40px 50px;
    background: #f8fafc;
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.rk-node-item {
    background: var(--rk-proj-bg);
    border: 2px solid var(--rk-proj-border);
    border-radius: 16px;
    transition: all 0.3s ease;
    overflow: hidden;
}

.rk-node-item.is-active {
    border-color: var(--rk-proj-blue);
    box-shadow: 0 10px 25px -5px rgba(2, 132, 199, 0.15);
}

.rk-node-trigger {
    width: 100%;
    padding: 24px 30px;
    background: transparent;
    border: none;
    display: flex;
    align-items: center;
    gap: 24px;
    cursor: pointer;
    text-align: left;
    transition: background-color 0.3s ease;
}

.rk-node-trigger:hover {
    background-color: var(--rk-proj-hover);
}

.rk-node-icon {
    flex-shrink: 0;
    width: 48px;
    height: 48px;
    border-radius: 14px;
    background: var(--rk-proj-blue-light);
    color: var(--rk-proj-blue);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-node-item.is-active .rk-node-icon {
    background: var(--rk-proj-blue);
    color: #ffffff;
    transform: scale(1.1) rotate(5deg);
}

.rk-node-title {
    flex: 1;
}

.rk-node-title h3 {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-proj-dark);
    margin: 0;
    transition: color 0.3s ease;
}

.rk-node-item.is-active .rk-node-title h3 {
    color: var(--rk-proj-blue);
}

.rk-node-indicator {
    flex-shrink: 0;
    width: 24px;
    height: 24px;
    border: 2px solid var(--rk-proj-border);
    border-radius: 50%;
    position: relative;
    transition: all 0.3s ease;
}

.rk-node-indicator::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%) scale(0);
    width: 12px;
    height: 12px;
    background: var(--rk-proj-blue);
    border-radius: 50%;
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-node-item.is-active .rk-node-indicator {
    border-color: var(--rk-proj-blue);
}

.rk-node-item.is-active .rk-node-indicator::after {
    transform: translate(-50%, -50%) scale(1);
}

.rk-node-content {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-node-content-inner {
    padding: 0 30px 30px 102px; /* Dostosowane do ikony */
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-proj-gray);
    border-top: 1px solid transparent;
}

.rk-node-item.is-active .rk-node-content-inner {
    border-top-color: var(--rk-proj-blue-light);
    padding-top: 20px;
    margin-top: 5px;
}

.rk-node-content-inner strong {
    color: var(--rk-proj-dark);
    font-weight: 700;
}

.rk-node-content-inner a {
    color: var(--rk-proj-blue);
    text-decoration: none;
    font-weight: 600;
    border-bottom: 1px dashed var(--rk-proj-blue);
    transition: all 0.2s;
}

.rk-node-content-inner a:hover {
    color: var(--rk-proj-dark);
    border-bottom-color: var(--rk-proj-dark);
}

/* Mocne CTA */
.rk-proj-cta {
    background: var(--rk-proj-bg);
    padding: 45px 50px;
    text-align: center;
    border-top: 1px solid var(--rk-proj-border);
}

.rk-proj-cta h3 {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-proj-dark);
    margin: 0 0 15px 0;
}

.rk-proj-cta p {
    font-size: 16px;
    color: var(--rk-proj-gray);
    margin: 0 auto 30px auto;
    max-width: 700px;
    line-height: 1.6;
}

.rk-btn-premium {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-proj-blue);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 20px 40px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(2, 132, 199, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    border: 2px solid transparent;
}

.rk-btn-premium:hover {
    transform: translateY(-4px);
    background: #0369a1;
    box-shadow: 0 15px 35px -5px rgba(2, 132, 199, 0.5);
    border-color: var(--rk-proj-accent);
}

.rk-btn-premium svg {
    transition: transform 0.3s;
}

.rk-btn-premium:hover svg {
    transform: translateX(5px);
}

/* Responsywność Mobile */
@media (max-width: 768px) {
    .rk-project-container { margin: 20px auto; border-radius: 16px; }
    .rk-project-header, .rk-project-body, .rk-proj-cta { padding: 30px 20px; }
    .rk-project-header h2 { font-size: 24px; }
    
    .rk-node-trigger { padding: 20px; gap: 16px; }
    .rk-node-icon { width: 40px; height: 40px; border-radius: 10px; }
    .rk-node-icon svg { width: 20px; height: 20px; }
    .rk-node-title h3 { font-size: 16px; }
    
    .rk-node-content-inner { padding: 0 20px 20px 20px; } /* Usunięcie lewego wcięcia na mobile */
    .rk-btn-premium { width: 100%; padding: 18px 20px; font-size: 15px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article-projekt",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/"
    },
    "headline": "Jak automatyka strefowa wpływa na profesjonalny projekt ogrzewania podłogowego?",
    "description": "Zobacz, jak inteligentne sterowanie wymusza zmiany w architekturze kotłowni. Wpływ automatyki na bufor ciepła, pompę obiegową ΔP-c oraz rozstaw rur w projekcie.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-07",
    "dateModified": "2026-07-07"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#dataset-projekt",
    "name": "Wymagania hydrauliczne dla automatyki strefowej wg PN-EN 1264",
    "description": "Korelacja między cyfrowym zamykaniem pętli grzewczych a wydajnością masową pomp ciepła oraz bilansem ciśnień w rozdzielaczach.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projekt instalacji ogrzewania podłogowego online",
      "sprzęgło hydrauliczne w pompie ciepła",
      "bufor ciepła a podłogówka",
      "pompa obiegowa ze zmiennym ciśnieniem",
      "obliczenia OZC dla stref"
    ],
    "measurementTechnique": "Analiza współzależności parametrów hydraulicznych (przepływ masowy, opory miejscowe) w zmiennych warunkach pracy wywołanych dławieniem strefowym.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wymóg stosowania sprzęgła/bufora przy zamykaniu 70% pętli dla zachowania przepływu parownika.",
        "Konieczność zastosowania pomp obiegowych z autoadaptacją ciśnienia stałego ΔP-c."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webapp-projekt",
    "name": "Symulator Wymagań Hydraulicznych",
    "description": "Interaktywny walidator zależności między sterowaniem strefowym a architekturą kotłowni i parametrami rozdzielaczy podłogowych.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-project-container" id="rk-proj-sys">
    <div class="rk-project-header">
        <h2>Jak automatyka strefowa wpływa na profesjonalny projekt ogrzewania podłogowego?</h2>
        <p>Dobór systemu sterowania musi być integralną częścią obliczeń hydraulicznych na etapie projektowania instalacji zgodnie z normą <strong>PN-EN 1264</strong>. Wybierz węzeł, aby zobaczyć inżynierskie konsekwencje.</p>
    </div>

    <div class="rk-project-body" id="rkProjectNodes">
        
        <div class="rk-node-item">
            <button class="rk-node-trigger" aria-expanded="false">
                <div class="rk-node-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"></path><polyline points="22,6 12,13 2,6"></polyline></svg>
                </div>
                <div class="rk-node-title">
                    <h3>Projektowanie stref i pętli (OZC)</h3>
                </div>
                <div class="rk-node-indicator"></div>
            </button>
            <div class="rk-node-content">
                <div class="rk-node-content-inner">
                    Dokładne <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/">obliczenie strat ciepła</a> dla każdego pomieszczenia (OZC) pozwala przyporządkować konkretne pętle do osobnych stref sterowania. Pomieszczenia o skrajnie różnych zyskach (np. salon z dużymi przeszkleniami południowymi vs sypialnia północna) muszą bezwzględnie posiadać niezależne termostaty.
                </div>
            </div>
        </div>

        <div class="rk-node-item">
            <button class="rk-node-trigger" aria-expanded="false">
                <div class="rk-node-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="4"></circle><line x1="12" y1="2" x2="12" y2="8"></line><line x1="12" y1="16" x2="12" y2="22"></line><line x1="2" y1="12" x2="8" y2="12"></line><line x1="16" y1="12" x2="22" y2="12"></line></svg>
                </div>
                <div class="rk-node-title">
                    <h3>Sprzęgło hydrauliczne i bufor w układzie</h3>
                </div>
                <div class="rk-node-indicator"></div>
            </button>
            <div class="rk-node-content">
                <div class="rk-node-content-inner">
                    Gdy sterowniki pokojowe zamkną np. 70% pętli na rozdzielaczach, drastycznie spada przepływ masowy w instalacji. Pompa ciepła, która do prawidłowej pracy wymaga minimalnego, stabilnego przepływu (np. 1,2 m³/h), wejdzie w stan awarii (błąd <em>flow switch error</em>). Projekt musi uwzględniać <a href="https://projekt-ogrzewania.pl/sprzeglo-hydrauliczne-w-instalacji-ogrzewania-podlogowego/">sprzęgło hydrauliczne</a> lub <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">bufor spięty jako bypass</a>, aby odsprzęgnąć obieg źródła od zablokowanego obiegu instalacji.
                </div>
            </div>
        </div>

        <div class="rk-node-item">
            <button class="rk-node-trigger" aria-expanded="false">
                <div class="rk-node-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg>
                </div>
                <div class="rk-node-title">
                    <h3>Dobór pompy obiegowej z trybem ΔP-c</h3>
                </div>
                <div class="rk-node-indicator"></div>
            </button>
            <div class="rk-node-content">
                <div class="rk-node-content-inner">
                    <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">Pompa obiegowa podłogówki</a> musi pracować w trybie stałego ciśnienia (proporcjonalnego redukowania obrotów) <strong>ΔP-c</strong>. Gdy automatyka zamyka kolejne siłowniki, opory hydrauliczne instalacji rosną. Inteligentna pompa wykrywa zmianę ciśnienia, redukuje swoje obroty i pobór mocy (z np. 45W do 4W), skutecznie zapobiegając generowaniu szumów na rotometrach rozdzielacza.
                </div>
            </div>
        </div>

        <div class="rk-node-item">
            <button class="rk-node-trigger" aria-expanded="false">
                <div class="rk-node-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 9h16"></path><path d="M4 15h16"></path><path d="M10 3v18"></path><path d="M14 3v18"></path></svg>
                </div>
                <div class="rk-node-title">
                    <h3>Rozstaw rur a autorytet zaworów</h3>
                </div>
                <div class="rk-node-indicator"></div>
            </button>
            <div class="rk-node-content">
                <div class="rk-node-content-inner">
                    Przy gęstym <a href="https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/">rozstawie rur</a> (np. co 10 cm przy pompie ciepła) moc jednostkowa podłogi jest wysoka. Brak automatyki drastycznie pogłębia tu błędy regulacyjne, dlatego średnice rur zasilających rozdzielacz oraz autorytet zaworów z siłownikami muszą być tak przeliczone w projekcie, aby po odcięciu części stref nie dochodziło do rozrównoważenia pozostałych pętli.
                </div>
            </div>
        </div>

    </div>

    <div class="rk-proj-cta">
        <h3>Nie zgaduj parametrów swojej instalacji</h3>
        <p>Gdy stawką jest bezawaryjna praca pompy ciepła, matematyka wygrywa z instalatorską intuicją. Wyeliminuj błędy, zaufaj inżynierom i zdobądź pełną dokumentację swojego układu.</p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-premium">
            ZAMÓW KOMPLEKSOWY PROJEKT INSTALACJI OGRZEWANIA PODŁOGOWEGO ONLINE
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const nodeItems = document.querySelectorAll('.rk-node-item');

    nodeItems.forEach(function(item) {
        const triggerBtn = item.querySelector('.rk-node-trigger');
        const contentDiv = item.querySelector('.rk-node-content');

        triggerBtn.addEventListener('click', function() {
            // Bezpieczna logika przełączania - eliminacja operatorów &&
            
            if (item.classList.contains('is-active')) {
                // Zwiń, jeśli jest już otwarty
                item.classList.remove('is-active');
                triggerBtn.setAttribute('aria-expanded', 'false');
                contentDiv.style.maxHeight = null;
            } else {
                // Najpierw zwiń wszystkie inne aktywne węzły
                nodeItems.forEach(function(otherItem) {
                    if (otherItem !== item) {
                        if (otherItem.classList.contains('is-active')) {
                            otherItem.classList.remove('is-active');
                            otherItem.querySelector('.rk-node-trigger').setAttribute('aria-expanded', 'false');
                            otherItem.querySelector('.rk-node-content').style.maxHeight = null;
                        }
                    }
                });
                
                // Otwórz kliknięty węzeł
                item.classList.add('is-active');
                triggerBtn.setAttribute('aria-expanded', 'true');
                contentDiv.style.maxHeight = contentDiv.scrollHeight + "px";
            }
        });
    });
});
</script>



<style>
:root {
    --rk-matrix-dark: #0f172a;
    --rk-matrix-dark-card: #1e293b;
    --rk-matrix-blue: #0284c7;
    --rk-matrix-blue-light: #e0f2fe;
    --rk-matrix-green: #10b981;
    --rk-matrix-red: #ef4444;
    --rk-matrix-gray: #475569;
    --rk-matrix-gray-light: #f8fafc;
    --rk-matrix-bg: #ffffff;
    --rk-matrix-border: #e2e8f0;
}

.rk-matrix-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-matrix-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.1);
    border: 1px solid var(--rk-matrix-blue);
    overflow: hidden;
}

.rk-matrix-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, var(--rk-matrix-dark) 0%, #1e293b 100%);
    color: #ffffff;
}

.rk-matrix-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-matrix-header p {
    font-size: 16px;
    color: #cbd5e1;
    margin: 0;
    line-height: 1.7;
}

.rk-matrix-body {
    padding: 40px 50px;
    background: var(--rk-matrix-gray-light);
}

/* Interaktywny Dashboard */
.rk-matrix-dashboard {
    display: flex;
    flex-direction: column;
    gap: 30px;
}

/* Panel wyboru (Poziomy) */
.rk-matrix-levels {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 15px;
}

.rk-matrix-btn {
    background: var(--rk-matrix-bg);
    border: 2px solid var(--rk-matrix-border);
    padding: 20px 15px;
    border-radius: 16px;
    cursor: pointer;
    text-align: center;
    transition: all 0.3s ease;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
}

.rk-matrix-btn:hover {
    border-color: var(--rk-matrix-blue-light);
    transform: translateY(-2px);
}

.rk-matrix-btn.is-active {
    background: var(--rk-matrix-blue);
    border-color: var(--rk-matrix-blue);
    color: #ffffff;
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.3);
}

.rk-matrix-btn-title {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-matrix-dark);
    transition: color 0.3s;
}

.rk-matrix-btn.is-active .rk-matrix-btn-title {
    color: #ffffff;
}

.rk-matrix-btn-sub {
    font-size: 11px;
    font-weight: 600;
    color: var(--rk-matrix-gray);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    transition: color 0.3s;
}

.rk-matrix-btn.is-active .rk-matrix-btn-sub {
    color: var(--rk-matrix-blue-light);
}

/* Wyświetlacz danych (Output) */
.rk-matrix-output {
    background: var(--rk-matrix-bg);
    border-radius: 20px;
    border: 1px solid var(--rk-matrix-border);
    padding: 35px;
    box-shadow: 0 10px 30px -10px rgba(0,0,0,0.05);
    display: flex;
    flex-direction: column;
    gap: 30px;
}

.rk-matrix-output-header {
    border-bottom: 1px dashed var(--rk-matrix-border);
    padding-bottom: 25px;
}

.rk-matrix-output-header h3 {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-matrix-dark);
    margin: 0 0 10px 0;
}

.rk-matrix-output-header p {
    font-size: 15px;
    color: var(--rk-matrix-gray);
    line-height: 1.6;
    margin: 0;
}

.rk-matrix-output-header a {
    color: var(--rk-matrix-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dashed var(--rk-matrix-blue);
}

/* Parametry grid */
.rk-matrix-stats {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

.rk-matrix-stat-box {
    background: var(--rk-matrix-gray-light);
    padding: 20px;
    border-radius: 12px;
    border: 1px solid var(--rk-matrix-border);
}

.rk-stat-title {
    font-size: 12px;
    color: var(--rk-matrix-gray);
    text-transform: uppercase;
    font-weight: 800;
    letter-spacing: 1px;
    margin-bottom: 10px;
}

.rk-stat-desc {
    font-size: 16px;
    font-weight: 700;
    color: var(--rk-matrix-dark);
    line-height: 1.4;
}

.rk-stat-desc.rk-color-red { color: var(--rk-matrix-red); }
.rk-stat-desc.rk-color-green { color: var(--rk-matrix-green); }
.rk-stat-desc.rk-color-blue { color: var(--rk-matrix-blue); }

/* SVG Wizualizacja */
.rk-matrix-visual {
    background: var(--rk-matrix-dark-card);
    border-radius: 16px;
    padding: 25px;
    display: flex;
    justify-content: center;
    align-items: center;
    height: 120px;
}

.rk-svg-comp { transition: all 0.4s ease; fill: #334155; }
.rk-svg-line { transition: all 0.4s ease; stroke: #334155; stroke-width: 3; fill: none; }
.rk-svg-active { fill: var(--rk-matrix-blue); }
.rk-svg-active-line { stroke: var(--rk-matrix-blue); stroke-dasharray: 6 4; animation: rkFlowAnim 1s linear infinite; }
.rk-svg-active-green { fill: var(--rk-matrix-green); }

@keyframes rkFlowAnim {
    to { stroke-dashoffset: -10; }
}

@media (max-width: 768px) {
    .rk-matrix-container { margin: 20px auto; border-radius: 16px; }
    .rk-matrix-header, .rk-matrix-body { padding: 25px 20px; }
    .rk-matrix-header h2 { font-size: 24px; }
    
    .rk-matrix-levels { grid-template-columns: 1fr; gap: 10px; }
    .rk-matrix-btn { flex-direction: row; padding: 15px 20px; justify-content: space-between; }
    .rk-matrix-btn-title { font-size: 15px; }
    
    .rk-matrix-output { padding: 25px 20px; }
    .rk-matrix-stats { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article-porownanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/"
    },
    "headline": "Zestawienie systemów: Brak sterowników vs Pogodówka vs Termostaty",
    "description": "Kompleksowa tabela porównawcza technologii sterowania ogrzewaniem podłogowym. Sprawdź, który wariant zapewnia najwyższy komfort i najniższe koszty eksploatacji.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-07",
    "dateModified": "2026-07-07"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#dataset-porownanie",
    "name": "Macierz porównawcza technologii sterowania podłogówką",
    "description": "Zestawienie efektywności, kosztów i komfortu dla 4 wariantów instalacyjnych: Brak, Pogodowe, Pokojowe, Hybrydowe.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "tabela porównawcza ogrzewanie podłogowe",
      "sterowanie pogodowe a termostaty pokojowe",
      "jakie sterowanie do pompy ciepła wybrać",
      "wady i zalety sterowania podłogówką",
      "zawór mieszający w ogrzewaniu podłogowym"
    ],
    "measurementTechnique": "Macierz analityczna oceniająca potencjał oszczędności energii i komfortu termicznego w relacji do skomplikowania układu hydraulicznego.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wariant 1: Brak automatyki - najwyższe ryzyko przegrzewania i najniższy komfort.",
        "Wariant 4: Hybryda - maksymalna optymalizacja COP pompy ciepła połączona ze strefową blokadą zysków pasywnych."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webapp-porownanie",
    "name": "Kalkulator Poziomów Automatyki (System Upgrade Simulator)",
    "description": "Interaktywny interfejs typu dashboard umożliwiający przełączanie i weryfikację ewolucji systemów sterowania HVAC.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-matrix-container" id="rk-matrix-app">
    <div class="rk-matrix-header">
        <h2>Porównanie systemów: Od braku automatyki do pełnej hybrydy</h2>
        <p>Decyzja o wyborze sterowania determinuje koszty eksploatacji na lata. Zamiast obszernej tabeli, przygotowałem interaktywną macierz. Wybierz poziom zaawansowania instalacji, aby sprawdzić, co zyskujesz, a co tracisz.</p>
    </div>

    <div class="rk-matrix-body">
        <div class="rk-matrix-dashboard">
            
            <div class="rk-matrix-levels">
                <button class="rk-matrix-btn is-active" data-level="0">
                    <span class="rk-matrix-btn-sub">Wariant Podstawowy</span>
                    <span class="rk-matrix-btn-title">Brak Sterowników</span>
                </button>
                <button class="rk-matrix-btn" data-level="1">
                    <span class="rk-matrix-btn-sub">Tylko Źródło</span>
                    <span class="rk-matrix-btn-title">Sterowanie Pogodowe</span>
                </button>
                <button class="rk-matrix-btn" data-level="2">
                    <span class="rk-matrix-btn-sub">Tylko Strefy</span>
                    <span class="rk-matrix-btn-title">Termostaty Pokojowe</span>
                </button>
                <button class="rk-matrix-btn" data-level="3">
                    <span class="rk-matrix-btn-sub">Standard Inżynierski</span>
                    <span class="rk-matrix-btn-title">Pełna Hybryda</span>
                </button>
            </div>

            <div class="rk-matrix-output">
                
                <div class="rk-matrix-output-header">
                    <h3 id="mxTitle">Wariant 0: Instalacja "Zrób to najtaniej"</h3>
                    <p id="mxDesc">Układ pozbawiony jakiejkolwiek logiki. Pompa pracuje na sztywnych parametrach zasilania i ignoruje <a href="https://projekt-ogrzewania.pl/wady-wodnego-ogrzewania-podlogowego-na-co-zwrocic-uwage-przed-instalacja/">wady wodnego ogrzewania podłogowego</a>, takie jak wysoka inercja i ryzyko permanentnego przegrzewania.</p>
                </div>

                <div class="rk-matrix-visual">
                    <svg viewBox="0 0 400 80" style="width:100%; max-width: 350px;">
                        <rect x="20" y="20" width="50" height="50" rx="4" class="rk-svg-comp rk-svg-active-green" id="svgSource"/>
                        <text x="45" y="50" fill="#ffffff" font-size="10" font-family="sans-serif" text-anchor="middle" font-weight="bold">ŹRÓDŁO</text>
                        
                        <path d="M 70 45 L 160 45" class="rk-svg-line" id="svgLine1"/>

                        <circle cx="115" cy="15" r="8" class="rk-svg-comp" id="svgSensorOut"/>
                        <path d="M 115 23 L 115 45" class="rk-svg-line" id="svgLineOut"/>

                        <rect x="160" y="25" width="80" height="40" rx="4" class="rk-svg-comp rk-svg-active-green" id="svgDistributor"/>
                        
                        <path d="M 240 35 L 310 35" class="rk-svg-line" id="svgLine2"/>
                        <path d="M 240 55 L 310 55" class="rk-svg-line" id="svgLine3"/>

                        <circle cx="330" cy="35" r="15" class="rk-svg-comp" id="svgThermostat1"/>
                        <circle cx="330" cy="55" r="15" class="rk-svg-comp" id="svgThermostat2"/>
                    </svg>
                </div>

                <div class="rk-matrix-stats">
                    <div class="rk-matrix-stat-box">
                        <div class="rk-stat-title">Główna zaleta</div>
                        <div class="rk-stat-desc rk-color-blue" id="mxPro">Najniższy koszt instalacji na etapie budowy domu.</div>
                    </div>
                    
                    <div class="rk-matrix-stat-box">
                        <div class="rk-stat-title">Krytyczna wada</div>
                        <div class="rk-stat-desc rk-color-red" id="mxCon">Gigantyczne koszty eksploatacji i skrajny dyskomfort.</div>
                    </div>

                    <div class="rk-matrix-stat-box">
                        <div class="rk-stat-title">Potencjał Oszczędności</div>
                        <div class="rk-stat-desc" id="mxSave">0% (Baza odniesienia)</div>
                    </div>

                    <div class="rk-matrix-stat-box">
                        <div class="rk-stat-title">Wymagania hydrauliczne</div>
                        <div class="rk-stat-desc" id="mxHydra">Podstawowy rozdzielacz (brak siłowników i sprzęgła).</div>
                    </div>
                </div>

            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btns = document.querySelectorAll('.rk-matrix-btn');
    
    // Pola tekstowe Outputu
    const mxTitle = document.getElementById('mxTitle');
    const mxDesc = document.getElementById('mxDesc');
    const mxPro = document.getElementById('mxPro');
    const mxCon = document.getElementById('mxCon');
    const mxSave = document.getElementById('mxSave');
    const mxHydra = document.getElementById('mxHydra');

    // Elementy SVG
    const svgSource = document.getElementById('svgSource');
    const svgSensorOut = document.getElementById('svgSensorOut');
    const svgDistributor = document.getElementById('svgDistributor');
    const svgThermostat1 = document.getElementById('svgThermostat1');
    const svgThermostat2 = document.getElementById('svgThermostat2');
    
    const svgLine1 = document.getElementById('svgLine1');
    const svgLineOut = document.getElementById('svgLineOut');
    const svgLine2 = document.getElementById('svgLine2');
    const svgLine3 = document.getElementById('svgLine3');

    // Słownik danych dla 4 wariantów (bez użycia zewnętrznych plików JSON i znaków $$)
    const matrixData = {
        "0": {
            title: "Wariant 0: Instalacja 'Zrób to najtaniej'",
            desc: "Układ pozbawiony jakiejkolwiek logiki. Pompa pracuje na sztywnych parametrach zasilania i ignoruje <a href='https://projekt-ogrzewania.pl/wady-wodnego-ogrzewania-podlogowego-na-co-zwrocic-uwage-przed-instalacja/'>wady wodnego ogrzewania podłogowego</a>, takie jak wysoka inercja i ryzyko permanentnego przegrzewania.",
            pro: "Najniższy koszt instalacji hydraulicznej.",
            proClass: "rk-color-blue",
            con: "Gigantyczne koszty eksploatacji i skrajny dyskomfort temperaturowy.",
            conClass: "rk-color-red",
            save: "0% (Baza odniesienia)",
            hydra: "Podstawowy rozdzielacz (bez siłowników)."
        },
        "1": {
            title: "Wariant 1: Sterowanie Pogodowe (Tylko Źródło)",
            desc: "System oparty wyłącznie o <a href='https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/'>sterowanie pogodowe</a>. Centrala dostosowuje temperaturę zasilania (Tz) do temperatury zewnętrznej. Poprawia to sprawność źródła, ale ignoruje pasywne zyski ciepła wewnątrz pokojów.",
            pro: "Wysoki współczynnik COP pompy ciepła dzięki niskiej temperaturze zasilania.",
            proClass: "rk-color-green",
            con: "Brak reakcji na nasłonecznienie salonu. Zjawisko lokalnego przegrzewania wciąż występuje.",
            conClass: "rk-color-red",
            save: "Ok. 8 - 12% oszczędności",
            hydra: "Rozdzielacz podstawowy + zewnętrzny czujnik NTC na elewacji."
        },
        "2": {
            title: "Wariant 2: Termostaty Pokojowe (Tylko Strefy)",
            desc: "W pokojach zamontowane są <a href='https://projekt-ogrzewania.pl/termostat-w-ogrzewaniu-podlogowym/'>termostaty</a> zamykające przepływ, gdy zostanie osiągnięta temperatura zadana. Rozwiązuje to problem przegrzewania od słońca, ale źródło ciepła pracuje 'w ciemno' na wysokich parametrach.",
            pro: "Idealny komfort w każdym pomieszczeniu i precyzyjne odcinanie pasywnych zysków.",
            proClass: "rk-color-green",
            con: "Taktowanie pompy ciepła i niska sprawność z powodu braku informacji pogodowej.",
            conClass: "rk-color-red",
            save: "Ok. 10 - 15% oszczędności",
            hydra: "Rozdzielacz z siłownikami + listwa sterująca + wymagane sprzęgło hydrauliczne."
        },
        "3": {
            title: "Wariant 3: Pełna Hybryda (Standard Inżynierski)",
            desc: "Złoty standard. Źródło ciepła jest sterowane krzywą pogodową i optymalizowane przez <a href='https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/'>zawór mieszający</a>, a wnętrze budynku chronione jest przez inteligentne termostaty strefowe działające w pętli sprzężenia zwrotnego.",
            pro: "Maksymalny COP pompy ciepła i idealny komfort bez wahań temperatury.",
            proClass: "rk-color-green",
            con: "Najwyższy koszt inwestycyjny oraz konieczność profesjonalnego zaprojektowania hydrauliki.",
            conClass: "rk-color-gray",
            save: "Nawet do 25% oszczędności rocznie",
            hydra: "Pełna automatyka: siłowniki, czujniki pogodowe, termostaty dwukanałowe, sprzęgło/bufor."
        }
    };

    function updateDashboard(level) {
        // Zabezpieczenie przed błędem klucza
        let safeLevel = level;
        if (safeLevel !== "0") {
            if (safeLevel !== "1") {
                if (safeLevel !== "2") {
                    if (safeLevel !== "3") {
                        safeLevel = "0"; // domyślnie
                    }
                }
            }
        }
        
        const data = matrixData[safeLevel];

        // Aktualizacja tekstów
        mxTitle.innerHTML = data.title;
        mxDesc.innerHTML = data.desc;
        mxPro.innerHTML = data.pro;
        mxPro.className = "rk-stat-desc " + data.proClass;
        mxCon.innerHTML = data.con;
        mxCon.className = "rk-stat-desc " + data.conClass;
        mxSave.innerHTML = data.save;
        mxHydra.innerHTML = data.hydra;

        // Reset klas SVG
        svgSensorOut.classList.remove('rk-svg-active-green');
        svgLineOut.classList.remove('rk-svg-active-line');
        svgThermostat1.classList.remove('rk-svg-active');
        svgThermostat2.classList.remove('rk-svg-active');
        svgLine2.classList.remove('rk-svg-active-line');
        svgLine3.classList.remove('rk-svg-active-line');
        svgLine1.classList.add('rk-svg-active-line');

        // Bezpieczna logika wizualizacji SVG (bez operatorów &&)
        if (safeLevel === "1") {
            // Tylko Pogodówka
            svgSensorOut.classList.add('rk-svg-active-green');
            svgLineOut.classList.add('rk-svg-active-line');
        } else {
            if (safeLevel === "2") {
                // Tylko Termostaty
                svgThermostat1.classList.add('rk-svg-active');
                svgThermostat2.classList.add('rk-svg-active');
                svgLine2.classList.add('rk-svg-active-line');
                svgLine3.classList.add('rk-svg-active-line');
            } else {
                if (safeLevel === "3") {
                    // Hybryda (Wszystko aktywne)
                    svgSensorOut.classList.add('rk-svg-active-green');
                    svgLineOut.classList.add('rk-svg-active-line');
                    svgThermostat1.classList.add('rk-svg-active');
                    svgThermostat2.classList.add('rk-svg-active');
                    svgLine2.classList.add('rk-svg-active-line');
                    svgLine3.classList.add('rk-svg-active-line');
                }
            }
        }
    }

    btns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            // Obsługa klas aktywnych na przyciskach
            btns.forEach(function(b) {
                b.classList.remove('is-active');
            });
            this.classList.add('is-active');
            
            // Pobranie i aktualizacja poziomu
            const lvl = this.getAttribute('data-level');
            updateDashboard(lvl);
        });
    });

    // Inicjalizacja stanu bazowego
    updateDashboard("0");
});
</script>



<style>
:root {
    --rk-err-dark: #0f172a;
    --rk-err-blue: #0284c7;
    --rk-err-red: #ef4444;
    --rk-err-red-light: #fef2f2;
    --rk-err-red-border: #fca5a5;
    --rk-err-gray: #64748b;
    --rk-err-gray-light: #f8fafc;
    --rk-err-border: #e2e8f0;
    --rk-err-bg: #ffffff;
}

.rk-errors-container {
    max-width: 900px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-err-bg);
    border-radius: 20px;
    box-shadow: 0 20px 40px -15px rgba(239, 68, 68, 0.1);
    border: 1px solid var(--rk-err-border);
    overflow: hidden;
}

.rk-errors-header {
    padding: 40px 40px 30px;
    background: var(--rk-err-gray-light);
    border-bottom: 1px solid var(--rk-err-border);
    position: relative;
}

.rk-errors-header::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 4px;
    background: var(--rk-err-red);
}

.rk-errors-header h2 {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-err-dark);
    margin: 0 0 10px 0;
    line-height: 1.3;
}

.rk-errors-header p {
    font-size: 16px;
    color: var(--rk-err-gray);
    margin: 0;
    line-height: 1.6;
}

.rk-errors-list {
    padding: 30px 40px 40px;
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.rk-error-item {
    background: var(--rk-err-bg);
    border: 2px solid var(--rk-err-border);
    border-radius: 16px;
    transition: all 0.3s ease;
}

.rk-error-item.is-open {
    border-color: var(--rk-err-red);
    box-shadow: 0 10px 20px -5px rgba(239, 68, 68, 0.15);
}

.rk-error-trigger {
    width: 100%;
    padding: 24px;
    background: transparent;
    border: none;
    display: flex;
    align-items: center;
    gap: 20px;
    cursor: pointer;
    text-align: left;
}

.rk-error-icon {
    flex-shrink: 0;
    width: 44px;
    height: 44px;
    border-radius: 12px;
    background: var(--rk-err-gray-light);
    color: var(--rk-err-gray);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.3s ease;
}

.rk-error-item.is-open .rk-error-icon {
    background: var(--rk-err-red-light);
    color: var(--rk-err-red);
    transform: scale(1.05);
}

.rk-error-title {
    flex: 1;
}

.rk-error-title h3 {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-err-dark);
    margin: 0;
    line-height: 1.4;
    transition: color 0.3s ease;
}

.rk-error-item.is-open .rk-error-title h3 {
    color: var(--rk-err-red);
}

.rk-error-chevron {
    flex-shrink: 0;
    color: var(--rk-err-gray);
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-error-item.is-open .rk-error-chevron {
    transform: rotate(180deg);
    color: var(--rk-err-red);
}

.rk-error-content {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-error-content-inner {
    padding: 0 24px 24px 84px; /* Wcięcie odpowiadające ikonie */
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-err-gray);
}

.rk-error-content-inner strong {
    color: var(--rk-err-dark);
    font-weight: 700;
}

.rk-error-content-inner a {
    color: var(--rk-err-blue);
    text-decoration: none;
    font-weight: 600;
    border-bottom: 1px dashed var(--rk-err-blue);
    transition: border-color 0.2s, color 0.2s;
}

.rk-error-content-inner a:hover {
    color: var(--rk-err-dark);
    border-bottom-color: var(--rk-err-dark);
}

/* Responsywność Mobile (Zachowanie układu pionowego) */
@media (max-width: 768px) {
    .rk-errors-container { margin: 20px auto; border-radius: 16px; }
    .rk-errors-header { padding: 30px 20px; }
    .rk-errors-list { padding: 20px; }
    
    .rk-error-trigger { padding: 20px; gap: 15px; align-items: flex-start; }
    .rk-error-icon { width: 36px; height: 36px; border-radius: 10px; }
    .rk-error-icon svg { width: 20px; height: 20px; }
    
    .rk-error-title h3 { font-size: 16px; padding-top: 6px; }
    .rk-error-chevron { padding-top: 6px; }
    
    .rk-error-content-inner { padding: 0 20px 20px 20px; } /* Usunięcie wcięcia na telefonach */
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article-bledy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/"
    },
    "headline": "Najczęściej popełniane błędy przy doborze i montażu sterowników",
    "description": "Zestawienie najgroźniejszych błędów instalacyjnych automatyki grzewczej. Sprawdź, jak błędna kalibracja algorytmów i złe rozmieszczenie czujników niszczy posadzki.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-07",
    "dateModified": "2026-07-07"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#dataset-bledy",
    "name": "Katalog błędów instalacyjnych automatyki grzewczej",
    "description": "Techniczne zestawienie konsekwencji nieprawidłowego montażu komponentów automatyki ogrzewania płaszczyznowego, wpływających na efektywność układu i zużycie energii.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "montaż termostatu pokojowego",
      "uszkodzony czujnik podłogowy",
      "siłowniki normalnie zamknięte NC",
      "bezwładność cieplna podłogówki",
      "taktowanie pompy ciepła"
    ],
    "measurementTechnique": "Analiza usterek i błędów konfiguracyjnych w instalacjach płaszczyznowych oraz ich bezpośredni wpływ na parametr COP i amplitudę temperatur.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Fałszowanie odczytów przez złe umiejscowienie termostatu ściennego.",
        "Brak peszla ochronnego uniemożliwiający serwis czujnika NTC w wylewce.",
        "Konflikt logiczny przekaźników i siłowników na rozdzielaczu.",
        "Zbyt głębokie obniżenia dobowe wymuszające pracę na nieefektywnych parametrach."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webapp-bledy",
    "name": "Moduł Diagnostyki Błędów Wykonawczych",
    "description": "Interaktywny interfejs pozwalający użytkownikowi na identyfikację błędów konfiguracyjnych poprzez mechaniczną interakcję z modułami diagnostycznymi.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-errors-container" id="rk-errors-app">
    <div class="rk-errors-header">
        <h2>Najczęściej popełniane błędy przy doborze i montażu sterowników</h2>
        <p>Poznaj powtarzalne potknięcia instalatorów, które drastycznie podnoszą koszty eksploatacji i prowadzą do uszkodzeń systemu grzewczego. Wybierz błąd, aby poznać jego skutki.</p>
    </div>

    <div class="rk-errors-list" id="rkErrorList">
        
        <div class="rk-error-item">
            <button class="rk-error-trigger" aria-expanded="false">
                <div class="rk-error-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
                </div>
                <div class="rk-error-title">
                    <h3>Montaż termostatu pokojowego w niewłaściwym miejscu</h3>
                </div>
                <div class="rk-error-chevron">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-error-content">
                <div class="rk-error-content-inner">
                    Umieszczenie sterownika na ścianie zewnętrznej (wychłodzonej), w bezpośrednim zasięgu promieni słonecznych lub nad źródłem ciepła (np. nad lodówką lub obok telewizora). <strong>Skutkuje to fałszowaniem odczytów</strong> i wyłączaniem ogrzewania w całym domu, mimo drastycznego niedogrzania pozostałych stref. Zobacz inne <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">najczęstsze błędy przy montażu</a>.
                </div>
            </div>
        </div>

        <div class="rk-error-item">
            <button class="rk-error-trigger" aria-expanded="false">
                <div class="rk-error-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                </div>
                <div class="rk-error-title">
                    <h3>Brak peszli ochronnych dla czujników podłogowych</h3>
                </div>
                <div class="rk-error-chevron">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-error-content">
                <div class="rk-error-content-inner">
                    Zabetonowanie <a href="https://projekt-ogrzewania.pl/czujnik-podlogowy/">czujnika podłogowego</a> NTC bezpośrednio w jastrychu to błąd krytyczny. W przypadku awarii elementu półprzewodnikowego wymiana czujnika jest niemożliwa bez kucia wylewki i całkowitego zniszczenia posadzki. Czujnik musi być zawsze wprowadzony w gładki peszel zakończony specjalną mosiężną zaślepką, ułatwiającą jego bezinwazyjną wymianę.
                </div>
            </div>
        </div>

        <div class="rk-error-item">
            <button class="rk-error-trigger" aria-expanded="false">
                <div class="rk-error-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path></svg>
                </div>
                <div class="rk-error-title">
                    <h3>Łączenie niedopasowanych siłowników (NC/NO) z listwą</h3>
                </div>
                <div class="rk-error-chevron">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-error-content">
                <div class="rk-error-content-inner">
                    Montaż <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">siłowników termoelektrycznych</a> normalnie otwartych (NO) do listwy skonfigurowanej pod siłowniki normalnie zamknięte (NC). <strong>Powoduje to całkowite odwrócenie logiki systemu</strong> – gdy termostat wykryje, że pokój wymaga grzania, listwa odcina przepływ, a podłoga zaczyna intensywnie stygnąć.
                </div>
            </div>
        </div>

        <div class="rk-error-item">
            <button class="rk-error-trigger" aria-expanded="false">
                <div class="rk-error-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg>
                </div>
                <div class="rk-error-title">
                    <h3>Harmonogramy dobowe o zbyt dużej amplitudzie</h3>
                </div>
                <div class="rk-error-chevron">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-error-content">
                <div class="rk-error-content-inner">
                    Programowanie obniżeń temperatury o 3°C do 4°C na czas 8-godzinnej obecności w pracy mija się z celem. Przez <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">bezwładność cieplną</a>, podłoga wychłodzi się dopiero pod koniec nieobecności, a ponowne jej nagrzanie zajmie kolejne 5-8 godzin. Zmusza to pompę ciepła do pracy na skrajnie wysokich parametrach zasilania, co <strong>drastycznie obniża jej sprawność (COP)</strong>. Maksymalne zalecane obniżenie temperatur przy podłogówce wynosi od 1,0°C do 1,5°C.
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const errorItems = document.querySelectorAll('.rk-error-item');

    errorItems.forEach(function(item) {
        const triggerBtn = item.querySelector('.rk-error-trigger');
        const contentDiv = item.querySelector('.rk-error-content');

        triggerBtn.addEventListener('click', function() {
            // Czysta, bezpieczna logika (bez operatorów '&&')
            
            // Jeśli aktualnie kliknięty element jest otwarty - zamknij go
            if (item.classList.contains('is-open')) {
                item.classList.remove('is-open');
                triggerBtn.setAttribute('aria-expanded', 'false');
                contentDiv.style.maxHeight = null;
            } else {
                // Najpierw zwiń wszystkie inne rozwinięte elementy
                errorItems.forEach(function(otherItem) {
                    if (otherItem !== item) {
                        if (otherItem.classList.contains('is-open')) {
                            otherItem.classList.remove('is-open');
                            otherItem.querySelector('.rk-error-trigger').setAttribute('aria-expanded', 'false');
                            otherItem.querySelector('.rk-error-content').style.maxHeight = null;
                        }
                    }
                });
                
                // Następnie rozwiń kliknięty element
                item.classList.add('is-open');
                triggerBtn.setAttribute('aria-expanded', 'true');
                contentDiv.style.maxHeight = contentDiv.scrollHeight + "px";
            }
        });
    });
});
</script>



<style>
:root {
    --rk-case-dark: #0f172a;
    --rk-case-blue: #0284c7;
    --rk-case-blue-light: #f0f9ff;
    --rk-case-gray: #475569;
    --rk-case-gray-light: #f8fafc;
    --rk-case-bg: #ffffff;
    --rk-case-border: #e2e8f0;
    --rk-case-accent: #38bdf8;
}

.rk-case-container {
    max-width: 900px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-case-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.08);
    border: 1px solid var(--rk-case-border);
    overflow: hidden;
}

.rk-case-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, var(--rk-case-dark) 0%, #1e293b 100%);
    color: #ffffff;
    position: relative;
}

.rk-case-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-case-header p {
    font-size: 16px;
    color: #cbd5e1;
    margin: 0;
    line-height: 1.6;
}

.rk-case-header-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(56, 189, 248, 0.2);
    color: var(--rk-case-accent);
    padding: 6px 14px;
    border-radius: 20px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid rgba(56, 189, 248, 0.3);
}

.rk-case-body {
    padding: 40px 50px;
    background: var(--rk-case-gray-light);
}

/* Oś czasu konsultacji (Timeline) */
.rk-case-timeline {
    display: flex;
    flex-direction: column;
    gap: 30px;
    position: relative;
}

.rk-case-timeline::before {
    content: '';
    position: absolute;
    top: 20px;
    bottom: 20px;
    left: 28px;
    width: 2px;
    background: var(--rk-case-border);
    z-index: 1;
}

/* Pojedynczy blok dialogu */
.rk-case-block {
    display: flex;
    gap: 20px;
    position: relative;
    z-index: 2;
}

/* Awatary */
.rk-case-avatar {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    font-weight: 900;
    font-size: 20px;
    border: 4px solid var(--rk-case-gray-light);
    box-shadow: 0 4px 10px rgba(0,0,0,0.05);
}

.rk-avatar-client {
    background: #ffffff;
    color: var(--rk-case-gray);
    border-color: #ffffff;
}

.rk-avatar-expert {
    background: var(--rk-case-blue);
    color: #ffffff;
}

/* Dymki (Bubbles) */
.rk-case-bubble {
    flex: 1;
    background: var(--rk-case-bg);
    padding: 25px 30px;
    border-radius: 0 20px 20px 20px;
    border: 1px solid var(--rk-case-border);
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-case-bubble-expert {
    background: var(--rk-case-blue-light);
    border-color: rgba(2, 132, 199, 0.2);
    border-radius: 20px 0 20px 20px;
}

.rk-case-meta {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-case-gray);
    margin-bottom: 10px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-case-meta span {
    color: var(--rk-case-blue);
}

.rk-case-text {
    font-size: 15px;
    color: var(--rk-case-dark);
    line-height: 1.7;
    margin: 0;
}

.rk-case-text a {
    color: var(--rk-case-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Interaktywny przycisk odsłaniania */
.rk-case-reveal-wrapper {
    margin-top: 15px;
}

.rk-case-reveal-btn {
    background: var(--rk-case-dark);
    color: #ffffff;
    border: none;
    padding: 12px 24px;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 8px;
    transition: all 0.3s;
    box-shadow: 0 4px 10px rgba(15, 23, 42, 0.2);
}

.rk-case-reveal-btn:hover {
    background: var(--rk-case-blue);
    transform: translateY(-2px);
}

.rk-case-reveal-btn svg {
    transition: transform 0.3s;
}

.rk-case-reveal-btn.is-opened svg {
    transform: rotate(180deg);
}

/* Ukryta odpowiedź eksperta */
.rk-case-hidden-response {
    max-height: 0;
    opacity: 0;
    overflow: hidden;
    transition: max-height 0.5s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.5s ease;
}

.rk-case-hidden-response.is-visible {
    opacity: 1;
}

@media (max-width: 768px) {
    .rk-case-container { margin: 20px auto; border-radius: 16px; }
    .rk-case-header, .rk-case-body { padding: 30px 20px; }
    .rk-case-header h2 { font-size: 24px; }
    
    .rk-case-timeline::before { left: 24px; }
    .rk-case-block { gap: 15px; }
    
    .rk-case-avatar { width: 48px; height: 48px; font-size: 16px; border-width: 3px; }
    .rk-case-bubble { padding: 20px; border-radius: 16px; }
    .rk-case-bubble-expert { border-radius: 16px; } /* Na mobile unifikujemy rogi dymków */
    
    .rk-case-text { font-size: 14px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article-casestudy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/"
    },
    "headline": "Studium przypadku: Agnieszka z Warszawy pyta, czy warto oszczędzać na sterownikach",
    "description": "Zapis autentycznej konsultacji inżynieryjnej. Rozwiewamy mity instalatorów dotyczące oszczędzania na automatyce strefowej przy pompie ciepła w nowo budowanym domu.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-12-29",
    "dateModified": "2026-07-07"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#dataset-casestudy",
    "name": "Analiza merytoryczna doradztwa technicznego w ogrzewaniu płaszczyznowym",
    "description": "Zestawienie twardych argumentów inżynieryjnych przeciwko pozornym oszczędnościom inwestycyjnym na etapie doboru automatyki źródła ciepła.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "czy pompa ciepła poradzi sobie bez sterowników",
      "krzywa grzewcza a zyski słoneczne",
      "niezależne termostaty warszawa",
      "błędy instalatorów pomp ciepła",
      "projekt instalacji ogrzewania podłogowego"
    ],
    "measurementTechnique": "Jakościowa ocena wpływu pasywnych zysków bytowych na efektywność systemu sterowanego wyłącznie krzywą pogodową względem logiki strefowej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Oparcie sterowania wyłącznie na czujniku zewnętrznym skutkuje przegrzewaniem wnętrz pod wpływem słońca i sprzętów domowych.",
        "Zjawisko przegrzewania stanowi bezpośrednie ryzyko dla stabilności wymiarowej posadzek winylowych i warstwowych."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webapp-casestudy",
    "name": "Dziennik Konsultacji Inżynieryjnej",
    "description": "Interaktywny interfejs typu 'Timeline' przeprowadzający użytkownika przez proces zbijania mitów wykonawczych i diagnozy problemów projektowych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-case-container" id="rk-case-app">
    <div class="rk-case-header">
        <div class="rk-case-header-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
            Studium Przypadku
        </div>
        <h2>Agnieszka z Warszawy pyta, czy warto oszczędzać na sterownikach</h2>
        <p>Codziennie otrzymuję podobne wiadomości. Inwestorzy są celowo wprowadzani w błąd przez instalatorów, którzy szukają łatwiejszego montażu kosztem Twojego portfela. Zobacz zapis autentycznej konsultacji.</p>
    </div>

    <div class="rk-case-body">
        <div class="rk-case-timeline">
            
            <div class="rk-case-block">
                <div class="rk-case-avatar rk-avatar-client">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"></path><circle cx="12" cy="7" r="4"></circle></svg>
                </div>
                <div class="rk-case-bubble">
                    <div class="rk-case-meta">Inwestorka <span>Agnieszka</span> (Dom 120m², Warszawa)</div>
                    <p class="rk-case-text">
                        Panie Robercie, budujemy dom. Nasz instalator stwierdził, że skoro mamy pompę ciepła, to ona "sama sobie poradzi" krzywą grzewczą. Twierdzi, że montowanie osobnych termostatów do salonu i sypialni to zbędny wydatek rzędu 3000 zł i tylko psuje sprawność pompy. Czy faktycznie powinnam z tego zrezygnować na rzecz oszczędności?
                    </p>
                    
                    <div class="rk-case-reveal-wrapper">
                        <button class="rk-case-reveal-btn" id="btnReveal1" aria-expanded="false">
                            Pokaż odpowiedź eksperta
                            <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                        </button>
                    </div>
                </div>
            </div>

            <div class="rk-case-hidden-response" id="response1">
                <div class="rk-case-block">
                    <div class="rk-case-avatar rk-avatar-expert">RK</div>
                    <div class="rk-case-bubble rk-case-bubble-expert">
                        <div class="rk-case-meta">Specjalista HVAC <span>Robert Kucharski</span></div>
                        <p class="rk-case-text" style="margin-bottom: 15px;">
                            Pani Agnieszko, instalator proponuje rozwiązanie najwygodniejsze dla niego, nie dla Pani. <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">Pompa ciepła</a> oparta wyłącznie na czujniku pogodowym wie tylko to, jaka jest temperatura na zewnątrz. Nie ma pojęcia, co dzieje się w budynku.
                        </p>
                        <p class="rk-case-text" style="margin-bottom: 15px;">
                            Jeśli w słoneczny, zimowy dzień do salonu przez duże okna wpadnie słońce, zaczną działać <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-a-pasywne-zyski-ciepla/">pasywne zyski ciepła</a>. Temperatura w salonie skoczy do 25°C, a pompa nadal będzie tłoczyć ciepłą wodę do podłogi, bo na dworze jest mróz. Efekt? Gigantyczne przegrzanie wnętrza, marnowanie drogiego prądu, a w przypadku <a href="https://projekt-ogrzewania.pl/czy-pod-ogrzewanie-podlogowe-nadaja-sie-panele-czy-tylko-plytki/">paneli winylowych</a> – ryzyko rozeschnięcia się zamków od temperatury posadzki przekraczającej 27°C.
                        </p>
                        <p class="rk-case-text">
                            Te 3000 zł to nie "zbędny wydatek", to jednorazowa inwestycja, która zapobiegnie wyrzucaniu w błoto setek złotych co sezon. Solidny <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">projekt instalacji</a> musi zakładać automatykę strefową, połączoną przez bufor lub sprzęgło, aby odsprzęgnąć hydraulicznie pompę od zamykających się pętli.
                        </p>
                    </div>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btnReveal = document.getElementById('btnReveal1');
    const responsePanel = document.getElementById('response1');

    btnReveal.addEventListener('click', function() {
        // Bezpieczne przełączanie bez użycia operatorów logicznych &&
        
        let isExpanded = btnReveal.getAttribute('aria-expanded');

        if (isExpanded === 'false') {
            // Otwieranie
            btnReveal.setAttribute('aria-expanded', 'true');
            btnReveal.classList.add('is-opened');
            responsePanel.classList.add('is-visible');
            
            // Dynamiczne obliczenie wysokości dla animacji max-height
            let scrollHeight = responsePanel.scrollHeight;
            responsePanel.style.maxHeight = scrollHeight + "px";
            
            // Zmiana tekstu
            btnReveal.innerHTML = `Ukryj odpowiedź <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>`;
            
        } else {
            // Zamykanie
            btnReveal.setAttribute('aria-expanded', 'false');
            btnReveal.classList.remove('is-opened');
            responsePanel.classList.remove('is-visible');
            
            responsePanel.style.maxHeight = "0px";
            
            // Zmiana tekstu
            btnReveal.innerHTML = `Pokaż odpowiedź eksperta <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>`;
        }
    });
});
</script>



<style>
:root {
    --rk-eeat-dark: #0f172a;
    --rk-eeat-card: #1e293b;
    --rk-eeat-blue: #0284c7;
    --rk-eeat-text: #cbd5e1;
    --rk-eeat-bg: #ffffff;
    --rk-eeat-border: #e2e8f0;
    --rk-eeat-gold: #eab308;
}

.rk-eeat-container {
    max-width: 900px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-eeat-bg);
    border-radius: 0;
    border: 2px solid var(--rk-eeat-dark);
}

.rk-eeat-header {
    padding: 30px 40px;
    background: var(--rk-eeat-dark);
    color: #ffffff;
    border-bottom: 4px solid var(--rk-eeat-blue);
}

.rk-eeat-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0;
    line-height: 1.3;
    color: #ffffff;
}

.rk-eeat-body {
    display: flex;
    padding: 0;
}

/* Sidebar z autorem */
.rk-eeat-sidebar {
    width: 280px;
    background: var(--rk-eeat-card);
    padding: 40px 30px;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    border-right: 1px solid var(--rk-eeat-border);
}

.rk-eeat-photo {
    width: 140px;
    height: 140px;
    border-radius: 50%;
    object-fit: cover;
    border: 4px solid var(--rk-eeat-blue);
    margin-bottom: 20px;
}

.rk-eeat-name {
    font-size: 20px;
    font-weight: 900;
    color: #ffffff;
    margin: 0 0 5px 0;
}

.rk-eeat-role {
    font-size: 13px;
    color: var(--rk-eeat-blue);
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
}

.rk-eeat-socials {
    display: flex;
    gap: 15px;
    margin-top: 15px;
}

.rk-eeat-social-link {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    background: #334155;
    color: #ffffff;
    border-radius: 8px;
    text-decoration: none;
}

.rk-eeat-social-link:hover {
    background: var(--rk-eeat-blue);
}

/* Panel główny */
.rk-eeat-content {
    flex: 1;
    background: var(--rk-eeat-bg);
    display: flex;
    flex-direction: column;
}

.rk-eeat-tabs {
    display: flex;
    background: #f8fafc;
    border-bottom: 1px solid var(--rk-eeat-border);
}

.rk-eeat-tab-btn {
    flex: 1;
    padding: 20px;
    background: transparent;
    border: none;
    border-bottom: 3px solid transparent;
    font-size: 14px;
    font-weight: 800;
    color: #64748b;
    cursor: pointer;
    text-transform: uppercase;
}

.rk-eeat-tab-btn.is-active {
    color: var(--rk-eeat-dark);
    border-bottom-color: var(--rk-eeat-blue);
    background: var(--rk-eeat-bg);
}

.rk-eeat-tab-panels {
    padding: 40px;
}

.rk-eeat-panel {
    display: none;
}

.rk-eeat-panel.is-active {
    display: block;
}

/* Cytat / Treść */
.rk-eeat-quote-box {
    position: relative;
}

.rk-eeat-quote-icon {
    position: absolute;
    top: -20px;
    left: -20px;
    width: 60px;
    height: 60px;
    color: #f1f5f9;
    z-index: 1;
}

.rk-eeat-quote-text {
    position: relative;
    z-index: 2;
    font-size: 20px;
    font-weight: 800;
    line-height: 1.5;
    color: var(--rk-eeat-dark);
    margin: 0 0 20px 0;
    font-style: italic;
}

.rk-eeat-text-norm {
    font-size: 15px;
    color: #475569;
    line-height: 1.7;
    margin: 0 0 15px 0;
}

.rk-eeat-text-norm a {
    color: var(--rk-eeat-blue);
    font-weight: 700;
    text-decoration: underline;
}

/* Listy E-E-A-T - Zoptymalizowany Layout i Typografia */
.rk-eeat-list {
    list-style: none;
    padding: 0;
    margin: 0;
}

.rk-eeat-list li {
    display: flex;
    align-items: flex-start;
    gap: 15px;
    margin-bottom: 15px;
}

.rk-eeat-list svg {
    flex-shrink: 0;
    color: var(--rk-eeat-blue);
    margin-top: 2px;
}

.rk-eeat-list-text {
    font-size: 15.5px;
    color: var(--rk-eeat-dark);
    font-weight: 500;
    line-height: 1.6;
}

.rk-eeat-list-text a {
    color: var(--rk-eeat-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dashed var(--rk-eeat-blue);
    transition: border-color 0.2s, color 0.2s;
}

.rk-eeat-list-text a:hover {
    color: var(--rk-eeat-dark);
    border-bottom-color: var(--rk-eeat-dark);
}

@media (max-width: 768px) {
    .rk-eeat-container { margin: 20px auto; border-radius: 0; border-width: 1px; }
    .rk-eeat-header { padding: 20px; }
    .rk-eeat-header h2 { font-size: 22px; }
    .rk-eeat-body { flex-direction: column; }
    .rk-eeat-sidebar { width: 100%; border-right: none; border-bottom: 1px solid var(--rk-eeat-border); padding: 30px 20px; }
    .rk-eeat-tabs { flex-direction: column; }
    .rk-eeat-tab-btn { border-bottom: none; border-left: 4px solid transparent; text-align: left; padding: 15px 20px; border-top: 1px solid var(--rk-eeat-border); }
    .rk-eeat-tab-btn.is-active { border-left-color: var(--rk-eeat-blue); }
    .rk-eeat-tab-panels { padding: 25px 20px; }
    .rk-eeat-quote-text { font-size: 18px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article-eeat",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/"
    },
    "headline": "Zdaniem eksperta: Robert Kucharski o opłacalności sterowników strefowych",
    "description": "Podsumowanie inżynieryjne opłacalności systemów automatyki strefowej. Analiza zysków i weryfikacja kompetencji eksperckich (E-E-A-T).",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "jobTitle": "CEO & Specjalista HVAC",
      "sameAs": [
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-07",
    "dateModified": "2026-07-07"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#dataset-eeat",
    "name": "Kwalifikacje i macierz autorytetu autora (E-E-A-T)",
    "description": "Zbiór danych weryfikujących kompetencje inżynieryjne autora w zakresie systemów grzewczych, OZC i automatyki.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projektowanie instalacji wodnych podłogówka",
      "audyt OZC ogrzewania",
      "robert kucharski specjalista hvac",
      "weryfikacja kompetencji instalatora",
      "projekt ogrzewania z pompą ciepła"
    ],
    "measurementTechnique": "Jakościowa ocena autorytetu domeny na podstawie ponad 1000 zrealizowanych projektów instalacji płaszczyznowych i dziesiątek tysięcy unikalnych czytelników.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Ponad 1000 pomyślnie zrealizowanych i zweryfikowanych projektów instalacji ogrzewania podłogowego.",
        "Kompleksowe wykonywanie obiektywnych audytów cieplnych OZC zgodnych z aktualnymi polskimi normami budowlanymi."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webapp-eeat",
    "name": "Panel Weryfikacji Autorytetu (E-E-A-T)",
    "description": "Interaktywny interfejs profilu eksperta, umożliwiający weryfikację twardych danych kompetencyjnych i autorytetu autora publikacji.",
    "applicationCategory": "ReferenceApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-eeat-container" id="rk-eeat-app">
    <div class="rk-eeat-header">
        <h2>Zdaniem eksperta: Robert Kucharski o opłacalności sterowników strefowych</h2>
    </div>

    <div class="rk-eeat-body">
        
        <div class="rk-eeat-sidebar">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski - Specjalista HVAC" class="rk-eeat-photo">
            <h3 class="rk-eeat-name">Robert Kucharski</h3>
            <div class="rk-eeat-role">Specjalista HVAC / CEO</div>
            
            <div class="rk-eeat-socials">
                <a href="https://www.facebook.com/projektogrzewaniapl/" class="rk-eeat-social-link" target="_blank" rel="noopener noreferrer" aria-label="Facebook Projekt Ogrzewania">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"></path></svg>
                </a>
                <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" class="rk-eeat-social-link" target="_blank" rel="noopener noreferrer" aria-label="LinkedIn Robert Kucharski">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path><rect x="2" y="9" width="4" height="12"></rect><circle cx="4" cy="4" r="2"></circle></svg>
                </a>
                <a href="https://x.com/Projekt_HVAC" class="rk-eeat-social-link" target="_blank" rel="noopener noreferrer" aria-label="X Projekt HVAC">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 4l11.733 16h4.267l-11.733 -16z"></path><path d="M4 20l6.768 -6.768m2.46 -2.46l6.772 -6.772"></path></svg>
                </a>
            </div>
        </div>

        <div class="rk-eeat-content">
            
            <div class="rk-eeat-tabs" id="rkTabsContainer">
                <button class="rk-eeat-tab-btn is-active" data-target="panel-quote">Konkluzja Artykułu</button>
                <button class="rk-eeat-tab-btn" data-target="panel-cred">Autorytet i E-E-A-T</button>
            </div>

            <div class="rk-eeat-tab-panels">
                
                <div class="rk-eeat-panel is-active" id="panel-quote">
                    <div class="rk-eeat-quote-box">
                        <svg class="rk-eeat-quote-icon" viewBox="0 0 24 24" fill="currentColor"><path d="M14.017 21v-7.391c0-5.704 3.731-9.57 8.983-10.609l.995 2.151c-2.432.917-3.995 3.638-3.995 5.849h4v10h-9.983zm-14.017 0v-7.391c0-5.704 3.748-9.57 9-10.609l.996 2.151c-2.433.917-3.996 3.638-3.996 5.849h3.983v10h-9.983z"/></svg>
                        <p class="rk-eeat-quote-text">
                            Ogrzewanie podłogowe bez automatyki strefowej to jak luksusowy samochód z potężnym silnikiem, ale pozbawiony kierownicy. Wytwarza ogromną moc, nad którą nie masz żadnej kontroli.
                        </p>
                        <p class="rk-eeat-text-norm">
                            W moich wyliczeniach technicznych jednoznacznie widać, że opieranie się wyłącznie na krzywej grzewczej pompy ciepła to droga do przegrzewania wnętrz. Brak precyzyjnych sterowników drastycznie obniża COP układu i niszczy portfel inwestora. Dobra automatyka to nie koszt, to fundament <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/">kalkulacji strat ciepła</a>.
                        </p>
                    </div>
                </div>

                <div class="rk-eeat-panel" id="panel-cred">
                    <p class="rk-eeat-text-norm" style="margin-bottom: 25px;">
                        Treści techniczne na portalu są wynikiem twardej praktyki inżynieryjnej. Unikam akademickich teorii na rzecz namacalnych dowodów projektowych.
                    </p>
                    <ul class="rk-eeat-list">
                        <li>
                            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                            <span class="rk-eeat-list-text">Ponad 1000 sprojektowanych i zoptymalizowanych instalacji płaszczyznowych w domach jednorodzinnych.</span>
                        </li>
                        <li>
                            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                            <span class="rk-eeat-list-text">Twórca autorskich narzędzi do <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">obliczeń OZC</a> i audytów hydraulicznych.</span>
                        </li>
                        <li>
                            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                            <span class="rk-eeat-list-text">Lider merytoryczny wspierający miesięcznie dziesiątki tysięcy inwestorów szukających rozwiązań bez ściemy.</span>
                        </li>
                    </ul>
                </div>

            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const tabBtns = document.querySelectorAll('.rk-eeat-tab-btn');
    const panels = document.querySelectorAll('.rk-eeat-panel');

    tabBtns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            // Twarde, statyczne przełączanie tabów. Brak animacji i brak &&
            const targetId = this.getAttribute('data-target');
            
            // Czyszczenie klas aktywnych
            tabBtns.forEach(function(b) {
                b.classList.remove('is-active');
            });
            
            panels.forEach(function(p) {
                p.classList.remove('is-active');
            });

            // Aktywacja wybranego
            this.classList.add('is-active');
            
            const activePanel = document.getElementById(targetId);
            if (activePanel) {
                activePanel.classList.add('is-active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-faq-dark: #0f172a;
    --rk-faq-blue: #0284c7;
    --rk-faq-blue-light: #f0f9ff;
    --rk-faq-gray-text: #475569;
    --rk-faq-border: #e2e8f0;
    --rk-faq-bg: #ffffff;
    --rk-faq-hover: #f8fafc;
}

.rk-faq-container {
    max-width: 900px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: transparent;
}

.rk-faq-header {
    margin-bottom: 30px;
    padding-left: 20px;
    border-left: 5px solid var(--rk-faq-blue);
}

.rk-faq-header h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-faq-dark);
    margin: 0 0 10px 0;
    line-height: 1.3;
}

.rk-faq-header p {
    font-size: 16px;
    color: var(--rk-faq-gray-text);
    margin: 0;
}

.rk-faq-list {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.rk-faq-item {
    background: var(--rk-faq-bg);
    border: 1px solid var(--rk-faq-border);
    border-radius: 16px;
    overflow: hidden;
    transition: all 0.3s ease;
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.02);
}

.rk-faq-item.active {
    border-color: var(--rk-faq-blue);
    box-shadow: 0 10px 25px -5px rgba(2, 132, 199, 0.1);
}

.rk-faq-question {
    width: 100%;
    text-align: left;
    padding: 24px 30px;
    background: transparent;
    border: none;
    cursor: pointer;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 20px;
    transition: background-color 0.3s ease;
}

.rk-faq-question:hover {
    background-color: var(--rk-faq-hover);
}

.rk-faq-question h3 {
    font-size: 17px;
    font-weight: 700;
    color: var(--rk-faq-dark);
    margin: 0;
    line-height: 1.4;
    transition: color 0.3s ease;
}

.rk-faq-item.active .rk-faq-question h3 {
    color: var(--rk-faq-blue);
}

.rk-faq-icon {
    flex-shrink: 0;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--rk-faq-blue-light);
    color: var(--rk-faq-blue);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), background-color 0.3s;
}

.rk-faq-item.active .rk-faq-icon {
    transform: rotate(180deg);
    background: var(--rk-faq-blue);
    color: #ffffff;
}

.rk-faq-answer {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    background: var(--rk-faq-bg);
}

.rk-faq-answer-inner {
    padding: 0 30px 30px 30px;
    font-size: 15px;
    color: var(--rk-faq-gray-text);
    line-height: 1.7;
    border-top: 1px solid transparent;
}

.rk-faq-item.active .rk-faq-answer-inner {
    border-top-color: var(--rk-faq-blue-light);
    padding-top: 20px;
    margin-top: 5px;
}

.rk-faq-answer-inner a {
    color: var(--rk-faq-blue);
    text-decoration: none;
    font-weight: 600;
    border-bottom: 1px dashed var(--rk-faq-blue);
    transition: all 0.2s;
}

.rk-faq-answer-inner a:hover {
    color: var(--rk-faq-dark);
    border-bottom-color: var(--rk-faq-dark);
}

/* Elementy uatrakcyjniające odpowiedź */
.rk-faq-highlight {
    display: inline-block;
    background: var(--rk-faq-blue-light);
    padding: 2px 8px;
    border-radius: 6px;
    color: var(--rk-faq-blue);
    font-weight: 700;
}

@media (max-width: 768px) {
    .rk-faq-container { margin: 20px auto; }
    .rk-faq-question { padding: 20px; }
    .rk-faq-answer-inner { padding: 0 20px 20px 20px; }
    .rk-faq-question h3 { font-size: 16px; }
    .rk-faq-header h2 { font-size: 24px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/"
    },
    "headline": "FAQ – Najważniejsze pytania dotyczące automatyki podłogówki",
    "description": "Błyskawiczne odpowiedzi na najczęstsze pytania inwestorów dotyczące sterowników strefowych, siłowników NC/NO oraz bezprzewodowego sterowania instalacją.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-07",
    "dateModified": "2026-07-07"
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#faq",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Czy sterowniki podłogówki naprawdę zmniejszają rachunki za ogrzewanie?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, automatyka strefowa eliminuje przegrzewanie pomieszczeń spowodowane zyskami ciepła (nasłonecznienie, urządzenia, rekuperacja), co w polskich warunkach klimatycznych pozwala zmniejszyć roczne zużycie energii na cele grzewcze o 15% do 25%."
        }
      },
      {
        "@type": "Question",
        "name": "Czy w każdym pomieszczeniu muszę instalować osobny termostat?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie jest to bezwzględnie wymagane, ale montaż oddzielnych sterowników w każdej strefie (np. osobno łazienka, sypialnia, salon) zapewnia najwyższy komfort i maksymalne oszczędności eksploatacyjne, dopasowując temperaturę do funkcji danego pokoju."
        }
      },
      {
        "@type": "Question",
        "name": "Czy pompa ciepła potrzebuje sterowników pokojowych do podłogówki?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, ponieważ sama krzywa grzewcza pompy ciepła reaguje wyłącznie na temperaturę zewnętrzną i nie wie, co dzieje się wewnątrz budynku (np. zyski od kominka czy nasłonecznienia salonu), co bez automatyki strefowej prowadzi do przegrzewania wnętrz."
        }
      },
      {
        "@type": "Question",
        "name": "Czym różnią się siłowniki termoelektryczne NC od NO?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Siłowniki typu NC (Normalnie Zamknięte) bez dopływu prądu blokują przepływ wody w pętli, natomiast siłowniki NO (Normalnie Otwarte) w stanie bezprądowym pozostają w pełni otwarte; w budownictwie mieszkaniowym standardem są bezpieczniejsze siłowniki NC."
        }
      },
      {
        "@type": "Question",
        "name": "Czy można zamontować sterowanie bezprzewodowe po wykonaniu tynków i wylewek?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, systemy bezprzewodowe oparte o protokół komunikacyjny ZigBee lub częstotliwość 868 MHz zostały zaprojektowane specjalnie do montażu w wykończonych budynkach, eliminując konieczność kucia ścian pod przewody sterujące."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webapp-faq",
    "name": "Interaktywny Akordeon Bazy Wiedzy HVAC",
    "description": "Aplikacyjny interfejs użytkownika służący do szybkiego wyszukiwania i rozwijania ukrytych technicznych odpowiedzi dotyczących systemów ogrzewania płaszczyznowego.",
    "applicationCategory": "BrowserApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#dataset-faq-keywords",
    "name": "Dane optymalizacyjne FAQ",
    "description": "Niewidoczna warstwa semantyczna łącząca encje i słowa kluczowe wykorzystywane w algorytmach sterowania.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "siłowniki termoelektryczne NC i NO",
      "oszczędności na ogrzewaniu podłogowym",
      "bezprzewodowe sterowanie podłogówką",
      "termostat pokojowy a pompa ciepła",
      "termostaty w każdym pokoju"
    ],
    "measurementTechnique": "Algorytmiczne dopasowanie intencji wyszukiwania (Search Intent) do krótkich, normatywnych odpowiedzi inżynierskich.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Definicja różnic siłowników na rozdzielaczach",
        "Zależności krzywej grzewczej i zysków pasywnych"
      ]
    }
  }
]
</script>

<div class="rk-faq-container" id="faq-app-section">
    <div class="rk-faq-header">
        <h2>FAQ – Najważniejsze pytania dotyczące automatyki podłogówki</h2>
        <p>Szybkie odpowiedzi na dylematy inwestycyjne bez lania wody.</p>
    </div>

    <div class="rk-faq-list" id="rkFaqAccordion">
        
        <div class="rk-faq-item">
            <button class="rk-faq-question" aria-expanded="false">
                <h3>Czy sterowniki podłogówki naprawdę zmniejszają rachunki za ogrzewanie?</h3>
                <div class="rk-faq-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                </div>
            </button>
            <div class="rk-faq-answer">
                <div class="rk-faq-answer-inner">
                    Tak, automatyka strefowa eliminuje przegrzewanie pomieszczeń spowodowane zyskami ciepła (nasłonecznienie, urządzenia, <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/">rekuperacja</a>), co w polskich warunkach klimatycznych pozwala zmniejszyć roczne zużycie energii na cele grzewcze o <span class="rk-faq-highlight">15% do 25%</span>.
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <button class="rk-faq-question" aria-expanded="false">
                <h3>Czy w każdym pomieszczeniu muszę instalować osobny termostat?</h3>
                <div class="rk-faq-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                </div>
            </button>
            <div class="rk-faq-answer">
                <div class="rk-faq-answer-inner">
                    Nie jest to bezwzględnie wymagane, ale montaż oddzielnych sterowników w każdej strefie (np. osobno łazienka, sypialnia, salon) zapewnia najwyższy komfort i maksymalne oszczędności eksploatacyjne, precyzyjnie dopasowując temperaturę do specyficznej funkcji danego pokoju.
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <button class="rk-faq-question" aria-expanded="false">
                <h3>Czy pompa ciepła potrzebuje sterowników pokojowych do podłogówki?</h3>
                <div class="rk-faq-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                </div>
            </button>
            <div class="rk-faq-answer">
                <div class="rk-faq-answer-inner">
                    Tak, ponieważ sama <a href="https://projekt-ogrzewania.pl/sterownik-regulator-pogodowy/">krzywa grzewcza pompy ciepła</a> reaguje wyłącznie na temperaturę zewnętrzną i nie wie, co dzieje się wewnątrz budynku (np. zyski od kominka czy nasłonecznienia salonu), co bez automatyki strefowej prowadzi do trwałego przegrzewania wnętrz.
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <button class="rk-faq-question" aria-expanded="false">
                <h3>Czym różnią się siłowniki termoelektryczne NC od NO?</h3>
                <div class="rk-faq-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                </div>
            </button>
            <div class="rk-faq-answer">
                <div class="rk-faq-answer-inner">
                    <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">Siłowniki typu NC</a> (Normalnie Zamknięte) bez dopływu prądu fizycznie blokują przepływ wody w pętli. Natomiast siłowniki NO (Normalnie Otwarte) w stanie bezprądowym pozostają w pełni otwarte. W polskim budownictwie mieszkaniowym standardem inżynierskim są bezpieczniejsze siłowniki NC.
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <button class="rk-faq-question" aria-expanded="false">
                <h3>Czy można zamontować sterowanie bezprzewodowe po wykonaniu tynków?</h3>
                <div class="rk-faq-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                </div>
            </button>
            <div class="rk-faq-answer">
                <div class="rk-faq-answer-inner">
                    Tak, systemy bezprzewodowe oparte o protokół komunikacyjny ZigBee lub częstotliwość radiową 868 MHz zostały zaprojektowane specjalnie do montażu w wykończonych lub <a href="https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/">modernizowanych budynkach</a>, co całkowicie eliminuje konieczność kucia ścian pod nowe przewody sterujące.
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const faqItems = document.querySelectorAll('.rk-faq-item');

    faqItems.forEach(function(item) {
        const questionBtn = item.querySelector('.rk-faq-question');
        const answerDiv = item.querySelector('.rk-faq-answer');

        questionBtn.addEventListener('click', function() {
            // Logika bez użycia "&&"
            
            // Sprawdź, czy aktualny element jest już otwarty
            if (item.classList.contains('active')) {
                // Jeśli tak, zamknij go
                item.classList.remove('active');
                questionBtn.setAttribute('aria-expanded', 'false');
                answerDiv.style.maxHeight = null;
            } else {
                // Jeśli nie, najpierw zamknij wszystkie inne otwarte
                faqItems.forEach(function(otherItem) {
                    if (otherItem !== item) {
                        otherItem.classList.remove('active');
                        otherItem.querySelector('.rk-faq-question').setAttribute('aria-expanded', 'false');
                        otherItem.querySelector('.rk-faq-answer').style.maxHeight = null;
                    }
                });
                
                // Następnie otwórz aktualnie kliknięty
                item.classList.add('active');
                questionBtn.setAttribute('aria-expanded', 'true');
                answerDiv.style.maxHeight = answerDiv.scrollHeight + "px";
            }
        });
    });
});
</script>



<style>
:root {
    --rk-dl-dark: #0f172a;
    --rk-dl-card: #1e293b;
    --rk-dl-blue: #0284c7;
    --rk-dl-blue-hover: #0369a1;
    --rk-dl-red: #ef4444;
    --rk-dl-red-hover: #dc2626;
    --rk-dl-gray: #475569;
    --rk-dl-gray-light: #f1f5f9;
    --rk-dl-bg: #ffffff;
    --rk-dl-border: #cbd5e1;
}

.rk-dl-container {
    max-width: 900px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-dl-bg);
    border: 2px solid var(--rk-dl-dark);
    /* Brak border-radius dla surowego, technicznego wyglądu */
}

.rk-dl-header {
    padding: 30px 40px;
    background: var(--rk-dl-dark);
    color: #ffffff;
    border-bottom: 4px solid var(--rk-dl-blue);
}

.rk-dl-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 10px 0;
    line-height: 1.3;
}

.rk-dl-header p {
    font-size: 15px;
    color: #94a3b8;
    margin: 0;
    line-height: 1.6;
}

.rk-dl-body {
    padding: 40px;
    display: flex;
    gap: 40px;
    align-items: stretch;
}

/* Sekcja Miniatury (Lewa) */
.rk-dl-preview-col {
    flex: 1;
    display: flex;
    flex-direction: column;
}

.rk-dl-thumb-box {
    border: 1px solid var(--rk-dl-border);
    background: var(--rk-dl-gray-light);
    padding: 10px;
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100%;
    min-height: 280px;
    position: relative;
    cursor: pointer;
}

.rk-dl-thumb-box:hover {
    border-color: var(--rk-dl-blue);
}

.rk-dl-img {
    max-width: 100%;
    max-height: 350px;
    object-fit: contain;
    border: 1px solid var(--rk-dl-border);
}

.rk-dl-zoom-icon {
    position: absolute;
    bottom: 20px;
    right: 20px;
    background: var(--rk-dl-dark);
    color: #ffffff;
    padding: 8px 12px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
}

/* Sekcja Akcji (Prawa) */
.rk-dl-action-col {
    flex: 1.2;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-dl-action-col h3 {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-dl-dark);
    margin: 0 0 15px 0;
}

.rk-dl-desc {
    font-size: 15px;
    color: var(--rk-dl-gray);
    line-height: 1.7;
    margin: 0 0 25px 0;
}

/* Przyciski (Brak animacji, natychmiastowa reakcja) */
.rk-dl-btn-group {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-dl-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 16px 20px;
    font-size: 16px;
    font-weight: 800;
    text-decoration: none;
    border: none;
    cursor: pointer;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-dl-btn-pdf {
    background: var(--rk-dl-red);
    color: #ffffff;
    border: 2px solid var(--rk-dl-red);
}

.rk-dl-btn-pdf:hover {
    background: var(--rk-dl-red-hover);
    border-color: var(--rk-dl-red-hover);
}

.rk-dl-btn-img {
    background: var(--rk-dl-blue);
    color: #ffffff;
    border: 2px solid var(--rk-dl-blue);
}

.rk-dl-btn-img:hover {
    background: var(--rk-dl-blue-hover);
    border-color: var(--rk-dl-blue-hover);
}

/* Stopka Prawa Autorskie */
.rk-dl-footer {
    background: var(--rk-dl-gray-light);
    border-top: 1px solid var(--rk-dl-border);
    padding: 20px 40px;
    font-size: 12px;
    color: var(--rk-dl-gray);
    line-height: 1.6;
    font-weight: 600;
    text-align: center;
}

.rk-dl-footer strong {
    color: var(--rk-dl-dark);
    font-weight: 800;
}

/* Prosty wbudowany podgląd (zamiast modal window dla zachowania stabilności SEO) */
.rk-dl-full-view {
    display: none;
    padding: 20px;
    background: var(--rk-dl-gray-light);
    border-top: 1px solid var(--rk-dl-border);
    text-align: center;
}

.rk-dl-full-view.is-open {
    display: block;
}

.rk-dl-full-img {
    max-width: 100%;
    height: auto;
    border: 2px solid var(--rk-dl-dark);
}

@media (max-width: 768px) {
    .rk-dl-container { margin: 20px auto; border-left: none; border-right: none; }
    .rk-dl-header, .rk-dl-footer { padding: 20px; }
    .rk-dl-header h2 { font-size: 22px; }
    .rk-dl-body { flex-direction: column; padding: 20px; gap: 30px; }
    .rk-dl-thumb-box { min-height: 200px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article-infografika",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/"
    },
    "headline": "Kompendium wiedzy: Pobierz darmową infografikę do druku",
    "description": "Zapisz na dysku schemat i wizualne podsumowanie opłacalności sterowników strefowych. Gotowa ściągawka dla inwestora w formacie PDF i WebP.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2025/12/Infografika-Czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-07",
    "dateModified": "2026-07-07"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#dataset-infografika",
    "name": "Infografika techniczna: Opłacalność automatyki podłogówki",
    "description": "Zestawienie wizualne i zbiór danych technicznych dostępny w formacie PDF do celów edukacyjnych i konsultacyjnych na budowie.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "infografika ogrzewanie podłogowe",
      "czy warto montować sterowniki podłogówki pdf",
      "schemat sterowania ogrzewaniem podłogowym",
      "darmowe materiały hvac do pobrania",
      "robert kucharski projekt ogrzewania pdf"
    ],
    "measurementTechnique": "Ekstrakcja wiedzy inżynieryjnej i wskaźników ROI do formy graficznej i dokumentu ustrukturyzowanego (PDF).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Plik wektorowy PDF gotowy do druku i prezentacji.",
        "Kompresowana mapa bitowa WebP zoptymalizowana do wyświetlania na urządzeniach mobilnych."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webapp-infografika",
    "name": "Repozytorium Plików i Przeglądarka Grafik",
    "description": "Interfejs interaktywny umożliwiający szybki podgląd technicznych infografik oraz zarządzanie pobieraniem dokumentacji w formacie PDF.",
    "applicationCategory": "MultimediaApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-dl-container" id="rk-dl-app">
    <div class="rk-dl-header">
        <h2>Kompendium wiedzy: Pobierz darmową infografikę</h2>
        <p>Wizualne podsumowanie całego artykułu. Pobierz dokumentację, zabierz ją na budowę i pokaż swojemu instalatorowi, jak powinien wyglądać inżynierski standard.</p>
    </div>

    <div class="rk-dl-body">
        
        <div class="rk-dl-preview-col">
            <div class="rk-dl-thumb-box" id="rkThumbTrigger">
                <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2025/12/Infografika-Czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego.webp" alt="Miniatura: Infografika sterowniki do ogrzewania podłogowego" class="rk-dl-img">
                <div class="rk-dl-zoom-icon">Kliknij, aby rozwinąć</div>
            </div>
        </div>

        <div class="rk-dl-action-col">
            <h3>Wybierz format materiałów</h3>
            <p class="rk-dl-desc">
                Przygotowałem to podsumowanie w dwóch formatach. Wersja PDF jest idealna do druku w wysokiej jakości, natomiast szybki podgląd graficzny świetnie sprawdzi się na ekranie Twojego smartfona.
            </p>
            
            <div class="rk-dl-btn-group">
                <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2025/12/Infografika-Czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego.pdf" download="Infografika-Sterowniki-Podlogowka.pdf" target="_blank" rel="noopener noreferrer" class="rk-dl-btn rk-dl-btn-pdf">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg>
                    Pobierz plik PDF
                </a>
                
                <button type="button" class="rk-dl-btn rk-dl-btn-img" id="rkBtnPreview">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line><line x1="11" y1="8" x2="11" y2="14"></line><line x1="8" y1="11" x2="14" y2="11"></line></svg>
                    Powiększ obraz
                </button>
            </div>
        </div>

    </div>

    <div class="rk-dl-full-view" id="rkFullView">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2025/12/Infografika-Czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego.webp" alt="Pełna Infografika: Czy warto montować sterowniki" class="rk-dl-full-img" loading="lazy">
    </div>

    <div class="rk-dl-footer">
        <strong>&copy; 2026 Projekt-Ogrzewania.pl | Autor: Robert Kucharski.</strong><br>
        Udostępnianie materiału PDF dozwolone wyłącznie z zachowaniem logotypu portalu i bez jakiejkolwiek modyfikacji pliku bazowego.
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const thumbTrigger = document.getElementById('rkThumbTrigger');
    const btnPreview = document.getElementById('rkBtnPreview');
    const fullView = document.getElementById('rkFullView');
    
    // Brak operatorów && - czyste instrukcje warunkowe
    function togglePreview() {
        if (fullView.classList.contains('is-open')) {
            fullView.classList.remove('is-open');
            btnPreview.innerHTML = '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line><line x1="11" y1="8" x2="11" y2="14"></line><line x1="8" y1="11" x2="14" y2="11"></line></svg> Powiększ obraz';
        } else {
            fullView.classList.add('is-open');
            btnPreview.innerHTML = '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line><line x1="8" y1="11" x2="14" y2="11"></line></svg> Ukryj obraz';
        }
    }

    thumbTrigger.addEventListener('click', togglePreview);
    btnPreview.addEventListener('click', togglePreview);
});
</script>



<style>
:root {
    --rk-sum-dark: #0f172a;
    --rk-sum-blue: #0284c7;
    --rk-sum-light-blue: #f0f9ff;
    --rk-sum-green: #10b981;
    --rk-sum-green-light: #dcfce7;
    --rk-sum-red: #ef4444;
    --rk-sum-red-light: #fef2f2;
    --rk-sum-gold: #eab308;
    --rk-sum-gray: #64748b;
    --rk-sum-border: #e2e8f0;
    --rk-sum-bg: #ffffff;
}

.rk-invest-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-sum-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.15);
    border: 1px solid var(--rk-sum-blue);
    overflow: hidden;
}

.rk-invest-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, #1e293b 0%, var(--rk-sum-dark) 100%);
    color: #ffffff;
}

.rk-invest-header h2 {
    font-size: 28px;
    font-weight: 900;
    color: #ffffff;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-invest-header p {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

.rk-invest-interactive {
    padding: 40px 50px;
    background: #f8fafc;
}

/* Toggle Switch Design */
.rk-toggle-wrapper {
    display: flex;
    background: var(--rk-sum-border);
    border-radius: 16px;
    padding: 6px;
    margin-bottom: 35px;
    position: relative;
}

.rk-toggle-btn {
    flex: 1;
    text-align: center;
    padding: 18px 20px;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-sum-gray);
    background: transparent;
    border: none;
    border-radius: 12px;
    cursor: pointer;
    transition: all 0.4s ease;
    z-index: 2;
}

.rk-toggle-btn.active {
    color: #ffffff;
}

.rk-toggle-bg {
    position: absolute;
    top: 6px;
    bottom: 6px;
    width: calc(50% - 6px);
    background: var(--rk-sum-dark);
    border-radius: 12px;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    z-index: 1;
    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
}

.rk-invest-cards {
    display: flex;
    gap: 30px;
}

.rk-status-card {
    flex: 1;
    background: var(--rk-sum-bg);
    border: 2px solid var(--rk-sum-border);
    border-radius: 20px;
    padding: 30px;
    text-align: left;
    transition: all 0.3s ease;
    display: none;
    animation: fadeIn 0.5s forwards;
}

.rk-status-card.active {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

@keyframes fadeIn {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

.rk-icon-row {
    display: flex;
    align-items: center;
    gap: 20px;
    padding-bottom: 20px;
    border-bottom: 1px solid var(--rk-sum-border);
}

.rk-icon-circle {
    width: 64px;
    height: 64px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-status-pro .rk-status-card { border-color: var(--rk-sum-green); box-shadow: 0 15px 30px -10px rgba(16, 185, 129, 0.15); }
.rk-status-pro .rk-icon-circle { background: var(--rk-sum-green-light); color: var(--rk-sum-green); }
.rk-status-pro h3 { color: var(--rk-sum-green); font-size: 22px; margin: 0; font-weight: 900;}

.rk-status-warn .rk-status-card { border-color: var(--rk-sum-red); box-shadow: 0 15px 30px -10px rgba(239, 68, 68, 0.15); }
.rk-status-warn .rk-icon-circle { background: var(--rk-sum-red-light); color: var(--rk-sum-red); }
.rk-status-warn h3 { color: var(--rk-sum-red); font-size: 22px; margin: 0; font-weight: 900;}

.rk-card-text {
    font-size: 15px;
    color: #475569;
    line-height: 1.6;
    margin: 0;
}

.rk-card-text strong {
    color: var(--rk-sum-dark);
}

.rk-card-text a {
    color: var(--rk-sum-blue);
    text-decoration: none;
    border-bottom: 1px dashed var(--rk-sum-blue);
    font-weight: 600;
}

.rk-tags-section {
    padding: 0 50px 30px;
    background: #f8fafc;
}

.rk-mat-tags-container {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: center;
}

.rk-mat-tag {
    background: var(--rk-sum-light-blue);
    color: var(--rk-sum-blue);
    padding: 6px 14px;
    border-radius: 20px;
    font-size: 12px;
    font-weight: 700;
    border: 1px solid rgba(2, 132, 199, 0.1);
    transition: all 0.2s;
}

.rk-mat-tag:hover {
    background: var(--rk-sum-blue);
    color: #ffffff;
}

/* Nowa sekcja CTA */
.rk-cta-section {
    background: linear-gradient(135deg, var(--rk-sum-dark) 0%, #1e293b 100%);
    padding: 45px 50px;
    text-align: center;
    border-top: 1px solid rgba(255, 255, 255, 0.05);
}

.rk-cta-title {
    color: #ffffff;
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.2;
}

.rk-cta-text {
    color: #cbd5e1;
    font-size: 16px;
    max-width: 650px;
    margin: 0 auto 30px auto;
    line-height: 1.6;
}

.rk-cta-btn {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    background: var(--rk-sum-blue);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 20px 40px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(2, 132, 199, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    border: 2px solid transparent;
}

.rk-cta-btn:hover {
    transform: translateY(-5px);
    background: #0369a1;
    box-shadow: 0 20px 35px -5px rgba(2, 132, 199, 0.5);
    border-color: #7dd3fc;
}

.rk-cta-btn svg {
    transition: transform 0.3s;
}

.rk-cta-btn:hover svg {
    transform: translateX(5px);
}

/* Mobile Responsiveness */
@media (max-width: 768px) {
    .rk-invest-header, .rk-invest-interactive, .rk-tags-section, .rk-cta-section { padding: 30px 20px; }
    .rk-invest-header h2, .rk-cta-title { font-size: 24px; }
    .rk-toggle-wrapper { flex-direction: column; background: transparent; padding: 0; gap: 10px;}
    .rk-toggle-bg { display: none; }
    
    .rk-toggle-btn {
        background: var(--rk-sum-border);
        color: var(--rk-sum-gray);
        border: 2px solid transparent;
    }
    
    .rk-toggle-btn.active[data-view="view-warn"] {
        background: var(--rk-sum-red-light);
        color: var(--rk-sum-red);
        border-color: var(--rk-sum-red);
    }
    
    .rk-toggle-btn.active[data-view="view-pro"] {
        background: var(--rk-sum-green-light);
        color: var(--rk-sum-green);
        border-color: var(--rk-sum-green);
    }
    
    .rk-invest-cards { flex-direction: column; gap: 20px; }
    
    .rk-cta-btn {
        width: 100%;
        padding: 16px 20px;
        font-size: 16px;
        justify-content: center;
    }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article-podsumowanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/"
    },
    "headline": "Podsumowanie inwestycyjne: Czy warto kupić automatykę do podłogówki?",
    "description": "Sprawdź na konkretnych danych, dlaczego automatyka strefowa do ogrzewania podłogowego jest inwestycją, a nie wydatkiem. Symulacja kosztów eksploatacji i ochrony posadzki.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-07",
    "dateModified": "2026-07-07"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#dataset-sterowniki",
    "name": "Wskaźnik opłacalności inwestycji w automatykę strefową 2026",
    "description": "Zestawienie porównawcze kosztów eksploatacji, zużycia energii oraz wpływu na żywotność instalacji w scenariuszach z automatyką strefową i bez niej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "czy warto montować sterowniki do podłogówki",
      "automatyka do podłogówki cena",
      "koszty eksploatacji ogrzewania podłogowego",
      "optymalizacja pracy pompy ciepła",
      "ochrona posadzki przed przegrzaniem"
    ],
    "measurementTechnique": "Analiza numeryczna zapotrzebowania cieplnego budynku oraz wskaźnika COP pompy ciepła w trybie modulacji przepływu względem braku regulacji strefowej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Scenariusz Pasywny: Brak sterowania strefowego prowadzi do przegrzewania wnętrz, zwiększenia zużycia energii o 15-25% oraz degradacji posadzek winylowych lub drewnianych.",
        "Scenariusz Zoptymalizowany: Sterowanie strefowe chroni jastrych i optymalizuje COP pompy ciepła, zapewniając pełen zwrot z inwestycji (ROI)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webapp-sterowniki",
    "name": "Symulator Scenariuszy Sterowania Podłogówką",
    "description": "Interaktywny panel uświadamiający skutki braku automatyki grzewczej i korzyści płynące ze strefowego sterowania pompą obiegową i źródłem ciepła.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-invest-container" id="automatyka-invest-app">
    <div class="rk-invest-header">
        <h2>Podsumowanie inwestycyjne: Czy warto kupić automatykę do podłogówki?</h2>
        <p>Automatyka do wodnego ogrzewania podłogowego nie jest opcjonalnym gadżetem, lecz kluczowym elementem technologicznym. Przełącz poniższe scenariusze, aby zobaczyć inżynierskie różnice na konkretnych danych.</p>
    </div>

    <div class="rk-invest-interactive">
        <div class="rk-toggle-wrapper">
            <div class="rk-toggle-bg" id="rkToggleBg"></div>
            <button class="rk-toggle-btn active" data-view="view-warn" style="color: #ffffff;">
                Oszczędzam na sterownikach (Brak automatyki)
            </button>
            <button class="rk-toggle-btn" data-view="view-pro">
                Montuję inteligentne sterowanie strefowe
            </button>
        </div>

        <div class="rk-invest-cards" id="rkCardsArea">
            
            <div class="rk-status-warn" id="view-warn-content">
                <div class="rk-status-card active">
                    <div class="rk-icon-row">
                        <div class="rk-icon-circle">
                            <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg>
                        </div>
                        <div>
                            <h3>Ryzyko przegrzewania podłogi</h3>
                        </div>
                    </div>
                    <p class="rk-card-text">
                        Pominięcie sterowników to <strong>pozorna oszczędność</strong>. Zmuszasz pompę ciepła do pracy na sztywnych parametrach. Bezwładny układ hydrauliczny reaguje z wielogodzinnym opóźnieniem. Efekt? <strong>Trwałe przegrzewanie pomieszczeń</strong> o 2-3 stopnie, co drastycznie podnosi rachunki i niszczy wrażliwe posadzki wykończeniowe (np. winyl).
                    </p>
                </div>
            </div>

            <div class="rk-status-pro" id="view-pro-content" style="display: none;">
                <div class="rk-status-card active">
                    <div class="rk-icon-row">
                        <div class="rk-icon-circle">
                            <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                        </div>
                        <div>
                            <h3>Zyskowny model eksploatacji</h3>
                        </div>
                    </div>
                    <p class="rk-card-text">
                        Precyzyjne sterowanie mikroklimatem przekształca bezwładny układ w wysoce responsywną instalację. Zobacz <a href="https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/">wyliczenia zwrotu z inwestycji</a> (ROI) na poziomie 15-25% redukcji energii rocznie. Automatyka strefowa zapewnia natychmiastową <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">optymalizację pracy pompy ciepła</a> (wyższy COP) oraz trwale <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/">zabezpiecza wylewkę</a> betonową przed degradacją termiczną.
                    </p>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-tags-section">
        <div class="rk-mat-tags-container">
            <span class="rk-mat-tag"># czy warto montować sterowniki do podłogówki</span>
            <span class="rk-mat-tag"># automatyka do podłogówki cena</span>
            <span class="rk-mat-tag"># sterowanie strefowe ogrzewaniem</span>
            <span class="rk-mat-tag"># koszty eksploatacji ogrzewania podłogowego</span>
            <span class="rk-mat-tag"># optymalizacja pracy pompy ciepła</span>
            <span class="rk-mat-tag"># ochrona posadzki przed przegrzaniem</span>
            <span class="rk-mat-tag"># inteligentny dom ogrzewanie</span>
            <span class="rk-mat-tag"># termostaty pokojowe a rachunki</span>
        </div>
    </div>

    <!-- Dodane mocne CTA -->
    <div class="rk-cta-section">
        <h3 class="rk-cta-title">Nie pozwól, by instalator uczył się na Twoim domu</h3>
        <p class="rk-cta-text">
            Bezwładność cieplna, algorytmy PWM, dobór pomp obiegowych – to nie czarna magia, to inżynieria. Wejdź na bloga i zbuduj wiedzę, która ochroni Twój budżet przed kosztownymi błędami.
        </p>
        <a href="https://projekt-ogrzewania.pl/blog/" class="rk-cta-btn">
            WEJDŹ DO BAZY WIEDZY EKSKLUZYWNEJ
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btns = document.querySelectorAll('.rk-toggle-btn');
    const toggleBg = document.getElementById('rkToggleBg');
    const viewWarn = document.getElementById('view-warn-content');
    const viewPro = document.getElementById('view-pro-content');
    
    btns.forEach((btn, index) => {
        btn.addEventListener('click', function() {
            // Bezpieczny JS, bazujemy na precyzyjnych if/else
            
            // Reset stylów przycisków na widoku desktopowym
            btns.forEach(b => {
                b.classList.remove('active');
                if(window.innerWidth > 768) {
                    b.style.color = 'var(--rk-sum-gray)';
                }
            });
            
            // Ustaw aktywację
            this.classList.add('active');
            
            if(window.innerWidth > 768) {
                this.style.color = '#ffffff';
                if(index === 0) {
                    toggleBg.style.transform = 'translateX(0)';
                    toggleBg.style.backgroundColor = 'var(--rk-sum-dark)';
                } else {
                    toggleBg.style.transform = 'translateX(100%)';
                    toggleBg.style.backgroundColor = 'var(--rk-sum-green)';
                }
            }

            // Przełączanie kontenerów tekstowych
            const targetView = this.getAttribute('data-view');
            
            if(targetView === 'view-warn') {
                viewPro.style.display = 'none';
                viewWarn.style.display = 'block';
            } else {
                viewWarn.style.display = 'none';
                viewPro.style.display = 'block';
            }
        });
    });

    // Zabezpieczenie wizualne przy zmianie szerokości okna (Resize obwodu)
    window.addEventListener('resize', function() {
        if(window.innerWidth <= 768) {
            btns.forEach(b => b.style.color = ''); 
        } else {
            const activeBtn = document.querySelector('.rk-toggle-btn.active');
            if (activeBtn) {
                activeBtn.style.color = '#ffffff';
            }
        }
    });
});
</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>
