DOIF Zeitangabe in Bedingung ohne Trigger

Begonnen von kleineslichtHH, 20 November 2016, 20:50:47

Vorheriges Thema - Nächstes Thema

kleineslichtHH

Mein Versuch die Anwesenheit auf die Temperatur wirken zu lassen ohne das die Zeit getriggert wird ergibt folgenden Fehler

Zitatperl error in condition: ?(DOIF_time_once($hash,$hash->{timer}{0},$wday,"")-DOIF_time_once($hash,$hash->{timer}{1},$wday,"")) and ReadingValDoIf($hash,'Margarethe11','presence','','',AttrVal($hash->{NAME},'notexist',undef)) eq "present" and : Search pattern not terminated at (eval 63187) line 1.

folgender Code soll wirken:

(?([([Dummy_HausWerte:ZeitTag]+[00:05])]-[([Dummy_HausWerte:ZeitNacht]-[00:05])]) and [Haus:presence] eq "present" and ) (set Dummy_Status_Arbeitszimmer Anwesend)
DOELSE
(?([([Dummy_HausWerte:ZeitTag]+[00:05])]-[([Dummy_HausWerte:ZeitNacht]-[00:05])]) and [Haus:presence] eq "absent" and ) (set Dummy_Status_Arbeitszimmer Abwesend)


Aus der Commandref:
ZitatAnwendungsbeispiel: Licht soll zwischen 06:00 und 10:00 angehen, getriggert wird nur durch den Taster nicht um 06:00 bzw. 10:00 Uhr

define di_motion DOIF ([?06:00-10:00] and [button])(set lamp on-for-timer 600)
attr di_motion do always

was habe ich falsch gemacht?

kumue

Zitat von: kleineslichtHH am 20 November 2016, 20:50:47
(?([([Dummy_HausWerte:ZeitTag]+[00:05])]-[([Dummy_HausWerte:ZeitNacht]-[00:05])]) and [Haus:presence] eq "present" and ) (set Dummy_Status_Arbeitszimmer Anwesend)
DOELSE
(?([([Dummy_HausWerte:ZeitTag]+[00:05])]-[([Dummy_HausWerte:ZeitNacht]-[00:05])]) and [Haus:presence] eq "absent" and ) (set Dummy_Status_Arbeitszimmer Abwesend)


Zitat] eq "present" and )
und
Zitat] eq "absent" and )
soll nach den beiden and noch was kommen ?
Wenn nein, dann sind sie überflüssig.
Nach einem DOELSE folgt eigentlich gleich der Ausführungsteil, also (set irgendwas) und kein keine Prüfung auf Bedingungen.
Wenn Du nochmal auf Bedingungen prüfst, dann DOELSEIF usw...

Ellert

Zitat von: kleineslichtHH am 20 November 2016, 20:50:47
Mein Versuch die Anwesenheit auf die Temperatur wirken zu lassen ohne das die Zeit getriggert wird ergibt folgenden Fehler

folgender Code soll wirken:

(?([([Dummy_HausWerte:ZeitTag]+[00:05])]-[([Dummy_HausWerte:ZeitNacht]-[00:05])]) and [Haus:presence] eq "present" and ) (set Dummy_Status_Arbeitszimmer Anwesend)
DOELSE
(?([([Dummy_HausWerte:ZeitTag]+[00:05])]-[([Dummy_HausWerte:ZeitNacht]-[00:05])]) and [Haus:presence] eq "absent" and ) (set Dummy_Status_Arbeitszimmer Abwesend)


Aus der Commandref:
was habe ich falsch gemacht?

Und schau mal, wo das ? in dem von Dir zitierten Auszug aus der Commmandref sitzt und vergleiche, wo Du es hingeschrieben hast.

kleineslichtHH

ich habe es mal angepasst...es waren einfach zu viele Klammern für meinen kleinen Kopf  ::)

(([?([Dummy_HausWerte:ZeitTag]+[00:05])]-[([Dummy_HausWerte:ZeitNacht]-[00:05])]) and [Haus:presence] eq "present") (set Dummy_Status_Arbeitszimmer Anwesend)
DOELSEIF
(([?([Dummy_HausWerte:ZeitTag]+[00:05])]-[([Dummy_HausWerte:ZeitNacht]-[00:05])]) and [Haus:presence] eq "absent") (set Dummy_Status_Arbeitszimmer Abwesend)


mal gucken, ob es so funktioniert

l2r

warum willst du dass die Zeit nicht triggert? Der Sinn erschließt sich mir nicht so ganz.

Angenommen Haus geht außerhalb des Definierten Zeitraums auf presence. Bleibt auf presensce und überschreitet die Tag-Zeit, beispielsweise 8:00 Uhr. Wenn [Haus:presence] jetzt nicht wieder neu triggert, dann wird der Anwesenheitsstatus nicht gesetzt. Ist das so gewollt?

Setzt du die Zeit triggernt, dann wird um 8:00 Uhr nochmal geprüft und der Status passend gesetzt. 8:00 Uhr ist ein Beispiel für die Auswertung aus deinen Zeit-Berechnungen.

Gruß Michael
Wissen ist Macht.
Ich weiß nix.
Macht nix.

kleineslichtHH

ich meine ich wollte das so gestalten, falls ich vorher schonmal auf "Comfort" geschaltet habe...mittlerweile sind da so viele Gedanken eingeflossen und noch viel mehr wieder verworfen worden  ::)