VCX DTS-1946 jak podpiąć do HA?

Jest dobrze wg dokumentacji licznika typ dla 0x34 i 0x36 to float32. Co ci pokazuje dla tej kofiguracji?

Ja już nie korzystam z połączenia szeregowego do HA. Za dużo było tu zabawy po restartach czy kolejnych aktualizacjach. Mam teraz zrobione na ESP i zapomniałem że trzeba było o tym pamiętać po każdej zmianie w HA.

Poniżej działający kod do d1_mini pracujący już chyba od roku. W miejsce gwiazdek trzeba ustawić swoje dane. Zahashowane pozycje których nie potrzebowałem. Po ich odhashowaniu trzeba sprawdzić czy będą działać - rok temu działały.

esphome:
  name: licznik-pradu-gowny
  friendly_name: Licznik prądu główny

esp8266:
  board: d1_mini

# Enable Home Assistant API
api:
  encryption:
    key: "***"

ota:
  - platform: esphome
    password: "***"

captive_portal:
    
substitutions:
  # Modify variables based on your settings
  hostname: "Licznik glowny"
  devicename: Glowny_licznik


wifi:
  ssid: ***
  password: ***

logger:
    level: DEBUG
    baud_rate: 0

web_server:
  port: 80
  auth:
    username: ***
    password: ***
  
uart:
  id: mod_bus
  tx_pin: GPIO14
  rx_pin: GPIO12
  baud_rate: 9600
  stop_bits: 1

modbus:
  #flow_control_pin: 23
  send_wait_time: 100ms
  id: mod_bus_vcx

modbus_controller:
  - id: vcx
    ## the Modbus device addr
    address: 0x1
    modbus_id: mod_bus_vcx
    command_throttle: 30ms
    setup_priority: -10
    update_interval: 10s

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
#    skip_updates: 60
    filters:
      - multiply: 0.1
  - platform: modbus_controller
    id: faza_l2_napiecie
    name: "Faza L2 napięcie"
    state_class: measurement
    register_type: read
    address: 0x201
    unit_of_measurement: "V"
    value_type: S_WORD
    accuracy_decimals: 2
#    skip_updates: 60
    filters:
      - multiply: 0.1
  - platform: modbus_controller
    id: faza_l3_napiecie
    name: "Faza L3 napięcie"
    address: 0x202
    state_class: measurement
    unit_of_measurement: "V"
    register_type: read
    value_type: S_WORD
    accuracy_decimals: 2
#    skip_updates: 60
    filters:
      - multiply: 0.1
 # - platform: modbus_controller
 ##   id: czestotliwosc
  #  name: "Częstotliwość"
  #  register_type: read
  #  state_class: measurement
  #  address: 0x219
  #  unit_of_measurement: "Hz"
  #  value_type: S_WORD
  #  accuracy_decimals: 2
#    skip_updates: 60
  #  filters:
  #    - multiply: 0.01
  - platform: modbus_controller
    id: faza_l1_prad
    name: "Faza L1 prąd"
    register_type: read
    state_class: measurement
    address: 0x206
    unit_of_measurement: "A"
    value_type: S_WORD
    accuracy_decimals: 3
#    skip_updates: 60
    filters:
      - multiply: 0.01
  - platform: modbus_controller
    id: faza_l2_prad
    name: "Faza L2 prąd"
    register_type: read
    state_class: measurement
    address: 0x207
    unit_of_measurement: "A"
    value_type: S_WORD
    accuracy_decimals: 3
#    skip_updates: 60
    filters:
      - multiply: 0.01
  - platform: modbus_controller
    id: faza_l3_prad
    name: "Faza L3 prąd"
    register_type: read
    state_class: measurement
    address: 0x208
    unit_of_measurement: "A"
    value_type: S_WORD
    accuracy_decimals: 3
#    skip_updates: 60
    filters:
      - multiply: 0.01
  - platform: modbus_controller
    id: faza_l1_moc_czynna
    name: "Faza L1 moc czynna"
    register_type: read
    state_class: measurement
    address: 0x209
    unit_of_measurement: "W"
    value_type: S_WORD
