OH3 - Rule via UI erstellen mit Timer - Problem Globale Variabeln
Verfasst: 16. Mär 2021 20:00
Hallo,
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:
Da unter OH3 keine globalen Variabeln über UI nutzbar sind, stehe ich auf dem Schlauch. Ich weiß, man kann die alte Rules Datei nutzen und es so machen wie früher. Ich habe aber schon andere Rules per UI erstellt. Ein Mixbetrieb ist vermutlich aber nicht möglich. Außerdem sieht die Zukunft wie ich gelesen habe die Lösung mit Dateien nicht vor. Wenn möglich, würde ich daher jetzt auch alles konform anlegen.
Folgendes habe ich probiert:
In der UI eine Rule angelegt und unter Action DSL-Script gewählt:
Das funktioniert erwartungsgemäß nicht und im Log steht ein Error:
Ich darf die Variable "ventilation_timer" nicht innerhalb der Lmba verwenden, was imho nur geht, wenn sie Global definiert wäre.
Ich habe also versucht ein Dummy item als Globale Variable zu mißbrauchen:
Das item "intervall_timer" habe ich zunächst als Typ "Number" definiert, was aber zu folgender Fehlermeldung führt:
Gleiches passiert mit analoger Fehlmeldung, wenn ich dem Item den Typ "DateTime" oder "String" gebe.
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...
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...