gps with jq to mqtt
parent
80a6b0b4fd
commit
9576e1353b
|
@ -0,0 +1,6 @@
|
|||
while read mess; do
|
||||
outjson=$(echo $mess|./gps_pre.jq)
|
||||
if [ -n "$outjson" ]; then
|
||||
mosquitto_pub -h mqtt -t "gps/$(hostname)" -m $outjson
|
||||
fi
|
||||
done
|
|
@ -51,11 +51,6 @@ pdop=-9}
|
|||
/GSA/ {
|
||||
gsview=gsview",\"PDOP\":"$16*1000
|
||||
gsview=gsview",\"VDOP\":"$18*1000
|
||||
gsview=gsview",\"SFIX\":{"
|
||||
for(i=4;i<=15;i++){
|
||||
if($i!="")gsview=gsview$i","
|
||||
}
|
||||
gsview=gsview"}"
|
||||
}
|
||||
/GRS/ {
|
||||
tgrs=""
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
jq 'if .mode then if .mode != 3 then empty else . end else . end'|jq 'paths as $path|(.device|split("/")) as $dev|(if .class == "GST" then ([$dev[2],"gst"]|join("/")) else $dev[2] end) as $gst|{($gst):(({(if(($path|length)==2) then [$path[0],($path[1]|tostring),$path[2]]|join("/") else if(($path|length)==1) then $path[0] else empty end end):getpath($path)}|if(.satellites or .device or .class or .status or .mode) then empty else . end|if($path[0] == "satellites") then {((["sat",(.[].PRN|tostring)])|join("/")):(.[]|del(.PRN))} else . end))}' |jq -rs 'reduce .[] as $item ({}; . * $item)'|jq -c 'leaf_paths as $path | {($path|join("/")):getpath($path)}'|jq -rs -c 'reduce .[] as $item ({}; . * $item)'|sed -e 's/{}//g'
|
24
gps_raw5.sh
24
gps_raw5.sh
|
@ -2,24 +2,10 @@
|
|||
export TZ=UTC
|
||||
TTY=$1
|
||||
STTY=$(echo $1|sed -e 's/tty//g')
|
||||
if [ ! -f /tmp/${TTY}.pid ]; then
|
||||
id=
|
||||
hn=$(hostname)
|
||||
mqtt_host=172.24.42.2
|
||||
# echo $$ > /tmp/${TTY}.pid
|
||||
mac=$(printf "%d\n" 0x$(cat $(find /sys/class/net -name "en*" |head -n1)/address|tr -d ':'))
|
||||
uid=$(echo $(udevadm info --name=/dev/${TTY}|sed -n '/MAJOR/{s/[A-Z: =]*//;p}')*256+$(udevadm info --name=/dev/${TTY}|sed -n '/MINOR/{s/[A-Z: =]*//;p}')|bc)
|
||||
vendor=$(udevadm info --name=/dev/${TTY}|sed -n '/VENDOR=/{s/[A-Z:_ =]*//;p}')
|
||||
serial=$(udevadm info --name=/dev/${TTY}|sed -n '/SERIAL=/{s/[A-Z:_ =]*//;p}')
|
||||
model=$(udevadm info --name=/dev/${TTY}|sed -n '/MODEL=/{s/[A-Z:_ =]*//;p}')
|
||||
path=$(udevadm info --name=/dev/${TTY}|sed -n '/DEVPATH=/{s/[A-Z:_ =]*//;p}')
|
||||
mosquitto_pub -h 172.24.42.2 -r -t "gpsi/$(hostname)/${uid}/vendor" -m ${vendor}
|
||||
mosquitto_pub -h 172.24.42.2 -r -t "gpsi/$(hostname)/${uid}/serial" -m ${serial}
|
||||
mosquitto_pub -h 172.24.42.2 -r -t "gpsi/$(hostname)/${uid}/model" -m ${model}
|
||||
datutc=""
|
||||
topicrmc="gps/$(hostname)/${uid}/rmc"
|
||||
cat /dev/${TTY}|unbuffer -p grep -e GBS -e GST -e GSV -e GRS -e GSA -e GGA -e RMC|unbuffer -p cut -d* -f1 |unbuffer -p gawk -f ./gps_pre.awk |while read rmc; do
|
||||
mosquitto_pub -h ${mqtt_host} -t ${topicrmc} -m "$rmc"
|
||||
mqtt_host=mqtt
|
||||
uid=$(echo $(/sbin/udevadm info --name=/dev/${TTY}|sed -n '/MAJOR/{s/[A-Z: =]*//;p}')*256+$(/sbin/udevadm info --name=/dev/${TTY}|sed -n '/MINOR/{s/[A-Z: =]*//;p}')|bc)
|
||||
topicrmc="gps/$(/bin/hostname)/${uid}"
|
||||
/bin/cat /dev/${TTY}|/usr/bin/unbuffer -p /bin/grep -e GBS -e GST -e GSV -e GRS -e GSA -e GGA -e RMC |/usr/bin/unbuffer -p /usr/bin/cut -d* -f1 |/usr/bin/unbuffer -p /usr/bin/gawk -f /home/pi/ragps/gps_pre.awk |while read rmc; do
|
||||
/usr/bin/mosquitto_pub -h ${mqtt_host} -t ${topicrmc} -m "$(echo ${rmc}|sed -e 's/[,]*,/,/g'|sed -e 's/,}/}/g;s/:,/:null,/g;s/:}/:null}/g'|jq -c 'del(.[] | nulls)')"
|
||||
done
|
||||
fi
|
||||
# gbs
|
||||
|
|
Loading…
Reference in New Issue