RS485: Energia + Growatt + Eastron SDM630 Modbus V2

W tym wątku będę opisywał swoją przygodę z konfiguracją panelu #energia Jego celem jest spięcie razem inwertera i licznika energii (oraz innych urządzeń, np. gniazdka) tak aby wszystko ładnie się wyświetlało.

Posiadam:
Growatt MOD 10KTL3-X - inwerter / falownik
Eastron SDM630 Modbus V2 - licznik energii

Co planuję osiągnąć:

  • zassać z serwisu Growatt do panelu energia dane historyczne
  • połączyć się z inwerterem i licznikiem przez RS485
  • informację o produkcji obu stringów oddzielnie
  • informację o łącznej produkcji
  • zużycie kWh przez dom (również w rozbiciu na fazy)
  • ilość kWh wyeksportowanych do #PGE

Pierwszy problem który chcę rozwiązać to pobranie danych historycznych.
W HA jest gotowa integracja z falownikiem ale po zmianie nazwy/aliasu inwertera na stronie Growatta, zmianie tez uległy nazwy encji. Mam zatem rozbieżność. Totalna produkcja w panelu Growatta jest inna niż ta którą mam w panelu energia.

Może ktoś z Was wie jak pobrać dane historyczne?

Jak tylko coś uda mi się skonfigurować to będę tutaj wrzucał. Mam nadzieję, że wspólnymi siłami rozgryziemy te dwa urzadzenia :slight_smile:

ja mam growatta i po ostatniej awarii dodatku wszystko wróciło do normy, wartości encji mam prawidłowe

Tu masz przykład integracji Modbus - Integracja Modbus i licznik energii SDM630. Pozostaje wybrać konwerter RS485, może być na USB (dongiel wpinany bezpośrednio do HA) albo drożej na Modbus TCP (bramka).

Tego nie rozumiem.
tzn. rozumiem, ale tu masz problem z energy: a nie z integracją growatt.
Czyli miałeś najpierw jedną nazwę i encje się zmieniły i nie pokazuje tak?
Powiedz jaki jest total w integracji Growatt i jaki jest w serwer.growatt.com.

@luki25 a panel ENERGY zassał Tobie całą historię produkcji od samego początku czy od momentu włączenia integracji? (zakładam że PV było wcześniej u Ciebie niż pojawił się panel energy)

@macek dzięki. Konwerter mam na USB tylko muszę go podłączyć. Może uda mi się to w ten weekend.

@bartik22 problem polega na tym, że nie mam historycznych danych w panelu energy. Integracja z serwer growatt działa ok.

Aby to zobrazować:
01.10.2021 odpaliłem panel energy i zintegrowałem z serwisem growatt
08.10.2021 uruchomiłem inwerter i panel energy wyświetlał mi poprawne dane
09.10.2021 późnym wieczorem (inwerter oczywiście już był już wyłączony) stwierdziłem, że zmienię nazwy w serwisie growatt i zauważyłem, że w energy encje stały się niedostępne. Okazało się, że zmiana nazwy w panelu growatta wpływa też na nazwy encji.

Poprzednia nazwa to “sensor.dach_j6_total_lifetime_energy_output” a po zmianie nowa to " * sensor.j6_total_lifetime_energy_output" (czyli bez słowa “dach”).

Efekt tego jest taki, że nie widzę w energy produkcji z 8 i 9 października a suma produkcji jest oczywiście o te 2 dni mniejsza w stosunku do wartości “total” z serwisu growatt.

Jak zatem pobrać 8-9 października do panelu energy? Mogę też spróbować dodać ręcznie rekordy do bazy danych ale musiał bym dokładnie sprawdzić wszystkie zależności :confused:

czyli chodzi o brak wykresu dla dwóch dni?
napisałeś tak jak bys nie miał total prodykcji.

to trzeba bylo od razu zmienic encje na starą nazwe.
A jeżeli nie masz total produkcji w energy to zrób sobie untity meter zliczajacy totala z growata i skalibruj poczatkowa wartosc na dzien dzisiejszy.

niestety nie patrzę na panel energy, bo mi głupoty pokazuje, mam 2 falowniki: growatt i huawei, sumuje je i robię jedna encje, tyle że huawei ma strzały chwilowe we wskazaniach i robi złe obliczenia a w rezultacie mam ujemne wartości w panelu energia

Super gdyby było też rozbicie na poszczególne stringi. Ja mam panele od wschodu i zachodu więc takie info było by dla mnie bardzo cenne.
Ciekaw jestem czy po RS485 można z growatta odczytać produkcje i inne parametry. Podejrzewam że tak. Będzie trzeba to rozpracować.

Jeśli chodzi o sumowanie zużycia (w twoim wypadku to dotyczy produkcji) i błędnych obliczeń, to kiedyś w dokumentacji komponentu niestandardowego “powercalc” były jakieś ciekawe uwagi, teraz tego nie widzę, ale to github, więc możesz pogrzebać w starych wersjach :stuck_out_tongue_winking_eye:

