Plugin do falownika...
 
Powiadomienia
Wyczyść wszystko

Plugin do falownika Sofar HYD10KTL-3PH

12 Wpisów
3 Użytkownicy
1 Reactions
435 Wyświetleń
 voyo
(@voyo)
Wpisów: 18
Praktykant
Autor tematu
 

Witam,
Mam u siebie falownik Sofar HYD10KTL-3PH, do którego napisałem plugin do Domoticza, z intergracją po Modbusie i obsługą chyba większości potrzebnych rejestrów.
Plugin początkowo był napisany dla normalnego lokalnego podpięcia po RS485, i w tej wersji jest dostępny na głównym repo na githubie.
Ale ostatnio przerabiam go na wersje działającą po TCP Modbus. Mam u siebie kilka różnych urządzeń na magistrali, i kilka róznych pluginów do Domoticza - przestało to działać dobrze (w ogóle), pluginy nie nadążają czytać rejestrów w swoim cyklu pracy.
Stąd przeróbka całej magistrali i wszystkich moich pluginów na TCP Modbus, gdzie używam softwarowego "proxy" - serwera TCP modbus który łączy się po RS485 i wystawia urządzenia po TCP, ale powinno działać również ze sprzętowymi bramkami eth<->RS485

Ostatnie zmiany są na poniższym branch'u,  zachęcam do przetestowania i informacji zwrotnej 🙂

https://github.com/voyo/Sofar-modbus/tree/TCP_modbus

image

 

