diff --git a/docs/_static/optimization_timeframes-excalidraw.json b/docs/_static/optimization_timeframes-excalidraw.json new file mode 100644 index 0000000..c8d7b32 --- /dev/null +++ b/docs/_static/optimization_timeframes-excalidraw.json @@ -0,0 +1 @@ +{"type":"excalidraw/clipboard","elements":[{"id":"3vdqtSWbWZt-V2HoAntFw","type":"rectangle","x":365.83279996353417,"y":1013.3741234305688,"width":1332.8122826925903,"height":312.0523226349666,"angle":0,"strokeColor":"#ffffff","backgroundColor":"#b2f2bb","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"dotted","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"Zs","roundness":null,"seed":478754544,"version":304,"versionNonce":1204216336,"isDeleted":false,"boundElements":[],"updated":1738272717223,"link":null,"locked":false},{"id":"kIpHsBN6TVrXsRo9iyjKa","type":"rectangle","x":362.1972126921709,"y":752.7984627136465,"width":1339.640221090654,"height":249.80147566430813,"angle":0,"strokeColor":"#ffffff","backgroundColor":"#ffc9c9","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"dotted","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"Zt","roundness":null,"seed":657343216,"version":137,"versionNonce":1204218608,"isDeleted":false,"boundElements":[],"updated":1738272714655,"link":null,"locked":false},{"id":"jLgzbyi-9_BS3GusMTKxg","type":"rectangle","x":373.4725800582523,"y":937.2889175339959,"width":104.48311709381016,"height":35,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":2,"strokeStyle":"dashed","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"ZtG","roundness":{"type":3},"seed":938165488,"version":701,"versionNonce":191975664,"isDeleted":false,"boundElements":[],"updated":1738272699733,"link":null,"locked":false},{"id":"hZLV2avIw7zQ8br-MUocw","type":"line","x":1002.0015236748721,"y":760.575485594807,"width":0,"height":553.8729204825239,"angle":0,"strokeColor":"#e03131","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"Zu","roundness":{"type":2},"seed":1153632803,"version":303,"versionNonce":1665123116,"isDeleted":false,"boundElements":[],"updated":1739041472801,"link":null,"locked":false,"points":[[0,0],[0,553.8729204825239]],"lastCommittedPoint":null,"startBinding":null,"endBinding":null,"startArrowhead":null,"endArrowhead":null},{"id":"zg18kTU4ZvvA1uTKzKa6V","type":"line","x":1272.564288054662,"y":759.9812527487206,"width":0,"height":555.4690960458743,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":1,"strokeStyle":"dotted","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"Zv","roundness":{"type":2},"seed":2082907152,"version":359,"versionNonce":1485943824,"isDeleted":false,"boundElements":[],"updated":1738272340173,"link":null,"locked":false,"points":[[0,0],[0,555.4690960458743]],"lastCommittedPoint":null,"startBinding":null,"endBinding":null,"startArrowhead":null,"endArrowhead":null},{"id":"XdIG6y0wX3iuqTukPRDEP","type":"rectangle","x":895.7471659296746,"y":780.7894662691243,"width":744.708123336486,"height":35,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"Zw","roundness":{"type":3},"seed":1991105776,"version":564,"versionNonce":1479204368,"isDeleted":false,"boundElements":[{"type":"text","id":"mc37JgxrIaOpwMWX1glPs"}],"updated":1738272207266,"link":null,"locked":false},{"id":"mc37JgxrIaOpwMWX1glPs","type":"text","x":1077.0178945824757,"y":785.7894662691243,"width":382.1666660308838,"height":25,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"Zx","roundness":null,"seed":1355071216,"version":588,"versionNonce":990235376,"isDeleted":false,"boundElements":[],"updated":1738272207266,"link":null,"locked":false,"text":"PV Power Prediction - pv_prognose_wh","fontSize":20,"fontFamily":5,"textAlign":"center","verticalAlign":"middle","containerId":"XdIG6y0wX3iuqTukPRDEP","originalText":"PV Power Prediction - pv_prognose_wh","autoResize":true,"lineHeight":1.25},{"id":"4jI2HTrVNACNBs8gGCQkJ","type":"line","x":893.7980579922927,"y":769.7710831245158,"width":0,"height":546.477353451754,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":4,"strokeStyle":"dashed","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"Zy","roundness":{"type":2},"seed":165043440,"version":261,"versionNonce":204139024,"isDeleted":false,"boundElements":[],"updated":1738272922911,"link":null,"locked":false,"points":[[0,0],[0,546.477353451754]],"lastCommittedPoint":null,"startBinding":null,"endBinding":null,"startArrowhead":null,"endArrowhead":null},{"id":"T0gmBfibXUmzVTaC7HrCq","type":"rectangle","x":960.0393438713265,"y":985.0420071811,"width":86.19348042091113,"height":44.69291577380591,"angle":0,"strokeColor":"transparent","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":1,"strokeStyle":"dotted","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"aTV","roundness":{"type":3},"seed":1673141264,"version":97,"versionNonce":600067088,"isDeleted":false,"boundElements":[],"updated":1738271648189,"link":null,"locked":false},{"id":"87Wwv8BuRD0cSGPy9i6zR","type":"line","x":394.9931944453515,"y":1008,"width":1304.8735230387988,"height":0,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"aX","roundness":{"type":2},"seed":415335949,"version":130,"versionNonce":1652211728,"isDeleted":false,"boundElements":[],"updated":1738272309920,"link":null,"locked":false,"points":[[0,0],[1304.8735230387988,0]],"lastCommittedPoint":null,"startBinding":null,"endBinding":null,"startArrowhead":null,"endArrowhead":null},{"id":"6lEIcqVWxqP4X3ceiodJ5","type":"text","x":932.4192814275495,"y":985.3250771152319,"width":149.35378827160102,"height":46.80764887329951,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"ab","roundness":null,"seed":1927544419,"version":241,"versionNonce":677617168,"isDeleted":false,"boundElements":[],"updated":1738271825534,"link":null,"locked":false,"text":"NOW\n03:00am","fontSize":18.7230595493198,"fontFamily":5,"textAlign":"center","verticalAlign":"top","containerId":null,"originalText":"NOW\n03:00am","autoResize":false,"lineHeight":1.25},{"id":"IzOPXUbBZiVw7Be0LCWa8","type":"rectangle","x":847.5089666551368,"y":1010.5808161947034,"width":86.19348042091113,"height":25.538809013603387,"angle":0,"strokeColor":"transparent","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":1,"strokeStyle":"dotted","roughness":1,"opacity":100,"groupIds":["tVbTe48YmbRkDiOtx-FO3"],"frameId":null,"index":"b1JV","roundness":{"type":3},"seed":1418796784,"version":246,"versionNonce":1154534128,"isDeleted":false,"boundElements":[],"updated":1738271813857,"link":null,"locked":false},{"id":"aXokwSzfIG0jcdiJdIVxS","type":"text","x":850.7401267954402,"y":1010.3215374266301,"width":82.12542348532915,"height":25,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":["tVbTe48YmbRkDiOtx-FO3"],"frameId":null,"index":"b1K","roundness":null,"seed":1680084496,"version":462,"versionNonce":2019159280,"isDeleted":false,"boundElements":[],"updated":1738271813857,"link":null,"locked":false,"text":"00:00","fontSize":20,"fontFamily":5,"textAlign":"center","verticalAlign":"top","containerId":null,"originalText":"00:00","autoResize":false,"lineHeight":1.25},{"id":"kKoY8Ej4Yk6UYRfaZr-0i","type":"rectangle","x":895.7525111225922,"y":882.9447023235379,"width":742.3031696056249,"height":35.25927876807168,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"b1M","roundness":{"type":3},"seed":1538111728,"version":535,"versionNonce":807494672,"isDeleted":false,"boundElements":[{"type":"text","id":"G-tZvVU5jNn-WSKQdPWhe"}],"updated":1738271488033,"link":null,"locked":false},{"id":"G-tZvVU5jNn-WSKQdPWhe","type":"text","x":1104.7207615748187,"y":888.0743417075737,"width":324.3666687011719,"height":25,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"b1N","roundness":null,"seed":1097407216,"version":579,"versionNonce":477782544,"isDeleted":false,"boundElements":[],"updated":1738271488033,"link":null,"locked":false,"text":"Load Prediction - gesamtlast:[...]","fontSize":20,"fontFamily":5,"textAlign":"center","verticalAlign":"middle","containerId":"kKoY8Ej4Yk6UYRfaZr-0i","originalText":"Load Prediction - gesamtlast:[...]","autoResize":true,"lineHeight":1.25},{"id":"bsjgqhi3G5US1j4TCtCoh","type":"line","x":1643.6751065335861,"y":810.4720883518239,"width":0,"height":497.7954704076951,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":1,"strokeStyle":"dotted","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"b1R","roundness":{"type":2},"seed":629080080,"version":442,"versionNonce":1396387344,"isDeleted":false,"boundElements":[],"updated":1738272342616,"link":null,"locked":false,"points":[[0,0],[0,497.7954704076951]],"lastCommittedPoint":null,"startBinding":null,"endBinding":null,"startArrowhead":null,"endArrowhead":null},{"id":"0yn01iSF7H4lfs0ItEMS5","type":"text","x":1053.4544233409176,"y":1011.6483084831789,"width":159.5399383078146,"height":25,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"b1S","roundness":null,"seed":846515440,"version":324,"versionNonce":1351661584,"isDeleted":false,"boundElements":[],"updated":1738272875240,"link":null,"locked":false,"text":"Day 1 / today","fontSize":20,"fontFamily":5,"textAlign":"center","verticalAlign":"top","containerId":null,"originalText":"Day 1 / today","autoResize":false,"lineHeight":1.25},{"id":"tpiXFMFEy_xwWYY_Vs8an","type":"text","x":1373.4876237926346,"y":1014.0425718282045,"width":203.9626649747776,"height":25,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"b1T","roundness":null,"seed":764704784,"version":414,"versionNonce":605745392,"isDeleted":false,"boundElements":[],"updated":1738272915133,"link":null,"locked":false,"text":"Day 2 / tomorrow","fontSize":20,"fontFamily":5,"textAlign":"center","verticalAlign":"top","containerId":null,"originalText":"Day 2 / tomorrow","autoResize":false,"lineHeight":1.25},{"id":"Wet5cdlVAm-lE51f-sS4e","type":"text","x":696.7091849321449,"y":1012.446396264854,"width":159.5399383078146,"height":25,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"b1U","roundness":null,"seed":1844825328,"version":561,"versionNonce":1833970928,"isDeleted":false,"boundElements":[],"updated":1738272287588,"link":null,"locked":false,"text":"Day 0","fontSize":20,"fontFamily":5,"textAlign":"center","verticalAlign":"top","containerId":null,"originalText":"Day 0","autoResize":false,"lineHeight":1.25},{"id":"3gznVZM_GUUDoZ4DBgD-W","type":"text","x":469.25416715473955,"y":1012.446396264854,"width":159.5399383078146,"height":25,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"b1V","roundness":null,"seed":422740496,"version":532,"versionNonce":97741840,"isDeleted":false,"boundElements":[],"updated":1738272335611,"link":null,"locked":false,"text":"Day -1","fontSize":20,"fontFamily":5,"textAlign":"center","verticalAlign":"top","containerId":null,"originalText":"Day -1","autoResize":false,"lineHeight":1.25},{"id":"93e2HLEaIN2mGycpcqAEy","type":"line","x":673.2003640166572,"y":769.005174044051,"width":1.1368683772161603e-13,"height":552.8298770039444,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":1,"strokeStyle":"dotted","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"b1X","roundness":{"type":2},"seed":615854832,"version":416,"versionNonce":59720208,"isDeleted":false,"boundElements":[],"updated":1738272925180,"link":null,"locked":false,"points":[[0,0],[-1.1368683772161603e-13,552.8298770039444]],"lastCommittedPoint":null,"startBinding":null,"endBinding":null,"startArrowhead":null,"endArrowhead":null},{"id":"k30iZe6E3epHpszuQ1Hoj","type":"line","x":422.11839407260044,"y":770.5369922049807,"width":0,"height":551.2980588430147,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":1,"strokeStyle":"dotted","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"b1Z","roundness":{"type":2},"seed":256139280,"version":498,"versionNonce":1860033776,"isDeleted":false,"boundElements":[],"updated":1738272928074,"link":null,"locked":false,"points":[[0,0],[0,551.2980588430147]],"lastCommittedPoint":null,"startBinding":null,"endBinding":null,"startArrowhead":null,"endArrowhead":null},{"id":"ivsp89SNJ4nIgjltbs8wY","type":"rectangle","x":1228.994926295837,"y":1009.9123677970649,"width":86.19348042091113,"height":25.538809013603387,"angle":0,"strokeColor":"transparent","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":1,"strokeStyle":"dotted","roughness":1,"opacity":100,"groupIds":["0cU23IXBDOV8_xbdkn5QQ"],"frameId":null,"index":"b1d","roundness":{"type":3},"seed":314742000,"version":318,"versionNonce":2071654128,"isDeleted":false,"boundElements":[],"updated":1738271817560,"link":null,"locked":false},{"id":"cz6dDP89OOc5RwObEgZTf","type":"text","x":1232.2260864361406,"y":1009.6530890289916,"width":82.12542348532915,"height":25,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":["0cU23IXBDOV8_xbdkn5QQ"],"frameId":null,"index":"b1e","roundness":null,"seed":2038593264,"version":534,"versionNonce":505385200,"isDeleted":false,"boundElements":[],"updated":1738271817560,"link":null,"locked":false,"text":"00:00","fontSize":20,"fontFamily":5,"textAlign":"center","verticalAlign":"top","containerId":null,"originalText":"00:00","autoResize":false,"lineHeight":1.25},{"id":"xszcrLg-LEDASw18Ig4zu","type":"rectangle","x":1005.0946687880014,"y":1063.54476130564,"width":634.5613190794854,"height":35.25927876807168,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"b1f","roundness":{"type":3},"seed":926536208,"version":792,"versionNonce":1292596752,"isDeleted":false,"boundElements":[{"type":"text","id":"iKXhYQf2CWD2oDMpouMeA"}],"updated":1738272799850,"link":null,"locked":false},{"id":"iKXhYQf2CWD2oDMpouMeA","type":"text","x":1210.8253252759864,"y":1068.6744006896756,"width":223.10000610351562,"height":25,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"b1g","roundness":null,"seed":1112870928,"version":863,"versionNonce":1985098768,"isDeleted":false,"boundElements":[],"updated":1738272799850,"link":null,"locked":false,"text":"Optimization - result:...","fontSize":20,"fontFamily":5,"textAlign":"center","verticalAlign":"middle","containerId":"xszcrLg-LEDASw18Ig4zu","originalText":"Optimization - result:...","autoResize":true,"lineHeight":1.25},{"id":"o4zZW4_1yWqwp6Ie1HVI2","type":"rectangle","x":896.5505989042672,"y":1116.654782970309,"width":741.5050818239497,"height":35.25927876807168,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"b1h","roundness":{"type":3},"seed":1070257168,"version":983,"versionNonce":1008088304,"isDeleted":false,"boundElements":[{"id":"91F8QBs29sJzlakIvqw4t","type":"text"}],"updated":1738272112077,"link":null,"locked":false},{"id":"91F8QBs29sJzlakIvqw4t","type":"text","x":1070.7531367644842,"y":1121.7844223543448,"width":393.1000061035156,"height":25,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"b1i","roundness":null,"seed":1433784848,"version":1053,"versionNonce":477500144,"isDeleted":false,"boundElements":[],"updated":1738272112076,"link":null,"locked":false,"text":"Optimization - eautocharge_hours_float","fontSize":20,"fontFamily":5,"textAlign":"center","verticalAlign":"middle","containerId":"o4zZW4_1yWqwp6Ie1HVI2","originalText":"Optimization - eautocharge_hours_float","autoResize":true,"lineHeight":1.25},{"id":"ssHBInqj55mprXXHBcxXh","type":"rectangle","x":895.7525111225926,"y":1165.338137652491,"width":742.3031696056249,"height":35.25927876807168,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"b1j","roundness":{"type":3},"seed":1844382960,"version":1011,"versionNonce":1345185808,"isDeleted":false,"boundElements":[{"id":"AdNREZd23ERAipy_Jdyeg","type":"text"}],"updated":1738272180949,"link":null,"locked":false},{"id":"AdNREZd23ERAipy_Jdyeg","type":"text","x":1107.8707554713035,"y":1170.467777036527,"width":318.0666809082031,"height":25,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"b1k","roundness":null,"seed":677375728,"version":1084,"versionNonce":274097680,"isDeleted":false,"boundElements":[],"updated":1738272180949,"link":null,"locked":false,"text":"Optimization - discharge_allowed","fontSize":20,"fontFamily":5,"textAlign":"center","verticalAlign":"middle","containerId":"ssHBInqj55mprXXHBcxXh","originalText":"Optimization - discharge_allowed","autoResize":true,"lineHeight":1.25},{"id":"9VRjXSwXvmH9OxapUVt2j","type":"rectangle","x":898.9448622492932,"y":1212.0701531953835,"width":739.110818478924,"height":38.96129578892149,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"b1l","roundness":{"type":3},"seed":855103504,"version":1066,"versionNonce":1784377872,"isDeleted":false,"boundElements":[{"id":"fDit5VAdd6FeiB2Zu8K8v","type":"text"}],"updated":1738272176994,"link":null,"locked":false},{"id":"fDit5VAdd6FeiB2Zu8K8v","type":"text","x":1127.1502653852397,"y":1217.0701531953835,"width":282.70001220703125,"height":28.96129578892149,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"b1m","roundness":null,"seed":1684166160,"version":1295,"versionNonce":1614983184,"isDeleted":false,"boundElements":[],"updated":1738272176994,"link":null,"locked":false,"text":"Optimization - dc_charge","fontSize":23.169036631137192,"fontFamily":5,"textAlign":"center","verticalAlign":"middle","containerId":"9VRjXSwXvmH9OxapUVt2j","originalText":"Optimization - dc_charge","autoResize":true,"lineHeight":1.25},{"id":"KKJNjF-FaseZlmBFlVC4M","type":"rectangle","x":897.3486866859432,"y":1262.7048470168536,"width":740.7069940422747,"height":35.25927876807168,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"b1n","roundness":{"type":3},"seed":1272071408,"version":1046,"versionNonce":1321482480,"isDeleted":false,"boundElements":[{"id":"J-Aqf9xv0-a3u0vWv4iW8","type":"text"}],"updated":1738272179414,"link":null,"locked":false},{"id":"J-Aqf9xv0-a3u0vWv4iW8","type":"text","x":1146.4021806553228,"y":1267.8344864008895,"width":242.60000610351562,"height":25,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"b1o","roundness":null,"seed":1427908336,"version":1127,"versionNonce":229612272,"isDeleted":false,"boundElements":[],"updated":1738272179414,"link":null,"locked":false,"text":"Optimization - ac_charge","fontSize":20,"fontFamily":5,"textAlign":"center","verticalAlign":"middle","containerId":"KKJNjF-FaseZlmBFlVC4M","originalText":"Optimization - ac_charge","autoResize":true,"lineHeight":1.25},{"id":"W2Mm-XcBVCp7JLEAAT5u5","type":"rectangle","x":1598.5095692114119,"y":1011.5085433604149,"width":86.19348042091113,"height":25.538809013603387,"angle":0,"strokeColor":"transparent","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":1,"strokeStyle":"dotted","roughness":1,"opacity":100,"groupIds":["EUIad2iXNVmtYFRqx_W1e"],"frameId":null,"index":"b1p","roundness":{"type":3},"seed":595798544,"version":378,"versionNonce":265029872,"isDeleted":false,"boundElements":[],"updated":1738272035009,"link":null,"locked":false},{"id":"e1vdEcj8e8UD4vF1W7Rvh","type":"text","x":1601.7407293517153,"y":1011.2492645923417,"width":82.12542348532915,"height":25,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":["EUIad2iXNVmtYFRqx_W1e"],"frameId":null,"index":"b1q","roundness":null,"seed":196306960,"version":594,"versionNonce":2101177072,"isDeleted":false,"boundElements":[],"updated":1738272035009,"link":null,"locked":false,"text":"00:00","fontSize":20,"fontFamily":5,"textAlign":"center","verticalAlign":"top","containerId":null,"originalText":"00:00","autoResize":false,"lineHeight":1.25},{"id":"xjs4wJI6Z9poKtwYLz_eP","type":"rectangle","x":894.8925694037093,"y":834.2097793686329,"width":743.1119477731356,"height":35,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"b1t","roundness":{"type":3},"seed":342905443,"version":502,"versionNonce":1689835536,"isDeleted":false,"boundElements":[{"type":"text","id":"bzWeeKg6dbT-1FxG_Z-G8"}],"updated":1738272213855,"link":null,"locked":false},{"id":"bzWeeKg6dbT-1FxG_Z-G8","type":"text","x":1003.3485436081686,"y":839.2097793686329,"width":526.1999993642171,"height":25,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"b1u","roundness":null,"seed":1008602627,"version":519,"versionNonce":32272624,"isDeleted":false,"boundElements":[],"updated":1738272213855,"link":null,"locked":false,"text":"Electricity Price Prediction - strompreis_euro_pro_wh","fontSize":20,"fontFamily":5,"textAlign":"center","verticalAlign":"middle","containerId":"xjs4wJI6Z9poKtwYLz_eP","originalText":"Electricity Price Prediction - strompreis_euro_pro_wh","autoResize":true,"lineHeight":1.25},{"id":"xfnk7PY8iTA9ReiOkul1Y","type":"rectangle","x":427.46849348959904,"y":936.6057366549746,"width":460.5781826743123,"height":35,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"b1v","roundness":{"type":3},"seed":406839555,"version":392,"versionNonce":534506224,"isDeleted":false,"boundElements":[{"type":"text","id":"ig2DQA5tZDuQ6XDmFd5UX"}],"updated":1738272292842,"link":null,"locked":false},{"id":"ig2DQA5tZDuQ6XDmFd5UX","type":"text","x":568.7409145997044,"y":941.6057366549746,"width":178.03334045410156,"height":25,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"b1w","roundness":null,"seed":1749141389,"version":376,"versionNonce":83954928,"isDeleted":false,"boundElements":[],"updated":1738272292842,"link":null,"locked":false,"text":"Load Measurement","fontSize":20,"fontFamily":5,"textAlign":"center","verticalAlign":"middle","containerId":"xfnk7PY8iTA9ReiOkul1Y","originalText":"Load Measurement","autoResize":true,"lineHeight":1.25},{"id":"EThvixxWEtzSOFCDMX8RN","type":"rectangle","x":628.0348266944826,"y":1013.1047189237656,"width":86.19348042091113,"height":25.538809013603387,"angle":0,"strokeColor":"transparent","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":1,"strokeStyle":"dotted","roughness":1,"opacity":100,"groupIds":["VjaX9aJWByF_ByfIQZ8rM"],"frameId":null,"index":"b1x","roundness":{"type":3},"seed":703870992,"version":302,"versionNonce":1201004560,"isDeleted":false,"boundElements":[],"updated":1738272303918,"link":null,"locked":false},{"id":"exw9NyREHdLlCHZQ2ruVx","type":"text","x":631.2659868347861,"y":1012.8454401556924,"width":82.12542348532915,"height":25,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":["VjaX9aJWByF_ByfIQZ8rM"],"frameId":null,"index":"b1y","roundness":null,"seed":2094183952,"version":518,"versionNonce":1207918096,"isDeleted":false,"boundElements":[],"updated":1738272303918,"link":null,"locked":false,"text":"00:00","fontSize":20,"fontFamily":5,"textAlign":"center","verticalAlign":"top","containerId":null,"originalText":"00:00","autoResize":false,"lineHeight":1.25},{"id":"hnumEX71mSOgGvkyMIRyJ","type":"rectangle","x":378.2333510301744,"y":1009.912367797065,"width":86.19348042091113,"height":25.538809013603387,"angle":0,"strokeColor":"transparent","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":1,"strokeStyle":"dotted","roughness":1,"opacity":100,"groupIds":["St0DJ2DbM1Gv5kLvX-LT0"],"frameId":null,"index":"b1z","roundness":{"type":3},"seed":1580682992,"version":374,"versionNonce":423858192,"isDeleted":false,"boundElements":[],"updated":1738272312225,"link":null,"locked":false},{"id":"mX-cORh2ARPciwfTGd0nB","type":"text","x":381.46451117047786,"y":1009.6530890289918,"width":82.12542348532915,"height":25,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":["St0DJ2DbM1Gv5kLvX-LT0"],"frameId":null,"index":"b20","roundness":null,"seed":709882096,"version":590,"versionNonce":2021068304,"isDeleted":false,"boundElements":[],"updated":1738272312225,"link":null,"locked":false,"text":"00:00","fontSize":20,"fontFamily":5,"textAlign":"center","verticalAlign":"top","containerId":null,"originalText":"00:00","autoResize":false,"lineHeight":1.25},{"id":"uzbP7qbGxvny_UxVGZq2E","type":"text","x":694.2761125735155,"y":829.4148897544568,"width":114.92464056121537,"height":45,"angle":0,"strokeColor":"#e03131","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":1,"strokeStyle":"dotted","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"b21","roundness":null,"seed":989319920,"version":85,"versionNonce":2061841136,"isDeleted":false,"boundElements":[],"updated":1738272517787,"link":null,"locked":false,"text":"Input","fontSize":36,"fontFamily":5,"textAlign":"center","verticalAlign":"top","containerId":null,"originalText":"Input","autoResize":false,"lineHeight":1.25},{"id":"8I3vdi3_XiOzTNrLByPut","type":"text","x":670.3334791232625,"y":1169.669689254854,"width":174.78122418684828,"height":45,"angle":0,"strokeColor":"#2f9e44","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":1,"strokeStyle":"dotted","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"index":"b22","roundness":null,"seed":432172048,"version":90,"versionNonce":1558029328,"isDeleted":false,"boundElements":[],"updated":1738272541820,"link":null,"locked":false,"text":"Output","fontSize":36,"fontFamily":5,"textAlign":"center","verticalAlign":"top","containerId":null,"originalText":"Output","autoResize":false,"lineHeight":1.25}],"files":{}} \ No newline at end of file diff --git a/docs/_static/optimization_timeframes.png b/docs/_static/optimization_timeframes.png new file mode 100644 index 0000000..eeb8e85 Binary files /dev/null and b/docs/_static/optimization_timeframes.png differ diff --git a/docs/akkudoktoreos/optimization.md b/docs/akkudoktoreos/optimization.md index 741664f..bba3058 100644 --- a/docs/akkudoktoreos/optimization.md +++ b/docs/akkudoktoreos/optimization.md @@ -2,7 +2,177 @@ # Optimization -:::{admonition} Todo -:class: note -Describe optimization. -::: +## Introduction + +The `POST /optimize` API endpoint optimizes your energy management system based on various inputs including electricity prices, battery storage capacity, PV forecast, and temperature data. + +## Input Payload + +### Sample Request +```json +{ + "ems": { + "preis_euro_pro_wh_akku": 0.0007, + "einspeiseverguetung_euro_pro_wh": 0.00007, + "gesamtlast": [500, 500, ..., 500, 500], + "pv_prognose_wh": [300, 0, 0, ..., 2160, 1840], + "strompreis_euro_pro_wh": [0.0003784, 0.0003868, ..., 0.00034102, 0.00033709] + }, + "pv_akku": { + "capacity_wh": 12000, + "charging_efficiency": 0.92, + "discharging_efficiency": 0.92, + "max_charge_power_w": 5700, + "initial_soc_percentage": 66, + "min_soc_percentage": 5, + "max_soc_percentage": 100 + }, + "inverter": { + "max_power_wh": 15500 + }, + "eauto": { + "capacity_wh": 64000, + "charging_efficiency": 0.88, + "discharging_efficiency": 0.88, + "max_charge_power_w": 11040, + "initial_soc_percentage": 98, + "min_soc_percentage": 60, + "max_soc_percentage": 100 + }, + "temperature_forecast": [18.3, 18, ..., 20.16, 19.84], + "start_solution": null +} +``` + +## Input Parameters + +### Energy Management System (EMS) + +#### Battery Cost (`preis_euro_pro_wh_akku`) +- Unit: €/Wh +- Purpose: Represents the residual value of energy stored in the battery +- Impact: Lower values encourage battery depletion, higher values preserve charge at the end of the simulation. + +#### Feed-in Tariff (`einspeiseverguetung_euro_pro_wh`) +- Unit: €/Wh +- Purpose: Compensation received for feeding excess energy back to the grid + +#### Total Load Forecast (`gesamtlast`) +- Unit: W +- Time Range: 48 hours (00:00 today to 23:00 tomorrow) +- Format: Array of hourly values +- Note: Exclude optimizable loads (EV charging, battery charging, etc.) + +##### Data Sources: +1. Standard Load Profile: `GET /v1/prediction/list?key=load_mean` for a standard load profile based on your yearly consumption. +2. Adjusted Load Profile: `GET /v1/prediction/list?key=load_mean_adjusted` for a combination of a standard load profile based on your yearly consumption incl. data from last 48h. + +#### PV Generation Forecast (`pv_prognose_wh`) +- Unit: W +- Time Range: 48 hours (00:00 today to 23:00 tomorrow) +- Format: Array of hourly values +- Data Source: `GET /v1/prediction/series?key=pvforecast_ac_power` + +#### Electricity Price Forecast (`strompreis_euro_pro_wh`) +- Unit: €/Wh +- Time Range: 48 hours (00:00 today to 23:00 tomorrow) +- Format: Array of hourly values +- Data Source: `GET /v1/prediction/list?key=elecprice_marketprice_wh` + +Verify prices against your local tariffs. + +### Battery Storage System + +#### Configuration +- `capacity_wh`: Total battery capacity in Wh +- `charging_efficiency`: Charging efficiency (0-1) +- `discharging_efficiency`: Discharging efficiency (0-1) +- `max_charge_power_w`: Maximum charging power in W + +#### State of Charge (SoC) +- `initial_soc_percentage`: Current battery level (%) +- `min_soc_percentage`: Minimum allowed SoC (%) +- `max_soc_percentage`: Maximum allowed SoC (%) + +### Inverter +- `max_power_wh`: Maximum inverter power in Wh + +### Electric Vehicle (EV) +- `capacity_wh`: Battery capacity in Wh +- `charging_efficiency`: Charging efficiency (0-1) +- `discharging_efficiency`: Discharging efficiency (0-1) +- `max_charge_power_w`: Maximum charging power in W +- `initial_soc_percentage`: Current charge level (%) +- `min_soc_percentage`: Minimum allowed SoC (%) +- `max_soc_percentage`: Maximum allowed SoC (%) + +### Temperature Forecast +- Unit: °C +- Time Range: 48 hours (00:00 today to 23:00 tomorrow) +- Format: Array of hourly values +- Data Source: `GET /v1/prediction/list?key=weather_temp_air` + +## Output Format + +### Sample Response +```json +{ + "ac_charge": [0.625, 0, ..., 0.75, 0], + "dc_charge": [1, 1, ..., 1, 1], + "discharge_allowed": [0, 0, 1, ..., 0, 0], + "eautocharge_hours_float": [0.625, 0, ..., 0.75, 0], + "result": { + "Last_Wh_pro_Stunde": [...], + "EAuto_SoC_pro_Stunde": [...], + "Einnahmen_Euro_pro_Stunde": [...], + "Gesamt_Verluste": 1514.96, + "Gesamtbilanz_Euro": 2.51, + "Gesamteinnahmen_Euro": 2.88, + "Gesamtkosten_Euro": 5.39, + "akku_soc_pro_stunde": [...] + } +} +``` + +### Output Parameters + +#### Battery Control +- `ac_charge`: Grid charging schedule (0-1) +- `dc_charge`: DC charging schedule (0-1) +- `discharge_allowed`: Discharge permission (0 or 1) + +0 (no charge) +1 (charge with full load) + +`ac_charge` multiplied by the maximum charge power of the battery results in the planned charging power. + +#### EV Charging +- `eautocharge_hours_float`: EV charging schedule (0-1) + +#### Results +The `result` object contains detailed information about the optimization outcome. +The length of the array is between 25 and 48 and starts at the current hour and ends at 23:00 tomorrow. + +- `Last_Wh_pro_Stunde`: Array of hourly load values in Wh + - Shows the total energy consumption per hour + - Includes household load, battery charging/discharging, and EV charging + +- `EAuto_SoC_pro_Stunde`: Array of hourly EV state of charge values (%) + - Shows the projected EV battery level throughout the optimization period + +- `Einnahmen_Euro_pro_Stunde`: Array of hourly revenue values in Euro + +- `Gesamt_Verluste`: Total energy losses in Wh + +- `Gesamtbilanz_Euro`: Overall financial balance in Euro + +- `Gesamteinnahmen_Euro`: Total revenue in Euro + +- `Gesamtkosten_Euro`: Total costs in Euro + +- `akku_soc_pro_stunde`: Array of hourly battery state of charge values (%) + +## Timeframe overview + + EOS Price in euro per watt hour in battery + \ No newline at end of file