(solved) Laufzeiten Kompressor und Heizkartusche einer Wärmepumpe erfassen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Re: (solved) Laufzeiten Kompressor und Heizkartusche einer Wärmepumpe erfassen

Beitrag von udo1toni »

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

mike69
Beiträge: 64
Registriert: 17. Nov 2020 22:38
Answers: 0

Re: (solved) Laufzeiten Kompressor und Heizkartusche einer Wärmepumpe erfassen

Beitrag von mike69 »

udo1toni hat geschrieben: 1. Nov 2024 23:13 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.
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

mike69
Beiträge: 64
Registriert: 17. Nov 2020 22:38
Answers: 0

Re: (solved) Laufzeiten Kompressor und Heizkartusche einer Wärmepumpe erfassen

Beitrag von mike69 »

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:

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

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

Re: (solved) Laufzeiten Kompressor und Heizkartusche einer Wärmepumpe erfassen

Beitrag von udo1toni »

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

mike69
Beiträge: 64
Registriert: 17. Nov 2020 22:38
Answers: 0

Re: (solved) Laufzeiten Kompressor und Heizkartusche einer Wärmepumpe erfassen

Beitrag von mike69 »

udo1toni hat geschrieben: 3. Nov 2024 01:28 Und alle betroffenen Items werden identisch persistiert? Die dürften sich eigentlich nicht unterschiedlich verhalten...
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

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

Re: (solved) Laufzeiten Kompressor und Heizkartusche einer Wärmepumpe erfassen

Beitrag von udo1toni »

mike69 hat geschrieben: 3. Nov 2024 11:40 s 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.
Ja, Du brauchst allerdings keine *.persist Dateien, um die Persistence zu nutzen :) das geht seit OH4 auch direkt in der UI, aktuell über

Code: Alles auswählen

Administration -> Einstellungen -> Configuration (linke Spalte) -> Persistence ->  Configure Persistence Policies -> ...
Und damit nicht genug, je nach Versionsstand kann es durchaus sein, dass sich die Persistence extrem unterschiedlich verhält (in OH3 hat ein nicht konfigurierter Persistence Service automatisch alle Items mit everyChange persistiert, bei rrd4j zusätzlich noch mit everyMinute. Das sollte unter 4.2 nicht mehr so sein, aber wer weiß...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten