Seite 1 von 1

Unterschiedliche Lampen je nach Zeitraum

Verfasst: 12. Jan 2020 00:07
von timtaylor
Hallo

Ich komme mit meiner Rule einfach nicht weiter. Ich möchte, dass in zwei unterschiedlichen Zeiträumen unterschiedliche Lichter geschaltet werden.

Erster Zeitraum ist zwischen 6:00 Uhr und 20:00 Uhr und der zweite Zeitraum ist zwischen 20:00 Uhr und 6:00 Uhr. Irgendwie will es nicht klappen.

Hat jemand eine Tipp für mich???

DANKE!

Code: Alles auswählen

rule "Flur PM Melder"
when
    Item FL_PMelder changed to ON
then
    if (now.getHourOfDay() >6 || now.getHourOfDay() <20) {
    GD_Licht.sendCommand(ON)
    FL_Licht.sendCommand(ON)
//  TH_Wandlicht.sendCommand(ON)
    TH_OG_Deckenlicht.sendCommand(ON)
    TH_UG_Deckenlicht.sendCommand(ON)
    }
    else (now.getHourOfDay() >20 || now.getHourOfDay() <6) {
//  GD_Licht.sendCommand(ON)
    FL_Licht.sendCommand(ON)
    TH_Wandlicht.sendCommand(ON)
//  TH_OG_Deckenlicht.sendCommand(ON)
//  TH_UG_Deckenlicht.sendCommand(ON)
    }
end

Re: Unterschiedliche Lampen je nach Zeitraum

Verfasst: 12. Jan 2020 15:52
von heiko74
Hallo,

im ersten If-Statement muß es wie folgt heißen

Code: Alles auswählen

if (now.getHourOfDay() >6 && now.getHourOfDay() <20)
An "else" kann man keine Bedingung anfügen. Entweder diese weglassen (Zeile oben unterscheidet schon gut genug) oder "else if" verwenden.

Re: Unterschiedliche Lampen je nach Zeitraum

Verfasst: 12. Jan 2020 16:04
von timtaylor
Hey Heiko

tausend dank für Deine Antwort.

Werde ich testen.

Danke!

Re: Unterschiedliche Lampen je nach Zeitraum

Verfasst: 13. Jan 2020 22:36
von udo1toni
else kennt kein statement, die Klammern hinter dem else inklusive Inhalt müssen weg.

Tipp am Rande: Pack die Items in zwei Gruppen, dann kannst Du einfach die Gruppe ansteuern. Dann sähe die Rule so aus:

Code: Alles auswählen

rule "Flur PM Melder"
when
    Item FL_PMelder changed to ON
then
    if (now.getHourOfDay() > 6 && now.getHourOfDay() < 20)  // 07:00:00 Uhr bis 19:59:59 Uhr
        gDayGroup.members.forEach[i|i.sendCommand(ON)]
    else 
        gNightGroup.members.forEach[i|i.sendCommand(ON)]
end

/*
    GD_Licht (gDayGroup)
    TH_OG_Deckenlicht (gDayGroup)
    TH_UG_Deckenlicht (gDayGroup)
    FL_Licht (gNightGroup,gDayGroup)
    TH_Wandlicht (gNightGroup)
*/
Die Gruppenzugehörigkeit muss natürlich in der *.items Datei definiert werden (alternativ über die Paper UI Oberfläche). Man könnte in diesem Fall sogar auf die .members.forEach[] Methode verzichten, auch ein gDayGroup.sendCommand(ON) würde an alle zugehörigen Items weitergeleitet.

Re: Unterschiedliche Lampen je nach Zeitraum

Verfasst: 14. Jan 2020 16:57
von timtaylor
Hallo Udo,

vielen Dank für Deinen Beitrag. Weltklasse! So setze ich das um.

Noch eine Frage. Der Präsenzmelder ist ein KNX PM von MDT. Ich habe das ganze so geschaltet, dass nur der EIN Befehl an eine GA geht. Sobald dieser dann erfolgt, wird die Rule ausgeführt.

Mein Problem ist aktuell, dass die Lichter ausgehen, obwohl ich mich im Bereich des Präsenzmelder aufhalten. Hast Du eine Idee woran das liegt? Eigentlich sollte das Licht doch an bleiben?

Tausend dank im Voraus!

Re: Unterschiedliche Lampen je nach Zeitraum

Verfasst: 15. Jan 2020 00:02
von udo1toni
Wenn der PM nur ON sendet, gibt es nach dem ersten ON kein Change mehr.
Du kannst versuchen, stattdessen mit received update ON als Trigger zu arbeiten.
Alternativ kannst Du auch ein FL_PMelder.postUpdate(OFF) senden.

Re: Unterschiedliche Lampen je nach Zeitraum

Verfasst: 18. Jan 2020 18:34
von timtaylor
Danke Udo!!!