def main(): '''Set up zmq context and greenlets for all the servers, then launch the web browser and run the data producer''' context = zmq.Context() # zeromq: tcp to inproc gateway gevent.spawn(zmq_server, context) ws_server = gevent.pywsgi.WSGIServer(('', 9999), WebSocketApp(context),handler_class=WebSocketHandler) # http server: serves up static files http_server = gevent.pywsgi.WSGIServer(('', 8000),paste.urlparser.StaticURLParser(os.path.dirname(__file__))) client = CONNECT_TO_METER() # Start the server greenlets http_server.start() ws_server.start() global count count=0 makeFolder(start_day, start_month) f =open(DATA_BASE_PATH +str(start_day)+"_"+str(start_month)+"/"+str(count)+".csv","a") f.write(HEADER) f.close() zmq_producer(context, client)
def main(): try: count = 0 start_time=int(time.time()) now = datetime.datetime.now() start_day=now.day start_month=now.month client = CONNECT_TO_METER() #Making connection with rs485 returns client makeFolder(now.day,now.month) #Making folder of todays day_month WRITING_HEADER(DATA_BASE_PATH +str(start_day)+"_"+str(start_month)+"/", str(count)+".csv") while True: gc.collect() #garbage collection now_time=int(time.time()) now = datetime.datetime.now() now_day=now.day now_month=now.month if ((now_time-start_time) > THRESHOLD_TIME) or (now_day!=start_day): '''cpuTime = psutil.cpu_times() cpuPercent = psutil.cpu_times_percent() virtualMemory = psutil.virtual_memory() swapMemory = psutil.swap_memory() network = psutil.network_io_counters(pernic=True) test = psutil.test() lgr.critical(cpuTime) lgr.critical(cpuPercent) lgr.critical(virtualMemory) lgr.critical(swapMemory) lgr.critical(network) lgr.critical(test)''' count = count + 1 makeFolder(now_day,now_month) WRITING_HEADER(DATA_BASE_PATH +str(now_day)+"_"+str(now_month)+"/", str(count)+".csv") #Creating new file after Threshold Limit passed delete_older_folders(now) #Delete folders older than 2 days start_time=now_time #Modifying start time to now time start_day=now_day start_month=now_month lgr.critical("New CSV added") else: for mId in METER_ID: try: #Function to read meter data regObject = READ_METER_DATA(BASE_REGISTER,BLOCK_SIZE, mId, client) rowData = FORMAT_READ_DATA(regObject , mId) #Function returning formatted data to be put in CSV makeFolder(start_day,start_month) print "Writing meter: "+str(mId)+"\n"+str(rowData)+"\n" WRITE_METER_DATA(DATA_BASE_PATH +str(start_day)+"_"+str(start_month)+"/", str(count)+".csv", rowData) #Writing row into suitable CSV print "Going Well!" except Exception as e: lgr.critical('Internal Exception: Meter: '+'\n', exc_info = True) print "Internal Exception: Meter: "+'\n'+e.__str__() client = None client = CONNECT_TO_METER() except Exception as e: lgr.error('Some how program is terminated', exc_info = True) print "Error in outer shell - \n", sys.exc_info() client = None client = CONNECT_TO_METER()
def zmq_producer(context, client): socket = context.socket(zmq.PUB) socket.connect('tcp://127.0.0.1:5000') while True: now_time=int(time.time()) now = datetime.datetime.now() now_day=now.day now_month=now.month global start_time, start_day, count if ((now_time-start_time) > THRESHOLD_TIME) or (now_day!=start_day): count = count + 1 makeFolder(now_day, now_month) delete_older_folders(now) f =open(DATA_BASE_PATH +str(now_day)+"_"+str(now_month)+"/"+str(count-1)+".csv","a") f.write(HEADER) f.close() start_time=now_time start_day=now_day start_month=now_month else: for mId in range (0,len(METER_ID)): try: MID=METER_ID[mId] r1=int(time.time()) row = str(DEVICE_ID)+","+str(MID)+","+str(r1)#Writing time and other variables in row k = READ_METER_DATA(BASE_REGISTER,BLOCK_SIZE, MID, client) #Calling function to read meter for i in range (0,(BLOCK_SIZE-1),2): kt= (k.registers[i+1]<<16) + k.registers[i] #Formating & Filtering collected data / making it suitable for CSV format kkt =","+ str(convert(kt)) row = row +kkt print "Meter: "+str(MID) +"\n"+str(row) row=row[:-1]+"\n" global start_day, start_month makeFolder(start_day,start_month) socket.send(row) #sending meter data (row) to socket for live visualization f =open(DATA_BASE_PATH +str(start_day)+"_"+str(start_month)+"/"+str(count)+".csv","a") f.write(row) #writing meter data (row) in CSV gevent.sleep(0.05) #never remove this delay / you may change amount of delay f.close() except Exception as e: print "Meter: "+str(MID)+" \n" + e.__str__() log_file=open(DATA_BASE_PATH+"Meter_"+str(MID)+"Meterlog.txt","a") log_file.write(str(time.time())+" "+e.__str__()+"\n") log_file.close() client = None client = CONNECT_TO_METER()
def main(): try: count = 0 start_time = int(time.time()) now = datetime.datetime.now() start_day = now.day start_month = now.month client = CONNECT_TO_METER( ) #Making connection with rs485 returns client makeFolder(now.day, now.month) #Making folder of todays day_month WRITING_HEADER( DATA_BASE_PATH + str(start_day) + "_" + str(start_month) + "/", str(count) + ".csv") while True: gc.collect() #garbage collection now_time = int(time.time()) now = datetime.datetime.now() now_day = now.day now_month = now.month if ((now_time - start_time) > THRESHOLD_TIME) or (now_day != start_day): '''cpuTime = psutil.cpu_times() cpuPercent = psutil.cpu_times_percent() virtualMemory = psutil.virtual_memory() swapMemory = psutil.swap_memory() network = psutil.network_io_counters(pernic=True) test = psutil.test() lgr.critical(cpuTime) lgr.critical(cpuPercent) lgr.critical(virtualMemory) lgr.critical(swapMemory) lgr.critical(network) lgr.critical(test)''' count = count + 1 makeFolder(now_day, now_month) WRITING_HEADER( DATA_BASE_PATH + str(now_day) + "_" + str(now_month) + "/", str(count) + ".csv") #Creating new file after Threshold Limit passed delete_older_folders(now) #Delete folders older than 2 days start_time = now_time #Modifying start time to now time start_day = now_day start_month = now_month lgr.critical("New CSV added") else: for mId in METER_ID: try: #Function to read meter data regObject = READ_METER_DATA(BASE_REGISTER, BLOCK_SIZE, mId, client) rowData = FORMAT_READ_DATA( regObject, mId ) #Function returning formatted data to be put in CSV makeFolder(start_day, start_month) print "Writing meter: " + str(mId) + "\n" + str( rowData) + "\n" WRITE_METER_DATA( DATA_BASE_PATH + str(start_day) + "_" + str(start_month) + "/", str(count) + ".csv", rowData) #Writing row into suitable CSV print "Going Well!" except Exception as e: lgr.critical('Internal Exception: Meter: ' + '\n', exc_info=True) print "Internal Exception: Meter: " + '\n' + e.__str__( ) client = None client = CONNECT_TO_METER() except Exception as e: lgr.error('Some how program is terminated', exc_info=True) print "Error in outer shell - \n", sys.exc_info() client = None client = CONNECT_TO_METER()