Modbus Soil Sensor integration

Hello,

I have some problem to convert an arduino sketch to esphome integrations.

/*
  Note: 
  *Serial Port 0 is not used to connect the RS485 Converter (MAX485) because its used for debugging. 
  *The Serial Port 1 (TX1, RX1) is used for ModBus communication interface.
  *Wiring of Sensor, Arduino, and MAX485 TTL to RS485 Converter:
  ___________________________________________________________________________________________
  | Sensor (SHT20)   |   MAX485 TTL to RS485 Converter
  |  A (Yellow)      |        A (Terminal block)
  |  B (White)       |        B (Terminal block)
  |  GND (Black)     |       GND (External Supply)
  |  Vs (Red)        |      5-30V (External Supply)
  ___________________________________________________________________________________________
  | MAX485 TTL to RS485 Converter  |  Arduino (Hardware Serial)  |  Arduino (Software Serial)   ESP
  |     RO (Reciever Output)       |        D19 (RX1)            |          D9 (RX)             D19
  |     RE (Reciever Enable)       |        D2                   |          D2                  D2
  |     DE (Driver Enable)         |        D3                   |          D3                  D4
  |     DI (Driver Input)          |        D18 (TX1)            |          D10 (TX)            D18
  ___________________________________________________________________________________________
*/



// Define the pins used by the RS-485 module
#define MAX485_RE_NEG 2
#define MAX485_DE 4

void setup() {
  // Initialize program Serial port at 115200 baud rate
  Serial.begin(115200);

  // Initialize modbus Serial port at 4800 baud rate
  pinMode(MAX485_RE_NEG, OUTPUT);
  pinMode(MAX485_DE, OUTPUT);
  digitalWrite(MAX485_RE_NEG, 0);
  digitalWrite(MAX485_DE, 0);

  // Start the Modbus serial Port, for Soil_sensor
  Serial1.begin(4800, SERIAL_8N1, 18, 19); // Use Serial1 with pins 18 (RX) and 19 (TX)
  delay(1000);
}

void loop() {
  // Read Soil Moisture/Humidity
  preTransmission();
  byte soil_humidity_request[] = { 0x01, 0x03, 0x00, 0x00, 0x00, 0x01, 0x84, 0x0a };
  Serial1.write(soil_humidity_request, sizeof(soil_humidity_request));
  Serial1.flush();
  postTransmission();
  byte soil_humidity_buff[16] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
  Serial1.readBytes(soil_humidity_buff, 16);
  float humidity = word(soil_humidity_buff[4], soil_humidity_buff[5]);
  humidity = humidity / 10.0;

  // Print received response for Humidity
  Serial.print("Received response for Humidity: ");
  for (int i = 0; i < 8; i++) {
    Serial.print(soil_humidity_buff[i], HEX);
    Serial.print(" ");
  }
  Serial.println();

  delay(1000);

  // Read Soil Temperature
  preTransmission();
  byte soil_temperature_request[] = { 0x01, 0x03, 0x00, 0x01, 0x00, 0x01, 0xd5, 0xca };
  Serial1.write(soil_temperature_request, sizeof(soil_temperature_request));
  Serial1.flush();
  postTransmission();
  byte soil_temperature_buff[16] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
  Serial1.readBytes(soil_temperature_buff, 16);
  float temperature = word(soil_temperature_buff[4], soil_temperature_buff[5]);
  temperature = temperature / 10.0;

  // Print received response for Temperature
  Serial.print("Received response for Temperature: ");
  for (int i = 0; i < 8; i++) {
    Serial.print(soil_temperature_buff[i], HEX);
    Serial.print(" ");
  }
  Serial.println();

  // Print sensor parameters
  Serial.print("Humidity: ");
  Serial.print(humidity);
  Serial.print("%  ");
  Serial.print("Temperature: ");
  Serial.print(temperature);
  Serial.print("°C  ");
  Serial.println();
  delay(1000);
}

void preTransmission() {
  digitalWrite(MAX485_RE_NEG, HIGH);
  digitalWrite(MAX485_DE, HIGH);
}

void postTransmission() {
  digitalWrite(MAX485_RE_NEG, LOW);
  digitalWrite(MAX485_DE, LOW);
}

Below my yaml code:

esphome:
  name: esp-jardin
  friendly_name: ESP_JARDIN

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable Home Assistant API
api:
  encryption:
    key: "xxxx"

ota:
  password: "xxxx"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  domain: .totot.gt

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp-Vmc Fallback Hotspot"
    password: "unFvoFHElM4h"

# Définition des capteurs
sensor:
  # - platform: modbus_controller
  #   name: "Humidity"
  #   address: 0x01
  #   # register_type: holding
  #   # register_count: 2
  #   custom_command: [ 0x1, 0x3, 0x00, 0x1, 0x00, 0x1, 0xd5, 0xca]
  #   value_type: FP32
  #   unit_of_measurement: "%"
  #   accuracy_decimals: 1
  #   device_class: humidity

  - platform: modbus_controller
    modbus_controller_id: modbus_jardin
    name: "Temperature"
    address: 0x0001
    register_type: holding
    # register_count: 2
    value_type: S_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    device_class: temperature

# Définition des broches UART
uart:
  rx_pin: GPIO19
  tx_pin: GPIO18
  parity: NONE
  baud_rate: 4800
  id: uart_modbus
  stop_bits: 1  
  debug:
      direction: BOTH
      dummy_receiver: false
      after:
        timeout: 1s
      sequence:
        - lambda: UARTDebug::log_hex(direction, bytes,' ');

# Configuration du MAX485 pour la réception
modbus:
  id: modbus_id
  uart_id: uart_modbus
  flow_control_pin: GPIO2

modbus_controller:
  id: modbus_jardin
  modbus_id: modbus_id
  update_interval: 10s
  address: 0x1  

# output:
#   - platform: gpio
#     pin: GPIO2
#     id: max485_re_neg
#   - platform: gpio
#     pin: GPIO4
#     id: max485_de

# Affichage des données sur la console série
logger:
  level: VERY_VERBOSE

i have no response :

Modbus command to device=1 register=0x01 countdown=0 no response received - removed from send queue

Please if you have any advice,

Thank you