Tagesverbrauch von Gas

Für welche Projekte verwendet Ihr OpenHAB? Was habt Ihr automatisiert? Stellt eure Projekte hier vor.

Moderatoren: Cyrelian, seppy

Benutzeravatar
TuxTux
Beiträge: 65
Registriert: 6. Nov 2019 23:47
Wohnort: Achim

Tagesverbrauch von Gas

Beitrag von TuxTux »

So, erstes Feedback.

Persistence läuft, plotte jetzt seit gestern Gas Gesamt, Gas TWW und Gas Heizung. Daten kommen über ein BSB_LAN von meiner Therme und werden wie folgt abgelegt.

Code: Alles auswählen

Strategies {
        everyHour : "0 0 * * * ?"
        everyDay  : "0 0 0 * * ?"
        default = everyChange
}


Items {
        Heizung_Gasenergie, Heizung_Gasenergie_TWW, Heizung_Gasenergie_Heizen : strategy = everyChange, restoreOnStartup 
}
Nach einem Tag habe ich mir jetzt deine Rule angeschaut und wie folgt angepasst.

Code: Alles auswählen

rule "Gasverbrauch"

when
    Item Dummy_4 changed from OFF to ON

then
logInfo("Gasverbrauch","-----------------------------------------------------------") 
val GasverbrauchGesamtTag = Heizung_Gasenergie.deltaSince(ZonedDateTime.now().with(LocalTime.MIDNIGHT)) as Number   // Heute aus Gesamtverbrauch
val GasverbrauchVortagGesamtHeute = Heizung_Gasenergie.deltaSince(ZonedDateTime.now.minusDays(1).with(LocalTime.MIDNIGHT)) as Number  // seit Gestern aus Gesamtverbrauch
val GasverbrauchGesamtVortag = Heizung_Gasenergie.deltaBetween(now.minusDays(1).with(LocalTime.MIN),now.minusDays(1).with(LocalTime.MAX))

val GasverbrauchTWWTag = Heizung_Gasenergie_TWW.deltaSince(ZonedDateTime.now().with(LocalTime.MIDNIGHT)) as Number   // Heute aus Gesamtverbrauch
val GasverbrauchVortagTWWHeute = Heizung_Gasenergie_TWW.deltaSince(ZonedDateTime.now.minusDays(1).with(LocalTime.MIDNIGHT)) as Number  // seit Gestern aus Gesamtverbrauch
val GasverbrauchTWWVortag = Heizung_Gasenergie_TWW.deltaBetween(now.minusDays(1).with(LocalTime.MIN),now.minusDays(1).with(LocalTime.MAX))

val GasverbrauchHeizungTag = Heizung_Gasenergie_Heizen.deltaSince(ZonedDateTime.now().with(LocalTime.MIDNIGHT)) as Number   // Heute aus Gesamtverbrauch
val GasverbrauchVortagHeizungHeute = Heizung_Gasenergie_Heizen.deltaSince(ZonedDateTime.now.minusDays(1).with(LocalTime.MIDNIGHT)) as Number  // seit Gestern aus Gesamtverbrauch
val GasverbrauchHeizungVortag = Heizung_Gasenergie_Heizen.deltaBetween(now.minusDays(1).with(LocalTime.MIN),now.minusDays(1).with(LocalTime.MAX))

logInfo("another","GasverbrauchGesamtTag: {} - Vortag bis heute {} - Gestern {} ", GasverbrauchGesamtTag, GasverbrauchVortagGesamtHeute, GasverbrauchGesamtVortag )
logInfo("another","GasverbrauchTWWTag: {} - Vortag bis heute {} - Gestern {} ", GasverbrauchTWWTag, GasverbrauchVortagTWWHeute, GasverbrauchTWWVortag )
logInfo("another","GasverbrauchHeizungTag: {} - Vortag bis heute {} - Gestern {} ", GasverbrauchHeizungTag, GasverbrauchVortagHeizungHeute, GasverbrauchHeizungVortag )

end
Habe mir jetzt überlegt die Rule immer um 23:59 zu zünden um dann den Tageswert abzuspeichern. Den kann ich dann wie den gesamten verbrauch individuell auswerten und den Verbrauch berechnen.

Vielen Dank erst mal @peter-pan!

Melde mich die Tage wenn es komplett läuft.

Ein schönes hatte das ganze, habe einen Fehler in meiner config bezüglich der Temperaturregelung gefunden und beseitigt :D

In diesem Sinne allen noch einen schönen Abend und einen guten Start in die Woche!


Gruß

TuxTux
Proxmoxx 6.xx @ HP T610 8GB Ram 128GB SSD
HOST 1: LXC Ubuntu 18.04 --> Fhem 6.xx SIGNALDUINO / MQTT / ZIGBEE / HOMEBRIDGE
HOST 2: LXC Ubuntu 18.04 --> OH 2.xx BSB BUS /KNX / WEATHER / NTP / ASTRO / MQTT / TIMESCHEDULING BLINDS
HOST 3: LXC Ubuntu 20.4 --> TVHEADEND Server Running Zattoo
HOST 4: LXC Ubuntu 20.04 --> OH 3.xx actual playground