#    accuracy_decimals: 2
#    skip_updates: 60
    filters:
      - multiply: 10
  - platform: modbus_controller
    id: faza_l2_moc_czynna
    name: "Faza L2 moc czynna"
    register_type: read
    state_class: measurement
    address: 0x20A
    unit_of_measurement: "W"
    value_type: S_WORD
#    accuracy_decimals: 2
#    skip_updates: 60
    filters:
     - multiply: 10   
  - platform: modbus_controller
    id: faza_l3_moc_czynna
    name: "Faza L3 moc czynna"
    register_type: read
    state_class: measurement
    address: 0x20B
    unit_of_measurement: "W"
    value_type: S_WORD
#    accuracy_decimals: 2
#    skip_updates: 60
    filters:
     - multiply: 10 
  - platform: modbus_controller
    id: calkowita_moc_czynna
    name: "Całkowita moc czynna"
    register_type: read
    state_class: measurement
    address: 0x18
    unit_of_measurement: "W"
    value_type: FP32
    accuracy_decimals: 0
    filters:
      - multiply: 1000
  - platform: modbus_controller
    id: moc_czynna_pobrana
    name: "Moc czynna pobrana"
    register_type: read
    icon: mdi:circle-slice-3
    device_class: energy
    state_class: total_increasing
    address: 0x034
    unit_of_measurement: "kWh"
    value_type: FP32
    accuracy_decimals: 1
    skip_updates: 60
    # filters:
    #   - multiply: 0.01    
  - platform: modbus_controller
    id: moc_czynna_oddana
    name: "Moc czynna oddana"
    register_type: read
    icon: mdi:circle-slice-3
    device_class: energy
    state_class: total_increasing
    address: 0x036
    unit_of_measurement: "kWh"
    value_type: FP32
    accuracy_decimals: 1
    skip_updates: 60
 #   # filters:
 #   #   - multiply: 0.01 
 # - platform: modbus_controller
 #   id: faza_l1_cos
 #   name: "Faza L1 cosφ"
 #   register_type: read
 ##   state_class: measurement
#  address: 0x215
  #  unit_of_measurement: ""
 #  value_type: S_WORD
 
 #   accuracy_decimals: 2
 #   skip_updates: 5
 #   filters:
 #     - multiply: 0.001 
 # - platform: modbus_controller
 #   id: faza_l2_cos
 #   name: "Faza L2 cosφ"
 #   register_type: read
 #   state_class: measurement
 ##   address: 0x216
 #   unit_of_measurement: ""
 #   value_type: S_WORD
 #   accuracy_decimals: 2
 #   skip_updates: 5
 #   filters:
 #     - multiply: 0.001  
#  - platform: modbus_controller
#    id: faza_l3_cos
#    name: "Faza L3 cosφ"
##    register_type: read
#    state_class: measurement
#    address: 0x217
#    unit_of_measurement: ""
#    value_type: S_WORD
#    accuracy_decimals: 2
#    skip_updates: 5
#    filters:
#      - multiply: 0.001  
  - platform: wifi_signal
    name: ${devicename} wifi signal
    update_interval: 600s

  # human readable uptime sensor output to the text sensor above
  - platform: uptime
    name: ${devicename} Uptime in Days
    id: uptime_sensor_days
    update_interval: 60s
    on_raw_value:
      then:
        - text_sensor.template.publish:
            id: uptime_human
            state: !lambda |-
              int seconds = round(id(uptime_sensor_days).raw_state);
              int days = seconds / (24 * 3600);
              seconds = seconds % (24 * 3600);
              int hours = seconds / 3600;
              seconds = seconds % 3600;
              int minutes = seconds /  60;
              seconds = seconds % 60;
              return (
                (days ? String(days) + "d " : "") +
                (hours ? String(hours) + "h " : "") +
                (minutes ? String(minutes) + "m " : "") +
                (String(seconds) + "s")
              ).c_str();

time:
  - platform: homeassistant
    id: homeassistant_time

# Text sensors with general information.
text_sensor:
  # Expose WiFi information as sensors.
  - platform: wifi_info
    ip_address:
      name: $devicename IP
    bssid:
      name: $devicename BSSID

  # human readable update text sensor from sensor:uptime
  - platform: template
    name: Uptime Human Readable
    id: uptime_human
    icon: mdi:clock-start  
  
