Sinotimer 3F licznik energii RS485 - integracja z HA

Witam, posiadam tego typu liczniki Sinotimer DTS6619 z komunikacją po RS485 MODBUS RTU,
image

trochę zapoznałem się już z HA i pointegrowałem inne urządzenia i porobiłem najpotrzebniejsze na ten moment dla mnie rzeczy i fajnie wszystko działa i teraz nadszedł czas na podłączenie do HA tych liczników energii tylko nie za bardzo wiem jak się do tego zabrać, z tego co widzę to chyba wszystkie tego typu liczniki integruje się podobnie natomiast nie mam pewności jak taki licznik ma zaistnieć w HA, jeśli ktoś mógłby mnie nakierować to byłbym wdzięczny.
Z tego co znalazłem w podobnych poradnikach to mniej więcej miałoby to wyglądać tak jak poniżej, jednak zwykle odnosi się to do konkretnego typu licznika, tu podaję tylko przykładowy fragment :

modbus:
  type: serial
  method: rtu
  port: /dev/ttyUSB0
  baudrate: 9600
  stopbits: 1
  bytesize: 8
  parity: N
sensor sdm:
    platform: modbus
    registers:
    - name: U L1
      unit_of_measurement: V
      slave: 1
      register: 0
      register_type: input
      count: 2
      data_type: float
      precision: 2

oczywiście zdaję sobie sprawę że do konkretnych pomiarów trzeba przypisać konkretne adresy licznika tylko na ten moment chcę aby on w ogóle zaistniał w HA, jeśłi dobrze zrozumiałem to powyższy kod powoduje czytanie portu usb i jest on uniwersalny do odczytu transmisji po RS485, czy tak ?
Połączenie liczników będzie poprzez RS485/usb do Raspbery PI

Dokładnie tak, jak napisałeś. Potrzebujesz tylko adresy rejestrów i typy danych dla twojego licznika. Modbus to standard więc robisz wg, szablonu.

czyli skrypt jest ok i jest uniwersalny natomiast dla poszczególnych pomiarów trzeba tylko podstawić adresy z poniższej tabeli dla tego typu miernika i będzie ok ?
image

Wszystkie dane są typu float więc tylko kopiować i dostosować dla tego licznika.
Ustawić tylko właściwe (własne) parametry dla portu.
Zacznij od jednego rejestru i gdy zadziała dodasz kolejne.

na razie dzięki, najpierw muszę zwalczyć połączenie a jak się uda to będę dodawał po jednym pomiarze, jak się z tym wszystkim uporam to dam znać jak poszło

edit:
no więc tak, wrzuciłem ten skrypt co powyżej w configuration.yaml o dziwo się nic nie zbuntował sprawdzenie konfiguracji poprawne, natomiast nie wiem jak ruszyć dalej i jak uzyskać połączenie z licznikiem i aby HA cokolwiek zobaczył.
Licznik jest wpięty do USB maliny ma adres własny 025 natomiast nie bardzo wiem gdzie ten adres dopisać w configu,
na ten moment wpis w configu wygląda tak:

modbus:
  type: serial
  method: rtu
  port: /dev/ttyUSB0
  baudrate: 9600
  stopbits: 1
  bytesize: 8
  parity: N
sensor sdm:
    platform: modbus
    registers:
    - name: U L1
      unit_of_measurement: V
      slave: 1
      register: 0
      register_type: input
      count: 2
      data_type: float
      precision: 2

ten sensor smd mi tu nie pasuje (wkleiłem to z przykładu na razie bez zmian żeby coś ruszyło, ale na razie efektów brak)

a, jeszcze jedno jak sie łączę innym programem (modbus pull) z tym licznikiem po rs485/usb to dostaję jakieś pomiary więc samo połączenie działa, teraz tylko kwestia jak je uzyskać w HA ?

Zapomniałem wcześniej napisać aby zapoznać się w dokumentacji ze znaczeniem opcji

slave: 25

tutaj ?
image

czy przy “type: serial” nie powinno być myślnika przed ?

edit:

nie mogę sobie z tym poradzić, może ktoś podpowiedzieć co jest nie tak ?
to co od miejsca INFLUXdb działa, wpisy dotyczące czujników raspberry też są ok, natomiast od wpisu dotyczącego modbus oraz próby odczytów jednego parametru licznika nie działa i w dodatku teraz sobie nakopałem że nie przechodzi weryfikacja kompilacji

influxdb:
 host: a0d7b954-influxdb
 port: 8086
 username: homeassistant
 password: *********
 max_retries: 3
 default_measurement: state
 

 
 
sensor:
  - platform: systemmonitor
    resources:
      - type: disk_use_percent
        arg: /config
      - type: disk_use
      - type: disk_free
      - type: memory_use_percent
      - type: memory_use
      - type: memory_free
      - type: swap_use_percent
      - type: swap_use
      - type: swap_free
      - type: load_1m
      - type: load_5m
      - type: load_15m
      - type: network_in
        arg: eth0
      - type: network_out
        arg: eth0
      - type: throughput_network_in
        arg: eth0
      - type: throughput_network_out
        arg: eth0
      - type: packets_in
        arg: eth0
      - type: packets_out
        arg: eth0
      - type: ipv4_address
        arg: eth0
      - type: ipv6_address
        arg: eth0
      - type: processor_use
      - type: processor_temperature
      - type: last_boot
      
