Explorar o código

varvusensor + nutikodu-web: kalibratsiooni robustsus

- AS7341 update_interval 60s -> 5s (kiirem tagasiside, OTA)

- /api/varv/calib: keeldub kui viimased mootmised pole stabiilsed (uleminek katmise/valge vahel)
ardo hai 1 semana
pai
achega
70d41426dd
Modificáronse 2 ficheiros con 12 adicións e 0 borrados
  1. 11 0
      dev/nutikodu-web/app.py
  2. 1 0
      dev/varvusensor/config/varvusensor.yaml

+ 11 - 0
dev/nutikodu-web/app.py

@@ -641,6 +641,17 @@ async def varv_calib_set(payload: dict = Body(...)) -> dict:
     )
     if not rows:
         raise HTTPException(status_code=409, detail="Mõõtmisi pole")
+    # Stabiilsuse kontroll: viimased mõõtmised peavad olema samast olekust.
+    totals = [
+        sum(float(r[b]) for b in VARV_BANDS if r.get(b) is not None)
+        for r in rows
+    ]
+    tmax = max(totals) if totals else 0.0
+    if tmax > 0 and (tmax - min(totals)) / tmax > 0.2:
+        raise HTTPException(
+            status_code=422,
+            detail="Mõõtmine pole stabiliseerunud (viimased mõõtmised erinevad). Oota ~30 s pärast katmise/valge pinna muutust ja proovi uuesti.",
+        )
     ref: dict[str, float] = {}
     for f in VARV_CALIB_FIELDS:
         vals = [float(r[f]) for r in rows if r.get(f) is not None]

+ 1 - 0
dev/varvusensor/config/varvusensor.yaml

@@ -160,6 +160,7 @@ sensor:
   # vahetab baidid -> lisame lambdas vahetuse tagasi, et saada toelised 16-bit vaartused.
   - platform: as7341
     gain: X256
+    update_interval: 5s
     f1:
       name: "${friendly_name} F1 415nm"
       id: ch_f1