Stromkosten berechnen

Allgemeine Fragen rund um die "Smart Home" Hardware/Komponenten

Moderatoren: seppy, udo1toni

SIDE22
Beiträge: 153
Registriert: 4. Mai 2020 01:31
Answers: 0
Wohnort: Hagen a.T.W.

Stromkosten berechnen

Beitrag 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
von udo1toni » 30. Jun 2020 05:03
Also, heute morgen bin ich zwar auch noch müde, aber vielleicht etwas wacher als gestern... ;)

Du hast da das Item Stromzaehler_kW, welches genaugenommen Stromzaehler_kWh heißen müsste, denn ein Stromzähler zählt kWh - schließlich geht es um die erbrachte Arbeit, das ist (salopp) Leistung mal Zeit.
Dieses Item sollte auch über die Persistenz zur Verfügung stehen (strategy everyMinute - evtl. wäre auch zusätzlich everyUpdate sinnvoll)

Du nutzt influxDB, das ist eigentlich schon die bestmögliche Wahl. Hast Du influxDB auch als default Persistence konfiguriert?

Bau bitte mal ein bisschen Logging in Deine Rule ein:

Code: Alles auswählen

rule "Strom Verbrauch Tag"
when
    Item Stromzaehler_kW received update
then
    logInfo("verbrauch","Zählerstand um Mitternacht: {}",Stromzaehler_kW.historicState(now.withTimeAtStartOfDay,"influxdb").state)
    logInfo("verbrauch","Zählerstand aktuell       : {}",Stromzaehler_kW.state)
    if(Stromzaehler_kW.state instanceof Number) {
        logInfo("verbrauch","Differenz (berechnet)     : {}",(Stromzaehler_kW.state as Number)-(Stromzaehler_kW.historicState(now.withTimeAtStartOfDay,"influxdb").state as Number))
        logInfo("verbrauch","Differenz                 : {}",Stromzaehler_kW.deltaSince(now.withTimeAtStartOfDay,"influxdb"))
        Stromzaehler_Verbrauch_Tag.postUpdate(Stromzaehler_kW.deltaSince(now.withTimeAtStartOfDay,"influxdb") as Number)
    }
end
Die explizit gesetzte Datenbank ist natürlich nur notwendig, wenn influxdb nicht ohnehin schon default Persistence ist.
Gehe zur vollständigen Antwort
openHAB 3.1.0M5 als Debian-Container in Proxmox
Bindings (HomeMatic, Shelly, Phillips Hue, HTTP, MQTT, Spotify, Telegram)
rund 90 HomeMatic komponenten dazu 21 Shelly und ca. 126 Phillips Hue Leuchten im einsatz.
MQTT bindung für openWB (WallBox) abfrage, HTTP für DoorPi (IP Türsprechstelle)

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

Re: Stromkosten berechnen

Beitrag 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.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

SIDE22
Beiträge: 153
Registriert: 4. Mai 2020 01:31
Answers: 0
Wohnort: Hagen a.T.W.

Re: Stromkosten berechnen

Beitrag 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
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
openHAB 3.1.0M5 als Debian-Container in Proxmox
Bindings (HomeMatic, Shelly, Phillips Hue, HTTP, MQTT, Spotify, Telegram)
rund 90 HomeMatic komponenten dazu 21 Shelly und ca. 126 Phillips Hue Leuchten im einsatz.
MQTT bindung für openWB (WallBox) abfrage, HTTP für DoorPi (IP Türsprechstelle)

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

Re: Stromkosten berechnen

Beitrag von udo1toni »

Welches ist denn die 14. Zeile in Deinem Rule-File?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

SIDE22
Beiträge: 153
Registriert: 4. Mai 2020 01:31
Answers: 0
Wohnort: Hagen a.T.W.

Re: Stromkosten berechnen

Beitrag 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?
openHAB 3.1.0M5 als Debian-Container in Proxmox
Bindings (HomeMatic, Shelly, Phillips Hue, HTTP, MQTT, Spotify, Telegram)
rund 90 HomeMatic komponenten dazu 21 Shelly und ca. 126 Phillips Hue Leuchten im einsatz.
MQTT bindung für openWB (WallBox) abfrage, HTTP für DoorPi (IP Türsprechstelle)

SIDE22
Beiträge: 153
Registriert: 4. Mai 2020 01:31
Answers: 0
Wohnort: Hagen a.T.W.

Re: Stromkosten berechnen

Beitrag 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
openHAB 3.1.0M5 als Debian-Container in Proxmox
Bindings (HomeMatic, Shelly, Phillips Hue, HTTP, MQTT, Spotify, Telegram)
rund 90 HomeMatic komponenten dazu 21 Shelly und ca. 126 Phillips Hue Leuchten im einsatz.
MQTT bindung für openWB (WallBox) abfrage, HTTP für DoorPi (IP Türsprechstelle)

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

Re: Stromkosten berechnen

Beitrag von udo1toni »

Mindestens fehlen da überall Klammern, wenn Du ein as DecimalType oder as Number verwendest, as hat eine niedrigere Priorität als Rechenoperationen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

SIDE22
Beiträge: 153
Registriert: 4. Mai 2020 01:31
Answers: 0
Wohnort: Hagen a.T.W.

Re: Stromkosten berechnen

Beitrag von SIDE22 »

was müsste ich den anpassen ?

LG
Florian
openHAB 3.1.0M5 als Debian-Container in Proxmox
Bindings (HomeMatic, Shelly, Phillips Hue, HTTP, MQTT, Spotify, Telegram)
rund 90 HomeMatic komponenten dazu 21 Shelly und ca. 126 Phillips Hue Leuchten im einsatz.
MQTT bindung für openWB (WallBox) abfrage, HTTP für DoorPi (IP Türsprechstelle)

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

Re: Stromkosten berechnen

Beitrag von udo1toni »

Na, so wie Du es in der ersten Rule gemacht hast... Statt Item.state as DecimalType halt (Item.state as DecimalType)...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

SIDE22
Beiträge: 153
Registriert: 4. Mai 2020 01:31
Answers: 0
Wohnort: Hagen a.T.W.

Re: Stromkosten berechnen

Beitrag 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
openHAB 3.1.0M5 als Debian-Container in Proxmox
Bindings (HomeMatic, Shelly, Phillips Hue, HTTP, MQTT, Spotify, Telegram)
rund 90 HomeMatic komponenten dazu 21 Shelly und ca. 126 Phillips Hue Leuchten im einsatz.
MQTT bindung für openWB (WallBox) abfrage, HTTP für DoorPi (IP Türsprechstelle)

Antworten