ScriptFactura: diferència entre les revisions

De Comissió Energia Can Fugarolas
Salta a la navegació Salta a la cerca
(Es crea la pàgina amb « #!/usr/bin/python # -*- coding: utf-8 -*- #Falta #Posar el nom del colectiu #L1Ard2 Taller #L2Ard2 Taller #L3Ard2 Taller #L1Ard3 Coworking #L2Ard...».)
 
Cap resum de modificació
 
(Hi ha una revisió intermèdia del mateix usuari que no es mostren)
Línia 10: Línia 10:
   #L1Ard6 Cronopis #L2Ard6 Cronopis #L3Ard6 Cronopis
   #L1Ard6 Cronopis #L2Ard6 Cronopis #L3Ard6 Cronopis
   #L1Ard7 Estudi i Mig #L2Ard7 Taller de Cosir #L3Ard7 LAC  
   #L1Ard7 Estudi i Mig #L2Ard7 Taller de Cosir #L3Ard7 LAC  
  #Arduino 2,5 i 6 SUMEM
  #Arduino 3,4,7 Separat
 
  #Falta controlar si falta un dia les dades!!!
    
    
   import numpy as np
   import numpy as np
Línia 25: Línia 29:
       #Inicialitzem les dades
       #Inicialitzem les dades
       PL1=4
       PL1=4
      SL1=5
       PL2=8
       PL2=8
      SL2=9
       PL3=12
       PL3=12
      SL3=13
       MESOS=12
       MESOS=12
       Mesos=['Gen', 'Feb', 'Marc', 'Abril', 'Maig', 'Juny', 'Juliol', 'Agost', 'Set', 'Oct', 'Nov', 'Des']
       Mesos=['Gen', 'Feb', 'Marc', 'Abril', 'Maig', 'Juny', 'Juliol', 'Agost', 'Set', 'Oct', 'Nov', 'Des']
       MaxDiari=MaxMensual=0
       MaxDiari=0
      MaxMensual=0
 
      consum_mensualL1=[[0]*12 for x in range(12)]
      consum_mensualL2=[[0]*12 for x in range(12)]
      consum_mensualL3=[[0]*12 for x in range(12)]
      DadesMesos=[0]*8
    
    
      consum_mensualL1=[[0]*13 for x in range(12)]
      consum_mensualL2=[[0]*13 for x in range(12)]
      consum_mensualL3=[[0]*13 for x in range(12)]
     
       #Volem saber el mes de la ultima lectura
       #Volem saber el mes de la ultima lectura
       for root, dirs, files in os.walk('Factura/Dades'):
       for root, dirs, files in os.walk('Factura/Dades'):
Línia 64: Línia 73:
    
    
       for arduino in range(2,8):
       for arduino in range(2,8):
      #for arduino in 3,2,4,5,6,7:
           
      #for arduino in 3,7:
     
         print "Analitzant dades arduino ",arduino
         print "Analitzant dades arduino ",arduino
         CAMI="Factura/Dades/"+str(arduino)+"/"
         CAMI="Factura/Dades/"+str(arduino)+"/"
Línia 72: Línia 79:
         if not os.path.exists('Grafics/'+str(arduino)):
         if not os.path.exists('Grafics/'+str(arduino)):
             os.makedirs('Grafics/'+str(arduino))
             os.makedirs('Grafics/'+str(arduino))
     
 
        if (arduino=="2") or (arduino=="4") or (arduino=="7"):
            CampL1=SL1
            CampL2=SL2
            CampL3=SL3
        else:
            CampL1=PL1
            CampL2=PL2
            CampL3=PL3
          
          
         #Ens movem per dins del directori
         #Ens movem per dins del directori
Línia 95: Línia 110:
          
          
                 #comprovem si es una linea plena
                 #comprovem si es una linea plena
                 while len(camps)<3 :
                 while (len(camps)<3) and (line!=""):
                   line=f.readline()
                   line=f.readline()
                   camps=line.split(' ')
                   camps=line.split(' ')
     
 
                 potencia=[float(camps[PL1]),float(camps[PL2]),float(camps[PL3])]
                 if line=="":
                hora=camps[1].split(':')
                  consumL1=0
                temps_aux=float(hora[2])+float(hora[1])*60+float(hora[0])*3600
                  consumL2=0
                tempstotal=temps_aux
                  consumL3=0
                    
   
                data=camps[0]
                else:
       
                  potencia=[float(camps[CampL1]),float(camps[CampL2]),float(camps[CampL3])]
                #Ens movem linea per linea per llegir les dades
                  hora=camps[1].split(':')
                for line in f:
                  temps_aux=float(hora[2])+float(hora[1])*60+float(hora[0])*3600
                  camps=line.split(' ')
                  tempstotal=temps_aux
                  if 'str' in line:
                     
                      break
                   data=camps[0]
                  if len(camps)>2:
           
                      lecturapotencia=[float(camps[PL1]),float(camps[PL2]),float(camps[PL3])]
                  #Ens movem linea per linea per llegir les dades
                      Error=0
                  for line in f:
                      for x in lecturapotencia:
                      camps=line.split(' ')
                        Error=Error+abs(x)
                      if 'str' in line:
                      #Comprovem si no hi ha valors molt grans que considerem erronis
                        break
                      if Error < 10000:
                      if len(camps)>2:
                        hora=camps[1].split(':')
                        lecturapotencia=[float(camps[CampL1]),float(camps[CampL2]),float(camps[CampL3])]
                        temps=float(hora[2])+float(hora[1])*60+float(hora[0])*3600
                        Error=0
                        temps_aux=temps-temps_aux
                        for x in lecturapotencia:
       
                            Error=Error+abs(x)
                        #Si temps_aux es negatiu vol dir que les dades ja son del dia seguent
                        #Comprovem si no hi ha valors molt grans que considerem erronis
                        if temps_aux < 0:
                        if Error < 10000:
                            temps_aux=temps_aux+86400  
                            hora=camps[1].split(':')
                        tempstotal=tempstotal+temps_aux
                            temps=float(hora[2])+float(hora[1])*60+float(hora[0])*3600
       
                            temps_aux=temps-temps_aux
                        #Multipliquem el valor de la potencia pel temps transcorregut des del ultim cop.
           
                        potencia[:]=[x*temps_aux for x in potencia]
                            #Si temps_aux es negatiu vol dir que les dades ja son del dia seguent
       
                            if temps_aux < 0:
                        #Afegim el valor de la potencia als consums
                              temps_aux=temps_aux+86400  
                        for i in range(3):  
                            tempstotal=tempstotal+temps_aux
                            consum[i].append(potencia[i])  
           
                        temps_aux=temps
                            #Multipliquem el valor de la potencia pel temps transcorregut des del ultim cop.
                        potencia=lecturapotencia
                            potencia[:]=[x*temps_aux for x in potencia]
           
                            #Afegim el valor de la potencia als consums
                            for i in range(3):  
                              consum[i].append(potencia[i])  
                            temps_aux=temps
                            potencia=lecturapotencia
            
            
                #Afegim aixo per si no estem calculant exactament les 24h dun dia  
                  #Afegim aixo per si no estem calculant exactament les 24h dun dia  
                if tempstotal < 86400:
                  if tempstotal < 86400:
                  potencia[:]=[x*(86400-tempstotal) for x in potencia]
                      potencia[:]=[x*(86400-tempstotal) for x in potencia]
                  for i in range(3):  
                      for i in range(3):  
                      consum[i].append(potencia[i])  
                        consum[i].append(potencia[i])  
     
 
                #valorx.append(data)
                  #valorx.append(data)
       
           
                consumL1=sum(consum[0])/3600000
                  consumL1=sum(consum[0])/3600000
                consumL2=sum(consum[1])/3600000
                  consumL2=sum(consum[1])/3600000
                consumL3=sum(consum[2])/3600000
                  consumL3=sum(consum[2])/3600000
 
                print consumL1, consumL2, consumL3
                 #Nomes fem els calculs si estem en lultim mes
                 #Nomes fem els calculs si estem en lultim mes
                 if Mes == mesactual:  
                 if Mes == mesactual:  
Línia 162: Línia 185:
                   consum_mensualL3[arduino][aux_mes]=consumL3
                   consum_mensualL3[arduino][aux_mes]=consumL3
                   Mes_aux=file.split('-')[1].split('.')[0][:-2]
                   Mes_aux=file.split('-')[1].split('.')[0][:-2]
                  DadesMesos[arduino]=aux_mes+1
                  
                  
        #Calculem els maxims per poder fer grafiques iguals
        for i in range(1,4):
            Max=max(eval('valorDiariL'+str(i))[arduino])
            if MaxDiari < Max:
                MaxDiari=Max*1.1
            Max=max(eval('consum_mensualL'+str(i))[arduino])
            if MaxMensual < Max :
              MaxMensual=Max*1.1
    
    
       print u"Creant gràfics ..."   
       print u"Creant gràfics ..."   
      aux_mes+=1
       Colectiu= [0]*3
       Colectiu= [0]*3
       for arduino in range(2,8):
       for arduino in range(2,8):
      #for arduino in 3,7:
       
 
         left = np.arange(1,DIES)
         left = np.arange(1,DIES+1)
         width = 0.95
         width = 0.95
    
    
         if arduino == 2:
         if arduino == 2:
             for i in range(2,4):
             for i in range(2,4):
               valorDiariL1[2][1:int(DIES+1)]+=eval('valorDiariL'+str(i))[2][1:int(DIES+1)]
               for index in range(1,int(DIES)):
                  valorDiariL1[2][index]+=eval('valorDiariL'+str(i))[2][index]
            for index in range(1,aux_mes):
              consum_mensualL1[2][index]+=consum_mensualL2[2][index]+consum_mensualL3[2][index]
             RANG=2
             RANG=2
             Colectiu=[u"Taller Col·lectiu","",""]
             Colectiu=[u"Taller Col·lectiu","",""]
Línia 193: Línia 212:
         elif arduino == 5:
         elif arduino == 5:
             for i in range(2,4):
             for i in range(2,4):
               valorDiariL1[7][1:int(DIES+1)]+=eval('valorDiariL'+str(i))[7][1:int(DIES+1)]
               for index in range(1,int(DIES)):
             Colectiu[0]=["General de Can Fugarolas","",""]
                  valorDiariL1[5][index]+=eval('valorDiariL'+str(i))[5][index]
            for index in range(1,aux_mes):
              consum_mensualL1[5][index]+=consum_mensualL2[5][index]+consum_mensualL3[5][index]
             Colectiu=["General de Can Fugarolas","",""]
             RANG=2
             RANG=2
         elif arduino == 6:
         elif arduino == 6:
             for i in range(2,4):
             for i in range(2,4):
               valorDiariL1[6][1:int(DIES+1)]+=eval('valorDiariL'+str(i))[6][1:int(DIES+1)]
               for index in range(1,int(DIES)):
             Colectiu[0]=["Cronopis","",""]
                  valorDiariL1[6][index]+=eval('valorDiariL'+str(i))[6][index]
            for index in range(1,aux_mes):
              consum_mensualL1[6][index]+=consum_mensualL2[6][index]+consum_mensualL3[6][index]
             Colectiu=["Cronopis","",""]
             RANG=2
             RANG=2
         else:
         elif arduino == 7:
             Colectiu=["Estudi i Mig","Taller de Cosir","LAC"]
             Colectiu=["Estudi i Mig","Taller de Cosir","LAC"]
             RANG=4
             RANG=4
    
    
         for i in range(1,RANG):
         for i in range(1,RANG):
             valors=eval('valorDiariL'+str(i))[arduino][1:int(DIES+1)]
             valors=eval('valorDiariL'+str(i))[arduino][1:int(DIES)]
             plt.clf()
             plt.clf()
             plt.axis([1,DIES+1,0,MaxDiari])
             plt.axis([1,DIES,0,max(valors)*1.1])
             plt.bar(left, valors, width, bottom=0.01, color='r',alpha=0.8)
             plt.bar(left, valors, width, bottom=0.01, color='r',alpha=0.8)
             plt.xlabel('Dies')
             plt.xlabel('Dies')
             plt.ylabel('Consum en KWh')
             plt.ylabel('Consum en KWh')
             plt.title('Consum Diari del mes '+ Mesos[int(mesactual[2:])-1]+' de l\'any 20'+ mesactual[0:2]+' (Arduino '+str(arduino)+' L'+str(i)+')')
             plt.title('Consum Diari del mes '+ Mesos[int(mesactual[2:])-1]+' de l\'any 20'+ mesactual[0:2]+' ('+Colectiu[i-1]+')')
             plt.xticks(left+width/2,left)
             plt.xticks(left+width/2,left)
             plt.tight_layout()
             plt.tight_layout()
Línia 219: Línia 244:
         left = np.arange(1,len(consum_mensualL1)+1)
         left = np.arange(1,len(consum_mensualL1)+1)
         for i in range(1,RANG):
         for i in range(1,RANG):
             valors=eval('consum_mensualL'+str(i))[arduino][1:13]
             valors=eval('consum_mensualL'+str(i))[arduino][0:12]
             plt.clf()
             plt.clf()
             plt.axis([0,MESOS+1,0,MaxMensual])
             plt.axis([0,MESOS+1,0,max(valors)*1.1])
             plt.bar(left, valors, width, bottom=0.01, color='y',alpha=0.8)
             plt.bar(left, valors, width, bottom=0.01, color='y',alpha=0.8)
             plt.ylabel('Consum en KWh')
             plt.ylabel('Consum en KWh')
             plt.title('Consum Mensual')
             plt.title('Consum Mensual')
             plt.title('Consum Mensual de tot un any fins '+ Mesos[int(mesactual[2:])-1]+' del 20'+mesactual[0:2]+' (Arduino '+str(arduino)+' L'+str(i)+')')
             plt.title('Consum Mensual de tot un any fins '+ Mesos[int(mesactual[2:])-1]+' del 20'+mesactual[0:2]+' ('+Colectiu[i-1]+')')
             plt.xticks(left+width/2,np.roll(Mesos,int(mesactual[2:])))
             plt.xticks(left+width/2,np.roll(Mesos,DadesMesos[arduino]-int(mesactual[2:])))
             plt.tight_layout()
             plt.tight_layout()
             plt.savefig('Grafics/'+str(arduino)+'/ConsumL'+str(i)+'Mensual_Ard'+str(arduino)+'.png')
             plt.savefig('Grafics/'+str(arduino)+'/ConsumL'+str(i)+'Mensual_Ard'+str(arduino)+'.png')
Línia 234: Línia 259:
       print u"Creant factures ..."   
       print u"Creant factures ..."   
       for arduino in range(2,8):
       for arduino in range(2,8):
 
       
         if arduino == 2:
         if arduino == 2:
             RANG=2
             RANG=2
Línia 245: Línia 270:
             RANG=4
             RANG=4
         elif arduino == 5:
         elif arduino == 5:
            for i in range(2,4):
              valorDiariL1[7][1:int(DIES+1)]+=eval('valorDiariL'+str(i))[7][1:int(DIES+1)]
             Colectiu=["General de Can Fugarolas","",""]
             Colectiu=["General de Can Fugarolas","",""]
             RANG=2
             RANG=2
Línia 280: Línia 303:
             doc.append(Command('begin','flushright'))
             doc.append(Command('begin','flushright'))
             doc.append(bold(u"Can Fugarolas\n"))
             doc.append(bold(u"Can Fugarolas\n"))
             doc.append(bold(u"1 de Març de 2016"))
             doc.append(bold('1 de '+Mesos[int(mesactual[2:])]+' de 20'+mesactual[0:2]))
             doc.append(Command('end','flushright'))
             doc.append(Command('end','flushright'))
        
        
             Text=u"Factura del Col·lectiu"+Colectiu[i-1]
             Text=u"Factura del Col·lectiu "+Colectiu[i-1]+"\n"
             doc.append(Command('textbf',Command('Large',Text)))
             doc.append(Command('textbf',Command('Large',Text)))
             doc.append(Command('textbf',Command('Large','L'+str(i)+u" de l'Arduino "+str(arduino)+"\n")))
             doc.append(Command('textbf',Command('Large','L'+str(i)+u" de l'Arduino "+str(arduino)+"\n")))
Línia 299: Línia 322:
          
          
             image_filename = os.path.join('Grafics/'+str(arduino)+'/', 'ConsumL'+str(i)+'Diari_Ard'+str(arduino)+'.png')
             image_filename = os.path.join('Grafics/'+str(arduino)+'/', 'ConsumL'+str(i)+'Diari_Ard'+str(arduino)+'.png')
             image_filename2 = os.path.join('Grafics/5/','ConsumL2Diari_Ard5.png')
             image_filename2 = os.path.join('Grafics/5/','ConsumL1Diari_Ard5.png')
             with doc.create(Figure(position='h!')) as kittens:
             with doc.create(Figure(position='h!')) as kittens:
                 with doc.create(SubFigure(
                 with doc.create(SubFigure(
Línia 314: Línia 337:
                     right_kitten.add_image(image_filename2,
                     right_kitten.add_image(image_filename2,
                                           width=NoEscape(r'\linewidth'))
                                           width=NoEscape(r'\linewidth'))
                     right_kitten.add_caption(u'Últim any')
                     right_kitten.add_caption(u'Últim mes')
                 kittens.add_caption(u'Consum del Col·lectiu')
                 kittens.add_caption(u'Consum del Col·lectiu')
          
          
             image_filename = os.path.join('Grafics/'+str(arduino)+'/', 'ConsumL'+str(i)+'Mensual_Ard'+str(arduino)+'.png')
             image_filename = os.path.join('Grafics/'+str(arduino)+'/', 'ConsumL'+str(i)+'Mensual_Ard'+str(arduino)+'.png')
             image_filename2 = os.path.join('Grafics/5/','ConsumL2Mensual_Ard5.png')
             image_filename2 = os.path.join('Grafics/5/','ConsumL1Mensual_Ard5.png')
          
          
             with doc.create(Figure(position='h!')) as kittens:
             with doc.create(Figure(position='h!')) as kittens:
Línia 327: Línia 350:
                     left_kitten.add_image(image_filename,
                     left_kitten.add_image(image_filename,
                                           width=NoEscape(r'\linewidth'))
                                           width=NoEscape(r'\linewidth'))
                     left_kitten.add_caption(u'Últim mes')
                     left_kitten.add_caption(u'Últim any')
                 with doc.create(SubFigure(
                 with doc.create(SubFigure(
                         position='b',
                         position='b',

Revisió de 07:11, 29 juny 2016

  #!/usr/bin/python
  # -*- coding: utf-8 -*-
  
  #Falta
  #Posar el nom del colectiu
  #L1Ard2 Taller #L2Ard2 Taller #L3Ard2 Taller
  #L1Ard3 Coworking #L2Ard3 Fugart #L3Ard3 Comú
  #L1Ard4 Comú #L2Ard4 Comú #L3Ard4 Cooperatives
  #L1Ard5 General #L2Ard5 General #L3Ard5 General
  #L1Ard6 Cronopis #L2Ard6 Cronopis #L3Ard6 Cronopis
  #L1Ard7 Estudi i Mig #L2Ard7 Taller de Cosir #L3Ard7 LAC 
  #Arduino 2,5 i 6 SUMEM
  #Arduino 3,4,7 Separat
  
  #Falta controlar si falta un dia les dades!!!
  
  import numpy as np
  import matplotlib.pyplot as plt
  import os, sys, bz2
  from pylatex import Document, Section, Figure, SubFigure, NoEscape, Command
  from pylatex.base_classes.command import Options, Arguments
  from pylatex.utils import verbatim, bold
  from pylatex.package import Package
  
  
  
  if __name__ == '__main__':
  
     #Inicialitzem les dades
     PL1=4
     SL1=5
     PL2=8
     SL2=9
     PL3=12
     SL3=13
     MESOS=12
     Mesos=['Gen', 'Feb', 'Marc', 'Abril', 'Maig', 'Juny', 'Juliol', 'Agost', 'Set', 'Oct', 'Nov', 'Des']
     MaxDiari=0
     MaxMensual=0
  
     consum_mensualL1=[[0]*12 for x in range(12)]
     consum_mensualL2=[[0]*12 for x in range(12)]
     consum_mensualL3=[[0]*12 for x in range(12)]
     DadesMesos=[0]*8
  
     #Volem saber el mes de la ultima lectura
     for root, dirs, files in os.walk('Factura/Dades'):
         file=sorted(files)[-1]
     mesactual=file.split('-')[1].split('.')[0][:-2]       
     MesActual=Mesos[int(mesactual[2:])-1]
  
     if (MesActual == 'Gen') or (MesActual == 'Marc') or (MesActual == 'Maig') or (MesActual == 'Juliol') or (MesActual == 'Agost') or (MesActual == 'Oct') or (MesActual == 'Des'):
        numdies=31
     elif MesActual == ('Abril') or MesActual == ('Juny') or MesActual == ('Set') or MesActual == ('Nov'):
        numdies=30
     elif (mesactual[0:2] == 16) or (mesactual[0:2] == 20) or (mesactual[0:2] == 24) or (mesactual[0:2] == 28) or (mesactual[0:2] == 32):
        numdies=29
     else:
        numdies=28
  
     DIES=numdies+1
  
     valorDiariL1=[[0]*32 for i in range(8)]
     valorDiariL2=[[0]*32 for i in range(8)]
     valorDiariL3=[[0]*32 for i in range(8)]
  
     
     print "Ultim mes que tenim dades: "+Mesos[int(mesactual[2:])-1]+" de l\'any 20"+ mesactual[0:2]
     
     #Creem els directoris on guardarem els grafics si no existeixen
     if not os.path.exists('Grafics'):
         os.makedirs('Grafics')
  
     for arduino in range(2,8):
           
        print "Analitzant dades arduino ",arduino
        CAMI="Factura/Dades/"+str(arduino)+"/"
     
        if not os.path.exists('Grafics/'+str(arduino)):
            os.makedirs('Grafics/'+str(arduino))
  
        if (arduino=="2") or (arduino=="4") or (arduino=="7"):
           CampL1=SL1
           CampL2=SL2
           CampL3=SL3
        else:
           CampL1=PL1
           CampL2=PL2
           CampL3=PL3
        
        #Ens movem per dins del directori
        for root, dirs, files in os.walk(CAMI):
            Mes_aux=sorted(files)[0].split('-')[1].split('.')[0][:-2]
            aux_mes=0
            for file in sorted(files):
             if file[0]=="D":
               consum=[[],[],[]]
        
               #Obrim el fitxers per llegir 
               f=bz2.BZ2File('Factura/Dades/'+str(arduino)+'/'+file,'r')
               print file
  
               #Mirem el mes i dia que estem analitzant
               Mes=file.split('-')[1].split('.')[0][:-2]
               dia=int(file.split('-')[1].split('.')[0][4:6])
               
               #Llegim la primera linea i ens quedem amb el temps
               line=f.readline()
               camps=line.split(' ')
        
               #comprovem si es una linea plena
               while (len(camps)<3) and (line!=""):
                  line=f.readline()
                  camps=line.split(' ')
  
               if line=="":
                  consumL1=0
                  consumL2=0
                  consumL3=0
   
               else:
                  potencia=[float(camps[CampL1]),float(camps[CampL2]),float(camps[CampL3])]
                  hora=camps[1].split(':')
                  temps_aux=float(hora[2])+float(hora[1])*60+float(hora[0])*3600
                  tempstotal=temps_aux
                     
                  data=camps[0]
           
                  #Ens movem linea per linea per llegir les dades
                  for line in f:
                     camps=line.split(' ')
                     if 'str' in line:
                        break
                     if len(camps)>2:
                        lecturapotencia=[float(camps[CampL1]),float(camps[CampL2]),float(camps[CampL3])]
                        Error=0
                        for x in lecturapotencia:
                           Error=Error+abs(x)
                        #Comprovem si no hi ha valors molt grans que considerem erronis
                        if Error < 10000:
                           hora=camps[1].split(':')
                           temps=float(hora[2])+float(hora[1])*60+float(hora[0])*3600
                           temps_aux=temps-temps_aux
           
                           #Si temps_aux es negatiu vol dir que les dades ja son del dia seguent
                           if temps_aux < 0:
                              temps_aux=temps_aux+86400 
                           tempstotal=tempstotal+temps_aux
           
                           #Multipliquem el valor de la potencia pel temps transcorregut des del ultim cop.
                           potencia[:]=[x*temps_aux for x in potencia]
           
                           #Afegim el valor de la potencia als consums
                           for i in range(3): 
                              consum[i].append(potencia[i]) 
                           temps_aux=temps
                           potencia=lecturapotencia
         
                  #Afegim aixo per si no estem calculant exactament les 24h dun dia 
                  if tempstotal < 86400:
                     potencia[:]=[x*(86400-tempstotal) for x in potencia]
                     for i in range(3): 
                        consum[i].append(potencia[i]) 
  
                  #valorx.append(data)
           
                  consumL1=sum(consum[0])/3600000
                  consumL2=sum(consum[1])/3600000
                  consumL3=sum(consum[2])/3600000
  
               print consumL1, consumL2, consumL3
               #Nomes fem els calculs si estem en lultim mes
               if Mes == mesactual: 
                  valorDiariL1[arduino][dia]=consumL1
                  valorDiariL2[arduino][dia]=consumL2
                  valorDiariL3[arduino][dia]=consumL3
               if Mes == Mes_aux:
                  consum_mensualL1[arduino][aux_mes]+=consumL1
                  consum_mensualL2[arduino][aux_mes]+=consumL2
                  consum_mensualL3[arduino][aux_mes]+=consumL3
               else :
                  aux_mes+=1
                  consum_mensualL1[arduino][aux_mes]=consumL1
                  consum_mensualL2[arduino][aux_mes]=consumL2
                  consum_mensualL3[arduino][aux_mes]=consumL3
                  Mes_aux=file.split('-')[1].split('.')[0][:-2]
                  DadesMesos[arduino]=aux_mes+1
                
  
     print u"Creant gràfics ..."   
     aux_mes+=1
     Colectiu= [0]*3
     for arduino in range(2,8):
        
        left = np.arange(1,DIES)
        width = 0.95
  
        if arduino == 2:
           for i in range(2,4):
              for index in range(1,int(DIES)):
                 valorDiariL1[2][index]+=eval('valorDiariL'+str(i))[2][index]
           for index in range(1,aux_mes):
              consum_mensualL1[2][index]+=consum_mensualL2[2][index]+consum_mensualL3[2][index]
           RANG=2
           Colectiu=[u"Taller Col·lectiu","",""]
        elif arduino == 3:
           Colectiu=["Coworking","Fugart",u"Comú 2a Planta"]
           RANG=4
        elif arduino == 4:
           Colectiu=[u"Comú Taller",u"Comú Sotan",u"Cooperatives"]
           RANG=4
        elif arduino == 5:
           for i in range(2,4):
              for index in range(1,int(DIES)):
                 valorDiariL1[5][index]+=eval('valorDiariL'+str(i))[5][index]
           for index in range(1,aux_mes):
              consum_mensualL1[5][index]+=consum_mensualL2[5][index]+consum_mensualL3[5][index]
           Colectiu=["General de Can Fugarolas","",""]
           RANG=2
        elif arduino == 6:
           for i in range(2,4):
              for index in range(1,int(DIES)):
                 valorDiariL1[6][index]+=eval('valorDiariL'+str(i))[6][index]
           for index in range(1,aux_mes):
              consum_mensualL1[6][index]+=consum_mensualL2[6][index]+consum_mensualL3[6][index]
           Colectiu=["Cronopis","",""]
           RANG=2
        elif arduino == 7:
           Colectiu=["Estudi i Mig","Taller de Cosir","LAC"]
           RANG=4
  
        for i in range(1,RANG):
           valors=eval('valorDiariL'+str(i))[arduino][1:int(DIES)]
           plt.clf()
           plt.axis([1,DIES,0,max(valors)*1.1])
           plt.bar(left, valors, width, bottom=0.01, color='r',alpha=0.8)
           plt.xlabel('Dies')
           plt.ylabel('Consum en KWh')
           plt.title('Consum Diari del mes '+ Mesos[int(mesactual[2:])-1]+' de l\'any 20'+ mesactual[0:2]+' ('+Colectiu[i-1]+')')
           plt.xticks(left+width/2,left)
           plt.tight_layout()
           plt.savefig('Grafics/'+str(arduino)+'/ConsumL'+str(i)+'Diari_Ard'+str(arduino)+'.png')
        
        left = np.arange(1,len(consum_mensualL1)+1)
        for i in range(1,RANG):
           valors=eval('consum_mensualL'+str(i))[arduino][0:12]
           plt.clf()
           plt.axis([0,MESOS+1,0,max(valors)*1.1])
           plt.bar(left, valors, width, bottom=0.01, color='y',alpha=0.8)
           plt.ylabel('Consum en KWh')
           plt.title('Consum Mensual')
           plt.title('Consum Mensual de tot un any fins '+ Mesos[int(mesactual[2:])-1]+' del 20'+mesactual[0:2]+' ('+Colectiu[i-1]+')')
           plt.xticks(left+width/2,np.roll(Mesos,DadesMesos[arduino]-int(mesactual[2:])))
           plt.tight_layout()
           plt.savefig('Grafics/'+str(arduino)+'/ConsumL'+str(i)+'Mensual_Ard'+str(arduino)+'.png')
  
  
     Colectiu=[0]*3
     print u"Creant factures ..."   
     for arduino in range(2,8):
        
        if arduino == 2:
           RANG=2
           Colectiu=[u"Taller Col·lectiu","",""]
        elif arduino == 3:
           Colectiu=["Coworking","Fugart",u"Comú 2a Planta"]
           RANG=4
        elif arduino == 4:
           Colectiu=[u"Comú Taller",u"Comú Sotan",u"Cooperatives"]
           RANG=4
        elif arduino == 5:
           Colectiu=["General de Can Fugarolas","",""]
           RANG=2
        elif arduino == 6:
           Colectiu=["Cronopis","",""]
           RANG=2
        else:
           Colectiu=["Estudi i Mig","Taller de Cosir","LAC"]
           RANG=4
  
  
        for i in range(1,RANG):  
  
           file='FacturaArduino'+str(arduino)+'_'+str(i)
           doc = Document(default_filepath=file,documentclass='report',fontenc='T1',inputenc='utf8',lmodern='True')
       
           doc.packages.append(Package('eurosym'))
           doc.packages.append(Package('babel',options='catalan'))
       
           args = Arguments(NoEscape(r'\textheight'),'6cm')
           doc.preamble.append(Command('addtolength',args))
           args = Arguments(NoEscape(r'\textwidth'),'6.5cm')
           doc.preamble.append(Command('addtolength',args))
           args = Arguments(NoEscape(r'\voffset'),NoEscape(r'-2.5cm'))
           doc.preamble.append(Command('addtolength',args))
           args = Arguments(NoEscape(r'\hoffset'),NoEscape(r'-3cm'))
           doc.preamble.append(Command('addtolength',args))
       
       
           doc.append(Command('pagestyle','empty'))
       
           doc.append(Command('begin','center'))
           doc.append(Command('begin','flushright'))
           doc.append(bold(u"Can Fugarolas\n"))
           doc.append(bold('1 de '+Mesos[int(mesactual[2:])]+' de 20'+mesactual[0:2]))
           doc.append(Command('end','flushright'))
      
           Text=u"Factura del Col·lectiu "+Colectiu[i-1]+"\n"
           doc.append(Command('textbf',Command('Large',Text)))
           doc.append(Command('textbf',Command('Large','L'+str(i)+u" de l'Arduino "+str(arduino)+"\n")))
           doc.append(Command('end','center'))
       
           doc.append(u'Aquesta factura esta generada automàticament a partir de les dades que hem anat obtenint dels Arduinos que tenim instal·lats a la Fàbrica de Can Fugarolas.\n Tota la informació de com han estat generades aquestes factures les pots trobar a')
           doc.append(Command('begin','center'))
           doc.append(Command('texttt','http://energia.canfugarolas.org'))
           doc.append(Command('end','center'))
           doc.append(u'Si vols veure en temps real el consum de tots els col·lectius de la fàbrica, pots consultar-ho a')
           doc.append(Command('begin','center'))
           doc.append(Command('texttt','http://emon.canfugarolas.org'))
           doc.append(Command('end','center'))
           doc.append(u'Aquí et deixem el teu consum per dies i per mesos en KWh:')
       
           image_filename = os.path.join('Grafics/'+str(arduino)+'/', 'ConsumL'+str(i)+'Diari_Ard'+str(arduino)+'.png')
           image_filename2 = os.path.join('Grafics/5/','ConsumL1Diari_Ard5.png')
           with doc.create(Figure(position='h!')) as kittens:
               with doc.create(SubFigure(
                       position='b',
                       width=NoEscape(r'0.5\linewidth'))) as left_kitten:
       
                   left_kitten.add_image(image_filename,
                                         width=NoEscape(r'\linewidth'))
                   left_kitten.add_caption(u'Últim mes')
               with doc.create(SubFigure(
                       position='b',
                       width=NoEscape(r'0.5\linewidth'))) as right_kitten:
       
                   right_kitten.add_image(image_filename2,
                                          width=NoEscape(r'\linewidth'))
                   right_kitten.add_caption(u'Últim mes')
               kittens.add_caption(u'Consum del Col·lectiu')
       
           image_filename = os.path.join('Grafics/'+str(arduino)+'/', 'ConsumL'+str(i)+'Mensual_Ard'+str(arduino)+'.png')
           image_filename2 = os.path.join('Grafics/5/','ConsumL1Mensual_Ard5.png')
       
           with doc.create(Figure(position='h!')) as kittens:
               with doc.create(SubFigure(
                       position='b',
                       width=NoEscape(r'0.5\linewidth'))) as left_kitten:
       
                   left_kitten.add_image(image_filename,
                                         width=NoEscape(r'\linewidth'))
                   left_kitten.add_caption(u'Últim any')
               with doc.create(SubFigure(
                       position='b',
                       width=NoEscape(r'0.5\linewidth'))) as right_kitten:
       
                   right_kitten.add_image(image_filename2,
                                          width=NoEscape(r'\linewidth'))
                   right_kitten.add_caption(u'Últim any')
               kittens.add_caption(u'Consum de Tot Can Fugarolas')
       
           doc.append(Command('begin','flushright'))
           doc.append(Command('textsc',u"Comissió d'Energia de Can Fugarolas"))
           doc.append(Command('end','flushright'))
       
           doc.generate_pdf()