Seite 3 von 14
Re: [solved] Ein Newbie benötigt Hife bei einer Rule
Verfasst: 1. Dez 2021 17:34
von int5749
peter-pan hat geschrieben: ↑1. Dez 2021 13:17
...ich möchte ja nicht "klugscheissern", aber könnte es sein, dass es eigentlich lauten muss Montag (1) bis Sonntag (7) ?
So verstehe ich zumindest die
Doku zu DayOfWeek(getValue).
Sprachs und ...
Aber Du hast Recht! Ich hatte ich mich vertan mir der alten Doku und einem Typo im Log das Ganze vollendet.
Der 25.12. ist Tag 6 und dies ist ein Samstag

Aber für die Formel kommt es trotzdem auf das richtige Ergebnis
peter-pan hat geschrieben: ↑1. Dez 2021 13:17
Ich habe deshalb in meiner Beispiel-Regel einen etwas anderen Ansatz gewählt.
Viele Wege führen ja nach Rom.
peter-pan hat geschrieben: ↑1. Dez 2021 13:17
Im Jahr 2023 fallen übrigens Heiligabend und 4. Advent wieder zusammen.
Auch dies sollte korrekt berechnet werden

Re: [solved] Ein Newbie benötigt Hife bei einer Rule
Verfasst: 1. Dez 2021 17:57
von peter-pan
int5749 hat geschrieben: ↑1. Dez 2021 17:34
Auch dies sollte korrekt berechnet werden
Ich glaub's auch. Wenn ich das richtig verstehe, ist das so ziemlich "tricky" gelöst, mit dem 25-ten

.
Re: [solved] Ein Newbie benötigt Hife bei einer Rule
Verfasst: 1. Dez 2021 20:09
von udo1toni
Den 25. habe ich einfach gewählt, weil .getDayOfWeek den Wertebereich 1 - 7 hat. der späteste Zeitpunkt für den 4. Advent ist der 24. 12., wenn der 25. ein Montag ist, muss 1 abgezogen werden, um auf Sonntag (4. Advent) zu kommen, wenn der 25. ein Sonntag ist, muss man 7 abziehen, um auf Sonntag (4. Advent) zu kommen.
It's as simple as that.

Re: [solved] Ein Newbie benötigt Hife bei einer Rule
Verfasst: 2. Dez 2021 10:11
von mike69
Moinsen.
Schön wäre es gewesen, leider funzt es noch nicht. Der gleiche Code lief vorgestern, heute nicht mehr.

Muss Euch nochmal um Hilfe bitten.
Hier die Fehlermeldung:
Code: Alles auswählen
2021-12-02 09:53:40.845 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'test3-2' failed: An error occurred during the script execution: Could not invoke method: org.eclipse.xtext.xbase.lib.IntegerExtensions.operator_greaterThan(int,long) on instance: null in test3
2021-12-02 09:53:50.845 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'test3-3' failed: An error occurred during the script execution: Could not invoke method: org.eclipse.xtext.xbase.lib.IntegerExtensions.operator_greaterThan(int,long) on instance: null in test3
2021-12-02 09:54:00.845 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'test3-2' failed: An error occurred during the script execution: Could not invoke method: org.eclipse.xtext.xbase.lib.IntegerExtensions.operator_greaterThan(int,long) on instance: null in test3
2021-12-02 09:54:10.845 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'test3-3' failed: An error occurred during the script execution: Could not invoke method: org.eclipse.xtext.xbase.lib.IntegerExtensions.operator_greaterThan(int,long) on instance: null in test3
2021-12-02 09:54:20.845 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'test3-2' failed: An error occurred during the script execution: Could not invoke method: org.eclipse.xtext.xbase.lib.IntegerExtensions.operator_greaterThan(int,long) on instance: null in test3
Und die Rule:
Code: Alles auswählen
var long intStAdvent
rule "Feiertage" when
Time cron "5 0 0 * * ?" or
System started
then
intStAdvent = LocalDate.now.withMonth(12).withDayOfMonth(25).getDayOfYear - (now.withMonth(12).withDayOfMonth(25).getDayOfWeek.getValue +21)
// intStAdvent = parse(now.getYear + "-12-25").minusDays(((parse(now.getYear + "-12-25").getDayOfWeek) + 28)).getDayOfYear + 1 // Montag vor 1. Advent
end
rule "Weihnachtslicht ein"
when
Time cron "0/20 * * * * ?"
then
if (now.getDayOfYear < 7 || now.getDayOfYear > intStAdvent) {
logDebug("x-mas","Weihnachtsbeleuchtung ein.")
delock05.sendCommand(ON)
}
end
rule "Weihnachtslicht aus"
when
Time cron "10/20 * * * * ?"
then
if (now.getDayOfYear < 7 || now.getDayOfYear > intStAdvent) {
logDebug("x-mas","Weihnachtsbeleuchtung aus.")
delock05.sendCommand(OFF)
}
end
Auch nach einem Neustart von OH keine Änderung
Re: [solved] Ein Newbie benötigt Hife bei einer Rule
Verfasst: 2. Dez 2021 10:25
von int5749
Moin Moin
Versuch mal anstatt
Etwas verwirrend ist das im Log
Script execution of rule with UID 'test3-2'
Angemäkelt wird, die Rules aber anders heißen. Aber ich habe bei mir noch nicht im Log geschaut, ob da OH die UID ändert, wenn eine Rule Bezeichnung geändert wird.
Re: [solved] Ein Newbie benötigt Hife bei einer Rule
Verfasst: 2. Dez 2021 10:44
von mike69
int5749 hat geschrieben: ↑2. Dez 2021 10:25
Moin Moin
Versuch mal anstatt
Nope, Meldung bleibt.
Code: Alles auswählen
2021-12-02 10:39:20.004 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'test3-2' failed: An error occurred during the script execution: Could not invoke method: org.eclipse.xtext.xbase.lib.IntegerExtensions.operator_greaterThan(int,int) on instance: null in test3
2021-12-02 10:39:30.009 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'test3-3' failed: An error occurred during the script execution: Could not invoke method: org.eclipse.xtext.xbase.lib.IntegerExtensions.operator_greaterThan(int,int) on instance: null in test3
Rule heisst "test3.rules"
die "-2" wird die 2te Rule sein, also Licht an. so verstehe ich das.
Re: [solved] Ein Newbie benötigt Hife bei einer Rule
Verfasst: 2. Dez 2021 11:00
von int5749
Also ich habe dies grade noch einmal bei mir getestet und dies läuft ohne Probleme.
Nur zur Sicherheit: die Initialisierung der Variabel steht ganz oben vor allen Rules in der Datei??
Also:
Code: Alles auswählen
var int intStAdvent
rule "irgendwas"
rule "sowieso"
rule "Feiertage"
when
.....
rule "Weihnachtslicht ein"
when
etc.
Alle globalen Variablen
müssen ganz oben in der .rules stehen.
Re: [solved] Ein Newbie benötigt Hife bei einer Rule
Verfasst: 2. Dez 2021 11:06
von peter-pan
Ich könnte mir vorstellen, dass die Variable "intStAdvent" evtl. keinen Wert enthält bei dem Vergleich "Grösser als". Mach einfach mal einen Log vor der If-Bedingung in der Regel test-2, z.B.:
und/oder ersetze mal die Variable "intStAdvent" in der If-Bedingung mit einem Wert, z.B.: 331.
Re: [solved] Ein Newbie benötigt Hife bei einer Rule
Verfasst: 2. Dez 2021 11:16
von int5749
peter-pan hat geschrieben: ↑2. Dez 2021 11:06
Ich könnte mir vorstellen, dass die Variable "intStAdvent" evtl. keinen Wert enthält bei dem Vergleich "Grösser als". Mach einfach mal einen Log vor der If-Bedingung in der Regel test-2, z.B.:
und/oder ersetze mal die Variable "intStAdvent" in der If-Bedingung mit einem Wert, z.B.: 331.
Genau dies hatte ich gerade getestet

