Seite 1 von 1

Rules / Scripts mit DateTime / Tageszeiten

Verfasst: 21. Dez 2021 21:00
von oh3twh
Hi *,

ich habe bisher mit der MainUI nur sehr einfache Rules "geklickt".
Jetzt habe ich einen Präsenz-Melder und ich möchte abhängig der Tageszeit meine Hue-Leuchten mit unterschiedlichen Color/Brightness anschalten.

Also einfach formuliert sowas:
If (now) is:
08:00 - 11:59
* Color = .. ; Brightness ..
12:00 - 14:59
* Color = .. ; Brightness ..
15:00 - 20:59:
* Color = .. ; Brightness ..
default:
* Color = .. ; Brightness ..

Wie packt man das jetzt an? OH3 verwirrt mich leider mit sehr vielen Ansätzen. (Rules, Scirpts, EcmaScript; Blockly. )
Wir "rechne" ich mit Zeiten bzw. mit "NOW" und welche Sprache (EcmaScript, Java, etc.) sollte ich nehmen?

Mein Ansatz wäre, das ich in der Präsenz-Rule einfach ein Script ausführen lassen, das die o.g. Logik abbildet/implementiert.
Wie würdet ihr das machen?

danke für eure hinweise
twh

Re: Rules / Scripts mit DateTime / Tageszeiten

Verfasst: 21. Dez 2021 21:43
von int5749
Hallo twh

eine Idee (ohne den Trigger zu kennen, evtl. ist dies die Erkennung einer Präsenz?)

Code: Alles auswählen

rule "Colour by time"
when
    "Ich brauche einen Trigger"
then
    if ((now.toLocalTime.getHour >= 8) && (now.toLocalTime.getHour <= 11)) {
        * Color = .. ; Brightness ..
    } else if ((now.toLocalTime.getHour >= 12) && (now.toLocalTime.getHour <= 14)) {
        * Color = .. ; Brightness ..
    } else if ((now.toLocalTime.getHour >= 15) && (now.toLocalTime.getHour <= 21)) {
        * Color = .. ; Brightness ..
    } else {
        * Color = .. ; Brightness .. 
    }
end
VG
int5749

Re: Rules / Scripts mit DateTime / Tageszeiten

Verfasst: 21. Dez 2021 22:07
von oh3twh
Hi,

d.h. in den Code Abschnitt von der Rule könne ich die Logik entsprechend hinterlegen?

Mein Trigger ist "When ITEM-PRESENCE has changed from CLOSED TO OPEN". (Also der Zigbee Bewgungsmelder) .> Das funktioniert alles prima. Nur frage ich mich wie und wo ich meine Zeit-Logik hinterlegen kann und wie man überhaupt Zeit-Logik programmiert. Mir ist das Programmier-Sprachen Modell leider nicht klar.

Re: Rules / Scripts mit DateTime / Tageszeiten

Verfasst: 21. Dez 2021 22:19
von int5749
Ja,

Du brauchst dann eigentlich nur noch * Color = .. ; Brightness .. durch den Befehl für die Wunschfarbe tauschen.
Mit Deinem Trigger-Item sollte es wie folgt ausschauen:

Code: Alles auswählen

rule "Colour by time"
when
    Item ITEM-PRESENCE changed to OPEN
then
    if ((now.toLocalTime.getHour >= 8) && (now.toLocalTime.getHour <= 11)) {
        * Color = .. ; Brightness ..
    } else if ((now.toLocalTime.getHour >= 12) && (now.toLocalTime.getHour <= 14)) {
        * Color = .. ; Brightness ..
    } else if ((now.toLocalTime.getHour >= 15) && (now.toLocalTime.getHour <= 21)) {
        * Color = .. ; Brightness ..
    } else {
        * Color = .. ; Brightness .. 
    }
end

Re: Rules / Scripts mit DateTime / Tageszeiten

Verfasst: 22. Dez 2021 00:04
von udo1toni
Alternativ kannst Du auch einfach zu den Zeitpunkten, zu denen der HSB-Wert geändert werden soll, jeweils eune Rule starten, die den Sollwert in ein Color Item speichert.
In der Presence Rule kopierst Du dann den Wert des Items in das Item der Lampe.