FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Tueftler1983 am 29 Oktober 2015, 00:12:53

Titel: DOIF mit mehreren Bedingungen
Beitrag von: Tueftler1983 am 29 Oktober 2015, 00:12:53
Hallo ich würde gerne das Unser MediaPC sich einschaltet wenn 1. Das Handy meiner Frau oder meinst Zuhause ist und 2. Nur in der Zeit zwischen 7:00 Uhr und 23:00 Uhr

Mein versuch der Definition:

define di_MediaPC DOIF ([HolgerS5] eq "present" or [NadjaS4] eq "present" and [6:30-23:00]) (set MediaPC on )DOELSE (set MediaPC off)

Problem: zum testen hatte ich mein WLAN aus und habe dann innerhalb der Schalt Zeit bei meiner Frau das WLAN ein und ausgeschaltet ergebnis: PC Startet und fährt Herunter wie es soll...
Super dachte ich, aber...
Um ca 23:50 Uhr schalte ich das WLAN an meinem Handy wieder an und was geschieht... der MediaPC startet. Obwohl er das eigentlich ja nicht darf.

Woran liegt es? Wo habe ich den Fehler in der Definition?

Danke euch
Titel: Antw:DOIF mit mehreren Bedingungen
Beitrag von: igami am 29 Oktober 2015, 06:16:58
Es gilt:
and vor or
Du musst Klammern verwenden.
Titel: Antw:DOIF mit mehreren Bedingungen
Beitrag von: Tueftler1983 am 29 Oktober 2015, 06:51:24
Aha und wie mache ich das? So?
define di_MediaPC DOIF ([HolgerS5] eq "present" or [NadjaS4] eq "present") and(( [6:30-23:00])) (set MediaPC on )DOELSE (set MediaPC off)

Oder wie muss ich das machen?
Titel: Antw:DOIF mit mehreren Bedingungen
Beitrag von: kumue am 29 Oktober 2015, 07:04:01
define di_MediaPC DOIF ([?06:30-23:00] and ([HolgerS5] eq "present" or [NadjaS4] eq "present")) (set MediaPC on ) DOELSE (set MediaPC off)

...wäre mein Ansatz
Titel: Antw:DOIF mit mehreren Bedingungen
Beitrag von: igami am 29 Oktober 2015, 09:05:19
Zitat von: Tueftler1983 am 29 Oktober 2015, 06:51:24
Oder wie muss ich das machen?
Statt (a+b*c) eben ((a+b)*c).
Titel: Antw:DOIF mit mehreren Bedingungen
Beitrag von: errazzor am 29 Oktober 2015, 09:37:51
Zitat von: kumue am 29 Oktober 2015, 07:04:01
define di_MediaPC DOIF ([?06:30-23:00] and ([HolgerS5] eq "present" or [NadjaS4] eq "present")) (set MediaPC on ) DOELSE (set MediaPC off)

...wäre mein Ansatz

Weil ich das neulich auch erst gelernt habe versuche ich mich dazu einer kurzen Erklärung:

Es wird nur auf "HolgerS5" und "NadjaS4" getriggert (Statusänderung) und die Uhrzeit wird nur als Bedingung genommen (daher das "?" vor der Uhrzeit).

Würde es in diesem Beispiel aber nicht auch ohne doppelte Klammer funktionieren?
Titel: Antw:DOIF mit mehreren Bedingungen
Beitrag von: Tueftler1983 am 29 Oktober 2015, 10:45:44
Okay das werde ich dann gleich mal testen. Jetzt habe ich noch eine Lampe die einmal Morgens und einmal abends ein bzw ausgeschaltet wird. Wird das dann so gemacht?

define di_Vetriene DOIF ([?06:30-09:00] or [?17:00-22:00] and ([HolgerS5] eq "present" or [NadjaS4] eq "present")) (set Vetriene on ) DOELSE (set Vetriene off)

oder wieder anders
Titel: Antw:DOIF mit mehreren Bedingungen
Beitrag von: igami am 29 Oktober 2015, 12:35:42
Zitat von: Tueftler1983 am 29 Oktober 2015, 10:45:44
oder wieder anders
Wieder Anders, es heißt nämlich Vitrine mit i und ohne ie :P

Die Beiden Uhrzeiten musst du aber noch klammern, sonst reicht bei einem Trigger, dass du im Zeitraum bist.
Titel: Antw:DOIF mit mehreren Bedingungen
Beitrag von: Tueftler1983 am 29 Oktober 2015, 13:01:14
Also so

define di_Vitrine DOIF ([?06:30-09:00] or [?17:00-22:00])and ([HolgerS5] eq "present" or [NadjaS4] eq "present")) (set Vitrine on ) DOELSE (set Vitrine off)
Titel: Antw:DOIF mit mehreren Bedingungen
Beitrag von: kumue am 29 Oktober 2015, 13:37:18
define di_Vitrine DOIF ([?06:30-09:00] or [?17:00-22:00])and ([HolgerS5] eq "present" or [NadjaS4] eq "present")) (set Vitrine on ) DOELSE (set Vitrine off)

