Integral bei negativen und positiven Werten_Energieberechnung

Begonnen von mc309, 30 Juni 2016, 11:51:28

Vorheriges Thema - Nächstes Thema

mc309

Hallo,
ich suche gerade nach einer Lösung die eingespeiste bzw. bezogene Energie aus dem Netz im Rahmen einer Photovoltaikanlage zu berechnen und zu visualisieren. Basierend auf der eingespeisten / bezogenen Leistung würde ich gerne im angehängten Plot mittels der Integralfunktion die Energie berechnen. Problematisch wird das Ganze nun dahingehend, dass es Flächen im positiven (gelb markiert) als auch im negativen (orange markiert) gibt - daher die Frage: Kann mir die Integralfunktion beide Flächen berechnen oder gibt es eine andere (einfachere) Lösung, die ich aktuell nicht sehe ?
Ich hoffe meine Frage ist soweit verständlich ;)
Gruß & Danke



Ellert

#1
Mit userReadings, eins für Einspeisung, das enthält alle positiven Werte und 0 für alle negativen Werte und eins für Bezug, das enthält alle negativen Werte und 0 für alle positiven Werte. Die beiden userReadings kannst Du dann "integral" modifizieren, siehe http://fhem.de/commandref_DE.html#attributes

So etwa:
attr <devicename> userReading Einspeisung:<trigger> integral {ReadingsVal("$name","<readingsname>",0) > 0 ? ReadingsVal("$name","<readingsname>",0) : 0}

für Bezug müsstest Du den Vergleich ändern und für Beides die Namen anpassen.

mc309

Hallo Ellert,
die Verwendung von "integral" bei einem userreading habe ich an anderer Stelle schon erfolgreich im Einsatz.
Mein Problem an deinem beschriebenen Lösungsansatz ist mehr die Frage, wie ich alle negativen Werte auf "0" bekomme (quasi sollen alle negativen Werte "abgeschnitten" werden) ???   

mc309

Zitat von: Ellert am 30 Juni 2016, 14:12:50
Mit userReadings, eins für Einspeisung, das enthält alle positiven Werte und 0 für alle negativen Werte und eins für Bezug, das enthält alle negativen Werte und 0 für alle positiven Werte. Die beiden userReadings kannst Du dann "integral" modifizieren, siehe http://fhem.de/commandref_DE.html#attributes

So etwa:
attr <devicename> userReading Einspeisung:<trigger> integral {ReadingsVal("$name","<readingsname>",0) > 0 ? ReadingsVal("$name","<readingsname>",0) : 0}

für Bezug müsstest Du den Vergleich ändern und für Beides die Namen anpassen.

Gerade gesehen, dass du während meines Beitrages deinen nochmals editiert hast :)
Super, das probiere ich später so mal aus - vielen Dank.

Tomy

Ich passe so meinen Bezug/Lieferung mittels Userreading an:
Momentanleistung { if (ReadingsVal("stromZaehler","dir_total_feed",0) >0 ) {sprintf("%.0f",ReadingsVal("stromZaehler","power",0))} else {"0"} },
Momentanleistung_feed { if (ReadingsVal("stromZaehler","dir_total_feed",0) <0) {sprintf("%.0f",ReadingsVal("stromZaehler","power",0)*(-1))} else {"0"} }


Gruß
Tomy