"No message, is a good message"

Benutzeravatar
TuxTux
Beiträge: 65
Registriert: 6. Nov 2019 23:47
Wohnort: Achim

Re: Tagesverbrauch von Gas

Beitrag von TuxTux »

So, scheint zu laufen, um 23:59 sollen jetzt alle Werte gespeichert werden.

Jetzt kommt noch eine Rule hinzu um die Kosten zu berechnen und dann müsste man sehen wie hoch die Kosten für die Heizung, das Warmwasser und die Gesamtkosten sind.

Poste das ganze dann morgen wenn es klappt zum nachbauen.

Gute Nacht.


Gesendet von iPhone mit Tapatalk
Proxmoxx 6.xx @ HP T610 8GB Ram 128GB SSD
HOST 1: LXC Ubuntu 18.04 --> Fhem 6.xx SIGNALDUINO / MQTT / ZIGBEE / HOMEBRIDGE
HOST 2: LXC Ubuntu 18.04 --> OH 2.xx BSB BUS /KNX / WEATHER / NTP / ASTRO / MQTT / TIMESCHEDULING BLINDS
HOST 3: LXC Ubuntu 20.4 --> TVHEADEND Server Running Zattoo
HOST 4: LXC Ubuntu 20.04 --> OH 3.xx actual playground

"No message, is a good message"

EmptySoft
Beiträge: 188
Registriert: 7. Jan 2020 14:45
Answers: 2
Kontaktdaten:

Re: Tagesverbrauch von Gas

Beitrag von EmptySoft »

oh73 hat geschrieben: 30. Aug 2022 20:35 da ich mit persistence nicht so vertraut bin, und ich meine Daten gerne irgendwo habe, wo ich sie auch mal kontrollieren kann, schiebe ich den Zählerstand jeden Abend um 23:55 mit Hilfe von einem Php Script in eine Sqlite Datenbank.
Du könntest die Werte auch gleich auf einen SqlServer persistieren, dann kannst Du dort auch selber zugreifen und die Daten verarbeiten (ich habe meine Daten auch gerne unter meiner Kontrolle :D )
BYe
Harald

Benutzeravatar
TuxTux
Beiträge: 65
Registriert: 6. Nov 2019 23:47
Wohnort: Achim

Re: Tagesverbrauch von Gas

Beitrag von TuxTux »

Mahlzeit,

ich glaube ich habe es geschafft.

Hier die Eckdaten, ich habe ein Brötje BMR20/24 Wärmezentrum mit einem BSB Lan Adapter ausgestattet und eingebunden.
(Ansicht ist auf die Gasenergie beschränkt)

Code: Alles auswählen

Bridge bsblan:bridge:heating [host="10.0.0.40", refreshInterval=30] {
    Thing parameter p8378 [id=8378] 
    Thing parameter p8379 [id=8379] 
    Thing parameter p8380 [id=8380]
}
Und hier die Items
(Ansicht ist auf die Gasenergie beschränkt)

Code: Alles auswählen

Number    Heizung_Gasenergie_Heizen            "Gesamt Gasenergie Heizen [%.1f kW]"                              (gWaermezentrum)    ["Measurement"]    {channel="bsblan:parameter:heating:p8378:number-value"}
Number    Heizung_Gasenergie_TWW               "Gesamt Gasenergie TWW [%.1f kW]"                                 (gWaermezentrum)    ["Measurement"]    {channel="bsblan:parameter:heating:p8379:number-value"}
Number    Heizung_Gasenergie                   "Gesamt Gasenergie [%.1f kW]"                                     (gWaermezentrum)    ["Measurement"]    {channel="bsblan:parameter:heating:p8380:number-value"}
Jetzt habe ich mir für die Tageswerte eigne Items erstellt
(Gruppe, etc fürs Semantic Model fehlen noch)

Code: Alles auswählen

Number    Tagesverbrauch_Gas_Gesamt             "Tagesverbrauch Gas Gesamt"
Number    Tagesverbrauch_Gas_TWW                "Tagesverbrauch Gas TWW"
Number    Tagesverbrauch_Gas_Heizung            "Tagesverbrauch Gas Heizen"
Jetzt habe ich eine persist file erstellt und speichere die Daten bei jeder Änderung ab.

Code: Alles auswählen

Strategies {
        everyHour : "0 0 * * * ?"
        everyDay  : "0 0 0 * * ?"
        default = everyChange
}


Items {
        Heizung_Gasenergie, Heizung_Gasenergie_TWW, Heizung_Gasenergie_Heizen : strategy = everyChange, restoreOnStartup 
        Tagesverbrauch_Gas_Gesamt, Tagesverbrauch_Gas_TWW, Tagesverbrauch_Gas_Heizung : strategy = everyChange, restoreOnStartup
}
Durch eine Rule, Danke an @peter-pan wird nun ein wenig gerechnet. Ich update die Tageswerte bei jedem Update des Gesamtverbrauchs und speichere sie nochmal final um 23:59h und 59 Sekunden ab. Final wird dann nach jedem trigger der Rule der aktuelle Wert, der letzte Tag bis heute und der Verbrauch des Vortags im Log ausgegeben. Hier werde ich nochmal tätig und dünne das ganze ein wenig aus.
Hier die Rule

Code: Alles auswählen

rule "Gasverbrauch"

when

    Time cron "59 59 23 ? * * *" or
    Item Heizung_Gasenergie changed

then
logInfo("Gasverbrauch","-----------------------------------------------------------") 

val GasverbrauchGesamtTag = Heizung_Gasenergie.deltaSince(ZonedDateTime.now().with(LocalTime.MIDNIGHT)) as Number   // Tagesverbrauch bis jetzt
val GasverbrauchVortagGesamtHeute = Heizung_Gasenergie.deltaSince(ZonedDateTime.now.minusDays(1).with(LocalTime.MIDNIGHT)) as Number  // seit Gestern bis jetzt
val GasverbrauchGesamtVortag = Heizung_Gasenergie.deltaBetween(now.minusDays(1).with(LocalTime.MIN),now.minusDays(1).with(LocalTime.MAX)) // gestern

Tagesverbrauch_Gas_Gesamt.postUpdate(GasverbrauchGesamtTag)

val GasverbrauchTWWTag = Heizung_Gasenergie_TWW.deltaSince(ZonedDateTime.now().with(LocalTime.MIDNIGHT)) as Number
val GasverbrauchVortagTWWHeute = Heizung_Gasenergie_TWW.deltaSince(ZonedDateTime.now.minusDays(1).with(LocalTime.MIDNIGHT)) as Number
val GasverbrauchTWWVortag = Heizung_Gasenergie_TWW.deltaBetween(now.minusDays(1).with(LocalTime.MIN),now.minusDays(1).with(LocalTime.MAX))

Tagesverbrauch_Gas_TWW.postUpdate(GasverbrauchTWWTag)


val GasverbrauchHeizungTag = Heizung_Gasenergie_Heizen.deltaSince(ZonedDateTime.now().with(LocalTime.MIDNIGHT)) as Number
val GasverbrauchVortagHeizungHeute = Heizung_Gasenergie_Heizen.deltaSince(ZonedDateTime.now.minusDays(1).with(LocalTime.MIDNIGHT)) as Number
val GasverbrauchHeizungVortag = Heizung_Gasenergie_Heizen.deltaBetween(now.minusDays(1).with(LocalTime.MIN),now.minusDays(1).with(LocalTime.MAX))

Tagesverbrauch_Gas_Heizung.postUpdate(GasverbrauchHeizungTag)

logInfo("another","GasverbrauchGesamtTag: {} - Vortag bis heute {} - Gestern {} ", GasverbrauchGesamtTag, GasverbrauchVortagGesamtHeute, GasverbrauchGesamtVortag )
logInfo("another","GasverbrauchTWWTag: {} - Vortag bis heute {} - Gestern {} ", GasverbrauchTWWTag, GasverbrauchVortagTWWHeute, GasverbrauchTWWVortag )
logInfo("another","GasverbrauchHeizungTag: {} - Vortag bis heute {} - Gestern {} ", GasverbrauchHeizungTag, GasverbrauchVortagHeizungHeute, GasverbrauchHeizungVortag )

end
Das Resultat sieht man jetzt im Chart was ich angehangen habe.
Gas_Chart.png
Gesamt und Wasser decken sich zur Zeit, da ja die Heizung ja noch abgeschaltet ist. (Der einzelne Blaue ist vom Test am Abend)
Warum auch immer gibt es zwischen 0Uhr und den Morgenstunden 1kwh Gasverbrauch. Zu dieser Zeit ist aber keine Freigabe erteilt und ich denke es handelt sich um Rundungsfehler aus dem Binding oder der gleichen. Werde dies aber beobachten und berichten.
Der nächste schritt ist jetzt den Preis pro kwh zu nutzen um die Tageskosten zu ermitteln und anzuzeigen.

Mal schauen ob ich dafür heute Abend noch Lust habe, da ich gerade von OH2.5 komplett auf OH3 umziehe.

Wenn jemand eine Verbesserung bei der Berechnung oder dem speichern hat, gerne her damit.

Vielen Dank an alle und bis später :-)


Mit freundlichen Grüßen
Tux Tux
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Proxmoxx 6.xx @ HP T610 8GB Ram 128GB SSD
HOST 1: LXC Ubuntu 18.04 --> Fhem 6.xx SIGNALDUINO / MQTT / ZIGBEE / HOMEBRIDGE
HOST 2: LXC Ubuntu 18.04 --> OH 2.xx BSB BUS /KNX / WEATHER / NTP / ASTRO / MQTT / TIMESCHEDULING BLINDS
HOST 3: LXC Ubuntu 20.4 --> TVHEADEND Server Running Zattoo
HOST 4: LXC Ubuntu 20.04 --> OH 3.xx actual playground

"No message, is a good message"

Antworten