Na, das Ding ist ja, wenn in der Datenbank kein Startpunkt persistiert wird, kann openHAB diesen auch nicht auslesen. Er nimmt dann halt den vorherigen Startpunkt...
Sch.. ade.
Die einzige Möglichkeit, die ich hier (ohne Eingriff durch einen Entwickler) sehe, ist, zu verhindern, dass die Messwertänderungen im Sekundentakt rein kommen. Im Zweifel ist das unerheblich, Im statistischen Mittel werden Schaltvorgänge etwa über die Hälfte der Zykluszeit zu spät stattfinden, und zwar in beiden Schaltrichtungen, also wenn statt unmittelbar bei Wertänderung ausgewertet wird, stattdessen alle fünf Sekunden, dann wird im Schnitt 2,5 Sekunden zu spät geschaltet. Da beide Schaltrichtungen betroffen sein werden, gleichen sich diese Fehlzeiten gegenseitig aus. Wichtig ist aber, es geht darum, dass die Persistence die Daten nicht korrekt erfasst. Wichtig ist also, zu verhindern, dass die Items NibeState_N zu kurz hintereinander ein- und wieder ausgeschaltet werden,
(solved) Laufzeiten Kompressor und Heizkartusche einer Wärmepumpe erfassen
- udo1toni
- Beiträge: 15242
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: (solved) Laufzeiten Kompressor und Heizkartusche einer Wärmepumpe erfassen
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 64
- Registriert: 17. Nov 2020 22:38
Re: (solved) Laufzeiten Kompressor und Heizkartusche einer Wärmepumpe erfassen
Genau.
Lasse das jetzt alle 2 Sekunden laufen, reicht mir.
Viel mehr Sorgen bereitet mir die hohe Last beim Anfahren des Kompressors, das kommt ziemlich unregelmässig und > 4kW ist schon ne Hausnummer. Oder ist normal und wird einfach nur unregelmässig erfasst, das kann auch sein.
openHAB 4.2.0 auf Debian 12 als VM unter Proxmox
-
- Beiträge: 64
- Registriert: 17. Nov 2020 22:38
Re: (solved) Laufzeiten Kompressor und Heizkartusche einer Wärmepumpe erfassen
So, weiter gehts.
Weiss nicht, ob das so richtig ist.
Beim zuschalten der Heizpatrone wird der State auf "1" gesetzt, soweit richtig. Wird die Datenbank aktualisiert, zählt der State"1" weiter, sein Zeitpunkt ist nicht fix.
Ist die Patrone aus, wird kein neuer Eintrag in die DB vorgenommen, es switcht auf "0" und der Zeitpunkt des ausschaltens blebt, zählt nicht hoch.
Dementsprechend sind nur "0" in der DB.
Aber nur die Heizstufen, bei Kompressorbetrieb switcht es artig zwischen "0" und "1". Why...
Hoffendlich ist das verständlich.
Hier nochmal die aktuelle ganze Rule:
Weiss nicht, ob das so richtig ist.
Beim zuschalten der Heizpatrone wird der State auf "1" gesetzt, soweit richtig. Wird die Datenbank aktualisiert, zählt der State"1" weiter, sein Zeitpunkt ist nicht fix.
Ist die Patrone aus, wird kein neuer Eintrag in die DB vorgenommen, es switcht auf "0" und der Zeitpunkt des ausschaltens blebt, zählt nicht hoch.
Dementsprechend sind nur "0" in der DB.
Aber nur die Heizstufen, bei Kompressorbetrieb switcht es artig zwischen "0" und "1". Why...

Hoffendlich ist das verständlich.

Hier nochmal die aktuelle ganze Rule:
Code: Alles auswählen
rule "WP aktiv"
when
Time cron "0/2 * * ? * * "
// Item NibePower changed
then
var power = (NibePower.state as Number).floatValue //Energieverbrauch WP
// var power = (newState as Number).floatValue // Energieverbrauch WP
var OnOffType counter1 = OFF // Default Counter aus
var OnOffType counter2 = OFF // Default Counter aus
var OnOffType counter3 = OFF // Default Counter aus
if(power > 3000) { // über 3 kW -> Heizpatrone 1 muss an sein
counter2 = ON
power = power - 3000 // Leistung von Heizpatrone abziehen
}
if(power > 3000) { // über 3 kW -> Heizpatrone 2 muss an sein
counter3 = ON
power = power - 3000 // Leistung von Heizpatrone abziehen
}
if(power > 200) { // über 200 W -> Kompressor muss an sein
counter1 = ON
}
if(NibeState_1.state != counter1)
NibeState_1.postUpdate(counter1.toString)
if(NibeState_2.state != counter2)
NibeState_2.postUpdate(counter2.toString)
if(NibeState_3.state != counter3)
NibeState_3.postUpdate(counter3.toString)
end
rule "Laufzeit bestimmen"
when
Member of gNibeState changed to OFF
then
val strItem = triggeringItem.name.split("_").get(1)
val nCount = gNibeCount.members.filter[i|i.name.endsWith(strItem)].head
val nStart = triggeringItem.previousState(true,"influxdb").timestamp.toEpochSecond
var strDev = ""
switch(strItem) {
case "1" : strDev = "Kompressor"
case "2" : strDev = "Heizstufe 1"
case "3" : strDev = "Heizstufe 2"
}
var iCounter = 0
if(nCount.state instanceof Number)
iCounter = (nCount.state as Number).intValue
iCounter += (now.toEpochSecond - nStart).intValue
logInfo("nibeWp", "Laufzeit {} total {} Sekunden", strDev, iCounter)
nCount.postUpdate(iCounter)
end
openHAB 4.2.0 auf Debian 12 als VM unter Proxmox
- udo1toni
- Beiträge: 15242
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: (solved) Laufzeiten Kompressor und Heizkartusche einer Wärmepumpe erfassen
Und alle betroffenen Items werden identisch persistiert? Die dürften sich eigentlich nicht unterschiedlich verhalten...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 64
- Registriert: 17. Nov 2020 22:38
Re: (solved) Laufzeiten Kompressor und Heizkartusche einer Wärmepumpe erfassen
Eigentlich nicht.
Habe gestern alle resettet, wie heute auch, und irgendwie werden die States von NibeState_2 wieder hergestellt. _1 und_3 fangen bei nach dem Start von openHAB artig mit "0" an, die NibeState_2 hat sich Einträge seit 1. November wieder geholt.
Es sind rrd4j, db4o und mapdb zwar installiert, aber nicht konfiguriert und es sind keine DB in /var/lib/openhab/persistence/ vorhanden. Es gibt nur die influxdb.persist.
Auch ein Neustart mit vorher beendeten openHAB und influxdb generiert unter NibeState_2 Einträge ab 01. November. Daher passen logischerweise die Laufzeiten der Stufe 1 nicht.
Witzigerweise stellt Grafana das richtig da. Es werden nur die paar Minuten der erzwungenen Starts der Heizpatrone von den letzten Tagen angezeigt.
Vom rule her passt alles, es macht was es soll. Aber irgendwo ist noch der Bock drinne.
openHAB 4.2.0 auf Debian 12 als VM unter Proxmox
- udo1toni
- Beiträge: 15242
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: (solved) Laufzeiten Kompressor und Heizkartusche einer Wärmepumpe erfassen
Ja, Du brauchst allerdings keine *.persist Dateien, um die Persistence zu nutzen

Code: Alles auswählen
Administration -> Einstellungen -> Configuration (linke Spalte) -> Persistence -> Configure Persistence Policies -> ...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet