Skip to content

Commit e2f1985

Browse files
committed
Fix 500 error
1 parent 75e47fd commit e2f1985

File tree

1 file changed

+31
-3
lines changed

1 file changed

+31
-3
lines changed

opensensor/collection_apis.py

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -298,13 +298,41 @@ def create_model_instance(model: Type[BaseModel], data: dict, target_unit: Optio
298298

299299
# Handle temperature unit conversion if applicable
300300
if mongo_field in data:
301-
data[field_name] = data[mongo_field]
301+
# Convert string values back to appropriate types for numeric fields
302+
value = data[mongo_field]
303+
if field_name in ["temp", "rh", "pressure", "lux", "ppm", "pH", "vpd"] and isinstance(
304+
value, str
305+
):
306+
try:
307+
data[field_name] = float(value)
308+
except (ValueError, TypeError):
309+
data[field_name] = value
310+
else:
311+
data[field_name] = value
302312
elif field_name in data:
303313
# If the field_name exists in data, use it
304-
data[field_name] = data[field_name]
314+
value = data[field_name]
315+
if field_name in ["temp", "rh", "pressure", "lux", "ppm", "pH", "vpd"] and isinstance(
316+
value, str
317+
):
318+
try:
319+
data[field_name] = float(value)
320+
except (ValueError, TypeError):
321+
data[field_name] = value
322+
else:
323+
data[field_name] = value
305324
elif field_name.lower() in data:
306325
# If the field_name (lowercase) exists in data, use it
307-
data[field_name] = data[field_name.lower()]
326+
value = data[field_name.lower()]
327+
if field_name in ["temp", "rh", "pressure", "lux", "ppm", "pH", "vpd"] and isinstance(
328+
value, str
329+
):
330+
try:
331+
data[field_name] = float(value)
332+
except (ValueError, TypeError):
333+
data[field_name] = value
334+
else:
335+
data[field_name] = value
308336
else:
309337
# If neither the mongo_field nor the field_name exists, log an error
310338
logger.error(

0 commit comments

Comments
 (0)