Dummy Wert setzen erst wenn nach 5 min anderer Wert immer noch gleich ist

Begonnen von Charity, 18 März 2015, 13:18:35

Vorheriges Thema - Nächstes Thema

Charity

Ich würde gerne wenn das notify für mein Handy auf present ausgelöst wird, nach 5 min checken ob mein Handy immer noch present ist und erst dann einen Dummy Wert aktualisieren.

Meine Idee wäre gewesen, dass mit einem DOIF zu lösen, wie hier ->

define ntf_HomeComingRobertPresent notify Robert_Handy:present {\
fhem "define di_RobertDaheim DOIF ( [+00:05:00] and [Robert_Handy] eq "present" ) (set ComingHomeRobert home);;\
}


leider bekomme ich dabei im Log stets die Meldung ->

PERL WARNING: String found where operator expected at (eval 1536) line 2, at end of line
und
PERL WARNING: Bareword found where operator expected at (eval 1567) line 2, near ""define di_RobertDaheim DOIF ( [+00:05:00] and [Robert_Handy] eq "present"

Kann mir jemand sagen, wo ich meinen Fehler habe. Ich komm nicht drauf. Oder gibt es doch eine bessere Lösung für mein Problem ?

Danke


marvin78

Das ist eigentlich ein typischer Andwendungsfall für einen watchdog.

Charity


Damian

Zitat von: Charity am 18 März 2015, 13:18:35
Ich würde gerne wenn das notify für mein Handy auf present ausgelöst wird, nach 5 min checken ob mein Handy immer noch present ist und erst dann einen Dummy Wert aktualisieren.

Meine Idee wäre gewesen, dass mit einem DOIF zu lösen, wie hier ->

define ntf_HomeComingRobertPresent notify Robert_Handy:present {\
fhem "define di_RobertDaheim DOIF ( [+00:05:00] and [Robert_Handy] eq "present" ) (set ComingHomeRobert home);;\
}


leider bekomme ich dabei im Log stets die Meldung ->

PERL WARNING: String found where operator expected at (eval 1536) line 2, at end of line
und
PERL WARNING: Bareword found where operator expected at (eval 1567) line 2, near ""define di_RobertDaheim DOIF ( [+00:05:00] and [Robert_Handy] eq "present"

Kann mir jemand sagen, wo ich meinen Fehler habe. Ich komm nicht drauf. Oder gibt es doch eine bessere Lösung für mein Problem ?

Danke

dann eher so (ohne notify):

define di_RobertDaheim DOIF ( [Robert_Handy] eq "present" ) (set ComingHomeRobert home)
define di_RobertDaheim wait 300


Gruß

Damian

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

FHEMAN

Zitat von: Damian am 18 März 2015, 13:36:24
dann eher so (ohne notify):

define di_RobertDaheim DOIF ( [Robert_Handy] eq "present" ) (set ComingHomeRobert home)
define di_RobertDaheim wait 300


Gruß

Damian
Du meinst
attr di_RobertDaheim wait 300
oder?
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

Charity

Danke,

mit

define di_RobertDaheim DOIF ( [Robert_Handy] eq "present" ) (set ComingHomeRobert home)
attr di_RobertDaheim wait 300


schaltet der dummy dann auch nach 5 min in den richtigen Modus. Meine Frage ist nur, erfolgt hier nochmals eine Prüfung ob der Wert Robert_Handy auch immer noch present ist ?


Damian

Zitat von: Charity am 18 März 2015, 16:23:09
Danke,

mit

define di_RobertDaheim DOIF ( [Robert_Handy] eq "present" ) (set ComingHomeRobert home)
attr di_RobertDaheim wait 300


schaltet der dummy dann auch nach 5 min in den richtigen Modus. Meine Frage ist nur, erfolgt hier nochmals eine Prüfung ob der Wert Robert_Handy auch immer noch present ist ?

Wenn Robert_Handy den Zustand ändert, dann wird das Modul getriggert und wenn das innerhalb der 5 Minuten passiert, dann wird home nicht gesetzt.

Gruß

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