może to coś pomoże?

Skonfigurowałem po RS485 licznik EASTRON SDM630 Modbus V2 ale pojawił się mały problem. Co chwila któraś z encji jest niedostępna. Z czym to może być związane?

Problem z komunikatem “niedostępny” wynikał z Januszowego konwertera USB-RS485 (był to ten najtańszy za ok 7 zł). Wywaliłem go a w jego miejsce wstawiłem Waveshare USB-RS485 oparty o FT232
Po tym zabiegu w logach mam czysto a wszystkie sensory zwracają poprawne wartości.

Jutro do sieci RS485 wpinam falownik Growatt MOD 10KTL3-X. Dam później znać czy się udało.

1 polubienie

@bielen2k
Witaj, od kilku dni również próbuje zintegrować MOD10kTL3-X z HA, obecnie do Growatta mam podłączony licznik SDM630 i działa to bardzo fajnie tylko problem jest w tym, że odczyt z licznika działa w godzinach pracy inwertera.
Próba pobrania danych z Inwertera do HA przez wbudowaną integrację nie do końca działa, pojawia się inwerter ale odczyty są równe 0, gdzieś przeczytałem, że TL3-X nie jest wspierany przez HA.
Pojawił się kolejny pomysł aby podłączyć Licznik oraz inwerter do HA po RS485, licznik zgodnie działa bardzo ładnie, co ciekawe na tym konwerterze za 7zł dane poprawnie się wczytują, teraz się zastanawiam nad podłączeniem inwertera również po RS485 i równoległym zbieraniu danych z licznika i konwertera na HA ale nie mam wiedzy nad konfiguracją Growatt po RS485 nie znalazłem przykładowej integracji na Internecie, ciekawi mnie jak w Twoim przypadku czy udało się pobrać dane?

Co tu szukać?
To jest zwykły modbus specyfikacja rejestrów tu:

a opis integracji

Skoro licznik potrafisz odczytać to z inwerterem też sobie poradzisz

Super się składa bo siedzimy nad tym tematem w tym samym czasie :slight_smile: i mam nadzieję, że uda nam się wspólnie rozwiązać tą zagadkę.

Dzisiaj do mojej topologii sieci RS485 podłączyłem inwerter, użyłem do tego pinów 3 (A) oraz 4 (B) tak jak w tym dokumencie na stronie 55:

Masterem jest mój HA z konfiguracją tak jak poniżej.
Konwerter USB-RS485 to Waveshare oparty o FT232.

Pod adresem 001 mam Growatt MOD 10KTL3-X
Pod adresem 002 mam Eastron SDM630

modbus:
- name: rs485_rtu
  type: serial
  method: rtu
  port: /dev/ttyUSB1
  baudrate: 9600
  bytesize: 8
  parity: N
  stopbits: 1
  sensors: !include modbus_sensor.yaml

Odczyt z SDM630 jest super. Po 24 godzinach o zmiany konwertera wszystko działa pięknie (zero błędów w logach).

Przykładowa konfiguracja EASTRON SDM630:

- name: SDM630 Import Wh since last reset
  unit_of_measurement: kWh
  slave: 2
  address: 72
  input_type: input
  count: 2
  data_type: float32
  precision: 2
  scan_interval: 300
  device_class: energy
  # aby urządzenie było widoczne w ENERGY:
  state_class: total

- name: SDM630 Export Wh since last reset
  unit_of_measurement: kWh
  slave: 2
  address: 74
  input_type: input
  count: 2
  data_type: float32
  precision: 2
  scan_interval: 300
  device_class: energy
  # Aby urządzenie pojawiło się w ENERGY: 
  # device_class set to energy
  # state_class set to either: measurement or total or total_increasing
  state_class: total

W jaki sposób masz to połączone i co Ci to daje? Jakie wartości dzięki takiemu połączeniu odczytujesz?

Również jakiś czas temu testowo łączyłem inwerter (piny 7 i 8) z licznikiem ale jeżeli się nie mylę to służy to jedynie do kontrolowania wyeksportowanych kWh do sieci. Czyli jeżeli umowa z dostawcą energii mówi o tym, że mogę rocznie wepchać do sieci XXX kWh to dzięki takiemu połączeniu mój inwerter będzie wiedział ile zostało już wyeksportowane (bo autokonsumpcji przecież nie widzi) i pewnie przestanie produkować prąd.

Zrezygnowałem z takiego połączenia bo nic ono mi nie daje.

Napiszę może, co zaobserwowałem po podpięciu HA po RS485.
Z instrukcji wynika, że przeciętny Kowalski może odczytywać parametry z funkcji numer 4 czyli z INPUT REGISTER. Są one widoczne w tym dokumencie na stronie 25:

Ze strony 7 wnioskuję, że za pomocą MODBUS RTU powinienem je spokojnie odczytać.

Zainstalowałem program CAS MODBUS SCANNER (CAS Modbus Scanner - Chipkin Automation Systems) i odczytałem pierwszych 10 parametrów:

Zauważyłem, że pod adresem 4 oraz 8 mam zmienne:
4 - Vpv1 (PV1 voltage)
8 - Vpv2 (PV2 voltage)

Mam na dachu 2 stringi (wschód i zachód).

Kombinowałem z odczytem i ostatecznie doszedłem do tego typu konfiguracji:

- name: G10KTL3X PV1 Voltage
  unit_of_measurement: V
  slave: 1
  address: 4
  input_type: input
  count: 2
  data_type: uint32
  precision: 1
  scale: 0.01
  scan_interval: 5
  device_class: voltage

- name: G10KTL3X PV2 Voltage
  unit_of_measurement: V
  slave: 1
  address: 8
  input_type: input
  count: 2
  data_type: uint32
  precision: 1
  scale: 0.01
  scan_interval: 6
  device_class: voltage

Nie działał mi żaden inny typ danych. Ani float32 ani uint16.

Dodałem jeszcze sobie do konfiguracji napięcie na fazach 1-3 oraz częstotliwość w Hz:


- name: G10KTL3X Vac1 Voltage
  unit_of_measurement: V
  slave: 1
  address: 15
  input_type: input
  count: 2
  data_type: uint32
  precision: 1
  scale: 0.01
  scan_interval: 5
  device_class: voltage

- name: G10KTL3X Vac2 Voltage
  unit_of_measurement: V
  slave: 1
  address: 19
  input_type: input
  count: 2
  data_type: uint32
  precision: 1
  scale: 0.01
  scan_interval: 5
  device_class: voltage

- name: G10KTL3X Vac3 Voltage
  unit_of_measurement: V
  slave: 1
  address: 23
  input_type: input
  count: 2
  data_type: uint32
  precision: 1
  scale: 0.01
  scan_interval: 5
  device_class: voltage

- name: G10KTL3X Grid frequency
  unit_of_measurement: Hz
  slave: 1
  address: 14
  input_type: input
  count: 2
  data_type: uint32
  precision: 2
  scale: 0.01
  scan_interval: 5
  device_class: frequency

Niestety otrzymałem TYLKO napięcie na PV1. Na PV2 miałem to samo wskazanie co PV1 :expressionless:

Pozostałe zmienne wskazywały “0” (ZERO). Gdy wtyczka była odłączona lub inwerter przestał produkować to przybrały status “NIEDOSTĘPNY”.

Na YT znalazłem film gdzie ktoś próbował kontaktować się z firmą Growatt i odbił się od ściany (09:00 min filmu):

Jeżeli ktoś zauważył, że robię coś źle albo że powinienem zmienić coś w konfiguracji, to dajcie znać. Jak komuś się udało odczytywać z tych falowników dane to opiszcie jak to trzeba dobrze zrobić. Przyda się :slight_smile:

Ale coś jest nie halo. Albo po stronie inwertera albo po stronie mojej integracji (dużego doświadczenia z RS485 i modbus nie mam ale jak z SDM630 śmiga to analogicznie konfigurując komunikację z falownikiem wydaje się mi się, że jest ok).

Ponieważ transmisja do urządzeń odbywa się po jednym medium może dochodzi do kolizji,
Nie wiem jak ten problem rozwiązuje HA i czy jest to problem tego typu. Wyłącz ten licznik tymczasowo i zintegruj tylko falownik.

Kolizja nie powinna występować z tego względu, że oba urządzenia są na różnych adresach.

Zrobię ten test ale inna rzecz przyszła mi do głowy. Odpytam jutro falownik lecz po innym adresie:

- name: G10KTL3X PV1 Voltage
  unit_of_measurement: V
  slave: 1
  address: 30004 #było 4 <---------------
  input_type: input
  count: 2
  data_type: uint32
  precision: 1
  scale: 0.01
  scan_interval: 5
  device_class: voltage

- name: G10KTL3X PV2 Voltage
  unit_of_measurement: V
  slave: 1
  address: 30008 #było 8 <---------------
  input_type: input
  count: 2
  data_type: int32
  precision: 1
  scale: 0.01
  scan_interval: 6
  device_class: voltage

…ale po tym samym kablu :slight_smile: Szczególnie gdy używasz konwerterów sieciowych.

…ale taka jest topologia RS485. Wszystko idzie po jednym kablu.

Obstawiam też że jeżeli były by kolizje to i odczyt z SDM630 by wariował.

Jutro jak falownik wystartuje to będę testował :sunglasses:

To jest argument :+1:
Terminator przy ostatnim urządzeniu dałeś?

… tak kombinujesz?
3 jest dla holding, dla input powinno być 40004…

1 polubienie