Troubleshooting

SEN0604 RS485 4-in-1 Soil Sensor Problems

userHead antonis.kostakis 2026-07-02 22:32:43 630 Views1 Replies

Hello,

I purchased the SEN0604 RS485 4-in-1 Soil Sensor (SKU: SEN0604) about 3 days ago.

Unfortunately, the sensor is not working correctly. Here are the issues:
 

- When the sensor is clean and in open air, Raw Soil Moisture shows around 435 (43.5%) instead of near 0-15%. 
- Soil Temperature behaves incorrectly (rises when watering instead of dropping). 
- pH shows unrealistic values (e.g. 0.4).

My code is this 


 

 ================== SENSORS ==================
 

 # SEN0604 - Raw Values debugging

 - platform: modbus_controller
   modbus_controller_id: soil_sensor
   name: "Raw Soil Temperature"
   address: 0x0000
   register_type: holding
   value_type: S_WORD
   accuracy_decimals: 1
 

 - platform: modbus_controller
   modbus_controller_id: soil_sensor
   name: "Soil Temperature"
   address: 0x0000
   register_type: holding
   value_type: S_WORD
   accuracy_decimals: 1
   unit_of_measurement: "°C"
   filters:
     - multiply: 0.1
 

 - platform: modbus_controller
   modbus_controller_id: soil_sensor
   name: "Raw Soil Moisture"
   address: 0x0001
   register_type: holding
   value_type: U_WORD
   accuracy_decimals: 1
 

 - platform: modbus_controller
   modbus_controller_id: soil_sensor
   name: "Soil Moisture"
   address: 0x0001
   register_type: holding
   value_type: U_WORD
   accuracy_decimals: 1
   unit_of_measurement: "%"
   filters:
     - multiply: 0.1
 

 - platform: modbus_controller
   modbus_controller_id: soil_sensor
   name: "Soil EC"
   address: 0x0002
   register_type: holding
   value_type: U_WORD
   unit_of_measurement: "µS/cm"
 

 - platform: modbus_controller
   modbus_controller_id: soil_sensor
   name: "Soil pH"
   address: 0x0003
   register_type: holding
   value_type: U_WORD
   accuracy_decimals: 1
   unit_of_measurement: "pH"
   filters:
     - multiply: 0.1

The sensor was properly cleaned and tested in water and air.


Any ideas? 

2026-07-03 10:08:36

The first two registers look swapped in your ESPHome config. For SEN0604, the DFRobot wiki lists register 0x0000 as moisture and 0x0001 as temperature. So your “Raw Soil Moisture = 435” is probably the temperature register being displayed as moisture, and your “temperature rises when watering” is likely moisture being displayed as temperature.


Try this mapping first:

# Moisture: 0x0000, value x0.1
# Temperature: 0x0001, signed value x0.1
# EC: 0x0002
# pH: 0x0003, value x0.1


The pH value is also not meaningful in open air, but if register 0x0003 still reads raw 4 / pH 0.4 after fixing the mapping, I would test once with the official Modbus frame or Arduino example and compare the raw 4-register response. Normal pH raw values should be around 30-90 for pH 3.0-9.0. 

 

Wiki reference: https://wiki.dfrobot.com/sen0604/docs/20297

userHeadPic Yx