AI UPDATE
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
from dashboard_data.card_utils import safe_number
|
||||
|
||||
|
||||
def build_soil_moisture_heatmap(sensor_id: str, context: dict | None = None, ai_bundle: dict | None = None) -> dict:
|
||||
context = context or {}
|
||||
sensor = context.get("sensor")
|
||||
depths = context.get("depths", [])
|
||||
if sensor is None:
|
||||
return {"zones": [], "hours": [], "series": []}
|
||||
|
||||
hours = ["۶ ص", "۸ ص", "۱۰ ص", "۱۲ ظ", "۱۴ ع", "۱۶ ع", "۱۸ ع"]
|
||||
base_moisture = safe_number(sensor.soil_moisture, 0)
|
||||
series = []
|
||||
zones = []
|
||||
|
||||
if not depths:
|
||||
depths = [None, None]
|
||||
|
||||
for index, depth in enumerate(depths[:7], start=1):
|
||||
zones.append(f"زون {index}")
|
||||
depth_offset = 0 if depth is None else round(safe_number(getattr(depth, "wv0033", None), 0) / 10)
|
||||
data = []
|
||||
for hour_index, hour in enumerate(hours):
|
||||
value = max(0, min(100, round(base_moisture + depth_offset - abs(3 - hour_index) * 2)))
|
||||
data.append({"x": hour, "y": value})
|
||||
series.append({"name": f"زون {index}", "data": data})
|
||||
|
||||
return {
|
||||
"zones": zones,
|
||||
"hours": hours,
|
||||
"series": series,
|
||||
}
|
||||
Reference in New Issue
Block a user