|
|
пре 1 недеља | |
|---|---|---|
| .. | ||
| static | пре 1 недеља | |
| Dockerfile | пре 1 месец | |
| README.md | пре 1 недеља | |
| app.py | пре 1 недеља | |
| app.py.bak.1791389719 | пре 2 недеља | |
| requirements.txt | пре 1 недеља | |
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 |
taidetud = true) ja kuvatakse graafikul tühjade
ringidena — aegreas ei teki auke.uus67.varvus):
praegune värv, värviruutude ruudustik, kanalite spekter (f1–f8), värvitelg
(viimased 24 h tunnipõhiselt) ja kromaatilisuse (x, y) hajuvus. 20 s värskendus.
Sisselogitult saab mõõtmise sisse/välja lülitada (MQTT,
varvus/switch/sensor); OFF peatab ESP32 publitseerimise → ka ClickHouse'i
kirjutamise.noindex.| Otspunkt | Kirjeldus |
|---|---|
GET /api/meta |
seadmed, tz, andmete ulatus |
GET /api/temperatuur?from=&to=&device=&agg=hour\|day |
aegrida |
GET /api/valisilm?from=&to=&agg=hour\|day |
välistemperatuuri aegrida (temp, niiskus, tuul, sademed) |
GET /api/ukseandur?from=&to=&device= |
🔒 ukseolekute sündmused |
GET /api/vead?from=&to=&device= |
🔒 häirete sündmused |
GET /api/liikumine?from=&to=&device= |
🔒 liikumise/kohalolu sündmused |
GET /api/energia?from=&to=&device=&agg=hour\|day |
🔒 pistikute energiatarve |
GET /api/uus67_latest |
🔒 viimane energia + liikumine |
GET /api/latest |
viimased väärtused (lahtised häired ainult sisselogitult) |
GET /api/buss?limit=12 |
Suuremõisa küla järgmised bussiväljumised (peatus.ee, avalik) |
GET /api/praam?days=1 |
Heltermaa–Rohuküla väljumised + staatus + ilmahoiatuse kontekst (praamid.ee, avalik) |
GET /api/varv/latest?limit=60 |
AS7341 viimased mõõtmised (rgb, kanalid f1–f8, kromaatilisus) — avalik |
GET /api/varv/history?hours=24 |
tunnipõhine keskmine värv (värvitelg) — avalik |
GET /api/varv/power |
🔒 värvisensori mõõtmise olek (ON/OFF) |
POST /api/varv/power |
🔒 lülita mõõtmine sisse/välja (keha {"on":true\|false}) |
GET /api/me |
kas päring on autenditud ({"authed":bool}) |
GET /health |
tervis |
Ajavahemikud kujul YYYY-MM-DD[ HH:MM[:SS]] või ISO (T-eraldaja). Vaikimisi viimased 7 päeva.
🔒 = nõuab autentimist (Bearer-token automaatikale või sessiooniküpsis brauserile). Ülejäänud on avalikud.
Värvisensori juhtimine vajab keskkonnamuutujaid (dev/.env):
VARV_MQTT_HOST=mqtt.odamus.com, VARV_MQTT_PORT=8883, VARV_MQTT_TLS=true,
VARV_MQTT_USER, VARV_MQTT_PASS (edge-brokeri konto).
/login, sisesta parool → allkirjastatud sessiooniküpsis
(HttpOnly, SameSite=Lax). Välja: /logout.Authorization: Bearer <WEB_ACCESS_TOKEN>.ukseandur / vead / liikumine / energia / uus67_latest
päringud. Avalikud on ainult temp/niiskus/väli/meta.# Kaitstud lõpp-punkt Bearer-tokeniga:
curl -H "Authorization: Bearer $WEB_ACCESS_TOKEN" \
"http://100.87.1.24:8095/api/uus67_latest"
# Tervisekontroll (avalik, Uptime Kuma monitor):
curl "http://100.87.1.24:8095/health"
WEB_ACCESS_TOKEN väärtus on nutikodu-web .env-is (ohmu:
/opt/docker-compose/dev/.env). Ära pane tokenit URL-i ega jaga avalikult.
| Muutuja | Vaikimisi | Kirjeldus |
|---|---|---|
CH_URL |
http://clickhouse:8123 |
ClickHouse HTTP |
CH_DB |
uus67 |
andmebaas |
CH_USER / CH_PASS |
zigbee / – |
ainult SELECT uus67.* |
WEB_PASSWORD |
tühi | brauseri sisselogimise parool (/login) |
WEB_ACCESS_TOKEN |
tühi | API Bearer-token (automaatikaks) |
WEB_SECRET_KEY |
juhuslik | sessiooniküpsise allkirjastamise võti (sea püsivaks!) |
SESSION_MAX_AGE |
604800 |
sessiooni kehtivus sekundites (7 p) |
LOGIN_MAX_ATTEMPTS |
5 |
ebaõnnestunud logimiskatsed enne blokeeringut |
LOGIN_WINDOW_SECONDS |
300 |
logimise blokeerimise aken (sek) |
BUS_GRAPHQL |
peatus.ee Digitransit | bussigraafiku GraphQL API |
BUS_STOPS |
estonia:24703,estonia:27213 |
Suuremõisa küla GTFS peatus-ID-d (komaga) |
PRAAM_API |
https://www.praamid.ee/online/events |
praamigraafiku API (HR=Heltermaa→Rohuküla) |
TRANSPORT_TTL |
60 |
bussi/praami väliste päringute vahemälu (sek) |
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).