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
!($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)
Warum nicht einfach != verwenden?
!$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)
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) && {...}
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
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" }}
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?
Wieder was gelernt, so geht es jetzt!
*23:00:00 {if (!$we && !($wday == 3)) { fhem "set LenovoYoga2Pro screen off" }}
Danke Euch!
Zitat von: heinzfo am 20 Juli 2016, 21:33:53
!= wie ist das gemeint?
Es gibt noch mehr Vergleichsoperatoren als ==
Und ergibt sich aus der "Übersetzung":
! dedeutet "Nicht"
= bedeutet "Gleich"
Ergibt : nicht gleich, oder ungleich :-)
Grüße Jörg
Gesendet von iPad mit Tapatalk
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
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
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
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.
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