DOIF mit mehreren Bedingungen

Begonnen von Tueftler1983, 29 Oktober 2015, 00:12:53

Vorheriges Thema - Nächstes Thema

Tueftler1983

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

igami

Es gilt:
and vor or
Du musst Klammern verwenden.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Tueftler1983

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?

kumue

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

igami

Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

errazzor

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?

Tueftler1983

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

igami

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.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Tueftler1983

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)

kumue

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)




gloob

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?
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

Tueftler1983

#11
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

Amenophis86

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.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Tueftler1983

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ß

igami

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.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED