Seite 1 von 1

Heizung Tür-auf Steuerung

Verfasst: 27. Dez 2018 16:16
von ollis112
Hallo,
ich versuche eine Timersteuerung zu erstellen.

Wenn die Terrassentür länger als 10 Minuten offen ist, sollen sich die Heizkörper ausschalten.

Leider bekomme ich eine Fehlermeldung: missing EOF at 'var'

Kann mir einer bitte helfen.

Hier mein Code:
Gruß
Oliver

var Timer tTerassentuer = null

rule "Terassentuer_Heizung Timer"
when
Item Terassentuer changed
then
tTerassentuer?cancel
if(Terassentuer.state == OPEN)
tTerassentuer = createTimer(now.plusMinutes(10), [|
if(Termostat_Wohn.state == 1 && Termostat_Ess.state == 1)
Termostat_Wohn.sendCommand(0)
Termostat_Ess.sendCommand(0)
])
end

Re: Heizung Tür-auf Steuerung

Verfasst: 27. Dez 2018 17:54
von limdul79
Kann es sein, dass in der Rules Datei mehrere Regeln sind?

Sprich, dass vor der Timer Deklaration noch andere Regeln sind? Wenn ja - verschieb die Timer Definition mal vor die allererste Regel.

Re: Heizung Tür-auf Steuerung

Verfasst: 27. Dez 2018 20:06
von ollis112
Leider nein.
Steht alleine in der Datei

Re: Heizung Tür-auf Steuerung

Verfasst: 29. Dez 2018 09:27
von ollis112
Habe den Fehler gefunden!
die Zeile mit dem Löschen des Timers war fehlerhaft.
Nach dem Fragezeichen kommt noch ein Punkt.
Also "Timer?.cancel"
Gruß
Oliver

Re: Heizung Tür-auf Steuerung

Verfasst: 29. Dez 2018 20:07
von udo1toni
Gut, dass Du den Fehler selbst gefunden hast.

Kleine Anregung: Wenn Du Code postest, verwende doch bitte Code Tags, das macht den Code leichter lesbar:

Code: Alles auswählen

var Timer tTerassentuer = null 

rule "Terassentuer_Heizung Timer"
when
    Item Terassentuer changed
then
    tTerassentuer?.cancel 
    if(Terassentuer.state == OPEN) 
        tTerassentuer = createTimer(now.plusMinutes(10), [|
            if(Termostat_Wohn.state == 1 && Termostat_Ess.state == 1)
                Termostat_Wohn.sendCommand(0)
            Termostat_Ess.sendCommand(0)
        ])
end
Du hast da übrigens noch einen Fehler drin, das Item Termostat_Wohn wird nur auf 0 gesetzt, falls beide Items den Status 1 enthalten, das Item Termostat_Ess wird auf jeden Fall auf 0 gesetzt. Ich denke nicht, dass dies Dein Zeil war. ;)

Re: Heizung Tür-auf Steuerung

Verfasst: 30. Dez 2018 11:23
von ollis112
OK, stimmt.
Ist mir gar nicht aufgefallen. Da beide meist gleichzeitig auf 1 stehen.
Wie muss ich das anpassen? Mit einem AND zwischen den sendCommand Befehlen?
Gruß
Oliver

Re: Heizung Tür-auf Steuerung

Verfasst: 30. Dez 2018 21:29
von udo1toni
Du musst die beiden Zeilen als Block markieren:

Code: Alles auswählen

if(Termostat_Wohn.state == 1 && Termostat_Ess.state == 1) {
     Termostat_Wohn.sendCommand(0)
     Termostat_Ess.sendCommand(0)
}
Wobei eigentlich diese Variante korrekt wäre (immerhin könnten die Thermostaten auch unterschiedlich eingestellt sein):

Code: Alles auswählen

if(Termostat_Wohn.state == 1) 
    Termostat_Wohn.sendCommand(0)
if(Termostat_Ess.state == 1) 
    Termostat_Ess.sendCommand(0)

Re: Heizung Tür-auf Steuerung

Verfasst: 31. Dez 2018 10:54
von ollis112
Ah ja, so ist das.
Vielen Dank,
und alles Gute für 2019
Gruß
Oliver