- //~ case DoorCommandEvent:
- //~ last_door_cmd = &evnt
- case DoorLockUpdate:
- doorstatemap[evnt.DoorID]=doorstate{locked:evnt.Locked, shut:doorstatemap[evnt.DoorID].shut}
- case DoorAjarUpdate:
- doorstatemap[evnt.DoorID]=doorstate{locked:doorstatemap[evnt.DoorID].locked, shut:evnt.Shut}
+ last_event_indicating_presence = evnt.Ts
+ case r3events.DoorCommandEvent:
+ last_door_cmd = &evnt
+ case r3events.DoorLockUpdate:
+ front_locked = evnt.Locked
+ last_frontlock_use = evnt.Ts
+ last_event_indicating_presence = evnt.Ts
+ case r3events.DoorAjarUpdate:
+ if front_shut == false && evnt.Shut && front_locked && evnt.Ts - last_frontlock_use > 2 {
+ Syslog_.Print("Presence: ignoring frontdoor ajar event, since obviously someone is fooling around with the microswitch while the door is still open")
+ } else {
+ front_shut = evnt.Shut
+ }
+ last_event_indicating_presence = evnt.Ts
+ case r3events.BackdoorAjarUpdate:
+ back_shut = evnt.Shut
+ last_event_indicating_presence = evnt.Ts