Example #1
0
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)
Example #2
0
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()
Example #3
0
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()
Example #4
0
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()