FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: the ratman am 02 Mai 2017, 16:39:18

Titel: verständnisfrage :sec
Beitrag von: the ratman am 02 Mai 2017, 16:39:18
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 ..
Titel: Antw:verständnisfrage :sec
Beitrag von: kumue am 02 Mai 2017, 16:48:32
[handy1:presence:sec]
wo kann man das nachlesen, daß es so funktionieren sollte ?
Titel: Antw:verständnisfrage :sec
Beitrag von: the ratman am 02 Mai 2017, 16:50:44
https://fhem.de/commandref_DE.html#DOIF_Zeitspanne_eines_Readings_seit_der_letzten_Aenderung
Titel: Antw:verständnisfrage :sec
Beitrag von: CoolTux am 02 Mai 2017, 16:52:11
Nicht ganz. Das bedeutet das der Timestamp des Readings presence älter wie 60s sein muss.
Titel: Antw:verständnisfrage :sec
Beitrag von: the ratman am 02 Mai 2017, 16:55:27
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
Titel: Antw:verständnisfrage :sec
Beitrag von: CoolTux am 02 Mai 2017, 16:58:36
Mach doch ein event-on-change-reading presence beim Presence Device.
Titel: Antw:verständnisfrage :sec
Beitrag von: the ratman am 02 Mai 2017, 16:59:37
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
Titel: Antw:verständnisfrage :sec
Beitrag von: the ratman am 02 Mai 2017, 17:36:03
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...
Titel: Antw:verständnisfrage :sec
Beitrag von: Damian am 02 Mai 2017, 17:39:08
[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.
Titel: Antw:verständnisfrage :sec
Beitrag von: CoolTux am 02 Mai 2017, 17:39:59
Nein habe mich vertan. > Bedeutet größer < kleiner.

> 60 also timestamp älter 60s
Titel: Antw:verständnisfrage :sec
Beitrag von: the ratman am 02 Mai 2017, 17:51:44
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*