Hi zusammen,
irgendwie stehe ich mal wieder auf dem Schlauch. Ich verwende das FritzBox Modul und würde gerne mein Handy überwachen.
Sämtliche Fritz Repeater und die Fritzbox habe ich angelegt und bekomme die netsprechenden Readings.
Nun habe ich ein Test-DOIF definiert:
([fritz.repeater:mac_12_34_56_78_AA_AA] eq ".*WLAN.*")(set HandyTobi EG)
Melde ich mein Handy an, bekomme ich im Reading angezeigt:
e_fritz.repeater_mac_28_5A_EB_C9_E2_A0 HandyTobi (WLAN, 0 / 0 Mbit/s, 44)
Aber so klappt es aktuell noch nicht. Habe auch versucht das ganze per ReadingsVal zu checken, aber auch ohne Erfolg:
define di_HandyTobi DOIF ([ReadingsVal("Fritz.repeater", "mac_28_5A_EB_C9_E2_A0")] eq ".*WLAN.*") (set HandyTobi OG)
Hat noch jemand einen Tipp für mich, was ich falsch machen könnte?
Danke & Gruß,
Tobi
Ich habe das so gelöst:
([Fritzbox:?mac_9C_35_EB_9D_7F_91])
(
set Handy_Patrick present, msginfo Patricks Handy ist verbunden!
)
DOELSE
(
set Handy_Patrick absent, msginfo Patricks Handy ist nicht verbunden!
)
Hi,
danke. Keine schlechte Idee, aber wenn man mehrere Fritz Geräte hat, erscheint das MAC Reading in jedem.
Da ich gerne auch wissen würde, mit welchem Repeater/Fritzbox ich verbunden bin, bringt mich das so nicht weiter :(
Gruß,
Tobi
Dann könntest Du mit einer anderen Form der Eventabfrage im DOIF arbeiten
["Fritzbox1|Fritzbox2|Fritzbox3:mac_9C_35_EB_9D_7F_91"]
$DEVICE liefert Dir den Gerätenamen.
Siehe http://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung_ueber_Auswertung_von_Events
Hallo zusammen,
dass mit derr Anwesenheitserkennung per Etage habe ich folgendermaßen gelöst:
define di_HandySandra DOIF ([fritz.repeater:"mac_xxxx:.*WLAN.*"]) (set HandySandra EG) DOELSEIF ([FritzBox:"mac_xxxx:.*WLAN.*"]) (set HandySandra OG) DOELSEIF ([RepeaterSchlafi:"mac_xxxx:.*WLAN.*"]) (set HandySandra DG) DOELSE (set HandySandra abwesend)
Das funktioniert einwandfrei. Dann habe ich doif aufstehen und schlafen definiert.
Hier würde ich ganz gerne nur die Tür ab/auf zu schließen, wenn sie es nicht schon ist ;)
Allerdings scheine ich da einen Denkfehler im DOIF zu haben? attr repeatsame hat auch nicht wirklich geholfen...
define di_aufstehen DOIF ([06:00-09:00] and ([eg_fl_door] ne "unlocked.*") and (([HandyTobi] eq "OG") or ([HandySandra] eq "OG"))) (set eg_fl_door unlock)
define di_schlafen DOIF ([20:00-03:00] and ([eg_fl_door] ne "locked.*") and (([HandyTobi] eq "DG") or ([HandySandra] eq "DG"))) (set eg_fl_door lock)
Danke & Gruß,
Tobi
Zuviele runde Klammern, nur die Roten sind notwendig. Zusätzlich würde ich das 2. DOIF in einen DOELSEIF-Zweig setzen.
Zitat([06:00-09:00] and ([eg_fl_door] ne "unlocked.*") and (([HandyTobi] eq "OG") or ([HandySandra] eq "OG")))
Dadurch wird das Problem wohl nicht gelöst, es wird aber übersichtlicher.
Mit einem Listing des DOIF, gäbe es etwas mehr Informationen zur Fehlereingrenzung.
Wie verhält sich das DOIF genau? Was löst wann aus? Welche Eventhäufigkeit haben die Telefone?
Die Oder-Verknüpfung könnte das Problem sein, vielleicht auch ein fehlendes Attribut.
Hier das list:
Internals:
CFGFN FHEM/anwesenheit_neu.cfg
DEF ([06:00-09:00] and ([eg_fl_door] ne "unlocked.*") and (([HandyTobi] eq "OG") or ([HandySandra] eq "OG"))) (set eg_fl_door unlock)
NAME di_aufstehen
NR 718
NTFY_ORDER 50-di_aufstehen
STATE cmd_2
TYPE DOIF
Readings:
2016-07-21 19:16:57 Device HandySandra
2016-07-21 06:00:08 cmd 2
2016-07-21 06:00:08 cmd_event eg_fl_door
2016-07-21 06:00:08 cmd_nr 2
2016-07-21 19:16:57 e_HandySandra_STATE abwesend
2016-07-21 07:56:55 e_HandyTobi_STATE abwesend
2016-07-21 19:12:38 e_eg_fl_door_STATE unlocked (uncertain)
2016-07-21 06:00:08 state cmd_2
2016-07-21 09:00:00 timer_1_c1 22.07.2016 06:00:00
2016-07-21 09:00:00 timer_2_c1 22.07.2016 09:00:00
Condition:
0 DOIF_time($hash,$hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"") and (InternalDoIf($hash,'eg_fl_door','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) ne "unlocked.*") and ((InternalDoIf($hash,'HandyTobi','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "OG") or (InternalDoIf($hash,'HandySandra','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "OG"))
Days:
Devices:
0 eg_fl_door HandyTobi HandySandra
all eg_fl_door HandyTobi HandySandra
Do:
0:
0 set eg_fl_door unlock
1:
Helper:
event abwesend
globalinit 1
last_timer 2
sleeptimer -1
timerdev HandySandra
timerevent abwesend
triggerDev HandySandra
timerevents:
abwesend
timereventsState:
state: abwesend
triggerEvents:
abwesend
triggerEventsState:
state: abwesend
Internals:
0 eg_fl_door:STATE HandyTobi:STATE HandySandra:STATE
all eg_fl_door:STATE HandyTobi:STATE HandySandra:STATE
Interval:
0 -1
1 0
Itimer:
Localtime:
0 1469160000
1 1469170800
Readings:
Realtime:
0 06:00:00
1 09:00:00
Regexp:
0:
All:
State:
Time:
0 06:00:00
1 09:00:00
Timecond:
0 0
1 0
Timer:
0 0
1 0
Timers:
0 0 1
Trigger:
Triggertime:
1469160000:
localtime 1469160000
Hash:
1469170800:
localtime 1469170800
Hash:
Attributes:
repeatsame 0
Das doif di_aufstehen soll die Tür aufschließen, sofern sie nicht schon auf ist und sich eines der Beiden Handys auf meiner Fritzbox im OG anmeldet. Das zwigt mir letzendlich, dass meine Frau/ich mich aus dem Schlafzimmer (DG) langsam nach unten begebe ;)
Das FritzBox Modul müsste alle 5 Minuten abfragen und aktualisiert den Status der Handy dummies.
Gruß,
Tobi
Das funktioniert so nicht. Eine Abfrage muß immer Eindeutig sein. Mit Wildcards kann man da nicht arbeiten.
Ich gehe mal davon aus das Deine Urhzeit der Trigger ist und alles andere nur abgefragt werden soll.
Wenn Dein STATE eindeutig ist kannst Du es so machen
([06:00-09:00] and (([?HandyTobi] eq "OG") or ([?HandySandra] eq "OG"))) (set eg_fl_door:FILTER=STATE!=unlocked unlock)
Hi,
genau das habe ich gerade auch gemerkt.
Ich kann das .* weglassen, dann geht es.
Das dumme ist, dass es auch den state locked (uncertain), sowie unlocked (uncertain) gibt und ich dachte ich könnte beides so abfackeln...
Gruß,
Tobi
Gibt es denn ein Reading welches eindeutig locked oder unlocked hergibt?
Hi,
CoolTux danke für deinen Hinweis.
Es gibt ein reading lock, dass eindeutig zu sein scheint.
Allerdings komme och micht "?HandyTobi" nicht zum Erfolg. Normalerweise sollten hier nur Statusänderungen getrackt werden, oder?
Mache ich es ohne "?" scheint es erstmal zu funktionieren.
Mal morgen früh / heute Nacht abwarten.
Gruß,
Tobi
Nein nicht ganz. Das ? bedeutet das lediglich eine Bedingungsabfrage geschieht, nicht jedoch ein getriggert wird. Dein Trigger bleibt einzig die Zeit. Zwischen 6 und 9 Uhr wird immer wieder geschaut ob die restlichen Bedingungen stimmen und wenn ja wird ausgelöst.
Zitat von: onkel-tobi am 21 Juli 2016, 20:30:16
Hi,
genau das habe ich gerade auch gemerkt.
Ich kann das .* weglassen, dann geht es.
Das dumme ist, dass es auch den state locked (uncertain), sowie unlocked (uncertain) gibt und ich dachte ich könnte beides so abfackeln...
Gruß,
Tobi
Du könntest statt
eg_fl_door] ne "unlocked.*"]
so versuchen
[?eg_fl_door] !~ "unlocked"
. Mit ? damit es nicht, versehendlich öffnet nach dem Du abgeschlossen hast aber noch nicht abwesend bist.
Statt auf Readings zu triggern würde ich Events nutzen und repeatsame weglassen
["HandyTobi:OG"] or ["HandySandra:OG"]
Und die Zeit nicht triggern lassen, sonst wird die Tür um 6 Uhr entriegelt, auch wenn ihr noch schlaft.