#switch:
#  - platform: gpio
#    pin: GPIO0
#    name: "Bojler switch"
#    inverted: true

Moc pobrana oddana niedostępny z pomarańczowym wykrzyknikiem

czyli esphome trzeba dokupić i wstawić ten wpis ?

No tak, d1_mini za ~20 zł i konwerter rs485-ttl za ~10 zł.

Sprawdź w narzędziach deweloperskich czy czasami nie utworzyło nowej encji z inną nazwą - może pod starą nazwą do której się odwołujesz już nie istnieje. Myślisz, że esphome coś zmieni​:wink:

Sprawdź w logach czy masz jakieś błędy modbus

Dobrze że się odezwałeś bo korzystam do tej pory tak jak po staremu zrobiłeś i działa,ale te nowe wersje cosik zmieniają i ja już się gubię za wszelką pomoc będę wdzieczny wszystkim,a na upartego zanim te esp bym dokupił to jest coś do zmiany żeby dopisać i żeby działało?

JAk pisałęm - już nie korzystam z tej wersji połączenia, nie pomogę.

ok Zbign dziękuję

to może koledzy sprawdzam według Robinl30 i dam znać bo na bieżąco kopię w tej 17.3

Narzędzia deweloperskie statystyki na samym dole Moc oddana Pobrana pisze brak problemów szukam dalej

O wersji czego piszesz?

Czego to wersje bo mi szklana kula nie pokazuje. (Jakkolwiek czegokolwiek by nie była siedzenie na antycznych wersjach czegokolwiek nie prowadzi w dzisiejszych czasach do sukcesu, jeśli nie robisz czegoś w pełni świadomie.)

  1. Zasadniczo nie musisz niczego kupować, bo modbus w HA jest do ogarnięcia na co najmniej wiele sposobów (a pewnie jakiś interfejs RS-485 już masz skoro miałeś to podłączone)
  2. ale jeśli chcesz mieć rozwiązanie na bazie ESPHome to i owszem potrzebujesz jakiegoś modułu na bazie MCU Espressif, ale NIE TYLKO
  3. ten licznik ma interfejs RS-485 więc musisz mieć także przetwornik RS-485 ↔ UART LVTTL (jeśli chcesz ESP)
  4. no chyba, że masz jakąś inną wersję licznika z czymś innym niż RS-485 (ale o tym nawet słowem nie pisnąłeś)

Masz nicka wskazującego na techniczne wykształcenie (a może i inżynierskie?), więc nie rozumiem czemu nie czytasz dokumentacji…

Jestem operatorem cnc tam sa G-kody a tu python czy coś a tego nie kumam bo nie jest mi potrzebne,Zbign wszystko wyjasnił dla takiego gostka jak ja zrobiłem kopuj wklej idziała w wersji 10.5 2023,teraz jest wersja 17.3 2026 i klops

wersja systemu Home Assistant patrzę system wersja

w narzedziach deweloperskich stany sensor moc oddana pobrana pisze unavailable

sieć elekrtyczna klikam ołówek czyli chyba edytuj a tam jest tak

Statistics not defined

Some entities currently have no statistics metadata. If these are newly created, it may take up to 5 minutes for this to be generated for the following entities:

  • sensor.moc_pobrana

  • sensor.moc_oddana

Encja niedostępna

Stany tych skonfigurowanych encji są obecnie niedostępne:

  • sensor.moc_pobrana (unavailable)

  • sensor.moc_oddana (unavailable)

jest licznik który ma rs485 do niego podłączyłem 2 kabelki do czytnika rs485na usb taki jak pendrive wygląda wszysko tak jak Zbign opisał wstawiłem jego kod i od strzała zaczeło działać tak do dziś jest

ale do wersji 10.5 nie mogę już dodać serwera growatt bo tam też coś pozmieniali w wersji 17.3 ten serwer mogę dodać do znowu yaml nie działa i tak to wszystko wyglada

