ardo 1a50b8e9f2 dev: nutikodu veebiliides (uus67 ajatelg, FastAPI+ECharts, avalik nutikodu.odamus.com) преди 1 месец
..
static 1a50b8e9f2 dev: nutikodu veebiliides (uus67 ajatelg, FastAPI+ECharts, avalik nutikodu.odamus.com) преди 1 месец
Dockerfile 1a50b8e9f2 dev: nutikodu veebiliides (uus67 ajatelg, FastAPI+ECharts, avalik nutikodu.odamus.com) преди 1 месец
README.md 1a50b8e9f2 dev: nutikodu veebiliides (uus67 ajatelg, FastAPI+ECharts, avalik nutikodu.odamus.com) преди 1 месец
app.py 1a50b8e9f2 dev: nutikodu veebiliides (uus67 ajatelg, FastAPI+ECharts, avalik nutikodu.odamus.com) преди 1 месец
requirements.txt 1a50b8e9f2 dev: nutikodu veebiliides (uus67 ajatelg, FastAPI+ECharts, avalik nutikodu.odamus.com) преди 1 месец

README.md

Nutikodu veebiliides

Interaktiivne ajatelg uus67 skeemi zigbee andurite andmetele (ClickHouse). FastAPI backend + üks staatiline leht (ECharts). Eestikeelne, mobiilisõbralik, tume/hele teema.

Ligipääs

Keskkond URL
Avalik https://nutikodu.odamus.com
Tailscale http://100.87.1.24:8095 · http://ohmu.tail20e23.ts.net:8095

Funktsioonid (v1)

  • Temperatuuri ja niiskuse ajatelg (kahe teljega), interaktiivne zoom (pinch/pan).
  • Perioodivalik: 24 h / 7 p / 30 p / 90 p / 1 a / Kõik + kohandatud vahemik.
  • Agregeerimine: tund / päev.
  • Viimaste väärtuste kaardid + lahtiste häirete ülevaade (60 s värskendus).
  • PWA-manifest (installitav telefonis), noindex.

API

Otspunkt Kirjeldus
GET /api/meta seadmed, tz, andmete ulatus
GET /api/temperatuur?from=&to=&device=&agg=hour\|day aegrida
GET /api/ukseandur?from=&to=&device= ukseolekute sündmused (UI tuleb hiljem)
GET /api/vead?from=&to=&device= häirete sündmused
GET /api/latest viimased väärtused + lahtised häired
GET /health tervis

Ajavahemikud kujul YYYY-MM-DD[ HH:MM[:SS]] või ISO (T-eraldaja). Vaikimisi viimased 7 päeva.

Keskkonnamuutujad

Muutuja Vaikimisi Kirjeldus
CH_URL http://clickhouse:8123 ClickHouse HTTP
CH_DB uus67 andmebaas
CH_USER / CH_PASS zigbee / – ainult SELECT uus67.*
WEB_ACCESS_TOKEN tühi kui seatud, nõuab ?token= või X-Access-Token päist

Struktuur

nutikodu/web/
├── app.py                 # FastAPI backend (ClickHouse HTTP, JSONEachRow)
├── requirements.txt
├── Dockerfile             # python:3.12-slim, port 8095
└── static/
    ├── index.html         # üks leht, eestikeelne
    ├── style.css          # light/dark, mobiil-first
    ├── app.js             # ECharts ajatelg, perioodivalik, teema
    ├── manifest.webmanifest
    ├── icon.svg
    └── vendor/echarts.min.js

Arendus / juurutus

Kood elab workspace'is (nutikodu/web/) ja on juurutatud ohmu'le /opt/docker-compose/dev/nutikodu-web/ (teenus dev/docker-compose.yml-is, võrkudes main_ai_network + prod_net).

# Muudatuse järel (ohmu):
scp app.py static/* ohmu:/opt/docker-compose/dev/nutikodu-web/...
docker compose -f /opt/docker-compose/dev/docker-compose.yml up -d --build nutikodu-web
docker logs -f nutikodu-web

Avalik ligipääs (2026-09-17)

  • DNS: DigitalOcean A-kirje nutikodu.odamus.com → 188.166.84.16.
  • Edge Caddy (kanad, /opt/edge/Caddyfile): nutikodu.odamus.com { reverse_proxy http://100.91.118.16:80 }.
  • Sisemine Caddy (ohmu prod_caddy, /opt/prod/Caddyfile): nutikodu.odamus.com:80 { reverse_proxy nutikodu-web:8095 }.
  • TLS väljastab edge automaatselt.

Edasi (järgmised iteratsioonid)

  • Ukseanduri olekuribad ajateljel (/api/ukseandur on valmis).
  • Häirete markerid/annotatsioonid (/api/vead on valmis).
  • Võimalik WEB_ACCESS_TOKEN avaliku lehe kaitseks.