Hallo zusammen,
wieder mal ein leidiges DOIF Thema. ICh komme mit meiner DOIF einfach nicht weiter und weiß nicht wieso.
Ich habe zwei Smartphones meins und meiner Frau. Beide werden über di eFritzbox mit dem Presence Modul angefragt. Sollte dieses verfügbar sein bekommt es denn Status present.
Nun habe ich für mich und für meine Frau einen Roommate angelegt und möchte über ein DOIF den Status des Roommates entsprechende des Smartphones setzen.
Sprich wenn mein Smartphone online ist, dann ist rr_Eddie home, andernfalls absent.
so sieht meine DOIF aus aber es passiert nichts
Internals:
CFGFN
DEF ([Smartphone.Eddie] eq "present") (set rr_Eddie home) DOELSEIF ([Smartphone.Eddie] eq "absent" and [Smartphone.Eddie] ne "gone") (set rr_Eddie absent)
NAME SmartphoneEddieDI
NR 1325
NTFY_ORDER 50-SmartphoneEddieDI
STATE initialized
TYPE DOIF
Readings:
2016-05-02 16:39:05 state initialized
Condition:
0 InternalDoIf($hash,'Smartphone.Eddie','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "present"
1 InternalDoIf($hash,'Smartphone.Eddie','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "absent" and InternalDoIf($hash,'Smartphone.Eddie','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) ne "gone"
Devices:
0 Smartphone.Eddie
1 Smartphone.Eddie
all Smartphone.Eddie
Do:
0:
0 set rr_Eddie home
1:
0 set rr_Eddie absent
Helper:
globalinit 1
last_timer 0
sleeptimer -1
Internals:
0 Smartphone.Eddie:STATE
1 Smartphone.Eddie:STATE
all Smartphone.Eddie:STATE
Itimer:
Regexp:
All:
State:
Attributes:
Habt Ihr ein Tipp für mich vielen Dank
Gruß Eddie
and [Smartphone.Eddie] ne "gone")
gone gibt es im presence Modul nicht. Nur bei roommate.
Ups,
vielen Dank für den Tipp dass sollte eigentlich rr_Eddie heißen. Habe korrigiert, trotzdem keine Funktion
Internals:
CFGFN
DEF ([Smartphone.Eddie] eq "present") (set rr_Eddie home) DOELSEIF ([Smartphone.Eddie] eq "absent" and [rr_Eddie] ne "gone") (set rr_Eddie absent)
NAME SmartphoneEddieDI
NR 1325
NTFY_ORDER 50-SmartphoneEddieDI
STATE initialize
TYPE DOIF
Readings:
2016-05-02 17:17:14 state initialize
Condition:
0 InternalDoIf($hash,'Smartphone.Eddie','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "present"
1 InternalDoIf($hash,'Smartphone.Eddie','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "absent" and InternalDoIf($hash,'rr_Eddie','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) ne "gone"
Devices:
0 Smartphone.Eddie
1 Smartphone.Eddie rr_Eddie
all Smartphone.Eddie rr_Eddie
Do:
0:
0 set rr_Eddie home
1:
0 set rr_Eddie absent
Helper:
globalinit 1
last_timer 0
sleeptimer -1
Internals:
0 Smartphone.Eddie:STATE
1 Smartphone.Eddie:STATE rr_Eddie:STATE
all Smartphone.Eddie:STATE rr_Eddie:STATE
Itimer:
Regexp:
All:
State:
Attributes:
Nimm mal die and Bedingung raus. Die ist eh Unsinn. Ausserdem vereinfachen wir erstmal dadurch. Kenne mich leider nicht so sehr mit DOIF aus. Aber für mich sieht das gut aus.
Hi sorry dass ich mich jetzt erst melde.
Es funktioniert, der Code war richtig. Ich habe nur die ganze Zeit den state des Smartphones per setstate gesetzt und das hat scheinbar nicht richtig getriggert.
Kaum war ich daheim schon hat es alles richtig funktioniert.
Danke für Deine Hilfe
Gruß Eddie
Gerne. Und wie gesagt nimm das and gone raus. Das passt eh nicht.
Gone schaltet Dein roommate automatisch wenn du länger wie 30 Stunden absent bist.