ScriptFactura: diferència entre les revisions
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ó |
||
| 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 | |||
#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 63: | Línia 72: | ||
os.makedirs('Grafics') | os.makedirs('Grafics') | ||
for arduino in range(2,8): | #for arduino in range(2,8): | ||
for arduino in 5,7: | |||
print "Analitzant dades arduino ",arduino | print "Analitzant dades arduino ",arduino | ||
| Línia 72: | Línia 80: | ||
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 111: | ||
#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[ | 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 | #Nomes fem els calculs si estem en lultim mes | ||
if Mes == mesactual: | if Mes == mesactual: | ||
| Línia 162: | Línia 186: | ||
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 | |||
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 5,7: | |||
left = np.arange(1,DIES | left = np.arange(1,DIES) | ||
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][ | 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 214: | ||
elif arduino == 5: | elif arduino == 5: | ||
for i in range(2,4): | for i in range(2,4): | ||
for index in range(1,int(DIES)): | |||
Colectiu | 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][ | for index in range(1,int(DIES)): | ||
Colectiu | 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 | ||
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 | valors=eval('valorDiariL'+str(i))[arduino][1:int(DIES)] | ||
plt.clf() | plt.clf() | ||
plt.axis([1,DIES | 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]+' ( | 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 246: | ||
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][ | valors=eval('consum_mensualL'+str(i))[arduino][0:12] | ||
plt.clf() | plt.clf() | ||
plt.axis([0,MESOS+1,0, | 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]+' ( | 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 233: | Línia 260: | ||
Colectiu=[0]*3 | Colectiu=[0]*3 | ||
print u"Creant factures ..." | print u"Creant factures ..." | ||
for arduino in range(2,8): | #for arduino in range(2,8): | ||
for arduino in 5,7: | |||
if arduino == 2: | if arduino == 2: | ||
| Línia 245: | Línia 273: | ||
RANG=4 | RANG=4 | ||
elif arduino == 5: | elif arduino == 5: | ||
Colectiu=["General de Can Fugarolas","",""] | Colectiu=["General de Can Fugarolas","",""] | ||
RANG=2 | RANG=2 | ||
| Línia 280: | Línia 306: | ||
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( | 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 325: | ||
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/',' | 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 340: | ||
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 | 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/',' | 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 353: | ||
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 | left_kitten.add_caption(u'Últim any') | ||
with doc.create(SubFigure( | with doc.create(SubFigure( | ||
position='b', | position='b', | ||
Revisió del 07:10, 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):
for arduino in 5,7:
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):
for arduino in 5,7:
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):
for arduino in 5,7:
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()