- if (self.door_open):
- return True
- elif (time.time() - self.last_door_operation_unixts <= float(self.uwscfg.tracker_sec_wait_movement_after_door_closed)):
- #start timer, checkPresenceStateChangeAndNotify after tracker_sec_wait_movement
- if not self.timer is None:
- self.timer.cancel()
- self.timer=threading.Timer(float(self.uwscfg.tracker_sec_wait_movement_after_door_closed), self.checkPresenceStateChangeAndNotify)
- self.timer.start()
- return True
- elif (self.last_movement_unixts > self.last_door_operation_unixts and (self.door_manual_switch_used or ( time.time() - self.last_movement_unixts < float(self.uwscfg.tracker_sec_general_movement_timeout)))):
+ #door open:
+ if self.door_open:
+ self.num_movements_during_nonpresences = 0
+ if self.door_physically_present:
+ return True
+ elif self.last_movement_unixts > self.last_door_operation_unixts:
+ return True
+ else:
+ return False
+ # door closed:
+ # door not closed from inside, but with card/phone .. check again in ...
+ elif not self.door_manual_switch_used and time.time() - self.last_door_operation_unixts <= float(self.uwscfg.tracker_sec_wait_after_close_using_cardphone):
+ self.num_movements_during_nonpresences = 0
+ self.checkAgainIn(float(self.uwscfg.tracker_sec_wait_after_close_using_cardphone))
+ return self.last_somebody_present_result
+ # door closed from inside, stay on last status ....
+ elif self.door_manual_switch_used and time.time() - self.last_door_operation_unixts <= float(self.uwscfg.tracker_sec_wait_after_close_using_manualswitch):
+ self.num_movements_during_nonpresences = 0
+ self.checkAgainIn(float(self.uwscfg.tracker_sec_wait_after_close_using_manualswitch))
+ return self.last_somebody_present_result
+ # door closed from inside and movement detected around that time
+ elif self.door_manual_switch_used and self.last_movement_unixts > self.last_door_operation_unixts - float(self.uwscfg.tracker_sec_movement_before_manual_switch):
+ self.num_movements_during_nonpresences = 0