Czy ktoś z kolegów zrobił sobie takie połączenie? Jest wiele możliwości, ale nie znalazłem nikogo kto by ogarnął komunikację wraz z BMSem od baterii. Falowniki jest połączony z BMS przez RS485 i zna stan baterii. Jak to przekazać do OpenHAB możliwie prosto.
Zostawiam dla ewentualnych potrzebujących.
Mam taką dziwną nową wersję Easun SMG3. Jak to kupowałem, to myślałem, że będzie to coś poprawionego po SMG2, ale oczywiście Chińczycy zakombinowali i on nie ma USB. Do tego nie chce rozmawiać po RS232 dlatego szukałem pomocy. Na szczęście na złączu do magazynu RS485 jest całkiem rozmowny i udało mi się przeczytać i pisać do niego co tylko chcę.
U mnie rozmawia na 9600bps, 8,n,1.
Adres domyślny 1, ale można zmienić z panelu czołowego.
Rejestr alarmów jest na adresie 100 dziesiętnie.
Rejestry stanu znajdują się od adresu 200 dziesiętnie.
Rejestry konfiguracji są od 300 dziesiętnie.
Rejestry stanu trzeba czytać co najmniej po 2 bajty ale nie więcej niż 120 bajtów.
Większość wartości stanu jest zapisana w Int16 (16 bitów ze znakiem).
Wszystkie rejestry konfiguracji są UInt16 (16 bitów bez znaku).
W OpenHAB zrobiłem tak:
W Things:
Mam jeden Modbus Serial Slave, w którym wskazałem urządzenie szeregowe tty, parametry transmisji i ID falownika (1).
Mam trzy Regular Poll dla poszczególnych grup rejestrów 100, 200, 300.
100 I 200 tylko czytają, a 300 czyta i pisze.
Do każdego parametru mam Modbus Data, w którym wskazuję dokładny adres rejestru, typ danych i ewentualną transformację.
W Items:
Mam dla każdego parametru stosowny element z przypisaniem typu, jednostki, itd.
Problem tych falowników jest taki, że w przeciwieństwie do bardziej inteligentnych urządzeń jak np JKBMS one odpowiadają bez błędu na każde, nawet błędne zapytanie. Czyli jak zapytasz o tylko połowę rejestru, to on wyśle tylko tę połowę. Jak zapytasz o np. 2,5 rejestru, to też odpowie, a Ty się będziesz zastanawiać co to za dane.
W sieci można znaleźć dokument SMG Modbus RTU RS232 communication protocol zawierający szczegóły co jest w którym rejestrze.
Ogólnie fajnie to działa, bo np jak falownik się wyłącza, to wysyła taki stan a'la LWT, że od teraz jest wyłączony bez błędów, albo z błędem X.