nodemecu/generador_json

86 lines
1.9 KiB
Text
Raw Normal View History

2022-02-23 14:42:32 +00:00
#!/bin/bash
2022-03-05 18:13:50 +00:00
#set -x
source /etc/nodemecu.conf
2022-03-05 20:09:45 +00:00
source $funciones
2022-03-05 18:13:50 +00:00
conteo=$(cat $contador)
uuid="$(uuidgen)"
marca_de_tiempo="$(date +%s)"
case $modo in
2022-02-23 14:42:32 +00:00
test)
2022-03-03 22:13:00 +00:00
funcion_datos_simulados
2022-02-23 14:42:32 +00:00
;;
2022-03-05 18:13:50 +00:00
sensores)
funcion_datos_sensores
;;
2022-02-23 14:42:32 +00:00
esac
2022-03-05 18:13:50 +00:00
2022-03-03 22:13:00 +00:00
# ARMADO DE FICHERO JSON
2022-02-23 14:42:32 +00:00
for i in $lecturas;do
case $i in
id*)
sensores="$sensores { $(echo \"id\":\"$(echo $i | cut -d ":" -f 2)\", \"sensores\": [ )"
;;
ts*)
2022-03-05 18:13:50 +00:00
#sensores="$sensores { $(echo \"timestamp\": $(echo $i | cut -d ":" -f 2),)"
sensores="$sensores { $(echo \"timestamp\": $marca_de_tiempo,)"
2022-02-23 14:42:32 +00:00
;;
tp*)
sensores="$sensores $(echo \"type\": \"$(echo $i | cut -d ":" -f 2)\",)"
;;
vl*)
sensores="$sensores $(echo \"value\": $(echo $i | cut -d ":" -f 2),)"
;;
un*)
sensores="$sensores $(echo \"unit\": \"$(echo $i | cut -d ":" -f 2)\",)"
;;
er*)
sensores="$sensores $(echo \"error\": $(echo $i | cut -d ":" -f 2) })"
;;
AD_SENSOR)
sensores="$sensores,"
;;
AD_ARDUINO)
sensores="$sensores]},"
;;
END)
sensores="$sensores]}"
;;
esac
done
2022-03-03 22:13:00 +00:00
2022-03-05 18:13:50 +00:00
json="{\"transaction_uuid\":\"$uuid\",\"controller_id\":\"$name\",\"timestamp\":\"$marca_de_tiempo\",\"error_code\":\"10\",\"coordinates\":{\"lat\":1,\"lng\":1},\"battery_status\":\"98\",\"sample\":\"0\",\"storage\":\"uso del almacenamiento\",\"arduinos\":[$sensores]}"
touch $lock
file=$(date +%Y%m%d%H%M%S -d @$marca_de_tiempo)-$uuid
if echo $json | jsonlint-php 2> /dev/null;then
echo $json > $registros/$file && rm $lock && echo $((conteo+1)) > $contador
else
echo "$(date +%Y-%m-%d-%H:%M:%S -d @$marca_de_tiempo) - No se pudo obtener información." >> $log
rm $lock
fi
exit
# habia una razon para esto, ya va a saltar
for ((i=1 ; i <=3 ; i++));do
if echo $json | jsonlint-php 2> /dev/null;then
echo $json > /opt/nodemecu/stack/$file && rm /opt/nodemecu/lock && echo $((counter+1)) > $contador && break
else
echo "$(date +%Y-%m-%d-%H:%M:%S) - No se pudo obtener información." >> /opt/nodemecu/errors.log && sleep 1
fi
done