#!/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 . # # # ################################################################################## 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"