X-Git-Url: https://git.realraum.at/?p=svn42.git;a=blobdiff_plain;f=update-web-status.py;h=e1e24126eb068e6da95cf45d5a765569b7423388;hp=ef2535e14ffad2539882d07e705613b4f631f739;hb=9b57ad36fa772a94f8f38321a88f2b1df1818a51;hpb=f7e232e0522447ef5719323b9a812fd2424cba8d diff --git a/update-web-status.py b/update-web-status.py index ef2535e..e1e2412 100755 --- a/update-web-status.py +++ b/update-web-status.py @@ -31,6 +31,7 @@ class UWSConfig: self.config_parser.set('web','cgiuri','https://www.realraum.at/cgi/status.cgi?pass=jako16&set=') #~ self.config_parser.set('web','htmlopen','
Tür ist Offen
') #~ self.config_parser.set('web','htmlclosed','
Tür ist Geschlossen
') + self.config_parser.set('web','htmlbored','
Panic! Present&Bored
') self.config_parser.set('web','htmlopen','
Leute Anwesend
') self.config_parser.set('web','htmlclosed','
Keiner Da
') self.config_parser.add_section('debug') @@ -165,7 +166,10 @@ def displayOpen(): def displayClosed(): setRealraumHtmlStatus(uwscfg.web_htmlclosed) - + +def displayPanic(): + setRealraumHtmlStatus(uwscfg.web_htmlbored) + def exitHandler(signum, frame): logging.info("Update-Web-Status stopping") try: @@ -190,8 +194,19 @@ if len(sys.argv) > 1: else: uwscfg = UWSConfig() +if len(sys.argv) > 2: + if sys.argv[2] == "open": + displayOpen() + elif sys.argv[2] == "closed": + displayClosed() + elif sys.argv[2] == "panic": + displayPanic() + print "Satus submitted to Web, now exiting..." + sys.exit(0) + #socket.setdefaulttimeout(10.0) #affects all new Socket Connections (urllib as well) -RE_STATUS = re.compile(r'Status: (people present|room empty)') +RE_PRESENCE = re.compile(r'Presence: (yes|no)(?:, (opened|closed), (.+))?') +RE_BUTTON = re.compile(r'PanicButton|button\d?') while True: try: if not os.path.exists(uwscfg.tracker_socket): @@ -203,6 +218,8 @@ while True: conn = os.fdopen(sockhandle.fileno()) #sockhandle.send("listen\n") #sockhandle.send("status\n") + last_status=None + unixts_panic_button=None while True: line = conn.readline() logging.debug("Got Line: " + line) @@ -212,13 +229,31 @@ while True: if line == "": raise Exception("EOF on Socket, daemon seems to have quit") - m = RE_STATUS.match(line) + m = RE_PRESENCE.match(line) if not m is None: status = m.group(1) - if status == "people present": + last_status=(status == "yes") + unixts_panic_button=None + if last_status: + displayOpen() + else: + displayClosed() + continue + + m = RE_BUTTON.match(line) + if not m is None: + displayPanic() + unixts_panic_button=time.time() + continue + + if not last_status is None and not unixts_panic_button is None and time.time() - unixts_panic_button > 3600: + unixts_panic_button=None + if last_status: displayOpen() - if status == "room empty": + else: displayClosed() + continue + except Exception, ex: logging.error("main: "+str(ex)) try: