Seite 1 von 2
OH3: OWM Temp basierte Regel
Verfasst: 9. Jun 2021 21:53
von AndreM77
Hi,
wenn es wärmer wird, möchte ich die Rolladen schließen (erst einmal zeitunabhängig, um für mich die Basics im Zusammenspiel zu verstehen).
Die Regel erstelle ich im PaperUI - Dialog.
triggers:
- id: "1"
configuration:
itemName: Weather_OWM_Temperature
state: "> 20"
type: core.ItemStateUpdateTrigger
conditions: []
actions:
- inputs: {}
id: "2"
configuration:
itemName: OG_Eltern_Dachfenster_Position
command: DOWN
type: core.ItemCommandAction
- inputs: {}
id: "3"
configuration:
itemName: OG_Kind2_Dachfenster_Position
command: DOWN
type: core.ItemCommandAction
Es passiert aber keine Action. Ich nehme an, der Trigger "When" zieht nicht, weil im "Weather_OWM_Temperature" 20 °C" steht.
Wie geht man jetzt damit am besten um? Das Item entsprechend umbauen? Was mach ich dann mit der Anzeige z.B. im HABPanel, oder macht man etwas an der Rule?
Hab jetzt hier eine Weile gesucht, aber viele haben scheinbar immer noch rules() aka OH2. Und jetzt hab ich mir doch wirklich schon fast alles aus den Textdateien heraus migriert und abgewöhnt o)
Danke & Grüße
André
Re: OH3: OWM Temp basierte Regel
Verfasst: 9. Jun 2021 23:22
von udo1toni
Du kannst im Trigger-Teil der Rule keine Conditions setzen. Du kannst triggern, wenn ein Itemstatus einen bestimmten Wert annimmt, nicht aber, wenn ein bestimmter Wert über- oder unterschritten wird. Was Du stattdessen tun kannst: die Rule löst bei Änderung des Status aus (das state-Feld bleibt dabei leer). Zusätzlich setzt Du über den But Only If Teil eine Condition. Hier kannst Du als Condition prüfen, ob ein bestimmter Wert überschritten wurde.
Re: OH3: OWM Temp basierte Regel
Verfasst: 10. Jun 2021 16:15
von AndreM77
ah, good to know. Danke Udo!
Und der Inhalt "22" vs. "20 °C" (meine eigentliche Frage) ist OH egal?
Danke & Grüße
André
Re: OH3: OWM Temp basierte Regel
Verfasst: 10. Jun 2021 20:34
von udo1toni
AndreM77 hat geschrieben: ↑10. Jun 2021 16:15
Und der Inhalt "22" vs. "20 °C" (meine eigentliche Frage) ist OH egal?
Die hatte ich dann glatt überlesen...
Nein, das ist nicht egal. Wenn Du ein Item mit QuantityType im Status vergleichen willst, musst Du eine passende Einheit angeben. Ob Du dann aber 22 °C oder 71.6 °F oder 295.15 K schreibst, kannst Du selbst entscheiden - die UoM Funktion in openHAB rechnet das für Dich passend um - und damit sollte auch klar sein, warum es nicht reicht, die Zahl hin zu schreiben und warum dieses UoM so absolut wünschenswert ist.

