# Minu kodu veebiliides Lihtsustatud vaade `nutikodu` lehest (https://nutikodu.odamus.com), eraldi lehe jaoks. FastAPI backend + üks staatiline leht. Eestikeelne, mobiilisõbralik, tume/hele teema. ## Ligipääs | Keskkond | URL | |----------|-----| | Avalik | https://jyri.odamus.com | | Tailscale | http://100.87.1.24:8096 | ## Funktsioonid - **Vaheleht "Andurid"** — ainult üks kaart: Suuremõisa **välistemperatuur** (ClickHouse `uus67.valisilm`, Open-Meteo), 60 s värskendus. Graafikuid ei ole. - **Vaheleht "Transport"** — identne nutikodu lehele: tänased bussiväljumised Suuremõisa külast (peatus.ee) ja Heltermaa–Rohuküla praamiajad + seisakud/ tühistused (praamid.ee) ning Väinamere ilmahoiatuse kontekst (RII). 60 s värskendus. - PWA-manifest (installitav telefonis), `noindex`. ## API | Otspunkt | Kirjeldus | |----------|-----------| | `GET /api/latest` | Suuremõisa välistemperatuur (hetkeväärtus, avalik) | | `GET /api/buss?limit=12` | Suuremõisa küla järgmised bussiväljumised (avalik) | | `GET /api/praam?days=1` | Heltermaa–Rohuküla väljumised + staatus + ilmahoiatuse kontekst (avalik) | | `GET /health` | tervis | ## Keskkonnamuutujad | Muutuja | Vaikimisi | Kirjeldus | |---------|-----------|-----------| | `CH_URL` | `http://clickhouse:8123` | ClickHouse HTTP | | `CH_DB` | `uus67` | andmebaas | | `CH_USER` / `CH_PASS` | `zigbee` / – | ainult SELECT `uus67.*` | | `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 | | `TRANSPORT_TTL` | `60` | bussi/praami väliste päringute vahemälu (sek) | ## Struktuur ``` minukodu-web/ ├── app.py # FastAPI backend (ClickHouse HTTP, JSONEachRow) ├── requirements.txt ├── Dockerfile # python:3.12-slim, port 8096 └── static/ ├── index.html # üks leht, eestikeelne ├── style.css # light/dark, mobiil-first ├── app.js # välistemperatuuri kaart, perioodilüliti, teema, transport ├── manifest.webmanifest └── icon.svg ``` ## Juurutus Teenus on `dev/docker-compose.yml`-is (võrgud `main_ai_network` + `prod_net`). ```bash docker compose -f /opt/docker-compose/dev/docker-compose.yml up -d --build minukodu-web docker logs -f minukodu-web ``` ### Avalik ligipääs - **DNS:** DigitalOcean A-kirje `jyri.odamus.com` → `188.166.84.16`. - **Edge Caddy** (`kanad`, `/opt/edge/Caddyfile`): `jyri.odamus.com { reverse_proxy http://100.91.118.16:80 }`. - **Sisemine Caddy** (ohmu `prod_caddy`, `/opt/prod/Caddyfile`): `jyri.odamus.com:80 { reverse_proxy minukodu-web:8096 }`. - TLS väljastab edge automaatselt.