Regel einmal Ausgeführt

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Piko
Beiträge: 93
Registriert: 26. Nov 2019 19:05
Answers: 0

Regel einmal Ausgeführt

Beitrag 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
von udo1toni » 25. Apr 2020 14:10
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.
Gehe zur vollständigen Antwort

Darkwin101
Beiträge: 424
Registriert: 6. Mär 2019 11:19
Answers: 14

Re: Regel einmal Ausgeführt

Beitrag 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.

Benutzeravatar
udo1toni
Beiträge: 15249
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Regel einmal Ausgeführt

Beitrag 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?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Piko
Beiträge: 93
Registriert: 26. Nov 2019 19:05
Answers: 0

Re: Regel einmal Ausgeführt

Beitrag 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

Benutzeravatar
udo1toni
Beiträge: 15249
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Regel einmal Ausgeführt

Beitrag von udo1toni »

Na, ich bin mal auf die Definition der Variablen gespannt. Ich kann mir schon etwas denken :)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Piko
Beiträge: 93
Registriert: 26. Nov 2019 19:05
Answers: 0

Re: Regel einmal Ausgeführt

Beitrag 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

Darkwin101
Beiträge: 424
Registriert: 6. Mär 2019 11:19
Answers: 14

Re: Regel einmal Ausgeführt

Beitrag von Darkwin101 »

Wieso schreibst du die Stunde überhaupt in eine Variable, werte doch direkt aus mit :

Code: Alles auswählen

((now.getHourOfDay <= 6 ) || (now.getHourOfDay > 21))
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
Zuletzt geändert von Darkwin101 am 25. Apr 2020 14:12, insgesamt 1-mal geändert.

Benutzeravatar
udo1toni
Beiträge: 15249
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Regel einmal Ausgeführt

Beitrag 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.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Piko
Beiträge: 93
Registriert: 26. Nov 2019 19:05
Answers: 0

Re: Regel einmal Ausgeführt

Beitrag 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

Benutzeravatar
udo1toni
Beiträge: 15249
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Regel einmal Ausgeführt

Beitrag 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.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten