<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>GbbOptimizer — Podręcznik</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/</link><description>Recent content on GbbOptimizer — Podręcznik</description><generator>Hugo</generator><language>pl</language><atom:link href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/index.xml" rel="self" type="application/rss+xml"/><item><title>Czym jest GbbOptimizer</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/wprowadzenie/czym-jest-gbboptimizer/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/wprowadzenie/czym-jest-gbboptimizer/</guid><description>&lt;h1 id="czym-jest-gbboptimizer"&gt;Czym jest GbbOptimizer&lt;a class="anchor" href="#czym-jest-gbboptimizer"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;GbbOptimizer (dawniej GbbVictronWeb) to program optymalizujący wykorzystanie energii w domowej instalacji fotowoltaicznej z magazynem energii (baterią). Analizuje prognozy produkcji PV, profil zużycia energii oraz ceny zakupu i sprzedaży, aby automatycznie sterować falownikiem — decydując kiedy ładować baterię, kiedy rozładowywać i kiedy kupować lub sprzedawać energię z/do sieci.&lt;/p&gt;
&lt;h2 id="jak-to-działa"&gt;Jak to działa&lt;a class="anchor" href="#jak-to-dzia%c5%82a"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Program działa w chmurze i komunikuje się z falownikiem przez internet. Co godzinę wykonuje obliczenia i wysyła komendy do falownika.&lt;/p&gt;</description></item><item><title>Deye</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/mapowania-trybow/deye/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/mapowania-trybow/deye/</guid><description>&lt;h1 id="mapowanie-trybów--deye"&gt;Mapowanie trybów — Deye&lt;a class="anchor" href="#mapowanie-tryb%c3%b3w--deye"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;span class="badge" style="background-color: #9b59b6; color: white; padding: 2px 8px; border-radius: 4px; font-size: 0.75em; font-weight: 600; text-transform: uppercase; vertical-align: middle;"&gt;deye-only&lt;/span&gt;

&lt;p&gt;Jak tryby GbbOptimizer przekładają się na ustawienia falownika Deye w zależności od metody połączenia.&lt;/p&gt;
&lt;h2 id="solarman--deyecloud-nowa-metoda-połączenia"&gt;Solarman / DeyeCloud (nowa metoda połączenia)&lt;a class="anchor" href="#solarman--deyecloud-nowa-metoda-po%c5%82%c4%85czenia"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;span class="badge" style="background-color: #27ae60; color: white; padding: 2px 8px; border-radius: 4px; font-size: 0.75em; font-weight: 600; text-transform: uppercase; vertical-align: middle;"&gt;recommended&lt;/span&gt;

&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Operacja&lt;/th&gt;
 &lt;th&gt;Work Mode&lt;/th&gt;
 &lt;th&gt;GridCharge (TimeOfUse)&lt;/th&gt;
 &lt;th&gt;Time (TimeOfUse)&lt;/th&gt;
 &lt;th&gt;SOC (TimeOfUse)&lt;/th&gt;
 &lt;th&gt;Power (TimeOfUse)&lt;/th&gt;
 &lt;th&gt;Charge A&lt;/th&gt;
 &lt;th&gt;MaxSellPower&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Normal&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;td&gt;nie&lt;/td&gt;
 &lt;td&gt;tak&lt;/td&gt;
 &lt;td&gt;5%*&lt;/td&gt;
 &lt;td&gt;Max Battery Discharge, jeśli brak: Max Inverter Discharge&lt;/td&gt;
 &lt;td&gt;bez zmian&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Charge&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;td&gt;tak&lt;/td&gt;
 &lt;td&gt;tak&lt;/td&gt;
 &lt;td&gt;SOC%&lt;/td&gt;
 &lt;td&gt;ChargeLimitW, jeśli brak: Max Battery Charge, jeśli brak: Max Inverter Charge&lt;/td&gt;
 &lt;td&gt;ChargeLimitW, jeśli brak: Max Battery Charge, jeśli brak: Max Inverter Charge&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Discharge&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;SellingFirst (po zakończeniu: powrót do poprzedniej wartości)&lt;/td&gt;
 &lt;td&gt;nie&lt;/td&gt;
 &lt;td&gt;tak&lt;/td&gt;
 &lt;td&gt;SOC%&lt;/td&gt;
 &lt;td&gt;Max Battery Discharge, jeśli brak: Max Inverter Discharge&lt;/td&gt;
 &lt;td&gt;bez zmian; KeepSOC: 0W&lt;/td&gt;
 &lt;td&gt;Max GridSetpoint / Discharge (W); jeśli rozładowanie musi być wolniejsze, program oblicza wartość; po zakończeniu: powrót do poprzedniej wartości&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;DisableCharge&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;td&gt;nie&lt;/td&gt;
 &lt;td&gt;tak&lt;/td&gt;
 &lt;td&gt;5%*&lt;/td&gt;
 &lt;td&gt;Max GridSetpoint / Discharge (W)&lt;/td&gt;
 &lt;td&gt;zmiana na 0 (po zakończeniu: powrót do poprzedniej wartości)&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;* 5% można zmienić parametrem &lt;strong&gt;&amp;ldquo;Default MinSOC after discharge&amp;rdquo;&lt;/strong&gt; w ustawieniach planu rozładowania.&lt;/p&gt;</description></item><item><title>Mosquitto Bridge</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/integracje/home-assistant/mosquitto-bridge/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/integracje/home-assistant/mosquitto-bridge/</guid><description>&lt;h1 id="mosquitto-bridge"&gt;Mosquitto Bridge&lt;a class="anchor" href="#mosquitto-bridge"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Aby GbbOptimizer mógł komunikować się z Home Assistant, należy skonfigurować most (bridge) między lokalnym brokerem Mosquitto w HA a serwerem MQTT GbbOptimizer.&lt;/p&gt;
&lt;h2 id="wymagania"&gt;Wymagania&lt;a class="anchor" href="#wymagania"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Home Assistant z zainstalowanym dodatkiem &lt;strong&gt;Mosquitto broker&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Aktywna instalacja w GbbOptimizer z przypisanym &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#plantid" class="glossary-term" title="Unikalny identyfikator instalacji fotowoltaicznej"&gt;PlantId&lt;/a&gt; i &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#planttoken" class="glossary-term" title="Token uwierzytelniający do MQTT i API"&gt;PlantToken&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Adres serwera MQTT — patrz &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/serwery-mqtt/"&gt;Serwery MQTT&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="konfiguracja-krok-po-kroku"&gt;Konfiguracja krok po kroku&lt;a class="anchor" href="#konfiguracja-krok-po-kroku"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="1-włącz-folder-konfiguracyjny-w-mosquitto"&gt;1. Włącz folder konfiguracyjny w Mosquitto&lt;a class="anchor" href="#1-w%c5%82%c4%85cz-folder-konfiguracyjny-w-mosquitto"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;W Home Assistant przejdź do &lt;strong&gt;Ustawienia&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Dodatki&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Mosquitto broker&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Konfiguracja&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Parametry instalacji</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/instalacja/parametry-instalacji/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/instalacja/parametry-instalacji/</guid><description>&lt;h1 id="parametry-instalacji"&gt;Parametry instalacji&lt;a class="anchor" href="#parametry-instalacji"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Poniżej opisane są wszystkie parametry konfiguracyjne instalacji w GbbOptimizer, pogrupowane tematycznie.&lt;/p&gt;
&lt;h2 id="typ"&gt;Typ&lt;a class="anchor" href="#typ"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Parametr&lt;/th&gt;
 &lt;th&gt;Jednostka&lt;/th&gt;
 &lt;th&gt;Opis&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Typ&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;td&gt;Typ połączenia z falownikiem (Victron, Solarman, GbbConnect2, DongleDirect, SolarAssistant)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Przedziałów czasu dziennie&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;td&gt;Liczba przedziałów czasu dziennie. W Polsce obowiązuje 60 przedziałów dla klientów indywidualnych&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="instalacja"&gt;Instalacja&lt;a class="anchor" href="#instalacja"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Parametr&lt;/th&gt;
 &lt;th&gt;Jednostka&lt;/th&gt;
 &lt;th&gt;Opis&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Nazwa&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;td&gt;Unikalna nazwa instalacji w ramach konta&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Strefa czasowa&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;td&gt;Strefa czasowa lokalizacji instalacji&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Maksymalna moc pobierania z sieci&lt;/td&gt;
 &lt;td&gt;kW&lt;/td&gt;
 &lt;td&gt;Parametr przyłącza — maksymalna moc pobierana z sieci&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Maksymalna moc wysyłania do sieci&lt;/td&gt;
 &lt;td&gt;kW&lt;/td&gt;
 &lt;td&gt;Parametr przyłącza — maksymalna moc oddawana do sieci&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Jaki % PV jest podłączony po stronie DC?&lt;/td&gt;
 &lt;td&gt;%&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;0%&lt;/code&gt; — wszystkie PV podłączone do AC. &lt;code&gt;100%&lt;/code&gt; — wszystkie PV podłączone do DC&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Szerokość/Długość geograficzna&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;td&gt;Położenie geograficzne instalacji. Używane przez moduły: Meteo i Prognozy PV&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="źródła-cen"&gt;Źródła cen&lt;a class="anchor" href="#%c5%bar%c3%b3d%c5%82a-cen"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Parametr&lt;/th&gt;
 &lt;th&gt;Opis&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Zakup: Taryfa dla cen zakupu&lt;/td&gt;
 &lt;td&gt;Źródło zaimportowanych cen zakupu energii&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Przesył: Taryfa dla cen przesyłu&lt;/td&gt;
 &lt;td&gt;Źródło cen przesyłu (transport). Puste = 0&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Sprzedaż: Taryfa dla cen sprzedaży&lt;/td&gt;
 &lt;td&gt;Źródło zaimportowanych cen sprzedaży energii&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Szczegóły wzorów cenowych — w module &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/konfiguracja/ceny/"&gt;Ceny&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Procedury C# IoT</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/zaawansowane/procedury-csharp/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/zaawansowane/procedury-csharp/</guid><description>&lt;h1 id="procedury-c-iot"&gt;Procedury C# IoT&lt;a class="anchor" href="#procedury-c-iot"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;GbbOptimizer pozwala tworzyć własne procedury w języku C#, które sterują urządzeniami IoT na podstawie prognoz, cen energii i historii zużycia.&lt;/p&gt;
&lt;blockquote class='book-hint warning'&gt;
&lt;p&gt;Procedura musi działać &lt;strong&gt;nie dłużej niż 100 ms&lt;/strong&gt; i nie może zakłócać pracy programu. W przeciwnym razie zostanie zawieszona.&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 id="obiekt-app"&gt;Obiekt App&lt;a class="anchor" href="#obiekt-app"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Każda procedura IoT otrzymuje obiekt &lt;code&gt;App&lt;/code&gt; jako parametr. Poniżej lista dostępnych właściwości.&lt;/p&gt;
&lt;h3 id="właściwości-główne"&gt;Właściwości główne&lt;a class="anchor" href="#w%c5%82a%c5%9bciwo%c5%9bci-g%c5%82%c3%b3wne"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Właściwość&lt;/th&gt;
 &lt;th&gt;Typ&lt;/th&gt;
 &lt;th&gt;Opis&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;App.CurrDate&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;DateTime?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Data, dla której urządzenie ma być włączone/wyłączone&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;App.CurrHour&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Godzina (12:30 = 12.5; 12:45 = 12.75)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;App.CurrForecastIndex&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Indeks w &lt;code&gt;App.Forecast&lt;/code&gt; dla bieżącej daty i godziny&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;App.StringVariables&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;Dictionary&amp;lt;string, string?&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Zmienne tekstowe użytkownika (trwałe między wywołaniami)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;App.DecimalVariables&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;Dictionary&amp;lt;string, decimal?&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Zmienne liczbowe użytkownika (trwałe między wywołaniami)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="prognoza-forecast"&gt;Prognoza (Forecast)&lt;a class="anchor" href="#prognoza-forecast"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Właściwość&lt;/th&gt;
 &lt;th&gt;Typ&lt;/th&gt;
 &lt;th&gt;Opis&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;App.Forecast&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;IForecast[]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Tablica prognozy baterii. &lt;code&gt;[0]&lt;/code&gt; = bież. godzina, &lt;code&gt;[1]&lt;/code&gt; = nast. godzina itd.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.Date&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;DateTime&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Data prognozy&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.DateNo&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;0 = dzisiaj, 1 = jutro itd.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.Hour&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Godzina prognozy&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.HourNo&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Godzina licząc od początku prognozy (&lt;code&gt;[0].HourNo == 0&lt;/code&gt; zawsze)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.StartBattery_kWhAC&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;kWh w baterii (AC) na początku godziny&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.StartBattery_kWh&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;kWh w baterii (DC) na początku godziny&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.Prod_KWhAC&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Produkcja (PV + wiatr) w danej godzinie&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.Loads_kWhAC&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Zużycie w danej godzinie&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.GridCharge_kWhAC&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;kWh z sieci do baterii (strona sieci)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.GridCharge_kWh&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;kWh z sieci do baterii (strona baterii)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.Discharge_kWhAC&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;kWh z baterii do sieci (strona sieci)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.Discharge_kWh&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;kWh z baterii do sieci (strona baterii)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.EndBattery_kWhAC&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;kWh w baterii (AC) na koniec godziny&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.EndBattery_kWh&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;kWh w baterii (DC) na koniec godziny&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.Meteo_SOC&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;null = brak ostrzeżeń meteo; wartość = docelowy SOC dla ostrzeżenia&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.Temperature_C&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Temperatura (st. C) w danej godzinie&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.ExtraLoads_kWh&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Suma dodatkowych obciążeń&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.FromGrid_kWh&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;kWh z sieci&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.PurchasePrice&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Cena zakupu&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.PurchaseAmount&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Kwota zakupu&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.ToGrid_kWh&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;kWh do sieci&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.SalePrice&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Cena sprzedaży&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.SaleAmount&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Kwota sprzedaży&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="ceny-prices"&gt;Ceny (Prices)&lt;a class="anchor" href="#ceny-prices"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Właściwość&lt;/th&gt;
 &lt;th&gt;Typ&lt;/th&gt;
 &lt;th&gt;Opis&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;App.Prices&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;Dictionary&amp;lt;(DateTime, decimal), IPrice&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Ceny za wczoraj, dzisiaj i jutro&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.Day&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;DateTime&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Data ceny&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.Hour&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Godzina ceny&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.PurchasePrice&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Cena zakupu&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.SalesPrice&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Cena sprzedaży&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.Imported_PurchasePrice&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Cena zakupu zaimportowana ze źródła cen&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.Imported_SalesPrice&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Cena sprzedaży zaimportowana ze źródła cen&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="historia-history"&gt;Historia (History)&lt;a class="anchor" href="#historia-history"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Właściwość&lt;/th&gt;
 &lt;th&gt;Typ&lt;/th&gt;
 &lt;th&gt;Opis&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;App.History&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;IHistory[]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Dane historyczne. &lt;code&gt;[0]&lt;/code&gt; = godzina przed bież., &lt;code&gt;[1]&lt;/code&gt; = dwie godziny przed itd.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.Date&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;DateTime&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Data&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.Hour&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Godzina&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.FromGrid_kWh&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;kWh z sieci&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.PurchasePrice&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Cena zakupu&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.PurchaseAmount&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Kwota zakupu&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.ToGrid_kWh&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;kWh do sieci&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.SalePrice&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Cena sprzedaży&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.SaleAmount&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Kwota sprzedaży&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.Loads_kWh&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Zużycie (kWh)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.LoadsPrice&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Cena energii zużycia&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.LoadsAmount&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Kwota energii zużycia&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.PV_kWh&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Produkcja PV (kWh)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.SOC_Start&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;SOC na początku godziny&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.SOC_End&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;SOC na koniec godziny&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.ExtraLoads_Price&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Cena dodatkowych obciążeń&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.ExtraLoads_kWh&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;decimal?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Suma dodatkowych obciążeń (kWh)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="urządzenia-iot-iotdevices"&gt;Urządzenia IoT (IoTDevices)&lt;a class="anchor" href="#urz%c4%85dzenia-iot-iotdevices"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Właściwość&lt;/th&gt;
 &lt;th&gt;Typ&lt;/th&gt;
 &lt;th&gt;Opis&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;App.IoTDevices&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;Dictionary&amp;lt;string, IIoTDevice&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Lista urządzeń IoT&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.Name&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Nazwa urządzenia&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.IsOn&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Aktualny stan włącznika&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="funkcje-specjalne"&gt;Funkcje specjalne&lt;a class="anchor" href="#funkcje-specjalne"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Funkcja&lt;/th&gt;
 &lt;th&gt;Opis&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;void App.ToLog(string message)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Wyświetl wiadomość w menu Log&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;bool App.IsInLowerPrices(DateTime CurrDate, decimal CurrHour, int LowerHours, bool Purchase)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Czy dana godzina jest w najniższych godzinach dnia?&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;bool App.IsInHigherPrices(DateTime CurrDate, decimal CurrHour, int HigherHours, bool Purchase)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Czy dana godzina jest w najwyższych godzinach dnia?&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="dostępne-biblioteki"&gt;Dostępne biblioteki&lt;a class="anchor" href="#dost%c4%99pne-biblioteki"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;mscorlib.dll&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;system.runtime.dll&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;System.Text.RegularExpressions.dll&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;system.linq.dll&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;System.Collections.dll&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="przykład"&gt;Przykład&lt;a class="anchor" href="#przyk%c5%82ad"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;4
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt; IoTDevice_0036_IsOn(IApp App)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; App.IsInLowerPrices(App.CurrDate, App.CurrHour, &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;, &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; || App.Forecast[App.CurrForecastIndex].FromGrid_kWh &amp;gt; &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Ten przykład włącza urządzenie, gdy:&lt;/p&gt;</description></item><item><title>Prognoza baterii</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/konfiguracja/prognoza-baterii/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/konfiguracja/prognoza-baterii/</guid><description>&lt;h1 id="prognoza-baterii"&gt;Prognoza baterii&lt;a class="anchor" href="#prognoza-baterii"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Centralny moduł GbbOptimizer. Analizuje &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#soc" class="glossary-term" title="Stan naładowania — poziom baterii w procentach (0–100%)"&gt;SOC&lt;/a&gt; baterii na najbliższe 24h (lub więcej) w oparciu o ładowanie z PV, ładowanie z sieci, rozładowanie i zużycie przez dom. Zawiera optymalizator, który automatycznie dobiera parametry ładowania i rozładowania.&lt;/p&gt;
&lt;p&gt;W tym module możesz:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Analizować prognozę SOC baterii na najbliższe 24h&lt;/li&gt;
&lt;li&gt;Zobaczyć, kiedy SOC przekracza minimalne lub maksymalne wartości&lt;/li&gt;
&lt;li&gt;Optymalizować plany ładowania i rozładowania&lt;/li&gt;
&lt;li&gt;Podglądać ceny zakupu i sprzedaży oraz zyski&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="kolumny-tabeli-prognozy"&gt;Kolumny tabeli prognozy&lt;a class="anchor" href="#kolumny-tabeli-prognozy"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Tabela pokazuje dane na najbliższe 24h. Skróty: &lt;strong&gt;DC&lt;/strong&gt; = prąd stały, &lt;strong&gt;AC&lt;/strong&gt; = prąd zmienny.&lt;/p&gt;</description></item><item><title>Słowniczek</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/</guid><description>&lt;h1 id="słowniczek"&gt;Słowniczek&lt;a class="anchor" href="#s%c5%82owniczek"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;div class="glossary-list"&gt;&lt;div class="glossary-entry" id="batteryfulldate"&gt;
 &lt;h3&gt;Battery Full Date&lt;/h3&gt;
 &lt;p&gt;Konkretne dni miesiąca, w których optymalizator dąży do naładowania baterii do 100% SOC. Podawane jako wartości rozdzielone przecinkami (np. &amp;#39;1, 15&amp;#39;). Umożliwia okresowe pełne cykle ładowania dla zdrowia baterii.&lt;/p&gt;
 &lt;/div&gt;&lt;div class="glossary-entry" id="correctionfactor"&gt;
 &lt;h3&gt;Correction Factor&lt;/h3&gt;
 &lt;p&gt;Mnożnik obliczany w ciągu około tygodnia pracy, który koryguje wartości prognozy PV tak, aby odpowiadały rzeczywistej produkcji, poprawiając dokładność przewidywań.&lt;/p&gt;
 &lt;/div&gt;&lt;div class="glossary-entry" id="dongledirect"&gt;
 &lt;h3&gt;DongleDirect&lt;/h3&gt;
 &lt;p&gt;Metoda połączenia, w której dongle WiFi falownika jest przekonfigurowany tak, aby komunikował się bezpośrednio z serwerem GbbOptimizer zamiast z chmurą producenta.&lt;/p&gt;</description></item><item><title>Solarman</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/instalacja/metody-polaczenia/solarman/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/instalacja/metody-polaczenia/solarman/</guid><description>&lt;h1 id="solarman"&gt;Solarman&lt;a class="anchor" href="#solarman"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Solarman to chmurowa metoda połączenia falownika z GbbOptimizer. Dane przechodzą przez serwery Solarman — nie wymaga instalacji dodatkowego oprogramowania.&lt;/p&gt;
&lt;h2 id="konfiguracja-krok-po-kroku"&gt;Konfiguracja krok po kroku&lt;a class="anchor" href="#konfiguracja-krok-po-kroku"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Dodaj instalację: &lt;strong&gt;Dodaj nową instalację z falownikiem połączonym do Solarman&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Wypełnij pola do grupy „Solarman” (szczegóły w &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/instalacja/parametry-instalacji/"&gt;Parametry instalacji&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Zaloguj się do serwerów Solarman: wprowadź &lt;strong&gt;email&lt;/strong&gt; i &lt;strong&gt;hasło&lt;/strong&gt; (te same co do aplikacji Solarman) i naciśnij &lt;strong&gt;Połącz&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Wybierz z listy &lt;strong&gt;Wybierz SerialNo falownika&lt;/strong&gt; swój falownik&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Wybierz &lt;strong&gt;Rodzaj falownika&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Sygnały</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/mqtt-api/sygnaly/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/mqtt-api/sygnaly/</guid><description>&lt;h1 id="sygnały-mqtt"&gt;Sygnały MQTT&lt;a class="anchor" href="#sygna%c5%82y-mqtt"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;GbbOptimizer wysyła sygnały do zewnętrznych programów (np. Home Assistant) co godzinę, na podstawie prognozy dla bieżącej godziny.&lt;/p&gt;
&lt;p&gt;Parametry połączenia z MQTT (adres, port, TLS, ClientID) — patrz &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/mqtt-api/zapytania-odpowiedzi/"&gt;Zapytania / Odpowiedzi&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote class='book-hint note'&gt;
&lt;ul&gt;
&lt;li&gt;Sygnały muszą być najpierw włączone w module &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/konfiguracja/rozladowanie/"&gt;Rozładowanie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Dany sygnał nie jest wysyłany, jeśli parametr „X&amp;quot; nie jest zdefiniowany (pole puste)&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;&lt;h2 id="sygnały-binarne"&gt;Sygnały binarne&lt;a class="anchor" href="#sygna%c5%82y-binarne"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Zewnętrzny program może subskrybować następujące tematy:&lt;/p&gt;
&lt;div class="mqtt-topic-card mqtt-direction--publish"&gt;
 &lt;div class="mqtt-topic-header"&gt;
 &lt;span class="mqtt-badge mqtt-direction--publish"&gt;PUB&lt;/span&gt;
 &lt;code class="mqtt-topic-path"&gt;{PlantId}/signals/SOCHigherEqThanX&lt;/code&gt;&lt;span class="mqtt-badge mqtt-qos"&gt;QoS 0&lt;/span&gt;&lt;/div&gt;
 &lt;p class="mqtt-topic-description"&gt;&amp;#34;1&amp;#34; jeśli SOC ≥ X, w przeciwnym razie &amp;#34;0&amp;#34;&lt;/p&gt;</description></item><item><title>Victron</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/instalacja/falowniki/victron/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/instalacja/falowniki/victron/</guid><description>&lt;h1 id="victron"&gt;Victron&lt;a class="anchor" href="#victron"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;span class="badge" style="background-color: #3498db; color: white; padding: 2px 8px; border-radius: 4px; font-size: 0.75em; font-weight: 600; text-transform: uppercase; vertical-align: middle;"&gt;victron-only&lt;/span&gt;

&lt;p&gt;Konfiguracja falownika Victron z GbbOptimizer wymaga poprawnego ustawienia systemu &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#ess" class="glossary-term" title="System magazynowania energii"&gt;ESS&lt;/a&gt; oraz portalu &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#vrm" class="glossary-term" title="Portal zdalnego zarządzania Victron"&gt;VRM&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="lista-kontrolna"&gt;Lista kontrolna&lt;a class="anchor" href="#lista-kontrolna"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Przed uruchomieniem GbbOptimizer sprawdź następujące ustawienia:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Nie instaluj wersji Beta&lt;/strong&gt; oprogramowania sprzętowego (firmware)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DESS musi być wyłączony&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Schedules&lt;/strong&gt; — opcja „Self-consumption above limit&amp;quot; powinna być ustawiona na &lt;strong&gt;PV&lt;/strong&gt; (a nie „PV &amp;amp; Battery&amp;quot;). Dzięki temu harmonogramy nie powodują rozładowania baterii w nocy&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Battery Life&lt;/strong&gt; w &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#ess" class="glossary-term" title="System magazynowania energii"&gt;ESS&lt;/a&gt; musi być &lt;strong&gt;wyłączone&lt;/strong&gt; — wybierz tryb: &lt;code&gt;Optimized (without BatteryLife)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Log interval&lt;/strong&gt; (w VRM Online Portal) ustaw na &lt;strong&gt;1 min&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Uprawnienia VRM&lt;/strong&gt; — użytkownik musi mieć włączone prawo &lt;strong&gt;Full Control&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Zrestartuj Cerbo&lt;/strong&gt; po wprowadzeniu zmian&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote class='book-hint warning'&gt;
&lt;p&gt;Nieprawidłowe ustawienia Battery Life lub Schedules mogą powodować nieoczekiwane rozładowanie baterii w nocy.&lt;/p&gt;</description></item><item><title>GbbConnect2 Addon</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/integracje/home-assistant/gbbconnect2-addon/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/integracje/home-assistant/gbbconnect2-addon/</guid><description>&lt;h1 id="gbbconnect2--addon-home-assistant"&gt;GbbConnect2 — addon Home Assistant&lt;a class="anchor" href="#gbbconnect2--addon-home-assistant"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#gbbconnect2" class="glossary-term" title="Lokalne oprogramowanie do bezpośredniego połączenia z falownikiem"&gt;GbbConnect2&lt;/a&gt; jest dostępny jako &lt;strong&gt;addon Home Assistant&lt;/strong&gt;, co pozwala uruchomić go bezpośrednio w HA bez potrzeby osobnego komputera z Windows czy kontenera Docker.&lt;/p&gt;
&lt;p&gt;Addon uruchamia aplikację GbbConnect2Console i łączy falownik z GbbOptimizer przez &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#modbusinmqtt" class="glossary-term" title="Komendy Modbus przesyłane przez MQTT"&gt;ModbusInMqtt&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="wymagania"&gt;Wymagania&lt;a class="anchor" href="#wymagania"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Home Assistant OS&lt;/strong&gt; lub &lt;strong&gt;Home Assistant Supervised&lt;/strong&gt; (wymagany Supervisor)&lt;/li&gt;
&lt;li&gt;Aktywne konto w GbbOptimizer z instalacją typu &lt;strong&gt;GbbConnect2&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Falownik hybrydowy z dataloggerem (WiFi lub Ethernet)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stały adres IP&lt;/strong&gt; dataloggera w sieci lokalnej&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="instalacja"&gt;Instalacja&lt;a class="anchor" href="#instalacja"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="1-dodaj-repozytorium"&gt;1. Dodaj repozytorium&lt;a class="anchor" href="#1-dodaj-repozytorium"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Kliknij poniższy przycisk, aby automatycznie dodać repozytorium do Home Assistant:&lt;/p&gt;</description></item><item><title>Deye</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/instalacja/falowniki/deye/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/instalacja/falowniki/deye/</guid><description>&lt;h1 id="deye"&gt;Deye&lt;a class="anchor" href="#deye"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;span class="badge" style="background-color: #9b59b6; color: white; padding: 2px 8px; border-radius: 4px; font-size: 0.75em; font-weight: 600; text-transform: uppercase; vertical-align: middle;"&gt;deye-only&lt;/span&gt;

&lt;p&gt;Falowniki hybrydowe Deye mogą być podłączone do GbbOptimizer na kilka sposobów. Na tej stronie znajdziesz listę kontrolną ustawień falownika oraz porównanie metod połączenia.&lt;/p&gt;
&lt;h2 id="lista-kontrolna"&gt;Lista kontrolna&lt;a class="anchor" href="#lista-kontrolna"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Przed uruchomieniem GbbOptimizer sprawdź na falowniku Deye:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Tryb pracy&lt;/strong&gt; — &lt;code&gt;Zero export to CT&lt;/code&gt; lub &lt;code&gt;Zero export to Loads&lt;/code&gt; (nie „Selling First”!)&lt;/p&gt;
&lt;blockquote class='book-hint warning'&gt;
&lt;p&gt;Nie sprawdzaj trybu pracy podczas aktywnego rozładowania — GbbOptimizer tymczasowo zmienia tryb.&lt;/p&gt;</description></item><item><title>DeyeCloud</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/instalacja/metody-polaczenia/deye-cloud/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/instalacja/metody-polaczenia/deye-cloud/</guid><description>&lt;h1 id="deyecloud"&gt;DeyeCloud&lt;a class="anchor" href="#deyecloud"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;span class="badge" style="background-color: #9b59b6; color: white; padding: 2px 8px; border-radius: 4px; font-size: 0.75em; font-weight: 600; text-transform: uppercase; vertical-align: middle;"&gt;deye-only&lt;/span&gt;

&lt;p&gt;DeyeCloud to zapasowa metoda połączenia dostępna dla instalacji typu &lt;strong&gt;Solarman&lt;/strong&gt;. Może być używana jako backup w przypadku problemów z Solarman lub jako jedyne połączenie.&lt;/p&gt;
&lt;h2 id="tryby-działania"&gt;Tryby działania&lt;a class="anchor" href="#tryby-dzia%c5%82ania"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Tryb&lt;/th&gt;
 &lt;th&gt;Opis&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Wyłączone&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;DeyeCloud nie jest używane&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Włączone&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;DeyeCloud aktywuje się automatycznie, gdy Solarman zgłosi błąd&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Tylko zapasowe&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Nie używaj Solarman — zawsze DeyeCloud&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="konfiguracja"&gt;Konfiguracja&lt;a class="anchor" href="#konfiguracja"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;W sekcji &lt;strong&gt;Zapasowe połączenie — DeyeCloud&lt;/strong&gt; parametrów instalacji wybierz tryb działania&lt;/li&gt;
&lt;li&gt;Wprowadź &lt;strong&gt;dane logowania&lt;/strong&gt; do DeyeCloud (mogą być inne niż do Solarman)&lt;/li&gt;
&lt;li&gt;Zaznacz &lt;strong&gt;Zapamiętaj dane do logowania&lt;/strong&gt; — bez tego wymagane ręczne ponowne logowanie&lt;/li&gt;
&lt;li&gt;Po połączeniu wybierz &lt;strong&gt;SerialNo falownika&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Szczegółowy opis parametrów znajdziesz w &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/instalacja/parametry-instalacji/"&gt;Parametry instalacji&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>evcc</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/integracje/evcc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/integracje/evcc/</guid><description>&lt;h1 id="integracja-z-evcc"&gt;Integracja z evcc&lt;a class="anchor" href="#integracja-z-evcc"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://evcc.io"&gt;evcc.io&lt;/a&gt; to oprogramowanie do inteligentnego ładowania pojazdów elektrycznych. GbbOptimizer może się z nim komunikować przez MQTT, aby koordynować ładowanie EV z optymalizacją baterii domowej.&lt;/p&gt;
&lt;h2 id="wymagania"&gt;Wymagania&lt;a class="anchor" href="#wymagania"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Działająca instalacja evcc&lt;/li&gt;
&lt;li&gt;Lokalny broker MQTT (Mosquitto w Home Assistant lub samodzielny)&lt;/li&gt;
&lt;li&gt;Skonfigurowany &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/integracje/home-assistant/mosquitto-bridge/"&gt;Mosquitto Bridge&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="konfiguracja-bridge"&gt;Konfiguracja bridge&lt;a class="anchor" href="#konfiguracja-bridge"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;W pliku konfiguracyjnym Mosquitto (&lt;code&gt;/share/mosquitto/GbbOptimizer.conf&lt;/code&gt;) dodaj linie &lt;code&gt;topic&lt;/code&gt; dla evcc:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;4
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;5
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;connection GbbOptimizer_&lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;PlantId&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;remote_username &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;PlantId&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;remote_password &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;PlantToken&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;address &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;adres&lt;span style="color:#f92672"&gt;-&lt;/span&gt;serwera&lt;span style="color:#f92672"&gt;-&lt;/span&gt;mqtt&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;:&lt;span style="color:#ae81ff"&gt;8883&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;bridge_capath &lt;span style="color:#f92672"&gt;/&lt;/span&gt;etc&lt;span style="color:#f92672"&gt;/&lt;/span&gt;ssl&lt;span style="color:#f92672"&gt;/&lt;/span&gt;certs
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;topic &lt;span style="color:#75715e"&gt;# both 2 evcc/loadpoints/ &amp;lt;PlantId&amp;gt;/evcc/site/loadpoints/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="topiki-mqtt"&gt;Topiki MQTT&lt;a class="anchor" href="#topiki-mqtt"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="dane-z-evcc-evcc---gbboptimizer"&gt;Dane z evcc (evcc -&amp;gt; GbbOptimizer)&lt;a class="anchor" href="#dane-z-evcc-evcc---gbboptimizer"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Topik&lt;/th&gt;
 &lt;th&gt;Opis&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;{PlantId}/evcc/site/statistic/total/chargedKWh&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Całkowita energia załadowana do EV (kWh)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="komendy-z-gbboptimizer-gbboptimizer---evcc"&gt;Komendy z GbbOptimizer (GbbOptimizer -&amp;gt; evcc)&lt;a class="anchor" href="#komendy-z-gbboptimizer-gbboptimizer---evcc"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Topik&lt;/th&gt;
 &lt;th&gt;Payload&lt;/th&gt;
 &lt;th&gt;Opis&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;{PlantId}/evcc/loadpoints/{chargerId}/mode&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;off&lt;/code&gt; lub &lt;code&gt;now&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Włącz/wyłącz ładowanie&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;{PlantId}/evcc/loadpoints/{chargerId}/maxCurrent&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;liczba (A)&lt;/td&gt;
 &lt;td&gt;Maksymalny prąd ładowania&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;{PlantId}/evcc/loadpoints/{chargerId}/connected&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;true&lt;/code&gt;/&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Stan połączenia z ładowarką&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Gdzie &lt;code&gt;{chargerId}&lt;/code&gt; to identyfikator punktu ładowania w evcc.&lt;/p&gt;</description></item><item><title>GBB Shunt</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/zaawansowane/gbb-shunt/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/zaawansowane/gbb-shunt/</guid><description>&lt;h1 id="gbb-shunt"&gt;GBB Shunt&lt;a class="anchor" href="#gbb-shunt"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;GBB Shunt to moduł GbbOptimizer przeznaczony do instalacji z bateriami ołowiowymi (kwasowymi, żelowymi, AGM).&lt;/p&gt;
&lt;h2 id="czym-jest-gbb-shunt"&gt;Czym jest GBB Shunt?&lt;a class="anchor" href="#czym-jest-gbb-shunt"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;W instalacjach z bateriami ołowiowymi standardowy pomiar &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#soc" class="glossary-term" title="Stan naładowania — poziom baterii w procentach (0–100%)"&gt;SOC&lt;/a&gt; przez falownik może być niedokładny. GBB Shunt pozwala na dokładniejsze śledzenie stanu naładowania baterii na podstawie pomiaru prądu przez bocznik (shunt).&lt;/p&gt;
&lt;h2 id="kluczowe-funkcje"&gt;Kluczowe funkcje&lt;a class="anchor" href="#kluczowe-funkcje"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Dokładny pomiar SOC&lt;/strong&gt; — na podstawie pomiaru prądu (kulomierz), a nie napięcia&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kompensacja temperatury&lt;/strong&gt; — uwzględnia wpływ temperatury na pojemność baterii ołowiowej&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ochrona baterii&lt;/strong&gt; — zapobiega głębokim rozładowaniom, które skracają żywotność baterii ołowiowych&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="kiedy-używać"&gt;Kiedy używać?&lt;a class="anchor" href="#kiedy-u%c5%bcywa%c4%87"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;GBB Shunt jest zalecany, jeśli:&lt;/p&gt;</description></item><item><title>GoodWe</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/mapowania-trybow/goodwe/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/mapowania-trybow/goodwe/</guid><description>&lt;h1 id="mapowanie-trybów--goodwe"&gt;Mapowanie trybów — GoodWe&lt;a class="anchor" href="#mapowanie-tryb%c3%b3w--goodwe"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Jak tryby GbbOptimizer przekładają się na ustawienia protokołu GoodWe.&lt;/p&gt;
&lt;h2 id="battery-charge-discharge"&gt;Battery Charge-Discharge&lt;a class="anchor" href="#battery-charge-discharge"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Operacja&lt;/th&gt;
 &lt;th&gt;BatteryCDEnable&lt;/th&gt;
 &lt;th&gt;BatteryCDMode&lt;/th&gt;
 &lt;th&gt;BatteryCDPW&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Normal&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;nie&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Charge&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;tak&lt;/td&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;ChargeLimitW&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Discharge&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;tak&lt;/td&gt;
 &lt;td&gt;3&lt;/td&gt;
 &lt;td&gt;DischargeLimitW: Max GridSetpoint / Discharge (W). Jeśli rozładowanie musi być wolniejsze, aby trwało całą godzinę — program oblicza odpowiednią wartość. Po zakończeniu: powrót do poprzedniej wartości.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;DisableCharge&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;tak&lt;/td&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="brakujące-opcje"&gt;Brakujące opcje&lt;a class="anchor" href="#brakuj%c4%85ce-opcje"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote class='book-hint warning'&gt;
&lt;p&gt;Protokół GoodWe nie obsługuje:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Limitu docelowego &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#soc" class="glossary-term" title="Stan naładowania — poziom baterii w procentach (0–100%)"&gt;SOC&lt;/a&gt; (TargetSOC)&lt;/li&gt;
&lt;li&gt;Opcji dla ceny &amp;lt; 0&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;</description></item><item><title>Ładowanie</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/konfiguracja/ladowanie/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/konfiguracja/ladowanie/</guid><description>&lt;h1 id="ładowanie"&gt;Ładowanie&lt;a class="anchor" href="#%c5%82adowanie"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Moduł ładowania zarządza harmonogramami ładowania baterii z sieci. W systemie Victron odpowiada za Schedules w module ESS.&lt;/p&gt;
&lt;blockquote class='book-hint note'&gt;
&lt;p&gt;&lt;span class="badge" style="background-color: #3498db; color: white; padding: 2px 8px; border-radius: 4px; font-size: 0.75em; font-weight: 600; text-transform: uppercase; vertical-align: middle;"&gt;victron-only&lt;/span&gt;
 Zakładamy, że „Self-consumption above limit&amp;quot; jest ustawiony na &lt;strong&gt;PV&lt;/strong&gt; (a nie „PV &amp;amp; Battery&amp;quot;), ponieważ chcemy, aby harmonogram zatrzymywał rozładowywanie baterii w nocy.&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 id="pobierz-tablicę-z-instalacji"&gt;Pobierz tablicę z instalacji&lt;a class="anchor" href="#pobierz-tablic%c4%99-z-instalacji"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span class="badge" style="background-color: #3498db; color: white; padding: 2px 8px; border-radius: 4px; font-size: 0.75em; font-weight: 600; text-transform: uppercase; vertical-align: middle;"&gt;victron-only&lt;/span&gt;
 Program łączy się z instalacją i pobiera 5 harmonogramów (Schedulerów).&lt;/p&gt;</description></item><item><title>SolarAssistant</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/integracje/home-assistant/solar-assistant/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/integracje/home-assistant/solar-assistant/</guid><description>&lt;h1 id="solarassistant"&gt;SolarAssistant&lt;a class="anchor" href="#solarassistant"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;span class="badge" style="background-color: #9b59b6; color: white; padding: 2px 8px; border-radius: 4px; font-size: 0.75em; font-weight: 600; text-transform: uppercase; vertical-align: middle;"&gt;deye-only&lt;/span&gt;

&lt;p&gt;Integracja GbbOptimizer z falownikiem Deye przez &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#solarassistant" class="glossary-term" title="Oprogramowanie monitorujące falowniki"&gt;SolarAssistant&lt;/a&gt; i Home Assistant.&lt;/p&gt;
&lt;h2 id="obsługiwane-konfiguracje"&gt;Obsługiwane konfiguracje&lt;a class="anchor" href="#obs%c5%82ugiwane-konfiguracje"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Home Assistant (HA) z SolarAssistant (SA) połączonym z hybrydowym falownikiem Deye jako &lt;code&gt;inverter_1&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="wymagania"&gt;Wymagania&lt;a class="anchor" href="#wymagania"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Home Assistant z Mosquitto broker&lt;/li&gt;
&lt;li&gt;SolarAssistant zainstalowany i połączony z falownikiem Deye&lt;/li&gt;
&lt;li&gt;Skonfigurowany &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/integracje/home-assistant/mosquitto-bridge/"&gt;Mosquitto Bridge&lt;/a&gt; z topikiem dla SolarAssistant&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="konfiguracja-solarassistant"&gt;Konfiguracja SolarAssistant&lt;a class="anchor" href="#konfiguracja-solarassistant"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;W ustawieniach SolarAssistant przejdź do &lt;strong&gt;Configuration&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Advanced MQTT&lt;/strong&gt; i zmień:&lt;/p&gt;</description></item><item><title>Szybki start</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/wprowadzenie/szybki-start/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/wprowadzenie/szybki-start/</guid><description>&lt;h1 id="szybki-start"&gt;Szybki start&lt;a class="anchor" href="#szybki-start"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Przewodnik krok po kroku, jak uruchomić GbbOptimizer dla Twojej instalacji fotowoltaicznej.&lt;/p&gt;
&lt;h2 id="1-załóż-konto-i-utwórz-instalację"&gt;1. Załóż konto i utwórz instalację&lt;a class="anchor" href="#1-za%c5%82%c3%b3%c5%bc-konto-i-utw%c3%b3rz-instalacj%c4%99"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Wejdź na stronę GbbOptimizer i załóż konto. Następnie dodaj nową instalację wybierając odpowiednią opcję w zależności od Twojego falownika:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Falownik&lt;/th&gt;
 &lt;th&gt;Opcja w menu&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Victron&lt;/strong&gt; (Cerbo GX lub inny moduł GX)&lt;/td&gt;
 &lt;td&gt;„Dodaj nową instalację z Victron System&amp;quot;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Deye&lt;/strong&gt; przez DeyeCloud&lt;/td&gt;
 &lt;td&gt;„Dodaj nową instalację z inwerterem Deye podłączonym do DeyeCloud&amp;quot;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Deye&lt;/strong&gt; przez Solarman&lt;/td&gt;
 &lt;td&gt;„Dodaj nową instalację z Solarman&amp;quot;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Deye&lt;/strong&gt; przez Home Assistant&lt;/td&gt;
 &lt;td&gt;„Dodaj nową instalację z Home Assistant&amp;quot;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Inny falownik&lt;/strong&gt; przez Solarman&lt;/td&gt;
 &lt;td&gt;„Dodaj nową instalację z Solarman&amp;quot;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Inny falownik&lt;/strong&gt; przez Home Assistant&lt;/td&gt;
 &lt;td&gt;„Dodaj nową instalację z Home Assistant&amp;quot;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;SofarSolar&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;„Instalacja z DongleDirect (Deye, SofarSolar)&amp;quot;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote class='book-hint note'&gt;
&lt;p&gt;Jeżeli masz falowniki Deye w układzie Master-Slave, wybierz „Instalacja z Solarman&amp;quot; i dodaj Master jako główny falownik, a Slave jako dodatkowy w parametrach instalacji.&lt;/p&gt;</description></item><item><title>Tryby falowników</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/tryby-falownikow/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/tryby-falownikow/</guid><description>&lt;h1 id="tryby-falowników"&gt;Tryby falowników&lt;a class="anchor" href="#tryby-falownik%c3%b3w"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;GbbOptimizer steruje falownikiem za pomocą czterech podstawowych trybów (operacji protokołu). Każdy falownik implementuje je w inny sposób — szczegółowe mapowania znajdziesz w sekcji &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/mapowania-trybow/"&gt;Mapowania trybów&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="wymagane-dane-z-falownika"&gt;Wymagane dane z falownika&lt;a class="anchor" href="#wymagane-dane-z-falownika"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Falownik musi dostarczać następujące dane:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Pole&lt;/th&gt;
 &lt;th&gt;Opis&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;soc_perc&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#soc" class="glossary-term" title="Stan naładowania — poziom baterii w procentach (0–100%)"&gt;SOC&lt;/a&gt; baterii w procentach (lub &lt;code&gt;V&lt;/code&gt; jeśli sterowanie przez napięcie)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;loads_total_kWh&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Licznik zużycia (kWh, narastająco)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;fromgrid_total_kWh&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Licznik energii pobranej z sieci (kWh)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;togrid_total_kWh&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Licznik energii wysłanej do sieci (kWh)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;pv_total_kWh&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Licznik produkcji PV (kWh)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Opcjonalnie:&lt;/p&gt;</description></item><item><title>Zapytania / Odpowiedzi</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/mqtt-api/zapytania-odpowiedzi/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/mqtt-api/zapytania-odpowiedzi/</guid><description>&lt;h1 id="zapytania-i-odpowiedzi-mqtt"&gt;Zapytania i odpowiedzi MQTT&lt;a class="anchor" href="#zapytania-i-odpowiedzi-mqtt"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;GbbOptimizer obsługuje zapytania request/response przez MQTT. Zewnętrzny program wysyła zapytanie, a GbbOptimizer odpowiada z danymi.&lt;/p&gt;
&lt;h2 id="połączenie"&gt;Połączenie&lt;a class="anchor" href="#po%c5%82%c4%85czenie"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Zewnętrzny program powinien połączyć się z MQTT z parametrami:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Parametr&lt;/th&gt;
 &lt;th&gt;Wartość&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Adres&lt;/td&gt;
 &lt;td&gt;Patrz &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/serwery-mqtt/"&gt;serwery MQTT&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Port&lt;/td&gt;
 &lt;td&gt;8883&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Użytkownik&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{PlantId}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Hasło&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{PlantToken}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;UseTLS&lt;/td&gt;
 &lt;td&gt;true&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;ClientID&lt;/td&gt;
 &lt;td&gt;musi kończyć się na &lt;code&gt;_{PlantId}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="tematy"&gt;Tematy&lt;a class="anchor" href="#tematy"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Kierunek&lt;/th&gt;
 &lt;th&gt;Temat&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Zapytanie →&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{PlantId}/ha_gbb/dataserver/serverrequest&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;← Odpowiedź&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{PlantId}/ha_gbb/dataserver/serverresponse&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote class='book-hint note'&gt;
&lt;p&gt;Dla kompatybilności wstecznej program obsługuje też &lt;code&gt;{PlantId}/dataserver/serverrequest&lt;/code&gt; i &lt;code&gt;{PlantId}/dataserver/serverresponse&lt;/code&gt; (nie rekomendowane).&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 id="odpowiedź-z-błędem"&gt;Odpowiedź z błędem&lt;a class="anchor" href="#odpowied%c5%ba-z-b%c5%82%c4%99dem"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Każde zapytanie może zwrócić błąd:&lt;/p&gt;</description></item><item><title>Automatyzacja</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/integracje/home-assistant/automatyzacja/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/integracje/home-assistant/automatyzacja/</guid><description>&lt;h1 id="automatyzacja-home-assistant"&gt;Automatyzacja Home Assistant&lt;a class="anchor" href="#automatyzacja-home-assistant"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Po skonfigurowaniu &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/integracje/home-assistant/mosquitto-bridge/"&gt;Mosquitto Bridge&lt;/a&gt; możesz tworzyć automatyzacje w Home Assistant, które:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Wysyłają dane&lt;/strong&gt; z czujników HA do GbbOptimizer&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reagują na komendy&lt;/strong&gt; otrzymane z GbbOptimizer&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="wysyłanie-danych-do-gbboptimizer"&gt;Wysyłanie danych do GbbOptimizer&lt;a class="anchor" href="#wysy%c5%82anie-danych-do-gbboptimizer"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;GbbOptimizer oczekuje danych na topiku &lt;code&gt;ha_gbb/sensor&lt;/code&gt; (lokalnie w HA; przez bridge trafia jako &lt;code&gt;&amp;lt;PlantId&amp;gt;/ha_gbb/sensor&lt;/code&gt;).&lt;/p&gt;
&lt;h3 id="wymagane-pola"&gt;Wymagane pola&lt;a class="anchor" href="#wymagane-pola"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Pole&lt;/th&gt;
 &lt;th&gt;Opis&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;soc_perc&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#soc" class="glossary-term" title="Stan naładowania — poziom baterii w procentach (0–100%)"&gt;SOC&lt;/a&gt; baterii w procentach (lub &lt;code&gt;V&lt;/code&gt; jeśli zaznaczono sterowanie przez napięcie)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;loads_total_kWh&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Licznik zużycia (kWh, narastająco)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;fromgrid_total_kWh&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Licznik energii pobranej z sieci (kWh)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;togrid_total_kWh&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Licznik energii wysłanej do sieci (kWh)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;pv_total_kWh&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Licznik produkcji PV (kWh)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="pola-opcjonalne"&gt;Pola opcjonalne&lt;a class="anchor" href="#pola-opcjonalne"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Pole&lt;/th&gt;
 &lt;th&gt;Opis&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ev_charge_total_kWh&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Licznik ładowania EV&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;hp_total_kWh&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Licznik pompy ciepła&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;other1_total_kWh&lt;/code&gt; &amp;hellip; &lt;code&gt;other6_total_kWh&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Dodatkowe liczniki&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="wiele-instalacji-pv"&gt;Wiele instalacji PV&lt;a class="anchor" href="#wiele-instalacji-pv"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Aby wysłać dane z kilku płaszczyzn PV, użyj pola &lt;code&gt;more&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>GbbConnect2</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/instalacja/metody-polaczenia/gbbconnect2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/instalacja/metody-polaczenia/gbbconnect2/</guid><description>&lt;h1 id="gbbconnect2"&gt;GbbConnect2&lt;a class="anchor" href="#gbbconnect2"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#gbbconnect2" class="glossary-term" title="Lokalne oprogramowanie do bezpośredniego połączenia z falownikiem"&gt;GbbConnect2&lt;/a&gt; to oprogramowanie działające w sieci lokalnej, które łączy falownik bezpośrednio z GbbOptimizer przez &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#modbusinmqtt" class="glossary-term" title="Komendy Modbus przesyłane przez MQTT"&gt;ModbusInMqtt&lt;/a&gt;, omijając serwery chmurowe.&lt;/p&gt;
&lt;h2 id="wymagania"&gt;Wymagania&lt;a class="anchor" href="#wymagania"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Komputer z &lt;strong&gt;Windows&lt;/strong&gt; lub kontener &lt;strong&gt;Docker&lt;/strong&gt; działający 24/7 w sieci lokalnej&lt;/li&gt;
&lt;li&gt;Falownik hybrydowy &lt;strong&gt;Deye&lt;/strong&gt; z loggerem (donglem) WiFi&lt;/li&gt;
&lt;li&gt;Stały adres IP loggera w sieci lokalnej&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="konfiguracja-krok-po-kroku"&gt;Konfiguracja krok po kroku&lt;a class="anchor" href="#konfiguracja-krok-po-kroku"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Pobierz i zainstaluj GbbConnect2: &lt;a href="https://github.com/gbbsoft/GbbConnect2"&gt;github.com/gbbsoft/GbbConnect2&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;W GbbOptimizer stwórz nową instalację typu &lt;strong&gt;GbbConnect2&lt;/strong&gt; (lub zmień typ istniejącej)&lt;/p&gt;</description></item><item><title>GoodWe</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/instalacja/falowniki/goodwe/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/instalacja/falowniki/goodwe/</guid><description>&lt;h1 id="goodwe"&gt;GoodWe&lt;a class="anchor" href="#goodwe"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Konfiguracja falownika GoodWe z GbbOptimizer wymaga udostępnienia dostępu przez portal SEMS oraz konfiguracji po stronie GbbOptimizer.&lt;/p&gt;
&lt;h2 id="konfiguracja-krok-po-kroku"&gt;Konfiguracja krok po kroku&lt;a class="anchor" href="#konfiguracja-krok-po-kroku"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Zaloguj się do portalu &lt;strong&gt;SEMS&lt;/strong&gt; (GoodWe)&lt;/li&gt;
&lt;li&gt;W menu &lt;strong&gt;Zarządzanie&lt;/strong&gt;, w danych swojej elektrowni, dodaj email &lt;code&gt;gbbsoft@gbbsoft.pl&lt;/code&gt; jako &lt;strong&gt;Gość&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;W GbbOptimizer dodaj instalację z GoodWe, ale &lt;strong&gt;nie wybieraj SerialNo&lt;/strong&gt; — lista powinna być pusta (z wyjątkiem napisu „Wybierz SerialNo”)&lt;/li&gt;
&lt;li&gt;Na końcu strony zaznacz &lt;strong&gt;Udostępnij instalację pomocy technicznej&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Skontaktuj się z pomocą techniczną (np. przez Discord: &lt;code&gt;gbbsoft&lt;/code&gt;) i podaj &lt;strong&gt;SerialNo&lt;/strong&gt; swojego falownika&lt;/li&gt;
&lt;li&gt;Pomoc techniczna wybierze Twój SerialNo&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote class='book-hint note'&gt;
&lt;p&gt;Konfiguracja GoodWe wymaga jednorazowej interwencji pomocy technicznej w celu powiązania numeru seryjnego falownika z Twoją instalacją.&lt;/p&gt;</description></item><item><title>Hinen</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/mapowania-trybow/hinen/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/mapowania-trybow/hinen/</guid><description>&lt;h1 id="mapowanie-trybów--hinen"&gt;Mapowanie trybów — Hinen&lt;a class="anchor" href="#mapowanie-tryb%c3%b3w--hinen"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Jak tryby GbbOptimizer przekładają się na ustawienia protokołu Hinen.&lt;/p&gt;
&lt;h2 id="tabela-mapowania"&gt;Tabela mapowania&lt;a class="anchor" href="#tabela-mapowania"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Operacja&lt;/th&gt;
 &lt;th&gt;Work Mode&lt;/th&gt;
 &lt;th&gt;Charge/Discharge Enable&lt;/th&gt;
 &lt;th&gt;Charge/Discharge Start/End&lt;/th&gt;
 &lt;th&gt;Charge/Discharge SOC&lt;/th&gt;
 &lt;th&gt;Charge/Discharge Rate&lt;/th&gt;
 &lt;th&gt;AntiBackflow Enable&lt;/th&gt;
 &lt;th&gt;AntiBackflow Limit Rate&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Normal&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Self-consumption&lt;/td&gt;
 &lt;td&gt;nie&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;td&gt;100%&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Charge&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Time period control&lt;/td&gt;
 &lt;td&gt;tak&lt;/td&gt;
 &lt;td&gt;tak&lt;/td&gt;
 &lt;td&gt;SOC%&lt;/td&gt;
 &lt;td&gt;= ChargeLimit / (MaxInverterChargeDC_kW lub MaxBatteryChargeDC_kW) * 100%&lt;/td&gt;
 &lt;td&gt;nie&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Discharge&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Time period control&lt;/td&gt;
 &lt;td&gt;tak&lt;/td&gt;
 &lt;td&gt;tak&lt;/td&gt;
 &lt;td&gt;SOC%&lt;/td&gt;
 &lt;td&gt;= -abs(DischargeLimit) / (MaxInverterChargeDC_kW lub MaxBatteryChargeDC_kW) * 100%. DischargeLimit = Max GridSetpoint / Discharge (W). Jeśli rozładowanie musi być wolniejsze — program oblicza wartość.&lt;/td&gt;
 &lt;td&gt;tak&lt;/td&gt;
 &lt;td&gt;taki sam jak Charge/Discharge Rate, ale &amp;gt; 0&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;DisableCharge&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Time period control&lt;/td&gt;
 &lt;td&gt;tak&lt;/td&gt;
 &lt;td&gt;tak&lt;/td&gt;
 &lt;td&gt;aktualny SOC&lt;/td&gt;
 &lt;td&gt;1%&lt;/td&gt;
 &lt;td&gt;nie&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="uwagi"&gt;Uwagi&lt;a class="anchor" href="#uwagi"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Rate&lt;/strong&gt; jest wyrażany jako procent maksymalnej mocy falownika (lub baterii), a nie w watach&lt;/li&gt;
&lt;li&gt;W trybie &lt;strong&gt;Normal&lt;/strong&gt; system wraca do trybu Self-consumption z SOC = 100% i wyłączonym Charge/Discharge&lt;/li&gt;
&lt;li&gt;W trybie &lt;strong&gt;DisableCharge&lt;/strong&gt; SOC jest ustawiany na aktualny poziom, a Rate na minimalne 1%&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Komendy danych</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/mqtt-api/komendy-danych/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/mqtt-api/komendy-danych/</guid><description>&lt;h1 id="komendy-danych-mqtt"&gt;Komendy danych MQTT&lt;a class="anchor" href="#komendy-danych-mqtt"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Komendy pozwalające zewnętrznym programom zmieniać dane w GbbOptimizer. Każda komenda wysyła dane na dedykowany temat i otrzymuje wynik na &lt;code&gt;{PlantId}/ha_gbb/api/result&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="wynik-komend"&gt;Wynik komend&lt;a class="anchor" href="#wynik-komend"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="mqtt-topic-card mqtt-direction--publish"&gt;
 &lt;div class="mqtt-topic-header"&gt;
 &lt;span class="mqtt-badge mqtt-direction--publish"&gt;PUB&lt;/span&gt;
 &lt;code class="mqtt-topic-path"&gt;{PlantId}/ha_gbb/api/result&lt;/code&gt;&lt;/div&gt;
 &lt;p class="mqtt-topic-description"&gt;Wynik każdej komendy danych — OK lub opis błędu&lt;/p&gt;&lt;/div&gt;

&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Pole&lt;/th&gt;
 &lt;th&gt;Typ&lt;/th&gt;
 &lt;th&gt;Opis&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;OrderId&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;string?&lt;/td&gt;
 &lt;td&gt;Skopiowany z zapytania&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Result&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;OK&amp;quot;&lt;/code&gt; lub opis błędu&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Data&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;object&lt;/td&gt;
 &lt;td&gt;Dane z oryginalnego zapytania&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;details class="mqtt-endpoint" id="endpoint-setmanualprices"&gt;
 &lt;summary class="mqtt-endpoint-summary"&gt;&lt;span class="mqtt-badge mqtt-direction--subscribe"&gt;SUB&lt;/span&gt;&lt;span class="mqtt-endpoint-name"&gt;SetManualPrices&lt;/span&gt;
 &lt;span class="mqtt-endpoint-description"&gt;Ustaw ręczne ceny energii&lt;/span&gt;&lt;/summary&gt;
 &lt;div class="mqtt-endpoint-body"&gt;
 &lt;div class="mqtt-topic-row"&gt;&lt;span class="mqtt-badge mqtt-direction--subscribe"&gt;SUB&lt;/span&gt;&lt;code class="mqtt-topic-path"&gt;{PlantId}/ha_gbb/api/setmanualprices&lt;/code&gt;
 &lt;/div&gt;&lt;div class="mqtt-endpoint-content"&gt;
 &lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Pole&lt;/th&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;Typ&lt;/th&gt;
 &lt;th&gt;Wymagane&lt;/th&gt;
 &lt;th&gt;Opis&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;OrderId&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;nie&lt;/td&gt;
 &lt;td&gt;Tekst skopiowany do odpowiedzi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Data&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;tablica&lt;/td&gt;
 &lt;td&gt;tak&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;Date&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;date&lt;/td&gt;
 &lt;td&gt;tak&lt;/td&gt;
 &lt;td&gt;Data ceny&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;StartHour&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;int (0-23)&lt;/td&gt;
 &lt;td&gt;tak&lt;/td&gt;
 &lt;td&gt;Godzina rozpoczęcia&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;StartMinute&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;int (0-59)&lt;/td&gt;
 &lt;td&gt;nie&lt;/td&gt;
 &lt;td&gt;Minuta (domyślnie 0)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;PurchasePrice&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;decimal&lt;/td&gt;
 &lt;td&gt;nie&lt;/td&gt;
 &lt;td&gt;Cena zakupu&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;TransferPrice&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;decimal&lt;/td&gt;
 &lt;td&gt;nie&lt;/td&gt;
 &lt;td&gt;Cena przesyłu&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;SalePrice&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;decimal&lt;/td&gt;
 &lt;td&gt;nie&lt;/td&gt;
 &lt;td&gt;Cena sprzedaży&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Przykład:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Najlepsze praktyki</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/wprowadzenie/najlepsze-praktyki/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/wprowadzenie/najlepsze-praktyki/</guid><description>&lt;h1 id="najlepsze-praktyki"&gt;Najlepsze praktyki&lt;a class="anchor" href="#najlepsze-praktyki"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Porady i wskazówki od doświadczonych użytkowników GbbOptimizer.&lt;/p&gt;
&lt;h2 id="cierpliwość"&gt;Cierpliwość&lt;a class="anchor" href="#cierpliwo%c5%9b%c4%87"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote class='book-hint warning'&gt;
&lt;p&gt;Najczęstszy błąd nowych użytkowników to zbyt szybkie zmiany konfiguracji. Program potrzebuje czasu na kalibrację.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;GbbOptimizer to program, który uczy cierpliwości. Przez pierwszy tydzień pracy:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#correctionfactor" class="glossary-term" title="Kalibracja dokładności prognozy PV"&gt;Correction Factor&lt;/a&gt; dla prognozy PV się kalibruje&lt;/li&gt;
&lt;li&gt;Profil zużycia zbiera dane historyczne&lt;/li&gt;
&lt;li&gt;Optymalizator &amp;ldquo;uczy się&amp;rdquo; Twojej instalacji&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nie wyłączaj &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#testmode" class="glossary-term" title="Tryb obserwacji — oblicza, ale nie wysyła komend"&gt;Test Mode&lt;/a&gt; wcześniej niż po tygodniu. Daj programowi czas na zebranie danych.&lt;/p&gt;</description></item><item><title>Rozładowanie</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/konfiguracja/rozladowanie/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/konfiguracja/rozladowanie/</guid><description>&lt;h1 id="rozładowanie"&gt;Rozładowanie&lt;a class="anchor" href="#roz%c5%82adowanie"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Moduł rozładowania kontroluje, kiedy i jak energia z baterii jest wysyłana do sieci lub używana do zasilania domu. Kluczowym parametrem jest &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#gridsetpoint" class="glossary-term" title="Docelowa wartość wymiany mocy z siecią w watach"&gt;GridSetpoint&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="gridsetpoint--jak-działa"&gt;GridSetpoint — jak działa&lt;a class="anchor" href="#gridsetpoint--jak-dzia%c5%82a"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#gridsetpoint" class="glossary-term" title="Docelowa wartość wymiany mocy z siecią w watach"&gt;GridSetpoint&lt;/a&gt; określa, ile energii powinna przepływać przez licznik sieci:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Wartość dodatnia&lt;/strong&gt; (np. +100 W) — system pobiera energię z sieci. Nadwyżka z PV idzie do baterii.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wartość ujemna&lt;/strong&gt; (np. -5000 W) — system eksportuje energię do sieci. Najpierw z PV, potem z baterii.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Przykład 1:&lt;/strong&gt; GridSetpoint = +100 W&lt;/p&gt;</description></item><item><title>Tuya</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/integracje/tuya/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/integracje/tuya/</guid><description>&lt;h1 id="integracja-z-tuya"&gt;Integracja z Tuya&lt;a class="anchor" href="#integracja-z-tuya"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;GbbOptimizer może sterować urządzeniami Tuya (np. gniazdkami smart) przez Tuya Cloud API. Wymaga to utworzenia projektu deweloperskiego na platformie Tuya i uzyskania kluczy API.&lt;/p&gt;
&lt;h2 id="uzyskanie-access-id-i-access-secret"&gt;Uzyskanie Access ID i Access Secret&lt;a class="anchor" href="#uzyskanie-access-id-i-access-secret"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="1-utwórz-konto-deweloperskie"&gt;1. Utwórz konto deweloperskie&lt;a class="anchor" href="#1-utw%c3%b3rz-konto-deweloperskie"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Zarejestruj się na &lt;a href="https://platform.tuya.com/"&gt;platform.tuya.com&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="2-utwórz-projekt-cloud"&gt;2. Utwórz projekt Cloud&lt;a class="anchor" href="#2-utw%c3%b3rz-projekt-cloud"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Przejdź do &lt;strong&gt;Cloud&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Development&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Kliknij &lt;strong&gt;Create Cloud Project&lt;/strong&gt; (prawy górny róg)&lt;/li&gt;
&lt;li&gt;Wypełnij formularz:
&lt;ul&gt;
&lt;li&gt;Nazwa projektu — dowolna&lt;/li&gt;
&lt;li&gt;Industry — wybierz odpowiednią branżę&lt;/li&gt;
&lt;li&gt;Development Method — &lt;strong&gt;Smart Home&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Data Center — wybierz najbliższy Twojej lokalizacji&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Na następnym ekranie kliknij &lt;strong&gt;Authorize&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="3-połącz-aplikację-mobilną"&gt;3. Połącz aplikację mobilną&lt;a class="anchor" href="#3-po%c5%82%c4%85cz-aplikacj%c4%99-mobiln%c4%85"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Przejdź do &lt;strong&gt;Devices&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Link App Account&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Kliknij &lt;strong&gt;Add App Account&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Wyświetli się kod QR&lt;/li&gt;
&lt;li&gt;W aplikacji mobilnej Tuya/Smart Life: &lt;strong&gt;Me&lt;/strong&gt; (dolne menu) -&amp;gt; ikona skanowania (prawy górny róg)&lt;/li&gt;
&lt;li&gt;Zeskanuj kod QR&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Po połączeniu w zakładce &lt;strong&gt;All Devices&lt;/strong&gt; pojawi się lista Twoich urządzeń.&lt;/p&gt;</description></item><item><title>Afore</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/instalacja/falowniki/afore/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/instalacja/falowniki/afore/</guid><description>&lt;h1 id="afore"&gt;Afore&lt;a class="anchor" href="#afore"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Konfiguracja falownika Afore z GbbOptimizer. GbbOptimizer steruje falownikiem Afore przez protokół &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#modbus" class="glossary-term" title="Protokół komunikacji szeregowej dla urządzeń przemysłowych"&gt;Modbus&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="mapowanie-trybów-gbboptimizer-na-ustawienia-afore"&gt;Mapowanie trybów GbbOptimizer na ustawienia Afore&lt;a class="anchor" href="#mapowanie-tryb%c3%b3w-gbboptimizer-na-ustawienia-afore"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Operacja&lt;/th&gt;
 &lt;th&gt;Rejestr&lt;/th&gt;
 &lt;th&gt;Wartość&lt;/th&gt;
 &lt;th&gt;Po zakończeniu&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;AC charging maximum SOC&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Ładowanie: docelowy &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#maxsoc" class="glossary-term" title="Maksymalny docelowy stan naładowania"&gt;MaxSOC&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;ACCharging start/end time (1-4)&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Ładowanie: tablica następnych 4 okresów&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Forced charging start/end time (1-4)&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Ładowanie: tablica następnych 4 okresów&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;ACCharging power percentage&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Ładowanie: Input Limit&lt;/td&gt;
 &lt;td&gt;% z MaxBuyPower lub MaxBatteryChargeDC&lt;/td&gt;
 &lt;td&gt;Przywrócenie oryginalnej wartości&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Forced charging power percentage&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Ładowanie: Charge Limit&lt;/td&gt;
 &lt;td&gt;% z MaxBatteryChargeDC&lt;/td&gt;
 &lt;td&gt;Przywrócenie oryginalnej wartości&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Minimum SOC for forced discharge&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Rozładowanie: docelowy &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#minsoc" class="glossary-term" title="Minimalny próg stanu naładowania"&gt;MinSOC&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Forced discharge start time (1-4)&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Rozładowanie: tablica następnych 4 okresów&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Power grid power limit percentage&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Rozładowanie: &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#gridsetpoint" class="glossary-term" title="Docelowa wartość wymiany mocy z siecią w watach"&gt;GridSetpoint&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;% z MaxSellPower lub MaxBatteryDischargeDC&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Maximum charging current&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Blokada ładowania: ustawia &lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;td&gt;Przywrócenie oryginalnej wartości&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="lista-kontrolna"&gt;Lista kontrolna&lt;a class="anchor" href="#lista-kontrolna"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Timing DChg ON/OFF&lt;/strong&gt; = &lt;code&gt;Enable&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PDisChgMax&lt;/strong&gt; (Forced discharge power percentage) = &lt;code&gt;100%&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Ceny</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/konfiguracja/ceny/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/konfiguracja/ceny/</guid><description>&lt;h1 id="ceny"&gt;Ceny&lt;a class="anchor" href="#ceny"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Moduł konfiguracji cen zakupu i sprzedaży energii. Źródła danych cen ustawia się w &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/instalacja/parametry-instalacji/"&gt;parametrach instalacji&lt;/a&gt;, pozostałe parametry — tutaj.&lt;/p&gt;
&lt;h2 id="cena-zakupu"&gt;Cena zakupu&lt;a class="anchor" href="#cena-zakupu"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Wzór:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Cena Zakupu = (Cena zaimportowana × Mnożnik + Cena przesyłu + Koszt Transportu) × VAT/100
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; + (Koszty miesięczne / ilość godzin w miesiącu)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Składnik&lt;/th&gt;
 &lt;th&gt;Opis&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Cena zaimportowana&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;Stałe&lt;/strong&gt; → 0. &lt;strong&gt;Zależna od zaimportowanych cen i kosztów transportu&lt;/strong&gt; → cena ze źródła wskazanego w parametrach instalacji. &lt;strong&gt;Zależna od cen sprzedaży&lt;/strong&gt; → Cena Sprzedaży&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Mnożnik&lt;/td&gt;
 &lt;td&gt;„Zaimportowane Ceny Zakupu pomnóż przez&amp;quot;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Cena przesyłu&lt;/td&gt;
 &lt;td&gt;Cena ze źródła wskazanego w parametrach instalacji (pozycja „Przesył: Taryfa dla cen przesyłu&amp;quot;). 0 jeśli nie wskazano&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Koszt Transportu&lt;/td&gt;
 &lt;td&gt;Cena z tablicy pod przyciskiem „Zmień Koszty Transportu / stałe Ceny Zakupu&amp;quot;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Koszty miesięczne&lt;/td&gt;
 &lt;td&gt;Suma stałych kosztów zakupu — rozbita równo na wszystkie godziny w miesiącu&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="cena-sprzedaży"&gt;Cena sprzedaży&lt;a class="anchor" href="#cena-sprzeda%c5%bcy"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Wzór:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>DongleDirect</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/instalacja/metody-polaczenia/dongle-direct/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/instalacja/metody-polaczenia/dongle-direct/</guid><description>&lt;h1 id="dongledirect"&gt;DongleDirect&lt;a class="anchor" href="#dongledirect"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#dongledirect" class="glossary-term" title="Metoda połączenia przez przekierowanie dongla"&gt;DongleDirect&lt;/a&gt; działa podobnie jak &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#gbbconnect2" class="glossary-term" title="Lokalne oprogramowanie do bezpośredniego połączenia z falownikiem"&gt;GbbConnect2&lt;/a&gt; — łączy falownik z GbbOptimizer, ale &lt;strong&gt;bez instalacji dodatkowego oprogramowania&lt;/strong&gt; w sieci lokalnej. Dongle (logger WiFi) jest przekierowywany bezpośrednio na serwer GbbOptimizer.&lt;/p&gt;
&lt;blockquote class='book-hint warning'&gt;
&lt;p&gt;Od 2026-03-09 zmiana ustawień Dongle może być niemożliwa na niektórych modelach. W takim przypadku konieczny jest reset Dongle i przywrócenie oryginalnych ustawień.&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 id="konfiguracja-krok-po-kroku"&gt;Konfiguracja krok po kroku&lt;a class="anchor" href="#konfiguracja-krok-po-kroku"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Zapamiętaj nazwę serwera GbbOptimizer z adresu przeglądarki (np. &lt;code&gt;gbboptimizer5.gbbsoft.pl&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Zaloguj się do Dongle — musisz znać jego adres IP w sieci lokalnej (login: &lt;code&gt;admin&lt;/code&gt;, hasło: &lt;code&gt;admin&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Przejdź na stronę &lt;code&gt;http://&amp;lt;ip_dongla&amp;gt;/config_hide.html&lt;/code&gt; (zmień ręcznie adres w przeglądarce)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Zrób zdjęcia ekranu&lt;/strong&gt; ze wszystkimi aktualnymi ustawieniami (na wypadek potrzeby przywrócenia!)&lt;/li&gt;
&lt;li&gt;Zmień &lt;strong&gt;Server A Setting&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;Usuń adres IP&lt;/li&gt;
&lt;li&gt;Zapamiętaj oryginalną nazwę domeny Server A&lt;/li&gt;
&lt;li&gt;Zmień domenę na nazwę serwera GbbOptimizer (np. &lt;code&gt;gbboptimizer10.gbbsoft.pl&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Port: &lt;code&gt;10000&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Połączenie: &lt;code&gt;TCP&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Save + Restart&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Zmień &lt;strong&gt;Optional Server Setting&lt;/strong&gt; na te same dane — &lt;strong&gt;Save + Restart&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;W GbbOptimizer zmień typ instalacji na &lt;strong&gt;DongleDirect&lt;/strong&gt; (lub stwórz nową)&lt;/li&gt;
&lt;li&gt;W ustawieniach instalacji wpisz:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Numer seryjny falownika&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Numer seryjny Dongle&lt;/strong&gt; (tylko cyfry)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Oryginalną nazwę domeny Server A&lt;/strong&gt; — jeśli pole będzie puste, GbbOptimizer nie skopiuje danych do Solarman i Solarman/DeyeCloud przestanie działać&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Zapisz i odczekaj &lt;strong&gt;2-5 minut&lt;/strong&gt; (Dongle łączy się z serwerem GbbOptimizer po kilku minutach)&lt;/li&gt;
&lt;li&gt;W logu powinny pojawić się wpisy typu:
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;2025-06-21 11:00:27: From Dongle: A501001047F585579AF6A5005E15
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;2025-06-21 11:00:28: From Server: A50A001017F685579AF6A50001AB745668780000008E15&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="reset-dongle"&gt;Reset Dongle&lt;a class="anchor" href="#reset-dongle"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Jeśli trzeba przywrócić oryginalne ustawienia Dongle:&lt;/p&gt;</description></item><item><title>Sofar</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/mapowania-trybow/sofar/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/mapowania-trybow/sofar/</guid><description>&lt;h1 id="mapowanie-trybów--sofar"&gt;Mapowanie trybów — Sofar&lt;a class="anchor" href="#mapowanie-tryb%c3%b3w--sofar"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Jak tryby GbbOptimizer przekładają się na ustawienia falownika Sofar w trybie pasywnym (Passive Mode).&lt;/p&gt;
&lt;h2 id="tryb-pasywny-passive-mode"&gt;Tryb pasywny (Passive Mode)&lt;a class="anchor" href="#tryb-pasywny-passive-mode"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Operacja&lt;/th&gt;
 &lt;th&gt;Gdes (Grid setpoint)&lt;/th&gt;
 &lt;th&gt;Blo (Battery high)&lt;/th&gt;
 &lt;th&gt;Bup (Battery low)&lt;/th&gt;
 &lt;th&gt;Gdzup (Grid high)&lt;/th&gt;
 &lt;th&gt;Gdzlo (Grid low)&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Normal&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Default &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#gridsetpoint" class="glossary-term" title="Docelowa wartość wymiany mocy z siecią w watach"&gt;GridSetpoint&lt;/a&gt; (menu Discharge)&lt;/td&gt;
 &lt;td&gt;ChargeLimit lub MaxBatteryChargePower lub MaxInverterChargePower&lt;/td&gt;
 &lt;td&gt;-(DischargeLimit lub MaxBatteryDischargePower lub MaxInverterDischargeLimit)&lt;/td&gt;
 &lt;td&gt;MaxBuyPower lub MaxInverterChargePower&lt;/td&gt;
 &lt;td&gt;-(MaxSellPower lub MaxInverterDischargePower)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Charge&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;= Gdzup&lt;/td&gt;
 &lt;td&gt;ChargeLimit lub MaxBatteryChargePower lub MaxInverterChargePower (korygowane, aby osiągnąć docelowy SOC w pełnej godzinie)&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;InputLimit lub MaxBuyPower lub MaxInverterChargePower&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Discharge&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;= Gdzlo&lt;/td&gt;
 &lt;td&gt;= Bup&lt;/td&gt;
 &lt;td&gt;-(DischargeLimit lub MaxBatteryDischargePower lub MaxInverterDischargeLimit) (korygowane, aby osiągnąć docelowy SOC w pełnej godzinie)&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;-(MaxSellPower lub MaxInverterDischargePower)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;DisableCharge&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;MaxBuyPower lub MaxInverterChargePower&lt;/td&gt;
 &lt;td&gt;-(MaxSellPower lub MaxInverterDischargePower)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="parametry"&gt;Parametry&lt;a class="anchor" href="#parametry"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Gdes&lt;/strong&gt; — Grid setpoint: docelowa wartość wymiany energii z siecią&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Blo&lt;/strong&gt; — Battery high: maksymalna moc ładowania baterii&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bup&lt;/strong&gt; — Battery low: maksymalna moc rozładowania baterii (wartość ujemna)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gdzup&lt;/strong&gt; — Grid high: maksymalna moc poboru z sieci&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gdzlo&lt;/strong&gt; — Grid low: maksymalna moc eksportu do sieci (wartość ujemna)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="uwagi"&gt;Uwagi&lt;a class="anchor" href="#uwagi"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote class='book-hint note'&gt;
&lt;p&gt;Jeśli opcja &lt;strong&gt;&amp;ldquo;SofarSolar: Support for 5 parameters (not 3) in PassiveMode&amp;rdquo;&lt;/strong&gt; jest odznaczona, parametry Gdzup i Gdzlo nie są zmieniane (ponieważ nie są dostępne w trybie 3-parametrowym).&lt;/p&gt;</description></item><item><title>Supla</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/integracje/supla/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/integracje/supla/</guid><description>&lt;h1 id="integracja-z-suplą"&gt;Integracja z Suplą&lt;a class="anchor" href="#integracja-z-supl%c4%85"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;GbbOptimizer może sterować urządzeniami &lt;a href="https://www.supla.org/"&gt;Supla&lt;/a&gt; (np. przekaźnikami, gniazdkami) przez linki bezpośrednie (Direct Links).&lt;/p&gt;
&lt;h2 id="konfiguracja"&gt;Konfiguracja&lt;a class="anchor" href="#konfiguracja"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Aby połączyć urządzenie Supla z GbbOptimizer, należy utworzyć &lt;strong&gt;link bezpośredni&lt;/strong&gt; w panelu Supla Cloud:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Zaloguj się do &lt;a href="https://cloud.supla.org/"&gt;cloud.supla.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Przejdź do urządzenia, które chcesz sterować&lt;/li&gt;
&lt;li&gt;Utwórz link bezpośredni (Direct Link) z odpowiednimi uprawnieniami (włącz/wyłącz)&lt;/li&gt;
&lt;li&gt;Skopiuj wygenerowany URL&lt;/li&gt;
&lt;li&gt;Wklej URL w konfiguracji GbbOptimizer w sekcji &lt;strong&gt;IoT&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Supla&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote class='book-hint note'&gt;
&lt;p&gt;Szczegółowy opis tworzenia linków bezpośrednich znajdziesz w &lt;a href="https://gui-generic-builder.supla.io/guide/funkcjonalno%C5%9Bci%20supla/sterowanie-linki-bezposrednie"&gt;dokumentacji Supla&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Tematy Home Assistant</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/mqtt-api/tematy-ha/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/mqtt-api/tematy-ha/</guid><description>&lt;h1 id="tematy-mqtt-dla-home-assistant"&gt;Tematy MQTT dla Home Assistant&lt;a class="anchor" href="#tematy-mqtt-dla-home-assistant"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Tematy używane do komunikacji między GbbOptimizer a Home Assistant / GbbConnect.&lt;/p&gt;
&lt;h2 id="dane-z-home-assistant-do-gbboptimizer"&gt;Dane z Home Assistant do GbbOptimizer&lt;a class="anchor" href="#dane-z-home-assistant-do-gbboptimizer"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="mqtt-topic-card mqtt-direction--subscribe"&gt;
 &lt;div class="mqtt-topic-header"&gt;
 &lt;span class="mqtt-badge mqtt-direction--subscribe"&gt;SUB&lt;/span&gt;
 &lt;code class="mqtt-topic-path"&gt;{PlantId}/ha_gbb/sensor&lt;/code&gt;&lt;span class="mqtt-badge mqtt-qos"&gt;QoS 0&lt;/span&gt;&lt;/div&gt;
 &lt;p class="mqtt-topic-description"&gt;Dane z czujników HA — liczniki narastające&lt;/p&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Wymagane pola:&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Pole&lt;/th&gt;
 &lt;th&gt;Typ&lt;/th&gt;
 &lt;th&gt;Opis&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;soc_perc&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;decimal&lt;/td&gt;
 &lt;td&gt;SOC baterii (%). Użyj &lt;code&gt;V&lt;/code&gt; jeśli zaznaczono „Steruj poprzez V”&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;loads_total_kWh&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;decimal&lt;/td&gt;
 &lt;td&gt;Zużycie — licznik narastający&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;fromgrid_total_kWh&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;decimal&lt;/td&gt;
 &lt;td&gt;Import z sieci — licznik narastający&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;togrid_total_kWh&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;decimal&lt;/td&gt;
 &lt;td&gt;Eksport do sieci — licznik narastający&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;pv_total_kWh&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;decimal&lt;/td&gt;
 &lt;td&gt;Produkcja PV — licznik narastający&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Opcjonalne pola:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Wykresy</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/integracje/home-assistant/wykresy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/integracje/home-assistant/wykresy/</guid><description>&lt;h1 id="wykresy-w-home-assistant"&gt;Wykresy w Home Assistant&lt;a class="anchor" href="#wykresy-w-home-assistant"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;GbbOptimizer udostępnia interaktywne wykresy (produkcja PV, zużycie, SOC, ceny energii itp.) przez interfejs webowy. Można je osadzić w dashboardzie Home Assistant.&lt;/p&gt;
&lt;h2 id="osadzanie-wykresów"&gt;Osadzanie wykresów&lt;a class="anchor" href="#osadzanie-wykres%c3%b3w"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Użyj karty &lt;strong&gt;Webpage&lt;/strong&gt; (lub &lt;strong&gt;iFrame&lt;/strong&gt;) w dashboardzie HA:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Przejdź do dashboardu HA -&amp;gt; &lt;strong&gt;Edytuj&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Dodaj kartę&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Wybierz kartę &lt;strong&gt;Webpage&lt;/strong&gt; (lub kartę ręczną typu &lt;code&gt;iframe&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;W polu URL wklej adres wykresów z GbbOptimizer&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;type&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;iframe&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;url&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;https://&amp;lt;serwer&amp;gt;.gbbsoft.pl/Charts?PlantId=&amp;lt;PlantId&amp;gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;aspect_ratio&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;16:9&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Zamień &lt;code&gt;&amp;lt;serwer&amp;gt;&lt;/code&gt; i &lt;code&gt;&amp;lt;PlantId&amp;gt;&lt;/code&gt; na odpowiednie wartości Twojej instalacji.&lt;/p&gt;</description></item><item><title>Hinen</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/instalacja/falowniki/hinen/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/instalacja/falowniki/hinen/</guid><description>&lt;h1 id="hinen"&gt;Hinen&lt;a class="anchor" href="#hinen"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Konfiguracja falownika Hinen z GbbOptimizer.&lt;/p&gt;
&lt;h2 id="mapowanie-trybów-gbboptimizer-na-ustawienia-hinen"&gt;Mapowanie trybów GbbOptimizer na ustawienia Hinen&lt;a class="anchor" href="#mapowanie-tryb%c3%b3w-gbboptimizer-na-ustawienia-hinen"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;GbbOptimizer steruje falownikiem Hinen ustawiając odpowiedni &lt;strong&gt;Work Mode&lt;/strong&gt; oraz parametry ładowania/rozładowania.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Operacja GbbOptimizer&lt;/th&gt;
 &lt;th&gt;Work Mode&lt;/th&gt;
 &lt;th&gt;Charge/Discharge Enable&lt;/th&gt;
 &lt;th&gt;Start/End&lt;/th&gt;
 &lt;th&gt;SOC&lt;/th&gt;
 &lt;th&gt;Rate&lt;/th&gt;
 &lt;th&gt;AntiBackflow Enable&lt;/th&gt;
 &lt;th&gt;AntiBackflow Limit Rate&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Normal&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Self-consumption&lt;/td&gt;
 &lt;td&gt;Nie&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;td&gt;100%&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Charge&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Time period control&lt;/td&gt;
 &lt;td&gt;Tak&lt;/td&gt;
 &lt;td&gt;Tak&lt;/td&gt;
 &lt;td&gt;Docelowy SOC%&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;ChargeLimit / (MaxInverterChargeDC lub MaxBatteryChargeDC) * 100%&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Nie&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Discharge&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Time period control&lt;/td&gt;
 &lt;td&gt;Tak&lt;/td&gt;
 &lt;td&gt;Tak&lt;/td&gt;
 &lt;td&gt;Docelowy SOC%&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;DischargeLimit / (MaxInverterChargeDC lub MaxBatteryChargeDC) * 100%&lt;/code&gt; (ujemna wartość)&lt;/td&gt;
 &lt;td&gt;Tak&lt;/td&gt;
 &lt;td&gt;Taki sam jak Rate, ale &amp;gt; 0&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;DisableCharge&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Time period control&lt;/td&gt;
 &lt;td&gt;Tak&lt;/td&gt;
 &lt;td&gt;Tak&lt;/td&gt;
 &lt;td&gt;Bieżący SOC&lt;/td&gt;
 &lt;td&gt;1%&lt;/td&gt;
 &lt;td&gt;Nie&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="uwagi-do-operacji-discharge"&gt;Uwagi do operacji Discharge&lt;a class="anchor" href="#uwagi-do-operacji-discharge"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Wartość &lt;code&gt;DischargeLimit&lt;/code&gt; odpowiada parametrowi „Max &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#gridsetpoint" class="glossary-term" title="Docelowa wartość wymiany mocy z siecią w watach"&gt;GridSetpoint&lt;/a&gt; / Discharge (W)&amp;quot;&lt;/li&gt;
&lt;li&gt;Jeśli rozładowanie musi być wolniejsze, aby wystarczyło na całą godzinę, program automatycznie koryguje tę wartość&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AntiBackflow&lt;/strong&gt; jest włączany podczas rozładowania, aby kontrolować eksport do sieci&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>ModbusInMqtt</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/mqtt-api/modbus-in-mqtt/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/mqtt-api/modbus-in-mqtt/</guid><description>&lt;h1 id="protokół-modbusinmqtt"&gt;Protokół ModbusInMqtt&lt;a class="anchor" href="#protok%c3%b3%c5%82-modbusinmqtt"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Protokół komunikacji między GbbOptimizer a &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#gbbconnect2" class="glossary-term" title="Lokalne oprogramowanie do bezpośredniego połączenia z falownikiem"&gt;GbbConnect2&lt;/a&gt; — transfer komend Modbus przez MQTT.&lt;/p&gt;
&lt;h2 id="gbboptimizer--gbbconnect2"&gt;GbbOptimizer → GbbConnect2&lt;a class="anchor" href="#gbboptimizer--gbbconnect2"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="mqtt-topic-card mqtt-direction--publish"&gt;
 &lt;div class="mqtt-topic-header"&gt;
 &lt;span class="mqtt-badge mqtt-direction--publish"&gt;PUB&lt;/span&gt;
 &lt;code class="mqtt-topic-path"&gt;{PlantId}/ModbusInMqtt/toDevice&lt;/code&gt;&lt;/div&gt;
 &lt;p class="mqtt-topic-description"&gt;Komendy Modbus wysyłane do GbbConnect2&lt;/p&gt;&lt;/div&gt;

&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Pole&lt;/th&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;Typ&lt;/th&gt;
 &lt;th&gt;Wymagane&lt;/th&gt;
 &lt;th&gt;Opis&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;OrderId&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;nie&lt;/td&gt;
 &lt;td&gt;Tekst skopiowany do odpowiedzi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Lines&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;tablica&lt;/td&gt;
 &lt;td&gt;tak&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;LineNo&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;int&lt;/td&gt;
 &lt;td&gt;tak&lt;/td&gt;
 &lt;td&gt;Numer linii&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;Tag&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;nie&lt;/td&gt;
 &lt;td&gt;Dowolny tekst skopiowany do odpowiedzi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;Timestamp&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;int&lt;/td&gt;
 &lt;td&gt;nie&lt;/td&gt;
 &lt;td&gt;Czas Unix UTC (sekundy)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;Modbus&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;tak&lt;/td&gt;
 &lt;td&gt;Komenda Modbus do przesłania do falownika&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;LogLevel&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;nie&lt;/td&gt;
 &lt;td&gt;Zmień poziom logów: &lt;code&gt;OnlyErrors&lt;/code&gt;, &lt;code&gt;Min&lt;/code&gt;, &lt;code&gt;Max&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;SendLastLog&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;int&lt;/td&gt;
 &lt;td&gt;nie&lt;/td&gt;
 &lt;td&gt;1 = dołącz logi do odpowiedzi (przyrostowo)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Przykład:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Profile zużycia</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/konfiguracja/profile-zuzycia/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/konfiguracja/profile-zuzycia/</guid><description>&lt;h1 id="profile-zużycia"&gt;Profile zużycia&lt;a class="anchor" href="#profile-zu%c5%bcycia"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Moduł prognozowania zużycia energii przez dom. Zużycie jest podzielone na godziny i dni tygodnia.&lt;/p&gt;
&lt;h2 id="ręczne-wprowadzanie"&gt;Ręczne wprowadzanie&lt;a class="anchor" href="#r%c4%99czne-wprowadzanie"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Wpisz kWh dla każdej godziny i dnia tygodnia bezpośrednio w tabeli.&lt;/p&gt;
&lt;h2 id="import-danych-z-instalacji"&gt;Import danych z instalacji&lt;a class="anchor" href="#import-danych-z-instalacji"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Ustaw okres importu i naciśnij &lt;strong&gt;Importuj z Instalacji&lt;/strong&gt;. Program oblicza średnie zużycie dla każdej godziny i dnia tygodnia na podstawie danych z falownika.&lt;/p&gt;
&lt;h3 id="automatyczny-import"&gt;Automatyczny import&lt;a class="anchor" href="#automatyczny-import"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Zaznacz &lt;strong&gt;Automatycznie importuj dane w nocy&lt;/strong&gt; — program co noc importuje dane z ostatnich 28 dni.&lt;/p&gt;</description></item><item><title>Serwery MQTT</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/serwery-mqtt/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/serwery-mqtt/</guid><description>&lt;h1 id="serwery-mqtt"&gt;Serwery MQTT&lt;a class="anchor" href="#serwery-mqtt"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;GbbOptimizer używa wielu serwerów MQTT do komunikacji z falownikami i integracjami. Serwer przypisany do Twojej instalacji zależy od prefiksu &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#plantid" class="glossary-term" title="Unikalny identyfikator instalacji fotowoltaicznej"&gt;PlantId&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="tabela-serwerów"&gt;Tabela serwerów&lt;a class="anchor" href="#tabela-serwer%c3%b3w"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Serwer aplikacji&lt;/th&gt;
 &lt;th&gt;Serwer MQTT&lt;/th&gt;
 &lt;th&gt;Prefiks PlantId&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;gbboptimizer.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;gbboptimizer-mqtt.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;(brak)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;gbboptimizer2.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;gbboptimizer2-mqtt.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;B&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;gbboptimizer3.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;gbboptimizer3-mqtt.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;C&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;gbboptimizer4.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;gbboptimizer4-mqtt.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;D&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;gbboptimizer5.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;gbboptimizer5-mqtt.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;E&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;gbboptimizer6.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;gbboptimizer6-mqtt.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;F&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;gbboptimizer7.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;gbboptimizer7-mqtt.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;G&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;gbboptimizer8.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;gbboptimizer8-mqtt.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;H&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;gbboptimizer9.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;gbboptimizer9-mqtt.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;I&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;gbboptimizer10.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;gbboptimizer10-mqtt.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;J&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;gbboptimizer11.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;gbboptimizer11-mqtt.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;K&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;gbboptimizer12.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;gbboptimizer12-mqtt.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;L&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;gbboptimizer13.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;gbboptimizer13-mqtt.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;M&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;gbboptimizer14.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;gbboptimizer14-mqtt.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;N&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;gbboptimizer15.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;gbboptimizer15-mqtt.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;O&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;gbboptimizer16.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;gbboptimizer16-mqtt.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;P&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;gbboptimizer17.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;gbboptimizer17-mqtt.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;Q&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;gbboptimizer18.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;gbboptimizer18-mqtt.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;R&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;gbboptimizer19.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;gbboptimizer19-mqtt.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;S&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;gbboptimizer20.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;gbboptimizer20-mqtt.gbbsoft.pl&lt;/td&gt;
 &lt;td&gt;T&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="jak-odczytać-serwer-z-plantid"&gt;Jak odczytać serwer z PlantId&lt;a class="anchor" href="#jak-odczyta%c4%87-serwer-z-plantid"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Prefiks &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#plantid" class="glossary-term" title="Unikalny identyfikator instalacji fotowoltaicznej"&gt;PlantId&lt;/a&gt; (pierwsza litera) wskazuje, z którego serwera korzysta Twoja instalacja:&lt;/p&gt;</description></item><item><title>Victron</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/mapowania-trybow/victron-pasywny/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/mapowania-trybow/victron-pasywny/</guid><description>&lt;h1 id="mapowanie-trybów--victron"&gt;Mapowanie trybów — Victron&lt;a class="anchor" href="#mapowanie-tryb%c3%b3w--victron"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;span class="badge" style="background-color: #3498db; color: white; padding: 2px 8px; border-radius: 4px; font-size: 0.75em; font-weight: 600; text-transform: uppercase; vertical-align: middle;"&gt;victron-only&lt;/span&gt;

&lt;p&gt;Falowniki Victron są sterowane przez &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#ess" class="glossary-term" title="System magazynowania energii"&gt;ESS&lt;/a&gt; (Energy Storage System) za pośrednictwem &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#vrm" class="glossary-term" title="Portal zdalnego zarządzania Victron"&gt;VRM&lt;/a&gt; i MQTT.&lt;/p&gt;
&lt;h2 id="tryb-ess"&gt;Tryb ESS&lt;a class="anchor" href="#tryb-ess"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;GbbOptimizer steruje systemem Victron poprzez harmonogramy ESS (ESS Schedules) na Cerbo GX. Harmonogramy określają:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tryb pracy&lt;/strong&gt; — ładowanie, rozładowanie, normalna praca&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Docelowy SOC&lt;/strong&gt; — do jakiego poziomu ładować/rozładowywać&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limit mocy&lt;/strong&gt; — maksymalna moc ładowania/rozładowania&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Okno czasowe&lt;/strong&gt; — godziny obowiązywania harmonogramu&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="konfiguracja-wstępna"&gt;Konfiguracja wstępna&lt;a class="anchor" href="#konfiguracja-wst%c4%99pna"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;W portalu &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#vrm" class="glossary-term" title="Portal zdalnego zarządzania Victron"&gt;VRM&lt;/a&gt; włącz dostęp zdalny do Cerbo&lt;/li&gt;
&lt;li&gt;W &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#ess" class="glossary-term" title="System magazynowania energii"&gt;ESS&lt;/a&gt; ustaw tryb &lt;strong&gt;&amp;ldquo;Optimized (without BatteryLife)&amp;rdquo;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Upewnij się, że GbbOptimizer ma poprawne dane VRM (&lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#plantid" class="glossary-term" title="Unikalny identyfikator instalacji fotowoltaicznej"&gt;PlantId&lt;/a&gt;, &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#planttoken" class="glossary-term" title="Token uwierzytelniający do MQTT i API"&gt;PlantToken&lt;/a&gt;)&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote class='book-hint note'&gt;
&lt;p&gt;Jeśli &lt;strong&gt;Battery Life&lt;/strong&gt; jest włączony w ESS, GbbOptimizer nie będzie mógł w pełni kontrolować baterii. Wyłącz go i ustaw na &lt;strong&gt;&amp;ldquo;Optimized (without BatteryLife)&amp;rdquo;&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Extra Zużycie / EV</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/konfiguracja/dodatkowe-obciazenia-ev/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/konfiguracja/dodatkowe-obciazenia-ev/</guid><description>&lt;h1 id="extra-zużycie--ev"&gt;Extra Zużycie / EV&lt;a class="anchor" href="#extra-zu%c5%bcycie--ev"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Extra Zużycie to część zużycia energii, która &lt;strong&gt;nie wchodzi do średniej domu&lt;/strong&gt; — np. ładowanie samochodu elektrycznego czy pompa ciepła. Celem jest wydzielenie nieprzewidywalnej, zmiennej części ze standardowego zużycia.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Przepływ danych:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Liczniki IoT → Extra Zużycie → &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/konfiguracja/zyski/"&gt;Zyski&lt;/a&gt; → &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/konfiguracja/prognoza-baterii/"&gt;Prognoza baterii&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ładowarki EV → Extra Zużycie → Zyski → Prognoza baterii&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="autokonwerter"&gt;AutoKonwerter&lt;a class="anchor" href="#autokonwerter"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;AutoKonwerter wykrywa piki w zużyciu i automatycznie zamienia je na ładowanie samochodu (lub inny typ Extra Zużycia).&lt;/p&gt;</description></item><item><title>Najczęstsze błędy</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/najczestsze-bledy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/najczestsze-bledy/</guid><description>&lt;h1 id="najczęstsze-błędy"&gt;Najczęstsze błędy&lt;a class="anchor" href="#najcz%c4%99stsze-b%c5%82%c4%99dy"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Lista najczęściej spotykanych komunikatów o błędach w GbbOptimizer, ich źródeł i możliwych rozwiązań.&lt;/p&gt;
&lt;h2 id="solarman"&gt;Solarman&lt;a class="anchor" href="#solarman"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Komunikat&lt;/th&gt;
 &lt;th&gt;Opis&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;SolarmanError: Solarman timeout!&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Solarman nie może wysłać danych do falownika. Sprawdź sieć lokalną.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Solarman error: 2101040-device not found&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Falownik nie wysyła danych do Solarmana. Sprawdź połączenie sieciowe falownika.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Response status code: 503 / 500 / 504&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;API Solarman nie działa poprawnie. Problem po stronie Solarmana — poczekaj i spróbuj ponownie.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="deyecloud"&gt;DeyeCloud&lt;a class="anchor" href="#deyecloud"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Komunikat&lt;/th&gt;
 &lt;th&gt;Opis&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;DeyeCloud error: timeout&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;DeyeCloud nie może wysłać danych do falownika. Sprawdź sieć lokalną.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;DeyeCloud error: 2104006-device offline&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Falownik nie wysyła danych do DeyeCloud. Sprawdź połączenie sieciowe falownika.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;DeyeCloud error: 2101042-auth no operation permission&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Za mało uprawnień dla konta DeyeCloud (np. konto nadane przez instalatora). Skontaktuj się z instalatorem w celu nadania pełnych uprawnień.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="gbbconnect2"&gt;GbbConnect2&lt;a class="anchor" href="#gbbconnect2"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Komunikat&lt;/th&gt;
 &lt;th&gt;Opis&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Mqtt to GbbConnect2: timeout!&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;GbbOptimizer nie może się połączyć z lokalnym &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#gbbconnect2" class="glossary-term" title="Lokalne oprogramowanie do bezpośredniego połączenia z falownikiem"&gt;GbbConnect2&lt;/a&gt;. Sprawdź, czy GbbConnect2 jest uruchomiony.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;GbbConnect2Error: Connection timed out 192.168.x.xx:8899&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#gbbconnect2" class="glossary-term" title="Lokalne oprogramowanie do bezpośredniego połączenia z falownikiem"&gt;GbbConnect2&lt;/a&gt; nie może się połączyć z donglem Deye. Sprawdź, czy dongle jest w sieci.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="victron"&gt;Victron&lt;a class="anchor" href="#victron"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Komunikat&lt;/th&gt;
 &lt;th&gt;Opis&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Victron Mqtt: timeout! (15 sec)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;GbbOptimizer nie może się połączyć z Cerbo przez serwery MQTT Victrona. Sprawdź sieć lokalną i dostęp zdalny w &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#vrm" class="glossary-term" title="Portal zdalnego zarządzania Victron"&gt;VRM&lt;/a&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Error during checking whether Schedules reached Cerbo successfully&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Harmonogramy ESS nie dotarły do Cerbo. Sprawdź połączenie Cerbo z internetem.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="ceny-energii"&gt;Ceny energii&lt;a class="anchor" href="#ceny-energii"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Komunikat&lt;/th&gt;
 &lt;th&gt;Źródło&lt;/th&gt;
 &lt;th&gt;Opis&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Get Prices: The SSL connection could not be established&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;ENTSO-E&lt;/td&gt;
 &lt;td&gt;API ENTSO-E z cenami nie działa. Problem po stronie dostawcy.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Get Prices: Proba polaczenia nie powiodla sie&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;ENTSO-E&lt;/td&gt;
 &lt;td&gt;API ENTSO-E niedostępne.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Get Prices: HTTP POST ... Gateway timeout / 502 Bad Gateway&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Tibber&lt;/td&gt;
 &lt;td&gt;API Tibber z cenami nie działa.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Get Prices: Response status code: 502 (Bad Gateway)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;AU Amber&lt;/td&gt;
 &lt;td&gt;API Amber z cenami nie działa.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="inne"&gt;Inne&lt;a class="anchor" href="#inne"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Komunikat&lt;/th&gt;
 &lt;th&gt;Źródło&lt;/th&gt;
 &lt;th&gt;Opis&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Solcast.com: Too many requests&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Solcast&lt;/td&gt;
 &lt;td&gt;Osiągnięty limit 10 zapytań dziennie do Solcast.com. Poczekaj do północy.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ERROR from Cache: Response status code: 500&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Pstryk&lt;/td&gt;
 &lt;td&gt;Błąd po stronie API Pstryka.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;B0220-System function downgrade&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Hinen&lt;/td&gt;
 &lt;td&gt;API Hinen jest aktualizowane. Poczekaj aż aktualizacja się zakończy.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote class='book-hint note'&gt;
&lt;p&gt;Komunikaty o błędach są wysyłane e-mailem z programu. Większość błędów typu &amp;ldquo;timeout&amp;rdquo; i &amp;ldquo;device offline&amp;rdquo; jest związana z problemami sieci lokalnej — sprawdź połączenie falownika i routera.&lt;/p&gt;</description></item><item><title>Sofar</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/instalacja/falowniki/sofar/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/instalacja/falowniki/sofar/</guid><description>&lt;h1 id="sofar"&gt;Sofar&lt;a class="anchor" href="#sofar"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Konfiguracja falownika Sofar z GbbOptimizer. Falownik Sofar jest sterowany w trybie &lt;strong&gt;Passive Mode&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id="mapowanie-trybów-gbboptimizer-na-ustawienia-sofar-passive-mode"&gt;Mapowanie trybów GbbOptimizer na ustawienia Sofar (Passive Mode)&lt;a class="anchor" href="#mapowanie-tryb%c3%b3w-gbboptimizer-na-ustawienia-sofar-passive-mode"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Program ustawia &lt;code&gt;StorageMode = 3&lt;/code&gt; (Passive Mode) oraz (przy obsłudze 5 parametrów) &lt;code&gt;ManagementMode = 1&lt;/code&gt; (Manual).&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Operacja&lt;/th&gt;
 &lt;th&gt;Gdes (Grid setpoint)&lt;/th&gt;
 &lt;th&gt;Blo (battery high)&lt;/th&gt;
 &lt;th&gt;Bup (battery low)&lt;/th&gt;
 &lt;th&gt;Gdzup (grid high)&lt;/th&gt;
 &lt;th&gt;Gdzlo (grid low)&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Normal&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Domyślny &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#gridsetpoint" class="glossary-term" title="Docelowa wartość wymiany mocy z siecią w watach"&gt;GridSetpoint&lt;/a&gt; (z menu Discharge)&lt;/td&gt;
 &lt;td&gt;ChargeLimit lub MaxBatteryChargePower lub MaxInverterChargePower&lt;/td&gt;
 &lt;td&gt;-(DischargeLimit lub MaxBatteryDischargePower lub MaxInverterDischargeLimit)&lt;/td&gt;
 &lt;td&gt;MaxBuyPower lub MaxInverterChargePower&lt;/td&gt;
 &lt;td&gt;-(MaxSellPower lub MaxInverterDischargePower)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Charge&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;= Gdzup&lt;/td&gt;
 &lt;td&gt;ChargeLimit (korygowane, aby osiągnąć TargetSOC w pełnej godzinie)&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;InputLimit lub MaxBuyPower lub MaxInverterChargePower&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Discharge&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;= Gdzlo&lt;/td&gt;
 &lt;td&gt;= Bup&lt;/td&gt;
 &lt;td&gt;-(DischargeLimit, korygowane, aby osiągnąć TargetSOC w pełnej godzinie)&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;-(MaxSellPower lub MaxInverterDischargePower)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;DisableCharge&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;MaxBuyPower lub MaxInverterChargePower&lt;/td&gt;
 &lt;td&gt;-(MaxSellPower lub MaxInverterDischargePower)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote class='book-hint note'&gt;
&lt;p&gt;Jeśli opcja „SofarSolar: Support for 5 parameters (not 3) in PassiveMode&amp;quot; jest odznaczona, parametry &lt;strong&gt;Gdzup&lt;/strong&gt; i &lt;strong&gt;Gdzlo&lt;/strong&gt; nie są zmieniane (ponieważ nie są dostępne w trybie 3-parametrowym).&lt;/p&gt;</description></item><item><title>Tematy EVCC</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/mqtt-api/tematy-evcc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/mqtt-api/tematy-evcc/</guid><description>&lt;h1 id="tematy-mqtt-dla-evcc"&gt;Tematy MQTT dla EVCC&lt;a class="anchor" href="#tematy-mqtt-dla-evcc"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Integracja GbbOptimizer z &lt;a href="https://evcc.io/"&gt;evcc.io&lt;/a&gt; przez MQTT.&lt;/p&gt;
&lt;h2 id="konfiguracja"&gt;Konfiguracja&lt;a class="anchor" href="#konfiguracja"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;W brokerze Mosquitto (lub HA) stwórz plik konfiguracji bridge:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;4
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;5
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;connection GbbOptimizer_&lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;PlantId&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;remote_username &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;PlantId&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;remote_password &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;PlantToken&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;address &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;adres MQTT&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;:&lt;span style="color:#ae81ff"&gt;8883&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;bridge_capath &lt;span style="color:#f92672"&gt;/&lt;/span&gt;etc&lt;span style="color:#f92672"&gt;/&lt;/span&gt;ssl&lt;span style="color:#f92672"&gt;/&lt;/span&gt;certs
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;topic &lt;span style="color:#75715e"&gt;# both 2 evcc/loadpoints/ &amp;lt;PlantId&amp;gt;/evcc/site/loadpoints/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Adresy serwerów MQTT — patrz &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/serwery-mqtt/"&gt;serwery MQTT&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="dane-z-evcc-do-gbboptimizer"&gt;Dane z EVCC do GbbOptimizer&lt;a class="anchor" href="#dane-z-evcc-do-gbboptimizer"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="mqtt-topic-card mqtt-direction--subscribe"&gt;
 &lt;div class="mqtt-topic-header"&gt;
 &lt;span class="mqtt-badge mqtt-direction--subscribe"&gt;SUB&lt;/span&gt;
 &lt;code class="mqtt-topic-path"&gt;{PlantId}/evcc/site/statistic/total/chargedKWh&lt;/code&gt;&lt;/div&gt;
 &lt;p class="mqtt-topic-description"&gt;Całkowita energia pobrana przez ładowarkę (kWh)&lt;/p&gt;</description></item><item><title>Pompa ciepła / Klimatyzacja</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/konfiguracja/pompa-ciepla/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/konfiguracja/pompa-ciepla/</guid><description>&lt;h1 id="prognoza-pompy-ciepła--klimatyzacji"&gt;Prognoza pompy ciepła / klimatyzacji&lt;a class="anchor" href="#prognoza-pompy-ciep%c5%82a--klimatyzacji"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Moduł prognozowania zużycia pompy ciepła (PC) lub klimatyzacji na podstawie temperatury zewnętrznej.&lt;/p&gt;
&lt;h2 id="dlaczego-osobny-moduł"&gt;Dlaczego osobny moduł?&lt;a class="anchor" href="#dlaczego-osobny-modu%c5%82"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Pompy ciepła i klimatyzacja (podobnie jak ładowarki EV) nie działają zgodnie z rytmem dnia — zależą od temperatury. Dlatego lepiej je &lt;strong&gt;wykluczyć ze średniej&lt;/strong&gt; w module &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/konfiguracja/profile-zuzycia/"&gt;Profile zużycia&lt;/a&gt; i umieścić w &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/konfiguracja/dodatkowe-obciazenia-ev/"&gt;Extra Zużycie&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="konfiguracja-krok-po-kroku"&gt;Konfiguracja krok po kroku&lt;a class="anchor" href="#konfiguracja-krok-po-kroku"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Wpisz &lt;strong&gt;szerokość geograficzną i długość geograficzną&lt;/strong&gt; w &lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/instalacja/parametry-instalacji/"&gt;parametrach instalacji&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Zaimportuj prognozę pogody&lt;/li&gt;
&lt;li&gt;Naciśnij &lt;strong&gt;Parametry PC&lt;/strong&gt; i wpisz zużycie kWh pompy/klimatyzacji na każdą godzinę (minimum 2 wartości dla różnych temperatur)&lt;/li&gt;
&lt;li&gt;Naciśnij &lt;strong&gt;Policz prognozę PC&lt;/strong&gt; i sprawdź wyniki&lt;/li&gt;
&lt;li&gt;Naciśnij &lt;strong&gt;Eksportuj prognozę PC do modułu Extra Zużycie&lt;/strong&gt; (menu: Profile Zużycia → Extra Zużycia → Filtr: „Typ&amp;quot; = „Pompa Ciepła&amp;quot;)&lt;/li&gt;
&lt;li&gt;Włącz zadania godzinowe: &lt;strong&gt;Importuj prognozę pogody&lt;/strong&gt;, &lt;strong&gt;Oblicz prognozę PC&lt;/strong&gt;, &lt;strong&gt;Eksportuj prognozę PC do modułu Extra Zużycie&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="parametry-pc--tabela-temperatury-vs-zużycie"&gt;Parametry PC — tabela temperatury vs. zużycie&lt;a class="anchor" href="#parametry-pc--tabela-temperatury-vs-zu%c5%bcycie"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Dla każdej godziny podaj, ile kWh zużywa PC/klimatyzacja przy danej temperaturze zewnętrznej.&lt;/p&gt;</description></item><item><title>Zyski</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/konfiguracja/zyski/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/konfiguracja/zyski/</guid><description>&lt;h1 id="zyski"&gt;Zyski&lt;a class="anchor" href="#zyski"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Moduł zbiera dane z instalacji i oblicza zyski z fotowoltaiki. Importuj dane ręcznie przynajmniej raz dziennie lub zaznacz &lt;strong&gt;Automatycznie importuj dane z Instalacji&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Dane wyświetlane są wg godzin, dni lub miesięcy:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dane godzinowe — przechowywane przez &lt;strong&gt;2 miesiące&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Dane dzienne — przechowywane przez &lt;strong&gt;2 lata&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Dane miesięczne — przechowywane &lt;strong&gt;na zawsze&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="kolumny--zysk"&gt;Kolumny — Zysk&lt;a class="anchor" href="#kolumny--zysk"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Kolumna&lt;/th&gt;
 &lt;th&gt;Opis&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Dzień / Godzina&lt;/td&gt;
 &lt;td&gt;Dzień i godzina&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Wartość zysku&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;= Wartość Zużycia - Wartość Inwertera - (Wartość Zakupu - Zmiana Wartości baterii) + Wartość Sprzedaży&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Zysk / Zużycie&lt;/td&gt;
 &lt;td&gt;KPI: Wartość zysku / Zużycie kWh&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Profit / Solar&lt;/td&gt;
 &lt;td&gt;KPI: Wartość zysku / PV kWh&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Koszt energii&lt;/td&gt;
 &lt;td&gt;Wartość Zakupu - Wartość Sprzedaży&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Z sieci (kWh)&lt;/td&gt;
 &lt;td&gt;Ile pobrano z sieci&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Z sieci zbilansowane (kWh)&lt;/td&gt;
 &lt;td&gt;Pobrano po bilansowaniu godzinowym (dla Polski)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Cena Zakupu&lt;/td&gt;
 &lt;td&gt;Cena zakupu energii&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Wartość Zakupu&lt;/td&gt;
 &lt;td&gt;Z sieci [zbilansowane] × Cena Zakupu + Koszt Miesięczny&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Zakup / Produkcja&lt;/td&gt;
 &lt;td&gt;KPI: Wartość Zakupu / Wartość Zużycia&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;(Zakup - Sprzedaż) / Produkcja&lt;/td&gt;
 &lt;td&gt;KPI: ile procent rachunku za energię zapłacisz&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Do sieci (kWh)&lt;/td&gt;
 &lt;td&gt;Ile wysłano do sieci&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Do sieci zbilansowane (kWh)&lt;/td&gt;
 &lt;td&gt;Wysłano po bilansowaniu godzinowym (dla Polski)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Cena Sprzedaży&lt;/td&gt;
 &lt;td&gt;Cena sprzedaży energii&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Wartość Sprzedaży&lt;/td&gt;
 &lt;td&gt;Do sieci [zbilansowane] × Cena Sprzedaży − Wartość energii wysłanej do sieci&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Zużycie (kWh)&lt;/td&gt;
 &lt;td&gt;Zużycie prądu przez dom&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Cena Zużycia&lt;/td&gt;
 &lt;td&gt;Cena energii zużytej przez dom (wliczając falownik)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Wartość Zużycia&lt;/td&gt;
 &lt;td&gt;Zużycie kWh × Cena Zużycia&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Zużycie Inwertera (kWh)&lt;/td&gt;
 &lt;td&gt;Zużycie prądu przez falownik&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Wartość Inwerter&lt;/td&gt;
 &lt;td&gt;Zużycie Inwertera kWh × Cena Zużycia&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Autokonsumpcja&lt;/td&gt;
 &lt;td&gt;KPI: 1 - (Do sieci kWh / PV kWh) — ile energii z PV nie idzie do sieci&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Samowystarczalność&lt;/td&gt;
 &lt;td&gt;KPI: PV / Zużycie — ile % energii z PV pokrywa zużycie&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/referencje/slowniczek/#rte" class="glossary-term" title="Sprawność cyklu ładowania/rozładowania"&gt;RTE&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;KPI: Do sieci kWh / (Z sieci kWh + PV kWh - Zużycie kWh)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;PV (kWh)&lt;/td&gt;
 &lt;td&gt;Produkcja PV&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Do baterii (kWh)&lt;/td&gt;
 &lt;td&gt;Energia wysłana do baterii (przed konwersją na DC)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;min/max/śred SOC (%)&lt;/td&gt;
 &lt;td&gt;Minimalny, maksymalny i średni SOC baterii&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="kolumny--wartość-energii-w-baterii"&gt;Kolumny — Wartość energii w baterii&lt;a class="anchor" href="#kolumny--warto%c5%9b%c4%87-energii-w-baterii"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Kolumna&lt;/th&gt;
 &lt;th&gt;Opis&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Pocz. SOC (%)&lt;/td&gt;
 &lt;td&gt;Początkowy SOC (obliczany z MinSOC i MaxSOC, jeśli instalacja nie podaje)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Koń SOC (%)&lt;/td&gt;
 &lt;td&gt;Końcowy SOC&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Zmiana Baterii (kWh)&lt;/td&gt;
 &lt;td&gt;&amp;gt;0 ładowanie, &amp;lt;0 rozładowanie — wyliczone z KońSOC - PoczSOC&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Ładowanie z sieci (kWh)&lt;/td&gt;
 &lt;td&gt;Energia użyta do ładowania z sieci (po stronie AC)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Ładowanie z PV (kWh)&lt;/td&gt;
 &lt;td&gt;Energia użyta do ładowania z PV (po stronie AC)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Straty na ładowaniu (kWh)&lt;/td&gt;
 &lt;td&gt;Różnica między DC a AC podczas ładowania&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Wydajność ładowania (%)&lt;/td&gt;
 &lt;td&gt;1 - Straty / (Ładowanie z sieci + z PV)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Rozładowanie do sieci (kWh)&lt;/td&gt;
 &lt;td&gt;Energia z baterii do sieci (AC)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Rozładowanie do zużycia (kWh)&lt;/td&gt;
 &lt;td&gt;Energia z baterii do domu (AC)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Straty na rozładowaniu (kWh)&lt;/td&gt;
 &lt;td&gt;Różnica DC/AC podczas rozładowania&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Wydajność rozładowania (%)&lt;/td&gt;
 &lt;td&gt;1 - Straty / (Rozładowanie do sieci + do zużycia)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Pocz / Koń kWh w baterii&lt;/td&gt;
 &lt;td&gt;Energia w baterii ponad MinSOC&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Pocz / Koń Wartość (PLN)&lt;/td&gt;
 &lt;td&gt;Wartość energii w baterii&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Zmiana Wartości baterii (PLN)&lt;/td&gt;
 &lt;td&gt;Rozładowanie: kWh × Średnia cena (poprzednia godzina). Ładowanie: kWh × Cena Zakupu&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Średnia końcowa cena (PLN)&lt;/td&gt;
 &lt;td&gt;Koń Wartość / Koń kWh w baterii&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;MinSOC (%)&lt;/td&gt;
 &lt;td&gt;Zapamiętana wartość „Minimalna SOC baterii %&amp;quot; z parametrów instalacji&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="kolumny--extra-zużycie"&gt;Kolumny — Extra Zużycie&lt;a class="anchor" href="#kolumny--extra-zu%c5%bcycie"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Kolumna&lt;/th&gt;
 &lt;th&gt;Opis&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Cena Extra Zużycia (PLN)&lt;/td&gt;
 &lt;td&gt;Średnia cena kWh: średnia z 0 (PV), Średniej ceny baterii i Ceny Zakupu (w proporcjach użycia)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Samochód elektryczny (kWh / PLN)&lt;/td&gt;
 &lt;td&gt;Energia i wartość ładowania EV&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Pompa ciepła (kWh / PLN)&lt;/td&gt;
 &lt;td&gt;Energia i wartość pompy ciepła&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Inne1 (kWh / PLN)&lt;/td&gt;
 &lt;td&gt;Energia i wartość „Inne1&amp;quot;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Inne2 (kWh / PLN)&lt;/td&gt;
 &lt;td&gt;Energia i wartość „Inne2&amp;quot;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;</description></item></channel></rss>