Seite 1 von 2

Stromkosten berechnen

Verfasst: 29. Jun 2020 13:23
von SIDE22
Hallo,
Ich bin aktuell dabei eine rule zu erstellen um meine stromkosten grob zu sehen am Tag
Habe eine openWB die via modbus den zähler ausliest und so habe ich den aktuellen verbrauch in W
Dieser Wert aktuellisiert sich alle paar Sekunden.

Die openWB ist via mqtt in openHAB

Wie kann ich die Regel schreiben das ich Die W in kWh pro Tag habe?

Von W zu kW ist nicht das Thema nur sollte die Regel quasi den gesammt Verbrauch am Tag in kWh rechnen und sich um 0uhr zurücksetzen.

Leider gibt die openWB den gesammt Verbrauch am Tag nicht raus die gekämmte Erzeugung durch pv schon diese Regel hab ich auch soweit fertig

Lg
Florian

Re: Stromkosten berechnen

Verfasst: 29. Jun 2020 18:03
von udo1toni
Das wird nicht zufriedenstellend funktionieren, denn Du müsstest das Integral berechnen, bzw. die Fläche unter dem Watt-Verlauf. Du kannst allenfalls grob näherungsweise bei jedem Wertupdate schauen, wann das letzte Update kam und die Anzahl Sekunden multipliziert mit dem Messwert aufaddieren. Da Du lieber kWh haben möchtest, musst Du das Ergebnis dann noch durch 3.600.000 teilen.

Re: Stromkosten berechnen

Verfasst: 29. Jun 2020 18:23
von SIDE22
Hallo,
ich denke das ich soweit habe. Es soll ja nicht zu 100% richtig sein

hier einmal wie ich es habe

.Items

Code: Alles auswählen

Number  openWB_EVU_Hausverbrauch   "Hausverbrauch [%.0f W]"  (GopenWBEVU,Wattages)  {channel="mqtt:topic:14ecef3d:4"}
Number  Stromzaehler_kW            "Zählerstand [%.2f kW]"
Number  Stromzaehler_Verbrauch_Tag "Verbrauch heute [%.2f kWh]"
Number  Strom_Kosten_Tag           "verbrauch heute [%.2f €]"
Number  Strom_PV_Tag               "PV erzeugung heute [%.2f €]"
Number  Strom_Kaufen               "bezug heute [%.2f €]"
.rules

Code: Alles auswählen

rule "Stromzaehler in Wh"
when
    Item openWB_EVU_Hausverbrauch received update
then
    if(openWB_EVU_Hausverbrauch.state instanceof Number)
        Stromzaehler_kW.postUpdate((openWB_EVU_Hausverbrauch.state as Number)/1000)
end


rule "Strom Verbrauch Tag"
when
    Item Stromzaehler_kW received update
then
    Stromzaehler_Verbrauch_Tag.postUpdate(Stromzaehler_kW.deltaSince(now.withTimeAtStartOfDay))
end




rule "Stromkosten heute"
when 
    Item Stromzaehler_kW received update
then
    Strom_Kosten_Tag.postUpdate(Stromzaehler_Verbrauch_Tag.state as DecimalType * 0.3)
end


rule "Strom PV"
when 
    Item openWB_EVU_PV_Daily received update
then
    Strom_PV_Tag.postUpdate(openWB_EVU_PV_Daily.state as DecimalType * 0.1)
end


rule "Strom kaufen"
when
    Item Strom_Kosten_Tag received update or
    Item Strom_PV_Tag received update
then
    Strom_Kaufen.postUpdate(Strom_Kosten_Tag.state as DecimalType - Strom_PV_Tag.state as DecimalType)
end
.persist

Code: Alles auswählen

Stromzaehler_kW             : strategy = everyMinute, restoreOnStartup
openWB_EVU_Hausverbrauch    : strategy = everyMinute, restoreOnStartup
openWB_EVU_PV_Erzeugung     : strategy = everyMinute, restoreOnStartup
openWB_EVU_PV_Daily         : strategy = everyMinute, restoreOnStartup
also ich denke das dies soweit erstmal geht die daten die wieder gegeben werden sind zumindest einigermaßen richtig
zumindest was die kosten angeht
aktuell sagt er mir das der bezug 3,41€ sind dies kommt etwas hin wenn man es auf 1 monat hochrechnet

allerdings bekomme ich in Visual Studio Code eine fehler meldung bezüglich der rule
Unbenannt.PNG
vielleicht weist du da weiter

Lg
Florian

Re: Stromkosten berechnen

Verfasst: 29. Jun 2020 20:16
von udo1toni
Welches ist denn die 14. Zeile in Deinem Rule-File?

Re: Stromkosten berechnen

Verfasst: 29. Jun 2020 20:18
von SIDE22

Code: Alles auswählen

Stromzaehler_Verbrauch_Tag.postUpdate(Stromzaehler_kW.deltaSince(now.withTimeAtStartOfDay))
Das wäre Zeile 14

Hab aber auch grade bemerkt nach einem restart von olenhab können die Werte nicht mehr geladen werden..

Weißt du da eventuell weiter?

Re: Stromkosten berechnen

Verfasst: 29. Jun 2020 21:23
von SIDE22
ok den fehler in zeile 14 hab ich weg bekommen die zeile müsste sein

Code: Alles auswählen

Stromzaehler_Verbrauch_Tag.postUpdate(Stromzaehler_kW.deltaSince(now.withTimeAtStartOfDay) as Number)
das

Code: Alles auswählen

as Number
fehler hinten

dennoch werden mir keine daten mehr angezeigt nach dem neustart von openhab

hier solche fehler habe ich im log

Code: Alles auswählen

2020-06-29 21:23:05.974 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'Stromkosten heute': Could not cast NULL to org.eclipse.smarthome.core.library.types.DecimalType; line 35, column 33, length 47

Re: Stromkosten berechnen

Verfasst: 29. Jun 2020 21:28
von udo1toni
Mindestens fehlen da überall Klammern, wenn Du ein as DecimalType oder as Number verwendest, as hat eine niedrigere Priorität als Rechenoperationen.

Re: Stromkosten berechnen

Verfasst: 29. Jun 2020 21:33
von SIDE22
was müsste ich den anpassen ?

LG
Florian

Re: Stromkosten berechnen

Verfasst: 29. Jun 2020 21:45
von udo1toni
Na, so wie Du es in der ersten Rule gemacht hast... Statt Item.state as DecimalType halt (Item.state as DecimalType)...

Re: Stromkosten berechnen

Verfasst: 29. Jun 2020 21:56
von SIDE22
so habe dies mal angepasst allerdings bekomme ich kein wert sondern einfach nur "NULL"

Code: Alles auswählen

rule "Strom Verbrauch Tag"
when
    Item Stromzaehler_kW received update
then
    if(Stromzaehler_kW.state instanceof Number)
        Stromzaehler_Verbrauch_Tag.postUpdate(Stromzaehler_kW.deltaSince(now.withTimeAtStartOfDay) as Number)
end