FHEM Forum

FHEM => Automatisierung => Thema gestartet von: heinzfo am 20 Juli 2016, 18:22:16

Titel: Gibt es nicht am Freitag !$wday == 5
Beitrag von: heinzfo am 20 Juli 2016, 18:22:16
Hallo

In einem notify wollte ich , nicht am Freitag !$wday == 5 verwenden.
Ein Test zeigt das es so nicht geht.

Gibt es einen anderen Weg?

Grüße
Heinz
Titel: Antw:Gibt es nicht am Freitag !$wday == 5
Beitrag von: Otto123 am 20 Juli 2016, 18:26:47
!($wday == 5)
Also zumindest denke ich so, erst vergleichen dann negieren. Oder passiert das ohne Klammern auch?

Funktioniert bei mir {!($wday == 5)} liefert 1 in der Kommandozeile {!($wday == 3)} liefert null - es ist Mittwoch  8)
Titel: Antw:Gibt es nicht am Freitag !$wday == 5
Beitrag von: igami am 20 Juli 2016, 19:54:47
Warum nicht einfach != verwenden?
Titel: Antw:Gibt es nicht am Freitag !$wday == 5
Beitrag von: betateilchen am 20 Juli 2016, 20:23:25
!$wday negiert bereits den Wert, der in der Variablen steckt. An 6 von 7 Tagen wird daraus also eine Null. Und diese 0 wird danach gegen 5 verglichen... Super clever  8)
Titel: Antw:Gibt es nicht am Freitag !$wday == 5
Beitrag von: heinzfo am 20 Juli 2016, 21:33:53
Es passiert ohne Klammer auch.
Ja klar, habe es auch mit 3 Mittwoch getestet, letztendlich soll es der Freitag sein.
!= wie ist das gemeint?

Notify wird am Mittwoch ausgeführt, dass wollte ich nicht!
(!$we || !$wday == 3) && {...}

Notify wird auch am Mittwoch ausgeführt, das ist in Ordnung.
(!$we || !$wday == 5) && {...}




Titel: Antw:Gibt es nicht am Freitag !$wday == 5
Beitrag von: JoWiemann am 20 Juli 2016, 21:46:28
Lies doch bitte noch mal den Beitrag von Betateilchen und achte auf die Bindung der Operatoren:

!variable ist an variable gebunden
!() an den Ausdruck in der Klammer

Grüße Jörg
Titel: Antw:Gibt es nicht am Freitag !$wday == 5
Beitrag von: heinzfo am 20 Juli 2016, 22:05:55
Ich habe das getestet, löst auch am Mittwoch aus!
Was mache ich falsch?

*23:00:00 {if (!$we || !($wday == 3)) { fhem "set LenovoYoga2Pro screen off" }}
Titel: Antw:Gibt es nicht am Freitag !$wday == 5
Beitrag von: Otto123 am 20 Juli 2016, 22:11:57
Du änderst plötzlich Deine Aufgabe ohne zu beschreiben was Du willst!?
(!$we || !($wday == 3))

Nicht am Wochenende oder nicht am Mittwoch --> 1 oder 0 --> ist 1
Was willst Du erreichen?
Titel: Antw:Gibt es nicht am Freitag !$wday == 5
Beitrag von: heinzfo am 20 Juli 2016, 22:20:24
Wieder was gelernt, so geht es jetzt!

*23:00:00 {if (!$we && !($wday == 3)) { fhem "set LenovoYoga2Pro screen off" }}

Danke Euch!
Titel: Antw:Gibt es nicht am Freitag !$wday == 5
Beitrag von: igami am 21 Juli 2016, 05:55:50
Zitat von: heinzfo am 20 Juli 2016, 21:33:53
!= wie ist das gemeint?
Es gibt noch mehr Vergleichsoperatoren als ==
Titel: Antw:Gibt es nicht am Freitag !$wday == 5
Beitrag von: JoWiemann am 21 Juli 2016, 08:46:10
Und ergibt sich aus der "Übersetzung":

! dedeutet "Nicht"
= bedeutet "Gleich"

Ergibt : nicht gleich, oder ungleich :-)



Grüße Jörg

Gesendet von iPad mit Tapatalk
Titel: Antw:Gibt es nicht am Freitag !$wday == 5
Beitrag von: heinzfo am 21 Juli 2016, 08:49:47
Zitat von: JoWiemann am 21 Juli 2016, 08:46:10
Und ergibt sich aus der "Übersetzung":

! dedeutet "Nicht"
= bedeutet "Gleich"

Ergibt : nicht gleich, oder ungleich :-)



Grüße Jörg

Gesendet von iPad mit Tapatalk
Ja, so geht es auch hab's getestet, muss aber in Klammern stehen.
($wday != 5)

Gesendet von meinem GT-I9505 mit Tapatalk

Titel: Antw:Gibt es nicht am Freitag !$wday == 5
Beitrag von: JoWiemann am 21 Juli 2016, 09:27:32
Ja, auch hier gilt: Es gibt halt Bindungsregeln, wie in der Mathematik: Punkt vor Strich, Links nach Rechts.
Durch Klammern werden die Bindungsregeln übersteuert: Erst Klammern, dann ..


Grüße Jörg

Gesendet von iPad mit Tapatalk
Titel: Antw:Gibt es nicht am Freitag !$wday == 5
Beitrag von: Otto123 am 21 Juli 2016, 09:29:09
Bei mehr als zwei Vergleichsgrößen gilt: lieber ein Paar Klammern zuviel als ein Paar zuwenig  8)
Und die Sprache der LOGIK bezieht sich auf die EINS/WAHR und nicht auf die NULL.

Gruß Otto
Titel: Antw:Gibt es nicht am Freitag !$wday == 5
Beitrag von: marvin78 am 21 Juli 2016, 09:48:45
Hm. Das mit den Klammern würde ich so nicht unterschreiben. Zu viele Klammern verwirren nur und machen das Debugging schwer. Man sollte verstehen, was man da tut, dann weißt man auch, wie man klammern muss. Am besten hilft hier, die Bedingungen in einen Satz mit bekannten Elementen umzuwandeln, dann kommt man relativ schnell auf die richtige Logik.
Titel: Antw:Gibt es nicht am Freitag !$wday == 5
Beitrag von: JoWiemann am 21 Juli 2016, 09:57:53
Am Ende hilft die boolsche Algebra immer weiter: https://de.m.wikipedia.org/wiki/Boolesche_Algebra



Grüße Jörg

Gesendet von iPad mit Tapatalk