Hauptmenü

Warum löst dieses DOIF aus?

Begonnen von RitterSport, 21 Februar 2016, 10:56:37

Vorheriges Thema - Nächstes Thema

RitterSport

Ein eigentlich recht simples DOIF welches bei Eintreten von dem Event "set Anwesenheitsstatus Home" und dem Zeitrahmen 9:30 und sunset auslösen sollte.
Aber er löst immer um 9:30 aus, obwohl das Event nicht eintritt, warum?

([Anwesenheitsstatus:?Home] and [09:30-{sunset_abs(2400,"","19:30")}] )
(set Rolladen_alle Up,set TeleBotMain message @****** @****** Alle Rolläden hoch da Zustandswechsel von Away/Urlaub auf Home)

attr do always


Readings
Device                                           Anwesenheitsstatus            2016-02-19 19:26:34
cmd_event                                          timer_1                     2016-02-21 09:30:00
cmd_nr                                             1                           2016-02-21 09:30:00
e_Anwesenheitsstatus_events                        Home                        2016-02-19 19:26:34
state                                              cmd_1                       2016-02-21 09:30:00
timer_1_c1                                      22.02.2016 09:30:00               2016-02-21 09:30:00
timer_2_c1                                      21.02.2016 19:09:48               2016-02-20 19:09:48

Bartimaus

Probier mal:

([Anwesenheitsstatus:?Home] and [?09:30-{sunset_abs(2400,"","19:30")}] )
(set Rolladen_alle Up,set TeleBotMain message @****** @****** Alle Rolläden hoch da Zustandswechsel von Away/Urlaub auf Home)

attr do always


LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Puschel74

Wenn ich mir die deutsche commandref zu DOIF anschaue sollte mMn das DOIF immer zwischen 09:30-sunset_abs(.........) triggern wenn
dein Anwesenheitsstatus Home ist - und das wird er vermutlich sein wenn du zuhause bist  ;)
Das ? vor Home sagt doch das der Status nur abgefragt wird aber nicht triggert - also bleibt nur die Uhrzeit zum triggern.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Damian

Zitat von: Puschel74 am 21 Februar 2016, 11:15:58
Wenn ich mir die deutsche commandref zu DOIF anschaue sollte mMn das DOIF immer zwischen 09:30-sunset_abs(.........) triggern wenn
dein Anwesenheitsstatus Home ist - und das wird er vermutlich sein wenn du zuhause bist  ;)
Das ? vor Home sagt doch das der Status nur abgefragt wird aber nicht triggert - also bleibt nur die Uhrzeit zum triggern.

Das Fragezeichen vor Home bedeutete Event-Trigger, diese Syntax gilt zwar immer noch, war allerdings verwirrend (wie man an deiner Antwort merkt) und wurde durch die neue mit Anführungszeichen ersetzt: hier wäre es dann [Anwesenheitsstatus:"Home"]. Nicht triggern bedeutet ein Fragezeichen unmittelbar hinter der Klammer, daher ist der Vorschlag von Bartimaus eher richtig. Allerdings ist [Anwesenheitsstatus:?Home] ein Event-Trigger, der nur zum Zeitpunkt des Triggerns wahr ist und sonst nicht, daher kann die ganze Bedingung nur um 9:30 Uhr wahr sein, wenn auch um diese Zeit Anwesenheitsstatus triggert.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Puschel74

Dann hab ich das
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)
aus der commandref falsch verstanden.
triggern soll button aber NICHT die Uhrzeit daher das ? vor der Uhrzeit.

Würde hier ja bedeuten das Home nicht triggert weil ein ? davor also bleibt als trigger nur die Uhrzeit.

Sorry aber mit DOIF werde ich wohl nicht so schnell warm werden  8)
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Damian

Zitat von: Puschel74 am 21 Februar 2016, 12:52:50
Dann hab ich dasaus der commandref falsch verstanden.
triggern soll button aber NICHT die Uhrzeit daher das ? vor der Uhrzeit.

Würde hier ja bedeuten das Home nicht triggert weil ein ? davor also bleibt als trigger nur die Uhrzeit.

Sorry aber mit DOIF werde ich wohl nicht so schnell warm werden  8)

Deswegen ist das Komma für EVENT-Regexp deprecated und soll dafür nicht mehr benutzt werden. Dann kann man grundsätzlich sagen: ? = Abfrage ohne Trigger.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

RitterSport

#6
Verwirrt mich jetzt....
Es funktionierte bisher wie es angedacht war.

Es soll in dem Zeitrahmen 9:30 bis sunset (aber maximal 19:30) ausgelöst werden , wenn das Ereignis"set Anwesenheitsstatus Home" erfolgt.
Muss ich dafür nun "Home" statt ?Home schreiben?
Gerade getestet, das es so geht. Nur eben auch das er jetzt 2 mal ausgelöst hat um 9:30 obwohl nicht das Event Home getriggert werden konnte.

Grüße

Damian

Zitat von: RitterSport am 21 Februar 2016, 18:06:33
Verwirrt mich jetzt....
Es funktionierte bisher wie es angedacht war.

Es soll in dem Zeitrahmen 9:30 bis sunset (aber maximal 19:30) ausgelöst werden , wenn das Ereignis"set Anwesenheitsstatus Home" erfolgt.
Muss ich dafür nun "Home" statt ?Home schreiben?

Grüße

Es sollte alles funktionieren wie bisher. Zukünftig solltest du aber statt [Anwesenheitsstatus:?Home] [Anwesenheitsstatus:"Home"] angeben.

[Anwesenheitsstatus:Home] wäre nicht das, was du möchtest, denn dann wird das Reading abgefragt und das wird mit Sicherheit um 9:30 wahr sein, wenn es nicht leer ist.
Gruß
Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

RitterSport

Zitat von: Damian am 21 Februar 2016, 18:12:19
Es sollte alles funktionieren wie bisher. Zukünftig solltest du aber statt [Anwesenheitsstatus:?Home] [Anwesenheitsstatus:"Home"] angeben.

[Anwesenheitsstatus:Home] wäre nicht das, was du möchtest, denn dann wird das Reading abgefragt und das wird mit Sicherheit um 9:30 wahr sein, wenn es nicht leer ist.
Gruß
Damian

Nicht ganz, er löst ja auch einfach um 9:30 aus obwohl das Event Home nicht erfolgt ist

Damian

Zitat von: RitterSport am 21 Februar 2016, 18:14:53
Nicht ganz, er löst ja auch einfach um 9:30 aus obwohl das Event Home nicht erfolgt ist
Bei mir nicht, ich habe es vorhin nachgestellt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

RitterSport

Device

Anwesenheitsstatus   2016-02-21 17:55:28   
cmd_event   Anwesenheitsstatus  2016-02-21 17:55:28
cmd_nr  1   2016-02-21 17:55:28
e_Anwesenheitsstatus_events  Home  2016-02-21 17:55:28
timer_1_c1     22.02.2016       09:30:00    2016-02-21 09:30:00
timer_2_c1     21.02.2016      19:09:48    2016-02-20 19:09:48


Wenn es in dem genannten Zeitrahmen ist und das Event erfolgt, dann sehen die Readings wie in diesem Post aus. Es funktioniert.

Warum löst er um 9.30 aus wie im ersten Post , dort war es das cmd_event timer , jetzt ist es das cmd_event Anwesenheitsstatus

Damian

Zitat von: RitterSport am 21 Februar 2016, 18:25:23
Device

Anwesenheitsstatus   2016-02-21 17:55:28   
cmd_event   Anwesenheitsstatus  2016-02-21 17:55:28
cmd_nr  1   2016-02-21 17:55:28
e_Anwesenheitsstatus_events  Home  2016-02-21 17:55:28
timer_1_c1     22.02.2016       09:30:00    2016-02-21 09:30:00
timer_2_c1     21.02.2016      19:09:48    2016-02-20 19:09:48


Wenn es in dem genannten Zeitrahmen ist und das Event erfolgt, dann sehen die Readings wie in diesem Post aus. Es funktioniert.

Warum löst er um 9.30 aus wie im ersten Post , dort war es das cmd_event timer , jetzt ist es das cmd_event Anwesenheitsstatus
Das möchte ich mal sehen. Du kannst die Startzeit zum Testen anpassen und ein list machen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

RitterSport

Danke schonmal Damian. Aber was möchtest du genau sehen?
Beide Fälle sind jeweils im ersten Post sowie im letzten Post.
Definitiv war es die 9:30 die das DOIF ausgelöst haben.....gestern und heute, zusehen am
cmd_event                                          timer_1                     2016-02-21 09:30:00

Ich habe ein DOIF mal nachgebaut, auch getestet mit dem vorgeschlagenen ? vor der Uhrzeit.
Den Fehler kann auch nicht Reproduzieren.

Damian

Zitat von: RitterSport am 21 Februar 2016, 20:15:37
Danke schonmal Damian. Aber was möchtest du genau sehen?
Beide Fälle sind jeweils im ersten Post sowie im letzten Post.
Definitiv war es die 9:30 die das DOIF ausgelöst haben.....gestern und heute, zusehen am
cmd_event                                          timer_1                     2016-02-21 09:30:00

Ich habe ein DOIF mal nachgebaut, auch getestet mit dem vorgeschlagenen ? vor der Uhrzeit.
Den Fehler kann auch nicht Reproduzieren.

Ein list beinhaltet viel mehr (interne) Informationen als du gepostet hast.

Wie gesagt, ich kann es mir nicht vorstellen, denn ein Trigger ist nur zum Triggerzeitpunkt wahr und sonst nicht, dann müsste schon der Perl-Interpreter kaputt sein, wovon wir jetzt mal nicht ausgehen, denn der wertet die Bedingung aus.


Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Zitat von: Damian am 21 Februar 2016, 20:23:00
Ein list beinhaltet viel mehr (interne) Informationen als du gepostet hast.

Wie gesagt, ich kann es mir nicht vorstellen, denn ein Trigger ist nur zum Triggerzeitpunkt wahr und sonst nicht, dann müsste schon der Perl-Interpreter kaputt sein, wovon wir jetzt mal nicht ausgehen, denn der wertet die Bedingung aus.

Edit: Welche Version benutzt du denn?
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF