X-Git-Url: https://git.realraum.at/?a=blobdiff_plain;f=track-presence.py;h=716b34cdc189e8bf08fb4567f39a98b186060318;hb=0515535ca45f18e584c4748d34e942f5d7b7d048;hp=b53f0228203338e642633e63e5e9f03d00740ad4;hpb=7abb93d384787d571316ba51ebb4f614dc23ab3f;p=svn42.git diff --git a/track-presence.py b/track-presence.py index b53f022..716b34c 100755 --- a/track-presence.py +++ b/track-presence.py @@ -149,9 +149,9 @@ threads_running=True def trackSensorStatusThread(uwscfg,status_tracker,connection_listener): global sshp, threads_running #RE_TEMP = re.compile(r'temp\d: (\d+\.\d+)') - RE_PHOTO = re.compile(r'photo\d: [^0-9]*?(\d+)') - RE_MOVEMENT = re.compile(r'movement|button\d?|PanicButton') - RE_ERROR = re.compile(r'Error: (.+)') + RE_PHOTO = re.compile(r'photo\d: [^0-9]*?(\d+)',re.I) + RE_MOVEMENT = re.compile(r'movement|button\d?|PanicButton',re.I) + RE_ERROR = re.compile(r'Error: (.+)',re.I) while threads_running: uwscfg.checkConfigUpdates() sshp = None @@ -213,9 +213,9 @@ door_socklock=threading.Lock() def trackDoorStatusThread(uwscfg, status_tracker,connection_listener): global door_sockhandle, door_socklock, threads_running #socket.setdefaulttimeout(10.0) #affects all new Socket Connections (urllib as well) - RE_STATUS = re.compile(r'Status: (\w+), idle') - RE_REQUEST = re.compile(r'Request: (\w+) (?:(Card|Phone) )?(.+)') - RE_ERROR = re.compile(r'Error: (.+)') + RE_STATUS = re.compile(r'Status: (\w+), idle',re.I) + RE_REQUEST = re.compile(r'Request: (\w+) (?:(Card|Phone) )?(.+)',re.I) + RE_ERROR = re.compile(r'Error: (.+)',re.I) while threads_running: uwscfg.checkConfigUpdates() with door_socklock: @@ -296,13 +296,13 @@ class StatusTracker: #(threading.Thread): self.last_movement_unixts=0 self.last_light_value=0 self.last_light_unixts=0 - self.lock=threading.Lock() + self.lock=threading.RLock() #Notify State locked by self.presence_notify_lock self.last_somebody_present_result=False self.last_warning=None self.count_same_warning=0 self.who_might_be_here=None - self.presence_notify_lock=threading.Lock() + self.presence_notify_lock=threading.RLock() #timer self.timer=None self.timer_timeout=0 @@ -317,7 +317,7 @@ class StatusTracker: #(threading.Thread): self.updateWhoMightBeHere(who) self.lock.acquire() self.door_manual_switch_used=(who is None or len(who) == 0) - self.door_physically_present=(self.door_manual_switch_used or how.startswith("Card")) + self.door_physically_present=(self.door_manual_switch_used or (not how is None and how.startswith("Card"))) if not self.door_open_previously is None: self.last_door_operation_unixts=time.time() self.lock.release() @@ -337,7 +337,7 @@ class StatusTracker: #(threading.Thread): self.updateWhoMightBeHere(who) self.lock.acquire() self.door_manual_switch_used=(who is None or len(who) == 0) - self.door_physically_present=(self.door_manual_switch_used or how.startswith("Card")) + self.door_physically_present=(self.door_manual_switch_used or (not how is None and how.startswith("Card"))) if not self.door_open_previously is None: self.last_door_operation_unixts=time.time() self.lock.release() @@ -438,6 +438,7 @@ class StatusTracker: #(threading.Thread): self.last_somebody_present_result = somebody_present if not self.status_change_handler is None: self.status_change_handler(somebody_present, door_open=self.door_open, who=self.who_might_be_here) + self.forgetWhoMightBeHere(somebody_present) warning = self.getPossibleWarning() if warning == self.last_warning: self.count_same_warning+=1 @@ -448,7 +449,6 @@ class StatusTracker: #(threading.Thread): logging.debug("checkPresenceStateChangeAndNotify: warning: " + str(warning)) if not self.status_change_handler is None: self.status_change_handler(somebody_present=None, door_open=self.door_open, who=self.who_might_be_here, warning=warning) - self.forgetWhoMightBeHere(somebody_present) ############ Connection Listener ############ class ConnectionListener: