esphome / issues

Issue Tracker for ESPHome
https://esphome.io/
291 stars 34 forks source link

Modbus write number fails #4258

Open 17844 opened 1 year ago

17844 commented 1 year ago

The problem

Trying to write to modbus device fails

Which version of ESPHome has the issue?

2023.2.4

What type of installation are you using?

Home Assistant Add-on

Which version of Home Assistant has the issue?

2023.2.5

What platform are you using?

ESP8266

Board

nodemcu

Component causing the issue

No response

Example YAML snippet

substitutions:
  systemName: "IVT"

esphome:
  name: rs485
  platform: ESP8266
  board: nodemcu

# Enable logging
logger:
  level: VERBOSE

# Enable Home Assistant API
api:

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

captive_portal:

uart:
  id: mod_bus
  tx_pin: D3
  rx_pin: D4
  baud_rate: 9600
  parity: even

modbus:
  send_wait_time: 1000ms
#  flow_control_pin: 5
  id: modbus1

modbus_controller:
  - id: ivt
    ## the Modbus device addr
    address: 2
    modbus_id: modbus1
    setup_priority: -10
    command_throttle: 20ms
  - id: ivtpower
    ## the Modbus device addr
    address: 0x1
    modbus_id: modbus1
    setup_priority: -20
    command_throttle: 20ms

binary_sensor:
#discrete_input
  - name: "Tappvattenladdning"
    platform: modbus_controller
    modbus_controller_id: ivt
    register_type: discrete_input
    address: 3
  - name: "E21 driftind. (Värmepump)"
    platform: modbus_controller
    modbus_controller_id: ivt
    register_type: discrete_input
    address: 6
  - name: "E11 driftind. (Tillskott)"
    platform: modbus_controller
    modbus_controller_id: ivt
    register_type: discrete_input
    address: 8
  - name: "G1, driftindikering (framledning)"
    platform: modbus_controller
    modbus_controller_id: ivt
    register_type: discrete_input
    address: 9
  - name: "G2, driftindikering (värmebärare)"
    platform: modbus_controller
    modbus_controller_id: ivt
    register_type: discrete_input
    address: 10
  - name: "G3, driftindikering (köldbärare)"
    platform: modbus_controller
    modbus_controller_id: ivt
    register_type: discrete_input
    address: 11
  - name: "G5, driftindikering (hetgaspump)"
    platform: modbus_controller
    modbus_controller_id: ivt
    register_type: discrete_input
    address: 12
  - name: "G7, driftindikering (laddning)"
    platform: modbus_controller
    modbus_controller_id: ivt
    register_type: discrete_input
    address: 13
  - name: "E21 summalarm"
    platform: modbus_controller
    modbus_controller_id: ivt
    register_type: discrete_input
    address: 15
  - name: "Q21 status 1=VV 0=V"
    platform: modbus_controller
    modbus_controller_id: ivt
    register_type: discrete_input
    address: 16
# coil
  - name: "Alarm"
    platform: modbus_controller
    modbus_controller_id: ivt
    register_type: coil
    address: 15
sensor:
# read
  - name: "Ärvärde T1 FL"
    platform: modbus_controller
    modbus_controller_id: ivt
    unit_of_measurement: "°C"
    register_type: read
    accuracy_decimals: 1
    address: 42
    filters:
      - lambda: if (x >= 32768) return (x - 65536)/10; else return x/10;
  - name: "Ärvärde T2 UTE"
    platform: modbus_controller
    modbus_controller_id: ivt
    unit_of_measurement: "°C"
    register_type: read
    accuracy_decimals: 1
    address: 43
    filters:
      - lambda: if (x >= 32768) return (x - 65536)/10; else return x/10;
  - name: "Ärvärde T3 ST"
    platform: modbus_controller
    modbus_controller_id: ivt
    unit_of_measurement: "°C"
    register_type: read
    accuracy_decimals: 1
    address: 44
    filters:
      - lambda: if (x >= 32768) return (x - 65536)/10; else return x/10;
  - name: "Ärvärde T6 HetG"
    platform: modbus_controller
    modbus_controller_id: ivt
    unit_of_measurement: "°C"
    register_type: read
    accuracy_decimals: 1
    address: 45
    filters:
      - lambda: if (x >= 32768) return (x - 65536)/10; else return x/10;
  - name: "Ärvärde T8 Vut"
    platform: modbus_controller
    modbus_controller_id: ivt
    unit_of_measurement: "°C"
    register_type: read
    accuracy_decimals: 1
    address: 46
    filters:
      - lambda: if (x >= 32768) return (x - 65536)/10; else return x/10;
  - name: "Ärvärde T9 Vin"
    platform: modbus_controller
    modbus_controller_id: ivt
    unit_of_measurement: "°C"
    register_type: read
    accuracy_decimals: 1
    address: 47
    filters:
      - lambda: if (x >= 32768) return (x - 65536)/10; else return x/10;
  - name: "Ärvärde T10 Kin"
    platform: modbus_controller
    modbus_controller_id: ivt
    unit_of_measurement: "°C"
    register_type: read
    accuracy_decimals: 1
    address: 48
    filters:
      - lambda: if (x >= 32768) return (x - 65536)/10; else return x/10;
  - name: "Ärvärde T11 Kut"
    platform: modbus_controller
    modbus_controller_id: ivt
    unit_of_measurement: "°C"
    register_type: read
    accuracy_decimals: 1
    address: 49
    filters:
      - lambda: if (x >= 32768) return (x - 65536)/10; else return x/10;
  - name: "Börvärde T1 FL"
    platform: modbus_controller
    modbus_controller_id: ivt
    unit_of_measurement: "°C"
    register_type: read
    accuracy_decimals: 1
    address: 50
    filters:
      - lambda: if (x >= 32768) return (x - 65536)/10; else return x/10;
  - name: "Graddagar"
    platform: modbus_controller
    modbus_controller_id: ivt
    unit_of_measurement: "dagar"
    register_type: read
    address: 51
  - name: "Status KPR"
    platform: modbus_controller
    modbus_controller_id: ivt
    register_type: read
    address: 74
# Status kompressor: 0=Från,  1=Pumpstart, 2=Kontroll, 3=Kompressorstart, 4=Drift, 5=Stannar, 6=Larm
#holding 4xxxxx
  - name: "Parallelförskjutning, framledningskurva"
    platform: modbus_controller
    modbus_controller_id: ivt
    unit_of_measurement: "°C"
    register_type: holding
    accuracy_decimals: 1
    address: 16
    filters:
      - lambda: if (x >= 32768) return (x - 65536)/10; else return x/10;
  - name: "Ärvärde T5 rum"
    platform: modbus_controller
    modbus_controller_id: ivt
    unit_of_measurement: "°C"
    register_type: holding
    accuracy_decimals: 1
    address: 77
    filters:
      - lambda: if (x >= 32768) return (x - 65536)/10; else return x/10;
#ORNO POWER METER
  - platform: modbus_controller
    modbus_controller_id: ivtpower
    name: "ORNO Modbus ID"
    register_type: holding
    address: 0x0002
    unit_of_measurement: ""
    value_type: U_WORD
  - platform: modbus_controller
    modbus_controller_id: ivtpower
    name: "ORNO Modbus Baud"
    register_type: holding
    address: 0x0003
    unit_of_measurement: ""
    value_type: U_WORD
  - name: "L1 Power"
    platform: modbus_controller
    modbus_controller_id: ivtpower
    register_type: holding
    address: 0x000E
    unit_of_measurement: "V"
    value_type: FP32
    accuracy_decimals: 2
  - name: "L2 Power"
    platform: modbus_controller
    modbus_controller_id: ivtpower
    register_type: holding
    address: 0x0010
    unit_of_measurement: "V"
    value_type: FP32
    accuracy_decimals: 2
  - name: "L3 Power"
    platform: modbus_controller
    modbus_controller_id: ivtpower
    register_type: holding
    address: 0x0012
    unit_of_measurement: "V"
    value_type: FP32
    accuracy_decimals: 2
  - name: "Total Energy"
    platform: modbus_controller
    modbus_controller_id: ivtpower
    register_type: holding
    address: 0x0100
    unit_of_measurement: "kwh"
    value_type: FP32
    accuracy_decimals: 1

number:
  - platform: modbus_controller
    modbus_controller_id: ivt
    unit_of_measurement: "°C"
    register_type: holding
    id: satt_varmekurva
    name: "Sätt Värmekurva"
    min_value: 0
    max_value: 5
    step: 1
    address: 16
    value_type: U_WORD
    lambda: "return  x / 10; "
    write_lambda: |-
      ESP_LOGD("main","Modbus Number incoming value = %f",x);
      uint16_t s_varme = x * 10 ;
      payload.push_back(s_varme);
      return x / 10 ;

text_sensor:
  - platform: modbus_controller
    modbus_controller_id: ivt
    register_type: read
    address: 74
    raw_encode: HEXBYTES
    name: "Status KPR Text"
    lambda: |-
      uint16_t value = modbus_controller::byte_from_hex_str(x, 0);
      switch (value) {
        case 0: return std::string("Från");
        case 1: return std::string("Pumpstart");
        case 2: return std::string("Kontroll");
        case 3: return std::string("Kompressorstart");
        case 4: return std::string("Drift");
        case 5: return std::string("Stannar");
        case 6: return std::string("Larm");
        default: return std::string("Unknown");
      }
      return x;
  - platform: modbus_controller
    modbus_controller_id: ivt
    register_type: read
    address: 74
    raw_encode: HEXBYTES
    name: "Status KPR Text 2"
    lambda: |-
      uint16_t value = modbus_controller::byte_from_hex_str(x, 0);
      return x;

