Betriebsstundenzähler

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

littleswabi
Beiträge: 8
Registriert: 2. Dez 2019 12:09
Answers: 0

Re: Betriebsstundenzähler

Beitrag von littleswabi »

die beiden Geräte haben einen sehr konstanten Verbrauch. Die eine Pumpe liegt immer so um die 80W und die andere bei 500W. Nur im Standby liegt der Verbrauch bei 1 - 2 Watt.

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

Re: Betriebsstundenzähler

Beitrag von udo1toni »

Ja, dann ist das natürlich kein Thema :) Aber wie gesagt, ich würde trotzdem eine gewisse Hysterese einbauen.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

mcdandrew
Beiträge: 175
Registriert: 13. Dez 2018 17:42
Answers: 0

Re: Betriebsstundenzähler

Beitrag von mcdandrew »

Der von Udo gepostete Quellcode funktioniert soweit.
Sobald ich allerdings einen zweiten Betriebsstundenzähler konfiguriere funktioniert allerdings nichts mehr

In einem Beitrag hast du geschrieben...
Sollte man mehrere Zähler benötigen, so müssen auch mehrere Variablen für den Startzeitpunkt definiert werden. Dann sollte man das Konzept überdenken. :)
Eine zweite globale Variable habe ich konfiguriert...das Konzept ansonsten aber nicht verändert.
Wo könnte das Problem liegen?

mcdandrew
Beiträge: 175
Registriert: 13. Dez 2018 17:42
Answers: 0

Re: Betriebsstundenzähler

Beitrag von mcdandrew »

Mir ist nun aufgefallen, dass selbst das parsen der Rule extrem lange dauert, d.h. bis "Refreshing betriebsstunden.rules" im LogViewer angezeigt wird.

Ich habe die Regel dann stück für Stück auskommentiert....das Problem tritt bei der folgenden Zeile auf.

Code: Alles auswählen

iSum = iSum + ((now.millis - dtStart_Klima + 500) / 1000).intValue

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

Re: Betriebsstundenzähler

Beitrag von udo1toni »

Dukönntest probieren, ob es mit int statt Integer als Variablentyp schneller geht (oder alternativ mit Number statt Integer). Eigentlich ist die Rechnung eher trivial...
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

mcdandrew
Beiträge: 175
Registriert: 13. Dez 2018 17:42
Answers: 0

Re: Betriebsstundenzähler

Beitrag von mcdandrew »

Mit der Definition der Variable "iSum" als Number funktioniert es nun problemlos.
var Number iSum = 0
Der erste Test mit 5 verschiedenen Betriebsstundenzählern funktionierte!
Wie immer herzlichen Dank für Deine Unterstützung!

tanzehn
Beiträge: 21
Registriert: 15. Dez 2020 10:03
Answers: 0

Re: Betriebsstundenzähler

Beitrag von tanzehn »

Hallo, das ist genau das was ich gesucht habe danke dafür. Meine Frage ist jetzt in OH3 muss man ja für die Zeit andere Befehle nehmen stimmt es das man für now.millis jetzt durch now.toInstant().toEpochMilli() ersetzen muss.

Code: Alles auswählen

// 
globale Variablen zu Beginn der Datei definieren!

var long dtStart = now.toInstant().toEpochMilli()
var Number iSum = 0

rule "Betriebsdauer"

when

    Item WaschmaschienPower changed                                                     			
then
    if (newState == ON){                                                                				
        dtStart = now.toInstant().toEpochMilli()                                        			
    } else if (newState == OFF) {                                                      				
        var Integer iSum = 0                                                            				
        if (WaschBetriebstundenzaehler.state instanceof Number)                         		
            iSum = WaschBetriebstundenzaehler.state as Number                                
        else                                                                            					
            logInfo("oc.myswitch", "Betriebsdauer für MySwitch wird initialisiert!")    	

        iSum = iSum + ((now.toInstant().toEpochMilli() - dtStart + 500) / 1000).intValue  
        WaschBetriebstundenzaehler.postUpdate(iSum)                                       		
    	}
end
Wäre das so richtig?
Ich bekomme nämlich keinen Wert in "WaschBetriebstundenzaehler" angezeigt.
Ich habe auch diese Zeile wie im beschrieben mal so

Code: Alles auswählen

iSum = WaschBetriebstundenzaehler.state as Number
und mal so

Code: Alles auswählen

iSum = (WaschBetriebstundenzaehler.state as Number).intValue
probiert

Danke im voraus

Antworten