hiho
ich versuche mir grade eine anwesenheitskontrolle zu basteln.
dazu gehört unter anderem auch das handy der jeweiligen person - das wird per bt und presence geprüft.... [handy1:presence] eq "present" and [handy1:presence:sec] < 60 ...
ich hätte das so verstanden, dass sich der status von handy1 in den letzten 60 sek. auf present geändert haben muß, damit das teil triggert.
irgenwas hab ich da wohl falsch verstanden, weil auch bei > 60 sekunden/keiner presence-änderung getriggert wird.
was denk ich da wieder falsch?
wie kann ich 100% sicher prüfen, ob sich der status geändert hat?
ich bitte somit wieder mal um (entwicklungs)hilfe ..
[handy1:presence:sec]
wo kann man das nachlesen, daß es so funktionieren sollte ?
https://fhem.de/commandref_DE.html#DOIF_Zeitspanne_eines_Readings_seit_der_letzten_Aenderung
Nicht ganz. Das bedeutet das der Timestamp des Readings presence älter wie 60s sein muss.
hi cooltux, mein rächer der entnervten *g*
wäre mir auch recht - hauptsache, das ding triggert nicht permanent
könnts am presence-modul liegen?
ich glaub, ich stell hier mal alles rein:
doif1 - stellt fest, ob jemand rein gekommen ist (ich hab ne aussen und ne innen-tür)
(
[MK_Aussentuer:state] eq "closed"
)
()()
DOELSEIF
(
[MK_Wohnzimmer_Innenzugang:state] eq "closed"
and
$cmd == 1.1
)
(
set ratOtab_AMAD ttsMSG willkommen;
)
das funzt
dann prüf ich mit nem anderen doif, wer da kommt:
([Aussentuer_Rein:cmd_nr] == 2 and [Aussentuer_Rein:cmd_nr:sec] < 5 and [xxx:presence] eq "present" and [xxx:presence:sec] < 60)
(set ratOtab_AMAD ttsMSG xxx;)
DOELSEIF
... anderes handy
er plärrt immer den namen xxx - egal, ob die zutrittskontrolle getriggert hat, obwohl das handy immer da war oder auch bt ein/aus war
Mach doch ein event-on-change-reading presence beim Presence Device.
hab ich gemacht - nutzt nix
btw - 1 beitrag vorher gibts ergänzungen
defmod xxx PRESENCE local-bluetooth xx:xx:xx:22:5e:a2
attr Bastet DbLogExclude .*
attr Bastet alias Handy xxx
attr Bastet devStateIcon absent:it_smartphone@red present:it_smartphone@green
attr Bastet event-on-change-reading .*
attr Bastet group Anwesenheit
attr Bastet icon it_smartphone
attr Bastet room Anwesenheit
mom, jetzt seh ich erst:
ZitatNicht ganz. Das bedeutet das der Timestamp des Readings presence älter wie 60s sein muss.
=
[handy1:presence:sec] < 60
dann wäre > 60 unter 60 sek?
wenn das mein mathe le(e/h)rer sieht, gibts haue...
[handy1:presence:sec] < 60
macht nur dann Sinn wenn handy1 ein Event erzeugt, bei dem presence sich nicht ändert, ansonsten ist die sec-Definition gleich Null.
DOIF ([irgend ein Trigger] and [?handy1:presence:sec] < 60 )
macht möglicherweise mehr Sinn, weil presence hier nicht triggert.
Nein habe mich vertan. > Bedeutet größer < kleiner.
> 60 also timestamp älter 60s
dann kann ich :sec also löschen([Aussentuer_Rein:cmd_nr] == 2 and [xxx:presence] eq "present")
(set ratOtab_AMAD ttsMSG xxx;)
DOELSEIF
... nur bimmelt dann die begrüssung genau so bei "nur" bt-änderung ohne aussentür-änderung und vice versa
btw cool: somit hast deinen 1. fehler mir gegenüber gemacht == kommt in den kalender *g*