modbus:
   - type: serial
     method: rtu
     port: /dev/ttyUSB0
     baudrate: 9600
     stopbits: 1
     bytesize: 8
     parity: N

    platform: modbus
    registers:
    - name: licznik SINOMETER U L1
      unit_of_measurement: V
      slave: 25
      address: 02
      register: 0
      register_type: input
      count: 2
      data_type: float
      precision: 2
- name: licznik SINOMETER U L1
  unit_of_measurement: V
  slave: 25
  address: 02
  register_type: holding
  data_type: float
  precision: 2

Rejestry w liczniku raczej są typu “holding” - sprawdź w dokumentacji , z której dałeś
screen.

“count” nie definiujesz - wynika jednoznacznie z typu “float”.

Na razie na więcej analizy czasu nie mam :slight_smile:

na razie mam błąd w składni, pewnie znowu nakopałem z jakimiś spacjami :
image

Sprawdź nazwę portu USB. Jak to jest na Raspberry to chyba nazwa portu będzie inna.
U mnie tak jest port na malinie

sprawdzę,
tak, mam podłączone do maliny na usb,
ale na razie nakopałem w configu i nie przechodzi kompilacja więc najpierw to musze poprawić i nie bardzo wiem gdzie jest błąd

edit:

pogrzebałem, pozmieniałem i teraz to nawet konfiguracja nie przechodzi i wisi bez weryfikacji:

image

modbus:
  - name: licznik SINOMETER
    type: serial
    port: /dev/ttyUSB0
    baudrate: 9600
    bytesize: 8
    method: rtu
    parity: N
    stopbits: 1
     
     

  - name: pomiar U L1
    unit_of_measurement: V
    slave: 25
    address: 02
    register_type: holding
    data_type: float
    precision: 2

Pomiar U L1 musisz przenieść do sekcji sensor w zależności od tego jak masz zorganizowany plik configuration.yaml. Czy masz wszystko w jednym pliku, albo masz include albo packages.

Edit:
Wcześniej podałeś kawałek twojego pliku, więc przenieś to pod wpis z sensorami systemmonitor zaczynając od wpisu

- platform: modbus

zachowując odpowiednie wcięcia.

EDIT DLA POTOMNYCH
Powyższa porada jest błędna. Sensory modbus mają być w definicji modbus , a nie w głównych sensorach.

zrobiłem tak i teraz konfiguracja przechodzi poprawnie tylko nie wiem czy to jest poprawny zapis w configuration.yaml (wklejam cały)

oprócz tego mam część czujników ESP6266 w drugim configu mqtt.include.yaml dlatego jest do niego odniesienie, ale to nie ma znaczenia do tego co robię z modbusem (jak sądzę)

Jeśli ten zapis jest ok to pytanie jak wyłowić te odczyty z licznika do HA ?

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

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

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


influxdb:
 host: a0d7b954-influxdb
 port: 8086
 username: homeassistant
 password: *********
 max_retries: 3
 default_measurement: state
 
# konfiguracja MODBUS
modbus:
  - name: licznik SINOMETER
    type: serial
    port: /dev/ttyUSB0
    baudrate: 9600
    bytesize: 8
    method: rtu
    parity: N
    stopbits: 1
 
# konfiguracja dla czujników PRI4
sensor:
  - platform: systemmonitor
    resources:
      - type: disk_use_percent
        arg: /config
      - type: disk_use
      - type: disk_free
      - type: memory_use_percent
      - type: memory_use
      - type: memory_free
      - type: swap_use_percent
      - type: swap_use
      - type: swap_free
      - type: load_1m
      - type: load_5m
      - type: load_15m
      - type: network_in
        arg: eth0
      - type: network_out
        arg: eth0
      - type: throughput_network_in
        arg: eth0
      - type: throughput_network_out
        arg: eth0
      - type: packets_in
        arg: eth0
      - type: packets_out
        arg: eth0
      - type: ipv4_address
        arg: eth0
      - type: ipv6_address
        arg: eth0
      - type: processor_use
      - type: processor_temperature
      - type: last_boot
      

# konfiguracja dla odczytów licznika SINOMETER
  - platform: modbus
    name: pomiar U L1
    unit_of_measurement: V
    slave: 25
    address: 02
    register_type: holding
    data_type: float
    precision: 2

Więcej nie pomogę - nie mam u siebie integracji po modbus. Sprawdziłbym jeszcze ten port USB jak Ci się przedstawia w systemie i spróbować podmienić na to co się wyświetla.

ok, a powiesz jak to sprawdzić ?

Ustawienia>System>Sprzęt>Cały Sprzęt i szukaj USB

o to chodziło ?
image

czyli wygląda na to że wpis w configu odnośnie adresu USB jest ok ?

Możliwe że OK.
U mnie widoczne jest jako USB1 i USB2 dlatego taka moja sugestia.
usb2
A po rozwinięciu mam taką ścieżkę
usb

u mnie wygląda to tak:
image

co ciekawe przepinałem ten licznik pod kolejne porty USB w malinie i kolejne były zawsze 1 a jak wróciłem na ten niby zerowy to teraz też już jest 1 nawet po przeładowaniu HA, tak jak na powyższym screenie

edit:
po przeładowaniu przy wypiętym USB wrócił na port 0

Może zamiast gdybać, sprawdzić co jest w logach?