Seite 1 von 1
OH3 UI, Rules: Zweck von "run now" (Ctrl-R)
Verfasst: 9. Jun 2021 12:11
von martin_aus_Ddorf
Hallo zusammen,
wenn ich in OH3 auf der Web Oberfläche eine Rule erstelle, dann nahm ich an, dass ich diese mit dem Button "run now" testen kann. Dass das also den Trigger ersetzt und die Aktion abhängig von weiteren Bedingungen ausführt.
Tuts aber nicht.
Ich habe ein Item "_Rasenzeitsteuerung" mit den Zuständen on und off. In einer bereits täglich laufenden Rule wird dieser Schalter ausgewertet und auch beachtet. Bei off zündet die Rule die "then" Bedingung nicht. Alles suppi.
Nur wenn ich die gleiche Rule mit "run now" testen will (oder eben andere Bedingungen), dann wir die "then" Bedingung immer ausgeführt.
In der OH Doku habe ich nichts zu dem Button "run now" finden können. Hat jemand eine Idee, was das dann soll, oder besser noch, wie ich meine Rule wirklich testen kann?
Danke euch!
Grüße
Martin
Re: OH3 UI, Rules: Zweck von "run now" (Ctrl-R)
Verfasst: 9. Jun 2021 14:00
von peter-pan
... das kann ich mir fast nicht vorstellen. Wie sehen denn die Regeln aus ?
Re: OH3 UI, Rules: Zweck von "run now" (Ctrl-R)
Verfasst: 9. Jun 2021 14:12
von martin_aus_Ddorf
isch schwör!
Code: Alles auswählen
triggers:
- id: "1"
configuration:
cronExpression: 0 0 7,9,11,13,15,17,19 * * ? *
type: timer.GenericCronTrigger
conditions:
- inputs: {}
id: "9"
configuration:
itemName: Rasenzeitsteuerung
state: ON
operator: =
type: core.ItemStateCondition
- inputs: {}
id: "3"
label: weniger als 1 mm in den letzten 24 h
configuration:
itemName: OneCallAPIhistorydata_Regen
state: "1"
operator: <=
type: core.ItemStateCondition
- inputs: {}
id: "4"
label: derzeit weniger als 0,1 mm Regen
configuration:
itemName: Wetterinformationen_Regen
state: "0.1"
operator: <=
type: core.ItemStateCondition
- inputs: {}
id: "5"
label: in den nächsten 3 Stunden weniger als 0,3 mm Regen
configuration:
itemName: Localweatherandforecast_VorhergesagterRegen
state: "0.3"
operator: <=
type: core.ItemStateCondition
actions:
- inputs: {}
id: "2"
configuration:
itemName: SchattenrasenAnAus
command: ON
type: core.ItemCommandAction
Test war das Item Rasenzeitsteuerung. Ist das auf OFF, zündet die Regel wie gewünscht im Realbetrieb NICHT. Im Test aber immer, unabhängig von der Schalterstellung des Item Rasenzeitsteuerung.
Grüße
Martin
Re: OH3 UI, Rules: Zweck von "run now" (Ctrl-R)
Verfasst: 9. Jun 2021 16:05
von peter-pan
...mea culpa. Ich hab's gerade mal ausprobiert mit einer Test-Rule und es wurde die IF-Anweisung schlicht und einfach nicht beachtet. Das ist ja mal richtig sch....ade.
Wenn ich das gleiche mit einer DSL-Rule erledige und "run now" anklicke, dann werden die Bedingungen aber richtig behandelt.
Ist das ein Bug, oder sind wir zu blöd

???
Re: OH3 UI, Rules: Zweck von "run now" (Ctrl-R)
Verfasst: 9. Jun 2021 22:07
von udo1toni
Ich glaube, da herrscht ein Missverständnis.
Der Trigger startet die Rule, unter der Bedingung, die unter Only If definiert ist.
Der Run Now Knopf startet die Rule. Punkt.
Re: OH3 UI, Rules: Zweck von "run now" (Ctrl-R)
Verfasst: 9. Jun 2021 23:42
von peter-pan
udo1toni hat geschrieben: ↑9. Jun 2021 22:07
Der Trigger startet die Rule, unter der Bedingung, die unter Only If definiert ist.
Der Run Now Knopf startet die Rule.
...sorry, das hab ich jetzt nicht ganz verstanden.
Ich habe mal zum besseren Verständnis eine kleine Regel gemacht. Einmal über die WebUI mit dem Rules-Designer:
Code: Alles auswählen
triggers:
- id: "1"
configuration:
itemName: Sonoff_Basic_03
state: ON
previousState: OFF
type: core.ItemStateChangeTrigger
conditions:
- inputs: {}
id: "3"
configuration:
itemName: Sonoff_T1_01
state: ON
operator: =
type: core.ItemStateCondition
actions:
- inputs: {}
id: "2"
configuration:
itemName: Sonoff_Basic_04
command: ON
type: core.ItemCommandAction
Und einmal als DSL-Rule:
Code: Alles auswählen
// Triggers:
// - When Sonoff_Basic_03 changed to ON
// context: test-7
if (Sonoff_T1_01.state == ON) {
logInfo("Sonoff-Schalter", "Deckenlampe brennt")
Sonoff_Basic_04.sendCommand(ON)
}
else {
logInfo("Sonoff-Schalter","Deckenlampe ist nicht angeschaltet {}", Sonoff_T1_01.state )
}
Wenn ich nun bei der ersten Regel den "Run Now" Knopf drücke, wird nicht berücksichtigt, ob die Bedingung (Sonoff_T1_01= ON) erfüllt ist. Die folgende Aktion wird einfach ausgeführt.
Wenn ich das (für mein Verständnis) gleiche mit der DSL-Rule mache und den "Run_Now"-Knopf drücke, wird die IF-Anweisung (if (Sonoff_T1_01.state == ON)) jedoch berücksichtigt.
Wo ist der Denkfehler ?
Re: OH3 UI, Rules: Zweck von "run now" (Ctrl-R)
Verfasst: 10. Jun 2021 10:09
von udo1toni
Der Denkfehler liegt darin, dass Du den But Only If-Bereich als Teil Deines Codes siehst (was er nicht ist). Conditions sind Conditions, keine bedingten Verzweigungen.
Bei klassischen Rules gibt es keine Conditions, stattdessen wird die Rule bei jedem Trigger ausgeführt. Es bleibt dann dem Code überlassen, geforderte Randbedingungen abzuprüfen.
Wenn Du so willst, sind die Conditions das nachgerüstete AND im Trigger-Teil (wobei das natürlich so nicht stimmt, aber man kann es sich so vorstellen...)
Re: OH3 UI, Rules: Zweck von "run now" (Ctrl-R)
Verfasst: 10. Jun 2021 13:23
von peter-pan
udo1toni hat geschrieben: ↑10. Jun 2021 10:09
Der Denkfehler

. Ich hab dir ja von meinem Traum (im anderen Thread) geschrieben
