Licznik energii dwukierunkowy VCX DTS-1946 + ESPHome + Home Asistant

Generalnie linki do sklepów są źle widziane, więc to ostateczność.

Jakkolwiek są na to rozwiązania, by nie wygasły (wymagają nieco szczerej chęci)

  1. archive.org - w przypadku platform handlowych może nie być skuteczny
    LICZNIK ENERGII DO HUAWEI SUN2000 vs. DTSU666-H (L3F1946-SUN2000) • Cena, Opinie • Fotowoltaika 13011733478 • Allegro

  2. Strona producenta (z jakąkolwiek oficjalną informacją techniczną) - to jest preferowany sposób publikowania, w tym wypadku sorry nie chce mi się szukać dokumentacji, ale zapewne ją posiadasz to wiesz skąd pobierałeś.


Wracając do tematu - szczerze wątpię by ktoś zamawiał jakieś liczniki ze zmodyfikowanym softem by udawały inne, po prostu prawdopodobnie oba modele licznika to albo rebrand, albo po prostu mają identycznie zorganizowane rejestry.

1 polubienie

LICZNIK ENERGII DO HUAWEI SUN2000 vs. DTSU666-H (L3F1946-SUN2000)
ma inną adresację rejestrów modbus, zgodną z HUAWEI SUN2000, inne podobnie wyglądające liczniki nie będą współpracowały z tymi falownikami.

1 polubienie

Z tego co mi kolega pokazywał to śmiga:

1 polubienie

Ze swojej strony dołączę archiwum z dokumentacją MODBUS do tego licznika.
DTS1946-4P-MODBUS.zip (98,9 KB)

1 polubienie

Panowie jakieś dwa tygodnie temu mój HA pokazał błąd:

