Hilfe bei PV Eigenverbrauch berechnen benötigt

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
dasSofa
Beiträge: 4
Registriert: 1. Jul 2021 11:30
Answers: 0

Hilfe bei PV Eigenverbrauch berechnen benötigt

Beitrag von dasSofa »

Hallo,

ich habe das Smartmeter Binding für den Stromzähler und das Kostal Binding für den Wechselrichter.
Jetzt wollte ich über eine DSL Rule einfach den produzierten Strom am Tag aus der PV - den eingespeisten Strom berechnen um an meinen Eigenverbauch der PV zu kommen.

Mit einer DSL Rule erstelle ich das Item House_Energy_Day_PV_Output um den täglich eingespeisten Strom als Item zu haben.

Code: Alles auswählen

var Number HEDPVO = (Stromzahler_10280.deltaSince(ZonedDateTime.now().with(LocalTime.MIDNIGHT)) as Number)
House_Energy_Day_PV_Output.postUpdate(HEDPVO / 1000)
Somit habe ich die 2 Items für die Berechnung:

Code: Alles auswählen

=items.House_Energy_Day_PV_Output { "state": "8.7657 kWh", "displayState": "8,766 kWh" } 
=Items.KOSTALPLENTICOREPlus70noBattery_YieldDay { "state": "15.067237723233701 kWh", "displayState": "15,07 kWh" }
Wenn ich dann in einer weiteren DSL Rule die Berechnung mache

Code: Alles auswählen

var Number Kostal_YD = (KOSTALPLENTICOREPlus70noBattery_YieldDay.state as Number)
var Number HEDPVO = (House_Energy_Day_PV_Output.state as Number)
var Number TGVB = (Kostal_YD - HEDPVO)
Tagesverbrauch.postUpdate(TGVB)
Kommt hier vermutlich ein falsche Wert (23298313.119847200000) wegen den verschiedenen langen Zahlen hinter dem . bei den Items raus

Wie kann ich bei dem Kostal Item die Anzahl der stellen hinter dem Punkt entfernen oder die Berechnung generell machen.
Leider habe ich nicht viel Erfahrung in OH3 und bin auch noch nicht so gut in der Programmierung darin.

Habe mehrere Tage in den Foren gelesen und versucht das selbst zu regeln, aber leider komme ich hier nicht weiter weil ich auch einiges nicht verstehe.

Gruß Bernhard

Benutzeravatar
udo1toni
Beiträge: 15249
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Hilfe bei PV Eigenverbrauch berechnen benötigt

Beitrag von udo1toni »

Die Anzahl der Nachkommastellen ist irrelevant, grundsätzlich arbeitet openHAB mit Float als Datentyp. Float hat aber den Nachteil, dass nicht alle reellen Zahlen im verfügbaren Zahlenraum dargestellt werden können. Deshalb kommt es dann auch zu Rundungsfehlern und seltsamen Anzeigen wie 15.00000000007 statt 15, das betrifft also auch ganze Zahlen, weil die Zahlen aus Mantisse und Exponent gebildet werden.
Für das Rechnen mit den Werten spielt das aber keine Rolle, da immer der "nächstgelegene Wert" verwendet wird, mit dem also der Rechenfehler so gering wie möglich ist. Und wenn Du später die Anzeige auf zwei Nachkommastellen begrenzt, verschwinden die vielen Nullen auch :)

Viel wichtiger ist, dass die Units alle stimmen, entweder, alle beteiligten Items verwenden UoM oder keines.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

dasSofa
Beiträge: 4
Registriert: 1. Jul 2021 11:30
Answers: 0

Re: Hilfe bei PV Eigenverbrauch berechnen benötigt

Beitrag von dasSofa »

Ich hab alle UoM kontrolliert, nur das Item Tagesverbrauch selbst hatte keinen. Das hab ich dann über state Descriptions gesetzt.
Trotzdem kommt da nur ein falscher Wert raus.

