From 8e874ae530f290b02490dba45f86787e068530fd Mon Sep 17 00:00:00 2001 From: littlepinkyl Date: Tue, 10 Jan 2017 20:57:48 +0800 Subject: [PATCH 1/4] log part but undone and need to be refined --- py/demo.py | 214 +++++++++++++++++++++++++++++------------------------ py/func.py | 4 + py/t.cnf | 2 +- py/var.py | 1 - 4 files changed, 121 insertions(+), 100 deletions(-) diff --git a/py/demo.py b/py/demo.py index f9d2426..fb39082 100644 --- a/py/demo.py +++ b/py/demo.py @@ -16,6 +16,7 @@ import requests import picamera import json +import re #from six.moves import input #from ftplib import FTP from func import * @@ -25,7 +26,7 @@ from depconfig import * import logging -from logging.handlers import RotatingFileHandler +from logging.handlers import TimedRotatingFileHandler #logging.basicConfig(level=logging.DEBUG, # datefmt='%a, %d %b %Y %H:%M:%S', # format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s', @@ -34,17 +35,23 @@ console = logging.StreamHandler() console.setLevel(logging.DEBUG) -formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s') -console.setFormatter(formatter) +#console_formatter = logging.Formatter('%(name)-5s: %(levelname)-8s %(message)s') +console_formatter = logging.Formatter('%(asctime)s [%(levelname)s] [%(filename)s:%(lineno)d %(name)s] - %(message)s') +log_formatter = logging.Formatter('%(asctime)s [%(levelname)s] [%(filename)s:%(lineno)d %(name)s] - %(message)s [%(process)d,%(thread)d:%(threadName)s]') +console.setFormatter(console_formatter) logger = logging.getLogger('demo') logger.addHandler(console) +#Rthandler = RotatingFileHandler('demo.log',maxBytes=10*1024*1024,backupCount=5) +Trthandler = TimedRotatingFileHandler(filename='demo',when='D',interval=1,backupCount=7) +Trthandler.suffix = "%Y-%m-%d" +#Trthandler.extMatch = re.compile(r"^\d{4}-\d{2}-\d{2}.log$") +Trthandler.extMatch = re.compile(r"^\d{4}-\d{2}-\d{2}$") + +Trthandler.setLevel(logging.INFO) +Trthandler.setFormatter(log_formatter) +logger.addHandler(Trthandler) +logger.setLevel(logging.DEBUG) -#Rthandler = RotatingFileHandler('myapp.log',maxBytes=10*1024*1024,backupCount=5) -#Rthandler.setLevel(logging.INFO) -#formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s') -#Rthandler.setFormatter(formatter) -#logger.addHandler(Rthandler) - global stationAlias global reconnect_count global reconnect_count_mqtt @@ -64,7 +71,6 @@ positionQ= Queue.Queue(PositionQueueLength) commandQ = Queue.Queue(CommandQueueLength) callQ = Queue.Queue(CallQueueLength) -print "\033[0;32;40m %d\033[0m" % (os.geteuid(),) def reconnect(): #count reconnect counts, if bigger than 200, do reconn @@ -109,59 +115,59 @@ def reconnect_mqtt(): return True class ScanDelegate(DefaultDelegate): - def __init__(self): - DefaultDelegate.__init__(self) + def __init__(self): + DefaultDelegate.__init__(self) def handleDiscovery(self, dev, isNewDev, isNewData): global stationAlias,stationMac data = {} timestamp = time.time() global lastDiscoveryTime global s - global dataddd #assemble all data before the loop + global dataddd #assemble all data before the loop try: for (adtype,desc,value) in dev.getScanData(): data[desc]=value except UnicodeDecodeError,e: - pass - ##::here is new processing using depdata.py codes; - if (data.has_key('Manufacturer')) and ( manu_filter(data.get('Manufacturer')) ): - #if match the manufilter then start new processing: - #u just want update minimum fresh data here - try: - #s.send(bytearray.fromhex('01ab02ab')) - dataddd['keyflag']=rawdata_translate(data['Manufacturer']) - # if alarm_update(dev.addr.replace(':',''), dataddd['keyflag']): - # dataddd['keyflag'] = KEY_BINDING - #ip need update - except: - print('dev+1 %s' % dev.addr ) - if alarm_update(dev.addr.replace(':',''), dataddd['keyflag']): - dataddd['keyflag'] = KEY_BINDING - #local_ip = get_ip_address(depIfip) - #dataddd['ip'] = str(local_ip) - #dataddd['hexip'] = ''.join([hex(int(i)).lstrip('0x').rjust(2,'0') for i in local_ip.split('.')]) - dataddd['bcaddr'] = dev.addr - dataddd['bcmac'] = dev.addr.replace(':','') - dataddd['rssi'] = hex(dev.rssi*(-1)).lstrip('0x').rjust(2,'0') - dataddd['srssi'] = dev.rssi*(-1) - ## data type - if depProt == 'B': - #print('%s' % dataddd) - load = gen_bin_data(dataddd) - #print('%s' % dataddd) - else: - load = gen_json_data(dataddd) - ## send type - #if depNet == 'S': - try: - s.send(load) - print('all xxx sent %s' % load) - except socket.error as msg: - print('socket error %s' % msg) - reconnect() - ##Mqtt not processed + pass + ##::here is new processing using depdata.py codes; + if (data.has_key('Manufacturer')) and ( manu_filter(data.get('Manufacturer')) ): + #if match the manufilter then start new processing: + #u just want update minimum fresh data here + try: + #s.send(bytearray.fromhex('01ab02ab')) + dataddd['keyflag']=rawdata_translate(data['Manufacturer']) + # if alarm_update(dev.addr.replace(':',''), dataddd['keyflag']): + # dataddd['keyflag'] = KEY_BINDING + #ip need update + except: + print('dev+1 %s' % dev.addr ) + if alarm_update(dev.addr.replace(':',''), dataddd['keyflag']): + dataddd['keyflag'] = KEY_BINDING + #local_ip = get_ip_address(depIfip) + #dataddd['ip'] = str(local_ip) + #dataddd['hexip'] = ''.join([hex(int(i)).lstrip('0x').rjust(2,'0') for i in local_ip.split('.')]) + dataddd['bcaddr'] = dev.addr + dataddd['bcmac'] = dev.addr.replace(':','') + dataddd['rssi'] = hex(dev.rssi*(-1)).lstrip('0x').rjust(2,'0') + dataddd['srssi'] = dev.rssi*(-1) + ## data type + if depProt == 'B': + #print('%s' % dataddd) + load = gen_bin_data(dataddd) + #print('%s' % dataddd) + else: + load = gen_json_data(dataddd) + ## send type + #if depNet == 'S': + try: + s.send(load) + print('all xxx sent %s' % load) + except socket.error as msg: + print('socket error %s' % msg) + reconnect() + ##Mqtt not processed - ## below is old codes + ## below is old codes #print "%s,%s" % (data['Manufacturer'],braceletFlag) if (not data.has_key('Manufacturer')) or ( not data['Manufacturer'].startswith(braceletFlag)): return 0 @@ -175,7 +181,7 @@ def handleDiscovery(self, dev, isNewDev, isNewData): #battery+station ip #electricity = data['Manufacturer'][16:18] electricity = '64' #fixed - flag = data['Manufacturer'][6:8] + flag = data['Manufacturer'][6:8] local_ip = get_ip_address(ifname) hex_ip = ''.join([hex(int(i)).lstrip('0x').rjust(2,'0') for i in local_ip.split('.')]) temp = 50 @@ -234,32 +240,32 @@ def on_message(client,userdata,msg): runcmd2(str(msg.payload)) class MyListener(object): -# def remove_service(self, zeroconf, type, name): -# pass + # def remove_service(self, zeroconf, type, name): + # pass - def add_service(self, zeroconf, type, name): - global MQTTServer,MQTTPort,client - info = zeroconf.get_service_info(type, name) - #log sth - logger.info("[MyListerner.add_service]Service %s added, service info: %s" % (name, info)) - if info.server != MQTTServer or info.port != MQTTPort: + def add_service(self, zeroconf, type, name): + global MQTTServer,MQTTPort,client + info = zeroconf.get_service_info(type, name) #log sth - print "\033[1;31;40m received new address from zeroconf so need to change to new mqtt server : %s:%s\033[0m" % (info.server,info.port) - logger.info("[MyListener.add_service]\033[1;31;40m received new address from zeroconf so need to change to new mqtt server : %s:%s\033[0m" % (info.server,info.port)) - MQTTServer = info.server - MQTTPort = info.port - res = reconnect_mqtt() - if res: - logger.info('[MyListener.add_service]change to new mqtt server suc.') - try: - write_conf('MQTT','server',MQTTServer) - write_conf('MQTT','port',MQTTPort) - except Exception,e: - logger.warning('[Mylistener.add_service]Failed to write mqtt new address back to conf file:%s,%s' % (MQTTServer,MQTTPort)) - print "\033[1;31;40m failed to write back new mqtt server : %s:%s\033[0m" % (Exception,e) - else: - logger.info('[MyListener.add_service]Failed to reconnect to new mqtt server:%s,%s'% (MQTTServer,MQTTPort)) - print "\033[1;31;40m failed to reconnect to new mqtt server : %s:%s\033[0m" % (Exception,e) + logger.info("[MyListerner.add_service]Service %s added, service info: %s" % (name, info)) + if info.server != MQTTServer or info.port != MQTTPort: + #log sth + print "\033[1;31;40m received new address from zeroconf so need to change to new mqtt server : %s:%s\033[0m" % (info.server,info.port) + logger.info("[MyListener.add_service]\033[1;31;40m received new address from zeroconf so need to change to new mqtt server : %s:%s\033[0m" % (info.server,info.port)) + MQTTServer = info.server + MQTTPort = info.port + res = reconnect_mqtt() + if res: + logger.info('[MyListener.add_service]change to new mqtt server suc.') + try: + write_conf('MQTT','server',MQTTServer) + write_conf('MQTT','port',MQTTPort) + except Exception,e: + logger.warning('[Mylistener.add_service]Failed to write mqtt new address back to conf file:%s,%s' % (MQTTServer,MQTTPort)) + print "\033[1;31;40m failed to write back new mqtt server : %s:%s\033[0m" % (Exception,e) + else: + logger.info('[MyListener.add_service]Failed to reconnect to new mqtt server:%s,%s'% (MQTTServer,MQTTPort)) + print "\033[1;31;40m failed to reconnect to new mqtt server : %s:%s\033[0m" % (Exception,e) def runcmd2(data): @@ -324,13 +330,24 @@ def runcmd2(data): #print "\033[0;32;40m Capture ? %s " % (re,) except Exception,e: print "\033[0;32;40m Capture get Exception:%s:%s\033[0m" % (Exception,e) + logger.warning("[runcm2]Capture get Exception:%s:%s" % (Exception,e)) else: #print "\033[0;32;40m Capture ? %s " % (re,) #if re: + logger.debug("[runcmd2]take photo suc") if cmd.has_key('url'): - send_photo_url(filename,picUploadDir,cmd['url'],now) + res = send_photo_url(filename,picUploadDir,cmd['url'],now) + if res: + logger.debug("[send_photo_url]suc") + else: + logger.debug("[send_photo_url]suc") else: - send_photo(filename,picUploadDir,picUploadServer,picUploadPort,cmd['ap'],cmd['bracelet'],now) + res = send_photo(filename,picUploadDir,picUploadServer,picUploadPort,cmd['ap'],cmd['bracelet'],now) + if res: + logger.debug("[send_photo]suc") + else: + logger.debug("[send_photo]suc") + print "\033[0;32;40msend_photo done\033[0m" if not cameraReviewed: cameraReviewed = True @@ -430,18 +447,20 @@ def run(self): heartbeat['features'].append('camera') try: client.publish(HEARTBEATTITLE,json.dumps(heartbeat)) - print "\033[1;31;40mheartbeat %s\033[0m" % (json.dumps(heartbeat),) + #print "\033[1;31;40mheartbeat %s\033[0m" % (json.dumps(heartbeat),) + logger.debug("[heartbeat]\033[1;31;40m%s\033[0m"% (json.dumps(heartbeat)),) except Exception,e: - print "\033[1;31;40mMqtt Exception:%s\033[0m" % (Exception,e) + #print "\033[1;31;40mMqtt Exception:%s\033[0m" % (Exception,e) + logger.warning("[heartbeat]\033[1;31;40mMqtt Exception:%s,%s\033[0m" % (json.dumps(heartbeat),)) reconnect_mqtt() time.sleep(heartbeatSleeptime) if __name__=='__main__': global starttime global hasCamera global reconnect_count_mqtt + reconnect_count_mqtt =0 #global mqttClientKeepAliveTime - print "\033[0;32;40m %d\033[0m" % (os.geteuid(),) starttime=time.time() client = mqtt.Client(client_id=stationAlias,clean_session=False) thread1 = MqttClient(1,'thread1',on_connect,on_message,on_disconnect,MQTTServer,MQTTPort,mqttClientKeepAliveTime,mqttClientLoopSleepTime,mqttClientLoopTimeout) @@ -459,31 +478,30 @@ def run(self): global lastDiscoveryTime global s - print "\033[0;32;40mbefore socket\033[0m" - dataddd = get_empty_datadict() s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) - try: - s.connect((depHost,depPort)) - s.setblocking(0) - except socket.error as msg: - print "socket error:%s" % (msg,) - #print(msg) - print "\033[0;32;40mafter socket\033[0m" - reconnect_count = 0 + try: + s.connect((depHost,depPort)) + s.setblocking(0) + except socket.error as msg: + #print "socket error:%s" % (msg,) + logger.warning("[main]socket error %s" % (msg,)) + reconnect_count = 0 lastDiscoveryTime=0 try: callscanner = Scanner().withDelegate(ScanDelegate()) except Exception,e: print "\033[0;32;40m main:BLEscanner init:%s,%s\033[0m" % (Exception,e) - print "\033[0;32;40mafter callscanner\033[0m" + logger.warning("[main] BLEScan init error:%s,%s " % (Exception,e)) count =0 while True: - try: - devices = callscanner.scan(scannerScanTime) - except Exception,e: + try: + devices = callscanner.scan(scannerScanTime) + logger.info("[main] log test") + except Exception,e: #print e - print "\033[0;32;40m main:callscanner:scan %s,%s\033[0m and going to sleep 5s and scan again" % (Exception,e) - time.sleep(5) + print "\033[0;32;40m main:callscanner:scan %s,%s\033[0m and going to sleep 5s and scan again" % (Exception,e) + logger.warning("[main]callscanner:scan %s,%s and going to sleep 5s and scan again" % (Exception,e)) + time.sleep(5) diff --git a/py/func.py b/py/func.py index fa8e81b..d6f45cb 100644 --- a/py/func.py +++ b/py/func.py @@ -205,6 +205,8 @@ def send_photo(filename,filedir,ip,port,bsid,bcid,now): if res.status_code == 200 : os.remove('%s/%s/%s' % (cur_file_dir(),filedir,filename)) return True + else: + return False def send_photo_url(filename,filedir,url,now): pic = open('%s/%s/%s' % (cur_file_dir(),filedir,filename)) url_path ="%s%s" % (url,now) @@ -217,6 +219,8 @@ def send_photo_url(filename,filedir,url,now): if res.status_code == 200 : os.remove('%s/%s/%s' % (cur_file_dir(),filedir,filename)) return True + else: + return False def get_cpu_temp(): tempFile = open( "/sys/class/thermal/thermal_zone0/temp" ) cpu_temp = tempFile.read() diff --git a/py/t.cnf b/py/t.cnf index 2c9cb8f..d79db8a 100644 --- a/py/t.cnf +++ b/py/t.cnf @@ -1,7 +1,7 @@ [station] alias = pinky version = 1.0 -mac_filter = en +mac_filter = wl [queue] position_l = 10000 diff --git a/py/var.py b/py/var.py index 580cbb3..d7dd349 100644 --- a/py/var.py +++ b/py/var.py @@ -52,7 +52,6 @@ picResolutionV = int(conf.get('camera','resolution_v')) else: picResolutionH = 1200 -print "H:%s, %s ; V:%s, %s" % (picResolutionH,type(picResolutionH),picResolutionV,type(picResolutionV)) picUploadServer = conf.get('camera','upload_host') picUploadPort = conf.get('camera','upload_port') picUploadDir = conf.get('camera','tmp_dir') From bf948231e681e0651c1246bdf697461185d5d840 Mon Sep 17 00:00:00 2001 From: littlepinkyl Date: Wed, 11 Jan 2017 17:55:14 +0800 Subject: [PATCH 2/4] log almost complete.not done in Var.py and setup seems imperfect. --- py/demo.py | 229 +++++++++++++++++++++++++++-------------------------- py/func.py | 199 ++++++++++++++++++++++++++-------------------- py/var.py | 1 + 3 files changed, 232 insertions(+), 197 deletions(-) diff --git a/py/demo.py b/py/demo.py index fb39082..2a12b1e 100644 --- a/py/demo.py +++ b/py/demo.py @@ -17,21 +17,13 @@ import picamera import json import re -#from six.moves import input -#from ftplib import FTP from func import * from var import * -#import new dependencies from depdata import * from depconfig import * import logging from logging.handlers import TimedRotatingFileHandler -#logging.basicConfig(level=logging.DEBUG, -# datefmt='%a, %d %b %Y %H:%M:%S', -# format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s', -# filename='demo.log', -# filemode='w') console = logging.StreamHandler() console.setLevel(logging.DEBUG) @@ -45,7 +37,8 @@ Trthandler = TimedRotatingFileHandler(filename='demo',when='D',interval=1,backupCount=7) Trthandler.suffix = "%Y-%m-%d" #Trthandler.extMatch = re.compile(r"^\d{4}-\d{2}-\d{2}.log$") -Trthandler.extMatch = re.compile(r"^\d{4}-\d{2}-\d{2}$") +#Trthandler.extMatch = re.compile(r"^\d{4}-\d{2}-\d{2}$") +Trthandler.extMatch = r"^\d{4}-\d{2}-\d{2}$" Trthandler.setLevel(logging.INFO) Trthandler.setFormatter(log_formatter) @@ -82,16 +75,15 @@ def reconnect(): try: s.close() except socket.error as msg: - print"socket reconnect:close error : %s " % (msg,) - logger.debug("[reconnect]socket reconnect:close error : %s " % (msg,)) + #print"socket reconnect:close error : %s " % (msg,) + logger.warning("[reconnect]\033[1;33;40msocket reconnect:close error : %s\033[0m " % (msg,)) #logger.debug(' try: s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect((depHost,depPort)) except socket.error as msg: - #print(msg) - print"socket reconnect error : %s " % (msg,) - logger.debug("[reconnect]socket reconnect:connect error : %s " % (msg,)) + #print"socket reconnect error : %s " % (msg,) + logger.warning("[reconnect\033[1;33;40m]socket reconnect:connect error : %s \033[0m" % (msg,)) def reconnect_mqtt(): global reconnect_count_mqtt @@ -103,13 +95,13 @@ def reconnect_mqtt(): try: client.disconnect() except Exception,e: - print "mqtt reconnect:disconnect error :%s,%s " % (Exception,e) - logger.debug("[reconnect_mqtt]mqtt reconnect:close error : %s " % (msg,)) + #print "mqtt reconnect:disconnect error :%s,%s " % (Exception,e) + logger.warning("[reconnect_mqtt]\033[1;33;40mmqtt reconnect:close error : %s\033[0m" % (msg,)) try: client.connect(MQTTServer,MQTTPort,mqttClientKeepAliveTime) except Exception,e: - print "mqtt reconnect error :%s,%s " % (Exception,e) - logger.debug("[reconnect_mqtt]mqtt reconnect:connect error : %s " % (msg,)) + #print "mqtt reconnect error :%s,%s " % (Exception,e) + logger.warning("[reconnect_mqtt]\033[1;33;40mmqtt reconnect:connect error : %s \033[0m" % (msg,)) return False else: return True @@ -139,13 +131,12 @@ def handleDiscovery(self, dev, isNewDev, isNewData): # if alarm_update(dev.addr.replace(':',''), dataddd['keyflag']): # dataddd['keyflag'] = KEY_BINDING #ip need update - except: + except Exception,e: print('dev+1 %s' % dev.addr ) + logger.warning("[ScanDelegate.handleDiscovery]\033[1;33;40mrawdata_translate %s get exception:%s,%s\033[0m" % (dev.addr,Exception,e)) if alarm_update(dev.addr.replace(':',''), dataddd['keyflag']): dataddd['keyflag'] = KEY_BINDING - #local_ip = get_ip_address(depIfip) - #dataddd['ip'] = str(local_ip) - #dataddd['hexip'] = ''.join([hex(int(i)).lstrip('0x').rjust(2,'0') for i in local_ip.split('.')]) + #local_ip = get_ip_address(depIfip) #dataddd['ip'] = str(local_ip) #dataddd['hexip'] = ''.join([hex(int(i)).lstrip('0x').rjust(2,'0') for i in local_ip.split('.')]) dataddd['bcaddr'] = dev.addr dataddd['bcmac'] = dev.addr.replace(':','') dataddd['rssi'] = hex(dev.rssi*(-1)).lstrip('0x').rjust(2,'0') @@ -161,10 +152,13 @@ def handleDiscovery(self, dev, isNewDev, isNewData): #if depNet == 'S': try: s.send(load) - print('all xxx sent %s' % load) + #print('all xxx sent %s' % load) except socket.error as msg: - print('socket error %s' % msg) + logger.warning("[ScanDelegate.handleDiscovery]\033[1;33;40msocket error:%s\033[0m" % (msg,)) + #print('socket error %s' % msg) reconnect() + else: + logger.info("[ScanDelegate.handleDiscovery]socket send %s " % (load,)) ##Mqtt not processed ## below is old codes @@ -189,69 +183,69 @@ def handleDiscovery(self, dev, isNewDev, isNewData): if data['Manufacturer'].startswith(callFlag,6): callData=data callData['nursecall'] = True - print "\033[1;31;40m%s\033[0m" % (json.dumps(callData,)) + logger.info("[ScanDelegate.handleDiscovery]\033[1;31;40mCall data\033[0mget:%s" % (json.dumps(callData),)) + #print "\033[1;31;40m%s\033[0m" % (json.dumps(callData,)) try: client.publish(CALLTITLE,json.dumps(callData)) except Exception,e: - print "\033[1;31;40mMqtt Exception:%s\033[0m" % (Exception,e) - logger.warning("[ScanDelegate.handleDiscovery]\033[1;31;40mMqtt Exception:%s\033[0m" % (Exception,e)) + #print "\033[1;31;40mMqtt Exception:%s\033[0m" % (Exception,e) + logger.warning("[ScanDelegate.handleDiscovery]\033[1;33;40msending call data %s get %s:%s\033[0m and trying to reconnect" % (json.dumps(callData),Exception,e)) reconnect_mqtt() - lastDiscoveryTime = time.time() - return 0 + else: + logger.info("[ScanDelegate.handleDiscovery]Call data sended %s,%s:%s" % (MQTTServer,MQTTPort,json.dumps(callData))) + #lastDiscoveryTime = time.time() elif data['Manufacturer'].startswith(outbodyFlag,6): + logger.info("[ScanDelegate.handleDiscovery]\033[1;34;40mOutbody data\033[0mget:%s" % (json.dumps(callData),)) outbodyData = data - #client.publish(COMMONTITLE,json.dumps(outbodyData)) try: client.publish(OUTBODYTITLE,json.dumps(outbodyData)) - except Exception,e: - print "\033[1;31;40mMqtt Exception:%s\033[0m" % (Exception,e) - logger.warning("[ScanDelegate.handleDiscovery]\033[1;31;40mMqtt Exception:%s\033[0m" % (Exception,e)) + #print "\033[1;31;40mMqtt Exception:%s\033[0m" % (Exception,e) + logger.warning("[ScanDelegate.handleDiscovery]\033[1;33;40msending outbody data %s get %s:%s\033[0m and trying to reconnect" % (json.dumps(outbodyData),Exception,e)) reconnect_mqtt() - lastDiscoveryTime = time.time() - return 0 + else: + logger.info("[ScanDelegate.handleDiscovery]Outbody data sended %s,%s:%s" % (MQTTServer,MQTTPort,json.dumps(outbodyData))) + #lastDiscoveryTime = time.time() #change to send to mqtt immidiately #positionQ.put(json.dumps(data)) - try: - client.publish(POSITIONTITLE,json.dumps(data)) - except Exception,e: - print "\033[1;31;40mMqtt Exception:%s\033[0m" % (Exception,e) - logger.warning("[ScanDelegate.handleDiscovery]\033[1;31;40mMqtt Exception:%s\033[0m" % (Exception,e)) - reconnect_mqtt() - print "%s,%s:%s" % (MQTTServer,MQTTPort,json.dumps(data)) - logger.info("[ScanDelegate.handleDiscovery]published.%s,%s:%s" % (MQTTServer,MQTTPort,json.dumps(data))) - lastDiscoveryTime = time.time() + else: + logger.info("[ScanDelegate.handleDiscovery]\033[1;34;40mPosition data\033[0mget:%s" % (json.dumps(callData),)) + try: + client.publish(POSITIONTITLE,json.dumps(data)) + except Exception,e: + #print "\033[1;31;40mMqtt Exception:%s\033[0m" % (Exception,e) + logger.warning("[ScanDelegate.handleDiscovery]\033[1;33;40mMqtt Exception:%s\033[0m" % (Exception,e)) + reconnect_mqtt() + #print "%s,%s:%s" % (MQTTServer,MQTTPort,json.dumps(data)) + else: + logger.info("[ScanDelegate.handleDiscovery]Position data sended %s,%s:%s" % (MQTTServer,MQTTPort,json.dumps(data))) + #lastDiscoveryTime = time.time() def on_connect(client,userdata,flags,rc): client.subscribe(CMDTITLE) - print("Connected with resut code " + str(rc)) + #print("Connected with resut code " + str(rc)) logger.info("[MqttClient.on_connect] Mqtt Connected with resut code " + str(rc)) def on_disconnect(client, userdata, rc): - print "Mqtt Disconnected..." + #print "Mqtt Disconnected..." logger.info("[MqttClient.on_disconnect]Mqtt Disconnected...") def on_message(client,userdata,msg): - print "\033[1;31;40m[get] topic %s , payload:%s\033[0m" % (msg.topic, str(msg.payload)) - logger.debug("[MqttClient.on_message]\033[1;31;40mget topic %s , payload:%s\033[0m" % (msg.topic, str(msg.payload))) + #print "\033[1;31;40m[get] topic %s , payload:%s\033[0m" % (msg.topic, str(msg.payload)) + logger.debug("[MqttClient.on_message]get topic\033[1;32;40m%s\033[0m,payload:%s" % (msg.topic, str(msg.payload))) if msg.topic == CMDTITLE: - print "\033[1;31;40m[get] %s \033[0m" % (str(msg.payload),) - logger.debug("[MqttClient.on_meesage]\033[1;31;40m runcmd2 going to deal with %s \033[0m" % (str(msg.payload),)) + #print "\033[1;31;40m[get] %s \033[0m" % (str(msg.payload),) + logger.debug("[MqttClient.on_meesage]runcmd2 going to deal with %s" % (str(msg.payload),)) runcmd2(str(msg.payload)) class MyListener(object): - # def remove_service(self, zeroconf, type, name): - # pass - def add_service(self, zeroconf, type, name): global MQTTServer,MQTTPort,client info = zeroconf.get_service_info(type, name) - #log sth - logger.info("[MyListerner.add_service]Service %s added, service info: %s" % (name, info)) + logger.debug("[MyListerner.add_service]Service \033[1;32;40m%s\033[0m added, service info: \033[1;32;40m%s\033[0m" % (name, info)) if info.server != MQTTServer or info.port != MQTTPort: - #log sth - print "\033[1;31;40m received new address from zeroconf so need to change to new mqtt server : %s:%s\033[0m" % (info.server,info.port) - logger.info("[MyListener.add_service]\033[1;31;40m received new address from zeroconf so need to change to new mqtt server : %s:%s\033[0m" % (info.server,info.port)) + #print "\033[1;31;40m received new address from zeroconf so need to change to new mqtt server : %s:%s\033[0m" % (info.server,info.port) + logger.info("[MyListener.add_service]received new address from zeroconf so need to change to new mqtt server : %s:%s\033[0m" % (info.server,info.port)) MQTTServer = info.server MQTTPort = info.port res = reconnect_mqtt() @@ -261,11 +255,11 @@ def add_service(self, zeroconf, type, name): write_conf('MQTT','server',MQTTServer) write_conf('MQTT','port',MQTTPort) except Exception,e: - logger.warning('[Mylistener.add_service]Failed to write mqtt new address back to conf file:%s,%s' % (MQTTServer,MQTTPort)) - print "\033[1;31;40m failed to write back new mqtt server : %s:%s\033[0m" % (Exception,e) + logger.warning('[Mylistener.add_service]\033[1;33;40mFailed to write mqtt new address back to conf file:%s,%s\033[0m' % (MQTTServer,MQTTPort)) + #print "\033[1;31;40m failed to write back new mqtt server : %s:%s\033[0m" % (Exception,e) else: - logger.info('[MyListener.add_service]Failed to reconnect to new mqtt server:%s,%s'% (MQTTServer,MQTTPort)) - print "\033[1;31;40m failed to reconnect to new mqtt server : %s:%s\033[0m" % (Exception,e) + logger.warning('[MyListener.add_service]\033[1;33;40mFailed to reconnect to new mqtt server:%s,%s\033[0m'% (MQTTServer,MQTTPort)) + #print "\033[1;31;40m failed to reconnect to new mqtt server : %s:%s\033[0m" % (Exception,e) def runcmd2(data): @@ -274,20 +268,21 @@ def runcmd2(data): global cameraReviewed global hasCamera #print "\033[0;32;40m looping in runcmd %s while \033[0m" % (q,) - print "\033[0;32;40m runcmd2 get %s \033[0m" % (data,) + #print "\033[0;32;40m runcmd2 get %s \033[0m" % (data,) if data.startswith('update'): - print "\033[0;32;40mget cmd as %s \033[0m" % (data,) - logger.info("[runcmd2]\033[0;32;40mget cmd as %s \033[0m" % (data,)) + #print "\033[0;32;40mget cmd as %s \033[0m" % (data,) + logger.info("[runcmd2]get cmd \033[1;32;40m%s \033[0m" % (data,)) #parse args update -f[filename]* -m[md5_sum]* -i[ip/domain] -p[port]* -r[random range] -v[version]* ArgsDict = parseArgs2Dict(data.lstrip('update')) if (not ArgsDict.has_key('f')) or (ArgsDict.has_key('i') and (not ArgsDict.has_key('p'))) or (not ArgsDict.has_key('v')) or (not ArgsDict.has_key('m')): #shoule rase Exception ,return and exit #print "Error: lack some para" - logger.warning('[runcmd2]update cmd lack some para: %s' % (data,)) + logger.warning('[runcmd2]\033[1;33;40mupdate cmd lack some para: %s\033[0m' % (data,)) return try: if float(ArgsDict['v']) > version: - print "\033[0;32;40m new version upgrade command received \033[0m" + #print "\033[0;32;40m new version upgrade command received \033[0m" + logger.info("[runcmd2]new version upgrade command received") if not ArgsDict.has_key('i'): ArgsDict['i'] = MQTTServer if not ArgsDict.has_key('p'): @@ -296,27 +291,26 @@ def runcmd2(data): ArgsDict['r'] = 600 update_self(ArgsDict['f'],ArgsDict['m'],ArgsDict['v'],ArgsDict['i'],ArgsDict['p'],int(ArgsDict['r'])) else: - print "033[0;32;40m current version : %f, order version :%f\033[0m " % (version,float(ArgsDict['v'])) - logger.debug("[runcmd2]033[0;32;40m current version : %f, order version :%f\033[0m " % (version,float(ArgsDict['v']))) + logger.warning("[runcmd2]\033[1;33;40m current version : %f, order version :%f\033[0m " % (version,float(ArgsDict['v']))) except Exception,e: - print "\033[0;32;40m runcmd2 judging params get %s:%s\033[0m" % (Exception,e) - logger.warning('[runcmd2]judging params get %s:%s' % (Exception,e)) + #print "\033[0;32;40m runcmd2 judging params get %s:%s\033[0m" % (Exception,e) + logger.warning('[runcmd2]\033[1;33;40mjudging params get %s:%s\033[0m' % (Exception,e)) else : try: cmd = json.loads(data) except Exception,e: #print "\033[0;32;40m runcmd2 cannot cover cmd %s to json\033[0m" % (data,) - logger.warning('[runcmd2]cannot loads cmd to json:%s' % (data,)) + logger.warning('[runcmd2]\033[1;33;40mcannot loads cmd to json:%s\033[0m' % (data,)) if cmd['cmd'] == 'capture' : - print "\033[0;32;40m runcmd2 capture cmd2 received\033[0m" - logger.debug('[runcmd2]received capture cmd:%s' % (data,)) + #print "\033[0;32;40m runcmd2 capture cmd2 received\033[0m" + logger.info('[runcmd2]received capture cmd:%s' % (data,)) #get photo if cmd['ap'] == stationAlias : #print "\033[0;32;40m capture cmd2 received and going to capture\033[0m" - logger.debug('[rumcmd2]demanded to capture') + logger.info('[rumcmd2]demanded to capture') #print "\033[0;32;40m H:%s, %s ; V:%s, %s\033[0m" % (picResolutionH,type(picResolutionH),picResolutionV,type(picResolutionV)) - logger.debug("\033[0;32;40m H:%s, %s ; V:%s, %s\033[0m" % (picResolutionH,type(picResolutionH),picResolutionV,type(picResolutionV))) + logger.debug("[runcmd2]capture resolution:\033[1;32;40m H:%s, %s ; V:%s, %s\033[0m" % (picResolutionH,type(picResolutionH),picResolutionV,type(picResolutionV))) now = int(time.time()) filename = '%s_%s.jpg' % (cmd['bracelet'],now) #take_photo(filename,picUploadDir,picResolutionV,picResolutionH,cameraReviewed,hottime) @@ -324,65 +318,77 @@ def runcmd2(data): #if not cameraReviewed: # cameraReviewed = True if hasCamera: - print "\033[0;32;40m has Camera and going to capture:\033[0m" + #print "\033[0;32;40m has Camera and going to capture:\033[0m" try: take_photo(filename,picUploadDir,picResolutionV,picResolutionH,cameraReviewed,hottime) #print "\033[0;32;40m Capture ? %s " % (re,) except Exception,e: - print "\033[0;32;40m Capture get Exception:%s:%s\033[0m" % (Exception,e) - logger.warning("[runcm2]Capture get Exception:%s:%s" % (Exception,e)) + #print "\033[0;32;40m Capture get Exception:%s:%s\033[0m" % (Exception,e) + logger.warning("[runcm2]\033[1;33;40mCapture get Exception:%s:%s\033[0m" % (Exception,e)) else: #print "\033[0;32;40m Capture ? %s " % (re,) #if re: - logger.debug("[runcmd2]take photo suc") + logger.info("[runcmd2]take photo suc") if cmd.has_key('url'): res = send_photo_url(filename,picUploadDir,cmd['url'],now) if res: - logger.debug("[send_photo_url]suc") + logger.info("[send_photo_url]suc") else: - logger.debug("[send_photo_url]suc") + logger.warning("[send_photo_url]\033[1;33;40mFailed\033[0m") else: res = send_photo(filename,picUploadDir,picUploadServer,picUploadPort,cmd['ap'],cmd['bracelet'],now) if res: - logger.debug("[send_photo]suc") + logger.info("[send_photo]suc") else: - logger.debug("[send_photo]suc") + logger.warning("[send_photo]\033[1;33;40mFailed\033[0m") - print "\033[0;32;40msend_photo done\033[0m" + #print "\033[0;32;40msend_photo done\033[0m" if not cameraReviewed: cameraReviewed = True else: - print "\033[0;32;40m no camera and ignore capture \033[0m" - #log sth + #print "\033[0;32;40m no camera and ignore capture \033[0m" + logger.warning("[rumcmd2]\033[1;33;40m capture cmd got but I did't have a camera!\033[0m") #return sth to server? - pass def update_self(filename,md5_sum,version,ip=MQTTServer,port=8000,ran=600): global stationAlias try: rdl = download(filename,md5_sum,ip,port,ran) except Exception,e: - print "download got error : %s, %s " % (Exception,e) + #print "download got error : %s, %s " % (Exception,e) + logger.warning("[update_self]\033[1;33;40m Download file %s got error: %s,%s\033[0m" % (filename,Exception,e)) + #should report to server? if rdl['status'] == 'OK': - print "\033[0;32;40mDownload %s Successfully...\033[0m" % (filename,) + #print "\033[0;32;40mDownload %s Successfully...\033[0m" % (filename,) + logger.info("[update_self]Download file %s Successfully" % (filename,)) rdp = deploy(filename) if rdp['status'] == 'OK': - print "\033[0;32;40mDeploy Successfully...\nPreparing to remove the %s restart the program...\033[0m" % (filename,) - if os.path.exists(filename): - os.remove(filename) + #print "\033[0;32;40mDeploy Successfully...\nPreparing to remove the %s restart the program...\033[0m" % (filename,) + logger.info("[update_self]Deploy Successfully.") + try: + if os.path.exists(filename): + os.remove(filename) + except Exception,e: + logger.warning("[update_self]\033[1;33;40mException caught during reomove file%s:%s,%s]033[0m" % (filename,Exception,e)) + else: + logger.info("[update_self]Removed file%s" % (filename,)) #write back the alias ID - write_conf('station','alias',stationAlias) + try: + write_conf('station','alias',stationAlias) + except Exception,e: + logger.warning("[update_self]\033[1;33;40mcannot write stationAlias %s bakc to conf file \033[0m and going to restart raspi." % (stationAlias,)) + else: + logger.info("[update_self]Wrote stationAlias %s back to conf file and going to call restart_raspi()" % (stationAlias,)) restart_raspi() #restart_program() else: - #TODO - #log sth - pass + logger.warning("[update_self]\033[1;33;40mFailed to deploy file %s.\033[0m" % (filename,)) + #should report to server? else: - #log sth #TODO - pass + logger.warning("[update_self]\033[1;33;40mFailed to download file %s.\033[0m" % (filename,)) + #should report to server? class MqttClient(threading.Thread): @@ -406,15 +412,15 @@ def run(self): try: client.connect(self.server,self.port,self.alivetime) except Exception,e: - #log sth - print "\033[1;31;40mmqtt connect error (%s,%s) %s:%s\033[0m try reconnect" % (MQTTServer,MQTTPort,Exception,e) + #print "\033[1;31;40mmqtt connect error (%s,%s) %s:%s\033[0m try reconnect" % (MQTTServer,MQTTPort,Exception,e) + logger.warning("[MqttClient.run]\033[1;33;40m mqtt server %s:%s connect error: %s,%s\033[0m and going to reconnect" % (MQTTServer,MQTTPort,Exception,e)) reconnect_mqtt() while True: try: client.loop(timeout=self.timeout) except Exception,e: - #log sth - print "\033[1;31;40mmqtt loop error (%s,%s) %s:%s\033[0m try reconnect" % (MQTTServer,MQTTPort,Exception,e) + #print "\033[1;31;40mmqtt loop error (%s,%s) %s:%s\033[0m try reconnect" % (MQTTServer,MQTTPort,Exception,e) + logger.warning("[MqttClient.run]\033[1;33;40mmqtt %s:%s loop wrror: %s,%s\033[0m and going to reconnect" % (MQTTServer,MQTTPort,Exception,e)) reconnect_mqtt() @@ -431,8 +437,10 @@ def run(self): global hasCamera if has_camera(): hasCamera = True + logger.debug("[heartBeat.run]I got a camera!") else: hasCamera =False + logger.debug("[heartBeat.run]Oooops,I haven't got a camera") while True: nowtime = time.time() heartbeat = get_system_info() @@ -448,11 +456,12 @@ def run(self): try: client.publish(HEARTBEATTITLE,json.dumps(heartbeat)) #print "\033[1;31;40mheartbeat %s\033[0m" % (json.dumps(heartbeat),) - logger.debug("[heartbeat]\033[1;31;40m%s\033[0m"% (json.dumps(heartbeat)),) except Exception,e: #print "\033[1;31;40mMqtt Exception:%s\033[0m" % (Exception,e) logger.warning("[heartbeat]\033[1;31;40mMqtt Exception:%s,%s\033[0m" % (json.dumps(heartbeat),)) reconnect_mqtt() + else: + logger.debug("[heartbeat]\033[1;34;40m%s\033[0m"% (json.dumps(heartbeat)),) time.sleep(heartbeatSleeptime) if __name__=='__main__': global starttime @@ -485,23 +494,21 @@ def run(self): s.setblocking(0) except socket.error as msg: #print "socket error:%s" % (msg,) - logger.warning("[main]socket error %s" % (msg,)) + logger.warning("[__main__]\033[1;33;40msocket error %s\033[0m" % (msg,)) reconnect_count = 0 lastDiscoveryTime=0 try: callscanner = Scanner().withDelegate(ScanDelegate()) except Exception,e: - print "\033[0;32;40m main:BLEscanner init:%s,%s\033[0m" % (Exception,e) - logger.warning("[main] BLEScan init error:%s,%s " % (Exception,e)) + #print "\033[0;32;40m main:BLEscanner init:%s,%s\033[0m" % (Exception,e) + logger.warning("[main]\033[1;33;40mBLEScan init error:%s,%s\033[0m" % (Exception,e)) count =0 while True: try: devices = callscanner.scan(scannerScanTime) - logger.info("[main] log test") except Exception,e: - #print e - print "\033[0;32;40m main:callscanner:scan %s,%s\033[0m and going to sleep 5s and scan again" % (Exception,e) - logger.warning("[main]callscanner:scan %s,%s and going to sleep 5s and scan again" % (Exception,e)) + #print "\033[0;32;40m main:callscanner:scan %s,%s\033[0m and going to sleep 5s and scan again" % (Exception,e) + logger.warning("[main]\033[1;33;40mcallscanner:scan %s,%s and going to sleep 5s and scan again\033[0m" % (Exception,e)) time.sleep(5) diff --git a/py/func.py b/py/func.py index d6f45cb..fb3ee08 100644 --- a/py/func.py +++ b/py/func.py @@ -37,9 +37,10 @@ def get_ip_address(ifname): struct.pack('256s', ifname[:15]) )[20:24]) except Exception,e: - #print Exception,e - print "\033[0;32;40m get_ip_address %s:%s %s\033[0m" % (ifname,Exception,e) - res = '127.0.0.1' + #print Exception,e + #print "\033[0;32;40m get_ip_address %s:%s %s\033[0m" % (ifname,Exception,e) + logger_func.warning("[get_ip_address]\033[1;33;40mget_ip_address(%s):%s,%s\033[0m" % (ifname,Exception,e)) + res = '127.0.0.1' return res @@ -55,13 +56,13 @@ def get_mac_address(st,*args): a = os.popen('ifconfig | awk "/^' + st + '/{print \$5}"') b = a.readline().rstrip() if len(args)>0: - deli = args[0] - return b.replace(':',deli) + deli = args[0] + return b.replace(':',deli) return b.replace(':','') def get_ifname(st): - a = os.popen('ifconfig | awk "/^' + st + '/{print \$1}"') - return a.readline().rstrip() + a = os.popen('ifconfig | awk "/^' + st + '/{print \$1}"') + return a.readline().rstrip() def checksum(b): @@ -79,7 +80,9 @@ def checksum(b): def restart_program(): """Restarts the current program. Note: this function does not return. Any cleanup action (like - saving data) must be done before calling this function.""" + saving data) must be done before calling this function. + get some problem with multi-threads and not used. + """ python = sys.executable os.execl(python, python, * sys.argv) #os.execl("/usr/bin/sudo", python, * sys.argv) @@ -116,27 +119,33 @@ def read_chunks(fh): def download(filename,md5_sum,ip,port,ran): waittime = random.randrange(0,ran) - print "\033[0;32;40m sleep %ss\033[0m" % (waittime,) + #print "\033[0;32;40m sleep %ss\033[0m" % (waittime,) + logger_func.debug("[download]going to sleep\033[1;32;40m%s\033[0m" % (waittime,)) time.sleep(waittime) - print "\033[0;32;40m sleep %ss done\033[0m" % (waittime,) + #print "\033[0;32;40m sleep %ss done\033[0m" % (waittime,) try: url = 'http://%s:%s/%s' % (ip,port,filename) urllib.urlretrieve(url,filename) - print "\033[0;32;40m download suc\033[0m " + #print "\033[0;32;40m download suc\033[0m " except Exception,e: #print "\033[0;32;40m runcmd \033[0m" - print "\033[0;32;40m download ERROR %s:%s\033[0m" % (Exception,e) - client.publish('ap','download error %s,%s' % (Exception,e)) + #print "\033[0;32;40m download ERROR %s:%s\033[0m" % (Exception,e) + #TODO:return sth to server + #client.publish('ap','download error %s,%s' % (Exception,e)) + logger_func.warning("[download]\033[1;33;40mCannot download file %s:%s,%s\033[0m" % (filename,Exception,e)) return {'status':'Error','Info':"cannot download file %s:%s,%s" % (filename,Exception,e)} - + else: + logger_func.info("[download]Download succ") md5OfFile = md5sum(filename) if md5OfFile == md5_sum: - print "\033[0;32;40m download md5 check ok\033[0m " + #print "\033[0;32;40m download md5 check ok\033[0m " + logger_func.info("[download]md5 check ok") return {'status':'OK'} else: - print "\033[0;32;40m download md5 check failure receive:%s file:%s\033[0m "% (md5_sum,md5OfFile) + #print "\033[0;32;40m download md5 check failure receive:%s file:%s\033[0m "% (md5_sum,md5OfFile) + logger_func.warning("[download]\033[1;33;40mmd5 wrong, received:%s, received file:%s \033[0m" % (md5_sum,md5OfFile)) return {'status':'Error','Info': 'md5 of file:%s , md5 providd:%s, doesn\'t match.' % (md5OfFile,md5_sum)} - + def extract(tar_path, target_path): try: tar = tarfile.open(tar_path, "r") @@ -145,23 +154,28 @@ def extract(tar_path, target_path): tar.extract(file_name, target_path) tar.close() except Exception, e: - print "\033[0;32;40m extract Exception:%s %s\033[0m" % (Exception,e) - raise Exception, e + #print "\033[0;32;40m extract Exception:%s %s\033[0m" % (Exception,e) + logger_func.warning("[extract]\033[1;33;40mExtract %s:%s,%s\033[0m" % (file_name,Exception,e)) + #raise Exception, e def deploy(filename): try: extract(filename,cur_file_dir()) except Exception,e: - print "\033[0;32;40m deploy Exception:%s %s\033[0m" % (Exception,e) - #pass - return {'status':'OK'} + #print "\033[0;32;40m deploy Exception:%s %s\033[0m" % (Exception,e) + logger_func.warning("[deploy]\033[1;33;40mDeploy %s:%s,%s\033[0m" % (filename,Exception,e)) + return {'status':'ERROR'} + else: + return {'status':'OK'} def parseArgs2Dict(cmd_line): args_array = cmd_line.split() args_hash = {} - for i in args_array: + for i in args_array: if i.startswith('-'): args_hash[i[1]] = i[2:] + else: + logger_func.warning("[parseArgs2Dict]\033[1;33;40msome para not start with '-':%s\033[0m" % (cmd_line,)) return args_hash def cur_file_dir(): @@ -176,9 +190,8 @@ def take_photo(filename,filedir,picResolutionV,picResolutionH,cameraReviewed,hot camera = picamera.PiCamera() #print pic except Exception,e: - #log sth - #camera.close() - print "\033[0;32;40mError from take_photo: %s, %s \033[0m" % (Exception,e) + #print "\033[0;32;40mError from take_photo: %s, %s \033[0m" % (Exception,e) + logger_func.error("[take_photo]\033[0;31;40mCannot Init Picamera:%s,%s\033[0m" % (Exception,e)) return False else: camera.resolution = (picResolutionH,picResolutionV) @@ -191,35 +204,44 @@ def take_photo(filename,filedir,picResolutionV,picResolutionH,cameraReviewed,hot else: camera.capture('%s/%s/%s' % (cur_file_dir(),filedir,filename,)) camera.close() + logger_func.info("[take_photo]Capture succ") return True def send_photo(filename,filedir,ip,port,bsid,bcid,now): pic = open('%s/%s/%s' % (cur_file_dir(),filedir,filename)) url_path = 'http://%s:%s/photo/%s?bracelets=%s&time=%s' % (ip,port,bsid,bcid,now) - print "\033[1;31;40mURL:%s\033[0m" % (url_path,) + #print "\033[1;31;40mURL:%s\033[0m" % (url_path,) + logger_func.debug("[send_photo]URL:\033[1;32;40m%s\033[0m" % (url_path,)) res = requests.post(url = url_path, data=pic, headers={'Content-Type': 'image/jpeg'}) - print "\033[1;31;40m%s \033[0m " % (res,) - print "\033[1;31;40m%s \033[0m " % (res.status_code,) + #print "\033[1;31;40m%s \033[0m " % (res,) + #print "\033[1;31;40m%s \033[0m " % (res.status_code,) if res.status_code == 200 : os.remove('%s/%s/%s' % (cur_file_dir(),filedir,filename)) + logger_func.info("[send_photo]Send photo succ,status_code:%s" % (res.status_code,)) + logger_func.debug("[send_photo]send photo suc, res:%s" % (res,)) return True else: + logger_func.error("[send_photo]\033[1;31;40mFailed to send photo %s:%s\033[0m" % (filename,res)) return False def send_photo_url(filename,filedir,url,now): pic = open('%s/%s/%s' % (cur_file_dir(),filedir,filename)) url_path ="%s%s" % (url,now) - print "\033[1;31;40mURL:%s\033[0m" % (url_path,) + #print "\033[1;31;40mURL:%s\033[0m" % (url_path,) + logger_func.debug("[send_photo_url]URL received:\033[1;32;40murl_path\033[0m" % (url_path,)) res = requests.post(url = url_path, data=pic, headers={'Content-Type': 'image/jpeg'}) - print "\033[1;31;40m%s \033[0m " % (res,) - print "\033[1;31;40m%s \033[0m " % (res.status_code,) + #print "\033[1;31;40m%s \033[0m " % (res,) + #print "\033[1;31;40m%s \033[0m " % (res.status_code,) if res.status_code == 200 : os.remove('%s/%s/%s' % (cur_file_dir(),filedir,filename)) + logger_func.info("[send_photo_url]Send photo succ,status_code:%s" % (res.status_code,)) + logger_func.debug("[send_photo_url]send photo suc, res:%s" % (res,)) return True else: + logger_func.error("[send_photo_url]\033[1;31;40mFailed to send photo %s:%s\033[0m" % (filename,res)) return False def get_cpu_temp(): tempFile = open( "/sys/class/thermal/thermal_zone0/temp" ) @@ -232,14 +254,16 @@ def get_gpu_temp(): return round(float(gpu_temp),1) def has_camera(): - try: - c = picamera.PiCamera() - except Exception,e: - print "\033[0;32;40m has_camera Exception:%s %s\033[0m" % (Exception,e) - return False - else: + try: + c = picamera.PiCamera() + except Exception,e: + #print "\033[0;32;40m has_camera Exception:%s %s\033[0m" % (Exception,e) + logger_func.debug("[has_camera]I didn't have a camera o~") + return False + else: c.close() - return True + logger_func.debug("[has_camera]I have a camera yeah~") + return True def getRAMinfo(): p = os.popen('free') @@ -252,6 +276,7 @@ def getRAMinfo(): b = line.split()[1:6] b.append(v.readline()) return b + def getCPUuse(): return(str(os.popen("top -n1 | awk '/Cpu\(s\):/ {print $2}'").readline().strip())) @@ -271,53 +296,53 @@ def osUptime(): return round(float(sec)/60.0,1) def get_system_info(): - heartbeatInfo = {} - CPU_usage = getCPUuse() - - RAM_stats = getRAMinfo() - RAM_total = round(int(RAM_stats[0]) / 1000,1) - RAM_used = round(int(RAM_stats[1]) / 1000 + int(RAM_stats[4])/1000,1) - RAM_free = round(int(RAM_stats[2]) / 1000,1) - RAM_bufcch = round(int(RAM_stats[4])/ 1000,1) - free_version = RAM_stats[5] - # Disk information - DISK_stats = getDiskSpace() - DISK_total = DISK_stats[0] - DISK_used = DISK_stats[1] - DISK_perc = DISK_stats[3] - - #stationID,scriptversion,mqtt listening - - #heartbeatInfo['ip'] = get_ip_address('wlan0') - #heartbeatInfo['mac'] = get_mac_address(':') + heartbeatInfo = {} + CPU_usage = getCPUuse() + + RAM_stats = getRAMinfo() + RAM_total = round(int(RAM_stats[0]) / 1000,1) + RAM_used = round(int(RAM_stats[1]) / 1000 + int(RAM_stats[4])/1000,1) + RAM_free = round(int(RAM_stats[2]) / 1000,1) + RAM_bufcch = round(int(RAM_stats[4])/ 1000,1) + free_version = RAM_stats[5] + # Disk information + DISK_stats = getDiskSpace() + DISK_total = DISK_stats[0] + DISK_used = DISK_stats[1] + DISK_perc = DISK_stats[3] + + #stationID,scriptversion,mqtt listening + + #heartbeatInfo['ip'] = get_ip_address('wlan0') + #heartbeatInfo['mac'] = get_mac_address(':') #heartbeatInfo['mac'] = get_mac_address(MacFilter,':') - temp = {} - heartbeatInfo['temp'] = temp - temp['cpu'] = str(get_cpu_temp()) - temp['gpu'] = str(get_gpu_temp()) - heartbeatInfo['timestamp'] = int(time.time()) - - heartbeatInfo['features'] = [] - #if has_camera(): - # heartbeatInfo['features'].append('camera') - #heartbeatInfo['hasCamera'] = str(has_camera()) - heartbeatInfo['cpu_load'] = "%s %s" % (CPU_usage,"%") - RamInfo = {} - heartbeatInfo['ram'] = RamInfo - RamInfo['total'] = "%s %s" % (str(RAM_total),'MB') - RamInfo['used'] = "%s %s" % (str(RAM_used),'MB') - RamInfo['free'] = "%s %s" % (str(RAM_free),'MB') - RamInfo['buffcache'] = "%s %s" % (str(RAM_bufcch),'MB') - RamInfo['used_perc'] = "%s %s" % (str(round(RAM_used/RAM_total*100,1)),'%') - DiskInfo = {} - heartbeatInfo['DiskInfo'] = DiskInfo - DiskInfo['DiskTotal'] = "%s%s" % (str(DISK_total),'B') - DiskInfo['DiskUsed'] = "%s%s" % (str(DISK_used),'B') - DiskInfo['DiskUsedPerc'] = str(DISK_perc) - #heartbeatInfo['os_uptime'] = "%s min" % (str(osUptime()),) - heartbeatInfo['os_uptime'] = "%s min" % (str(psutil.cpu_percent(interval=1)),) - - #print json.dumps(heartbeatInfo,indent=4) + temp = {} + heartbeatInfo['temp'] = temp + temp['cpu'] = str(get_cpu_temp()) + temp['gpu'] = str(get_gpu_temp()) + heartbeatInfo['timestamp'] = int(time.time()) + + heartbeatInfo['features'] = [] + #if has_camera(): + # heartbeatInfo['features'].append('camera') + #heartbeatInfo['hasCamera'] = str(has_camera()) + heartbeatInfo['cpu_load'] = "%s %s" % (CPU_usage,"%") + RamInfo = {} + heartbeatInfo['ram'] = RamInfo + RamInfo['total'] = "%s %s" % (str(RAM_total),'MB') + RamInfo['used'] = "%s %s" % (str(RAM_used),'MB') + RamInfo['free'] = "%s %s" % (str(RAM_free),'MB') + RamInfo['buffcache'] = "%s %s" % (str(RAM_bufcch),'MB') + RamInfo['used_perc'] = "%s %s" % (str(round(RAM_used/RAM_total*100,1)),'%') + DiskInfo = {} + heartbeatInfo['DiskInfo'] = DiskInfo + DiskInfo['DiskTotal'] = "%s%s" % (str(DISK_total),'B') + DiskInfo['DiskUsed'] = "%s%s" % (str(DISK_used),'B') + DiskInfo['DiskUsedPerc'] = str(DISK_perc) + #heartbeatInfo['os_uptime'] = "%s min" % (str(osUptime()),) + heartbeatInfo['os_uptime'] = "%s min" % (str(psutil.cpu_percent(interval=1)),) + + #print json.dumps(heartbeatInfo,indent=4) return heartbeatInfo @@ -326,10 +351,12 @@ def write_conf(node,key,value): fh = open('t.cnf','w') conf.set(node,key,value) conf.write(fh) - except: + except Exception,e: #log sth + logger_func.error("[write_conf]\033[1;31;40mCannot write %s back as %s.%s for:%s,%s\033[0m" % (value,node,key,Exception,e)) return False else: + logger_func.debug("[write_conf]Write back %s as %s.%s Succ" % (value,node,key)) return True finally: fh.close() diff --git a/py/var.py b/py/var.py index d7dd349..a65e8b1 100644 --- a/py/var.py +++ b/py/var.py @@ -56,6 +56,7 @@ picUploadPort = conf.get('camera','upload_port') picUploadDir = conf.get('camera','tmp_dir') hottime = float(conf.get('camera','hottime')) + #def write_conf(node,key,value): # try: # fh = open('t.cnf','w') From 6e8f9e0a511cf093e9d15f701f05c74af3875121 Mon Sep 17 00:00:00 2001 From: littlepinkyl Date: Thu, 12 Jan 2017 20:55:30 +0800 Subject: [PATCH 3/4] log completed but some kind of redundent.Fixed a bug.More log collection should be considered. --- py/demo.py | 53 +++++++++++--------- py/func.py | 138 ++++++++++++++++++++++++++++------------------------- py/t.cnf | 4 +- py/var.py | 67 +++++++++++++++++++++----- 4 files changed, 159 insertions(+), 103 deletions(-) diff --git a/py/demo.py b/py/demo.py index 2a12b1e..db0b9cf 100644 --- a/py/demo.py +++ b/py/demo.py @@ -17,10 +17,7 @@ import picamera import json import re -from func import * -from var import * -from depdata import * -from depconfig import * +#from func import * import logging from logging.handlers import TimedRotatingFileHandler @@ -35,7 +32,7 @@ logger.addHandler(console) #Rthandler = RotatingFileHandler('demo.log',maxBytes=10*1024*1024,backupCount=5) Trthandler = TimedRotatingFileHandler(filename='demo',when='D',interval=1,backupCount=7) -Trthandler.suffix = "%Y-%m-%d" +Trthandler.suffix = "%Y%m%d.log" #Trthandler.extMatch = re.compile(r"^\d{4}-\d{2}-\d{2}.log$") #Trthandler.extMatch = re.compile(r"^\d{4}-\d{2}-\d{2}$") Trthandler.extMatch = r"^\d{4}-\d{2}-\d{2}$" @@ -44,6 +41,14 @@ Trthandler.setFormatter(log_formatter) logger.addHandler(Trthandler) logger.setLevel(logging.DEBUG) +try: + from var import * + from func import * + from depdata import * + from depconfig import * +except Exception,e: + logger.critical("\033[1;31;40mCannot import:%s,%s\033[0m" % (Exception,e)) + quit() global stationAlias global reconnect_count @@ -83,7 +88,7 @@ def reconnect(): s.connect((depHost,depPort)) except socket.error as msg: #print"socket reconnect error : %s " % (msg,) - logger.warning("[reconnect\033[1;33;40m]socket reconnect:connect error : %s \033[0m" % (msg,)) + logger.warning("[reconnect\033[1;33;40m]socket reconnect:connect error %s,%s: %s \033[0m" % (depHost,depPort,msg)) def reconnect_mqtt(): global reconnect_count_mqtt @@ -120,7 +125,7 @@ def handleDiscovery(self, dev, isNewDev, isNewData): for (adtype,desc,value) in dev.getScanData(): data[desc]=value except UnicodeDecodeError,e: - pass + pass ##::here is new processing using depdata.py codes; if (data.has_key('Manufacturer')) and ( manu_filter(data.get('Manufacturer')) ): #if match the manufilter then start new processing: @@ -195,8 +200,8 @@ def handleDiscovery(self, dev, isNewDev, isNewData): logger.info("[ScanDelegate.handleDiscovery]Call data sended %s,%s:%s" % (MQTTServer,MQTTPort,json.dumps(callData))) #lastDiscoveryTime = time.time() elif data['Manufacturer'].startswith(outbodyFlag,6): - logger.info("[ScanDelegate.handleDiscovery]\033[1;34;40mOutbody data\033[0mget:%s" % (json.dumps(callData),)) outbodyData = data + logger.info("[ScanDelegate.handleDiscovery]\033[1;33;40mOutbody data\033[0mget:%s" % (json.dumps(outbodyData),)) try: client.publish(OUTBODYTITLE,json.dumps(outbodyData)) except Exception,e: @@ -209,13 +214,13 @@ def handleDiscovery(self, dev, isNewDev, isNewData): #change to send to mqtt immidiately #positionQ.put(json.dumps(data)) else: - logger.info("[ScanDelegate.handleDiscovery]\033[1;34;40mPosition data\033[0mget:%s" % (json.dumps(callData),)) + logger.info("[ScanDelegate.handleDiscovery]\033[1;32;40mPosition data\033[0m get:%s" % (json.dumps(data),)) try: client.publish(POSITIONTITLE,json.dumps(data)) except Exception,e: - #print "\033[1;31;40mMqtt Exception:%s\033[0m" % (Exception,e) - logger.warning("[ScanDelegate.handleDiscovery]\033[1;33;40mMqtt Exception:%s\033[0m" % (Exception,e)) - reconnect_mqtt() + #print "\033[1;31;40mMqtt Exception:%s\033[0m" % (Exception,e) + logger.warning("[ScanDelegate.handleDiscovery]\033[1;33;40msending position data %s get %s:%s\033[0m and trying to reconnect" % (json.dumps(data),Exception,e)) + reconnect_mqtt() #print "%s,%s:%s" % (MQTTServer,MQTTPort,json.dumps(data)) else: logger.info("[ScanDelegate.handleDiscovery]Position data sended %s,%s:%s" % (MQTTServer,MQTTPort,json.dumps(data))) @@ -232,10 +237,10 @@ def on_disconnect(client, userdata, rc): def on_message(client,userdata,msg): #print "\033[1;31;40m[get] topic %s , payload:%s\033[0m" % (msg.topic, str(msg.payload)) - logger.debug("[MqttClient.on_message]get topic\033[1;32;40m%s\033[0m,payload:%s" % (msg.topic, str(msg.payload))) + logger.debug("[MqttClient.on_message]get topic \033[1;32;40m%s\033[0m,payload:%s" % (msg.topic, str(msg.payload))) if msg.topic == CMDTITLE: #print "\033[1;31;40m[get] %s \033[0m" % (str(msg.payload),) - logger.debug("[MqttClient.on_meesage]runcmd2 going to deal with %s" % (str(msg.payload),)) + logger.debug("[MqttClient.on_message]runcmd2 going to deal with %s" % (str(msg.payload),)) runcmd2(str(msg.payload)) class MyListener(object): @@ -262,7 +267,6 @@ def add_service(self, zeroconf, type, name): #print "\033[1;31;40m failed to reconnect to new mqtt server : %s:%s\033[0m" % (Exception,e) def runcmd2(data): - #print "\033[0;32;40m runcmd2 \033[0m" global MQTTServer,MQTTPort global cameraReviewed @@ -324,18 +328,23 @@ def runcmd2(data): #print "\033[0;32;40m Capture ? %s " % (re,) except Exception,e: #print "\033[0;32;40m Capture get Exception:%s:%s\033[0m" % (Exception,e) - logger.warning("[runcm2]\033[1;33;40mCapture get Exception:%s:%s\033[0m" % (Exception,e)) + logger.error("[runcm2]\033[1;31;40mCapture get Exception:%s:%s\033[0m" % (Exception,e)) else: #print "\033[0;32;40m Capture ? %s " % (re,) #if re: logger.info("[runcmd2]take photo suc") if cmd.has_key('url'): - res = send_photo_url(filename,picUploadDir,cmd['url'],now) + logger.debug("[runcmd2]going to call send_photo_url") + try: + res = send_photo_url(filename,picUploadDir,cmd['url'],now) + except Exception,e: + logger.error("[runcmd2]\033[1;31;40msend_photo_url:%s,%s,%s,%s meet %s,%s\033[0m" % (filename,picUploadDir,cmd['url'],now,Exception,e)) if res: logger.info("[send_photo_url]suc") else: logger.warning("[send_photo_url]\033[1;33;40mFailed\033[0m") else: + logger.debug("[runcmd2]going to call send_photo for no url, cmd:\033[1;31;40n%s\033[0m" % (json.dumps(cmd),)) res = send_photo(filename,picUploadDir,picUploadServer,picUploadPort,cmd['ap'],cmd['bracelet'],now) if res: logger.info("[send_photo]suc") @@ -370,9 +379,9 @@ def update_self(filename,md5_sum,version,ip=MQTTServer,port=8000,ran=600): if os.path.exists(filename): os.remove(filename) except Exception,e: - logger.warning("[update_self]\033[1;33;40mException caught during reomove file%s:%s,%s]033[0m" % (filename,Exception,e)) + logger.warning("[update_self]\033[1;33;40mException caught during reomove file%s:%s,%s\033[0m" % (filename,Exception,e)) else: - logger.info("[update_self]Removed file%s" % (filename,)) + logger.info("[update_self]Removed file %s" % (filename,)) #write back the alias ID try: write_conf('station','alias',stationAlias) @@ -420,7 +429,7 @@ def run(self): client.loop(timeout=self.timeout) except Exception,e: #print "\033[1;31;40mmqtt loop error (%s,%s) %s:%s\033[0m try reconnect" % (MQTTServer,MQTTPort,Exception,e) - logger.warning("[MqttClient.run]\033[1;33;40mmqtt %s:%s loop wrror: %s,%s\033[0m and going to reconnect" % (MQTTServer,MQTTPort,Exception,e)) + logger.warning("[MqttClient.run]\033[1;33;40mmqtt %s:%s loop error: %s,%s\033[0m and going to reconnect" % (MQTTServer,MQTTPort,Exception,e)) reconnect_mqtt() @@ -458,7 +467,7 @@ def run(self): #print "\033[1;31;40mheartbeat %s\033[0m" % (json.dumps(heartbeat),) except Exception,e: #print "\033[1;31;40mMqtt Exception:%s\033[0m" % (Exception,e) - logger.warning("[heartbeat]\033[1;31;40mMqtt Exception:%s,%s\033[0m" % (json.dumps(heartbeat),)) + logger.warning("[heartbeat]\033[1;31;40mMqtt Exception:%s,%s [%s]\033[0m" % (MQTTServer,MQTTPort,json.dumps(heartbeat))) reconnect_mqtt() else: logger.debug("[heartbeat]\033[1;34;40m%s\033[0m"% (json.dumps(heartbeat)),) @@ -494,7 +503,7 @@ def run(self): s.setblocking(0) except socket.error as msg: #print "socket error:%s" % (msg,) - logger.warning("[__main__]\033[1;33;40msocket error %s\033[0m" % (msg,)) + logger.warning("[__main__]\033[1;33;40msocket error %s,%s:%s\033[0m" % (depHost,depPort,msg)) reconnect_count = 0 lastDiscoveryTime=0 diff --git a/py/func.py b/py/func.py index fb3ee08..8c7eb28 100644 --- a/py/func.py +++ b/py/func.py @@ -28,20 +28,20 @@ def get_ip_address(ifname): - s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - #try to avoid net drop exceptions - try: - res = socket.inet_ntoa(fcntl.ioctl( - s.fileno(), - 0x8915, # SIOCGIFADDR - struct.pack('256s', ifname[:15]) - )[20:24]) - except Exception,e: + s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + #try to avoid net drop exceptions + try: + res = socket.inet_ntoa(fcntl.ioctl( + s.fileno(), + 0x8915, # SIOCGIFADDR + struct.pack('256s', ifname[:15]) + )[20:24]) + except Exception,e: #print Exception,e #print "\033[0;32;40m get_ip_address %s:%s %s\033[0m" % (ifname,Exception,e) logger_func.warning("[get_ip_address]\033[1;33;40mget_ip_address(%s):%s,%s\033[0m" % (ifname,Exception,e)) res = '127.0.0.1' - return res + return res #def get_mac_address(*args): @@ -53,12 +53,12 @@ def get_ip_address(ifname): # return deli.join([mac[e:e+2] for e in range(0,11,2)]) def get_mac_address(st,*args): - a = os.popen('ifconfig | awk "/^' + st + '/{print \$5}"') - b = a.readline().rstrip() - if len(args)>0: + a = os.popen('ifconfig | awk "/^' + st + '/{print \$5}"') + b = a.readline().rstrip() + if len(args)>0: deli = args[0] return b.replace(':',deli) - return b.replace(':','') + return b.replace(':','') def get_ifname(st): a = os.popen('ifconfig | awk "/^' + st + '/{print \$1}"') @@ -66,16 +66,16 @@ def get_ifname(st): def checksum(b): - sum = 0 - for e in b: - sum += e - cc = bytearray.fromhex('{:04x}'.format(sum)) - b = bytearray([0]) - n = cc[-1] + sum = 0 + for e in b: + sum += e + cc = bytearray.fromhex('{:04x}'.format(sum)) + b = bytearray([0]) + n = cc[-1] # b[1]= n & 0xFF # n >>= 8 - b[0]= n & 0xFF - return b + b[0]= n & 0xFF + return b def restart_program(): """Restarts the current program. @@ -88,34 +88,34 @@ def restart_program(): #os.execl("/usr/bin/sudo", python, * sys.argv) def restart_raspi(): - os.system('shutdown -r 1') + os.system('shutdown -r 1') def md5sum(fname): - """ 计算文件的MD5值 - """ - def read_chunks(fh): - fh.seek(0) - chunk = fh.read(8096) - while chunk: - yield chunk - chunk = fh.read(8096) - else: #最后要将游标放回文件开头 - fh.seek(0) - m = hashlib.md5() - if isinstance(fname, basestring) \ - and os.path.exists(fname): - with open(fname, "rb") as fh: - for chunk in read_chunks(fh): - m.update(chunk) - #上传的文件缓存 或 已打开的文件流 - elif fname.__class__.__name__ in ["StringIO", "StringO"] \ - or isinstance(fname, file): - for chunk in read_chunks(fname): - m.update(chunk) - else: - return "" - return m.hexdigest() + """ 计算文件的MD5值 + """ + def read_chunks(fh): + fh.seek(0) + chunk = fh.read(8096) + while chunk: + yield chunk + chunk = fh.read(8096) + else: #最后要将游标放回文件开头 + fh.seek(0) + m = hashlib.md5() + if isinstance(fname, basestring) \ + and os.path.exists(fname): + with open(fname, "rb") as fh: + for chunk in read_chunks(fh): + m.update(chunk) + #上传的文件缓存 或 已打开的文件流 + elif fname.__class__.__name__ in ["StringIO", "StringO"] \ + or isinstance(fname, file): + for chunk in read_chunks(fname): + m.update(chunk) + else: + return "" + return m.hexdigest() def download(filename,md5_sum,ip,port,ran): waittime = random.randrange(0,ran) @@ -147,13 +147,13 @@ def download(filename,md5_sum,ip,port,ran): return {'status':'Error','Info': 'md5 of file:%s , md5 providd:%s, doesn\'t match.' % (md5OfFile,md5_sum)} def extract(tar_path, target_path): - try: - tar = tarfile.open(tar_path, "r") - file_names = tar.getnames() - for file_name in file_names: - tar.extract(file_name, target_path) - tar.close() - except Exception, e: + try: + tar = tarfile.open(tar_path, "r") + file_names = tar.getnames() + for file_name in file_names: + tar.extract(file_name, target_path) + tar.close() + except Exception, e: #print "\033[0;32;40m extract Exception:%s %s\033[0m" % (Exception,e) logger_func.warning("[extract]\033[1;33;40mExtract %s:%s,%s\033[0m" % (file_name,Exception,e)) #raise Exception, e @@ -179,11 +179,11 @@ def parseArgs2Dict(cmd_line): return args_hash def cur_file_dir(): - path = sys.path[0] - if os.path.isdir(path): - return path - elif os.path.isfile(path): - return os.path.dirname(path) + path = sys.path[0] + if os.path.isdir(path): + return path + elif os.path.isfile(path): + return os.path.dirname(path) def take_photo(filename,filedir,picResolutionV,picResolutionH,cameraReviewed,hottime): try: @@ -226,18 +226,24 @@ def send_photo(filename,filedir,ip,port,bsid,bcid,now): logger_func.error("[send_photo]\033[1;31;40mFailed to send photo %s:%s\033[0m" % (filename,res)) return False def send_photo_url(filename,filedir,url,now): - pic = open('%s/%s/%s' % (cur_file_dir(),filedir,filename)) + logger_func.info("[send_photo_url]begin in send_photo_url") + try: + pic = open('%s/%s/%s' % (cur_file_dir(),filedir,filename)) + except Exception,e: + logger_func.error("[send_photo_url]\033[1;31;40mCannot open file %s/%s/%s:%s,%s\033[0m" % (cur_file_dir(),filedir,filename,Exception,e)) + return False url_path ="%s%s" % (url,now) #print "\033[1;31;40mURL:%s\033[0m" % (url_path,) - logger_func.debug("[send_photo_url]URL received:\033[1;32;40murl_path\033[0m" % (url_path,)) - res = requests.post(url = url_path, - data=pic, - headers={'Content-Type': 'image/jpeg'}) + logger_func.debug("[send_photo_url]URL received:\033[1;32;40m%s\033[0m" % (url_path,)) + try: + res = requests.post(url = url_path, data=pic, headers={'Content-Type': 'image/jpeg'}) + except Exception,e: + logger_func.error("[send_photo_url]\033[1;31;40mPost Exception:%s,%s\033[0m" % (Exception,e)) #print "\033[1;31;40m%s \033[0m " % (res,) #print "\033[1;31;40m%s \033[0m " % (res.status_code,) if res.status_code == 200 : os.remove('%s/%s/%s' % (cur_file_dir(),filedir,filename)) - logger_func.info("[send_photo_url]Send photo succ,status_code:%s" % (res.status_code,)) + logger_func.info("[send_photo_url]Send photo succ,status_code:\033[1;32;40m%s\033[0m" % (res.status_code,)) logger_func.debug("[send_photo_url]send photo suc, res:%s" % (res,)) return True else: @@ -343,7 +349,7 @@ def get_system_info(): heartbeatInfo['os_uptime'] = "%s min" % (str(psutil.cpu_percent(interval=1)),) #print json.dumps(heartbeatInfo,indent=4) - return heartbeatInfo + return heartbeatInfo def write_conf(node,key,value): diff --git a/py/t.cnf b/py/t.cnf index d79db8a..d6cd35a 100644 --- a/py/t.cnf +++ b/py/t.cnf @@ -9,8 +9,8 @@ cmd_l = 100 call_l = 100 [MQTT] -#server = 10-8-47-94.local. -server = 192.168.1.135 +server = 10-8-47-94.local. +#server = 192.168.1.135 port = 1883 position_t = position cmd_t = ap diff --git a/py/var.py b/py/var.py index a65e8b1..cb60a1a 100644 --- a/py/var.py +++ b/py/var.py @@ -2,17 +2,27 @@ import ConfigParser import os,sys from func import cur_file_dir -#def cur_file_dir(): -# path = sys.path[0] -# if os.path.isdir(path): -# return path -# elif os.path.isfile(path): -# return os.path.dirname(path) +import logging + + conf = ConfigParser.ConfigParser() conf.read('%s/%s'% (cur_file_dir(),'t.cnf')) + +##############################3 +# +# station +# +############################### version = round(float(conf.get('station','version')),1) MacFilter = conf.get('station','mac_filter') +stationAlias=conf.get('station','alias') + +############################### +# +# MQTT +# +############################### POSITIONTITLE = conf.get("MQTT","position_t") CMDTITLE = conf.get("MQTT","cmd_t") CALLTITLE = conf.get("MQTT","call_t") @@ -22,15 +32,18 @@ PositionQueueLength = int(conf.get("queue",'position_l')) CommandQueueLength = int(conf.get("queue",'cmd_l')) CallQueueLength = int(conf.get("queue","call_l")) -#global MQTTserver -#global MQTTPort MQTTServer = conf.get('MQTT','server') if conf.has_option('MQTT','port'): MQTTPort = int(conf.get('MQTT','port')) else: MQTTPort = 1883 -stationAlias=conf.get('station','alias') + +############################### +# +# time +# +############################### mqttClientKeepAliveTime = int(conf.get('time','thread_mqtt_keepalive_time')) mqttClientLoopSleepTime = float(conf.get('time','thread_mqtt_loop_sleeptime')) mqttClientLoopTimeout = float(conf.get('time','thread_mqtt_loop_timeout')) @@ -38,12 +51,42 @@ cmdSleepTime = float(conf.get('time','thread_cmd_sleep_time')) positionSenderSleeptime = float(conf.get('time','thread_mqtt_sender_position_sleeptime')) scannerScanTime = float(conf.get('time','main_scanner_scantime')) + + + +############################### +# +# BLE +# +############################### callFlag= conf.get('BLE','call_manufacturer_flag') braceletFlag= conf.get('BLE','bracetlet_flag') outbodyFlag = conf.get('BLE','outbody_manufacturer_flag') positionFlag= conf.get('BLE','position_manufacturer_flag') + + + +############################### +# +# SOCKET +# +############################### socketHost = conf.get('SOCKET','host') socketPort = int(conf.get('SOCKET','port')) + + + + +############################### +# +# camera +# +############################### +picUploadDir = conf.get('camera','tmp_dir') +hottime = float(conf.get('camera','hottime')) +picUploadServer = conf.get('camera','upload_host') +picUploadPort = conf.get('camera','upload_port') + if conf.has_option('camera','resolution_h'): picResolutionH = int(conf.get('camera','resolution_h')) else: @@ -52,10 +95,8 @@ picResolutionV = int(conf.get('camera','resolution_v')) else: picResolutionH = 1200 -picUploadServer = conf.get('camera','upload_host') -picUploadPort = conf.get('camera','upload_port') -picUploadDir = conf.get('camera','tmp_dir') -hottime = float(conf.get('camera','hottime')) + + #def write_conf(node,key,value): # try: From b6add5c6f27e02a46affe58fd97f112505b9434f Mon Sep 17 00:00:00 2001 From: littlepinkyl Date: Fri, 13 Jan 2017 19:56:45 +0800 Subject: [PATCH 4/4] make some log conf to file --- py/demo.py | 56 +++++++++++++++++++++++++++++------------------------- py/t.cnf | 10 +++++++++- py/var.py | 13 +++++++++++++ 3 files changed, 52 insertions(+), 27 deletions(-) diff --git a/py/demo.py b/py/demo.py index db0b9cf..a341757 100644 --- a/py/demo.py +++ b/py/demo.py @@ -17,38 +17,41 @@ import picamera import json import re -#from func import * + +try: + from var import * + from func import * + from depdata import * + from depconfig import * +except Exception,e: + #logger.critical("\033[1;31;40mCannot import:%s,%s\033[0m" % (Exception,e)) + print "\033[1;31;40mCannot import neccessary file:%s,%s\033[0m" % (Exception,e) + quit() import logging from logging.handlers import TimedRotatingFileHandler +#console_formatter = logging.Formatter('%(name)-5s: %(levelname)-8s %(message)s') +#Rthandler = RotatingFileHandler('demo.log',maxBytes=10*1024*1024,backupCount=5) console = logging.StreamHandler() console.setLevel(logging.DEBUG) -#console_formatter = logging.Formatter('%(name)-5s: %(levelname)-8s %(message)s') console_formatter = logging.Formatter('%(asctime)s [%(levelname)s] [%(filename)s:%(lineno)d %(name)s] - %(message)s') -log_formatter = logging.Formatter('%(asctime)s [%(levelname)s] [%(filename)s:%(lineno)d %(name)s] - %(message)s [%(process)d,%(thread)d:%(threadName)s]') +#console_formatter = logging.Formatter(console_format) +file_formatter = logging.Formatter('%(asctime)s [%(levelname)s] [%(filename)s:%(lineno)d %(name)s] - %(message)s [%(process)d,%(thread)d:%(threadName)s]') +#file_formatter = logging.Formatter(file_format) console.setFormatter(console_formatter) +#logger = logging.getLogger('demo') logger = logging.getLogger('demo') logger.addHandler(console) -#Rthandler = RotatingFileHandler('demo.log',maxBytes=10*1024*1024,backupCount=5) -Trthandler = TimedRotatingFileHandler(filename='demo',when='D',interval=1,backupCount=7) -Trthandler.suffix = "%Y%m%d.log" -#Trthandler.extMatch = re.compile(r"^\d{4}-\d{2}-\d{2}.log$") -#Trthandler.extMatch = re.compile(r"^\d{4}-\d{2}-\d{2}$") -Trthandler.extMatch = r"^\d{4}-\d{2}-\d{2}$" +Trthandler = TimedRotatingFileHandler(filename=cur_file_dir()+'/'+log_name,when=file_handler_when,interval=file_handler_interval,backupCount=file_handler_backupcount) +#Trthandler.suffix = "%Y%m%d.log" +Trthandler.suffix = log_suffix +Trthandler.extMatch = r"^\d{4}-\d{2}-\d{2}.log$" Trthandler.setLevel(logging.INFO) -Trthandler.setFormatter(log_formatter) +Trthandler.setFormatter(file_formatter) logger.addHandler(Trthandler) logger.setLevel(logging.DEBUG) -try: - from var import * - from func import * - from depdata import * - from depconfig import * -except Exception,e: - logger.critical("\033[1;31;40mCannot import:%s,%s\033[0m" % (Exception,e)) - quit() global stationAlias global reconnect_count @@ -188,20 +191,20 @@ def handleDiscovery(self, dev, isNewDev, isNewData): if data['Manufacturer'].startswith(callFlag,6): callData=data callData['nursecall'] = True - logger.info("[ScanDelegate.handleDiscovery]\033[1;31;40mCall data\033[0mget:%s" % (json.dumps(callData),)) + logger.info("[ScanDelegate.handleDiscovery]Call data get:%s" % (json.dumps(callData),)) #print "\033[1;31;40m%s\033[0m" % (json.dumps(callData,)) try: client.publish(CALLTITLE,json.dumps(callData)) except Exception,e: #print "\033[1;31;40mMqtt Exception:%s\033[0m" % (Exception,e) - logger.warning("[ScanDelegate.handleDiscovery]\033[1;33;40msending call data %s get %s:%s\033[0m and trying to reconnect" % (json.dumps(callData),Exception,e)) + logger.warning("[ScanDelegate.handleDiscovery]\033[1;33;40msending call data %s to %s get %s:%s\033[0m and trying to reconnect" % (json.dumps(callData),CALLTITLE,Exception,e)) reconnect_mqtt() else: - logger.info("[ScanDelegate.handleDiscovery]Call data sended %s,%s:%s" % (MQTTServer,MQTTPort,json.dumps(callData))) + logger.info("[ScanDelegate.handleDiscovery]\033[1;32;40mCall\033[0m data sended to %s(%s:%s):%s" % (CALLTITLE,MQTTServer,MQTTPort,json.dumps(callData))) #lastDiscoveryTime = time.time() elif data['Manufacturer'].startswith(outbodyFlag,6): outbodyData = data - logger.info("[ScanDelegate.handleDiscovery]\033[1;33;40mOutbody data\033[0mget:%s" % (json.dumps(outbodyData),)) + logger.info("[ScanDelegate.handleDiscovery]Outbody data get:%s" % (json.dumps(outbodyData),)) try: client.publish(OUTBODYTITLE,json.dumps(outbodyData)) except Exception,e: @@ -209,12 +212,13 @@ def handleDiscovery(self, dev, isNewDev, isNewData): logger.warning("[ScanDelegate.handleDiscovery]\033[1;33;40msending outbody data %s get %s:%s\033[0m and trying to reconnect" % (json.dumps(outbodyData),Exception,e)) reconnect_mqtt() else: - logger.info("[ScanDelegate.handleDiscovery]Outbody data sended %s,%s:%s" % (MQTTServer,MQTTPort,json.dumps(outbodyData))) + logger.info("[ScanDelegate.handleDiscovery]\033[1;32;40mOutbody\033[0m data sended to %s(%s:%s):%s" % (OUTBODYTITLE,MQTTServer,MQTTPort,json.dumps(outbodyData))) #lastDiscoveryTime = time.time() #change to send to mqtt immidiately #positionQ.put(json.dumps(data)) else: - logger.info("[ScanDelegate.handleDiscovery]\033[1;32;40mPosition data\033[0m get:%s" % (json.dumps(data),)) + logger.info("[ScanDelegate.handleDiscovery]Position data get:%s" % (json.dumps(data),)) + #logger.info("[ScanDelegate.handleDiscovery]Position data sended %s,%s:%s" % (MQTTServer,MQTTPort,json.dumps(data))) try: client.publish(POSITIONTITLE,json.dumps(data)) except Exception,e: @@ -223,7 +227,7 @@ def handleDiscovery(self, dev, isNewDev, isNewData): reconnect_mqtt() #print "%s,%s:%s" % (MQTTServer,MQTTPort,json.dumps(data)) else: - logger.info("[ScanDelegate.handleDiscovery]Position data sended %s,%s:%s" % (MQTTServer,MQTTPort,json.dumps(data))) + logger.info("[ScanDelegate.handleDiscovery]\033[1;32;40mPosition\033[0m data sended to %s(%s:%s)%s" % (POSITIONTITLE,MQTTServer,MQTTPort,json.dumps(data))) #lastDiscoveryTime = time.time() def on_connect(client,userdata,flags,rc): @@ -470,7 +474,7 @@ def run(self): logger.warning("[heartbeat]\033[1;31;40mMqtt Exception:%s,%s [%s]\033[0m" % (MQTTServer,MQTTPort,json.dumps(heartbeat))) reconnect_mqtt() else: - logger.debug("[heartbeat]\033[1;34;40m%s\033[0m"% (json.dumps(heartbeat)),) + logger.info("[heartbeat]\033[1;34;40m%s\033[0m"% (json.dumps(heartbeat)),) time.sleep(heartbeatSleeptime) if __name__=='__main__': global starttime diff --git a/py/t.cnf b/py/t.cnf index d6cd35a..8c857da 100644 --- a/py/t.cnf +++ b/py/t.cnf @@ -53,4 +53,12 @@ upload_host = 10.8.47.29 upload_port = 9090 tmp_dir = jpeg - +[log] +console_format = \%(asctime)s [\%(levelname)s] [\%(filename)s:\%(lineno)d \%(name)s] - \%(message)s +file_format = \%(asctime)s [\%(levelname)s] [\%(filename)s:\%(lineno)d \%(name)s] - \%(message)s [\%(process)d,\%(thread)d:\%(threadName)s]' +log_suffix = '%Y-%m-%d.log' +log_extMatch_string = r"^\d{4}-\d{2}-\d{2}.log$" +log_name = demo +file_handler_when = D +file_handler_interval = 1 +file_handler_backupcount = 7 diff --git a/py/var.py b/py/var.py index cb60a1a..e0a795f 100644 --- a/py/var.py +++ b/py/var.py @@ -96,6 +96,19 @@ else: picResolutionH = 1200 +############################### +# +# log +# +############################### +#console_format = conf.get('log','console_format') +#file_format = conf.get('log','console_format') +log_suffix = conf.get('log','log_suffix') +log_exMatch_string = conf.get('log','log_extMatch_string') +log_name = conf.get('log','log_name') +file_handler_when = conf.get('log','file_handler_when') +file_handler_interval = int(conf.get('log','file_handler_interval')) +file_handler_backupcount = int(conf.get('log','file_handler_backupcount')) #def write_conf(node,key,value):