please wait...
Plotly chart will be drawn inside this DIV
Notes de fabrication:
requête sql sur la table postgresql capteur8thermo
agrège les données par segment de temps (ici 5mn: 5*60 secondes)
select (val*60*5) as time, cpt, su, su/cpt as moyenne, ma1, su1, su1/cpt as moyenne1, ma2, su2, su2/cpt as moyenne2, ma3, su3, su3/cpt as moyenne3, ma4, su4, su4/cpt as moyenne4, ma5, su5, su5/cpt as moyenne5, ma6, su6, su6/cpt as moyenne6, ma7 from (select Round(extract(epoch from gpstime) / (60*5)) AS val, count(*) as cpt, sum(thermo1) as su, sum(thermo2) as su1, sum(thermo3) as su2, sum(thermo4) as su3, sum(thermo5) as su4, sum(thermo6) as su5, sum(thermo7) as su6, max(thermo1) as ma1, max(thermo2) as ma2, max(thermo3) as ma3, max(thermo4) as ma4, max(thermo5) as ma5, max(thermo6) as ma6, max(thermo7) as ma7 from capteur8thermo where extract(epoch from gpstime) > 0 group by val)as tt order by time;
code python pour en faire un json exploitable par plotly:
#!/usr/bin/env python3
# coding: utf-8
name="d8thermo_30mn_max"
data=open(name).readlines()
from datetime import datetime
data =data[2:]
datas=[]
for l in data:
datas.append(l.replace("\n","").replace("\t",""))
datax=[]
for l in datas:
sl = l.split('|')
ssl=[]
for ll in sl:
ssl.append(ll.strip())
datax.append(ssl)
donnees={'cpt':{'time':[],'val':[]},
'su1':{'time':[],'val':[]}, 'moyenne1':{'time':[],'val':[]}, 'max1':{'time':[],'val':[]},
'su2':{'time':[],'val':[]}, 'moyenne2':{'time':[],'val':[]}, 'max2':{'time':[],'val':[]},
'su3':{'time':[],'val':[]}, 'moyenne3':{'time':[],'val':[]}, 'max3':{'time':[],'val':[]},
'su4':{'time':[],'val':[]}, 'moyenne4':{'time':[],'val':[]}, 'max4':{'time':[],'val':[]},
'su5':{'time':[],'val':[]}, 'moyenne5':{'time':[],'val':[]}, 'max5':{'time':[],'val':[]},
'su6':{'time':[],'val':[]}, 'moyenne6':{'time':[],'val':[]}, 'max6':{'time':[],'val':[]},
'su7':{'time':[],'val':[]}, 'moyenne7':{'time':[],'val':[]}, 'max7':{'time':[],'val':[]},
}
for d in datax:
try:
time, cpt, su1, moyenne1, max1,su2, moyenne2,max2, su3, moyenne3, max3, su4, moyenne4, max4, su5, moyenne5, max5, su6, moyenne6, max6, su7, moyenne7, max7=d
for k in [ 'cpt', 'su1', 'moyenne1', 'max1', 'su2', 'moyenne2', 'max2','su3', 'moyenne3', 'max3', 'su4', 'moyenne4', 'max4', 'su5', 'moyenne5', 'max5','su6', 'moyenne6', 'max6','su7', 'moyenne7', 'max7']:
donnees[k]['time'].append(datetime.fromtimestamp(float(time)).isoformat())
donnees['cpt']['val'].append(cpt)
donnees['su1']['val'].append(su1)
donnees['moyenne1']['val'].append(moyenne1)
donnees['su2']['val'].append(su2)
donnees['moyenne2']['val'].append(moyenne2)
donnees['su3']['val'].append(su3)
donnees['moyenne3']['val'].append(moyenne3)
donnees['su4']['val'].append(su4)
donnees['moyenne4']['val'].append(moyenne4)
donnees['su5']['val'].append(su5)
donnees['moyenne5']['val'].append(moyenne5)
donnees['su6']['val'].append(su6)
donnees['moyenne6']['val'].append(moyenne6)
donnees['su7']['val'].append(su7)
donnees['moyenne7']['val'].append(moyenne7)
#mimax = lambda x: 150 if x>150 else x
def mimax(v):
if int(v)>150:
return 150
return v
donnees['max1']['val'].append(mimax(max1))
donnees['max2']['val'].append(mimax(max2))
donnees['max3']['val'].append(mimax(max3))
donnees['max4']['val'].append(mimax(max4))
donnees['max5']['val'].append(mimax(max5))
donnees['max6']['val'].append(mimax(max6))
donnees['max7']['val'].append(mimax(max7))
except Exception as e:
print(e)
import json
open("%s.json"%name,"w").write(json.dumps([donnees]))