Albo w logach musi być zapis dotyczący błedu odczytu rejestrow 0x34-0x36 albo czyta pod inną nazwą. Sprawdź dobrze skoro inne rejestry czyta to musi być dobrze?

Czego wersja ??? szklaną kulę mam odpalić czy co, że to nie G-kody to wiadomo, ale chodzi o to, że nie jesteś zbyt komunikatywny w przedstawianiu swojej sytuacji…

dobra to uzupełniłeś więc jeśli podajesz nam wersję HAOS to ta informacja jest o kant tyłka roztłuc… (bo nie ma nic do działania modbus)

z drugiej strony nogą się przeżegnałem jak zrozumiałem jak bardzo masz zapuszczone HA

Jeśli chcesz nam pokazać coś użytecznego zrób w/g tego

BTW
Ten wątek jest w dziale Home Assistant, więc powinien dotyczyć natywnej integracji modbus w HA

natomiast po twoim wołaniu o pomoc zajrzałem w ostatniego wówczas posta @Zbign i był na temat ESPHome, więc założyłem, że masz właśnie ESPHome

Jeśli będziecie robili bałagan w wątkach na forum, to nikt nie znajdzie pomocy we właściwym miejscu, a z naszego punktu widzenia - mając taki bałagan w wątku jest to nie do uporządkowania moderacyjnie…

nie mam esphome bo tam znowu jakieś wywody musiałbym całe forum z wami blokować a tego nie chcę poprostu coś gdzieś jest nie halo w tych wpisach albo nowa wersja potrzebuje jakiegoś dopisku tak to rozumuję,skoro Zbign napiał że od 2024 roku trzeba usunąć count: 2 to znaczy że coś zmienili usunąłem zaczeło działać a Moc pobrana oddana nie

Wklej YAMLa takiego jak masz w tej chwili i informację o tym jakie sensory nie działają, to zajrzymy do dokumentacji (tej z posta wyżej, co mógłbyś w sumie sam zrobić)

To nie ma nic do rzeczy, tzn. to jest prawdopodobnie skutek braku zmian gdzieś gdzie to jest ważne i tworzy sensory (jakaś zaniedbana zmiana - przy każdej aktualizacji HA core jest informacja co wymaga zmian z półrocznym wyprzedzeniem, nie liczysz chyba, że będziemy czytać notatki do comiesięcznych wydań od 2023 roku, bo sam tego nie robiłeś…)

Zacząłem czytać o tych rejetrach w tej wersji jest 0x34 0x36 a jak wchodzę w opis licznika to jest 0x034 0x036 czy to ma jakiś wpływ na to?

Jeśli licznik się nie zmienił to zmieniła się co najwyżej konfiguracja modbus dla specyficznych sensorów

zrozum też jedno ale dość kluczowe - na działanie HA nie tyle ma wpływ wersja systemu operacyjnego (która wpływu praktycznie nie ma na żadne integracje), co wersja HA core - wyżej podałem jak dzielić się użyteczną informacją o instalacji HA

Uwaga radykalna zmiana wersji systemu operacyjnego może mieć wpływ na ścieżkę do dongla RS-485, ale skoro masz jakiekolwiek wskazania, to nic takiego się nie stało.

już wiemy, że sprzętowo połączenie z licznikiem masz, bo inne sensory z niego działają OK, więc to jest tylko kwestia konfiguracji integracji, której używasz

nie masz takich sensorów w tym co nam wkleiłeś w formacie całkowicie bezużytecznym, jeszcze raz wklej tego YAMLa ale tak

twój YAML prawdopodobnie wyglądał tak (użyłem AI by go odtworzyć, więc MUSISZ SPRAWDZIĆ czy faktycznie taki masz obecnie)

# Loads default set of integrations. Do not remove.
default_config:

# Load frontend themes from the themes folder
frontend:
  themes: !include_dir_merge_named themes

# Text to speech
tts:
  - platform: google_translate

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

