X-Git-Url: http://git.smho.de/gw/?p=owSlave2.git;a=blobdiff_plain;f=stest%2Flog_all.py;fp=stest%2Flog_all.py;h=0000000000000000000000000000000000000000;hp=a6ca49d10e7a058a4e558319fb93ad7ad0b91d4c;hb=3608ace7dd5bd4fa5d7d49224ef770b21596092c;hpb=3f2aceaf525eeceff3baece206b2048bbf286c40 diff --git a/stest/log_all.py b/stest/log_all.py deleted file mode 100644 index a6ca49d..0000000 --- a/stest/log_all.py +++ /dev/null @@ -1,482 +0,0 @@ -import sys -import os -import os.path -import subprocess -import io -import time -import math -import shutil - -toolstr="/home/muto/owtools/src/owtools USB1 DC " - -gplist=[] - -def id2string(id): - s="" - for i in range(8): - s=s+"%02X" %(id[7-i]) - return s - -def string2id(s): - for i in range(8): - bl=[] - i2=14-i*2; - bl.append(int(s[i2:i2+2],16)) - return bl - - -def calculateValues(code, V, vn): - if code==1: - return V[vn] / 16.0; - elif code==2: - return V[vn]/1.6; - elif code==3: - return V[vn]*0.2 + 700; - elif code==4: - return math.exp(V[vn] / 160.0); - elif code==5: - return V[vn]*62.5 + 55000; - elif code==6: - return V[vn] / 256.0; - elif code==7: - if V[1]!=0: - return ((float(V[2]) / float(V[1]) - 0.16) / 0.0062) / (1.0546 - 0.00216*V[0]/256.0); - else: - return 0 - elif code==8: - return V[vn] / 100.0; - elif code==9: - return V[vn] / 65535.0*5.1; - elif code==10: - return V[vn] / 65535.0*2.55; - elif code==11: - return V[vn] / 65535.0*1.1; - elif code==12: - return V[vn] / 10.0; - elif code==13: - return V[vn]; - elif code==14: - return (V[vn] - 32767.0) / 100.0; - elif code==15: - return math.exp((V[vn]-32767.0)/1000.0); - elif code==16: - return V[vn]/32.0; - else: - return 0; - -def getName(code ): - if code==1: - return ["Temperatur","C"] - if code==2: - return ["Druck","hPa"] - if code==3: - return ["Beleuchtungsstaerke","lux"] - if code==4: - return ["Luftfeuchte","%%"] - if code==5: - return ["Konstante",""] - if code==6: - return ["Spannung","V"] - if code==7: - return ["Strom","mA"] - if code==8: - return ["VOC","ppm"] - if code==9: - return ["Counter",""] - return [] - - -def owCom(dev,send,rcount): - cmd=toolstr+id2string(dev) - #for i in range(8): - # cmd=cmd+"%02X" %(dev[7-i]) - cmd=cmd+" " - for b in send: - cmd=cmd+"%02X" % (b) - for i in range(rcount): - cmd=cmd+"FF" - print(cmd.split(' ')); - p = subprocess.Popen(cmd.split(' '), shell=False, bufsize=14000, stdin=subprocess.PIPE, stdout=subprocess.PIPE) - p.wait() - s=p.stdout.read().decode("utf-8") - l=s.split("\n"); - #print(l[2]) - bl=[] - for i in range(int(len(l[2])/2)): - i2=i*2; - bl.append(int(l[2][i2:i2+2],16)) - return bl - -def owComStr(dev,sendstr): - cmd=toolstr+id2string(dev) - #for i in range(8): - # cmd=cmd+"%02X" %(dev[7-i]) - cmd=cmd+" "+sendstr - p = subprocess.Popen(cmd.split(' '), shell=False, bufsize=14000, stdin=subprocess.PIPE, stdout=subprocess.PIPE) - p.wait() - s=p.stdout.read().decode("utf-8") - #print(s); - ll=s.split("\n"); - bll=[] - for l in ll[2:]: - bl=[] - for i in range(int(len(l)/2)): - i2=i*2; - bl.append(int(l[i2:i2+2],16)) - bll.append(bl) - return bll - -voc_marker=[] - -def owList(): - cmd=toolstr[0:-3] - print(cmd) - p = subprocess.Popen(["./owtools","USB1"], shell=False, bufsize=14000, stdin=subprocess.PIPE, stdout=subprocess.PIPE) - p.wait() - s=p.stdout.read() - l=s.split("\n") - #print(l); - l=l[1:-1] - devlist=[] - for d in l: - dev=[] - bl=[] - for i in range(8): - i2=14-i*2; - bl.append(int(d[i2:i2+2],16)) - dev.append(bl) - #print(bl) - config=owCom(bl,[0x85],18) - #print(config) - dev.append(config[1:]) - ddev=0 - vm=0 - if config[1]==0x08: - vm=1 - #print("Test_configs") - i=0 - for dv in devlist: - #print("c",dv[1][9:16]) - #print("d",bl[0:7]) - if dv[1][9:16]==bl[0:7]: - print("Double Device") - ddev=1 - dv.append(dev[0]) - dv.append(dev[1]) - if vm==1: - voc_marker[i]=2 - i=i+1 - if ddev==0: - devlist.append(dev) - voc_marker.append(vm) - #print("devlist",devlist) - return devlist - -def getProperties(dev,voc): - pl=[] - if dev[0][0]==0x26: - pl=["Temperatur","Spannung","Luftfeuchte","Strom"] - if dev[1][0]!=0xFF: - pl=[] - for i in range(4): - name=getName(dev[1][i*2]) - if len(name)!=0: - pl.append(name[0]) - if voc!=0: - #R0,VS,Corr,cmode,RS,RSR0,VOC1,VOC2 - pl.append("R0") - pl.append("VS") - pl.append("Corr") - pl.append("cmode") - pl.append("RS") - pl.append("RSR0") - pl.append("VOC1") - pl.append("VOC2") - if dev[0][0]==0x28: - pl=["Temperatur"] - if dev[1][0]!=0xFF: - pl=[] - for i in range(4): - name=getName(dev[1][i*2]) - if len(name)!=0: - pl.append(name[0]) - return pl - -def getValues(dev,voc): - pl=[] - #print(id2string(dev[0]),voc) - if dev[0][0]==0x26: - vnok=1 - while (vnok): - sbl=owComStr(dev[0],"4E000F_RB4_R_P7044_R_P70B800_RBE00FFFFFFFFFFFFFFFFFF_R4E0000_RB4_R_P70B800_RBE00FFFFFFFFFFFFFFFFFF_RBE03FFFFFFFFFFFFFFFFFF") - #print(sbl) - sb=sbl[4] - VDD=(sb[5]+sb[6]*256) - sb=sbl[8] - VAD=(sb[5]+sb[6]*256) - Temp=(sb[3]+sb[4]*256) - curr=sb[7]+sb[8]*256 - if (sb[8] & 0x80): - curr=-(curr&0x7FFF) - vals=[Temp,VDD,VAD,curr] - formellist=[6,8,7,8] - if dev[1][0]!=0xFF: - formellist=[] - for i in range(4): - if (dev[1][i*2+1])!=0: - formellist.append(dev[1][i*2+1]) - else: - break - cvals=[] - for i in range(len(formellist)): - cvals.append(calculateValues(formellist[i],vals,i)) - if (cvals[2]<=110): - vnok=0 - else: - print(cvals) - vnok=0 - if voc!=0: - #R0,VS,Corr,cmode,RS,RSR0,VOC1,VOC2 - sb=sbl[9] - R0=(sb[2]+sb[3]*256)/100.0 - VS=(sb[4]+sb[5]*256)/10000.0 - Corr=(sb[7]+sb[8]*256)/1000.0 - cmode=sb[6] - RS=(3/VS-1)*30 - RSR0=(RS/R0) - VOC1=RSR0*Corr - VOC2=RSR0/Corr - cvals.append(R0) - cvals.append(VS) - cvals.append(Corr) - cvals.append(cmode) - cvals.append(RS) - cvals.append(RSR0) - cvals.append(VOC1) - cvals.append(VOC2) - return cvals - if dev[0][0]==0x28: - sbl=owComStr(dev[0],"44_R_PFF_PFF_PFF_PFFBEFFFFFFFFFFFFFFFFFF") - Temp=sbl[1][1]+sbl[1][2]*256 - if (sbl[1][2] & 0x80): - Temp=-(Temp&0x7FFF) - if dev[1][0]!=0xFF: - return [calculateValues(dev[1][1],[Temp],0)] - else: - return [calculateValues(1,[Temp],0)] - return [] - - - - -def gp_makefile(name,i): - f=open("gpscript%i.dem" %(i),"w") - #f.write("set decimalsign ','\n") - f.write('set decimalsign locale\n') - f.write('set timefmt "%d.%m.%Y %H:%M:%S"\n') - f.write('set xdata time\n') - f.write('set datafile separator "\\t" \n') - f.write('set terminal png size 1024,600\n') - f.write('set format x "%d.%m\\n%H:%M"\n') - f.write("set output '%s'\n" % (name)) - f.write("set grid ytics\n") - f.write("set terminal postscript landscape\n") - f.write('set object 1 rectangle from screen 0,0 to screen 1,1 fillcolor rgb"#FFFFFF" behind\n') - #set output 'Temperatur.ps' - return f - - -def gnuplot(): - rl=["Temperatur","Luftfeuchte","Druck","VOC","Beleuchtungsstaerke"] - rlf=[] - rls=[] - rllc=[] - for i in range(len(rl)): - rlf.append("") #begin of plotline - rls.append('') #plotline - rllc.append('') #lineconfig - li=0 - for c in gplist: - for i in range(len(rl)): - if c[0]==rl[i]: - li=li+1 - cl=c[2].split(",") - rls[i]=rls[i]+" %s using 1:%i with linespoints ls %i title \"%s\" ," % (rlf[i],c[1],li,cl[0]) - rllc[i]=rllc[i]+ "set style line %i %s\n" % (li,cl[1]) - rlf[i]='""' - for i in range(len(rl)): - f=gp_makefile(rl[i]+".ps",i) - f.write(rllc[i]) - f.write('plot "log22.txt" '+rls[i]+"\n") - f.write("set output '%s'\n" % (rl[i]+"_l.ps")) - f.write('plot "< tail -n 100 log22.txt" '+rls[i]+"\n") - f.close() - p = subprocess.Popen(["gnuplot","gpscript%i.dem" %(i)], shell=False, bufsize=14000, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - p.wait(); - cmd="convert -size 2048x1600 -depth 8 %s.ps -rotate 90 -resize 1024x800 -depth 8 %s.png" %(rl[i],rl[i]) - p = subprocess.Popen(cmd.split(" "), shell=False, bufsize=14000, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - p.wait(); - cmd="convert -size 2048x1600 -depth 8 %s_l.ps -rotate 90 -resize 1024x800 -depth 8 %s_l.png" %(rl[i],rl[i]) - print cmd.split(" ") - p = subprocess.Popen(cmd.split(" "), shell=False, bufsize=14000, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - p.wait(); - shutil.copyfile(rl[i]+".png","/var/www/html/"+rl[i]+".png") - shutil.copyfile(rl[i]+"_l.png","/var/www/html/"+rl[i]+"_l.png") - -devlist=owList() -print(voc_marker) -tline1="\t" -tline2="time\t" -devdict={} -devwholist=[] -f=open("DEVLIST.txt","r") -for l in f.readlines(): - ls=l.split(" ") - if (len(ls)>1): - devdict[ls[0]]=l.replace("\n","") - devwholist.append(ls[0]) - -i=0 -col=1 - - -devlist1=[] -devlistn=[] -voc_marker1=[] - -for d in devwholist: - i=0 - print(d) - for dd in devlist: - if id2string(dd[0])==d: - print("->",id2string(dd[0])) - devlist1.append(dd) - devlist.remove(dd) - voc_marker1.append(voc_marker[i]) - del voc_marker[i] - break - i=i+1 -for d in devlist: - devlist1.append(d) - -devlist=devlist1 -voc_marker=voc_marker1 - - -print devlist - -print voc_marker - - - -for d in devlist: - print(d[0]) - prop=getProperties(d,voc_marker[i]) - if len(prop)>0: - tline1=tline1+id2string(d[0]) - for p in prop: - tline2=tline2+p+"\t" - tline1=tline1+"\t" - col=col+1 - dn=id2string(d[0]) - if dn in devdict: - dn=devdict[dn] - gplist.append((p,col,dn)) - if (len(d)>2): - print("->",d[2]) - prop=getProperties(d[2:],voc_marker[i]) - tline1=tline1+id2string(d[2]) - for p in prop: - tline2=tline2+p+"\t" - tline1=tline1+"\t" - col=col+1 - dn=id2string(d[2]) - if dn in devdict: - dn=devdict[dn] - gplist.append((p,col,dn)) - i=i+1 - -#if os.path.exists("log22.txt"): -# lt = time.localtime() -# ts=time.strftime("%Y%m%d%H%M%S", lt) -# os.rename("log22.txt","log22_"+ts+".txt") - -f=open("log22h.txt","a") -f.write(tline1+"\n") -f.write(tline2+"\n") -f.close() -print(tline1) -print(tline2) - -while (1): - lt = time.localtime() - vline=time.strftime("%d#%m#%Y %H:%M:%S\t", lt) - i=0 - for d in devlist: - #print(d[0]) - vals=getValues(d,voc_marker[i]) - for v in vals: - vline=vline+"%0.5f\t" % (v) - if (len(d)>2): - vals=getValues(d[2:],voc_marker[i]) - for v in vals: - vline=vline+"%0.5f\t" % (v) - i=i+1 - print(vline) - f=open("log22.txt","a") - f.write(vline.replace('.',',').replace('#','.')+"\n") - #f.write(vline+"\n") - f.close() - gnuplot() - time.sleep(90) - - - - -id=[0x26,0xA3,0xD9,0x84,0x00,0x16,0x05,0x67] -print("VDD\tVAD\tTemp\tHum\tR0\tVS\tCorr\tcm\tRS\tRSR0\tVOC1\tVOC2"); -print(owComStr(id,"85FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF")); -#print(owComStr(id,"4E000F_RB4_R_P7044_R_P70B8_RBE00FFFFFFFFFFFFFFFFFF_R4E0000_RB4_R_P70BE00FFFFFFFFFFFFFFFFFF_RBE03FFFFFFFFFFFFFFFFFF")) - -while(0): - sbl=owComStr(id,"4E000F_RB4_R_P7044_R_P70B8_RBE00FFFFFFFFFFFFFFFFFF_R4E0000_RB4_R_P70BE00FFFFFFFFFFFFFFFFFF_RBE03FFFFFFFFFFFFFFFFFF") - #owCom(id,[0x4E,0x00,0x0F],0) - #owCom(id,[0xB4],0) - #time.sleep(0.1) - #owCom(id,[0x44],0) - #time.sleep(0.1) - #owCom(id,[0xB8],0) - #sb=owCom(id,[0xBE,0x00],11) - sb=sbl[4] - VDD=(sb[5]+sb[6]*256)/100.0 - #owCom(id,[0x4E,0x00,0x00],0) - #owCom(id,[0xB4],0) - #time.sleep(0.1) - #owCom(id,[0xB8],0) - #sb=owCom(id,[0xBE,0x00],11) - sb=sbl[7] - VAD=(sb[5]+sb[6]*256)/100.0 - Temp=(sb[3]+sb[4]*256)/256.0 - #sb=owCom(id,[0xBE,0x03],11) - sb=sbl[8] - R0=(sb[2]+sb[3]*256)/100.0 - VS=(sb[4]+sb[5]*256)/10000.0 - Corr=(sb[7]+sb[8]*256)/1000.0 - cmode=sb[6] - RS=(3/VS-1)*30 - RSR0=(RS/R0) - VOC1=RSR0*Corr - VOC2=RSR0/Corr - Hum=(VAD/VDD-0.16)/0.0062 - Hum=(Hum)/(1.0546-0.00216*(Temp)) - f=open("log.txt","a") - print("%0.3f\t%0.3f\t%0.3f\t%0.3f\t%0.3f\t%0.3f\t%0.3f\t%i\t%0.3f\t%0.3f\t%0.3f\t%0.3f" %(VDD,VAD,Temp,Hum,R0,VS,Corr,cmode,RS,RSR0,VOC1,VOC2)) - f.write("%0.3f\t%0.3f\t%0.3f\t%0.3f\t%0.3f\t%0.3f\t%0.3f\t%i\t%0.3f\t%0.3f\t%0.3f\t%0.3f\n" %(VDD,VAD,Temp,Hum,R0,VS,Corr,cmode,RS,RSR0,VOC1,VOC2)) - f.close() - time.sleep(30) - -#cmd="owtools.exe usb1 DC 6705160084D9A326 BE00FFFFFFFFFFFFFFFFFFFF" -#print(owCom([0x26,0xA3,0xD9,0x84,0x00,0x16,0x05,0x67],[0xBE,0x00],11)) - - -