ESPHome Modbus wskazania inne niż w liczniku TAC1100

Cześć.
Zakupiłem licznik dts777 i TAC1100.
Wzorowałem sie tym postem Tani miernik energii DTS777 z modbus - odczyt przez esp8266.
Dts działa bez problemu jednak ten TAC po przerobieniu kodu w esphome pokazuje jakieś dziwne wartości.
image

Wpisuje te adresy

Tak wygląda część kodu z tymi wartościami

sensor:

  - platform: modbus_controller
    id: faza_l1_napiecie_dts777
    name: "Faza L1 napięcie PC"
    state_class: measurement
    device_class: voltage
    register_type: read
    address: 0x00
    unit_of_measurement: "V"
    value_type: S_WORD
    accuracy_decimals: 1
#    skip_updates: 60

#    skip_updates: 60
#   filters:
#    - multiply: 0.1
  - platform: modbus_controller
    id: czestotliwosc_dts777
    name: "Częstotliwość"
    register_type: read
    state_class: measurement
    device_class: frequency
    address: 0x30
    unit_of_measurement: "Hz"
    value_type: S_WORD
    accuracy_decimals: 2

Dodam że w liczniku wartości są dobre. Gdzie szukać przyczyny?

mi się zdaje, że tutaj

Czyli zostaje mi opcja skalowania wartości filtrem multiply?

Raczej ustawienia poprawnego typu danych.
W tabelce pokazujesz, że wartości są 4-bajtowe (32-bitowe) a stosujesz typ 2-bajtowy (16-bitowy), na bis twój typ to całkowity (integer), a w tabelce jest rzeczywisty (floating point).

Stosując wiecej bitów mam jaeszcze bardziej kosmiczne wskazania
image

Do wypróbowania są tylko 2 typy FP32 i FP32_R a jaki użyłeś na obrazku powyżej?

Jeśli żaden z sugerowanych nie działa, to trzeba się zastanowić czy czytasz z właściwych rejestrów.

testowałem narazie U_DWORD , S_DWORD i U_DWORD_R

Ale to są typy integer, a w tabelce masz float…

Dzięki Mistrzu.
Wszystko przez to że sobie przetłumaczyłem stronę. Późno już a walczę z tymi licznikami już od południa. Jeszcze raz wielkie dzięki.

Gdy ukończysz projekt wrzuć finalny YAML i jakoś zmień tytuł, może ktoś skorzysta

1 polubienie

Finalnie już wszystko spięte. Zmieniłem tytuł bo temat dotyczył licznika TAC1100 a nie DTSa. Ogólnie tani (a czy dobry, to się okaże) i wypasiony sprzęt . Sprzedawca z Chin podesłał spoko dokumentację dotyczącą Modbus’a.

uart:
  - id: mod_bus_dts
    rx_pin:  GPIO16 # TX
    tx_pin: GPIO17  # RX
    baud_rate: 9600
    stop_bits: 1

modbus:
  - id: modbus_shared 
  
modbus_controller:
  - id: LicznikTAC
    address: 0x2
    modbus_id: modbus_shared
    command_throttle: 100ms
    setup_priority: -10
    update_interval: 15s

  - platform: modbus_controller
    modbus_controller_id: LicznikTAC
    id: energia_czynna
    name: "Energia czynna całkowita"
    state_class: total_increasing
    device_class: energy
    register_type: read
    address: 0x0504
    unit_of_measurement: "kWh"
    value_type: FP32
    accuracy_decimals: 2
    filters:
      - multiply: 1

  - platform: modbus_controller
    modbus_controller_id: LicznikTAC
    id: faza_l1_moc_czynna
    name: "Faza L1 moc czynna"
    register_type: read
    address: 0x000C
    unit_of_measurement: "W"
    value_type: FP32
    accuracy_decimals: 1
    state_class: measurement
    device_class: power
    filters:
      - multiply: 1

I tak dalej, w zależności jakie wartości potrzebujemy wyciągnąć z licznika.
Dodaje również dokumentację Modbus.
TAC11XX series Modbus Protocol v1.0 (1).docx.zip (57,5 KB)

1 polubienie