# Example configuration.yaml entry for a serial connection
modbus:
  - name: modbus_hub
    type: serial
    baudrate: 9600
    bytesize: 8
    method: rtu
    parity: N
    port: /dev/serial/by-id/usb-1a86_USB2.0-Ser_-if00-port0
    stopbits: 1
    sensors:
      - name: "U L1"
        unit_of_measurement: V
        unique_id: "L1_napiecie"
        device_class: power
        slave: 2
        address: 0x0
        input_type: input
        data_type: float32
        precision: 2
      - name: "U L2"
        unit_of_measurement: V
        unique_id: "L2_napiecie"
        device_class: power
        slave: 2
        address: 0x2
        input_type: input
        data_type: float32
        precision: 2
      - name: "U L3"
        unit_of_measurement: V
        unique_id: "L3_napiecie"
        device_class: power
        slave: 2
        address: 0x4
        input_type: input
        data_type: float32
        precision: 2
      - name: "Moc pobrana"
        unique_id: "mocpobrana"
        device_class: energy
        state_class: total_increasing
        address: 0x034
        unit_of_measurement: "kWh"
        data_type: float32
        precision: 2
      - name: "Moc oddana"
        unique_id: "mocoddana"
        device_class: energy
        state_class: total_increasing
        address: 0x036
        unit_of_measurement: "kWh"
        data_type: float32
        precision: 2
      - name: "Moc chwilowa"
        unit_of_measurement: W
        unique_id: "mocchwilowa"
        device_class: power
        slave: 2
        address: 0x18
        input_type: input
        data_type: float32
        precision: 2
        scale: 1000
      - name: "P L1"
        unit_of_measurement: W
        unique_id: "L1_moc"
        device_class: power
        slave: 2
        address: 0x12
        input_type: input
        data_type: float32
        precision: 2
        scale: 1000
      - name: "P L2"
        unique_id: "L2_moc"
        unit_of_measurement: W
        device_class: power
        slave: 2
        address: 0x14
        input_type: input
        data_type: float32
        precision: 2
        scale: 1000
      - name: "P L3"
        unique_id: "L3_moc"
        unit_of_measurement: W
        device_class: power
        slave: 2
        address: 0x16
        input_type: input
        data_type: float32
        precision: 2
        scale: 1000

no i teraz widać błędy… mylisz moc z energią i napięcie z mocą?
przy czym ja się będę upierał że energia jest typu long integer (tak twierdzi dokumentacja)

Przepuściłem go przez AI (czuję się zwolniony z odpowiedzialności, ale na oko teraz powinno działać) w celu poprawek na bazie dokumentacji integracji i dokumentacji licznika (mam na myśli typy danych, gdyby wskazania w HA były niezgodne to sobie wrócisz do float32), ale pozostały nazwy gdzie energię nazywasz mocą…

(YAML już bez nieistotnego dla wątku fragmentu kluczowej konfiguracji HA, którego broń boże nie wolno usunąć!)

modbus:
  - name: modbus_hub
    type: serial
    baudrate: 9600
    bytesize: 8
    method: rtu
    parity: N
    port: /dev/serial/by-id/usb-1a86_USB2.0-Ser_-if00-port0
    stopbits: 1
    sensors:
      - name: "U L1"
        unit_of_measurement: V
        unique_id: "L1_napiecie"
        device_class: voltage
        slave: 2
        address: 0x0
        input_type: input
        data_type: float32
        precision: 2
      - name: "U L2"
        unit_of_measurement: V
        unique_id: "L2_napiecie"
        device_class: voltage
        slave: 2
        address: 0x2
        input_type: input
        data_type: float32
        precision: 2
      - name: "U L3"
        unit_of_measurement: V
        unique_id: "L3_napiecie"
        device_class: voltage
        slave: 2
        address: 0x4
        input_type: input
        data_type: float32
        precision: 2
      - name: "Moc pobrana"
        unique_id: "mocpobrana"
        device_class: energy
        state_class: total_increasing
        slave: 2
        address: 0x034
        input_type: input
        unit_of_measurement: "kWh"
        data_type: uint32
        scale: 0.01
        precision: 2
      - name: "Moc oddana"
        unique_id: "mocoddana"
        device_class: energy
        state_class: total_increasing
        slave: 2
        address: 0x036
        input_type: input
        unit_of_measurement: "kWh"
        data_type: uint32
        scale: 0.01
        precision: 2
      - name: "Moc chwilowa"
        unit_of_measurement: W
        unique_id: "mocchwilowa"
        device_class: power
        slave: 2
        address: 0x18
        input_type: input
        data_type: float32
        precision: 2
        scale: 1000
      - name: "P L1"
        unit_of_measurement: W
        unique_id: "L1_moc"
        device_class: power
        slave: 2
        address: 0x12
        input_type: input
        data_type: float32
        precision: 2
        scale: 1000
      - name: "P L2"
        unique_id: "L2_moc"
        unit_of_measurement: W
        device_class: power
        slave: 2
        address: 0x14
        input_type: input
        data_type: float32
        precision: 2
        scale: 1000
      - name: "P L3"
        unique_id: "L3_moc"
        unit_of_measurement: W
        device_class: power
        slave: 2
        address: 0x16
        input_type: input
        data_type: float32
        precision: 2
        scale: 1000