Anything in the logs that might be useful for us?

INFO Reading configuration /config/esphome/rs485.yaml...
INFO Starting log output from rs485.local using esphome API
INFO Successfully connected to rs485.local
[17:31:56][I][app:102]: ESPHome version 2023.2.4 compiled on Feb 28 2023, 17:30:57
[17:31:57][C][wifi:504]: WiFi:
[17:31:57][C][wifi:362]:   Local MAC:
[17:31:57][C][wifi:363]:   SSID: 
[17:31:57][C][wifi:364]:   IP Address: 192.168.30.11
[17:31:57][C][wifi:365]:   BSSID: 
[17:31:57][C][wifi:367]:   Hostname: 'rs485'
[17:31:57][C][wifi:369]:   Signal strength: -77 dB ▂▄▆█
[17:31:57][V][wifi:371]:   Priority: 0.0
[17:31:57][C][wifi:373]:   Channel: 11
[17:31:57][C][wifi:374]:   Subnet: 255.255.255.0
[17:31:57][C][wifi:375]:   Gateway: 192.168.30.1
[17:31:57][C][wifi:376]:   DNS1: 192.168.30.1
[17:31:57][C][wifi:377]:   DNS2: 0.0.0.0
[17:31:57][C][logger:293]: Logger:
[17:31:57][C][logger:294]:   Level: VERBOSE
[17:31:57][C][logger:295]:   Log Baud Rate: 115200
[17:31:57][C][logger:296]:   Hardware UART: UART0
[17:31:57][C][uart.arduino_esp8266:102]: UART Bus:
[17:31:57][C][uart.arduino_esp8266:103]:   TX Pin: GPIO0
[17:31:57][C][uart.arduino_esp8266:104]:   RX Pin: GPIO2
[17:31:57][C][uart.arduino_esp8266:106]:   RX Buffer Size: 256
[17:31:57][C][uart.arduino_esp8266:108]:   Baud Rate: 9600 baud
[17:31:57][C][uart.arduino_esp8266:109]:   Data Bits: 8
[17:31:57][C][uart.arduino_esp8266:110]:   Parity: EVEN
[17:31:57][C][uart.arduino_esp8266:111]:   Stop bits: 1
[17:31:57][C][uart.arduino_esp8266:115]:   Using software serial
[17:31:57][C][modbus:143]: Modbus:
[17:31:57][C][modbus:145]:   Send Wait Time: 1000 ms
[17:31:57][C][modbus:146]:   CRC Disabled: NO
[17:31:57][C][modbus.number:083]: modbus.numberModbus Number 'Sätt Värmekurva'
[17:31:57][C][modbus.number:083]: modbus.number  Unit of Measurement: '°C'
[17:31:57][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'Tappvattenladdning'
[17:31:57][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'E21 driftind. (Värmepump)'
[17:31:57][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'E11 driftind. (Tillskott)'
[17:31:57][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'G1, driftindikering (framledning)'
[17:31:57][V][modbus:042]: Modbus received Byte  2 (0X2)
[17:31:57][V][modbus:042]: Modbus received Byte  3 (0X3)
[17:31:57][V][modbus:042]: Modbus received Byte  2 (0X2)
[17:31:57][V][modbus:042]: Modbus received Byte  0 (0X0)
[17:31:57][V][modbus:042]: Modbus received Byte  0 (0X0)
[17:31:57][V][modbus:042]: Modbus received Byte  252 (0Xfc)
[17:31:57][V][modbus:042]: Modbus received Byte  68 (0X44)
[17:31:57][V][modbus_controller:055]: Modbus response queued
[17:31:57][V][modbus_controller:062]: Process modbus response for address 0x4D size: 2
[17:31:57][V][modbus_controller:098]: data for register address : 0x4D : 
[17:31:57][D][modbus_controller.sensor:025]: Sensor new state: 0.00
[17:31:57][V][sensor:076]: 'Ärvärde T5 rum': Received new state 0.000000
[17:31:57][D][sensor:126]: 'Ärvärde T5 rum': Sending state 0.00000 °C with 1 decimals of accuracy
[17:31:57][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'G2, driftindikering (värmebärare)'
[17:31:57][V][modbus_controller:035]: Sending next modbus command to device 2 register 0x2A count 10
[17:31:57][V][modbus:199]: Modbus write: 02.04.00.2A.00.0A.51.F6 (8)
[17:31:57][V][modbus_controller:486]: Command sent 4 0x2A 10
[17:31:57][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'G3, driftindikering (köldbärare)'
[17:31:57][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'G5, driftindikering (hetgaspump)'
[17:31:57][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'G7, driftindikering (laddning)'
[17:31:57][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'E21 summalarm'
[17:31:57][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'Q21 status 1=VV 0=V'
[17:31:57][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'Alarm'
[17:31:57][C][modbus_controller.sensor:010]: modbus_controller.sensorModbus Controller Sensor 'Ärvärde T1 FL'
[17:31:57][C][modbus_controller.sensor:010]: modbus_controller.sensor  State Class: ''
[17:31:57][C][modbus_controller.sensor:010]: modbus_controller.sensor  Unit of Measurement: '°C'
[17:31:57][C][modbus_controller.sensor:010]: modbus_controller.sensor  Accuracy Decimals: 1
[17:31:57][C][modbus_controller.sensor:010]: modbus_controller.sensorModbus Controller Sensor 'Ärvärde T2 UTE'
[17:31:57][C][modbus_controller.sensor:010]: modbus_controller.sensor  State Class: ''
[17:31:57][C][modbus_controller.sensor:010]: modbus_controller.sensor  Unit of Measurement: '°C'
[17:31:57][C][modbus_controller.sensor:010]: modbus_controller.sensor  Accuracy Decimals: 1
[17:31:57][C][modbus_controller.sensor:010]: modbus_controller.sensorModbus Controller Sensor 'Ärvärde T3 ST'
[17:31:57][C][modbus_controller.sensor:010]: modbus_controller.sensor  State Class: ''
[17:31:57][C][modbus_controller.sensor:010]: modbus_controller.sensor  Unit of Measurement: '°C'
[17:31:57][C][modbus_controller.sensor:010]: modbus_controller.sensor  Accuracy Decimals: 1
[17:31:57][C][modbus_controller.sensor:010]: modbus_controller.sensorModbus Controller Sensor 'Ärvärde T6 HetG'
[17:31:57][C][modbus_controller.sensor:010]: modbus_controller.sensor  State Class: ''
[17:31:57][C][modbus_controller.sensor:010]: modbus_controller.sensor  Unit of Measurement: '°C'
[17:31:57][C][modbus_controller.sensor:010]: modbus_controller.sensor  Accuracy Decimals: 1
[17:31:57][C][modbus_controller.sensor:010]: modbus_controller.sensorModbus Controller Sensor 'Ärvärde T8 Vut'
[17:31:57][C][modbus_controller.sensor:010]: modbus_controller.sensor  State Class: ''
[17:31:57][C][modbus_controller.sensor:010]: modbus_controller.sensor  Unit of Measurement: '°C'
[17:31:57][C][modbus_controller.sensor:010]: modbus_controller.sensor  Accuracy Decimals: 1
[17:31:57][C][modbus_controller.sensor:010]: modbus_controller.sensorModbus Controller Sensor 'Ärvärde T9 Vin'
[17:31:57][C][modbus_controller.sensor:010]: modbus_controller.sensor  State Class: ''
[17:31:57][C][modbus_controller.sensor:010]: modbus_controller.sensor  Unit of Measurement: '°C'
[17:31:57][C][modbus_controller.sensor:010]: modbus_controller.sensor  Accuracy Decimals: 1
[17:31:57][C][modbus_controller.sensor:010]: modbus_controller.sensorModbus Controller Sensor 'Ärvärde T10 Kin'
[17:31:57][C][modbus_controller.sensor:010]: modbus_controller.sensor  State Class: ''
[17:31:57][C][modbus_controller.sensor:010]: modbus_controller.sensor  Unit of Measurement: '°C'
[17:31:57][C][modbus_controller.sensor:010]: modbus_controller.sensor  Accuracy Decimals: 1
[17:31:57][V][modbus:042]: Modbus received Byte  2 (0X2)
[17:31:57][V][modbus:042]: Modbus received Byte  4 (0X4)
[17:31:57][V][modbus:042]: Modbus received Byte  20 (0X14)
[17:31:57][V][modbus:042]: Modbus received Byte  1 (0X1)
[17:31:57][V][modbus:042]: Modbus received Byte  122 (0X7a)
[17:31:57][V][modbus:042]: Modbus received Byte  0 (0X0)
[17:31:57][V][modbus:042]: Modbus received Byte  71 (0X47)
[17:31:57][V][modbus:042]: Modbus received Byte  2 (0X2)
[17:31:57][V][modbus:042]: Modbus received Byte  16 (0X10)
[17:31:57][V][modbus:042]: Modbus received Byte  2 (0X2)
[17:31:57][V][modbus:042]: Modbus received Byte  161 (0Xa1)
[17:31:57][V][modbus:042]: Modbus received Byte  1 (0X1)
[17:31:57][V][modbus:042]: Modbus received Byte  152 (0X98)
[17:31:57][V][modbus:042]: Modbus received Byte  1 (0X1)
[17:31:57][V][modbus:042]: Modbus received Byte  81 (0X51)
[17:31:57][V][modbus:042]: Modbus received Byte  255 (0Xff)
[17:31:57][V][modbus:042]: Modbus received Byte  255 (0Xff)
[17:31:57][V][modbus:042]: Modbus received Byte  255 (0Xff)
[17:31:57][V][modbus:042]: Modbus received Byte  202 (0Xca)
[17:31:57][V][modbus:042]: Modbus received Byte  1 (0X1)
[17:31:57][V][modbus:042]: Modbus received Byte  137 (0X89)
[17:31:57][V][modbus:042]: Modbus received Byte  92 (0X5c)
[17:31:57][V][modbus:042]: Modbus received Byte  168 (0Xa8)
[17:31:57][V][modbus:042]: Modbus received Byte  0 (0X0)
[17:31:57][V][modbus:042]: Modbus received Byte  134 (0X86)
[17:31:57][V][modbus_controller:055]: Modbus response queued
[17:31:57][V][component:200]: Component modbus took a long time for an operation (0.14 s).
[17:31:57][V][component:201]: Components should block for at most 20-30ms.
[17:31:57][V][modbus_controller:062]: Process modbus response for address 0x2A size: 20
[17:31:57][V][modbus_controller:098]: data for register address : 0x2A : 
[17:31:57][D][modbus_controller.sensor:025]: Sensor new state: 378.00
[17:31:57][V][sensor:076]: 'Ärvärde T1 FL': Received new state 378.000000
[17:31:57][D][sensor:126]: 'Ärvärde T1 FL': Sending state 37.80000 °C with 1 decimals of accuracy
[17:31:57][D][modbus_controller.sensor:025]: Sensor new state: 71.00
[17:31:57][V][sensor:076]: 'Ärvärde T2 UTE': Received new state 71.000000
[17:31:57][D][sensor:126]: 'Ärvärde T2 UTE': Sending state 7.10000 °C with 1 decimals of accuracy
[17:31:58][D][modbus_controller.sensor:025]: Sensor new state: 528.00
[17:31:58][V][sensor:076]: 'Ärvärde T3 ST': Received new state 528.000000
[17:31:58][D][sensor:126]: 'Ärvärde T3 ST': Sending state 52.80000 °C with 1 decimals of accuracy
[17:31:58][D][modbus_controller.sensor:025]: Sensor new state: 673.00
[17:31:58][V][sensor:076]: 'Ärvärde T6 HetG': Received new state 673.000000
[17:31:58][D][sensor:126]: 'Ärvärde T6 HetG': Sending state 67.30000 °C with 1 decimals of accuracy
[17:31:58][D][modbus_controller.sensor:025]: Sensor new state: 408.00
[17:31:58][V][sensor:076]: 'Ärvärde T8 Vut': Received new state 408.000000
[17:31:58][D][sensor:126]: 'Ärvärde T8 Vut': Sending state 40.80000 °C with 1 decimals of accuracy
[17:31:58][D][modbus_controller.sensor:025]: Sensor new state: 337.00
[17:31:58][V][sensor:076]: 'Ärvärde T9 Vin': Received new state 337.000000
[17:31:58][D][sensor:126]: 'Ärvärde T9 Vin': Sending state 33.70000 °C with 1 decimals of accuracy
[17:31:58][D][modbus_controller.sensor:025]: Sensor new state: 65535.00
[17:31:58][V][sensor:076]: 'Ärvärde T10 Kin': Received new state 65535.000000
[17:31:58][D][sensor:126]: 'Ärvärde T10 Kin': Sending state -0.10000 °C with 1 decimals of accuracy
[17:31:58][D][modbus_controller.sensor:025]: Sensor new state: 65482.00
[17:31:58][V][sensor:076]: 'Ärvärde T11 Kut': Received new state 65482.000000
[17:31:58][D][sensor:126]: 'Ärvärde T11 Kut': Sending state -5.40000 °C with 1 decimals of accuracy
[17:31:58][D][modbus_controller.sensor:025]: Sensor new state: 393.00
[17:31:58][V][sensor:076]: 'Börvärde T1 FL': Received new state 393.000000
[17:31:58][D][sensor:126]: 'Börvärde T1 FL': Sending state 39.30000 °C with 1 decimals of accuracy
[17:31:58][D][modbus_controller.sensor:025]: Sensor new state: 23720.00
[17:31:58][V][sensor:076]: 'Graddagar': Received new state 23720.000000
[17:31:58][D][sensor:126]: 'Graddagar': Sending state 23720.00000 dagar with 0 decimals of accuracy
[17:31:58][V][component:200]: Component modbus_controller took a long time for an operation (0.23 s).
[17:31:58][V][component:201]: Components should block for at most 20-30ms.
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensorModbus Controller Sensor 'Ärvärde T11 Kut'
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  State Class: ''
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  Unit of Measurement: '°C'
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  Accuracy Decimals: 1
[17:31:58][V][modbus_controller:035]: Sending next modbus command to device 2 register 0x4A count 1
[17:31:58][V][modbus:199]: Modbus write: 02.04.00.4A.00.01.10.2F (8)
[17:31:58][V][modbus_controller:486]: Command sent 4 0x4A 1
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensorModbus Controller Sensor 'Börvärde T1 FL'
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  State Class: ''
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  Unit of Measurement: '°C'
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  Accuracy Decimals: 1
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensorModbus Controller Sensor 'Graddagar'
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  State Class: ''
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  Unit of Measurement: 'dagar'
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  Accuracy Decimals: 0
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensorModbus Controller Sensor 'Status KPR'
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  State Class: ''
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  Unit of Measurement: ''
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  Accuracy Decimals: 0
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensorModbus Controller Sensor 'Parallelförskjutning, framledningskurva'
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  State Class: ''
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  Unit of Measurement: '°C'
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  Accuracy Decimals: 1
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensorModbus Controller Sensor 'Ärvärde T5 rum'
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  State Class: ''
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  Unit of Measurement: '°C'
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  Accuracy Decimals: 1
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensorModbus Controller Sensor 'ORNO Modbus ID'
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  State Class: ''
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  Unit of Measurement: ''
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  Accuracy Decimals: 0
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensorModbus Controller Sensor 'ORNO Modbus Baud'
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  State Class: ''
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  Unit of Measurement: ''
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  Accuracy Decimals: 0
[17:31:58][V][modbus:042]: Modbus received Byte  2 (0X2)
[17:31:58][V][modbus:042]: Modbus received Byte  4 (0X4)
[17:31:58][V][modbus:042]: Modbus received Byte  2 (0X2)
[17:31:58][V][modbus:042]: Modbus received Byte  0 (0X0)
[17:31:58][V][modbus:042]: Modbus received Byte  4 (0X4)
[17:31:58][V][modbus:042]: Modbus received Byte  252 (0Xfc)
[17:31:58][V][modbus:042]: Modbus received Byte  243 (0Xf3)
[17:31:58][V][modbus_controller:055]: Modbus response queued
[17:31:58][V][modbus_controller:062]: Process modbus response for address 0x4A size: 2
[17:31:58][V][modbus_controller:098]: data for register address : 0x4A : 
[17:31:58][D][modbus_controller.sensor:025]: Sensor new state: 4.00
[17:31:58][V][sensor:076]: 'Status KPR': Received new state 4.000000
[17:31:58][D][sensor:126]: 'Status KPR': Sending state 4.00000  with 0 decimals of accuracy
[17:31:58][V][modbus_controller.text_sensor:047]: Value overwritten by lambda
[17:31:58][V][text_sensor:016]: 'Status KPR Text': Received new state Från
[17:31:58][D][text_sensor:067]: 'Status KPR Text': Sending state 'Från'
[17:31:58][V][modbus_controller.text_sensor:047]: Value overwritten by lambda
[17:31:58][V][text_sensor:016]: 'Status KPR Text 2': Received new state 0004
[17:31:58][D][text_sensor:067]: 'Status KPR Text 2': Sending state '0004'
[17:31:58][V][component:200]: Component modbus_controller took a long time for an operation (0.07 s).
[17:31:58][V][component:201]: Components should block for at most 20-30ms.
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensorModbus Controller Sensor 'L1 Power'
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  State Class: ''
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  Unit of Measurement: 'V'
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  Accuracy Decimals: 2
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensorModbus Controller Sensor 'L2 Power'
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  State Class: ''
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  Unit of Measurement: 'V'
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  Accuracy Decimals: 2
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensorModbus Controller Sensor 'L3 Power'
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  State Class: ''
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  Unit of Measurement: 'V'
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  Accuracy Decimals: 2
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensorModbus Controller Sensor 'Total Energy'
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  State Class: ''
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  Unit of Measurement: 'kwh'
[17:31:58][C][modbus_controller.sensor:010]: modbus_controller.sensor  Accuracy Decimals: 1
[17:31:58][C][modbus_controller.text_sensor:012]: Modbus Controller Text Sensor 'Status KPR Text'
[17:31:58][C][modbus_controller.text_sensor:012]: Modbus Controller Text Sensor 'Status KPR Text 2'
[17:31:58][C][captive_portal:088]: Captive Portal:
[17:31:58][C][mdns:108]: mDNS:
[17:31:58][C][mdns:109]:   Hostname: rs485
[17:31:58][V][mdns:110]:   Services:
[17:31:58][V][mdns:112]:   - _esphomelib, _tcp, 6053
[17:31:58][V][mdns:114]:     TXT: version = 2023.2.4
[17:31:58][V][mdns:114]:     TXT: mac = 500291e1b125
[17:31:58][V][mdns:114]:     TXT: platform = ESP8266
[17:31:58][V][mdns:114]:     TXT: board = nodemcu
[17:31:58][V][mdns:114]:     TXT: network = wifi
[17:31:58][C][ota:093]: Over-The-Air Updates:
[17:31:58][C][ota:094]:   Address: rs485.local:8266
[17:31:58][C][ota:097]:   Using Password.
[17:31:58][C][api:138]: API Server:
[17:31:58][C][api:139]:   Address: rs485.local:6053
[17:31:58][C][api:143]:   Using noise encryption: NO
[17:31:58][C][modbus_controller:275]: ModbusController:
[17:31:59][C][modbus_controller:276]:   Address: 0x02
[17:31:59][C][modbus_controller:278]: sensormap
[17:31:59][C][modbus_controller:280]:  Sensor type=1 start=0xF offset=0x0 count=1 size=1
[17:31:59][C][modbus_controller:280]:  Sensor type=2 start=0x3 offset=0x0 count=1 size=1
[17:31:59][C][modbus_controller:280]:  Sensor type=2 start=0x6 offset=0x0 count=1 size=1
[17:31:59][C][modbus_controller:280]:  Sensor type=2 start=0x8 offset=0x0 count=1 size=1
[17:31:59][C][modbus_controller:280]:  Sensor type=2 start=0x8 offset=0x1 count=1 size=1
[17:31:59][C][modbus_controller:280]:  Sensor type=2 start=0x8 offset=0x2 count=1 size=1
[17:31:59][C][modbus_controller:280]:  Sensor type=2 start=0x8 offset=0x3 count=1 size=1
[17:31:59][C][modbus_controller:280]:  Sensor type=2 start=0x8 offset=0x4 count=1 size=1
[17:31:59][C][modbus_controller:280]:  Sensor type=2 start=0x8 offset=0x5 count=1 size=1
[17:31:59][C][modbus_controller:280]:  Sensor type=2 start=0xF offset=0x0 count=1 size=1
[17:31:59][C][modbus_controller:280]:  Sensor type=2 start=0xF offset=0x1 count=1 size=1
[17:31:59][C][modbus_controller:280]:  Sensor type=3 start=0x10 offset=0x0 count=1 size=2
[17:31:59][C][modbus_controller:280]:  Sensor type=3 start=0x10 offset=0x0 count=1 size=2
[17:31:59][C][modbus_controller:280]:  Sensor type=3 start=0x4D offset=0x0 count=1 size=2
[17:31:59][C][modbus_controller:280]:  Sensor type=4 start=0x2A offset=0x0 count=1 size=2
[17:31:59][C][modbus_controller:280]:  Sensor type=4 start=0x2A offset=0x2 count=1 size=2
[17:31:59][C][modbus_controller:280]:  Sensor type=4 start=0x2A offset=0x4 count=1 size=2
[17:31:59][C][modbus_controller:280]:  Sensor type=4 start=0x2A offset=0x6 count=1 size=2
[17:31:59][C][modbus_controller:280]:  Sensor type=4 start=0x2A offset=0x8 count=1 size=2
[17:31:59][C][modbus_controller:280]:  Sensor type=4 start=0x2A offset=0xA count=1 size=2
[17:31:59][C][modbus_controller:280]:  Sensor type=4 start=0x2A offset=0xC count=1 size=2
[17:31:59][C][modbus_controller:280]:  Sensor type=4 start=0x2A offset=0xE count=1 size=2
[17:31:59][C][modbus_controller:280]:  Sensor type=4 start=0x2A offset=0x10 count=1 size=2
[17:31:59][C][modbus_controller:280]:  Sensor type=4 start=0x2A offset=0x12 count=1 size=2
[17:31:59][C][modbus_controller:280]:  Sensor type=4 start=0x4A offset=0x0 count=1 size=2
[17:31:59][C][modbus_controller:280]:  Sensor type=4 start=0x4A offset=0x0 count=1 size=2
[17:31:59][C][modbus_controller:280]:  Sensor type=4 start=0x4A offset=0x0 count=1 size=2
[17:31:59][C][modbus_controller:284]: ranges
[17:31:59][C][modbus_controller:286]:   Range type=1 start=0xF count=1 skip_updates=0
[17:31:59][C][modbus_controller:286]:   Range type=2 start=0x3 count=1 skip_updates=0
[17:31:59][C][modbus_controller:286]:   Range type=2 start=0x6 count=1 skip_updates=0
[17:31:59][C][modbus_controller:286]:   Range type=2 start=0x8 count=6 skip_updates=0
[17:31:59][C][modbus_controller:286]:   Range type=2 start=0xF count=2 skip_updates=0
[17:31:59][C][modbus_controller:286]:   Range type=3 start=0x10 count=1 skip_updates=0
[17:31:59][C][modbus_controller:286]:   Range type=3 start=0x4D count=1 skip_updates=0
[17:31:59][C][modbus_controller:286]:   Range type=4 start=0x2A count=10 skip_updates=0
[17:31:59][C][modbus_controller:286]:   Range type=4 start=0x4A count=1 skip_updates=0
[17:31:59][C][modbus_controller:275]: ModbusController:
[17:31:59][C][modbus_controller:276]:   Address: 0x01
[17:31:59][C][modbus_controller:278]: sensormap
[17:31:59][C][modbus_controller:280]:  Sensor type=3 start=0x2 offset=0x0 count=1 size=2
[17:31:59][C][modbus_controller:280]:  Sensor type=3 start=0x2 offset=0x2 count=1 size=2
[17:31:59][C][modbus_controller:280]:  Sensor type=3 start=0xE offset=0x0 count=2 size=4
[17:31:59][C][modbus_controller:280]:  Sensor type=3 start=0xE offset=0x4 count=2 size=4
[17:31:59][C][modbus_controller:280]:  Sensor type=3 start=0xE offset=0x8 count=2 size=4
[17:31:59][C][modbus_controller:280]:  Sensor type=3 start=0x100 offset=0x0 count=2 size=4
[17:31:59][C][modbus_controller:284]: ranges
[17:31:59][C][modbus_controller:286]:   Range type=3 start=0x2 count=2 skip_updates=0
[17:31:59][C][modbus_controller:286]:   Range type=3 start=0xE count=6 skip_updates=0
[17:31:59][C][modbus_controller:286]:   Range type=3 start=0x100 count=2 skip_updates=0
[17:32:02][D][api:102]: Accepted 192.168.200.162
[17:32:02][V][api.connection:899]: Hello from client: 'Home Assistant 2023.2.5 (192.168.200.162)' | API Version 1.7
[17:32:02][D][api.connection:918]: Home Assistant 2023.2.5 (192.168.200.162): Connected successfully
[17:32:09][D][number:054]: 'Sätt Värmekurva' - Setting number value
[17:32:09][D][number:113]:   New number value: 2.000000
[17:32:09][D][main:290]: Modbus Number incoming value = 2.000000
[17:32:09][V][modbus.number:039]: Value overwritten by lambda
[17:32:09][V][modbus.number:050]: Modbus Number write raw: 0014
[17:32:09][D][number:012]: 'Sätt Värmekurva': Sending state 2.000000
[17:32:09][V][modbus_controller:035]: Sending next modbus command to device 2 register 0x00 count 0
[17:32:09][V][modbus:220]: Modbus write raw: 00.14
[17:32:09][V][modbus_controller:486]: Command sent 0 0x0 0
[17:32:09][V][modbus_controller:035]: Sending next modbus command to device 2 register 0x00 count 0
[17:32:09][V][modbus:220]: Modbus write raw: 00.14
[17:32:09][V][modbus_controller:486]: Command sent 0 0x0 0
[17:32:09][V][modbus_controller:035]: Sending next modbus command to device 2 register 0x00 count 0
[17:32:09][V][modbus:220]: Modbus write raw: 00.14
[17:32:09][V][modbus_controller:486]: Command sent 0 0x0 0
[17:32:09][V][modbus_controller:035]: Sending next modbus command to device 2 register 0x00 count 0
[17:32:09][V][modbus:220]: Modbus write raw: 00.14
[17:32:09][V][modbus_controller:486]: Command sent 0 0x0 0
[17:32:09][V][modbus_controller:035]: Sending next modbus command to device 2 register 0x00 count 0
[17:32:09][V][modbus:220]: Modbus write raw: 00.14
[17:32:09][V][modbus_controller:486]: Command sent 0 0x0 0
[17:32:09][D][modbus_controller:029]: Modbus command to device=2 register=0x00 countdown=0 no response received - removed from send queue

Additional information

When trying to write a value to number "Sätt Värmekurva", it fails. See last part of log. No Response. reading data from same register is no problem. It has worked in earlier versions but I am not sure when it stopped working.

erlendmlhub commented 1 year ago

I am stuck in same position as you when trying to write a value to a number. Did you find it out?

cfr-mir commented 7 months ago

I have been stuck there for a while. Documentation might be better on this particular topic. After a bit of browsing the c++ code for modbus controller. It seems that you can do three things, but only one thing at a time.

  1. Return the value you want to write. DO NOT push anything to "payload".
  2. push the entire raw modbus frame to the payload vector and return whetever comes into mind, like 42.
  3. If you don't need to modify the number, when writing.Leave out the "write_lambda:" section. Just declare register_type: as "holding".

This is what I read in the code. I didn't have the time to test it yet.

The example provided in the documentation, will definitely never hit any Modbus target. However, the text above the example, actually does give a decent overview.

I will try it out later this week. If I am wrong, I will write another comment.