Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pv rework #2027

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 2 additions & 13 deletions loadvars.sh
Original file line number Diff line number Diff line change
Expand Up @@ -947,19 +947,7 @@ loadvars(){
fi
#uberschuss zur berechnung
uberschuss=$(printf "%.0f\n" $((-wattbezug)))
if [[ $speichervorhanden == "1" ]]; then
if [[ $speicherpveinbeziehen == "1" ]]; then
if (( speicherleistung > 0 )); then
if (( speichersoc > speichersocnurpv )); then
speicherww=$((speicherleistung + speicherwattnurpv))
uberschuss=$((uberschuss + speicherww))
else
speicherww=$((speicherleistung - speichermaxwatt))
uberschuss=$((uberschuss + speicherww))
fi
fi
fi
fi

evua1=$(cat /var/www/html/openWB/ramdisk/bezuga1)
evua2=$(cat /var/www/html/openWB/ramdisk/bezuga2)
evua3=$(cat /var/www/html/openWB/ramdisk/bezuga3)
Expand Down Expand Up @@ -1835,6 +1823,7 @@ loadvars(){
mqttconfvar["config/get/pv/minBatteryChargePowerAtEvPriority"]=speichermaxwatt
mqttconfvar["config/get/pv/minBatteryDischargeSocAtBattPriority"]=speichersocnurpv
mqttconfvar["config/get/pv/batteryDischargePowerAtBattPriority"]=speicherwattnurpv
mqttconfvar["config/get/pv/batteryDischargePowerAtBattPriorityHybrid"]=speicherwattnurpvhybrid
mqttconfvar["config/get/pv/socStartChargeAtMinPv"]=speichersocminpv
mqttconfvar["config/get/pv/socStopChargeAtMinPv"]=speichersochystminpv
mqttconfvar["config/get/pv/boolAdaptiveCharging"]=adaptpv
Expand Down
18 changes: 5 additions & 13 deletions minundpv.sh
Original file line number Diff line number Diff line change
Expand Up @@ -68,11 +68,8 @@ minundpvlademodus(){
fi
fi
fi
if [[ $speichervorhanden == "1" ]]; then
if (( speicherleistung < 0 )); then
uberschuss=$((uberschuss + speicherleistung))
fi
else

if [[ $speichervorhanden == "0" ]]; then
speichersoc=0
speichersochystminpv=0
speichersocminpv=0
Expand Down Expand Up @@ -104,15 +101,10 @@ minundpvlademodus(){
llneu=$llalt
fi
if (( uberschuss > schaltschwelle )); then
if [[ $pvbezugeinspeisung == "0" ]]; then
llneu=$(( llalt + ( uberschuss / 230 / anzahlphasen)))

if (( llalt == minimalampv )); then
llneu=$(( llalt + 1 ))
else
if (( llalt == minimalampv )); then
llneu=$(( llalt + 1 ))
else
llneu=$(( llalt + ( (uberschuss - schaltschwelle) / 230 / anzahlphasen)))
fi
llneu=$(( llalt + ( (uberschuss - pvregelungm) / 230 / anzahlphasen)))
fi
if (( llneu > maximalstromstaerke )); then
llneu=$maximalstromstaerke
Expand Down
53 changes: 30 additions & 23 deletions nurpv.sh
Original file line number Diff line number Diff line change
Expand Up @@ -221,37 +221,19 @@ nurpvlademodus(){
fi
fi
else
if [[ $speichervorhanden == "1" ]]; then
if (( speicherleistung < 10 )); then
if (( speichersoc > speichersocnurpv )); then
uberschuss=$((uberschuss + speicherleistung + speicherwattnurpv))
openwbDebugLog "PV" 0 "SpeicherSoc ($speichersoc) über konfiguriertem Wert ($speichersocnurpv), neuer Überschusswert: $uberschuss"
else
uberschuss=$((uberschuss + speicherleistung))
openwbDebugLog "PV" 0 "SpeicherSoc ($speichersoc) unter konfiguriertem Wert ($speichersocnurpv), neuer Überschusswert: $uberschuss"
fi
fi
fi

if (( uberschuss > schaltschwelle )); then
if (( llalt == maximalstromstaerke )); then
openwbDebugLog "MAIN" 1 "llalt == maximalstromstaerke"
#exit 0
fi
if [[ $pvbezugeinspeisung == "0" ]]; then
if (( nurpvslowup == 1 )); then
llneu=$(( llalt + 1 ))
else
llneu=$(( llalt + ( uberschuss / 230 / anzahlphasen)))
fi
if (( llalt == minimalapv )); then
llneu=$(( llalt + 1 ))
else
if (( llalt == minimalapv )); then
if (( nurpvslowup == 1 )); then
llneu=$(( llalt + 1 ))
else
if (( nurpvslowup == 1 )); then
llneu=$(( llalt + 1 ))
else
llneu=$(( llalt + ( (uberschuss - schaltschwelle) / 230 / anzahlphasen)))
fi
llneu=$(( llalt + ( (uberschuss - pvregelungm) / 230 / anzahlphasen)))
fi
fi
if (( llneu > maximalstromstaerke )); then
Expand Down Expand Up @@ -365,7 +347,32 @@ nurpvlademodus(){
fi
openwbDebugLog "MAIN" 1 "Abschaltschwelle: $((-abschaltuberschuss)), Überschuss derzeit: $uberschuss"

pvLadungAusschalten=0

if (( uberschuss < -abschaltuberschuss )); then

if (( speichersoc > speichersocnurpv )); then
if ((minSpeicherLeistung < - speicherwattnurpv )); then
if ((speicherleistung < -speicherwattnurpv)); then
openwbDebugLog "PV" 0 "Speicherentladung ($speicherleistung) höher als erlaubt ($speicherwattnurpv)"
pvLadungAusschalten=1
else
openwbDebugLog "PV" 0 "Speicher SOC ($speichersoc) über konfiguriertem Wert ($speichersocnurpv), erlaubte Speicherentladung: $speicherwattnurpv"
fi
else
if ((speicherleistung < minSpeicherLeistung)); then
openwbDebugLog "PV" 0 "Speicherentladung ($speicherleistung) höher als möglich ($minSpeicherLeistung) (Hybrid)"
pvLadungAusschalten=1
else
openwbDebugLog "PV" 0 "Speicher SOC ($speichersoc) über konfiguriertem Wert ($speichersocnurpv), mögliche Speicherentladung: $((0-minSpeicherLeistung)) (Hybrid)"
fi
fi
else
pvLadungAusschalten=1
fi
fi

if (( pvLadungAusschalten > 0 )); then
pvcounter=$(cat /var/www/html/openWB/ramdisk/pvcounter)
if (( pvcounter < abschaltverzoegerung )); then
pvcounter=$((pvcounter + 10))
Expand Down
40 changes: 35 additions & 5 deletions regel.sh
Original file line number Diff line number Diff line change
Expand Up @@ -540,6 +540,38 @@ fi

########################
# Berechnung für PV Regelung
if [[ $speichervorhanden == "1" ]]; then

if (( speicherwattnurpvhybrid > 0)); then
minSpeicherLeistung=$((0 - pvwatt - speicherwattnurpvhybrid))
else
minSpeicherLeistung=$((-100000))
fi



if ((speicherleistung < 0)); then
openwbDebugLog "PV" 0 "Speicher entläd, gib leistung frei"
uberschuss=$((uberschuss + speicherleistung ))
elif [[ $speicherpveinbeziehen == "1" ]]; then
if ((speichermaxwatt <= minSpeicherLeistung)); then
#EV hat vorrang, aber Speicher bekommt reservierten Ladewert, wenn dieser den nehmen kann
if ((speicherleistung > minSpeicherLeistung)); then
openwbDebugLog "PV" 0 "Speicherleistung ($speicherleistung) über konfiguriertem Wert ($minSpeicherLeistung) (Hybridsystem)"
uberschuss=$((uberschuss + speicherleistung - minSpeicherLeistung))
fi
else
#EV hat vorrang, aber Speicher bekommt reservierten Ladewert, wenn dieser den nehmen kann
if ((speicherleistung > speichermaxwatt)); then
openwbDebugLog "PV" 0 "Speicherleistung ($speicherleistung) über konfiguriertem Wert ($speichermaxwatt)"
uberschuss=$((uberschuss + speicherleistung - speichermaxwatt))
fi
fi
fi
#Speicher bekommt maximal möglichen Ladewert.

fi

if [[ $nurpv70dynact == "1" ]]; then
nurpv70status=$(<ramdisk/nurpv70dynstatus)
if [[ $nurpv70status == "1" ]]; then
Expand All @@ -560,14 +592,12 @@ wattkombiniert=$((ladeleistung + uberschuss))
if [[ $pvbezugeinspeisung == "0" ]]; then
pvregelungm="0"
schaltschwelle=$(echo "(230*$anzahlphasen)" | bc)
fi
if [[ $pvbezugeinspeisung == "1" ]]; then
elif [[ $pvbezugeinspeisung == "1" ]]; then
pvregelungm=$(echo "(230*$anzahlphasen*-1)" | bc)
schaltschwelle="0"
fi
if [[ $pvbezugeinspeisung == "2" ]]; then
elif [[ $pvbezugeinspeisung == "2" ]]; then
pvregelungm=$offsetpv
schaltschwelle=$((schaltschwelle + offsetpv))
schaltschwelle=$(((230*$anzahlphasen)+ offsetpv))
fi
openwbDebugLog "PV" 0 "Schaltschwelle: $schaltschwelle, zum runterregeln: $pvregelungm"
# Debug Ausgaben
Expand Down
1 change: 1 addition & 0 deletions runs/initRamdisk.sh
Original file line number Diff line number Diff line change
Expand Up @@ -568,6 +568,7 @@ initRamdisk(){
"mqttspeichersocminpv:-1" \
"mqttspeichersocnurpv:-1" \
"mqttspeicherwattnurpv:-1" \
"mqttspeicherwattnurpvhybrid:-1" \
"mqttstopchargepvatpercentlp1:-1" \
"mqttstopchargepvatpercentlp2:-1" \
"mqttstopchargepvpercentagelp1:-1" \
Expand Down
5 changes: 5 additions & 0 deletions runs/mqttsub.py
Original file line number Diff line number Diff line change
Expand Up @@ -694,6 +694,11 @@ def on_message(client, userdata, msg):
sendcommand = ["/var/www/html/openWB/runs/replaceinconfig.sh", "speicherwattnurpv=", msg.payload.decode("utf-8")]
subprocess.run(sendcommand)
client.publish("openWB/config/get/pv/batteryDischargePowerAtBattPriority", msg.payload.decode("utf-8"), qos=0, retain=True)
if (msg.topic == "openWB/config/set/pv/batteryDischargePowerAtBattPriorityHybrid"):
if (int(msg.payload) >= 0 and int(msg.payload) <= 100000):
sendcommand = ["/var/www/html/openWB/runs/replaceinconfig.sh", "speicherwattnurpvhybrid=", msg.payload.decode("utf-8")]
subprocess.run(sendcommand)
client.publish("openWB/config/get/pv/batteryDischargePowerAtBattPriorityHybrid", msg.payload.decode("utf-8"), qos=0, retain=True)
if (msg.topic == "openWB/config/set/pv/socStartChargeAtMinPv"):
if (int(msg.payload) >= 0 and int(msg.payload) <= 101):
sendcommand = ["/var/www/html/openWB/runs/replaceinconfig.sh", "speichersocminpv=", msg.payload.decode("utf-8")]
Expand Down
3 changes: 3 additions & 0 deletions runs/updateConfig.sh
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,9 @@ updateConfig(){
if ! grep -Fq "speicherwattnurpv=" $ConfigFile; then
echo "speicherwattnurpv=1500" >> $ConfigFile
fi
if ! grep -Fq "speicherwattnurpvhybrid=" $ConfigFile; then
echo "speicherwattnurpvhybrid=100000" >> $ConfigFile
fi
if ! grep -Fq "nurpvslowup=" $ConfigFile; then
echo "nurpvslowup=0" >> $ConfigFile
fi
Expand Down
7 changes: 7 additions & 0 deletions web/settings/pvconfig.html
Original file line number Diff line number Diff line change
Expand Up @@ -445,6 +445,13 @@ <h1>Einstellungen für PV-Laden</h1>
<span class="form-text small">Parameter in Watt [W] für die Entladeleistung Speichers im Modus PV-Laden. Dieser Parameter ist nur wirksam wenn bei "minimaler Entlade-SoC" ein Wert kleiner 100 % gewählt wurde. Definiert eine Entladeleistung, mit der der Speicher bei PV-Ladung zur Ladung des EV entladen werden darf.</span>
</div>
</div>
<div class="form-row mb-1">
<label for="batteryDischargePowerAtBattPriorityHybrid" class="col-md-4 col-form-label">hybridsystem Leistung</label>
<div class="col">
<input id="batteryDischargePowerAtBattPriorityHybrid" class="form-control naturalNumber" type="number" inputmode="decimal" required min="0" max="100000" value="0" data-default="0" data-topicprefix="openWB/config/get/pv/">
<span class="form-text small">Parameter in Watt [W] für die Maximale Entladung des Speichers und PV Leistung zusammen (Hybrid System). Der Wert 100.000 schaltet die Funktion ab.</span>
</div>
</div>
<div class="form-row mb-1">
<label for="minBatteryDischargeSocAtBattPriority" class="col-md-4 col-form-label">minimaler Entlade-SoC</label>
<div class="col-md-8">
Expand Down
1 change: 1 addition & 0 deletions web/settings/topicsToSubscribe_pvconfig.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ var topicsToSubscribe = [
["openWB/config/get/pv/minBatteryChargePowerAtEvPriority", 0],
["openWB/config/get/pv/minBatteryDischargeSocAtBattPriority", 0],
["openWB/config/get/pv/batteryDischargePowerAtBattPriority", 0],
["openWB/config/get/pv/batteryDischargePowerAtBattPriorityHybrid", 0],
["openWB/lp/2/boolSocConfigured", 0],
["openWB/lp/1/boolSocConfigured", 0],
["openWB/lp/1/boolChargePointConfigured", 0],
Expand Down