Zacznę może od tego że z HA mam do czynienia od niedawna. Chciałbym dokonać integracji licznika dwukierunkowego po MODBUS z moim HA. W tym calu na znanym portalu aukcyjnym zakupiłem konwerter USB → RS485. Podpiołem odpowiednie przewody pomiędzy licznikiem a tym “donglem”.
Następnie dodałem poniższy kod do obsługi MODBUS:
modbus:
- type: serial
baudrate: 9600
bytesize: 8
method: rtu
parity: E
port: /dev/serial/by-path/pci-0000:00:12.0-usb-0:1:1.0-port0
stopbits: 2
name: hub1
utworzyć chociażby 1 działającą encję żebym mógł się czegoś zaczepić działać sobie dalej. Niestety bezskutecznie. Sprawdzałem ustawienia MODBUS w liczniku i mam takie same jak w parametrach.
dzięki za odpowiedzi
prędkość mam ustawioną na 9600 i taka też jest domyślna w liczniku.
to co zauważyłem w dokumentacji to jest jakieś hasło które nie mam pojęcia czy nie powinno byc czasem wykorzystane.
Podłączenie konsoli faktycznie nie daje zwrotnych infromacjii. Bo to już tez sprawdziłem
Jak nic się w konsoli nie dzieje to na moje oko brak komunikacji, tym się zajmij .
Sprawdź czy konfiguracja twojego dongla jest prawidłowa w HA port: /dev/serial/by-path/pci-0000:00:12.0-usb-0:1:1.0-port0
Załącznik do tematu DAC7321C Modbus Protocol v1.0 2-17(1).zip (402,7 KB)
na żadnym forum nie stosuj hostingów zewnętrznych - przeważnie pliki wrzucone w takie miejsca nie są już dostępne dla czytelników, którzy mogliby skorzystać z danego wątku.
Tego typu ścieżka do portu wskazuje na konkretne gniazdo USB, więc będzie inna jeśli przełożysz ten konwerter do innego portu USB.
(idę o zakład że są jakieś inne alternatywy dla tej ścieżki, choć nie wiem czy akurat lepsze w danej sytuacji).
Hasło jest potrzebne tylko dla zmiany kluczowych parametrów (i zapewne nie będziesz musiał go używać, ba - jeśli nie jesteś właścicielem licznika, to nawet nie możesz go używać).
W HA podajesz adres 46(dec) = 0x2E (hex) bez czwórki z przodu.
4 oznacza, że używasz funkcji 03 - ReadHolding… tak dla zmyłki
Dana jest typu longint i zajmuje 4 bajty.
Teraz nawet wszystko akceptuje, ba nawet widzę encję ale niestety jest niedostępna
Nie przyjmuje mi zmiennej typy longint więc chciałem się podeprzeć zwykłym stringiem