Bear with me about wording in Log
Der folgende Code wird bei mir über einen Schalter "TEST" getriggert
Code: Alles auswählen
intStAdvent = LocalDate.now.withMonth(12).withDayOfMonth(25).getDayOfYear - (now.withMonth(12).withDayOfMonth(25).getDayOfWeek.getValue +21)
logInfo("TEST", "Jahrestag des 1.Advent: {}", intStAdvent.toString)
logInfo("TEST", "Wochentag des 1.Advent: {}", now.withMonth(12).withDayOfMonth(25).getDayOfWeek.getValue.toString)
logInfo("TEST", "Wochentag des 1.Advent: {}", LocalDate.now.withMonth(12).withDayOfMonth(25).getDayOfYear.toString)
logInfo("TEST", "Wochentag des 1.Advent: {}", now.withMonth(12).withDayOfMonth(25).getDayOfWeek.toString)
if (now.getDayOfYear < 7 || now.getDayOfYear > intStAdvent) {
logInfo("TEST", "Weihnachtbeleuchtung ein: {}", now.getDayOfYear.toString)
}
LOG
11:13:27.494 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'AmazonTestSchalter' received command ON
11:13:27.496 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'AmazonTestSchalter' changed from OFF to ON
11:13:27.497 [INFO ] [org.openhab.core.model.script.TEST ] - Jahrestag des 1.Advent: 332
11:13:27.498 [INFO ] [org.openhab.core.model.script.TEST ] - Wochentag des 1.Advent: 6
11:13:27.500 [INFO ] [org.openhab.core.model.script.TEST ] - Wochentag des 1.Advent: 359
11:13:27.501 [INFO ] [org.openhab.core.model.script.TEST ] - Wochentag des 1.Advent: SATURDAY
11:13:27.502 [INFO ] [org.openhab.core.model.script.TEST ] - Weihnachtbeleuchtung ein: 336
Re: [solved] Ein Newbie benötigt Hife bei einer Rule
Verfasst: 2. Dez 2021 11:19
von mike69
Nur zur Sicherheit: die Initialisierung der Variabel steht ganz oben vor allen Rules in der Datei??
In der ersten Zeile.
Habe die Rule umgenannt in testChristmas, zur besserenunterscheidung im Log.
Hier nochmal die Rule mit dem Eintrag von Peter-Pan:
Code: Alles auswählen
root@openhab3:/home/master# cat /etc/openhab/rules/testChristmas.rules
var int intStAdvent
rule "Feiertage" when
Time cron "5 0 0 * * ?" or
System started
then
intStAdvent = LocalDate.now.withMonth(12).withDayOfMonth(25).getDayOfYear - (now.withMonth(12).withDayOfMonth(25).getDayOfWeek.getValue +27)
// intStAdvent = parse(now.getYear + "-12-25").minusDays(((parse(now.getYear + "-12-25").getDayOfWeek) + 28)).getDayOfYear + 1 // Montag vor 1. Advent
end
rule "Weihnachtslicht ein"
when
Time cron "0/20 * * * * ?"
then
if (now.getDayOfYear < 7 || now.getDayOfYear > intStAdvent) {
logDebug("x-mas","Weihnachtsbeleuchtung ein.")
logInfo("x-mas","intStAdvent ist: {}", intStAdvent)
delock05.sendCommand(ON)
}
end
rule "Weihnachtslicht aus"
when
Time cron "10/20 * * * * ?"
then
if (now.getDayOfYear < 7 || now.getDayOfYear > intStAdvent) {
logDebug("x-mas","Weihnachtsbeleuchtung aus.")
logInfo("x-mas","intStAdvent ist: {}", intStAdvent)
delock05.sendCommand(OFF)
}
end
Hier der Log:
Code: Alles auswählen
2021-12-02 11:11:00.288 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'testChristmas-2' failed: An error occurred during the script execution: Could not invoke method: org.eclipse.xtext.xbase.lib.IntegerExtensions.operator_greaterThan(int,int) on instance: null in testChristmas
2021-12-02 11:11:10.290 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'testChristmas-3' failed: An error occurred during the script execution: Could not invoke method: org.eclipse.xtext.xbase.lib.IntegerExtensions.operator_greaterThan(int,int) on instance: null in testChristmas
2021-12-02 11:11:20.289 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'testChristmas-2' failed: An error occurred during the script execution: Could not invoke method: org.eclipse.xtext.xbase.lib.IntegerExtensions.operator_greaterThan(int,int) on instance: null in testChristmas
2021-12-02 11:11:30.290 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'testChristmas-3' failed: An error occurred during the script execution: Could not invoke method: org.eclipse.xtext.xbase.lib.IntegerExtensions.operator_greaterThan(int,int) on instance: null in testChristmas
2021-12-02 11:11:40.289 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'testChristmas-2' failed: An error occurred during the script execution: Could not invoke method: org.eclipse.xtext.xbase.lib.IntegerExtensions.operator_greaterThan(int,int) on instance: null in testChristmas
Das event.log ist leer.
Kompletter Neustart btrachte auch nichts.
Werde mal das Backup von gestern oder das 2.5.12er Backup rüberbügeln, aber erst heute Abend, muss gleich zur Schicht.