FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Toto1973 am 30 November 2020, 10:30:22

Titel: DOIF auf status der nicht zustimmt überprüfen [gelöst]
Beitrag von: Toto1973 am 30 November 2020, 10:30:22
Hallo!
Ich habe da ein Problem mit einem DOIF.
Und zwar geht es darum, das ich den Kalender nutze, um meinen Adventsbeleuchtung zu steuern.
Im Device "BW_Feiertag" steht im Staus z.B. "URLAUB, 1.Advent"
Nun möchte ich, das mein Rolladen im Schlafzimmer um 21:30 Uhr dann zu geht, wenn Advent auf ja steht, Frühschuicht auf Früh und BW_Feiertag NICHT auf Urlaub steht.
Dazu habe ich die folgende Zeile gebastelt:
DOELSEIF ([21:30] and [?advent] eq "ja" and [BW_Feiertag] ne "URLAUB" and [?Schicht_dummy] eq "Frueh") (set sz_Weihnacht off)
Problem bei der Zeile ist jetzt, das diese nur Ausgeführt wird, wenn im Device "BW_Feiertag" im Status NUR "URLAUB" steht. Steht noch ein weiter Feiertag wie z.B. "1. Advent" dabei, triggert die Doif Zeile, was sie ja nicht soll.
Wie bekomme ich das richtig hin?
Titel: Antw:DOIF auf status der nicht zustimmt überprüfen
Beitrag von: Damian am 30 November 2020, 18:57:55
Zitat von: Toto1973 am 30 November 2020, 10:30:22
Hallo!
Ich habe da ein Problem mit einem DOIF.
Und zwar geht es darum, das ich den Kalender nutze, um meinen Adventsbeleuchtung zu steuern.
Im Device "BW_Feiertag" steht im Staus z.B. "URLAUB, 1.Advent"
Nun möchte ich, das mein Rolladen im Schlafzimmer um 21:30 Uhr dann zu geht, wenn Advent auf ja steht, Frühschuicht auf Früh und BW_Feiertag NICHT auf Urlaub steht.
Dazu habe ich die folgende Zeile gebastelt:
DOELSEIF ([21:30] and [?advent] eq "ja" and [BW_Feiertag] ne "URLAUB" and [?Schicht_dummy] eq "Frueh") (set sz_Weihnacht off)
Problem bei der Zeile ist jetzt, das diese nur Ausgeführt wird, wenn im Device "BW_Feiertag" im Status NUR "URLAUB" steht. Steht noch ein weiter Feiertag wie z.B. "1. Advent" dabei, triggert die Doif Zeile, was sie ja nicht soll.
Wie bekomme ich das richtig hin?

probiere mal:

DOELSEIF ([21:30] and [?advent] eq "ja" and substr([BW_Feiertag],0,6) ne "URLAUB" and [?Schicht_dummy] eq "Frueh") (set sz_Weihnacht off)
Titel: Antw:DOIF auf status der nicht zustimmt überprüfen
Beitrag von: Toto1973 am 01 Dezember 2020, 08:53:49
Nur mal zum Verständnis, finde es auf die Schnelle nicht, was bewirkt der Befehl substr([BW_Feiertag],0,6) ne "URLAUB"?

Ich werde testen und Bescheid geben.
Titel: Antw:DOIF auf status der nicht zustimmt überprüfen
Beitrag von: MadMax-FHEM am 01 Dezember 2020, 09:09:53
substr([BW_Feiertag],0,6) ne "URLAUB"

substr -> Teilstring

Anfangen bei 0

Länge: 6

Heißt: "schneidet" die ersten 6 Zeichen aus einem String...

Was ist "auf die Schnelle"?
Google: "Perl substr" -> https://perldoc.perl.org/functions/substr

Gruß, Joachim
Titel: Antw:DOIF auf status der nicht zustimmt überprüfen
Beitrag von: Toto1973 am 01 Dezember 2020, 23:49:36
Vielen Dank!
So wie das aussieht, klappt das Ganze so. Mal warten, ob es auf dauer funktioniert.
Titel: Antw:DOIF auf status der nicht zustimmt überprüfen
Beitrag von: MadMax-FHEM am 02 Dezember 2020, 00:10:45
Zitat von: Toto1973 am 01 Dezember 2020, 23:49:36
Vielen Dank!
So wie das aussieht, klappt das Ganze so. Mal warten, ob es auf dauer funktioniert.

Naja, solange halt URLAUB wenn vorhanden immer vorne dran steht...
Wenn das auch mal "durcheinander" sein kann, dann wird es wohl eher auch mal nicht gehen... ;)

Gruß, Joachim
Titel: Antw:DOIF auf status der nicht zustimmt überprüfen
Beitrag von: Toto1973 am 02 Dezember 2020, 09:47:59
Ja, das ist richtig!
Seltsamerweise steht "URLAUB" immer vorne, egal was ich sonst in den Kalender eintrage. Von daher sollte es so funktionieren!
Titel: Antw:DOIF auf status der nicht zustimmt überprüfen [gelöst]
Beitrag von: Per am 07 März 2021, 23:30:29
Ansonsten geht auch
[BW_Feiertag] =~ "URLAUB"
Dann ist die Reihenfolge egal.

Da du eh eine Zeit als Trigger hast, würde ich aber [?BW_Feiertag] schreiben.