Soil Mosisture reading in sequence

Hi all, when I use the following LUA code:

soil_moisture = read_pin(59, “analog”)

The value does not appear in the ‘sensor history’ section of the web app. Is there any way to achieve this within a sequence?

Thanks

Yes! What you need to do after the read_pin() call is use the new_sensor_reading() function.

1 Like

Thank you. When I run below code

I got this error message "%Exqlite.Error{message: “NOT NULL constraint failed: sensor_readings.read_at”, statement: “INSERT INTO “sensor_readings” (“monitor”,“value”,“mode”,“x”,”

What is the message mean? And how to fix this error. I sure the moisture sensor is mounted properly.

Woops, sorry about this - there was an error in the code examples in the documentation which I will update now.

The corrected code requires setting the read_at time in the new_sensor_reading request:

-- Mount the soil sensor
mount_tool ("Soil Sensor")

-- Move to (720, 610, 0)
move_absolute (720, 610, 0)

-- Move Z to -380
move_absolute ({z= -380})

-- Measure soil moisture reading
local pin_59 = 59
local soil_moisture = read_pin(pin_59, "analog")
local xyz = get_xyz()
local read_at = utc() -- Get the current time in UTC

new_sensor_reading({
  x=xyz.x,
  y=xyz.y,
  z=xyz.z,
  mode=1,
  pin=pin_59,
  value=soil_moisture,
  read_at=read_at -- Include the time with the sensor reading request
})

Thank you, it is working perfectly.

2 Likes