Skip to content
This repository has been archived by the owner on Mar 31, 2023. It is now read-only.

Commit

Permalink
go-e charger: Simulation Energiezähler während des Ladens snaptec#1559
Browse files Browse the repository at this point in the history
  • Loading branch information
xerion3800 committed Nov 12, 2021
1 parent 4441b34 commit 3b94bfd
Show file tree
Hide file tree
Showing 5 changed files with 205 additions and 31 deletions.
56 changes: 45 additions & 11 deletions modules/goelp1/main.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,31 @@ rekwh='^[-+]?[0-9]+\.?[0-9]*$'

output=$(curl --connect-timeout $goetimeoutlp1 -s http://$goeiplp1/status)
if [[ $? == "0" ]] ; then
goecorrectionfactor=$(echo "scale=0;$goecorrectionfactorlp1 * 100000 /1" |bc)
watt=$(echo $output | jq -r '.nrg[11]')
watt=$(echo "scale=0;$watt * 10 /1" |bc)
if [[ $watt =~ $re ]] ; then
echo $watt > /var/www/html/openWB/ramdisk/llaktuell
if [[ $goesimulationlp1 == "0" ]] ; then
echo $watt > /var/www/html/openWB/ramdisk/llaktuell
else
wattc=$((watt*$goecorrectionfactor/100000))
wattc=$(echo "scale=0;$wattc" |bc)
echo $wattc > /var/www/html/openWB/ramdisk/llaktuell
fi
fi
lla1=$(echo $output | jq -r '.nrg[4]')
lla1=$(echo "scale=0;$lla1 / 10" |bc)
if [[ $lla1 =~ $re ]] ; then
lla1=$(echo "scale=1;$lla1 / 10" |bc)
if [[ $lla1 =~ $rekwh ]] ; then
echo $lla1 > /var/www/html/openWB/ramdisk/lla1
fi
lla2=$(echo $output | jq -r '.nrg[5]')
lla2=$(echo "scale=0;$lla2 / 10" |bc)
if [[ $lla2 =~ $re ]] ; then
lla2=$(echo "scale=1;$lla2 / 10" |bc)
if [[ $lla2 =~ $rekwh ]] ; then
echo $lla2 > /var/www/html/openWB/ramdisk/lla2
fi
lla3=$(echo $output | jq -r '.nrg[6]')
lla3=$(echo "scale=0;$lla3 / 10" |bc)
if [[ $lla3 =~ $re ]] ; then
lla3=$(echo "scale=1;$lla3 / 10" |bc)
if [[ $lla3 =~ $rekwh ]] ; then
echo $lla3 > /var/www/html/openWB/ramdisk/lla3
fi
llv1=$(echo $output | jq -r '.nrg[0]')
Expand All @@ -38,15 +45,42 @@ if [[ $? == "0" ]] ; then
fi
llkwh=$(echo $output | jq -r '.eto')
llkwh=$(echo "scale=3;$llkwh / 10" |bc)
if [[ $llkwh =~ $rekwh ]] ; then
echo $llkwh > /var/www/html/openWB/ramdisk/llkwh
fi
rfid=$(echo $output | jq -r '.uby')
oldrfid=$(</var/www/html/openWB/ramdisk/tmpgoelp1rfid)
openwbDebugLog "RFID" 0 "aktueller RFID: $rfid | alter RFID: $oldrfid"
if [[ $rfid != $oldrfid ]] ; then
echo $rfid > /var/www/html/openWB/ramdisk/readtag
echo $rfid > /var/www/html/openWB/ramdisk/tmpgoelp1rfid
fi
if [[ $goesimulationlp1 == "0" ]] ; then
if [[ $llkwh =~ $rekwh ]] ; then
echo $llkwh > /var/www/html/openWB/ramdisk/llkwh
fi
else
temp_kWhCounter_lp1=$(</var/www/html/openWB/ramdisk/temp_kWhCounter_lp1)
#simulation der Energiemenge während des ladens
#wenn die Dateien noch nicht da sind, werden sie angelegt. Simulation startet im nächsten Regelschritt.
if [ -f "/var/www/html/openWB/ramdisk/goewatt0neg" ]; then
if [ -f "/var/www/html/openWB/ramdisk/goewatt0pos" ]; then
python /var/www/html/openWB/runs/simcount.py $wattc goe goeposkwh goenegkwh
else
#Benutze den Zählerstand aus temp_kWhCounter_lp1 als Startwert für die Simulation
simenergy=$(echo "scale=0; $temp_kWhCounter_lp1*3600000/1" | bc)
echo $simenergy > /var/www/html/openWB/ramdisk/goewatt0pos
fi
else
echo 0 > /var/www/html/openWB/ramdisk/goewatt0neg
fi
#der ausgelesene Zählerstand wird ignoriert und stattdessen die Leistung aufintegriert
#Grund: der ausgelesene Zählerstand hat eine Auflösung von 1kWh -> zu ungenau in der Darstellung
if [ -f "/var/www/html/openWB/ramdisk/goeposkwh" ]; then
simenergy=$(echo "scale=3; $(</var/www/html/openWB/ramdisk/goeposkwh)/1000" | bc)
echo $simenergy > /var/www/html/openWB/ramdisk/llkwh
else
#Wenn die Simulation noch nicht gelaufen ist, nehme den Wert temp_kWhCounter_lp1
echo $temp_kWhCounter_lp1 > /var/www/html/openWB/ramdisk/llkwh
fi
fi
#car status 1 Ladestation bereit, kein Auto
#car status 2 Auto lädt
#car status 3 Warte auf Fahrzeug
Expand All @@ -62,4 +96,4 @@ if [[ $? == "0" ]] ; then
else
echo 0 > /var/www/html/openWB/ramdisk/chargestat
fi
fi
fi
58 changes: 47 additions & 11 deletions modules/goelp2/main.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,31 @@ rekwh='^[-+]?[0-9]+\.?[0-9]*$'

output=$(curl --connect-timeout $goetimeoutlp2 -s http://$goeiplp2/status)
if [[ $? == "0" ]] ; then
goecorrectionfactor=$(echo "scale=0;$goecorrectionfactorlp2 * 100000 /1" |bc)
watt=$(echo $output | jq -r '.nrg[11]')
watt=$(echo "scale=0;$watt * 10 /1" |bc)
if [[ $watt =~ $re ]] ; then
echo $watt > /var/www/html/openWB/ramdisk/llaktuells1
if [[ $goesimulationlp1 == "0" ]] ; then
echo $watt > /var/www/html/openWB/ramdisk/llaktuells1
else
wattc=$((watt*$goecorrectionfactor/100000))
wattc=$(echo "scale=0;$wattc" |bc)
echo $wattc > /var/www/html/openWB/ramdisk/llaktuells1
fi
fi
lla1=$(echo $output | jq -r '.nrg[4]')
lla1=$(echo "scale=0;$lla1 / 10" |bc)
if [[ $lla1 =~ $re ]] ; then
lla1=$(echo "scale=1;$lla1 / 10" |bc)
if [[ $lla1 =~ $rekwh ]] ; then
echo $lla1 > /var/www/html/openWB/ramdisk/llas11
fi
lla2=$(echo $output | jq -r '.nrg[5]')
lla2=$(echo "scale=0;$lla2 / 10" |bc)
if [[ $lla2 =~ $re ]] ; then
lla2=$(echo "scale=1;$lla2 / 10" |bc)
if [[ $lla2 =~ $rekwh ]] ; then
echo $lla2 > /var/www/html/openWB/ramdisk/llas12
fi
lla3=$(echo $output | jq -r '.nrg[6]')
lla3=$(echo "scale=0;$lla3 / 10" |bc)
if [[ $lla3 =~ $re ]] ; then
lla3=$(echo "scale=1;$lla3 / 10" |bc)
if [[ $lla3 =~ $rekwh ]] ; then
echo $lla3 > /var/www/html/openWB/ramdisk/llas13
fi
llv1=$(echo $output | jq -r '.nrg[0]')
Expand All @@ -37,16 +44,45 @@ if [[ $? == "0" ]] ; then
echo $llv3 > /var/www/html/openWB/ramdisk/llvs13
fi
llkwh=$(echo $output | jq -r '.eto')
llkwh=$(echo "scale=3;$llkwh / 10" |bc)
if [[ $llkwh =~ $rekwh ]] ; then
echo $llkwh > /var/www/html/openWB/ramdisk/llkwhs1
fi
llkwh=$(echo "scale=3;$llkwh / 10" |bc)
rfid=$(echo $output | jq -r '.uby')
oldrfid=$(</var/www/html/openWB/ramdisk/tmpgoelp2rfid)
if [[ $rfid != $oldrfid ]] ; then
echo $rfid > /var/www/html/openWB/ramdisk/readtag
echo $rfid > /var/www/html/openWB/ramdisk/tmpgoelp2rfid
fi
if [[ $goesimulationlp2 == "0" ]] ; then
if [[ $llkwh =~ $rekwh ]] ; then
echo $llkwh > /var/www/html/openWB/ramdisk/llkwhs1
fi
else
temp_kWhCounter_lp2=$(</var/www/html/openWB/ramdisk/temp_kWhCounter_lp2)
#simulation der Energiemenge während des ladens
#wenn die Dateien noch nicht da sind, werden sie angelegt. Simulation startet im nächsten Regelschritt.
if [ -f "/var/www/html/openWB/ramdisk/goe2watt0neg" ]; then
if [ -f "/var/www/html/openWB/ramdisk/goe2watt0pos" ]; then
python /var/www/html/openWB/runs/simcount.py $wattc goe2 goe2poskwh goe2negkwh
else
#Benutze den Zählerstand aus temp_kWhCounter_lp2 als Startwert für die Simulation
simenergy=$(echo "scale=0; $temp_kWhCounter_lp2*3600000/1" | bc)
echo $simenergy > /var/www/html/openWB/ramdisk/goe2watt0pos
fi
else
echo 0 > /var/www/html/openWB/ramdisk/goe2watt0neg
fi
#der ausgelesene Zählerstand wird ignoriert und stattdessen die Leistung aufintegriert
#Grund: der ausgelesene Zählerstand hat eine Auflösung von 1kWh -> zu ungenau in der Darstellung
if [ -f "/var/www/html/openWB/ramdisk/goe2poskwh" ]; then
simenergy=$(echo "scale=3; $(</var/www/html/openWB/ramdisk/goe2poskwh)/1000" | bc)
echo $simenergy > /var/www/html/openWB/ramdisk/llkwhs1
else
#Wenn die Simulation noch nicht gelaufen ist, nehme den Wert temp_kWhCounter_lp2
echo $temp_kWhCounter_lp2 > /var/www/html/openWB/ramdisk/llkwhs1
fi
fi



#car status 1 Ladestation bereit, kein Auto
#car status 2 Auto lädt
#car status 3 Warte auf Fahrzeug
Expand Down
1 change: 1 addition & 0 deletions runs/initRamdisk.sh
Original file line number Diff line number Diff line change
Expand Up @@ -447,6 +447,7 @@ initRamdisk(){
for f in \
"pluggedladunglp${i}startkwh:openWB/lp/${i}/plugStartkWh:0" \
"manual_soc_lp${i}:openWB/lp/${i}/manualSoc:0" \
"temp_kWhCounter_lp${i}:openWB/lp/${i}/kWhCounter:0" \
"pluggedladungaktlp${i}:openWB/lp/${i}/pluggedladungakt:0" \
"lp${i}phasen::0" \
"lp${i}enabled::1" \
Expand Down
22 changes: 19 additions & 3 deletions runs/updateConfig.sh
Original file line number Diff line number Diff line change
Expand Up @@ -571,18 +571,36 @@ updateConfig(){
if ! grep -Fq "goetimeoutlp1=" $ConfigFile; then
echo "goetimeoutlp1=5" >> $ConfigFile
fi
if ! grep -Fq "goesimulationlp1=" $ConfigFile; then
echo "goesimulationlp1=0" >> $ConfigFile
fi
if ! grep -Fq "goecorrectionfactorlp1=" $ConfigFile; then
echo "goecorrectionfactorlp1=1" >> $ConfigFile
fi
if ! grep -Fq "goeiplp2=" $ConfigFile; then
echo "goeiplp2=192.168.0.15" >> $ConfigFile
fi
if ! grep -Fq "goetimeoutlp2=" $ConfigFile; then
echo "goetimeoutlp2=5" >> $ConfigFile
fi
if ! grep -Fq "goesimulationlp2=" $ConfigFile; then
echo "goesimulationlp2=0" >> $ConfigFile
fi
if ! grep -Fq "goecorrectionfactorlp2=" $ConfigFile; then
echo "goecorrectionfactorlp2=1" >> $ConfigFile
fi
if ! grep -Fq "goeiplp3=" $ConfigFile; then
echo "goeiplp3=192.168.0.15" >> $ConfigFile
fi
if ! grep -Fq "goetimeoutlp3=" $ConfigFile; then
echo "goetimeoutlp3=5" >> $ConfigFile
fi
if ! grep -Fq "goesimulationlp3=" $ConfigFile; then
echo "goesimulationlp3=0" >> $ConfigFile
fi
if ! grep -Fq "goecorrectionfactorlp3=" $ConfigFile; then
echo "goecorrectionfactorlp3=1" >> $ConfigFile
fi
if ! grep -Fq "pushbenachrichtigung=" $ConfigFile; then
echo "pushbenachrichtigung=0" >> $ConfigFile
fi
Expand Down Expand Up @@ -1193,9 +1211,7 @@ updateConfig(){
else
echo "etprovideraktiv=0" >> $ConfigFile
fi
fi
# tibber demo settings
if ! grep -Fq "tibbertoken=" $ConfigFile; then
# tibber demo settings
echo "tibbertoken=d1007ead2dc84a2b82f0de19451c5fb22112f7ae11d19bf2bedb224a003ff74a" >> $ConfigFile
echo "tibberhomeid=c70dcbe5-4485-4821-933d-a8a86452737b" >> $ConfigFile
fi
Expand Down
99 changes: 93 additions & 6 deletions web/settings/modulconfiglp.php
Original file line number Diff line number Diff line change
Expand Up @@ -386,7 +386,7 @@ function visibility_twcmanagerlp1_connection() {
<div class="alert alert-info">
Seit Firmware Version 0.40 wird PV-Laden besser unterstützt.
<span class="text-danger">
Bitte halten Sie die go-e Firmware auf einem aktuellen Stand.
Bitte halten Sie die Go-e Firmware auf einem aktuellen Stand.
</span>
</div>
<div class="form-row mb-1">
Expand All @@ -404,10 +404,39 @@ function visibility_twcmanagerlp1_connection() {
<input class="form-control" type="number" min="0" max="10" step="1" name="goetimeoutlp1" id="goetimeoutlp1" value="<?php echo $goetimeoutlp1old ?>">
<span class="form-text small">
Gibt die Zeit in Sekunden an wie lange auf Antwort des Go-echargers gewartet wird. Bei gutem Wlan reichen 2 Sekunden aus.
Zu lange Wartezeit zieht einen Verzug der Regellogik von openWB mit sich wenn der Go-echarger z.B. gerade unterwegs genutzt wird.
Zu lange Wartezeit zieht einen Verzug der Regellogik von openWB mit sich wenn der go-echarger z.B. gerade unterwegs genutzt wird.
</span>
</div>
</div>
<div class="form-row mb-1">
<label class="col-md-4 col-form-label">Simulation der geladenen leistung (kWh) für Zählerstand</label>
<div class="col">
<div class="btn-group btn-group-toggle btn-block" data-toggle="buttons">
<label class="btn btn-outline-info<?php if($goesimulationlp1old == 0) echo " active" ?>">
<input type="radio" name="goesimulationlp1" id="goesimulationlp1off" value="0"<?php if($goesimulationlp1old == 0) echo " checked=\"checked\"" ?>>Nein
</label>
<label class="btn btn-outline-info<?php if($goesimulationlp1old == 1) echo " active" ?>">
<input type="radio" name="goesimulationlp1" id="goesimulationlp1On" value="1"<?php if($goesimulationlp1old == 1) echo " checked=\"checked\"" ?>>Ja
</label>
</div>
<span class="form-text small">
Der Zählerstand des Go-e springt immer um ganze kWh. Dies führt im Ladelog und den Tagesgrafiken zu unschönen Darstellungen.<br />
Mit der Simulation werden diese Werte geglättet und somit ähnlich dem tatsächlichen Verlauf dargestellt.<br />
Bei Nutzung des Features wird der Zählerstand Go-e ignoriert und durch die simulierten Werte berechnet.<br />
<span class="text-danger">Feature ist aktuell noch in der Implementierung!</span>
</span>
</div>
</div>
<div class="form-row mb-1">
<label for="goecorrectionfactorlp1" class="col-md-4 col-form-label">Korrektur-Faktor für Ladeleistung [W]</label>
<div class="col">
<input class="form-control" type="number" min="0.00001" max="1.99999" step="0.00001" name="goecorrectionfactorlp1" id="goecorrectionfactorlp1" value="<?php echo $goecorrectionfactorlp1old ?>">
<span class="form-text small">
Faktor, mit dem die Wertabweichungen des Go-echargers bei Ladeleistung [W] korrigiert werden können.<br />
Bei gewünschter Erhöhung um z.B. 8% Eingabe 1,08. Bei 1 keine Korrektur.<br />
Korrekturfaktor <> 1 nur sinnvoll bei Nutzung Simulation. </span>
</div>
</div>
</div>
</div>
<div id="evseconnrgkick" class="hide">
Expand Down Expand Up @@ -2728,7 +2757,7 @@ function visibility_twcmanagerlp2_connection() {
<div class="alert alert-info">
Seit Firmware Version 0.40 wird PV-Laden besser unterstützt.
<span class="text-danger">
Bitte halten Sie die go-e Firmware auf einem aktuellen Stand.
Bitte halten Sie die Go-e Firmware auf einem aktuellen Stand.
</span>
</div>
<div class="form-row mb-1">
Expand All @@ -2751,7 +2780,36 @@ function visibility_twcmanagerlp2_connection() {
</div>
</div>
</div>
</div>
<div class="form-row mb-1">
<label class="col-md-4 col-form-label">Simulation der geladenen leistung (kWh) für Zählerstand</label>
<div class="col">
<div class="btn-group btn-group-toggle btn-block" data-toggle="buttons">
<label class="btn btn-outline-info<?php if($goesimulationlp2old == 0) echo " active" ?>">
<input type="radio" name="goesimulationlp2" id="goesimulationlp2off" value="0"<?php if($goesimulationlp2old == 0) echo " checked=\"checked\"" ?>>Nein
</label>
<label class="btn btn-outline-info<?php if($goesimulationlp2old == 1) echo " active" ?>">
<input type="radio" name="goesimulationlp2" id="goesimulationlp2On" value="1"<?php if($goesimulationlp2old == 1) echo " checked=\"checked\"" ?>>Ja
</label>
</div>
<span class="form-text small">
Der Zählerstand des Go-e springt immer um ganze kWh. Dies führt im Ladelog und den Tagesgrafiken zu unschönen Darstellungen.<br />
Mit der Simulation werden diese Werte geglättet und somit ähnlich dem tatsächlichen Verlauf dargestellt.<br />
Bei Nutzung des Features wird der Zählerstand Go-e ignoriert und durch die simulierten Werte berechnet.<br />
<span class="text-danger">Feature ist aktuell noch in der Implementierung!</span>
</span>
</div>
</div>
<div class="form-row mb-1">
<label for="goecorrectionfactorlp2" class="col-md-4 col-form-label">Korrektur-Faktor für Ladeleistung [W]</label>
<div class="col">
<input class="form-control" type="number" min="0.00001" max="1.99999" step="0.00001" name="goecorrectionfactorlp2" id="goecorrectionfactorlp2" value="<?php echo $goecorrectionfactorlp2old ?>">
<span class="form-text small">
Faktor, mit dem die Wertabweichungen des Go-echargers bei Ladeleistung [W] korrigiert werden können.<br />
Bei gewünschter Erhöhung um z.B. 8% Eingabe 1,08. Bei 1 keine Korrektur.<br />
Korrekturfaktor <> 1 nur sinnvoll bei Nutzung Simulation.
</span>
</div>
</div>

<div id="llmodullp2" class="hide">
<hr class="border-primary">
Expand Down Expand Up @@ -4563,7 +4621,7 @@ function display_lastmanagement() {
<div class="alert alert-info">
Seit Firmware Version 0.40 wird PV-Laden besser unterstützt.
<span class="text-danger">
Bitte halten Sie die go-e Firmware auf einem aktuellen Stand.
Bitte halten Sie die Go-e Firmware auf einem aktuellen Stand.
</span>
</div>
<div class="form-row mb-1">
Expand All @@ -4587,7 +4645,36 @@ function display_lastmanagement() {
</div>
</div>
</div>

<div class="form-row mb-1">
<label class="col-md-4 col-form-label">Simulation der geladenen leistung (kWh) für Zählerstand</label>
<div class="col">
<div class="btn-group btn-group-toggle btn-block" data-toggle="buttons">
<label class="btn btn-outline-info<?php if($goesimulationlp3old == 0) echo " active" ?>">
<input type="radio" name="goesimulationlp3" id="goesimulationlp3off" value="0"<?php if($goesimulationlp3old == 0) echo " checked=\"checked\"" ?>>Nein
</label>
<label class="btn btn-outline-info<?php if($goesimulationlp3old == 1) echo " active" ?>">
<input type="radio" name="goesimulationlp3" id="goesimulationlp3On" value="1"<?php if($goesimulationlp3old == 1) echo " checked=\"checked\"" ?>>Ja
</label>
</div>
<span class="form-text small">
Der Zählerstand des Go-e springt immer um ganze kWh. Dies führt im Ladelog und den Tagesgrafiken zu unschönen Darstellungen.<br />
Mit der Simulation werden diese Werte geglättet und somit ähnlich dem tatsächlichen Verlauf dargestellt.<br />
Bei Nutzung des Features wird der Zählerstand Go-e ignoriert und durch die simulierten Werte berechnet.<br />
<span class="text-danger">Feature ist aktuell noch in der Implementierung!</span>
</span>
</div>
</div>
<div class="form-row mb-1">
<label for="goecorrectionfactorlp3" class="col-md-4 col-form-label">Korrektur-Faktor für Ladeleistung [W]</label>
<div class="col">
<input class="form-control" type="number" min="0.00001" max="1.99999" step="0.00001" name="goecorrectionfactorlp3" id="goecorrectionfactorlp3" value="<?php echo $goecorrectionfactorlp3old ?>">
<span class="form-text small">
Faktor, mit dem die Wertabweichungen des Go-echargers bei Ladeleistung [W] korrigiert werden können.<br />
Bei gewünschter Erhöhung um z.B. 8% Eingabe 1,08. Bei 1 keine Korrektur.<br />
Korrekturfaktor <> 1 nur sinnvoll bei Nutzung Simulation.
</span>
</div>
</div>
<div id="llmodullp3" class="hide">
<hr class="border-primary">
<div class="form-row mb-1">
Expand Down

0 comments on commit 3b94bfd

Please sign in to comment.