48f5a6b00b26ed96d4c88370fd17f446a8a90135
Arrival zpráva má dva persistent Selecty (custom_id ev:<site>:<charger>:dep a :tgt, obsluha on_interaction + regex → přežijí restart): „Kdy odjíždíš?" za 2 h | za 4 h | dnes večer 18:00 | zítra ráno 7:00 | zítra poledne 12:00 | pondělí ráno 7:00; „Kolik potřebuješ?" 30/50/70/100 % | Nenabíjet. Každý výběr okamžitě PATCHne session přes fn_ev_session_apply_patch jen ve své dimenzi (absolutní deadline Europe/Prague, nejbližší budoucí výskyt; pevná volba smí přes 48 h), druhý rozměr zůstává z fn_ev_session_defaults. Pak replan + export a edit zprávy přepočteným plánem (build_ev_plan_summary) + potvrzením. Whitelist DISCORD_ALLOWED_USER_IDS i bot-first/webhook fallback beze změny; legacy tlačítka h2/h4/morning/full/stop starších zpráv dál obsloužená. Testy: mapování výběr→patch, absolutní deadline z voleb (půlnoc, pondělí z pátku >48 h, pondělí ráno v pondělí), parse, legacy akce — bez DB/sítě. Docs: discord-ev-interaction.md (nové UI, no-click = pohotovostní režim 30 % + oportunismus). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
EMS Platform
Systém pro správu energie fotovoltaické elektrárny s baterií, EV nabíječkami a tepelným čerpadlem. Optimalizuje náklady pomocí spotových cen OTE CZ.
Podrobná architektura, datový model a moduly jsou v docs/; stručná orientace pro vývoj je v CLAUDE.md.
Rychlý start
cp .env.example .env
# Uprav .env: DB_PASSWORD, POSTGREST_JWT_SECRET (min 32 znaků)
docker compose up --build -d
# Počkej ~45s na Flyway migrace a start služeb
bash scripts/smoke_test.sh
- UI: http://localhost
- API (FastAPI): http://localhost/api/v1 (případně přímo http://localhost:8000/api/v1)
- PostgREST: http://localhost/rest (případně http://localhost:3000)
Inicializace dat (první spuštění)
# 1. Import spotových cen OTE (zítřek v časové zóně lokality)
curl -X POST http://localhost/api/v1/sites/1/prices/import
# 2. PV forecast (Open-Meteo + pvlib → forecast_pv_interval)
curl -X POST http://localhost/api/v1/sites/1/forecast/run
# 3. Spustit optimalizaci (denní plán)
curl -X POST "http://localhost/api/v1/sites/1/plan/run?type=daily"
Ve webovém rozhraní: stránka Plánování a tlačítko Přeplánovat spouští rolling přepočet (vyžaduje již dostupné ceny a forecast v horizontu solveru).
Stack
| Komponenta | Technologie | Port |
|---|---|---|
| DB | PostgreSQL 16 + TimescaleDB | 5432 (mapováno na localhost, interně v síti Docker) |
| API | FastAPI + PostgREST | 80 přes Nginx (/api, /rest) |
| Frontend | React + Vite + Tailwind | 80 |
| Migrace | Flyway (db/migration, db/routines, db/views) |
— |
Co ještě nefunguje (před instalací HW)
- Telemetrie: IP adresy Waveshare (Modbus TCP) doplnit v DB / seedu (
db/migration/V003__seed_site_home01.sqlasite_endpoint). - EV nabíječky: Modbus registry Teltonika zatím často mock / rozpracované.
- Samsung TČ: Modbus registry pending (mock data).
- Loxone: nakonfigurovat Virtual Inputs dle
docs/loxone-integration.md.
Architektura
Description
Languages
Python
66.9%
TypeScript
19.4%
PLpgSQL
11.9%
Shell
1.4%
JavaScript
0.2%