The following integrations and platforms could not be set up:
* [modbus](https://www.home-assistant.io/integrations/modbus) ([Show logs](http://homeassistant.local:8123/config/logs?filter=modbus))
Please check your config and [logs](http://homeassistant.local:8123/config/logs).

W logu jest:

Setup failed for modbus: Invalid config.

12:31:34 – (BŁĘDY) setup.py

Invalid config for [modbus]: Aktualna energia bierna: `count: 2` cannot be combined with `data_type: float32` @ data['modbus'][0]['sensors'][11]. Got {'name': 'Aktualna energia bierna', 'unit_of_measurement': 'W', 'slave': 1, 'address': 32, 'input_type': 'input', 'count': 2, 'data_type': 'float32', 'precision': 2, 'scale': 1000, 'scan_interval': 5, 'device_class': 'power'} . (See /config/configuration.yaml, line 30). Please check the docs at https://www.home-assistant.io/integrations/modbus

12:31:34 – (BŁĘDY) config.py

Konfiguracja z configuration.yam

modbus:
  - name: hub1
    type: serial
    baudrate: 9600
    bytesize: 8
    method: rtu
    parity: N
    port: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
    stopbits: 1
    sensors:
      - name: Aktualna energia bierna
        unit_of_measurement: W
        slave: 1
        address: 0x020
        input_type: input
        count: 2
        data_type: float32
        precision: 2
        scale: 1000
        scan_interval: 5
        device_class: power

Do tej pory przez ponad rok działało bez zarzutów i nagle przestało. Oczywiście wszystkie odstępy i skłądnia prawidłowa. Załączam tutaj tylko jeden parametr mam monitorowanych wiecej ale nie chce zaśmiecać

Tak w logu jest napisane, że zmienna float32 sama z siebie wymusza count :2 i nie powinno się stosować takiej kombinacji.
Prawdopodobnie obecnie wystarczy usunąć count.

Pomocy

Mam ESPHome + VCX , chyba wszystkie kombinacje już przetrenowałem, choć zapewne coś przegapiłem skoro nie chce gadać.
Mam D1 mini lite, Podłączony Przez konwerter MAX485 (taki jak tu: Esphome-Growatt/README.md at main · rspring/Esphome-Growatt · GitHub)

Licznik ustawiony na n.8.1, 9600, Addr 0002

esphome:
  name: esp-002
  friendly_name: esp-002

esp8266:
  board: d1_mini_lite

logger:
    level: DEBUG  #dodane
    baud_rate: 0  #dodane

uart:
  - id: mod_bus
    baud_rate: 9600
    stop_bits: 1
    tx_pin: GPIO1
    rx_pin: GPIO3

modbus:
  flow_control_pin: GPIO4
  send_wait_time: 200ms
  id: mod_bus_vcx

modbus_controller:
  - id: vcx
    address: 0x2
    modbus_id: mod_bus_vcx
    command_throttle: 100ms
    setup_priority: -10
    update_interval: 20s

sensor:
  - platform: modbus_controller
    id: faza_l1_napiecie
    name: "Faza L1 napięcie"
    state_class: measurement
    register_type: read
    address: 0x200
    unit_of_measurement: "V"
    value_type: S_WORD
    accuracy_decimals: 2
    filters:
      - multiply: 0.1

Bład jaki dostąję to

[D]	[modbus_controller:040]	
Modbus command to device=2 register=0x200 countdown=0 no response received - removed from send queue

Nie jestem czy prawidłowym w tym przypadku jest protokuł RTU?

Witamy na forum.
Proszę o zapoznanie się z tym tematem na początek:

przepraszam, już poprawiłem :slight_smile:

1 polubienie

Ja bym zrobił odwrotnie, tzn.:

uart:
  id: mod_bus
  rx_pin: TX
  tx_pin: RX

bo GPIO1 to Tx, podłączasz do Rx w konwerterze, podobnie RX.

sprawdzałem :frowning: taki sam efekt

I czy licznik ma ustawiony addres 2 ?

tak jak napisałem:
Licznik ustawiony na n.8.1, 9600, Addr 0002

Jaki program pod Win10 (darmowy) polecacie do Modbusa aby sprawdzić czy licznik w ogóle się komunikuje ? Mam konwerter Modbus>USB ale nie mam nic co czyta modbusa

Spróbuj tego…
https://en.radzio.dxp.pl/modbus-master-simulator/

Standardowa odpowiedź brzmi “u mnie działa” :kissing:
Mi konwerter udało się do sonoof basic wsadzić - pięknie śmiga ponad rok.

Nie rozumiem o co ci chodzi ? Podłączyłeś prawidłowo to działa. @lakusz podłączył odwrotnie (w sumie to nie wiem jak podłączył, ale tak to wygląda) to nie działa.

No właśnie ja też nie rozumiem o co chodzi rx ma iść na tx i odwrotnie więc nad czym się zastanawiać. Nie raz się pomyliłem w innych urządzeniach to przelotka i śmiga. W moim max485 wymagał kontroli przepływu do tego trzeba ustawić adres w liczniku, jak wspominałem wszytko weszło dość ciasno do sonoffa i leży na bezpiecznikach u góry. Teraz dołożyłem 2 pod-liczniki jednofazowe do pompy i wędzarni na PZEM-004 też jest fany i mały, tylko 2 oporniki trzeba dodać. A tego DTSa można też podpiąć do falownika HUAWEI jak ktoś ma jest na to translator na ESP32.

Problem w tym ze nie działa :frowning: żadna kombinacja sprawdzałem z MAXem (i flowcontrol), teraz testuję UART TTL do RS485 CIA00485T i on jest bez flowcontroli i też nie chce odczytać nic z licznika :frowning: nie mam pojęcia co robię źle…

Pierwsze i kluczowe jest poprawne ustawienie parametrów transmisji RS485

  • prędkość
  • ilość bitów (zwykle 8, ale to nie jest sztywna reguła)
  • kontrola parzystości (tu nie ma żadnych reguł, więc może być None, Even albo Odd)
  • ilość bitów stopu (zwykle 1)

Jeśli na magistrali masz więcej niż 1 urządzenie, to każde z nich musisz ustawić na te same parametry transmisji.
Czasem na końcu linii (właściwie na obu) wymagany jest terminator 120 omów, w wyjątkowych przypadkach mogą też być potrzebne pulldown i pullup (jeśli konwerter RS485, ani żadne inne urządzenie, nie zapewnia zasilania linii).

A dopiero potem możesz myśleć o protokole modbus.

te dane podałem w pierwszym pytaniu, licznik ma n.8.1, 9600, Addr 0002, w ESPHome jak w kodzie. Czy coś nie zauważyłem ? Mi wygląda ok.

naszkicowałem taki pokraczny schemat (przepraszam za jakość, nie mam czasu szukać właściwych obrazków brakujących płytek, myślę że idee oddaje)
schemat

Jest rezystor 120ohm przy liczniku, nie ma wiecej urządzeń, jest tylko licznik, konwerter, esp.