1531919037224 1531931564879 9 LocusSensorElevation 100 37 %SENSORRESULT_TIME 7 %TIMES-120 135 Show Result 547 %SENSORRESULT_TIME %TIMES 548 %SENSORRESULT 38 123 date +"%F" %date 123 time -p awk 'BEGIN{threshold=0.15;FS=";"; getline;getline secondLine;time=substr(secondLine,14,10); min=2000;prPoints=0;startTime=time;prevTime=time; } function calcPr(pr){ if(prevPr=="") prevPr=pr; change=pr-prevPr; if(pr>1025) prmult=8.25; else if(pr>900) prmulti=9.16-((pr-900)/125)*0.91; else if(pr>800) prmulti=10.08-((pr-800)/100)*0.92; else if(pr>700) prmulti=11.22-((pr-700)/100)*1.14; else prmulti=11.22; if((isDesc && change < threshold) || change < -threshold) isDesc = 1; else isDesc=0; if((isDesc && change < 0) || !isDesc && change > 0){ change*=prmulti; prevPr=pr; if(change>0) climb+=change; else desc+=change; } } $3 == "SI_PR" { time=substr($2,0,10); pr=substr($4,0,(length($4)-2)); if(time != prevTime){ timeGap=time-prevTime; if(timeGap>maxTimeGap)maxTimeGap=timeGap; prPoints++; if(valueCount>2) { valueCount-=2; valueSum-=min+max} calcPr(valueSum/valueCount); valueCount=0; valueSum=0; min=pr; max=pr } valueCount++; valueSum+=pr; prevTime=time; if(pr < min) min=pr; if(pr > max) max=pr; } END{ endTime=substr($2,0,10); pointsPerSec=prPoints/(endTime-startTime) print climb";"desc";"pointsPerSec";"maxTimeGap } ' %SENSORS_DIR%date*.data %elevdata %stderr 130 WeatherElevation %priority+1 %date 590 %elevdata ; 547 %climb %elevdata1-%stationClimb 547 %desc %elevdata2-%stationDesc 547 %SENSORRESULT Climb: %climb Desc: %desc %elevdata3 Points/s MaxGap: %elevdata4 s %stderr stationClimb: %stationClimb StationDesc: %stationDesc