ich steige gerade um von OH2.5 auf OH3. Das meiste läuft und so bin ich nun bei Rules angekommen (habe komplett neu aufgesetzt und alles neu über das UI angelegt).
Nun habe ich aber eine Rule mit einem Timer, die unter OH2.5 mit globalen Variabeln funktioniert hat:
Code: Alles auswählen
var Timer interval_timer = null
rule "Ventilation"
var Integer ventilation_interval = (Garage_Ventilation_Intervall.state as DecimalType).intValue
...
ventilation_timer = createTimer(now.plusMinutes(ventilation_interval), [|
sendCommand(Ventilator_Garage, OFF)
ventilation_timer = null ]
Folgendes habe ich probiert:
In der UI eine Rule angelegt und unter Action DSL-Script gewählt:
Code: Alles auswählen
var Timer interval_timer = null
var Integer ventilation_interval = (Garage_Ventilation_Intervall.state as DecimalType).intValue
...
ventilation_timer = createTimer(now.plusMinutes(ventilation_interval), [|
sendCommand(Ventilator_Garage, OFF)
ventilation_timer = null ]
Code: Alles auswählen
Cannot refer to the non-final variable ventilation_timer inside a lambda expression;
Ich habe also versucht ein Dummy item als Globale Variable zu mißbrauchen:
Code: Alles auswählen
var Integer ventilation_interval = (Garage_Ventilation_Intervall.state as DecimalType).intValue
...
ventilation_timer = createTimer(now.plusMinutes(ventilation_interval), [|
sendCommand(Ventilator_Garage, OFF)
postUpdate(intervall_timer, "") ]
Code: Alles auswählen
Type mismatch: cannot convert from Timer to NumberItem;
Hier sind also die Formate "Timer" und des Items nicht kompatibel.
Ich habe den ganzen Tag jetzt damit verbracht, viel gelesen und probiert - aber eine Lösung ist nicht dabei entstanden.
Gibt es vielleicht irgendeinen Workaround dafür?
Grundsätzlich soll es ja künftig Richtung Javascript gehen, aber da kenn ich mich noch gar nicht mit aus. Das ist eher mal ein separates Projekt, aber nicht zugleich mit dem Umzug auf OH3...