@@ -91,11 +91,15 @@ function AttributeHandlers.soil_moisture_measurement_limits_handler(driver, devi
9191 ib .data .elements .min_measured_value == nil or ib .data .elements .min_measured_value .value == nil or
9292 ib .data .elements .max_measured_value == nil or ib .data .elements .max_measured_value .value == nil or
9393 ib .data .elements .min_measured_value .value >= ib .data .elements .max_measured_value .value then
94- device .log .warn_with ({hub_logs = true }, " Device reported invalid soil moisture limits" )
94+ local min_val = ib .data .elements and ib .data .elements .min_measured_value and ib .data .elements .min_measured_value .value
95+ local max_val = ib .data .elements and ib .data .elements .max_measured_value and ib .data .elements .max_measured_value .value
96+ device .log .warn_with ({hub_logs = true }, string.format (" Device reported invalid soil moisture limits: min=%s, max=%s" , tostring (min_val ), tostring (max_val )))
9597 return
9698 end
97- sensor_utils .set_field_for_endpoint (device , fields .SOIL_LIMIT_MIN , ib .endpoint_id , ib .data .elements .min_measured_value .value )
98- sensor_utils .set_field_for_endpoint (device , fields .SOIL_LIMIT_MAX , ib .endpoint_id , ib .data .elements .max_measured_value .value )
99+ local min_val = math.max (ib .data .elements .min_measured_value .value , sensor_utils .SOIL_MOISTURE_MIN )
100+ local max_val = math.min (ib .data .elements .max_measured_value .value , sensor_utils .SOIL_MOISTURE_MAX )
101+ sensor_utils .set_field_for_endpoint (device , fields .SOIL_LIMIT_MIN , ib .endpoint_id , min_val )
102+ sensor_utils .set_field_for_endpoint (device , fields .SOIL_LIMIT_MAX , ib .endpoint_id , max_val )
99103end
100104
101105
0 commit comments