Commit graph

  • fc90e65271 refactor: drop PV synthesis, model raw P1 net signal directly main Michiel Berger 2026-05-08 21:32:59 +02:00
  • e2fb72a0ab chore(catalog): add Zendure SolarFlow 2400AC 5.8 kWh plug-in set Michiel Berger 2026-05-08 21:32:39 +02:00
  • 9e77b35ff4 Hybrid dispatcher: greedy self-consumption + per-day grid arbitrage Michiel Berger 2026-05-01 10:36:07 +02:00
  • 6f8238376b tests: import pytest for the new approx() use Michiel Berger 2026-05-01 10:20:38 +02:00
  • b4d895224b Replace LP with greedy self-consumption — match real battery firmware Michiel Berger 2026-05-01 10:20:23 +02:00
  • ab4f9712b5 Default export_rate to 0; add tie-breaker so battery fills before exporting Michiel Berger 2026-05-01 10:04:23 +02:00
  • e39f78fcc5 Fix two timeline bugs Michiel Berger 2026-05-01 09:54:08 +02:00
  • af55fb33dd Default demand_kwh = 1518 (annualised) so dad's hourly P1 passes through unscaled Michiel Berger 2026-05-01 09:37:21 +02:00
  • 093605be2e Modal markup must come before script tag — fix silent click handler Michiel Berger 2026-05-01 09:27:25 +02:00
  • be6012c1ea Make whole battery row open the timeline modal; drop the shop link from the row Michiel Berger 2026-05-01 09:23:54 +02:00
  • b39501ca21 Battery timeline modal + switch to real 2025 data Michiel Berger 2026-05-01 09:21:16 +02:00
  • 10cc32ddc0 timeline: label columns 'no-bat meter' / 'with-bat meter' to avoid confusion Michiel Berger 2026-04-30 22:47:59 +02:00
  • 2f05a40d40 Add timeline inspector — print hour-by-hour LP schedule for any week Michiel Berger 2026-04-30 22:37:05 +02:00
  • 1804606ff6 Add 'cycles/yr' column — total throughput including grid arbitrage Michiel Berger 2026-04-30 22:02:33 +02:00
  • 9d43e1802b Clarify what 'surplus' means in the leaderboard Michiel Berger 2026-04-30 21:57:11 +02:00
  • faecd9cb80 Default scenario = dad's actual: pv_kwp=0, demand=2350, export_rate=-0.106 Michiel Berger 2026-04-30 21:52:56 +02:00
  • a65ad1ba34 Add column-glossary legend below the leaderboard table Michiel Berger 2026-04-30 21:44:09 +02:00
  • a3b9b2a0e9 Add solar-capture columns; drop Store columns from leaderboard Michiel Berger 2026-04-30 21:39:38 +02:00
  • 91ea434912 Use dad's real P1 data; add export-rate input for terugleveringskosten Michiel Berger 2026-04-30 21:07:49 +02:00
  • df66a44d53 Drop Powerwall from extras — hybrid LP slowed cold scenarios Michiel Berger 2026-04-30 17:45:34 +02:00
  • b0933c444b Dockerfile: gunicorn 2 workers x 4 threads (gthread) Michiel Berger 2026-04-30 17:39:13 +02:00
  • c9dd23f078 PV system input: accept arbitrary decimals (step=any), max 100 kWp Michiel Berger 2026-04-30 16:28:01 +02:00
  • ae994a7ded Move custom batteries from web.py into data/raw/extra_batteries.json Michiel Berger 2026-04-30 15:52:16 +02:00
  • d6a3d53a04 Add 10-yr net profit column + clickable column sorting Michiel Berger 2026-04-30 15:41:11 +02:00
  • 386a758517 Add Powerwall to leaderboard + 3-way category filter Michiel Berger 2026-04-30 15:30:55 +02:00
  • 1878b0a383 Speed up /api/calculate from 75s to 17s on h4a's small VM Michiel Berger 2026-04-30 15:15:20 +02:00
  • fa7a205eb7 deploy.sh: auto-refresh SSH host key when h4a recreates the VM Michiel Berger 2026-04-30 15:02:47 +02:00
  • 1d7574e0b2 Add plug-in-only filter to web app + deploy script Michiel Berger 2026-04-30 14:58:52 +02:00
  • 60e0706736 Initial import: home-battery ROI simulator + cracked thuisbatterijgids calc Michiel Berger 2026-04-30 13:46:27 +02:00