Wie setze ich Variable zurück?

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Mario_a_b
Beiträge: 3
Registriert: 23. Nov 2019 10:15
Answers: 0

Wie setze ich Variable zurück?

Beitrag von Mario_a_b »

Wie kann ich meinen gesammelten Wert (Bsp. 48 Minuten) in OH 3.4 manuell nach einer mir beliebigen Zeit zurücksetzen?
Also so das ich nach X Tage sagen kann "OK spannend aber jetzt bitte von vorne"

Code: Alles auswählen

var Long StartTime = null
var Number Summe = 0

rule "Testzeit rechnen"
when
    Item dTestzeit_Laufzeit changed
then
    
    if (dReset.state == ON)  {
        Summe.sendCommand(0)
    }
    var Integer iTagSec = 0
    if(dTestzeit_Laufzeit_Sek.state instanceof Number) {
        iTagSec = (dTestzeit_Laufzeit_Sek.state as Number).intValue
    
    if(newState == ON)
        StartTime = now.toInstant().toEpochMilli()
        Summe = Summe + ((now.toInstant().toEpochMilli() - StartTime + 500) / 1000).intValue
        dTestzeit_Laufzeit_Sek.postUpdate(Summe / 60)
    }
    
end
von int5749 » 8. Jan 2023 20:32
Da Du ja einen beliebigen Zeitpunkt haben möchtest, spricht für mich alles nach einem Item als Switch

Item

Code: Alles auswählen

Switch ResetSumme
Und dann als Rule

Code: Alles auswählen

rule "Reset Summe"
when
    Item ResetSumme changed to ON
then
    Summe = 0
    dTestzeit_Laufzeit_Sek.postUpdate(Summe)
Da die Variable Summe global definiert ist, kann diese auch in anderen Rules angesprochen/verändert werden.

Natürlich kannst Du anstatt eines Schalter auch eine feste Uhrzeit definieren (1x die Woche) oder einen Wert von Summe festlegen, sobald diese überschritten wurde. Da liegt es an Deiner Anforderung ;-)

VG
Gehe zur vollständigen Antwort

int5749
Beiträge: 1173
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Wie setze ich Variable zurück?

Beitrag von int5749 »

Da Du ja einen beliebigen Zeitpunkt haben möchtest, spricht für mich alles nach einem Item als Switch

Item

Code: Alles auswählen

Switch ResetSumme
Und dann als Rule

Code: Alles auswählen

rule "Reset Summe"
when
    Item ResetSumme changed to ON
then
    Summe = 0
    dTestzeit_Laufzeit_Sek.postUpdate(Summe)
Da die Variable Summe global definiert ist, kann diese auch in anderen Rules angesprochen/verändert werden.

Natürlich kannst Du anstatt eines Schalter auch eine feste Uhrzeit definieren (1x die Woche) oder einen Wert von Summe festlegen, sobald diese überschritten wurde. Da liegt es an Deiner Anforderung ;-)

VG
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

Mario_a_b
Beiträge: 3
Registriert: 23. Nov 2019 10:15
Answers: 0

Re: Wie setze ich Variable zurück?

Beitrag von Mario_a_b »

Summe = 0
dTestzeit_Laufzeit_Sek.postUpdate(Summe)

Auf das einfachste bin ich natürlich nicht gekommen, vielen Dank das ist genau das was ich versuchte.
Das "wann und/oder wie, das hab ich im griff

danke nochmal

mfg Mario

Antworten