Re: OH3: OWM Temp basierte Regel
Verfasst: 10. Jun 2021 20:59
von AndreM77
ok. dann bin ich jetzt mal gespannt, ob das tut.
Hab verstanden, dass ich einfach gegen '> 23 °C' vergleiche. Bin gespannt o)
Danke!
Re: OH3: OWM Temp basierte Regel
Verfasst: 4. Jul 2021 21:12
von AndreM77
udo1toni hat geschrieben: ↑9. Jun 2021 23:22
Du kannst im Trigger-Teil der Rule keine Conditions setzen. Du kannst triggern, wenn ein Itemstatus einen bestimmten Wert annimmt, nicht aber, wenn ein bestimmter Wert über- oder unterschritten wird. Was Du stattdessen tun kannst: die Rule löst bei Änderung des Status aus (das state-Feld bleibt dabei leer). Zusätzlich setzt Du über den But Only If Teil eine Condition. Hier kannst Du als Condition prüfen, ob ein bestimmter Wert überschritten wurde.
Ich nochmal dazu. Die Ruhe wird nicht gezogen. Im Event.Log hab ich h dazu auch keinen Eintrag.
Code: Alles auswählen
triggers:
- id: "1"
configuration:
itemName: Weather_OWM_Temp_h3
type: core.ItemStateUpdateTrigger
Time Based Rules tun. Was kann es noch sein? Wo kann ich noch debuggen?
Danke!
Grüße
André
Re: OH3: OWM Temp basierte Regel
Verfasst: 5. Jul 2021 19:08
von udo1toni
Wie gesagt, der Trigger kann kein größer als.
Stattdessen musst Du den Trigger auf changed ändern. Dann packst Du noch eine "But only if" Bedingung dazu. Dort schränkst Du ein, dass die Rule nur gestartet wird, wenn der konkrete Wert über Deinem Grenzwert liegt. Dort müsstest Du auch den Wert mit Einheit angeben können.
Es ist möglich, dass Du die Einheit mit der Pipe anhängen musst. Dann stünde da z.B. > 22 | °C (Das ist die Schreibweise, wie sie in normalen DSL Rules Verwendung findet)
Re: OH3: OWM Temp basierte Regel
Verfasst: 12. Aug 2021 13:16
von AndreM77
Hi,
ich noch einmal. Diese Regel nervt. Sie tut gar nichts und ich weiß auch nicht, wo ich noch suchen soll.
- Itemsteuerung geht
- löse ich die Rule manuell aus, tut es auch wie es soll
Nur, der eventbasierte Teil - da passt scheinbar gar nix.
triggers:
- id: "1"
configuration:
itemName: Weather_OWM_Temp_h3
type: core.ItemStateUpdateTrigger
conditions:
- inputs: {}
id: "2"
configuration:
itemName: OG_Eltern_Dachfenster_Position
state: UP
operator: =
type: core.ItemStateCondition
- inputs: {}
id: "4"
configuration:
itemName: Weather_OWM_Temp_h3
state: 20 | °C
operator: ">"
type: core.ItemStateCondition
- inputs: {}
id: "5"
configuration:
startTime: 08:30
endTime: 14:00
type: core.TimeOfDayCondition
actions:
- inputs: {}
id: "3"
configuration:
itemName: OG_Eltern_Dachfenster_Position
command: DOWN
type: core.ItemCommandAction
- inputs: {}
id: "6"
configuration:
itemName: HI_OG_Eltern_Dachfenster_Position_SunClose
command: ON
type: core.ItemCommandAction
Weather_OWM_Temp_h3 wird auch aktualisiert
2021-08-12 13:10:41.751 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Weather_OWM_Temp_h3' changed from 24.76 °C to 24.84 °C
Wo/Wie kann ich noch suchen?
Andere Regeln, zeitbasiert, erledigen wunderbar ihre Aufgabe.
Danke!!
Grüße
André
Re: OH3: OWM Temp basierte Regel
Verfasst: 12. Aug 2021 17:49
von peter-pan
Ich hab mal etwas "gespielt" und mir eine "ähnliche" Rule gebastelt. die sieht so aus:
Code: Alles auswählen
triggers:
- id: "1"
configuration:
itemName: OC_WaF_Current_Temperature
type: core.ItemStateChangeTrigger
conditions:
- id: "5"
configuration:
itemName: OC_WaF_Current_Temperature
operator: ">="
state: 28.1 °C
type: core.ItemStateCondition
actions:
- inputs: {}
id: "2"
configuration:
type: application/vnd.openhab.dsl.rule
script: 'logInfo("test","test: {}", OC_WaF_Current_Temperature.state)'
type: script.ScriptAction
- inputs: {}
id: "3"
configuration:
itemName: Dummy_3
command: ON
type: core.ItemCommandAction
Und macht eigentlich nichts anderes als ein LogInfo auszugeben und einen Schalter (Dummy_3) einzuschalten. Was ich anders gemacht habe als sonst in DSL-Rules, ich habe beim Vergleichswert auf das Pipe-Symbol vor dem UoM verzichtet, obwohl das Item selber ein UoM-Item ist.
Evtl. erkennt OH3 das von selbst !!??

OH3: OWM Temp basierte Regel
Verfasst: 12. Aug 2021 18:07
von udo1toni
Wichtig beim posten von Code wäre auch, den Code als Code zu markieren. Bitte keinesfalls als Zitat markieren!
yaml Code berücksichtigt die Einrückungen, es ist ungemein schwierig, das von Hand wieder korrekt einzurücken.