Hallo,
ich bastel zur Zeit an einer möglichkeit, abhängig vom Anwesenheitsstauts zweier Mobiltelefone, eine Lichtquelle über FHEM einschalten zu lassen.
Leider komme ich nicht weiter.
Ich habe es bisher so gelöst:
2 Fritzboxen im Netzwerk werden über die 99myUtils abgefragt nach den MAC-Adressen der beiden Smartphones, daraus ergibt sich der Status für 1 bzw. 2 (die beiden Handys) von absent oder present.
Dieser status wird von einem DOIF abgefragt und schreibt wiederum über setstate den status absent in einen Dummy.
Hinzu kommt noch die verarbeitung von sunset über Twilight, hier wird mittels eines AT der setstate eines weiteren Dummy gesetzt.
Dies in kombination wird von einem DOIF angefragt, wenn also um bspw. 20:10:17 sunset eintritt, der Dummy "Dunkel" den state "ja" bekommt, der Dummy "Anwesenheit" den status "absent" hat (weil beide Handys nicht im Netzwerk sind) soll der zweite DOIF eine Funksteckdose einschalten.
Leider komme ich bei dem DOIF für die Anwesenheit der beiden Handys nicht weiter.
([1:state] eq "absent" and [2:state] eq "absent") (setstate Anwesenheit absent)
Der DOIF bleibt im state cmd2 stehen, ich vermute ich habe in der DEF einen Fehler.
Was mache ich hier falsch ??
Gruß
Bitte poste das komplette DOIF und zwar mit list DoIFNAME
Bei Deinen presence Dummys würde ich eine structure bilden dann musste nicht and abfragen.
Bei mir wird mit list DOIF NAME nichts angezeigt.
Oben in der schwarze Zeile im Browser in gleicher Höhe wie das Haus ist schreibst Du bitte
list NAMEDESDOIF
Wobei NAMEDESDOIF bitte zu ersetzen ist mit dem Wort wie Dein DOIF heisst.
Grüße
Ahh,
jetzt hab ich es verstanden:
Internals:
CFGFN
DEF ([Veit_G3:state] eq "absent" and [Biene:state] eq "absent") (setstate Anwesenheit absent)
NAME Einbrecher
NR 364
NTFY_ORDER 50-Einbrecher
STATE cmd_1
TYPE DOIF
Readings:
2016-04-06 08:51:35 Device Biene
2016-04-06 08:51:35 cmd_event Biene
2016-04-06 08:51:35 cmd_nr 1
2016-04-06 08:51:35 e_Biene_state absent
2016-04-04 05:36:31 e_Veit_G3_state absent
2016-04-06 08:51:35 state cmd_1
Condition:
0 ReadingValDoIf($hash,'Veit_G3','state','','',AttrVal($hash->{NAME},'notexist',undef)) eq "absent" and ReadingValDoIf($hash,'Biene','state','','',AttrVal($hash->{NAME},'notexist',undef)) eq "absent"
Devices:
0 Veit_G3 Biene
all Veit_G3 Biene
Do:
0:
0 setstate Anwesenheit absent
1:
Helper:
event absent
globalinit 1
last_timer 0
sleeptimer -1
timerdev Biene
timerevent absent
triggerDev Biene
timerevents:
absent
triggerEvents:
absent
Internals:
Itimer:
Readings:
0 Veit_G3:state Biene:state
all Veit_G3:state Biene:state
Regexp:
0:
All:
State:
Trigger:
Attributes:
room 5.0_FritzBox
Ich sehe nur ein cmd1. Wo soll da das zweite cmd herkommen wenn du nur eine Bedingung plus Kommand definierst.
Und noch mal meine Empfehlung. Bilde mit den beiden presence Devices eine Structure.
ZitatWo soll da das zweite cmd herkommen
DOIF mit einer Bedingung und ohne "do always"wechselt in den Status cmd_2, wenn die Bedingung nicht wahr ist.
Sicher? Ich bin mir unsicher, kann mich aber erinnern das ohne () nach einem ELSE kein zweiter cmd kommt.
Und bei Dir bleibt er im cmd2 und wechselt nicht mehr zurück?
Und warum gibt es kein present als zweite Bedingung? Oder ist nur absent fur Dich interessant?
Zitat von: CoolTux am 06 April 2016, 18:54:28
Sicher? Ich bin mir unsicher, kann mich aber erinnern das ohne () nach einem ELSE kein zweiter cmd kommt.
Und bei Dir bleibt er im cmd2 und wechselt nicht mehr zurück?
Und warum gibt es kein present als zweite Bedingung? Oder ist nur absent fur Dich interessant?
Zitat aus der Commandref:
ZitatZu beachten ist, dass bei do always der Zustand "cmd_2" bei Nichterfüllung der Bedingung nicht gesetzt wird. Möchte man dennoch bei Nichterfüllung der Bedingung einen Zustandswechsel auf "cmd_2" erreichen, so muss man am Ende seiner Definition DOELSE ohne weitere Angaben setzen. Wenn das Attribut do always nicht gesetzt ist, wird dagegen bei Definitionen mit einer einzigen Bedingung, wie im obigen Beispiel, der Zustand "cmd_2" bei Nichterfüllung der Bedingung automatisch gesetzt. Ohne diesen automatischen Zustandswechsel, wäre ansonsten die Definition nicht sinnvoll, da der Zustand "cmd_1" ohne do always nur ein einziges Mal ausgeführt werden könnte.
Gruß
Damian
Ich danke Dir. Das wäre aber nicht nötig gewesen. Wollte mich noch Kind tun, bin aber noch mit Handy in der Badewanne da war es blöd ;D
Aber DANKE
Hi,
ka - mich interessiert nur absent.
Wenn das STRUCTURE, welches ich für die beiden Handys gebildet habe, den state absent einnimmt und es draußen Dunkel ist, soll das DOIF einen aktor schalten.
Daher habe ich diese beiden bedingungen.
Ich hab einiges probiert, ich bekomm es aber nicht hin.
Das STRUCTURE funktioniert, das DOIF jedoch nicht.
Gruß