Seite 1 von 1

Kostal Piko BA Sensor - Position und Anzeige

Verfasst: Fr Aug 14, 2020 3:34 pm
von Nolle
Hallo,

wir werden wohl im September Familienzuwachs bekommen und sie wird ZOE heißen ;)
Jetzt wollte ich mich im Vorfeld schonmal mit der Ladelösung beschäftigen und bin somit unausweichlich hier gelandet!
Zur vorhandenen "Hardware":
PV: 9,4 kWp / max. 60% wg. KfW
WR: Kostal Piko 10 BA mit Piko BA Sensor (Stromwandlermessung, Modus 1)
Batterie: BYD B-Box H 9.0 - HV

Um mal zu testen, wie openWB mit meiner Konfiguration zurechtkommt, habe ich mir eben mal einen rumliegenden Raspi3 mit der aktuellen Version bespielt. Außerdem wird in dem Zuge auch gleich mein Verteiler auf die aktuelle TAB geupdatet, so dass "Umverkabelungen" gerade rein passen würden (sofern zulässig ;) ) Mein Eli meinte, ich solle mich doch da mal über die Möglichkeiten informieren...

Zur Zeit sieht mein Schaltschema in etwa so aus (Modus 1):
Modus Piko BA Sensor.PNG
Klar, so ein Stromwandler ist nur ein groben Schätzeisen, aber der WR braucht ihn halt und er leistet eigentlich akzeptable Werte.

Im Modus 1 Hausverbrauch, misst der Sensor den Stromverbrauch aller Verbraucher im Haus und berechnet den Strom der in das öffentliche Netz eingespeist wird.

Prinzipiell hätte ich das Schaltschema gerne so gelassen (never change a working system..). Die ZOE (bzw. natürlich die WB) kommt an genau die Position wie auch im Bild gezeigt. Da beim Ladevorgang dann natürlich die Ladeleistung im gemessenen Hausverbrauch mit drin ist, wäre ich jetzt mal davon ausgegangen, dass openWB die über die WB (egal ob openWB oder z.B. go-e charger) abgegebene Leistung da wieder rausrechnen kann.
Ein extra EVU Kit bräuchte ich also erstmal nicht. Soweit richtig?

Zur Software:
Ich habe als Strombezugsmessmodul Kostal Piko mit Energy Meter ausgewählt, als PV-Modul Kostal Piko und Speicher-Modul ByD HV.
Wahrscheinlich liegt es an meiner Konfiguration von openWB aber mir ist aufgefallen, dass PV-Leistung, Hausverbrauch und Speicher Beladung stimmen. Die Netz Einspeisung passt allerdings nicht. Den hier angezeigten Wert kann ich nirgendwo im WR finden. Kann es sein, dass dieser aus PV-leistung Hausverbrauch und Batterieladung berechnet wird? Eigentlich stellt der WR alle nötigen Daten zur Verfügung.
Passt die gewählte Konfiguration einfach nicht zu meinem System bzw. gibt es da eine bessere Variante? Zu Fuß per JSON habe ich jetzt noch nicht probiert...
Vielleicht kann mir da ja jemand ein paar nützliche Tipps geben.

Vielen Dank und Grüße

Re: Kostal Piko BA Sensor - Position und Anzeige

Verfasst: Fr Aug 14, 2020 4:36 pm
von openWB
Hausverbrauch in openWB wird immer errechnet. Alle anderen Werte werden ausgelesen.

Re: Kostal Piko BA Sensor - Position und Anzeige

Verfasst: So Aug 16, 2020 4:50 pm
von Nolle
Sooo, ich bin übers Wochenende mal ein bisschen in den Quelltext eingestiegen.
Tatsächlich ist es so, dass -zunächst- im Modul bezug_kostalpiko die Summe aus den Leistungswerten des Eigenstromsensors, der PV (Primärleistung, negativ) und ggf. der Batterie gebildet wird. Diese Summe wird dann als wattbezug übergeben.

Code: Alles auswählen

wattbezug=$(echo "$bezugw1+$bezugw2+$bezugw3+$pvwatt+$speicherleistung" | bc) 
Wenn ich das richtig intrepretiere wird dann in der loadvars.sh (???) die von dir beschriebene Berechnung des Hausverbrauchs durchgeführt (das ganze also 1:1 wieder rückwärts)

Code: Alles auswählen

hausverbrauch=$((wattbezugint - pvwatt - ladeleistung - speicherleistung - shd1_w - shd2_w - shd3_w - shd4_w - shd5_w - shd6_w - shd7_w - shd8_w - shd9_w))
Mich hatte irritiert, dass bei voller Sonne laut Anzeige mehr als 6kW eingespeist wird obwohl die Anlage hart auf 5,6kW abgeregelt ist bzw. bei Teilbeschattung und gleichzeitiger Batterieladung die Einspeisung eigentlich auf 0W geregelt wird, openWB aber immer irgendwas um die 200W Einspeisung angezeigt hat.

Da das Modul die PV-Primärleistung zur Auswertung nimmt, ist die Summe natürlich um den Wirkungsgrad des WR verfälscht.

Auch wird der phasenweise Eigenverbrauch welcher ausgelesen wird in die Variablen bezug1-3 gespeichert.

Code: Alles auswählen

bezugw1=$(echo $pvwatttmp | jq '.dxsEntries[2].value' | sed 's/\..*$//')
Gehe ich recht in der Annahme, dass diese für die eigentliche Regelung nicht herangezogen werden (nur zur Anzeige "Status")?
Für die Regelung entscheidend sind wahrscheinlich wattbezug und pvwatt entscheidend, richtig?

Da der WR alle nötigen Daten liefert, bzw. man die aus den bereitgestellten Daten berechnen kann, würde ich mich die nächsten Wochenenden mal dran setzen und das Modul ein bisschen anpassen und erweitern. Ich muss da nur noch ein paar Knoten im Hirn lösen :lol:
Aber vielleicht könnt ihr mich da ja ein bisschen supporten.
Ich weiß jetzt nicht, für wie viele Nutzer das interessant wäre aber wenn ich ne lauffähige Version habe stelle ich die natürlich auch gerne zur allgemeinen Verfügung.

Sonnige Grüße (auch aus Fulda ;) )

Re: Kostal Piko BA Sensor - Position und Anzeige

Verfasst: Mo Aug 31, 2020 3:01 pm
von Nolle
Moin,

die letzten zwei Wochen hab ich mal die geänderten Module laufen lassen und habe soweit keine Unstimmigkeiten finden können.

Hier der angepasste Code für das Bezugsmodul:

Code: Alles auswählen

#!/bin/bash

#Auslesen eines Kostal Piko WR über die integrierte API des WR mit angeschlossenem Eigenverbrauchssensor.

pvwatttmp=$(curl --connect-timeout 3 -s $wrkostalpikoip/api/dxs.json?dxsEntries=67109120'&'dxsEntries=251658753'&'dxsEntries=83887106'&'dxsEntries=83887362'&'dxsEntries=83887618'&'dxsEntries=67109378'&'dxsEntries=67109634'&'dxsEntries=67109890'&'dxsEntries=67109379'&'dxsEntries=67109635'&'dxsEntries=67109891)

#aktuelle Ausgangsleistung am WR [W]
wrausgang=$(echo $pvwatttmp | jq '.dxsEntries[0].value' | sed 's/\..*$//')
speicherleistung=$(</var/www/html/openWB/ramdisk/speicherleistung)
pvwatt=$(echo "$wrausgang+$speicherleistung" |bc)

if [ $pvwatt > 5 ]
	 then
	  pvwatt=$(echo "$pvwatt*-1" |bc)
fi   

#zur weiteren verwendung im webinterface
echo $pvwatt > /var/www/html/openWB/ramdisk/pvwatt
#Gesamtzählerstand am WR [kWh]
pvkwh=$(echo $pvwatttmp | jq '.dxsEntries[1].value' | sed 's/\..*$//')
pvkwh=$(echo "$pvkwh*1000" |bc)
#zur weiteren verwendung im webinterface	
echo $pvkwh > /var/www/html/openWB/ramdisk/pvkwh

eigenvbw1=$(echo $pvwatttmp | jq '.dxsEntries[2].value' | sed 's/\..*$//')
eigenvbw2=$(echo $pvwatttmp | jq '.dxsEntries[3].value' | sed 's/\..*$//')
eigenvbw3=$(echo $pvwatttmp | jq '.dxsEntries[4].value' | sed 's/\..*$//')

wrausgangw1=$(echo $pvwatttmp | jq '.dxsEntries[8].value' | sed 's/\..*$//')
wrausgangw2=$(echo $pvwatttmp | jq '.dxsEntries[9].value' | sed 's/\..*$//')
wrausgangw3=$(echo $pvwatttmp | jq '.dxsEntries[10].value' | sed 's/\..*$//')


bezugw1=$(echo "$eigenvbw1-$wrausgangw1" |bc)
bezugw2=$(echo "$eigenvbw2-$wrausgangw2" |bc)
bezugw3=$(echo "$eigenvbw3-$wrausgangw3" |bc)

evuv1=$(echo $pvwatttmp | jq '.dxsEntries[5].value' | sed 's/\..*$//')
evuv2=$(echo $pvwatttmp | jq '.dxsEntries[6].value' | sed 's/\..*$//')
evuv3=$(echo $pvwatttmp | jq '.dxsEntries[7].value' | sed 's/\..*$//')
if [[ "$speichermodul" == "speicher_bydhv" ]]; then
	speicherleistung=$(</var/www/html/openWB/ramdisk/speicherleistung)
	# wattbezug=$(echo "$bezugw1+$bezugw2+$bezugw3+$pvwatt+$speicherleistung" | bc) 
	wattbezug=$(echo "$bezugw1+$bezugw2+$bezugw3" | bc) 
else
	wattbezug=$(echo "$bezugw1+$bezugw2+$bezugw3" |bc)
fi


echo $wattbezug
echo $wattbezug > /var/www/html/openWB/ramdisk/wattbezug
bezuga1=$(echo "scale=2 ; $bezugw1 / $evuv1" | bc)
bezuga2=$(echo "scale=2 ; $bezugw2 / $evuv2" | bc)
bezuga3=$(echo "scale=2 ; $bezugw3 / $evuv3" | bc)
echo $bezugw1 > /var/www/html/openWB/ramdisk/bezugw1
echo $bezugw2 > /var/www/html/openWB/ramdisk/bezugw2
echo $bezugw3 > /var/www/html/openWB/ramdisk/bezugw3
echo $bezuga1 > /var/www/html/openWB/ramdisk/bezuga1
echo $bezuga2 > /var/www/html/openWB/ramdisk/bezuga2
echo $bezuga3 > /var/www/html/openWB/ramdisk/bezuga3
echo $evuv1 > /var/www/html/openWB/ramdisk/evuv1
echo $evuv2 > /var/www/html/openWB/ramdisk/evuv2
echo $evuv3 > /var/www/html/openWB/ramdisk/evuv3
und hier für das wr-Modul:

Code: Alles auswählen

#!/bin/bash

#Auslesen eines Kostal Piko WR über die integrierte API des WR. Rückgabewert ist die aktuelle Wattleistung.

pvwatttmp=$(curl --connect-timeout 5 -s $wrkostalpikoip/api/dxs.json?dxsEntries=67109120'&'dxsEntries=251658753)

#aktuelle Ausgangsleistung am WR [W]
#pvwatt=$(echo $pvwatttmp | jq '.dxsEntries[0].value' | sed 's/\..*$//')

wrausgang=$(echo $pvwatttmp | jq '.dxsEntries[0].value' | sed 's/\..*$//')
speicherleistung=$(</var/www/html/openWB/ramdisk/speicherleistung)
pvwatt=$(echo "$wrausgang+$speicherleistung" |bc)


if [ $pvwatt > 5 ]
	 then
	  pvwatt=$(echo "$pvwatt*-1" |bc)
fi   

echo $pvwatt
#zur weiteren verwendung im webinterface
echo $pvwatt > /var/www/html/openWB/ramdisk/pvwatt
#Gesamtzählerstand am WR [kWh]
#pvkwh=$(echo $pvwatttmp | jq '.dxsEntries[1].value' | sed 's/\..*$//')
#echo $pvkwh > /var/www/html/openWB/ramdisk/pvkwhk
#pvkwh=$(echo "$pvkwh*1000" |bc)
#zur weiteren verwendung im webinterface
#echo $pvkwh > /var/www/html/openWB/ramdisk/pvkwh
Da ich noch auf unsere Zoe und die Wallbox warte kann ich noch nichts zur Funktionalität der Regelung sagen, aber die Anzeigen sind schonmal stimmig.
Wenn ich das richtig verstanden habe, gibt es einmal die Anzeigen-"Ebene" und eine interne, die dann der Regelung dient...?

Ich habe mir testweise neue Module erstellt, das erfordert aber noch das Eintragen dieser an diversen anderen Stellen...
Wenn die Anpassungen für das openWB-Team interessant sind wäre das natürlich cool, wenn ihr das sauber einpflegen könntet.

Soweit erstmal, ich hoffe es nütz irgendwem.

Grüße

Re: Kostal Piko BA Sensor - Position und Anzeige

Verfasst: Mo Aug 31, 2020 3:09 pm
von openWB
Vielen Dank!
Fur die Regelung entscheidend ist wattbezug und Speicherleistung.
Der Rest ist „nur“ Optik.
Wenn deine Anpassung bestehende Installationen nicht beeinträchtigt und die Werte dadurch exakter sind wird das gerne übernommen.

Re: Kostal Piko BA Sensor - Position und Anzeige

Verfasst: Mo Aug 31, 2020 5:06 pm
von Nolle
Wegen der "bestehenden Installationen",... wenn jemand genau meine Hardwareconfiguration benutz, dann geht das wohl, aber ich könnte mir auch vorstellen, dass die Module in anderen Konfigurationen verwendet werden und dann...?
Deswegen hab ich mir ja auch eigene Module (jeweils durch ...BA ergänzt) gebastelt.
Da muss natürlich die modulconfig.php (und andere?) noch modifiziert werden.

Hauptunterschied ist, dass bisher die übermittelte PV-Leistung zur Berechnung herangezogen wird. Und das ist halt das, was in den WR "brutto" rein geht. "Netto" kommt da tw. deutlich weniger raus. Und daher kam dann auch die von mir eingangs festgestellte Differenz. Die Batterieleistung wird -zumindest ich das bisher beobachten konnte- sehr nahe dem Nettowert angegeben. Somit passt das dann wieder.

Der Übersicht halber hab ich mal die einzelnen Parameter "visualisiert":
KostalPikoBA_Verdratung.png
Fur die Regelung entscheidend ist wattbezug und Speicherleistung.
Der Rest ist „nur“ Optik.
Ich befürchte, die "loadvars.sh" muss evtl. auch noch getunt werden... wenn mal wieder Zeit ist...


PS: Da es jetzt ja doch hauptsächlich um die Software geht, vielleicht kann ein Mod den Beitrag ja in ein passenderes Forum verschieben?