Interaktiivne ajatelg uus67 skeemi zigbee andurite andmetele (ClickHouse).
FastAPI backend + üks staatiline leht (ECharts). Eestikeelne, mobiilisõbralik,
tume/hele teema.
| Keskkond | URL |
|---|---|
| Avalik | https://nutikodu.odamus.com |
| Tailscale | http://100.87.1.24:8095 · http://ohmu.tail20e23.ts.net:8095 |
noindex.| 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.
| 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 |
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
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
nutikodu.odamus.com → 188.166.84.16.kanad, /opt/edge/Caddyfile): nutikodu.odamus.com { reverse_proxy http://100.91.118.16:80 }.prod_caddy, /opt/prod/Caddyfile): nutikodu.odamus.com:80 { reverse_proxy nutikodu-web:8095 }./api/ukseandur on valmis)./api/vead on valmis).WEB_ACCESS_TOKEN avaliku lehe kaitseks.