Miernik energii JSY-MK-194G - integracja MODBUS

Witam,
Chcę opomiarować przetwornicę PV VOLT do grzania wody. Standardowe mierniki/liczniki się nie sprawdzają ze względu na znaczne zakresy napięcia - u mnie od 60V do 270V. Miernik JSY-MK-194G wydaje się rozwiązywać ten problem - moduł pomiarowy ma zewnętrzne zasilanie a zakresy pomiarowe pasują do mojego zastosowania. Problem jest z odczytem tego miernika. Wg dokumentacji odczyt jest po protokole MODBUS na porcie UART TTL. Zastosowałem płytke konwertera UART TTL - RS485 i na konwerterze USB-RS485 odczytuję wartości w programie diagnostyczno/konfiguracyjnym producenta. Problem w tym że nie potrafię żadnym innym programem obsługi MODBUS odczytać rejestrów.
Np w programie producenta dla zapytania 01 03 00 48 00 0E 44 18 dostaję odpowiedź 01 03 38 00 23 2C FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 13 89 00 23 2C FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 D4 11

czyli program pyta o 14 rejestrów a dostaje 28 (56 bajtów)
w Radzio i Modbus Poll sobie nie poradziłem - obcina dane i nie ma CRC.
Potrafię przeczytać tylko 4 rejestry z tabeli nr 2

Instrukcja z tabelą rejestrów https://www.jsypowermeter.com/uploads/JSY-MK-194G-User-Manual.pdf

Czy ktoś odczytuje ten miernik w HA ? jako Modbus RTU czy TCP ?

Dla każdego rejestru masz byte length=4 czyli typ danych 32bitowy. 14rej*4=56bajtów.
ModbusRTU jeśli masz konwerter podłaczony bezpośrednio do USB maszyny z HA.
Tab2 ma tylko 4 rejestry … co co chcialbyś więcej odczytać?
Wszystko pasuje, więc albo ja albo ty czegoś nie rozumiesz😉

1 polubienie

Dziękuję za szybką reakcję
Oczywiście że Ja nie rozumiem - trochę nie moja branża ani pasja ani hobby - po prostu kombinuję żeby zadziałało.

Do tej pory radziłem sobie z urządzeniami Modbus tak że skanowałem rejestry w programach do diagnostyki Modbus by wiedzieć czego się spodziewać w odpowiedzi na danym rejestrze i trochę metodą prób i błędów z dokumentacją HA i opisami na forach integrowałem je z moim HA. Tutaj już pierwszy etap mnie zatrzymał.
Tzn potrafię jedynie odczytać w programach te kilka z tabeli nr 2 ale istotne są rejestry z tabeli nr 3.

Tłumaczenie na poziomie struktury, bitów, bajtów … wiele mi nie rozjaśni ale jak bym mógł prosić o kawałek yamla np z rejestrem 0048H z tabeli nr 3 to dalej bym już eksperymentował.

Rejestr 48 jest holding, typu danych unsignedint32, z czego wynka, że ma dlugość 4bajtów więc dlugości nie trzeba podawać. Mnożnik dla odczytu wartości *0.001.
Teraz musisz wziąc dokumentacje HA modbus i tak, pod tym katem dopasowac yaml. Każdy rejestr odczytuj pojedyńczo aby określić właściwy typ encji (chodzi o jednostki)
Na tą chwilę nie mam możliwości technicznych aby Ci odpowiedzieć szerzej.
Kombinować nie musisz bo akurat dokumentacja zawiera wszstko.

Dziękuję
czyli tak na szybko:

      - name: "JSY Napięcie kanał 1"
        unit_of_measurement: "V"
        slave: 1
        address: 0x0048
        register_type: holding
        count: 2
        data_type: uint32
        scale: 0.001
        precision: 3

?

Nie pamiętam czy teraz potrzeby jest count?
Wygląda dobrze … wszystkiego z głowy nie podam.

O coś taiego daj:

modbus:
  - name: "jsy_meter"
    type: serial # lub tcp, zależnie od Twojego konwertera
    port: /dev/ttyUSB0 # sprawdź właściwy port w HA
    baudrate: 4800 # domyślny dla tego miernika to zazwyczaj 4800 lub 9600
    bytesize: 8
    stopbits: 1
    parity: N
    sensors:
      - name: "JSY Napięcie kanał 1"
        unique_id: jsy_napiecie_k1
        unit_of_measurement: "V"
        slave: 1
        address: 72 # 0x0048 hex to 72 dec
        input_type: holding
        data_type: uint32
        swap: word #ważne! Zamienia kolejność słów 16-bitowych
        scale: 0.0001 # Sprawdź w instrukcji: jeśli 1 jedn. = 0.1mV, to 0.0001 da Volty
        precision: 1
        device_class: voltage
        state_class: measurement
  • Adresowanie: W HA adresy podajemy zazwyczaj dziesiętnie. 0x0048 to 72. Niektóre urządzenia wymagają przesunięcia o 1 (tzw. offset) więc jeśli 72 nie zadziała, spróbuj 71.
  • data type: uint32: W nowszych wersjach gdy wybierzesz uint32, parametr count: 2 jest dodawany automatycznie, więc nie musisz go wpisywać.
  • swap: word: przy 32-bitowych rejestrach w miernikach JSY. Bez tego HA może przeczytać bajty w złej kolejności i zamiast 230V zobaczysz astronomiczne liczby.
  • Skala (scale): W dokumentacji JSY często napięcie podawane jest w jednostkach 0.0001V (czyli 0.1mV). Jeśli w programie producenta widzisz wartość np. 2300000 dla 230V, to skala musi wynosić 0.0001. Jeśli widzisz 230000, to 0.001.
    I jeszcze pytanie dlaczego tak otagowany jest ten watek @abaku
1 polubienie

Dziękuję, dam znać jak mi poszło

sprawdzone powyższe propozycje i różne warianty - bez efektu
sprzętowo układ sprawny - czytam w HA rejestry systemowe ale pomiarowych (byte length=4) nie czyta