Seite 1 von 1

Stromeinkauf des Elektroautos errechnen

Verfasst: 7. Okt 2020 00:56
von bananajoe86
Hallo meine Experten,

ich könnte nochmal eure Hilfe gebrauchen. Mir fehlt für folgenden Wunsch jeglicher Ansatz.
Mein eGolf hängt an einem Stromzähler, somit weiß ich immer, was ich getankt habe. Um nun
aber die Wirtschaftlichkeit des KFZ einschätzen zu können, würde ich gerne nur den Verbrauch
"zählen" der wirklich aus der Steckdose kam und nicht vom Dach.
Hier mal mein verkorkster Versuch das zu lösen (Steinigt mich bitte nicht :-))

Code: Alles auswählen

rule "Ladestrom aus Steckdose"   
when
    Item Stromeinkauf  changed    //wird alle 30 Sek. aktualisiert und gib die Wattzahl an, die an Strom eingekauft werden muss
then
    
	
 if(Outlet1.state == ON) LadenausderSteckdose.postUpdate((Power1.state as Number) + LadenausderSteckdose.state as Number) 
 //Outlet1 ist der Stecker, der den Golf läd ; LadenausderSteckdose soll der hochgezählter wert sein ; Power1 ist der Ladestrom den der Golf zieht(an Outlet1)
 if(Verkauf.state < 0)   Zwischenschritt.postUpdate(((Power1.state as Number) - (Stromeinkauf.state as Number)))
 //Verkauf = PV überproduktion --> es wird kein Strom eingekauf wenn größer 0 ; wenn kleiner 0 soll die Differenz zwischen Outletverbrauch und Eingekauftem Strom berechnet werden(ich möchte ja später nur den Wattwert draufzählen, den ich Einkaufen musste und nicht den ganzen Verbrauch)
 if(Verkauf.state > 0)  Zwischenschritt.postUpdate(0)
 //Wenn Verkauf ist über 0 muss ich keinen Strom einkaufen, heißt ich muss auch nix berechnen, da der Ganze Strom vom DAch kommt
   
	
 createTimer(now.plusSeconds(1)) [if((Zwischenschritt.state as Number) < (Power1.state as Number)) {LadenausderSteckdose.postUpdate((LadenausderSteckdose.state as Number) - ((Zwischenschritt.state as Number)/1000/90))}]
 
 createTimer(now.plusSeconds(2)) [if((Zwischenschritt.state  == 0)) {LadenausderSteckdose.postUpdate((LadenausderSteckdose.state as Number) - ((Power1.state as Number)/1000/90))}]
 //Das sind dann die verzweifelten Versuche, dass irgendwie zusammen zu rechnen.   
end
Ich hoffe es blickt hier noch einer durch und mag mir helfen.
Gruß Joe

Re: Stromeinkauf des Elektroautos errechnen

Verfasst: 7. Okt 2020 14:41
von udo1toni
Keine Ahnung, warum Du da mit irgendwelchen Timern jonglierst :) Ich nehme an, Du suchst eher so etwas:

Code: Alles auswählen

rule "Ladestrom aus Steckdose"
when
    Item Stromeinkauf received update                                       // Messwert aktualisiert
then
    val Number nPower   = if(Power1.state instanceof Number)                // Ladestrom
                              (Power1.state as Number)
                          else 0
    val Number nEinkauf = if(Stromeinkauf.state instanceof Number)          // eingekaufter Strom
                              (Stromeinkauf.state as Number)
                          else 0
    var Number nSumme   = if(LadenausderSteckdose.state instanceof Number)  // Summenvortrag
                              (LadenausderSteckdose.state as Number)
                          else 0
    var Number nWert    = 0                                                 // Hilfsvariable

    if(nEinkauf > 0 && nPower > 0) {                                        // Laden bei Strombezug
        if(nEinkauf > nPower)                                               // Strombezug größer als Ladestrom
            nWert = nPower                                                  // also Ladestrom addieren
        else                                                                // Strombezug kleiner als Ladestrom
            nWert = nEinkauf                                                // also Einkauf addieren
    }
    nSumme = nSumme + nWert                                                 // summieren

    LadenausderSteckdose.postUpdate(nSumme)                                 // und in Item schreiben
end
Die ternären Ausdrücke stellen sicher, dass keine ungültigen Werte rein kommen. Der Wert, welcher aufsummiert werden muss, ist meinem Verständnis nach das Minimum von Einkauf und Ladestrom. Eventuell muss nWert vor dem Addieren noch durch 120 geteilt werden, wenn Du Wh (Wattstunden) als Ergebnis haben willst. Das ist streng genommen nicht so ganz korrekt, da die Ströme zwischen zwei Messungen nicht zwangsläufig statisch sind.