fehlt da nicht eine Klammer (  gleich zu Beginn...?

also

define di_Vitrine DOIF (([?06:30-09:00] or [?17:00-22:00])and ([HolgerS5] eq "present" or [NadjaS4] eq "present")) (set Vitrine on ) DOELSE (set Vitrine off)



Titel: Antw:DOIF mit mehreren Bedingungen
Beitrag von: gloob am 29 Oktober 2015, 15:23:28
Wäre es aber nicht sinnvoller wenn man auf das Event für die Zustandsänderung reagieren würde:

define di_Vitrine DOIF (([?06:30-09:00] or [?17:00-22:00]) and ([HolgerS5:?present] or [NadjaS4:?present])) (set Vitrine on ) DOELSE (set Vitrine off)

HolgerS5:?present reagiert doch nur auf die Änderung auf present oder?
Titel: Antw:DOIF mit mehreren Bedingungen
Beitrag von: Tueftler1983 am 29 Oktober 2015, 23:08:31
Hallo also mit dem MediaPC funktioniert so nicht der PC schaltet nicht um 23:00 Uhr aus

Woran liegt es an den ?

ANTWORT ja habe das ? Entfernt und die Zeit auf 23:00 Uhr gesetzt und siehe da er fährt runter
Titel: Antw:DOIF mit mehreren Bedingungen
Beitrag von: Amenophis86 am 29 Oktober 2015, 23:21:26
Mal vorne Weg Tueftler 1983 gewöhn dir bitte an, dass du Codes in Codetags schreibst. Das ist das Symbol mit der Raute beim Posten. Das macht das Lesen wesentlich einfacher. Mehr dazu hier: http://forum.fhem.de/index.php/topic,16311.0.html

Dann zu deinem ersten DOIF, hast du den Code so angepasst:


define di_MediaPC DOIF (([HolgerS5] eq "present" or [NadjaS4] eq "present") and [6:30-23:00]) (set MediaPC on )DOELSE (set MediaPC off)


Wenn ja und er wirklich um 23:00 Uhr nicht schaltet, dann poste mal bitte die komplette Info des DOIF. Und bitte dies auf jeden Fall in Code Tags setzen.


Zu deinem zweiten DOIF, das sollte so definiert werden:

define di_Vitrine DOIF (([?06:30-09:00] or [?17:00-22:00])) and ([HolgerS5] eq "present" or [NadjaS4] eq "present")) (set Vitrine on ) DOELSE (set Vitrine off)

(Auf deine aktuelle Schreibweise von Vitrine achten ;) )

Allerdings wird durch die ? nicht bei der Uhrzeit getriggert. Das heißt, dass wenn ihr um 06:29 Uhr Zuhause seid (oder einer von euch ist) es um 06:30 Uhr NICHT angeschaltet wird. Vitrine wird nur eingeschaltet, wenn in dem bestimmten Zeitraum jemand nachhause kommt. Weiterhin wird auch weder um 09:00 Uhr noch um 22:00 Uhr die Vitrine ausgeschaltet, sondern nur, wenn in dem Zeitraum keiner mehr zuhause ist. Daher würde ich die ? weglassen. Außer es ist so gewollt.
Titel: Antw:DOIF mit mehreren Bedingungen
Beitrag von: Tueftler1983 am 30 Oktober 2015, 11:49:33
Hallo und danke für die Hinweise natürlich soll auf jedenfalls zu den Zeiten geschaltet werden die ich vorgeben und zusätzlich soll abgeschaltet werden wenn keiner Zuhause ist in den einschaltZeiten. Und Eingeschaltet werden wenn zu den einschaltzeiten jemand nach hause kommt. Wenn jemand nach hause kommt zu einer Zeit wo die Geräte aus sein sollen vom Zeitplan soll natürlich auch nicht Eingeschaltet werden.
Hoffe das so mein Anliegen klar ist.
Und hier die derzeitigen Codes die bis jetzt auch gut laufen.

define di_MediaPC DOIF ([06:30-23:10] and ([HolgerS5] eq "present" or [NadjaS4] eq "present")) (set MediaPC on ) DOELSE (set MediaPC off)
UND
define di_Vetriene DOIF ([06:30-09:00] or [17:00-22:00] and ([HolgerS5] eq "present" or [NadjaS4] eq "present")) (set Vetriene on ) DOELSE (set Vetriene off)

Wenn ich mit (( an Anfang arbeite meckert fhem über die Klammer Setzung
Lieben gruß
Titel: Antw:DOIF mit mehreren Bedingungen
Beitrag von: igami am 30 Oktober 2015, 11:58:41
Zitat von: Tueftler1983 am 30 Oktober 2015, 11:49:33
Wenn ich mit (( an Anfang arbeite meckert fhem über die Klammer Setzung
Klammern treten auch immer Paarweise auf.