Über diese Rule hole ich ja die Tageseinspeisung vom Stromzähler in Wh und lege den Wert in das Item House_Energy_Day_PV_Output ab und Teile das durch 1000 um damit kWh in diesem Item zu haben. Habe ich hierbei einen Fehler gemacht ?

Code: Alles auswählen

var Number HEDPVO = (Stromzahler_10280.deltaSince(ZonedDateTime.now().with(LocalTime.MIDNIGHT)) as Number)
House_Energy_Day_PV_Output.postUpdate(HEDPVO / 1000)
Ansonsten weiß ich echt nicht weiter woran das liegen kann.

Benutzeravatar
udo1toni
Beiträge: 15249
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Hilfe bei PV Eigenverbrauch berechnen benötigt

Beitrag von udo1toni »

Nein, der Punkt ist, Entweder alle Items sind mit UoM konfiguriert (also hier vermutlich Number:Power) oder keines. Die State Description hat NICHTS mit UoM zu tun, die sorgt nur dafür, dass in der Anzeige hinter dem Status ein fixer Text angehängt wird.

Die Persistence kann je nach Art ebenfalls nicht mit UoM umgehen bzw. liefert nur den reinen Zahlenwert, nicht aber die Einheit mit. Dann geht die Berechnung schief.
Ausweg: Wenn Du weißt, dass alle Zahlen die gleiche Einheit darstellen (und eben nur bei manchen keine Einheit mitgeliefert wird), musst Du die Einheiten entfernen, so:

Code: Alles auswählen

var Number Kostal_YD = (KOSTALPLENTICOREPlus70noBattery_YieldDay.state as Number).floatValue
var Number HEDPVO = (House_Energy_Day_PV_Output.state as Number).floatValue
var Number TGVB = (Kostal_YD - HEDPVO)
Tagesverbrauch.postUpdate(TGVB)
Das .floatValue sorgt dafür, dass die gelieferte Zahl OHNE Einheit übergeben wird. Wahlweise könnte man auch .intValue oder .doubleValue verwenden, das sind alles Methoden der Number Klasse.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

dasSofa
Beiträge: 4
Registriert: 1. Jul 2021 11:30
Answers: 0

Re: Hilfe bei PV Eigenverbrauch berechnen benötigt

Beitrag von dasSofa »

Das mit UoM hab ich ja total missverstanden ... auch aus anderen Foreneinträgen.
Vielen Dank für Ihre tolle Erklärung dazu !

Jetzt stimmt auch der berechnete Wert.

Benutzeravatar
udo1toni
Beiträge: 15249
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Hilfe bei PV Eigenverbrauch berechnen benötigt

Beitrag von udo1toni »

UoM ist ein mächtiges Werkzeug. Z.B. liefert der Messadapter den Wert als 3545 mA ab, openHAB zeigt den Wert aber als 3,545 A an, und zwar ohne Umrechnung. Die Temperatur kommt in °C an, Du liest sie aber in K oder in °F ab. OHNE Umrechnung. Du gibst für das Item nur die gewünschte Einheit an.
Windstärke, lieber in Knoten, Beaufort oder doch Meter pro Sekunde? OHNE Umrechnung.

Das ist die eigentliche Daseinsberechtigung von UoM :) Leider kennt UoM meines Wissens aber keine fortgeschrittenen Regeln, wie z.B. aus Entfernung und Zeit die Durchschnittsgeschwindigkeit zu berechnen, der Wert muss also schon in der entsprechenden Einheit vorliegen, eine Umrechnung ist nur zwischen verschiedenen Maßsystemen möglich, also im Allgemeinen zwischen metrisch und imperial. Aber auch diese "Basic" Funktionen können das Leben komfortabler machen. Gedacht ist das Ganze in meinen Augen vor allem, um ausländische Geräte bequem einbinden zu können :) aber man kann schon auch so Nutzen daraus ziehen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten