Seite 3 von 3

Re: Könnte mal wieder Hilfe gebrauchen

Verfasst: 3. Dez 2021 22:56
von Snatsch

Code: Alles auswählen

2021-12-03 22:49:44.770 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'AussentuerePartyraum_TurFensterstatus' changed from CLOSED to OPEN
2021-12-03 22:49:53.244 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'AussentuerePartyraum_TurFensterstatus' changed from OPEN to CLOSED
2021-12-03 22:49:53.261 [INFO ] [openhab.event.ItemCommandEvent      ] - Item 'HeizungPartyraum_Solltemperatur_Fensterkontakt' received command 21.0
2021-12-03 22:49:53.272 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'HeizungPartyraum_Solltemperatur_Fensterkontakt' predicted to become 21.0
nach einer Minute

Code: Alles auswählen

2021-12-03 22:50:53.256 [INFO ] [openhab.event.ItemCommandEvent      ] - Item 'HeizungPartyraum_Solltemperatur_Fensterkontakt' received command 6
2021-12-03 22:50:53.259 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'HeizungPartyraum_Solltemperatur_Fensterkontakt' predicted to become 6
2021-12-03 22:50:53.271 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'HeizungPartyraum_Solltemperatur_Fensterkontakt' changed from 21.0 to 6

Re: Könnte mal wieder Hilfe gebrauchen

Verfasst: 4. Dez 2021 06:54
von udo1toni
Du hast da Klammern vergessen...

Code: Alles auswählen

var Number   HeizungPartyraum_Solltemperatur = 6    // HeizungPartyraum_Solltemperatur_Fensterkontakt
var Timer AussentuerePartyraumHeizungMeldung = null

rule "Türe Partyraum Auf Heizung aus"
when
    Item AussentuerePartyraum_TurFensterstatus changed
then
    AussentuerePartyraumHeizungMeldung?.cancel      //cancel timer if running

    if(AussentuerePartyraum_TurFensterstatus.state == OPEN) { // <--- DA
     HeizungPartyraum_Solltemperatur = if(HeizungPartyraum_Solltemperatur_Fensterkontakt.state instanceof Number) (HeizungPartyraum_Solltemperatur_Fensterkontakt.state as Number) else 21
        AussentuerePartyraumHeizungMeldung = createTimer(ZonedDateTime.now.plusMinutes(1), [|
            HeizungPartyraum_Solltemperatur_Fensterkontakt.sendCommand(6)
        ])
    } // <--- UND DA
    if(AussentuerePartyraum_TurFensterstatus.state == CLOSED)
        HeizungPartyraum_Solltemperatur_Fensterkontakt.sendCommand(HeizungPartyraum_Solltemperatur)
end

Re: Könnte mal wieder Hilfe gebrauchen

Verfasst: 4. Dez 2021 09:34
von int5749
udo1toni hat geschrieben: 4. Dez 2021 06:54 Du hast da Klammern vergessen...
:oops:

Re: Könnte mal wieder Hilfe gebrauchen

Verfasst: 4. Dez 2021 21:24
von Snatsch
Vielen Dank für eure Hilfe :) jetzt scheint es zu funktionieren wie es soll.

Code: Alles auswählen

HeizungPartyraum_Solltemperatur = if(HeizungPartyraum_Solltemperatur_Fensterkontakt.state instanceof Number) (HeizungPartyraum_Solltemperatur_Fensterkontakt.state as Number) else 21
könntet ihr mir diese Codezeile noch erklähren ? wäre echt super das ich auch verstehe wie es funktioniert :)

Re: Könnte mal wieder Hilfe gebrauchen

Verfasst: 4. Dez 2021 21:32
von int5749
Snatsch hat geschrieben: 4. Dez 2021 21:24 Vielen Dank für eure Hilfe :) jetzt scheint es zu funktionieren wie es soll.
Sehr gerne!
Snatsch hat geschrieben: 4. Dez 2021 21:24

Code: Alles auswählen

HeizungPartyraum_Solltemperatur = if(HeizungPartyraum_Solltemperatur_Fensterkontakt.state instanceof Number) (HeizungPartyraum_Solltemperatur_Fensterkontakt.state as Number) else 21
könntet ihr mir diese Codezeile noch erklähren ? wäre echt super das ich auch verstehe wie es funktioniert :)
Diese Zeile speichert die aktuelle Temperatur aus dem Item HeizungPartyraum_Solltemperatur_Fensterkontakt in die Variable HeizungPartyraum_Solltemperatur, welche bei Start den Wert 6 enthält.

Um nun aber auch noch sicherzustellen, dass ein gültiger Wert enthalten ist und somit gespeichert wird, wird geprüft ob das Item eine gültige Zahl enthält und nicht z.B. NULL oder UNDEF ist.
Dies erfolgt hier:

Code: Alles auswählen

HeizungPartyraum_Solltemperatur_Fensterkontakt.state instanceof Number
Sollte das Item keine gültige Zahl enthalten, wird ein default von 21 gesetzt

Code: Alles auswählen

else 21
Kurzum
21 oder eine gültige Zahl aus dem Item.

Re: Könnte mal wieder Hilfe gebrauchen

Verfasst: 4. Dez 2021 21:37
von Snatsch
Ahh ok vielen vielen Dank. Ihr seit spitze :)