rpirena/datalogger/STRATO3.awk

87 lines
1.8 KiB
Awk
Raw Permalink Normal View History

#! /usr/bin/gawk -i
BEGIN {
FS = ";"
C[2] = "Uptime"
C[3] = "Time"
C[4] = "Date"
C[5] = "RMC"
C[6] = "nSAT"
C[7] = "Lat"
C[8] = "Lon"
C[9] = "SoG"
C[10] = "kmh"
C[11] = "CoG"
C[12] = "Alt"
C[13] = "bTemp"
C[14] = "Temp"
C[15] = "Hum"
C[16] = "Pres"
C[17] = "Vbat"
C[18] = "Stat"
n1 = 2
n2 = 18
for (n in C) C[C[n]] = n
}
function isGPS() {
if (!/^\$/ || $C["RMC"]!="Y") return 0
split($C["Time"], TT, /:/)
split($C["Date"], DD, /\./)
ISO_Time = DD[3]"-"DD[2]"-"DD[1]"T"TT[1]":"TT[2]":"TT[3]"Z"
Time=mktime(DD[3]" "DD[2]" "DD[1]" "TT[1]" "TT[2]" "TT[3], "UTC")
file_epoch = Time-Uptime
split($C["Lon"], LL, / /)
Lon = LL[1]+LL[2]/60
if (LL[3]=="W") Lon = -Lon
split($C["Lat"], LL, / /)
Lat = LL[1]+LL[2]/60
if (LL[3]=="S") Lat = -Lat
return 1
}
function isLog() {
if (!/^\$/) return 0
split($C["Uptime"], TT, /:/)
Uptime = TT[1]*3600 + TT[2]*60 + TT[3]
p=$C["Pres"]+0
T=$C["Temp"]+0
H=$C["Hum"]+0
V=$C["Vbat"]+0
Time = file_epoch+Uptime
return isGPS()+1
}
function doHead() {
for (n=n1; n<=N2; n++) printf " %s", C[n]
printf "\n"
}
function all() {
gps = isLog()
if (oldgps != gps) print Nix
oldgps=gps
if (gps>0) {
printf "%d", Uptime
printf " %.2f", $C["bTemp"]
printf " %.2f", T
printf " %.2f", H
printf " %.2f", p
printf " %.3f", V
printf " %u", Time
}
if (gps>1) {
printf " %s", ISO_Time
printf " %d", $C["nSAT"]
printf " %.7f %.7f %.1f", Lat, Lon, $C["Alt"]
printf " %.3f %.1f", $C["SoG"], $C["CoG"]
}
if (gps>0) {
printf "\n"
}
return gps
}
function gpslog() {
printf "%d %.7f %.7f %.1f %.3f %.1f %d\n", Uptime, Lon, Lat, $C["Alt"], $C["SoG"], $C["CoG"], $C["nSAT"]
}