A dual band aprs digipeater with enhanced telemetry capabilities.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

277 lines
12 KiB

#!/bin/bash
##################################################################################
# #
# Generates graphs and images of telemetry data for website #
# Run at the same frequency as telemetry data comes in #
# For example in the crontab #
#
# Data format: #
# [date],1,2,3,4,5,6,7,8,9,10 #
# #
# 1 = temperature outside #
# 2 = humidity outside #
# 3 = temperature small greenhouse #
# 4 = humidity small greenhouse #
# 5 = soil moisture small greenhouse #
# 6 = soil moisture small greenhouse #
# 7 = temperature large greenhouse #
# 8 = humidity large greenhouse #
# 9 = soil moisture large greenhouse #
# 10 = soil moisture large greenhouse #
# #
# (C)2021 M.T. Konstapel https://meezenest.nl/mees #
# #
# This file is part of PE1RXF-APRS-server. #
# #
# PE1RXF-APRS-server is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
# the Free Software Foundation, either version 3 of the License, or #
# (at your option) any later version. #
# #
# PE1RXF-APRS-server is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# #
# You should have received a copy of the GNU General Public License #
# along with PE1RXF-APRS-server. If not, see <https://www.gnu.org/licenses/>. #
# #
##################################################################################
APRS_RECEIVED_MESSAGES_DIR=/home/marcel/ham/aprs_utils/aprs_log/
APRS_TELEMETRY_FILE_SUFFIX=_telemetry_PE1RXF-7.dat
APRS_LATEST_TELEMETRY_FILE=latest_telemetry_PE1RXF-7.dat
APRS_MAX_DATA=telemetry_PE1RXF-7_max_values.dat
APRS_MIN_DATA=telemetry_PE1RXF-7_min_values.dat
PUBLISH_DIR=/home/marcel/ham/web-interface/telemetry
# Get current date YYYY-MM-DD
CURRENT_DATE=$(date +"%Y-%m-%d")
YESTERDAY_DATE=$(date --date="yesterday" +"%Y-%m-%d")
MONTH_AGO_DATE=$(date --date="1 month ago" +"%Y-%m-%d")
APRS_TELEMETRY_FILE_TODAY="$CURRENT_DATE$APRS_TELEMETRY_FILE_SUFFIX"
APRS_TELEMETRY_FILE_YESTERDAY="$YESTERDAY_DATE$APRS_TELEMETRY_FILE_SUFFIX"
APRS_TELEMETRY_FILE="TEMP$APRS_TELEMETRY_FILE_SUFFIX"
cat "$APRS_RECEIVED_MESSAGES_DIR$APRS_TELEMETRY_FILE_YESTERDAY" > "$APRS_RECEIVED_MESSAGES_DIR$APRS_TELEMETRY_FILE"
cat "$APRS_RECEIVED_MESSAGES_DIR$APRS_TELEMETRY_FILE_TODAY" >> "$APRS_RECEIVED_MESSAGES_DIR$APRS_TELEMETRY_FILE"
#Temperatuur buiten en in beide kassen
/usr/bin/gnuplot -persist <<-EOFMarker
set title "Temperatuur" font ",14" textcolor rgbcolor "royalblue"
set datafile separator ","
set timefmt "%Y-%m-%d %H:%M"
set format x "%H:%M"
set xdata time
set xrange ["$YESTERDAY_DATE 00:00":"$CURRENT_DATE 23:59"]
set yrange [-20:45]
set xlabel "tijd"
set ylabel "graden Celcius"
set ytics 10
set mytics 2
set mxtics 2
set grid ytics lt 0 lw 1 lc rgb "#bbbbbb"
set grid mytics
set grid xtics lt 0 lw 1 lc rgb "#bbbbbb"
set grid mxtics
set pointsize 1
set terminal png size 1024,768
set output "$PUBLISH_DIR/temperature_graph.png"
plot "$APRS_RECEIVED_MESSAGES_DIR$APRS_TELEMETRY_FILE" using 1:2 with lines linewidth 2 title "buiten", "$APRS_RECEIVED_MESSAGES_DIR$APRS_TELEMETRY_FILE" using 1:8 with lines linewidth 2 title "kleine kas", "$APRS_RECEIVED_MESSAGES_DIR$APRS_TELEMETRY_FILE" using 1:4 with lines linewidth 2 title "grote kas"
EOFMarker
#Luchtvochtigheid buiten en in beide kassen
/usr/bin/gnuplot -persist <<-EOFMarker
set title "Luchtvochtigheid" font ",14" textcolor rgbcolor "royalblue"
set datafile separator ","
set timefmt "%Y-%m-%d %H:%M"
set format x "%H:%M"
set xdata time
set xrange ["$YESTERDAY_DATE 00:00":"$CURRENT_DATE 23:59"]
set yrange [0:100]
set xlabel "tijd"
set ylabel "%"
set ytics 10
set mytics 2
set mxtics 2
set grid ytics lt 0 lw 1 lc rgb "#bbbbbb"
set grid mytics
set grid xtics lt 0 lw 1 lc rgb "#bbbbbb"
set grid mxtics
set pointsize 1
set terminal png size 1024,768
set output "$PUBLISH_DIR/humidity_graph.png"
plot "$APRS_RECEIVED_MESSAGES_DIR$APRS_TELEMETRY_FILE" using 1:3 with lines linewidth 2 title "buiten", "$APRS_RECEIVED_MESSAGES_DIR$APRS_TELEMETRY_FILE" using 1:9 with lines linewidth 2 title "kleine kas", "$APRS_RECEIVED_MESSAGES_DIR$APRS_TELEMETRY_FILE" using 1:5 with lines linewidth 2 title "grote kas"
EOFMarker
#Bodemvochtigheid in beide kassen
/usr/bin/gnuplot -persist <<-EOFMarker
set title "Bodemvochtigheid" font ",14" textcolor rgbcolor "royalblue"
set datafile separator ","
set timefmt "%Y-%m-%d %H:%M"
set format x "%H:%M"
set xdata time
set xrange ["$YESTERDAY_DATE 00:00":"$CURRENT_DATE 23:59"]
set yrange [0:1000]
set xlabel "tijd"
set ylabel "absoluut"
set ytics 100
set mytics 2
set mxtics 2
set grid ytics lt 0 lw 1 lc rgb "#bbbbbb"
set grid mytics
set grid xtics lt 0 lw 1 lc rgb "#bbbbbb"
set grid mxtics
set pointsize 1
set terminal png size 1024,768
set output "$PUBLISH_DIR/soilmoisture_graph.png"
plot "$APRS_RECEIVED_MESSAGES_DIR$APRS_TELEMETRY_FILE" using 1:10 with lines linewidth 2 title "kleine kas", "$APRS_RECEIVED_MESSAGES_DIR$APRS_TELEMETRY_FILE" using 1:6 with lines linewidth 2 title "grote kas"
EOFMarker
#Min-max temperatuur buiten afgelopen maand
/usr/bin/gnuplot -persist <<-EOFMarker
set title "Minimale en maximale buitentemperatuur afgelopen maand" font ",14" textcolor rgbcolor "royalblue"
set datafile separator ","
set timefmt "%Y-%m-%d"
set format x "%d %B"
set xdata time
set xrange ["$MONTH_AGO_DATE":"$YESTERDAY_DATE"]
set yrange [-20:45]
set xlabel "tijd"
set ylabel "graden Celcius"
set ytics 10
set mytics 2
set mxtics 7
set grid ytics lt 0 lw 1 lc rgb "#bbbbbb"
set grid mytics
set grid xtics lt 0 lw 1 lc rgb "#bbbbbb"
set grid mxtics
set pointsize 1
set terminal png size 1024,768
set output "$PUBLISH_DIR/minmax_temperature_outside.png"
plot "$APRS_RECEIVED_MESSAGES_DIR$APRS_MAX_DATA" using 1:2 with lines linewidth 2 title "maxima", "$APRS_RECEIVED_MESSAGES_DIR$APRS_MIN_DATA" using 1:2 with lines linewidth 2 title "minima"
EOFMarker
#Min-max temperatuur kleine kas afgelopen maand
/usr/bin/gnuplot -persist <<-EOFMarker
set title "Minimale en maximale temperatuur kleine kas afgelopen maand" font ",14" textcolor rgbcolor "royalblue"
set datafile separator ","
set timefmt "%Y-%m-%d"
set format x "%d %B"
set xdata time
set xrange ["$MONTH_AGO_DATE":"$YESTERDAY_DATE"]
set yrange [-20:45]
set xlabel "tijd"
set ylabel "graden Celcius"
set ytics 10
set mytics 2
set mxtics 7
set grid ytics lt 0 lw 1 lc rgb "#bbbbbb"
set grid mytics
set grid xtics lt 0 lw 1 lc rgb "#bbbbbb"
set grid mxtics
set pointsize 1
set terminal png size 1024,768
set output "$PUBLISH_DIR/minmax_temperature_small_greenhouse.png"
plot "$APRS_RECEIVED_MESSAGES_DIR$APRS_MAX_DATA" using 1:8 with lines linewidth 2 title "maxima", "$APRS_RECEIVED_MESSAGES_DIR$APRS_MIN_DATA" using 1:8 with lines linewidth 2 title "minima"
EOFMarker
#Min-max temperatuur grote kas afgelopen maand
/usr/bin/gnuplot -persist <<-EOFMarker
set title "Minimale en maximale temperatuur grote kas afgelopen maand" font ",14" textcolor rgbcolor "royalblue"
set datafile separator ","
set timefmt "%Y-%m-%d"
set format x "%d %B"
set xdata time
set xrange ["$MONTH_AGO_DATE":"$YESTERDAY_DATE"]
set yrange [-20:45]
set xlabel "tijd"
set ylabel "graden Celcius"
set ytics 10
set mytics 2
set mxtics 7
set grid ytics lt 0 lw 1 lc rgb "#bbbbbb"
set grid mytics
set grid xtics lt 0 lw 1 lc rgb "#bbbbbb"
set grid mxtics
set pointsize 1
set terminal png size 1024,768
set output "$PUBLISH_DIR/minmax_temperature_large_greenhouse.png"
plot "$APRS_RECEIVED_MESSAGES_DIR$APRS_MAX_DATA" using 1:4 with lines linewidth 2 title "maxima", "$APRS_RECEIVED_MESSAGES_DIR$APRS_MIN_DATA" using 1:4 with lines linewidth 2 title "minima"
EOFMarker
#Min-max luchtvochtigheid buiten afgelopen maand
/usr/bin/gnuplot -persist <<-EOFMarker
set title "Minimale en maximale luchtvochtigheid buiten afgelopen maand" font ",14" textcolor rgbcolor "royalblue"
set datafile separator ","
set timefmt "%Y-%m-%d"
set format x "%d %B"
set xdata time
set xrange ["$MONTH_AGO_DATE":"$YESTERDAY_DATE"]
set yrange [0:100]
set xlabel "tijd"
set ylabel "%"
set ytics 10
set mytics 2
set mxtics 7
set grid ytics lt 0 lw 1 lc rgb "#bbbbbb"
set grid mytics
set grid xtics lt 0 lw 1 lc rgb "#bbbbbb"
set grid mxtics
set pointsize 1
set terminal png size 1024,768
set output "$PUBLISH_DIR/minmax_humidity_outside.png"
plot "$APRS_RECEIVED_MESSAGES_DIR$APRS_MAX_DATA" using 1:3 with lines linewidth 2 title "maxima", "$APRS_RECEIVED_MESSAGES_DIR$APRS_MIN_DATA" using 1:3 with lines linewidth 2 title "minima"
EOFMarker
#Min-max luchtvochtigheid kleine kas afgelopen maand
/usr/bin/gnuplot -persist <<-EOFMarker
set title "Minimale en maximale luchtvochtigheid kleine kas afgelopen maand" font ",14" textcolor rgbcolor "royalblue"
set datafile separator ","
set timefmt "%Y-%m-%d"
set format x "%d %B"
set xdata time
set xrange ["$MONTH_AGO_DATE":"$YESTERDAY_DATE"]
set yrange [0:100]
set xlabel "tijd"
set ylabel "%"
set ytics 10
set mytics 2
set mxtics 7
set grid ytics lt 0 lw 1 lc rgb "#bbbbbb"
set grid mytics
set grid xtics lt 0 lw 1 lc rgb "#bbbbbb"
set grid mxtics
set pointsize 1
set terminal png size 1024,768
set output "$PUBLISH_DIR/minmax_humidity_small_greenhouse.png"
plot "$APRS_RECEIVED_MESSAGES_DIR$APRS_MAX_DATA" using 1:9 with lines linewidth 2 title "maxima", "$APRS_RECEIVED_MESSAGES_DIR$APRS_MIN_DATA" using 1:9 with lines linewidth 2 title "minima"
EOFMarker
#Min-max luchtvochtigheid grote kas afgelopen maand
/usr/bin/gnuplot -persist <<-EOFMarker
set title "Minimale en maximale luchtvochtigheid grote kas afgelopen maand" font ",14" textcolor rgbcolor "royalblue"
set datafile separator ","
set timefmt "%Y-%m-%d"
set format x "%d %B"
set xdata time
set xrange ["$MONTH_AGO_DATE":"$YESTERDAY_DATE"]
set yrange [0:100]
set xlabel "tijd"
set ylabel "%"
set ytics 10
set mytics 2
set mxtics 7
set grid ytics lt 0 lw 1 lc rgb "#bbbbbb"
set grid mytics
set grid xtics lt 0 lw 1 lc rgb "#bbbbbb"
set grid mxtics
set pointsize 1
set terminal png size 1024,768
set output "$PUBLISH_DIR/minmax_humidity_large_greenhouse.png"
plot "$APRS_RECEIVED_MESSAGES_DIR$APRS_MAX_DATA" using 1:5 with lines linewidth 2 title "maxima", "$APRS_RECEIVED_MESSAGES_DIR$APRS_MIN_DATA" using 1:5 with lines linewidth 2 title "minima"
EOFMarker
# rest of script, after gnuplot exits
# Remove temporary file
rm "$APRS_RECEIVED_MESSAGES_DIR$APRS_TELEMETRY_FILE"