Afore BNT800KTL i Home Assistant z NodeRed

Dzień dobry. To mój pierwszy tekst na forum więc proszę o wybaczenie jeśli robię błędy.
Mam wspomniany falownik i chcę odłączyć się od Solarmana i importować dane do mojego HA w sieci domowej. Skorzystałem z projektu Robin30 - SofarLanMqtt.json. Komunikuję się przez zawarty w komplecie moduł LSW3.
Oczywiście ustawiłem swój adres sieciowy i numer urządzenia. No i zacinam się na komunikacji z falownikiem.


Poniżej daję messges z debug 4 i debug 5 czyli ramka wysyłana i odbierana.

W sumie to ramka odbierana nie zalezy od zakresu rejestrów, które wpiszę we właściwościach flow sofar inverter. Może być od 0 od 500, od 1000 i jest to samo. No i jest stanowczo za krótka.

Jak zerknąć na dane dekodowane w KTL parser, to są tam jakieś wartości, które zmieniają się w czasie.


Ale skoro nie zależą od zakresu rejestrów to nawet nie bardzo mogę próbować przyporządkować ich do mierzonych wartości, które oczywiście siedzą pod innymi adresami niż w Sofar. Z tym bym sobie poradził, ale jak go zmusić do uzyskania ramek zawierajacych wartości rejestrów z żądanych adresów? Pewnie ta ramka wysyłana (właściwa dla Sofar) jest błędna, ale jak ją dostosowac do Afore? Pewnie najistotniejsza jest ta wartość: var oFrame = “a5170010450000”; //start bytes. Reszta to numer modułu i CRC.
Oczywiście przeglądałem inne wpisy o Afore. Znalazłem rozwiazania z SolarmanCopy.json czyli z logowaniem sie na solarman.com albo korzystajace z Modbusa. Póbowałem też podglądać rejestry w falownikiu z pomocą ModbusView TCP i qModMaster i nie ma odpowiedzi. Zarówno przez LSW3 jak i EW11. STanowczo nie wydaje się, żeby tam był protokół Modbus, więc mam nadzieję na suckes na bazie SofarLanMqtt.json. Tylko jaka ramak nadawcza? Mogę gdzieś to znaleźć czy próbować nasłuchiwać przez wireshark? A może brnę ślepą uliczkę?
A jeszcze dodam, że podczas działania flow SofarLanMqtt.json EW11 w przeciwieństwie do LSW3 nie daje możliwości połączenia z falownikiem.

Ta odebrana ramka to znaczy tyle, że nie może się dogadać.
Pozostałe metody aby działały trzeba posiadać specyfikację rejestrów modbus.
Być może to będzie działać

Z tej integracji wiele można się dowiedzieć - na ile pasuje do Twojego falownika - nie wiem.

Ważna informacja, którą można wyczytać

requests:
  - start: 0x0000
    end: 0x001A
    mb_functioncode: 0x04

  - start: 0x0000
      end: 0x000F
      mb_functioncode: 0x03

gdy wpiszesz randomowe wartości nic nie otrzymasz (bez względu na metodę) - prawidłowy zakres to 0x0000<>0x001A

to use modbus function in Afore BNTxxxKTL inverters, You first need to change protocol from RS485 to MODBUS in inverter menu

Czyli pierwszy z brzegu i nie chciało Ci się czytać dalej :rofl:

Dzięki za szybką odpowiedź.

No właśnie próbowałem różne zakresy. Włącznie z tym od zera. Jakaś publikacja podawała też rejesty zaczynające się od 1F4 (500 dec) i od 3E8 (1000 dec). Ale to nie działa, bo ta ramka początkowa nie jest odpowiednia dla Afore.

“Skorzystałem z projektu Robin30 - SofarLanMqtt.json.”
Czyli pierwszy z brzegu i nie chciało Ci się czytać dalej

Wydawał mi się najprostszy do przetestowania czy w ogóle Afore pójdzie.
Przyznam, że nie do końca rozumiem, ale wydawało mi się, że opracowałeś rozwiązanie, które “udaje” współpracę falownika z chmurą Solarman.
Czyli ta ramka zawierająca “a5170010450000” plus skonwertowany serial_nr oraz ciąg “020000…” nie jest ramką modbusową. Może ma zaszyte funkcje modbusowe dalej w var businessfield=“0103”. W takiej sytuacji nie powinno się zmieniać ustawień w falowniku, bo po przestawieniu z RS485 na Modbus, falownik już nie jest czytany przez chmurę Solarman, ani przez wbudowaną stronkę modułu LSW3.
No ale przestawiłem też port w Afore na Modbus i badałem oba interfejsy.
LSW3 wydaje się nie przepuszczać wprost Modbusa. EW11 musiałem odpowiednio skonfigurować:



Istotne jest wyłączenie flowcontrol.
No i otrzymałem wartości z rejestrów.

Te w input registers to pomijajac pierwszą wartość, kolejno 3 napięcia wyjściowe, trzy prądy wyjściowe, VDC1, IDC1, VDC2, IDC2, częstotliwość. Wartości pomnożone przez 10. Dalej to już pewnie wartości dint takiejak moc całkowita i energia.
Czyli da się czytać Afore. Mogę oczywiście zaklepać te rejestry w yaml jako ModbusTcp. Może nawet przykład, który podałeś będzie właściwy. Jak skończę to sie pochwalę. Ale spodobało mi się to rozwiązanie z użyciem NodeRed i MQTT. I nurtuje mnie pytanie jak doszedłeś do skonstruowania tej ramki komunikującej się z modułem LSW nie przez Modbus tylko z użyciem tej wirtualnej chmurki Solarmana. O ile dobrze zrozumiałem twój zabieg.
Pozdrawiam

:+1:

Przeczytałem, format tej ramki gdzieś na forum zamieszczałem :slight_smile:

w dalszy ciągu to jest modbus tylko inaczej ubrany.

Nic straconego - jest paczka modbus dla NR.
Możesz czytać przez ModbusTCP i publikować w MQTT - tak mam licznik zrobiony.
Ten EW11 to twój czy był w zewstawie?
Chmurę olej :stuck_out_tongue_winking_eye:

Gdy się dobrze przyjrzysz to z węzła KTL wychodzą dane identyczne jak w przypadku modus. Więc gdybyś odczyt zrobił przez EW11 i te dane podał do

Zgodności rejestrów z sofarem nie porównywałem i może trzeba by lekko dostować subflow SofartoMqtt.