jaca14
(Jacek Witkowski)
12 Październik 2024 19:20
1
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.
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?
jaca14
(Jacek Witkowski)
12 Październik 2024 22:03
3
Czyli zostaje mi opcja skalowania wartości filtrem multiply?
szopen
12 Październik 2024 22:06
4
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).
jaca14
(Jacek Witkowski)
12 Październik 2024 22:19
5
Stosując wiecej bitów mam jaeszcze bardziej kosmiczne wskazania
szopen
12 Październik 2024 22:22
6
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.
jaca14
(Jacek Witkowski)
12 Październik 2024 22:26
7
testowałem narazie U_DWORD , S_DWORD i U_DWORD_R
szopen
12 Październik 2024 22:27
8
Ale to są typy integer, a w tabelce masz float…
jaca14
(Jacek Witkowski)
12 Październik 2024 22:37
9
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.
szopen
12 Październik 2024 22:40
10
Gdy ukończysz projekt wrzuć finalny YAML i jakoś zmień tytuł, może ktoś skorzysta
1 polubienie
jaca14
(Jacek Witkowski)
28 Październik 2024 19:03
11
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