Hauptmenü

Problem mit DOIF immer Montags

Begonnen von dennis_n, 16 November 2015, 08:59:33

Vorheriges Thema - Nächstes Thema

dennis_n

Hi,

ich habe folgendes DOIF:
([homestatus] eq "home" and ([07:15:00-17:15:00|8] or [09:30:00-17:15:00|7])) (set RL_Alle Hoch, set pushmsg msg 'Homestatus' 'Alle Rolläden geöffnet') DOELSEIF ([homestatus] =~ "home|nachtdienst|unterwegs" and ([17:15:01-07:14:59|8] or [17:15:01-09:30:01|7])) (set RL_Alle Runter, set pushmsg msg 'Homestatus' 'Alle Rolläden geschlossen') DOELSEIF ([homestatus] eq "nachtdienst" and ([07:14:55-17:15:00|8] or [09:29:59-17:15:00|7])) (set RL_Nachtdienst Hoch, set RL_Unterwegs Runter, set pushmsg msg 'Homestatus' 'Rolläden Nachtdienst geschlossen') DOELSEIF ([homestatus] eq "unterwegs" and ([07:14:59-17:15:00|8] or [09:29:59-17:15:00|7])) (set RL_Unterwegs Runter, set pushmsg msg 'Homestatus' 'Rolläden unterwegs geschlossen')

Mein Problem ist, dass Montags morgens der Status auf home steht. Pünktlich um 7:15 Uhr gehen alle Rolläden auf. Das ist auch richtig so.
Wenn aber meine Frau um 8:30 Uhr den Status auf unterwegs setzt, gehen alle Rolläden wieder runter, anstatt "RL_Unterwegs Runter".

Das ist aber scheinbar immer nur Montags morgens. Datum auf dem Pi und auch in fhem habe ich mehrfach geprüft. Das stimmt alles.
Habe ich meinem DOIF irgendwo einen Fehler, so dass er in die structure "set RL_Alle Runter" reingeht anstatt in "set RL_Unterwegs Runter"?

Gruss
Dennis

Brockmann

Ich vermute, das Problem ist folgendes:
[17:15:01-09:30:01|7]
Das bedeutet 17:15 an einem Wochende bis 9:30 am Folgetag. Und Montag ist der Folgetag von Sonntag. Also ist diese Bedingung Montagmorgen um 8:30 Uhr erfüllt.

Eventuell reicht es, wenn Du die Reihenfolge der Konditionen änderst, also den RL_Unterwegs Runter-Fall nach vorne holst. Denn DOIF arbeitet die Konditionen von oben nach unten ab und nimmt die erste, die zutrifft.
Ich kann aber nicht beurteilen, ob dadurch an anderer Stelle wieder ein Problem auftritt.

dennis_n

Hi,

das ist ein sehr guter Hinweis, an den ich nicht gedacht habe. Ich werde es ausprobieren und berichten.
Notfalls gehe ich von der Angabe "7" und "8" weg und definiere die Wochentage einzeln.

Danke für den Denkanstoß.

Gruss
Dennis

Wuppi68


([homestatus] eq "home" and ([07:15:00-17:15:00|8] or [09:30:00-17:15:00|7]))
     (set RL_Alle Hoch, set pushmsg msg 'Homestatus' 'Alle Rolläden geöffnet')
DOELSEIF ([homestatus] =~ "home|nachtdienst|unterwegs" and ([17:15:01-07:14:59|8] or [17:15:01-09:30:01|7]))
     (set RL_Alle Runter, set pushmsg msg 'Homestatus' 'Alle Rolläden geschlossen')
DOELSEIF ([homestatus] eq "nachtdienst" and ([07:14:55-17:15:00|8] or [09:29:59-17:15:00|7]))
     (set RL_Nachtdienst Hoch, set RL_Unterwegs Runter, set pushmsg msg 'Homestatus' 'Rolläden Nachtdienst geschlossen')
DOELSEIF ([homestatus] eq "unterwegs" and ([07:14:59-17:15:00|8] or [09:29:59-17:15:00|7]))
    (set RL_Unterwegs Runter, set pushmsg msg 'Homestatus' 'Rolläden unterwegs geschlossen')


ich habe Deinen Code ein wenig umformatiert ... nur ein paar Returns und Leerzeichen eingefügt --> macht das ganze viel einfacher lesbarer und funktioniert genauso auch in der "DEF" Box
FHEM unter Proxmox als VM

Damian

Zitat von: Brockmann am 16 November 2015, 09:19:07
Ich vermute, das Problem ist folgendes:
[17:15:01-09:30:01|7]
Das bedeutet 17:15 an einem Wochende bis 9:30 am Folgetag. Und Montag ist der Folgetag von Sonntag. Also ist diese Bedingung Montagmorgen um 8:30 Uhr erfüllt.

Dieser Fall wurde im Modul berücksichtigt. Programmiert ist in solchen Fällen, dass zwischen 00:00 und der Endzeit (hier 09:30:01) noch der Wochentag des Vortags gilt.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Zitat von: Damian am 16 November 2015, 19:01:12
Dieser Fall wurde im Modul berücksichtigt. Programmiert ist in solchen Fällen, dass zwischen 00:00 und der Endzeit (hier 09:30:01) noch der Wochentag des Vortags gilt.

Der Fall war zwar programmiert, aber falsch. Korrektur ab morgen per Update.

Gruß

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

dennis_n

Hallo Damian,

jetzt bin ich verwirrt.
Wie muss es denn richtig lauten, damit bei der Zeitangabe auch der Montag erkannt wird?

Danke

Gruss
Dennis

Damian

Zitat von: dennis_n am 16 November 2015, 21:06:16
Hallo Damian,

jetzt bin ich verwirrt.
Wie muss es denn richtig lauten, damit bei der Zeitangabe auch der Montag erkannt wird?

Danke

Gruss
Dennis

Beispiel:

[20:00-08:00|7] ist wahr ab 20:00 Uhr samstags bis 08:00 Uhr sonntags und ab 20:00 Uhr sonntags bis 08:00 Uhr montags.

Richtig funktionieren wird es aber erst, wenn du die korrigierte Version des Moduls morgen updatest.

Gruß

Damian


Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

dennis_n

Hallo Damian,

aber so ist es doch jetzt auch, oder?
Bei mir steht [17:15:01-09:30:01|7] und das gilt von Sonntags 17:15:01 bis Montags 09:30:01.

Gruss
Dennis

Damian

Zitat von: dennis_n am 16 November 2015, 21:17:19
Hallo Damian,

aber so ist es doch jetzt auch, oder?
Bei mir steht [17:15:01-09:30:01|7] und das gilt von Sonntags 17:15:01 bis Montags 09:30:01.

Gruss
Dennis

ja aber es funktioniert ja nicht am Montag wegen eines Fehlers im DOIF-Modul
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

dennis_n

Ich sollte öfter mal einen Schritt zur Seite machen, damit die Lange Leitung auch Platz zum arbeiten hat, sorry.

Hab verstanden  ::)

Gruss
Dennis