<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>MQTT API on GbbOptimizer — Podręcznik</title><link>https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/mqtt-api/</link><description>Recent content in MQTT API on GbbOptimizer — Podręcznik</description><generator>Hugo</generator><language>pl</language><atom:link href="https://krzysztofhajdamowicz.github.io/rewrite-GbbOptimizer-manual/mqtt-api/index.xml" rel="self" type="application/rss+xml"/><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>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>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>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>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>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></channel></rss>