edit:
Jeszcze uściślając -
Te proxy do RS485 - Używam oprogramowania mbusd typu open source ( https://github.com/3cky/mbusd/), które działa jako usługa docker na moim RBPI. Kolejkuje zapytania o rejestry z kilku róznych pluginów domoticzowych i innych skryptów. Działa świetnie.

 
Dodane : 29/07/2024 10:21 pm
adrian reacted
Daro1003
(@daro1003)
Wpisów: 792
Mistrz Patron Strony Donator 2K19, Donator 2K20, Donator 2K21, Donator 2K23
 

Świetna robota @voyo.

Powiedz teraz jak powinien podłączyć falownik do RBPI ?

konwerter

Zacisk 1 i 3 do:

IMG 2182

A ta przejściówka do RBPi  i przez plugin ma działać ?

 

 
Dodane : 30/07/2024 5:40 am
 voyo
(@voyo)
Wpisów: 18
Praktykant
Autor tematu
 

Tak, dokładnie. Zaciski A i B w falownika odpowiednio do tych samych stykow A i B (lub + i - ) .
W zależności od dlugości magistrali, czy jakis zakłóceń - może być. konieczność zaterminowania połączenia. (wygooglaj - terminacja RS485). W skrócie, to podłączenia opornika 120Ohm pomiedzy A -i B na początku u końcu magistrali.
Z doświadczenia - nie jest to konieczne przy krótkich i prostych połączeniach (jedno urządzenie komunikujące się z drugim).

Następnie odpalasz tego 'pośrednika' w komunikacji, coś co zamieni RS485 RTU na TCP ,  ja polecam tą aplikacje 'mbusd' (skonfiguruj odpowiednio plik konfiguracyjny), ale tak jak pisałem - powinny działać również rozwiązania sprzętowe (odpowiednio skonfigurowane).

Do opcji konfiguracyjnych, najważniejsze jest nazwa pliku urządzenia (np /dev/ttyUSB0 ), parametry komunikacji - standardowo to zwykle jest prędkość 9600bps, 8n1. Podobnie będzie wyglądała konfiguracja proxy sprzętowego.

Kolejnym istotnym parametrem do komunikacji jest adres (ID) urządzenia (w tym przypadku - Twojego Sofara), to sprawdzisz w parametrach na klawiaturze samego falownika, o ile pamietam o ile nie zmieniłeś  - domyślnie to '1' .

Tak skonfigurowane 'proxy' powinno umożliwić komunikacje z falownikiem z poziomu pluginu (lub dowolnego innego skryptu czy tez aplikacji). W konfiguracji pluginu należy podać odpowiednie wartości. u mnie wygląda to tak jak na załączonym obrazku.
Przypominam - używam w każdym ze swoich pluginów proxy TCP dla łączności modbus, być może , dla łączności z pojedyńczymi urządzeniami (1 do 1) będzie działać bezpośrednie połączenie po porcie /dev/ttyUSBxxx z poziomu pluginu, ale planuje zarzucić wsparcie dla tego typu łączności (nie jest stabilne, totalnie nie działa jeśli na magistrali jest kilka innych urządzeń, w moim przypadku do falownik, rekuperator,  pompa ciepła, 2 mierniki prądu , kilka termometrów , sterowanie roletami - wszystkie urządzenia na tej samej magistrali RS485. Pluginy poprostu nie zdążą odczytać wartości w swoich 10sekundowych cyklach z tych wszystkich urządzeń, a Domoticz nie ma możliwości "za-lokowania"  urządzenia dla pluginu na czas używania.

 

 

 

Screenshot 2024 08 01 at 00.16.28
 
Dodane : 31/07/2024 11:24 pm
Daro1003
(@daro1003)
Wpisów: 792
Mistrz Patron Strony Donator 2K19, Donator 2K20, Donator 2K21, Donator 2K23
 

OK dzięki będę próbował. Plugin już mam w domoticzu:

IP

Pytanie tylko jest opcja IP więc podaje IP Domoticza ?

 

 

 
Dodane : 31/07/2024 11:56 pm
 voyo
(@voyo)
Wpisów: 18
Praktykant
Autor tematu
 

IP miejsca, serwera , gdzie jest odpalony ten mbusd lub Twój sprzętowy 'proxy' do szyny RS485.

W moim przypadku to adres IP mojego RBPI, jesli uzywasz tego mbusd odpalonego na tym samym serwerze gdzie jest domoticz - to bedzie jego adres (lub. localhost - 127.0.0.1 )

 

 

 
Dodane : 01/08/2024 2:27 am
Daro1003
(@daro1003)
Wpisów: 792
Mistrz Patron Strony Donator 2K19, Donator 2K20, Donator 2K21, Donator 2K23
 

Po podłączeniu tego konwertera USB -> RS485 pojawia mi się dwie opcje w Modbus Port:

Zrzut ekranu 2024 08 03 165753

Niestety obojętnie którą ustawię nie ma efektu.

Diody na konwerterze nie migają tylko podczas wpięcia do USB RBPI przez ok 2-3 sekundy dalej cisza. 

Adres ustawiony w Inwerterze 01. Mam jeszcze podłączony licznik ale na pinach 5 i 6.

IMG 0033
IMG 0034

 

 

 
Dodane : 03/08/2024 4:15 pm
Daro1003
(@daro1003)
Wpisów: 792
Mistrz Patron Strony Donator 2K19, Donator 2K20, Donator 2K21, Donator 2K23
 

Dodane przez: @voyo

Następnie odpalasz tego 'pośrednika' w komunikacji, coś co zamieni RS485 RTU na TCP ,  ja polecam tą aplikacje 'mbusd' (skonfiguruj odpowiednio plik konfiguracyjny), ale tak jak pisałem - powinny działać również rozwiązania sprzętowe (odpowiednio skonfigurowane).

Ten krok nie wiem gdzie zrobić.

 
Dodane : 03/08/2024 9:31 pm
 voyo
(@voyo)
Wpisów: 18
Praktykant
Autor tematu
 

W przypadku konfiguracji pluginu do komunikacji po TCP , nie wybierasz juz urządzenia portu /dev/xxxxx , to pole zostawiasz puste.
I do wyboru masz albo własnie tryb TCP lub RTU.  RTU - w tej wersji pluginu jeszcze powinne działać, ale jak pisałem - zamierzam te wsparcie usunąć, nie będe tego rozwijał bo to ma sens tylko jeśli masz do obsługi jedno urządzenie, nie sprawdza się w bardziej rozbudowanej konfiguracji.

Więc - pozostaje, i polecam tryb TCP. 

Tak jak pisałem - potrzeba do tego czegoś więcej oprócz pluginu. Albo masz jakis sprzętowy konwerter RS485 na TCP, albo skorzystaj z tego narzędzia 'mbusd' o którym pisałem.

Opis instalacji i konfiguracji jest na githubie autora.
https://github.com/3cky/mbusd

 
Dodane : 04/08/2024 10:46 pm
(@michal-zd)
Wpisów: 6
Bywalec
 

voyo,
mam działający 'broker' pomiędzy falownikiem Sofar KTLX-G3 a serwerem mosquitto napisany w C.
komunikacja przez WIFI z loggerem LWS-3. Możesz podejrzeć mój kod:
https://github.com/michalzd/pvInverterBroker/tree/mqtt
w plikach /inverter/sofar.c i sofar.h  jest cała komunikacja z falownikiem Sofar. 

 

 
Dodane : 05/08/2024 7:13 am
 voyo
(@voyo)
Wpisów: 18
Praktykant
Autor tematu
 

@michal-zd 
Dzięki. Czy bazowałeś na tym ? https://github.com/MichaluxPL/Sofar_LSW3
Zerknę później dokładnie na Twój kod, u mnie nie pasują mi wartości z kilku rejestrów, zobacze czy u Ciebie to jest ok.

Ale ogólnie - o ile podejście z uniwersalnym konwerterem/przekazywaczem do MQTT ma swoje zalety - 
(- to samo MQTT może obsłuzyć zarówno Domoticz, HomeAssistanta, nodeRed,  cokolwiekinnegojeszcze ,
 - teoretycznie upraszcza obsłużenie urządzenia w tym Domoticzu, bo nie wymaga dedykowanego pluginu, tylko zczytuje wartości z brokera MQTT )

ma też wady, i niedogodności - 
- używa nieudokumentowanej komunikacji z urządzenim które również nie każdy ma,
- jeśli ma, nie koniecznie będzie w tej wersji którą masz Ty i wspierasz (to mój przypadek, mam LSW3, ale w wersji firmware które nie działa z powyższym softem MichaluxPL, później sprawdzę ten Twój soft)
- łączność po TCP/IP jest wygodniejsza od RS485/Modbus, który jest owszem wolniejszy i bardziej wymagająca technicznie, ale Modbus jest jednak bardziej uniwersalny, i dodatkowo daje wgląd we wszystkie rejestry/sensory urządzenia
- wymaga kolejnego daemona/serwisu który ma działać  

Pozatym w dedykowanym pluginie do Domoticza, ogarniam wszystko od A do Z, dodawane są automatycznie wszystkie potrzebne urządzenia, (to powino być w zaletach dedykowanego pluginu 😉 )
największą wadą niestety , jest konieczność samodzielnego przygotowania wymagań potrzebnych do zadziałania pluginu - komunikacji/proxy po TCP do RS485. 

Ja, jako fan Domoticza - zdecydowałem że wolę podejście dedykowanego pluginu 🙂
(Dodatkowo, u mnie na tej samej magistrali RS485/modbus mam kilka(naście) innych urządzeń, które w ten sam, podobny sposób są obsłużone, mniejszy effort).

 

 

 
Dodane : 05/08/2024 8:50 pm
(@michal-zd)
Wpisów: 6
Bywalec
 

 @voyo

"Czy bazowałeś na tym ?  https://github.com/MichaluxPL/Sofar_LSW3 "
Nie. Pyton jest dla mnie średnio czytelny, nie jestem specem od Pytona, potrafi on czytać dane ze struktur binarnie?
Znalazłem w sieci specyfikację modbus i rozpiskę rejestrów dla Sofar Solar, w moim kodzie będą one również w pliku: 
https://github.com/michalzd/pvInverterBroker/blob/mqtt/inverter/Sofar.h
Znajdę ten plik ze specyfikacją, gdzieś go mam w dokumentach, podeślę ci.

 
Dodane : 06/08/2024 3:45 pm
(@michal-zd)
Wpisów: 6
Bywalec
 

Dodane przez: @voyo

Ale ogólnie - o ile podejście z uniwersalnym konwerterem/przekazywaczem do MQTT ma swoje zalety

Oczywiście. 
Pierwszą wersję mojego sterownika miałem napisaną w jednym programie. Ze z względów na prostotę tworzenia UI w NodeRed postawiłem na uniwersalność. Tak powstał mój broker. Jest praktycznie gotowy do kompilacji w Linux na dowolnym sprzęcie. 
Aktualnie mam skompilowaną wersję na Raspberry Pi.  

Odniosę się do tez:

 - używa nieudokumentowanej komunikacji z urządzenim które również nie każdy ma,
   
jeśli ma, nie koniecznie będzie w tej wersji którą masz Ty i wspierasz    

tak, ale problem jest zawsze od strony jakiegokolwiek urządzenia, broker nanosi na to warstwę abstrakcji i zwraca dane json zawsze takie same niezależnie od danych uzyskiwanych z innego falownika. 

- łączność po TCP/IP jest wygodniejsza od RS485/Modbus, który jest owszem wolniejszy i bardziej wymagająca technicznie, ale Modbus jest jednak bardziej uniwersalny, i dodatkowo daje wgląd we wszystkie rejestry/sensory urządzenia

To samo dostajesz poprzez TCP/IP. Protokół modbus jest niezależny od warstwy fizycznej, chociaż kojarzy się z RS485. 

-wymaga kolejnego daemona/serwisu który ma działać 

To nie problem, dzięki C zasobożerne toto nie jest. 

PS. Poprosiłem kolegę  Daro1003  aby sprawdził, czy w przypadku jego inwertera Sofar HY... również będą zgodne dane modbus.

 
Dodane : 06/08/2024 3:54 pm
Udostępnij: