Seite 1 von 3

Time cron in Rule durch Setpoint Variable beeinflussen

Verfasst: 27. Jul 2023 10:26
von Homer-S
Hallo,

ich glaube ich stehe mir gerade selbst im Weg und komme auf keine Lösung.


Bisher fahren unsere Rollos Abends zu einer Festen Zeit runter.
Meine Frau hat nun den Wunsch geäußert, dass man das in der Sitemap verändern kann, weil 20 uhr im Sommer zu früh ist.

Wie bekomme ich die eigestellte Stunde (per Setpoint) jetzt in den Time Cron rein?

Item:

Code: Alles auswählen

Number:Time  Einstellzeit_RolloNord_Abends_Stunde  "Einstellzeit_Rollos_Abends [%.0f h]"
Rule bisher:

Code: Alles auswählen

rule "ROLLADEN_NORDFENSTER_OG_Nord, Bad und Kinderschalfzimmer Rolladen und Steckdose Abends"
when 
 Time cron "0 0 20 * * ?" 
then 
    FlurRollo_NW_IN.sendCommand(80)
end

Danke

Re: Time cron in Rule durch Setpoint Variable beeinflussen

Verfasst: 27. Jul 2023 10:42
von PeterA
Hi,

also den Trigger der Rule, hier der Timecron Ausdruck via Setpoint zu verändern geht m.E. nicht.

Hier gibt es ähnliche Anforderungen von Madame für die Rollläden im Keller.
Habe hierzu eine Rule mit dem Timecron Trigger damit die im Winter alle um 19:00 Uhr zufahren.
Diese Rule kann ich mit einem "Schalter" Item Aktivieren oder Deaktivieren bzw.
die Rule wird an einer bestimmten Stelle einfach abgebrochen wenn der Schalter OFF ist.
Dann hab ich eine weitere Rule für den Sommer:
Hier fahren die Rollläden 30min nach Sonnenuntergang zu und dieser Zeitpunkt verändert sich weil hier der Trigger über das Astro Binding kommt.

Das wird so ganz gut "akzeptiert" :-)

Re: Time cron in Rule durch Setpoint Variable beeinflussen

Verfasst: 27. Jul 2023 11:02
von Homer-S
@PeterA Danke für die Antwort. Das hab ich auch schon probiert mit den Channels aus dem Astro Binding, das hat aber bei der Regierung nicht den erwünschten Erfolg.

Re: Time cron in Rule durch Setpoint Variable beeinflussen

Verfasst: 27. Jul 2023 15:54
von udo1toni
Da Du openHAB3.4.4 verwendest, kannst Du mit dem Trigger Time is arbeiten. Allerdings erwartet dieser Trigger als Item ein DateTime Item. Du musst in der UI die Zeit also entweder über DateTime Picker einstellen (Ich meine, es gibt für die Main UI passende Widgets) oder alternativ Number Items für Stunde und Minute anlegen und bei jeder Wertänderung dieser Items das DateTime Item korrekt setzen.

Tatsächlich ist das Astro Binding die bessere Alternative, allenfalls muss man schauen, welcher Zeitpunkt jeweils "der richtige" ist. Dummerweise gibt es den richtigen Zeitpunkt gar nicht, aber das trifft auch auf die eingestellte Zeit zu, und zwar zu 100%, denn der "richtige" Zeitpunkt ist hier nicht von objektiven Messwerten abhängig, sondern in hohem Maße von der aktuelle Stimmung einer Person (die letztlich entscheidet, wann der richtige Zeitpunkt gekommen ist). Da erfahrungsgemäß die Stimmung von Personen (ausdrücklich nicht speziell Frauen!) stark schwanken kann, kann man das weder über Astro noch über Zeitschaltuhr regeln, die beste Option wäre eine Smartwatch mit einer Schaltfläche zum Schließen...

Sorry für den Rant...

Umsetzung über Time is:
Du brauchst das DateTime Item (im Code RollZuZeit)

Rules:

Code: Alles auswählen

rule "Rollläden zu"
when
    Time is RollZuZeit timeOnly
then
    FlurRollo_NW_IN.sendCommand(80)
end
Über eine Input Card kannst Du das Item RollZuZeit mittels datepicker füllen (show time aktivieren, damit auch die Zeit eingegeben werden kann).
Ich habe bisher nicht herausgefunden, wie man nur die Zeit als Eingabe definieren kann, mit time als Auswahl kann man zwar die Zeit eingeben, sie wird aber nicht angezeigt, wenn die Eingabe abgeschlossen wurde (zumindest wird sie aber übernommen)
Ich gehe davon aus, dass es einen Trick dafür gibt :) aber ich kenne ihn nicht. Die Variante über die Input Card ist simpel, wird aber vermutlich auf Widerstand stoßen. Man könnte die Zeit über ein zweites Widget anzeigen lassen oder damit leben, dass man ein Datum zwar setzen kann, dies aber für die Anwendung irrelevant ist - aber: "Warum geht das denn nicht zu 150 % so wie ICH das will?" Und ehrlicherweise muss ich sagen, dass ich mir da auch etwas anderes wünschen würde.
Wie gesagt gibt es immer noch die Option, die Zeit über zwei getrennte Felder als Stunde und Minute einzugeben und anschließend über eine Rule das DateTime Item zu setzen.

Re: Time cron in Rule durch Setpoint Variable beeinflussen

Verfasst: 9. Jun 2024 17:02
von Quautiputzli
Hallo miteinander,

Wie läuft es denn, wenn man noch auf openhab 3.2 ist?
Vermutlich nicht so einfach oder?

Re: Time cron in Rule durch Setpoint Variable beeinflussen

Verfasst: 9. Jun 2024 22:27
von udo1toni
Wenn Du noch auf 3.2 bist, solltest Du updaten (dringend! wirklich!), und zwar mindestens auf 3.4.5 (sollte von 3.2 keine Probleme machen)
Es gibt ansonsten keine Möglichkeit, den Wunsch auf direktem Weg zu erfüllen, es gäbe lediglich mehr oder weniger hässliche Workarounds.
Außerdem ist 3.4.5 die einzige Möglichkeit, mit Unterstützung des Installers das Upgrade auf openHAB4 auszuführen.
Der Sprung von 3.4.5 auf 4.x bringt natürlich ebenfalls einige breaking changes mit sich, ist aber viel weniger problematisch als der Wechsel von 2.x zu 3.0, weil die Main UI schon getauscht ist.
Die 3.4.5 ist außerdem sowohl unter Java 11 als auch Java 17 lauffähig (ich bin mir nicht sicher, mit welchem Update Java 17 als Option rein kam)

Re: Time cron in Rule durch Setpoint Variable beeinflussen

Verfasst: 10. Jun 2024 06:41
von Quautiputzli
Okay, Danke,
Dann werde ich das Update mal versuchen. Sowas mache ich aber meist im Winter, da hab ich mehr Zeit. Irgendwas geht ja dann bestimmt wieder nicht mehr.

Re: Time cron in Rule durch Setpoint Variable beeinflussen

Verfasst: 10. Jun 2024 07:08
von udo1toni
Eigentlich sollte das Update von 3.2 auf 3.4 keine Probleme machen.
Lies vor dem Update die Release Notes durch (leider zusätzlich zu denen von 3.4 mindestens auch die von 3.3) und achte besonders auf die Breaking Changes und die Erwähnung von Addons, welche Du selbst nutzt.

Re: Time cron in Rule durch Setpoint Variable beeinflussen

Verfasst: 10. Jun 2024 07:22
von Quautiputzli
Das habe ich ja auch schon mal versucht:
viewtopic.php?p=51488#p51488

Re: Time cron in Rule durch Setpoint Variable beeinflussen

Verfasst: 10. Jun 2024 08:27
von udo1toni
Oha. Aber hast Du nicht oben geschrieben, dass Du Updates über den Winter machst? Da wäre nun wirklich Zeit gewesen... ;)