{"id":13064,"date":"2026-09-18T18:25:00","date_gmt":"2026-09-18T16:25:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=13064"},"modified":"2026-08-31T15:16:13","modified_gmt":"2026-08-31T13:16:13","slug":"tutorial-odczyt-rejestrow-sunspec-z-falownika-pv-przez-modbus-tcp","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/smart-home-pl\/tutorials-pl-smart-home-pl\/tutorial-odczyt-rejestrow-sunspec-z-falownika-pv-przez-modbus-tcp\/","title":{"rendered":"Tutorial: Odczyt rejestr\u00f3w SunSpec z falownika PV przez Modbus TCP"},"content":{"rendered":"<p>Numer rejestru znaleziony we wpisie na forum dzia\u0142a. Dzia\u0142a do najbli\u017cszego firmware&#8217;u, do kolejnego modelu tego samego falownika, do chwili do\u0142\u0105czenia drugiego urz\u0105dzenia odk\u0142adaj\u0105cego t\u0119 sam\u0105 warto\u015b\u0107 gdzie indziej. Wtedy numer przestaje si\u0119 zgadza\u0107 i nic tego nie m\u00f3wi: Modbus podaje to, co stoi pod tym adresem, a liczby prawdopodobnej nie da si\u0119 odr\u00f3\u017cni\u0107 od poprawnej.<\/p>\n<p>Z tego powodu istnieje SunSpec. To spis po\u0142o\u017cony na przestrzeni rejestr\u00f3w, a jego odczytanie kosztuje cztery kroki dzia\u0142aj\u0105ce jednakowo w ka\u017cdym falowniku z t\u0105 obs\u0142ug\u0105.<\/p>\n<figure class=\"lw-diagram\">\n<img src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/sunspec-register-pl.png\" width=\"1120\" height=\"580\" decoding=\"async\" loading=\"lazy\"\n     alt=\"Mapa rejestr\u00f3w od adresu 40000 ze znacznikiem SunS, dwoma nag\u0142\u00f3wkami modeli wraz z blokami i znacznikiem ko\u0144ca, obok rozkodowanie jednej warto\u015bci wraz z jej rejestrem skali\"><figcaption>\u0141a\u0144cuch opisuje sam siebie: ka\u017cdy model podaje w\u0142asn\u0105 d\u0142ugo\u015b\u0107, adres nast\u0119pnego wynika wi\u0119c z bie\u017c\u0105cego. Znale\u017a\u0107 trzeba tylko pocz\u0105tek.<\/figcaption><\/figure>\n<h2>Dlaczego sam numer rejestru nie wystarcza<\/h2>\n<p>Modbus nie zna nazw, jednostek ani typ\u00f3w. Odczyt daje szesna\u015bcie bit\u00f3w, a ka\u017cda wyk\u0142adnia tych bit\u00f3w odbywa si\u0119 po stronie czytaj\u0105cego. Rejestr o zawarto\u015bci 1234 mo\u017ce oznacza\u0107 1234 waty, 123,4 wolta albo 12,34 ampera &#8211; a protok\u00f3\u0142 nic o tym nie m\u00f3wi.<\/p>\n<p>SunSpec dok\u0142ada trzy rzeczy, a wszystkie trzy stoj\u0105 w samej przestrzeni rejestr\u00f3w: znacznik m\u00f3wi\u0105cy, \u017ce spis istnieje, \u0142a\u0144cuch blok\u00f3w m\u00f3wi\u0105cy, jakie pomiary s\u0105 i gdzie, oraz na ka\u017cd\u0105 grup\u0119 warto\u015bci wsp\u00f3\u0142czynnik skali m\u00f3wi\u0105cy, gdzie stoi przecinek.<\/p>\n<p>Praktycznym skutkiem jest to, \u017ce raz napisany czytnik dzia\u0142a r\u00f3wnie\u017c przy nast\u0119pnym urz\u0105dzeniu. Wa\u017cy to wi\u0119cej, ni\u017c brzmi, bo rozwi\u0105zanie alternatywne &#8211; tabela adres\u00f3w na ka\u017cdego producenta i ka\u017cdy stan firmware&#8217;u &#8211; jest w\u0142a\u015bnie tym, co po cichu si\u0119 dezaktualizuje.<\/p>\n<h2>Znalezienie adresu bazowego i znacznika<\/h2>\n<p>Spis zaczyna si\u0119 pod jednym z trzech adres\u00f3w, a dwa pierwsze rejestry m\u00f3wi\u0105, czy zaczyna si\u0119 w\u0142a\u015bnie tam. Zawieraj\u0105 cztery znaki <code>SunS<\/code>, jako warto\u015b\u0107 32-bitowa 0x53756E53.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code>from pymodbus.client import ModbusTcpClient\n\nc = ModbusTcpClient(\"192.168.1.50\", port=502)\nc.connect()\n\nfor basis in (40000, 0, 50000):\n    r = c.read_holding_registers(basis, count=2, slave=1)\n    if not r.isError() and r.registers == [0x5375, 0x6E53]:\n        print(\"SunSpec od\", basis)\n        break<\/code><\/pre>\n<p>W tym kr\u00f3tkim kawa\u0142ku kodu tkwi\u0105 dwa kamienie potkni\u0119cia. Pierwszym jest przesuni\u0119cie o jeden, na kt\u00f3rym ka\u017cdy raz si\u0119 przewraca: dokumentacja liczy rejestry od jedynki, a protok\u00f3\u0142 adresuje je od zera. Adres wydrukowany w podr\u0119czniku jako 40001 jest na \u0142\u0105czu przesuni\u0119ciem 40000, a odczyt pod 40001 daje drug\u0105 po\u0142ow\u0119 znacznika i \u017cadnej zgodno\u015bci.<\/p>\n<p>Drugim jest adres urz\u0105dzenia. Falownik z wbudowanym licznikiem odpowiada jako dwa urz\u0105dzenia na tym samym po\u0142\u0105czeniu, ka\u017cde z w\u0142asnym identyfikatorem i w\u0142asnym spisem SunSpec. Odczyt mocy licznika pod identyfikatorem falownika daje warto\u015b\u0107, kt\u00f3ra nie jest b\u0142\u0119dem i nie jest prawd\u0105. Kt\u00f3re identyfikatory s\u0105 w u\u017cyciu, pokazuje strona Modbus w interfejsie webowym urz\u0105dzenia &#8211; i tam te\u017c Modbus TCP zostaje w og\u00f3le w\u0142\u0105czony, bo w wi\u0119kszo\u015bci falownik\u00f3w jest fabrycznie wy\u0142\u0105czony.<\/p>\n<h2>Przej\u015bcie \u0142a\u0144cucha modeli<\/h2>\n<p>Po znaczniku nast\u0119puje szereg blok\u00f3w, a ka\u017cdy blok zaczyna si\u0119 od dw\u00f3ch rejestr\u00f3w: numeru modelu i d\u0142ugo\u015bci. D\u0142ugo\u015b\u0107 dodana do bie\u017c\u0105cego po\u0142o\u017cenia daje pocz\u0105tek nast\u0119pnego bloku, a numer modelu 65535 ko\u0144czy \u0142a\u0144cuch.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code>pos = basis + 2\nwhile True:\n    kopf = c.read_holding_registers(pos, count=2, slave=1).registers\n    modell, laenge = kopf[0], kopf[1]\n    if modell == 0xFFFF:\n        break\n    print(f\"model {modell:5d}  dlugosc {laenge:3d}  dane od {pos + 2}\")\n    pos += 2 + laenge<\/code><\/pre>\n<p>Zwyk\u0142y falownik odpowiada trzema albo czterema modelami, a numery m\u00f3wi\u0105, czym ka\u017cdy z nich jest.<\/p>\n<table style=\"width:100%;border-collapse:collapse;table-layout:auto;\">\n<thead>\n<tr>\n<th style=\"white-space:nowrap;vertical-align:top;\">Model<\/th>\n<th style=\"vertical-align:top;\">Zawarto\u015b\u0107<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"white-space:nowrap;vertical-align:top;\">1<\/td>\n<td>Wsp\u00f3lne: producent, oznaczenie modelu, numer seryjny, wersja firmware&#8217;u<\/td>\n<\/tr>\n<tr>\n<td style=\"white-space:nowrap;vertical-align:top;\">101, 102, 103<\/td>\n<td>Falownik jedno-, dwu-, tr\u00f3jfazowy &#8211; liczby ca\u0142kowite ze wsp\u00f3\u0142czynnikami skali<\/td>\n<\/tr>\n<tr>\n<td style=\"white-space:nowrap;vertical-align:top;\">111, 112, 113<\/td>\n<td>Te same pomiary jako liczby zmiennoprzecinkowe, bez wsp\u00f3\u0142czynnik\u00f3w skali<\/td>\n<\/tr>\n<tr>\n<td style=\"white-space:nowrap;vertical-align:top;\">160<\/td>\n<td>Poszczeg\u00f3lne \u0142a\u0144cuchy, jeden powtarzalny blok na ka\u017cdy regulator MPP<\/td>\n<\/tr>\n<tr>\n<td style=\"white-space:nowrap;vertical-align:top;\">201 do 204<\/td>\n<td>Licznik, po jednym modelu na rodzaj przy\u0142\u0105czenia<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>To, czy urz\u0105dzenie oferuje 103 czy 113, bywa zwykle ustawieniem, a nie w\u0142a\u015bciwo\u015bci\u0105. Wiele falownik\u00f3w ma prze\u0142\u0105cznik mi\u0119dzy liczbami ca\u0142kowitymi ze wsp\u00f3\u0142czynnikami skali a zmiennym przecinkiem, i to on wyznacza, kt\u00f3ra z dw\u00f3ch rodzin modeli pojawi si\u0119 w \u0142a\u0144cuchu. Czytnik oczekuj\u0105cy jednego, a zastaj\u0105cy drugie, nie melduje w og\u00f3le \u017cadnych pomiar\u00f3w &#8211; objaw myl\u0105cy dla ustawienia, kt\u00f3rego zmiany nikt nie pami\u0119ta.<\/p>\n<h2>Wsp\u00f3\u0142czynniki skali, typy danych i warto\u015bci zast\u0119pcze<\/h2>\n<p>Wewn\u0105trz bloku modelu po\u0142o\u017cenie warto\u015bci stoi w specyfikacji i liczone jest od pocz\u0105tku danych. Pr\u0105d fazy A siedzi na przesuni\u0119ciu 2, a nale\u017c\u0105cy do niego wsp\u00f3\u0142czynnik skali na przesuni\u0119ciu 5.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code>Model 103, dane od 40071\n\n  przesuniecie 1   A      uint16   prad calkowity\n  przesuniecie 2   AphA   uint16   faza A\n  przesuniecie 3   AphB   uint16   faza B\n  przesuniecie 4   AphC   uint16   faza C\n  przesuniecie 5   A_SF   int16    wspolczynnik skali dla wszystkich czterech\n\n  40072 = 1234        wartosc surowa\n  40075 = 0xFFFE      uzupelnienie do dwoch, czyli \u22122\n\n  1234 \u00d7 10\u207b\u00b2 = 12,34 A<\/code><\/pre>\n<p>Wsp\u00f3\u0142czynnik skali jest wyk\u0142adnikiem dziesi\u0119tnym ze znakiem i obowi\u0105zuje dla ca\u0142ej grupy warto\u015bci, a nie dla jednej. Dlatego pojawia si\u0119 raz na cztery pr\u0105dy i dlatego pr\u0105d odczytany bez niego daje liczb\u0119 stukrotnie za du\u017c\u0105 &#8211; a ta w instalacji domowej nadal wygl\u0105da na wiarygodny pomiar.<\/p>\n<p>W praktyce licz\u0105 si\u0119 jeszcze trzy w\u0142a\u015bciwo\u015bci kodowania. Warto\u015bci zajmuj\u0105ce dwa rejestry stoj\u0105 s\u0142owem starszym z przodu, co odpowiada konwencji Modbusa i co niemal ka\u017cda biblioteka robi poprawnie sama z siebie. Pola tekstowe maj\u0105 sta\u0142\u0105 d\u0142ugo\u015b\u0107 i s\u0105 dope\u0142niane bajtami zerowymi, a nie nimi ko\u0144czone. A warto\u015b\u0107, kt\u00f3rej urz\u0105dzenie nie prowadzi, nie wynosi zera, lecz jest warto\u015bci\u0105 zast\u0119pcz\u0105: 0x8000 dla int16, 0xFFFF dla uint16, 0x80000000 dla int32. Czytnik traktuj\u0105cy je jako liczby melduje 65535 wolt\u00f3w &#8211; a regu\u0142a je odrzucaj\u0105ca ma trzy linie.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code>LEER = {\"int16\": 0x8000, \"uint16\": 0xFFFF,\n        \"int32\": 0x80000000, \"uint32\": 0xFFFFFFFF}\n\ndef wert(roh, typ, sf):\n    if roh == LEER.get(typ):\n        return None\n    return roh * (10 ** sf)<\/code><\/pre>\n<h2>Odczyt jednej warto\u015bci od pocz\u0105tku do ko\u0144ca<\/h2>\n<p>Wszystkie cz\u0119\u015bci razem daj\u0105 czytnik, kt\u00f3ry model odnajduje, zamiast zak\u0142ada\u0107 jego adres.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code>def modell_finden(c, basis, gesucht, slave=1):\n    pos = basis + 2\n    while True:\n        m, laenge = c.read_holding_registers(pos, count=2, slave=slave).registers\n        if m == 0xFFFF:\n            return None\n        if m == gesucht:\n            return pos + 2, laenge\n        pos += 2 + laenge\n\ndef vorzeichen(r):\n    return r - 0x10000 if r &gt; 0x7FFF else r\n\nstart, _ = modell_finden(c, 40000, 103)\nblock    = c.read_holding_registers(start, count=6, slave=1).registers\n\nstrom = block[1]                 # AphA, przesuniecie 2 liczone od jedynki\nsf    = vorzeichen(block[4])     # A_SF, przesuniecie 5\nprint(f\"{strom * 10 ** sf:.2f} A\")<\/code><\/pre>\n<p>Warto odczytywa\u0107 ca\u0142y blok jednym \u017c\u0105daniem, a nie ka\u017cd\u0105 warto\u015b\u0107 osobno. Odczyt Modbusa kosztuje niezale\u017cnie od d\u0142ugo\u015bci kilka milisekund czasu obiegu &#8211; sze\u015b\u0107 rejestr\u00f3w w jednym wywo\u0142aniu kosztuje wi\u0119c tyle, co jeden rejestr w jednym wywo\u0142aniu. Wa\u017cniejsze za\u015b: wszystkie sze\u015b\u0107 warto\u015bci pochodzi wtedy z tej samej chwili. Sze\u015b\u0107 osobnych odczyt\u00f3w pr\u0105du, napi\u0119cia i mocy daje trzy wielko\u015bci do siebie niepasuj\u0105ce, a zbudowane na nich sprawdzenie wiarygodno\u015bci odzywa si\u0119 bez powodu.<\/p>\n<p>Uwaga o cz\u0119stotliwo\u015bci odpytywania: falownik nie jest baz\u0105 danych. \u017b\u0105danie co pi\u0119\u0107 sekund jest bezproblemowe, raz na sekund\u0119 bywa w cz\u0119\u015bci urz\u0105dze\u0144 granic\u0105, a szybciej wytwarza przekroczenia czasu wygl\u0105daj\u0105ce na usterki sieci. Same warto\u015bci pomiarowe i tak rzadko od\u015bwie\u017caj\u0105 si\u0119 cz\u0119\u015bciej ni\u017c co sekund\u0119.<\/p>\n<h2>Przeniesienie ca\u0142o\u015bci do Home Assistant<\/h2>\n<p>Gdy adresy s\u0105 znane, ten sam odczyt dzia\u0142a r\u00f3wnie\u017c opisowo. Integracja Modbus w Home Assistant zajmuje si\u0119 typem danych i znakiem; wpisa\u0107 trzeba jedynie wsp\u00f3\u0142czynnik skali jako liczb\u0119, bo integracja nie odczytuje go z urz\u0105dzenia.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code>modbus:\n  - name: wechselrichter\n    type: tcp\n    host: 192.168.1.50\n    port: 502\n    sensors:\n      - name: \"Prad faza A\"\n        slave: 1\n        address: 40072\n        data_type: uint16\n        scale: 0.01\n        precision: 2\n        unit_of_measurement: \"A\"\n        device_class: current\n        state_class: measurement\n        scan_interval: 10\n      - name: \"Moc czynna\"\n        slave: 1\n        address: 40084\n        data_type: int16\n        scale: 1\n        precision: 0\n        unit_of_measurement: \"W\"\n        device_class: power\n        state_class: measurement\n        scan_interval: 10<\/code><\/pre>\n<p>Wpisany na sta\u0142e <code>scale<\/code> jest kompromisem tej drogi i warto odnotowa\u0107, sk\u0105d si\u0119 bierze. Wsp\u00f3\u0142czynnik skali odczytano raz powy\u017cszym skryptem; stoi w urz\u0105dzeniu i praktycznie nigdy si\u0119 nie zmienia, ale gwarancji na to nie ma. Po aktualizacji firmware&#8217;u por\u00f3wnanie warto\u015bci wy\u015bwietlanej z ekranem falownika trwa dziesi\u0119\u0107 sekund i wy\u0142apuje stukrotno\u015b\u0107 natychmiast.<\/p>\n<p>Ostatnie pole rozstrzyga, czy warto\u015b\u0107 trafi do statystyki energii, a nie tylko na kart\u0119. Warto\u015b\u0107 mocy w watach to <code>device_class: power<\/code> ze <code>state_class: measurement<\/code>; stan licznika w kilowatogodzinach to <code>device_class: energy<\/code> ze <code>state_class: total_increasing<\/code>. Jedno z drugim nie jest wymienne, a wybra\u0107 jako \u017ar\u00f3d\u0142o energii da si\u0119 wy\u0142\u0105cznie to drugie.<\/p>\n<div class=\"lw-quellen\">\n<h2>\u0179r\u00f3d\u0142a<\/h2>\n<ul>\n<li><a href=\"https:\/\/sunspec.org\/wp-content\/uploads\/2021\/02\/SunSpec-Device-Information-Model-Specificiation-V1-0-02-01-2021.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">SunSpec Device Information Model Specification (adresy bazowe, znacznik SunS, wsp\u00f3\u0142czynniki skali)<\/a><\/li>\n<li><a href=\"https:\/\/sunspec.org\/wp-content\/uploads\/2019\/08\/SunSpec-Information-Models-12041.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">SunSpec Information Model Specification (katalog modeli)<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Numer rejestru z wpisu na forum dzia\u0142a, dop\u00f3ki firmware go nie przesunie. Przej\u015bcie \u0142a\u0144cucha modeli SunSpec znajduje t\u0119 sam\u0105 warto\u015b\u0107 w ka\u017cdym falowniku &#8211; a wsp\u00f3\u0142czynnik skali dwa rejestry dalej zamienia 1234 w 12,34 ampera.<\/p>\n","protected":false},"author":1,"featured_media":13239,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[92628],"tags":[92190,92193,92196,92199,92238],"class_list":["post-13064","post","type-post","status-publish","format-standard","hentry","category-tutorials-pl-smart-home-pl","tag-energy-management-pl","tag-home-assistant-pl","tag-modbus-pl","tag-photovoltaics-pl","tag-tutorial-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Tutorial: Odczyt rejestr\u00f3w SunSpec z falownika PV przez Modbus TCP - Lukas Wojcik - Blog<\/title>\n<meta name=\"description\" content=\"Znalezienie znacznika SunS, przej\u015bcie \u0142a\u0144cucha modeli, odczyt wsp\u00f3\u0142czynnik\u00f3w skali i typ\u00f3w danych oraz zamiana wyniku w czujnik Home Assistant.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/smart-home-pl\/tutorials-pl-smart-home-pl\/tutorial-odczyt-rejestrow-sunspec-z-falownika-pv-przez-modbus-tcp\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tutorial: Odczyt rejestr\u00f3w SunSpec z falownika PV przez Modbus TCP - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Znalezienie znacznika SunS, przej\u015bcie \u0142a\u0144cucha modeli, odczyt wsp\u00f3\u0142czynnik\u00f3w skali i typ\u00f3w danych oraz zamiana wyniku w czujnik Home Assistant.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/smart-home-pl\/tutorials-pl-smart-home-pl\/tutorial-odczyt-rejestrow-sunspec-z-falownika-pv-przez-modbus-tcp\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-18T16:25:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13064-tutorial-odczyt-rejestrow-sunspec-z-falo.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/smart-home-pl\\\/tutorials-pl-smart-home-pl\\\/tutorial-odczyt-rejestrow-sunspec-z-falownika-pv-przez-modbus-tcp\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/smart-home-pl\\\/tutorials-pl-smart-home-pl\\\/tutorial-odczyt-rejestrow-sunspec-z-falownika-pv-przez-modbus-tcp\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Tutorial: Odczyt rejestr\u00f3w SunSpec z falownika PV przez Modbus TCP\",\"datePublished\":\"2026-09-18T16:25:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/smart-home-pl\\\/tutorials-pl-smart-home-pl\\\/tutorial-odczyt-rejestrow-sunspec-z-falownika-pv-przez-modbus-tcp\\\/\"},\"wordCount\":1218,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/smart-home-pl\\\/tutorials-pl-smart-home-pl\\\/tutorial-odczyt-rejestrow-sunspec-z-falownika-pv-przez-modbus-tcp\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/hero-13064-tutorial-odczyt-rejestrow-sunspec-z-falo.png\",\"keywords\":[\"Energy Management\",\"Home Assistant\",\"Modbus\",\"Photovoltaics\",\"Tutorial\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/smart-home-pl\\\/tutorials-pl-smart-home-pl\\\/tutorial-odczyt-rejestrow-sunspec-z-falownika-pv-przez-modbus-tcp\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/smart-home-pl\\\/tutorials-pl-smart-home-pl\\\/tutorial-odczyt-rejestrow-sunspec-z-falownika-pv-przez-modbus-tcp\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/smart-home-pl\\\/tutorials-pl-smart-home-pl\\\/tutorial-odczyt-rejestrow-sunspec-z-falownika-pv-przez-modbus-tcp\\\/\",\"name\":\"Tutorial: Odczyt rejestr\u00f3w SunSpec z falownika PV przez Modbus TCP - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/smart-home-pl\\\/tutorials-pl-smart-home-pl\\\/tutorial-odczyt-rejestrow-sunspec-z-falownika-pv-przez-modbus-tcp\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/smart-home-pl\\\/tutorials-pl-smart-home-pl\\\/tutorial-odczyt-rejestrow-sunspec-z-falownika-pv-przez-modbus-tcp\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/hero-13064-tutorial-odczyt-rejestrow-sunspec-z-falo.png\",\"datePublished\":\"2026-09-18T16:25:00+00:00\",\"description\":\"Znalezienie znacznika SunS, przej\u015bcie \u0142a\u0144cucha modeli, odczyt wsp\u00f3\u0142czynnik\u00f3w skali i typ\u00f3w danych oraz zamiana wyniku w czujnik Home Assistant.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/smart-home-pl\\\/tutorials-pl-smart-home-pl\\\/tutorial-odczyt-rejestrow-sunspec-z-falownika-pv-przez-modbus-tcp\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/smart-home-pl\\\/tutorials-pl-smart-home-pl\\\/tutorial-odczyt-rejestrow-sunspec-z-falownika-pv-przez-modbus-tcp\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/smart-home-pl\\\/tutorials-pl-smart-home-pl\\\/tutorial-odczyt-rejestrow-sunspec-z-falownika-pv-przez-modbus-tcp\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/hero-13064-tutorial-odczyt-rejestrow-sunspec-z-falo.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/hero-13064-tutorial-odczyt-rejestrow-sunspec-z-falo.png\",\"width\":1200,\"height\":630,\"caption\":\"Tutorial: Odczyt rejestr\u00f3w SunSpec z falownika PV przez Modbus TCP\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/smart-home-pl\\\/tutorials-pl-smart-home-pl\\\/tutorial-odczyt-rejestrow-sunspec-z-falownika-pv-przez-modbus-tcp\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorial: Odczyt rejestr\u00f3w SunSpec z falownika PV przez Modbus TCP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tutorial: Odczyt rejestr\u00f3w SunSpec z falownika PV przez Modbus TCP - Lukas Wojcik - Blog","description":"Znalezienie znacznika SunS, przej\u015bcie \u0142a\u0144cucha modeli, odczyt wsp\u00f3\u0142czynnik\u00f3w skali i typ\u00f3w danych oraz zamiana wyniku w czujnik Home Assistant.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/pl\/smart-home-pl\/tutorials-pl-smart-home-pl\/tutorial-odczyt-rejestrow-sunspec-z-falownika-pv-przez-modbus-tcp\/","og_locale":"en_US","og_type":"article","og_title":"Tutorial: Odczyt rejestr\u00f3w SunSpec z falownika PV przez Modbus TCP - Lukas Wojcik - Blog","og_description":"Znalezienie znacznika SunS, przej\u015bcie \u0142a\u0144cucha modeli, odczyt wsp\u00f3\u0142czynnik\u00f3w skali i typ\u00f3w danych oraz zamiana wyniku w czujnik Home Assistant.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/smart-home-pl\/tutorials-pl-smart-home-pl\/tutorial-odczyt-rejestrow-sunspec-z-falownika-pv-przez-modbus-tcp\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-18T16:25:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13064-tutorial-odczyt-rejestrow-sunspec-z-falo.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/smart-home-pl\/tutorials-pl-smart-home-pl\/tutorial-odczyt-rejestrow-sunspec-z-falownika-pv-przez-modbus-tcp\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/smart-home-pl\/tutorials-pl-smart-home-pl\/tutorial-odczyt-rejestrow-sunspec-z-falownika-pv-przez-modbus-tcp\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Tutorial: Odczyt rejestr\u00f3w SunSpec z falownika PV przez Modbus TCP","datePublished":"2026-09-18T16:25:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/smart-home-pl\/tutorials-pl-smart-home-pl\/tutorial-odczyt-rejestrow-sunspec-z-falownika-pv-przez-modbus-tcp\/"},"wordCount":1218,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/smart-home-pl\/tutorials-pl-smart-home-pl\/tutorial-odczyt-rejestrow-sunspec-z-falownika-pv-przez-modbus-tcp\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13064-tutorial-odczyt-rejestrow-sunspec-z-falo.png","keywords":["Energy Management","Home Assistant","Modbus","Photovoltaics","Tutorial"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/smart-home-pl\/tutorials-pl-smart-home-pl\/tutorial-odczyt-rejestrow-sunspec-z-falownika-pv-przez-modbus-tcp\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/smart-home-pl\/tutorials-pl-smart-home-pl\/tutorial-odczyt-rejestrow-sunspec-z-falownika-pv-przez-modbus-tcp\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/smart-home-pl\/tutorials-pl-smart-home-pl\/tutorial-odczyt-rejestrow-sunspec-z-falownika-pv-przez-modbus-tcp\/","name":"Tutorial: Odczyt rejestr\u00f3w SunSpec z falownika PV przez Modbus TCP - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/smart-home-pl\/tutorials-pl-smart-home-pl\/tutorial-odczyt-rejestrow-sunspec-z-falownika-pv-przez-modbus-tcp\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/smart-home-pl\/tutorials-pl-smart-home-pl\/tutorial-odczyt-rejestrow-sunspec-z-falownika-pv-przez-modbus-tcp\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13064-tutorial-odczyt-rejestrow-sunspec-z-falo.png","datePublished":"2026-09-18T16:25:00+00:00","description":"Znalezienie znacznika SunS, przej\u015bcie \u0142a\u0144cucha modeli, odczyt wsp\u00f3\u0142czynnik\u00f3w skali i typ\u00f3w danych oraz zamiana wyniku w czujnik Home Assistant.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/smart-home-pl\/tutorials-pl-smart-home-pl\/tutorial-odczyt-rejestrow-sunspec-z-falownika-pv-przez-modbus-tcp\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/smart-home-pl\/tutorials-pl-smart-home-pl\/tutorial-odczyt-rejestrow-sunspec-z-falownika-pv-przez-modbus-tcp\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/smart-home-pl\/tutorials-pl-smart-home-pl\/tutorial-odczyt-rejestrow-sunspec-z-falownika-pv-przez-modbus-tcp\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13064-tutorial-odczyt-rejestrow-sunspec-z-falo.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13064-tutorial-odczyt-rejestrow-sunspec-z-falo.png","width":1200,"height":630,"caption":"Tutorial: Odczyt rejestr\u00f3w SunSpec z falownika PV przez Modbus TCP"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/smart-home-pl\/tutorials-pl-smart-home-pl\/tutorial-odczyt-rejestrow-sunspec-z-falownika-pv-przez-modbus-tcp\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tutorial: Odczyt rejestr\u00f3w SunSpec z falownika PV przez Modbus TCP"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13064","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=13064"}],"version-history":[{"count":1,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13064\/revisions"}],"predecessor-version":[{"id":13413,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13064\/revisions\/13413"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/13239"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=13064"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=13064"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=13064"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}