Prawdopodobnie stracisz historyczne dane licznika z 3 lat od 2023 roku do teraz dla tych encji które od zawsze miały nieprawidłową konfigurację (ale może HA zaproponuje możliwość naprawy danych)

edit mam sygnał na PW że prawdopodobnie typy danych dla energii też powinny być float32 a nie uint32 wbrew dokumentacji licznika (ale jak zawsze i dokumentacja może zawierać błędy!)

1 polubienie

Formalnie to te same rejestry. Sprawdź może dla HA 0x034 a 0x34 robi różnicę.

Dzień dobry

Nie mogłem wczoraj nic już napisać bo wywaliło że 8 postów i mnie zablokowało udało mi się jeszcze napisać do kolegi szopen i tam też mnie zablokowało 7 razy coś i forum blokuje,ale od razu z rana piszę żeby nie było że jakiś jestem gbur.Piszę wszystko w jednym poscie żeby mnie znowu nie przyblokowało.Panowie jestem wdzięczny za pomoc i rady scrypt od szopen zadziałał wszystko już gra jest bajka daję tylko wycinek z yamal gdzie teraz wszysko ok kolega szopen będzie wiedział o co chodzi bo kazał mi sprawdzić stan z licznikiem.Na poczatku wywaliło 6 cyforowe pomiary w milionach potem kazał zmienić na float 32 zrobiło się lepiej bo już pokazywało tylko 2 pozycje zmieniłem scale: na 1 i jest już dobrze pokazuje tak jak na liczniku oto fragment który pokazuje już wszystko

      - name: "Moc pobrana"
        unique_id: "mocpobrana"
        device_class: energy
        state_class: total_increasing
        slave: 2
        address: 0x034
        input_type: input
        unit_of_measurement: "kWh"
        data_type: float32
        scale: 1
        precision: 2

Teraz wiecie już że aż 3 linijki trzeba było zmienić żeby zadziałało i tak właśnie myślałem że coś trzeba dopisać ale to dzięki wam bo sam poległem. Co do odpowiedzi do kolegi szopen tak dane zniknęły z 3 lat ,ale mam na to sposób może go znacie ale napiszę jak to robię żeby dane wróciły.W homeas gdzie wszytko działa czyli tym starym wchodzę w ustawienia system kopie zapasowe tworzę kopię klikam na nią i tam są 3 kropki jest pobierz pobiera to na komputer jest to w formie 22_czerwca_2026.tar Zamykam stary system uruchamiam nowy w nowym musi być zainstalowany terminal ssh tam trzeba sobie hasło ustawić może być krótkie na początek pobieram filezille uruchamiam wpisuje adres ip home as użytkownik root i hasło z ssh port 22 łaczy z home as po lewej komputer po prawo home as katalog backup tam kopiuję kopię systemu .tar restart home żeby widział tą kopię potem ustawienia system kopie zapasowe i przywróć .Przywracam tylko pierwsza pozycję od góry i stare dane wracają zmieniam configuration yaml ten co dział i wszystko już jest.

Dziękuję wszystkim za pomoc na pewno bedę jej jeszcze potrzebował.Teraz muszę gnać do pracy pozdrawiam.

1 polubienie