The log says "modbus_controller took a long time"?

Is this real?
Here is my log (abridged):

[09:56:23][V][modbus:184]: Modbus write: 01.04.00.01.00.02.20.0B (8)
[09:56:23][V][modbus_controller:487]: Command sent 4 0x1 2
[09:56:23][V][modbus:058]: Modbus received Byte  1 (0X1)
[09:56:23][V][modbus:058]: Modbus received Byte  4 (0X4)
[09:56:23][V][modbus:058]: Modbus received Byte  4 (0X4)
[09:56:23][V][modbus:058]: Modbus received Byte  0 (0X0)
[09:56:23][V][modbus:058]: Modbus received Byte  229 (0Xe5)
[09:56:23][V][modbus:058]: Modbus received Byte  2 (0X2)
[09:56:23][V][modbus:058]: Modbus received Byte  4 (0X4)
[09:56:23][V][modbus:058]: Modbus received Byte  234 (0Xea)
[09:56:23][V][modbus:058]: Modbus received Byte  208 (0Xd0)
[09:56:23][V][modbus_controller:055]: Modbus response queued
[09:56:23][V][modbus_controller:063]: Process modbus response for address 0x1 size: 4
[09:56:23][V][modbus_controller:098]: data for register address : 0x1 : 
[09:56:24][D][modbus_controller.sensor:025]: Sensor new state: 229.00
[09:56:24][V][sensor:074]: 'XY-MD02 Temp': Received new state 229.000000
[09:56:24][D][sensor:125]: 'XY-MD02 Temp': Sending state 22.90000 °C with 1 decimals of accuracy
[09:56:24][D][modbus_controller.sensor:025]: Sensor new state: 516.00
[09:56:24][V][sensor:074]: 'XY-MD02 Humi': Received new state 516.000000
[09:56:24][D][sensor:125]: 'XY-MD02 Humi': Sending state 51.60000 % with 1 decimals of accuracy
[09:56:24][V][component:199]: Component modbus_controller took a long time for an operation (0.06 s).
[09:56:24][V][component:200]: Components should block for at most 20-30ms.
[09:56:33][V][modbus_controller:159]: Updating modbus component
[09:56:33][V][modbus_controller:126]: Range : 1 Size: 2 (4) skip: 0
[09:56:33][V][modbus_controller:036]: Sending next modbus command to device 1 register 0x01 count 2
[09:56:33][V][modbus:184]: Modbus write: 01.04.00.01.00.02.20.0B (8)
[09:56:33][V][modbus_controller:487]: Command sent 4 0x1 2
[09:56:33][V][modbus:058]: Modbus received Byte  1 (0X1)
[09:56:33][V][modbus:058]: Modbus received Byte  4 (0X4)
[09:56:33][V][modbus:058]: Modbus received Byte  4 (0X4)
[09:56:33][V][modbus:058]: Modbus received Byte  0 (0X0)
[09:56:33][V][modbus:058]: Modbus received Byte  229 (0Xe5)
[09:56:33][V][modbus:058]: Modbus received Byte  2 (0X2)
[09:56:33][V][modbus:058]: Modbus received Byte  1 (0X1)
[09:56:33][V][modbus:058]: Modbus received Byte  42 (0X2a)
[09:56:33][V][modbus:058]: Modbus received Byte  211 (0Xd3)
[09:56:33][V][modbus_controller:055]: Modbus response queued
[09:56:33][V][modbus_controller:063]: Process modbus response for address 0x1 size: 4
[09:56:33][V][modbus_controller:098]: data for register address : 0x1 : 
[09:56:33][D][modbus_controller.sensor:025]: Sensor new state: 229.00
[09:56:33][V][sensor:074]: 'XY-MD02 Temp': Received new state 229.000000
[09:56:33][D][sensor:125]: 'XY-MD02 Temp': Sending state 22.90000 °C with 1 decimals of accuracy
[09:56:33][D][modbus_controller.sensor:025]: Sensor new state: 513.00
[09:56:33][V][sensor:074]: 'XY-MD02 Humi': Received new state 513.000000
[09:56:33][D][sensor:125]: 'XY-MD02 Humi': Sending state 51.30000 % with 1 decimals of accuracy
[09:56:33][V][component:199]: Component modbus_controller took a long time for an operation (0.06 s).
[09:56:33][V][component:200]: Components should block for at most 20-30ms.

… which I think is implying that my Modbus device (an XY-MD02 cheepie Temp/Humi) is taking 60mSec to respond.
While if I scope the Tx/Rx lines, I see this:


… the time between the two rulers is less than 4mSec?

Can anyone help me explain this apparent discrepancy?
Regards, M.

PS. Just for completeness, here is my .yaml:

esphome:
  name: esp32-xy-md02

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:
  level: VERBOSE

# Enable Home Assistant API
api:
  encryption:
    key: "096fMlgiz/Tbj36R/lT2PELb+2DypE7T6JlbFC9PvWQ="

ota:
  password: "bce11dbbc5d6cb522b2a77e1dc100a94"

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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp32-Xy-Md02 Fallback Hotspot"
    password: "iil8vDHcbXmg"

captive_portal:

uart:
  - id: uart2
    tx_pin: GPIO17 #marked as TX2 on DOITDEVKIT1
    rx_pin: GPIO16 #marked as RX2
    baud_rate: 9600
    stop_bits: 1
    parity: none
    
  
  
modbus:
  uart_id: uart2
  id: modbus1
  
modbus_controller:
  - id: xy_md02
    address: 0x01
    modbus_id: modbus1
    update_interval: 10s
    
sensor:
  - platform: modbus_controller
    modbus_controller_id: xy_md02
    name: "XY-MD02 Temp"
    id: xy_md02_temp
    register_type: read
    address: 0x01
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.10
  
  - platform: modbus_controller
    modbus_controller_id: xy_md02
    name: "XY-MD02 Humi"
    id: xy_md02_humi
    register_type: read
    address: 0x02
    unit_of_measurement: "%"
    accuracy_decimals: 1
    filters:
      - multiply: 0.10
1 Like