From 9ccb1e042bd5d00a49e164b261495efff06582a4 Mon Sep 17 00:00:00 2001 From: Nils Reiners Date: Tue, 7 Oct 2025 22:33:02 +0200 Subject: [PATCH] =?UTF-8?q?st=C3=BCndliche=20Speicherung=20des=20Forecasts?= =?UTF-8?q?=20angepasst?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __pycache__/data_base_influx.cpython-312.pyc | Bin 1786 -> 3187 bytes __pycache__/energysystem.cpython-312.pyc | Bin 1493 -> 1493 bytes .../sg_ready_controller.cpython-312.pyc | Bin 3191 -> 3189 bytes .../weather_forecaster.cpython-312.pyc | Bin 0 -> 2988 bytes main.py | 2 ++ .../pv_plant_simulator.cpython-312.pyc | Bin 0 -> 10828 bytes 6 files changed, 2 insertions(+) create mode 100644 forecaster/__pycache__/weather_forecaster.cpython-312.pyc create mode 100644 simulators/__pycache__/pv_plant_simulator.cpython-312.pyc diff --git a/__pycache__/data_base_influx.cpython-312.pyc b/__pycache__/data_base_influx.cpython-312.pyc index 0aa648a43930b642e663258dc5f7343066c02307..603cd6716253c285071cc104587419971b6370a0 100644 GIT binary patch delta 1461 zcmZ8hPfQ$D7=Lg6?aab1%))Mwe{G>6+pQ35un8qiX-KFLNfb?xNXalW;I6wf>zmoO zG_$UU9zacCoCA#qQ_?21VGlN@sh(_NJb7WWHEX7A;9xzOW>YjKJ^9|iEW|ndzTf-a z_iw)Uz4tP-+Y zyUsVv&#=L{#D00!4bAIFl_kTR)ufCn(}w~Gn3MJHRh)heSTIkUwe1w;lwi|Qwx+0& zLpB_-Im6esYGf1c(NtYcRU-;iV3FFSoTsq0O`(g7Z=7cqK%O-l_AQ+^m?&>i3R~o` z@p-28Yli3YoW-T0&U3o8Fal<9DIek5^MO2Xv8f}q6g6VL;!}(E)1=yb-GNjB7ULg6 zs^dWKGle&g`rP8ZNZoi{b2;vB9!M*Y>c(}pojKv_QawI9kbVTeI0(MF%m53ddP!?x z!dZb)c#2@5@4(Av7F!fH_m32UMGy~8ATmmE%H<4I)-}bg%Oqu_?=J$Gq?R*PBMx2O zOlDLgtI94X>nf5}tm9OKbY!?R%4w(z$3di}@fMd-OjO`7cWF((vgdnE*Ho9znX(%| zYBnv&sw*T79gkZ^GF>XGxIt5&)p8jXC2fM?4lx>Dyb9UF)RQVP9icKsFOfF0Ww~30g=mrNS{%Z068jLRZg45v0XZA z8l)X4sTwYYIel458)W#8`5zLAM}uMFyE5xv7~@*!h-69^Btv~$n@<;VSNr~FK#K;KSov@4mMc87xO8E0LK} zWM*q2yA_!!M?PH&?1USa=s(1!wGO-EhI!}WBXOW24wb~AvUqNZ+d0y)W)*D9`RoPY zgz)m{(uGy}_xgsFvE{KRjnUOl%8gyyVzb?}`oWFSvUp-!jM>rEE4SI3@~vQ5Ol*r$ zyLol466-0&ddjihVqfLtVCm#wSv>oXz=pzA8b_@*0wJ^#UJh6I_7dNIb7W(Def+!k zA57hwdMI!4?RCHLW2g!L>_j~1{KXEOCKmv`iNWP2z2>6xcySkaMqWn|c^Nz)vtvv; z!`xe^c0q`J2Ua^pb{yWBtO6o`pnej56#n-3o;&f33(gl@&)n;nx?EP$6v^=N?S&mB zu}M8%s+aswMptra^&A?*I`aG&$1qfB2;nvuE`i~vpyM%!J_b$yGI2N#UjTw$g#Q4x Cd{r_4 delta 234 zcmew?@r#%5G%qg~0}${#oy^$5Jdsa=(PE;ysu&Z4J3|U{3quOaY9^30149&RCF{f@ zn~Cei7)>S~Gi9md)a2T%%=na%k##dC^HD}d&B^Ck4m0vjp3K_K?5D{-S&7?JK?$gF zB}0)gkSY=c5gagr1;{A2oZQK6Cj5ngm(`aMq6j4Kr^z$2FJS$vfo+67=0N(F@Q+0UI0n%Fg^eP diff --git a/__pycache__/energysystem.cpython-312.pyc b/__pycache__/energysystem.cpython-312.pyc index e0d8a40564960f2002c97eef99b14f7690f1290f..e1886d977df9e31e85eca0c8f094e905049ee377 100644 GIT binary patch delta 19 Zcmcc0eU+Q*G%qg~0}$j)-N<#C6#zEQ1x5e> delta 19 Zcmcc0eU+Q*G%qg~0}x2|ZR9%53IH^@1nd9+ diff --git a/__pycache__/sg_ready_controller.cpython-312.pyc b/__pycache__/sg_ready_controller.cpython-312.pyc index f97f438148ee41eec790d7b35e17a6ea09e3a5c1..a8e7566f4a85b8423596ec26c054d9814d142bd5 100644 GIT binary patch delta 569 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 literal 0 HcmV?d00001 diff --git a/main.py b/main.py index 46f212a..a61bc7a 100644 --- a/main.py +++ b/main.py @@ -51,6 +51,8 @@ upper_roof_west = PvWattsSubarrayConfig(name="west", pdc0_w=7*p_module, tilt_deg cfgs = [upper_roof_north, upper_roof_south, upper_roof_east, upper_roof_west] pv_plant = PvWattsPlant(site, cfgs) +now = datetime.now(TZ) +next_forecast_at = (now + dt.timedelta(hours=1)).replace(minute=0, second=0, microsecond=0) while True: now = datetime.now() if now.second % interval_seconds == 0 and now.microsecond < 100_000: diff --git a/simulators/__pycache__/pv_plant_simulator.cpython-312.pyc b/simulators/__pycache__/pv_plant_simulator.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a9a14934a508d7d9b5b7a0b7bcb5819b30a09e2c GIT binary patch literal 10828 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