Seite 2 von 2
Re: DSL-Rule - Period.between -Fehlermeldung
Verfasst: 19. Apr 2026 20:14
von peter-pan
Muss dir ehrlich sagen, ich habs noch nicht verstanden was Lolodomo genau meint.
Ich bin ja kein Programmierer, aber sind das nicht Methoden ("between") einer Java Date Time Funktion ? Oder so ähnlich.
Sollte das so bleiben, gäbe es wohl kein "between" mehr, oder ? Das beträfe ja dann wohl alle !?
Re: DSL-Rule - Period.between -Fehlermeldung
Verfasst: 19. Apr 2026 21:36
von udo1toni
Nein, das bleibt nicht so.
Offensichtlich wird das between (fälschlich) als Schlüsselwort erkannt, weil es an anderer Stelle ein Schlüsselwort ist.
Eventuell ist der Fix schon im aktuellen Nightly enthalten, oder es dauert noch ein paar Tage...
Re: DSL-Rule - Period.between -Fehlermeldung
Verfasst: 20. Apr 2026 06:46
von peter-pan
...Danke für die Erläuterung. In #5309 war es auf jeden Fall noch nicht drin. Ich melde mich wieder, wenn ich eine Veränderung feststelle.
Re: DSL-Rule - Period.between -Fehlermeldung
Verfasst: 20. Apr 2026 07:08
von peter-pan
...hab grad nochmal im internat. Forum gelesen.
Nadahar hat einen Workaround gepostet (Potenz-Zeichen).
Hab's gleich ausprobiert ... und es klappt !!!
Re: DSL-Rule - Period.between -Fehlermeldung
Verfasst: 20. Apr 2026 09:38
von udo1toni
Also var diff = Period.^between(endofCentury, just)?
Re: DSL-Rule - Period.between -Fehlermeldung
Verfasst: 20. Apr 2026 11:56
von peter-pan
..ja, genau.
.rules
Code: Alles auswählen
rule "Datum testen_test"
when
// Item Dummy_blind changed to "100"
Item Dummy_11 changed to ON
then
var LocalDate endofCentury = LocalDate.of(2000, 01, 01)
var LocalDate just = LocalDate.now()
var diff = Period.^between(endofCentury, just)
logInfo("datediff", "diff between Years: {} Months: {} Days: {} - diff ist {}", diff.getYears, diff.getMonths, diff.getDays, diff)
val heute = now.toLocalDate
val abholTag = (Spring_Start_Met.state as DateTimeType)
.getZonedDateTime(ZoneId.systemDefault)
.toLocalDate
val delta = ChronoUnit.DAYS.^between(heute, abholTag)
logInfo("datediff-delta", "delta between Years: {} Months: {} Days: {} - diff ist {}", delta)
end
Funktioniert übrigens auch mit OH5.1.4
Re: DSL-Rule - Period.between -Fehlermeldung
Verfasst: 21. Apr 2026 08:55
von udo1toni
Das ist natürlich ein schmutziger Trick, aber immerhin bis zum Fix ein Workaround mit vertretbarem Aufwand.
Re: DSL-Rule - Period.between -Fehlermeldung
Verfasst: 21. Apr 2026 11:21
von peter-pan
Hab ich das richtig verstanden, dass die "But only if"-Condition in die DSL-Rules (Text) mit aufgenommen werden soll ?
https://github.com/openhab/openhab-core/pull/5501
Re: DSL-Rule - Period.between -Fehlermeldung
Verfasst: 23. Apr 2026 12:51
von udo1toni
So sieht es aus. Ist nur konsequent, wobei ich persönlich keinen echten Vorteil darin sehe, die Prüfungen außerhalb des Codes vorzunehmen.
Hintergrund der Conditions war ja, damit überhaupt Rules zu ermöglichen, die nur unter bestimmten Voraussetzungen etwas tun, ohne dafür Code zu benötigen.
DSL Rules haben aber immer einen Code-Teil, in dem auch recht bequem die Prüfung vorgenommen werden kann (mit mehr Möglichkeiten gegenüber den Conditions in UI-Rules).