Seite 1 von 1
Regel einmal Ausgeführt
Verfasst: 23. Apr 2020 10:46
von Piko
Hallo zusammen,
stehe mal wieder vor einem problem und finde die lösung nicht.
Ich möchte das wenn der Fernseher zwischen 21 Uhr und 06 Uhr Aus bzw. Eingeschaltet wird, meine Nachtschaltung entsprechend gesetzt wird. Aktiv oder Inaktiv.
Leider macht die Regel das nur ein einziges mal. Danach kann ich den Fernseher so oft ich will Ein und Aus schalten wie ich will der Status der Nachtschaltung wird nicht verändert. Hat jemand eine Idee woran das liegen kann ?
Hier die Rule
Code: Alles auswählen
rule "Nachtschaltung"
when
Time cron "0 30 21 * 1-7 ? " or
Item LG_TV_Power changed to OFF
then
if (LG_TV_Power.state == OFF && (CurrentHour >=21 || CurrentHour <=06)){
tAus = createTimer(now.plusSeconds(10),[|
gLicht.members.filter[ i|i.state != OFF ].forEach[ licht |
licht.sendCommand(OFF)
]])
Nachtschaltung.postUpdate (ON)
if (g_solltemp.state > 18){
g_solltemp.sendCommand(18)
}
}
end
rule "Tagschaltung"
when
Time cron "0 30 06 ? * 1-6" or
Time cron "0 00 08 ? * 7" or
Item LG_TV_Power changed to ON
then
if(vAlleAusserHaus.state == OFF){
Nachtschaltung.postUpdate (OFF)
if (Temperatur_Aussen_ESP.state <20){
g_solltemp.sendCommand(21)}
}
end
Re: Regel einmal Ausgeführt
Verfasst: 23. Apr 2020 11:02
von Darkwin101
Ich kann jetzt nicht sagen ob es da Probleme geben kann das einzige was mir auffällt ist das Leerzeichen beim postUpdate
Nachtschaltung.postUpdate (OFF) --- Nachtschaltung.postUpdate(OFF)
ich würde mal probieren das ohne das Leerzeichen zu schreiben.
Re: Regel einmal Ausgeführt
Verfasst: 23. Apr 2020 18:17
von udo1toni
Das Erste, was mir auffällt, sind die Trigger. Die haben so gar nichts mit dem zu tun, was Du beschreibst.
Was soll denn der Time cron Ausdruck imTrigger? In der ersten Rule bewirkt dieser, dass die Rule vom 1. Januar bis 31. Juli täglich um 21:30:00 Uhr getriggert wird. Oder Du schaltest den Fernseher aus, dann wird die Rule auch getriggert.
In der zweiten Rule triggert der erste Time cron Ausdruck täglich Montag bis Samstag um 06:30:00 Uhr und Sonntag um 08:00:00 Uhr. Oder wenn Du den Fernseher einschaltest.
(Ich gehe mal davon aus, dass LG_TV_Power den aktuellen Status des Fernsehers liefert, also An oder Aus)
In der ersten Rule verwendest Du zwei Variablen, die aber offensichtlich nicht definiert sind, es sei denn, Du hast uns diesen Teil vorenthalten

, nämlich CurrentHour und tAus.
Es tauchen bei mir spontan noch weitere Fragen auf, z.B.: Sind die auszuschaltenden Licht Items alle Switch Items?
Ist g_solltemp ein Gruppenitem?
Re: Regel einmal Ausgeführt
Verfasst: 23. Apr 2020 21:40
von Piko
Stimmt die Variablen habe ich vergessen zu markieren.
Reiche ich morgen früh aber gerne noch nach.
Der trigger mit der Uhrzeit ist dafür das wenn kein Fernseher an ist um diese Zeit der Nachtmodus aktiviert wird. Ist der Fernseher dann Noch an soll nachdem der Fernseher abgeschaltet wurde das ganze in den Nachtmodus versetzt werden.
Ich werde das Gefühl nicht los das es mit der Uhrzeit zusammen hängt. Hab heute testweise die Uhrzeit auf >=12 bzw. <=06 gesetzt. Da hat es funktioniert.
Probleme hab ich nur mit dem Teil der Nachtschaltung. Der Rest hat sonst soweit super funktioniert.
Gesendet von iPhone mit Tapatalk
Re: Regel einmal Ausgeführt
Verfasst: 24. Apr 2020 01:08
von udo1toni
Na, ich bin mal auf die Definition der Variablen gespannt. Ich kann mir schon etwas denken

Re: Regel einmal Ausgeführt
Verfasst: 25. Apr 2020 09:32
von Piko
Guten Morgen, hab es gestern leider nicht an den Pc geschafft.
Hier die die Variablen
Code: Alles auswählen
var CurrentHour = now.getHourOfDay
var Timer tAus = null
Bin gespannt wo der Fehler ist.
Kleine Anmerkung noch, morgens scheint sich die Nachtschaltung ordnungsgemäß zu Deaktivieren also ist es wirklich nur die erste Rule die mir Probleme macht.
Zur Gruppe gLicht, ja es sind alles Switch Items. Der teil der Regel hat auch super Funktioniert, erst seit ich eine Zeitliche Begrenzung zwischen 20 und 06 Uhr drinnen habe spinnt das ganze.
Schönen start ins Wochenende
Re: Regel einmal Ausgeführt
Verfasst: 25. Apr 2020 09:54
von Darkwin101
Wieso schreibst du die Stunde überhaupt in eine Variable, werte doch direkt aus mit :
Ist es nicht auch so das die Variable bei ihrer Initialisierung nur einmal beschrieben wird am Anfang bei einlesen der Rule Datei ?
Wenn dem so ist müsste das GetHourofDay = now.getHourOfDay zusätzlich nochmal innerhalb der Rule vor das if
Re: Regel einmal Ausgeführt
Verfasst: 25. Apr 2020 14:10
von udo1toni
Der Fehler ist, dass eine Variablendefinition außerhalb einer Rule keinen dynamischen Wert haben darf. Oder besser, Du darfst zwar einen dynamischen Wert verwenden, aber die Variable wird einmalig (beim Laden der Datei) gesetzt und behält dann diesen Wert.
Das sollte schon aus der Definition der Timer Variablen klar werden. Würde der Wert immer wieder aktualisiert, müsste die Timer Variable ebenfalls immer wieder mit null gefüllt werden.
Re: Regel einmal Ausgeführt
Verfasst: 30. Apr 2020 20:53
von Piko
Wie gewohnt solltest du natürlich recht behalten.
Ich habe es abgeändert und es Funktioniert.
Ich hab das irgendwo im Netz gelesen und mir gedacht "Mensch das geht ja noch einfacher"
Zu einfach sollte man es sich dann doch nicht machen.
Danke euch
Re: Regel einmal Ausgeführt
Verfasst: 1. Mai 2020 18:21
von udo1toni
Ja, "irgendwo im Netz" findet man immer ganz tolle Anleitungen, die leider oftmals nicht funktionieren. Und man bekommt gewöhnlich dann auch keine Hilfe von denjenigen, die da etwas veröffentlicht haben.