Fehler bei Timer für Heizung

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
C3-Elias
Beiträge: 6
Registriert: 20. Jan 2020 16:13
Answers: 1

Fehler bei Timer für Heizung

Beitrag von C3-Elias »

Guten Tagen,

Ich bin neu hier und auch neu im openhab.

Folgendes Ich habe eq3 Thermostate die auch schon verbunden sind und steuerbar sind über die BasicUI. Ich wollte jetzt einen Timer erstellen der für eine einstellbare Zeit heizt.

Item:

Code: Alles auswählen

Switch timer_OnOff "Timer" <clock>
Number timer_H    "Timer Stunde [%s]" <clock>
Number gui_variable
Sitemap:

Code: Alles auswählen

Frame label="heitzungstimer"{
Switch item=timer_OnOff mappings=[ON="An", OFF="Reset"]
Setpoint item=timer_H minValue=0 maxValue=23 step=1
Text item=gui_variable label="Time: [%.2f]" visibility=[gui_variable>0] icon="timer"
}
rule:

Code: Alles auswählen

rule "manuelTimed"
when
Item timer_OnOff received command ON
then
val time = timer_H.state as Number
time = time * 60
time = (time).intValue
val Timer = null
val Temp = ThermostateTemp.state as Number
if(Temp<30){
ThermostateTemp.sendCommand(new DecimalType(30.0))}
if(Timer === null){
Timer = createTimer(now.plusSeconds(time))
}
end
der code ist noch nicht Fertig aber ich bekomme immer den Fehler: Rule 'manuelTimed': An error occurred during the script execution: index=1, size=1

Wenn ich testen möchte ob der Timer anspringt
Wenn ich beim val time state as number as DecimalType angebe kommt dieser fehler: Rule 'manuelTimed': An error occurred during the script execution: Could not invoke method: org.eclipse.smarthome.core.library.types.DecimalType.intValue() on instance: 60

Jetzt Komm ich nicht weiter und deshalb bitte ich um Hilfe
Und danke schon im Vorraus


NEU!!


Die Rule Habe ich inzwischen einwenig umgebaut Funktioniert Leider immer noch nicht weiß auch nicht wie ich damit weiter komme

Code: Alles auswählen


var Timer tHeater = null  // Steht am anfang der Datei 

rule "manuelTimed"
when
Item timer_OnOff received command
then

    tHeater?.cancel
    logInfo("Starte Rule Script")
    var time = timer_H.state as DecimalType
    time = (time).intValue
    val Temp = ThermostateTemp.state as DecimalType



    if(timer_OnOff.state == ON){

        if(Temp<30){
                ThermostateTemp.sendCommand(new DecimalType(30.0))
            }
    logInfo("Bevor Timer")
        tHeader = createTimer(now.plusSeconds(time),[
            ThermostateTemp.sendCommand(new DecimalType(Temp))
            logInfo("Timer beendet")
        ])
    }
    logInfo("After Timer")

end

von C3-Elias » 22. Jan 2020 16:05
peter-pan hat geschrieben: 20. Jan 2020 17:32 ...also wenn du die Variable time als val deklarierst, ist diese nicht änderbar(final). D.h. die nachfolgende Multiplikation gibt einen Fehler. Du kannst die Variable als "var" definieren. Dann sollte es klappen.

Die andere Fehlermeldung könnte evtl. darauf hindeuten, dass der Dateityp der Regel nicht passt, aber da bin ich mir nicht sicher.
Okay dieser Fehler Hat sich erledigt

in eine eigene Datei gelegt und das received command zu changed geändert.
Hab jetzt ein weiter Problem aber das ist dann in einem Anderem Beitrag

Code: Alles auswählen


var Timer tHeater = null

rule "timer"
when
Item timer_mode changed
then

tHeater?.cancel
var Number time = timer_H.state as Number
val Temp = ThermostateTemp.state as DecimalType
if(timer_mode.state == OFF){
ThermostateTemp.sendCommand(new DecimalType(24.0))
}


if(timer_mode.state == ON){
     if(Temp<30){
                ThermostateTemp.sendCommand(new DecimalType(30.0))
            }
    tHeader = createTimer(now.plusSeconds((5).intValue),[
            ThermostateTemp.sendCommand(new DecimalType(Temp))
            logInfo("Timer beendet")
        ])
}

end

Gehe zur vollständigen Antwort
Zuletzt geändert von C3-Elias am 22. Jan 2020 16:13, insgesamt 3-mal geändert.

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Fehler bei Timer für Heizung

Beitrag von peter-pan »

...also wenn du die Variable time als val deklarierst, ist diese nicht änderbar(final). D.h. die nachfolgende Multiplikation gibt einen Fehler. Du kannst die Variable als "var" definieren. Dann sollte es klappen.

Die andere Fehlermeldung könnte evtl. darauf hindeuten, dass der Dateityp der Regel nicht passt, aber da bin ich mir nicht sicher.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

C3-Elias
Beiträge: 6
Registriert: 20. Jan 2020 16:13
Answers: 1

Re: Fehler bei Timer für Heizung

Beitrag von C3-Elias »

peter-pan hat geschrieben: 20. Jan 2020 17:32 ...also wenn du die Variable time als val deklarierst, ist diese nicht änderbar(final). D.h. die nachfolgende Multiplikation gibt einen Fehler. Du kannst die Variable als "var" definieren. Dann sollte es klappen.

Die andere Fehlermeldung könnte evtl. darauf hindeuten, dass der Dateityp der Regel nicht passt, aber da bin ich mir nicht sicher.
Erstmal vielen dank,
Leider kann ich es nicht Testen ob es mit var funktioniert da leider noch der Fehler: Rule 'manuelTimed': An error occurred during the script execution: index=1, size=1 kommt.

Wie meinst du Dateitype der Regel? die Datei ist als .rules deklariert. Ich habe aber in dieser Datei noch weitere Regel die als cronjobs dienen um die Heitzung an bestimmten Tagen und Uhrzeiten Anschaltet, Aber diese funktionieren auch so wie sie sollten.

MFG
Elias

C3-Elias
Beiträge: 6
Registriert: 20. Jan 2020 16:13
Answers: 1

Re: Fehler bei Timer für Heizung(An error occurred during the script )

Beitrag von C3-Elias »

Im Ersten Beitrag würde ein Update der Rule gemacht

C3-Elias
Beiträge: 6
Registriert: 20. Jan 2020 16:13
Answers: 1

Re: Fehler bei Timer für Heizung

Beitrag von C3-Elias »

peter-pan hat geschrieben: 20. Jan 2020 17:32 ...also wenn du die Variable time als val deklarierst, ist diese nicht änderbar(final). D.h. die nachfolgende Multiplikation gibt einen Fehler. Du kannst die Variable als "var" definieren. Dann sollte es klappen.

Die andere Fehlermeldung könnte evtl. darauf hindeuten, dass der Dateityp der Regel nicht passt, aber da bin ich mir nicht sicher.
Okay dieser Fehler Hat sich erledigt

in eine eigene Datei gelegt und das received command zu changed geändert.
Hab jetzt ein weiter Problem aber das ist dann in einem Anderem Beitrag

Code: Alles auswählen


var Timer tHeater = null

rule "timer"
when
Item timer_mode changed
then

tHeater?.cancel
var Number time = timer_H.state as Number
val Temp = ThermostateTemp.state as DecimalType
if(timer_mode.state == OFF){
ThermostateTemp.sendCommand(new DecimalType(24.0))
}


if(timer_mode.state == ON){
     if(Temp<30){
                ThermostateTemp.sendCommand(new DecimalType(30.0))
            }
    tHeader = createTimer(now.plusSeconds((5).intValue),[
            ThermostateTemp.sendCommand(new DecimalType(Temp))
            logInfo("Timer beendet")
        ])
}

end


Antworten