How janeaujanssen/ems works
Home EMS Optimizer is a Streamlit home-energy scheduling app. A user configures Grid, PV, battery and home-load inputs; the app builds forecasts and asset models, runs a local MILP schedule, and presents charts and cost/flow results. It can also request an EVCC schedule for side-by-side comparison. The generic asset model and EV, DHW and building-thermal conversion modules represent extension capabilities, but the README says these are not wired into the current optimizer workflow. The wiring shown follows the README and sampled excerpts; unsampled details are not assumed.
Main entry points: app.py Streamlit app · optimizer.py MILP optimizer · evcc_client.py EVCC client · visualization.py Plotly charts
Components 12
User interface
- Streamlit app
app.py - Plotly charts
visualization.py
Forecasts and assets
- Forecast simulator
simulator.py - Asset abstractions
assets.py
Optimization
- MILP optimizer
optimizer.py
Integrations and extensions
- EVCC client
evcc_client.py - EV trip conversion
ev_conversion.py - DHW conversion
dhw_conversion.py - Building conversion
building_conversion.py
Other components
- Home user
- PuLP / CBC
- EVCC optimizer
Connections 11
- Home user → Streamlit app: configures
- Streamlit app → Forecast simulator: requests forecasts
- Streamlit app → Asset abstractions: builds asset models
- Streamlit app → MILP optimizer: runs schedule
- MILP optimizer → Asset abstractions: reads asset data
- MILP optimizer → PuLP / CBC: solves with
- Streamlit app → Plotly charts: builds charts
- Plotly charts → Streamlit app: returns figures
- Streamlit app → EVCC client: requests comparison
- EVCC client → EVCC optimizer: posts schedule request
- EVCC optimizer → EVCC client: returns schedule