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