Montag, 27. August 2018

Regenradar - Bilder sammeln oder manuell abrufen

Auf der Internetseite des Bayerischen Rundfunk kann man sich für die jeweils letzten 3 Std. das aktuelle Regenradar anschauen. Auf dem Webserver selber werden aber die Daten der letzten 21 Tage zwischengespeichert.



Mit dem nachfolgenden Script getRadar.sh, kann man die Daten automatisch per Cron-Job oder manuell durch Parameter Übergabe abrufen.

wget http://www.shemel.de/download/bash/getRadar.sh
chmod +x getRadar.sh

Parameter Aufruf mit UTC Time
./getRadar.sh 2018-08-20 00:00:00

Cron-Job Aufruf (jede volle Std. mit 55min) für crontab -e
55  *  *  *  *       /home/pi/regen/getRadar.sh >> /home/pi/regen/myscript.log 2>&1



Quellcode: 


#!/bin/bash
#
echo '------------------------------------'
echo '| Hole Wetterradar-Daten von br.de |'
echo '| (c) Sebastian Hemel, 2018        |'
echo '------------------------------------'
echo ' '

#Aufruf per cron job am Besten jede volle Stunde mit 55min
#crontab -e
#55  *  *  *  *        /home/pi/regen/getRadar.sh >> /home/pi/regen/myscript.log 2>&1

#Beispiele der Dateien, Benamung erfolgt nach UTC (date -u), Bilder stehen ca. 10min nach der eigentlichern UTC Zeit zur Verfuegung
#http://www.br.de/wtr-data/img/radar_aroona/2018_08_08/aroona.radar.180808_0815.png
#http://www.br.de/wtr-data/img/radar_aroona/2018_08_08/aroona.radar.180808_0830.png
#http://www.br.de/wtr-data/img/radar_aroona/2018_08_09/aroona.radar.180809_1130.png
#
#Achtung beim Tageswechsel:
#http://www.br.de/wtr-data/img/radar_aroona/2018_08_20/aroona.radar.180820_2145.png => OK, 23:45
#http://www.br.de/wtr-data/img/radar_aroona/2018_08_20/aroona.radar.180820_2200.png => ERROR => http://www.br.de/wtr-data/img/radar_aroona/2018_08_21/aroona.radar.180820_2200.png

scriptFolder=/home/pi/aroona.radar.*
copyFolder=/home/pi/regen/radar

if [ $1 ]
  then
    echo Uebergabeparameter: $1 $2
    echo ' '
    Date=$1
    Time=$2
    DateTime=$Date' '$Time
    ##echo $DateTime
   
    DateArray=()
    for X in {00..59} ;                         # check every minute
    do
      # use manual date an time
      eval $(date -d "${DateTime}" -u +Y=%y\;m=%m\;d=%d\;H=%H\;M=%M)
      #eval $(date -d '2018-08-20 22:00:00' -u +Y=%y\;m=%m\;d=%d\;H=%H\;M=%M)
      M=$X
      [[ "$M" < "15" ]] && M=00                 # cater for octal clash
      M=$(((M/15)*15))
      ((M==0)) && M=00                             # the math returns 0, so make it 00
      ##echo $Y.$m.$d $H:$M
      DateArray+=($Y$m$d'_'$H$M)                # write in to array for the file name
    done
   
    #echo '--DateArray--'
    #for i in ${DateArray[@]}; do
    # echo $i
    #done
   
    # use manual date an time for the folder
    eval $(date -d "${DateTime}" -u +Y=%Y\;m=%m\;d=%d\;H=%H\;M=%M)
    DateTimePlusOneDay="${DateTime}+1 days"

    typeset -i i=0 max=${#DateArray[*]}
    while (( i < max ))
    do
        a=$( expr "$i" + 1 )
        # compare the array entries
        if [[ ${DateArray[$i]} != ${DateArray[$a]} ]]; then
            #catch error on midnight UTC
            if [ "$H" == "22" ]
                then
                    eval $(date -d "${DateTimePlusOneDay}" -u +Y=%Y\;m=%m\;d=%d\;H=%H\;M=%M)
                    echo "wget http://www.br.de/wtr-data/img/radar_aroona/"$Y"_"$m"_"$d"/aroona.radar."${DateArray[$i]}".png"
                    wget http://www.br.de/wtr-data/img/radar_aroona/"$Y"_"$m"_"$d"/aroona.radar."${DateArray[$i]}".png
                elif [ "$H" == "23" ]
                    then
                        eval $(date -d "${DateTimePlusOneDay}" -u +Y=%Y\;m=%m\;d=%d\;H=%H\;M=%M)
                        echo "wget http://www.br.de/wtr-data/img/radar_aroona/"$Y"_"$m"_"$d"/aroona.radar."${DateArray[$i]}".png"
                        wget http://www.br.de/wtr-data/img/radar_aroona/"$Y"_"$m"_"$d"/aroona.radar."${DateArray[$i]}".png
                    else
                        echo "wget http://www.br.de/wtr-data/img/radar_aroona/"$Y"_"$m"_"$d"/aroona.radar."${DateArray[$i]}".png"
                        wget http://www.br.de/wtr-data/img/radar_aroona/"$Y"_"$m"_"$d"/aroona.radar."${DateArray[$i]}".png
            fi      
            #echo "${DateArray[$i]}"
            #echo "wget http://www.br.de/wtr-data/img/radar_aroona/"$Y"_"$m"_"$d"/aroona.radar."${DateArray[$i]}".png"
            #wget http://www.br.de/wtr-data/img/radar_aroona/"$Y"_"$m"_"$d"/aroona.radar."${DateArray[$i]}".png
        fi
       i=i+1
    done  
   
########################################################################################################################################  
  else
    echo Es wurde kein Uebergabeparameter eingegeben! Verwenden Sie z.B. \"./getRadar.sh 2018-08-20 00:00:00\" UTC
    echo ' '
   
    DateArray=()
    for X in {00..59} ;                            # check every minute
    do
      eval $(date -u +Y=%y\;m=%m\;d=%d\;H=%H\;M=%M)
      M=$X
      [[ "$M" < "15" ]] && M=00                 # cater for octal clash
      M=$(((M/15)*15))
      ((M==0)) && M=00                             # the math returns 0, so make it 00
      ##echo $Y.$m.$d $H:$M
      DateArray+=($Y$m$d'_'$H$M)
    done
   
    # use manual date an time for the folder
    eval $(date -u +Y=%Y\;m=%m\;d=%d\;H=%H\;M=%M)

    typeset -i i=0 max=${#DateArray[*]}
    while (( i < max ))
    do
        a=$( expr "$i" + 1 )
        # compare the array entries
        if [[ ${DateArray[$i]} != ${DateArray[$a]} ]]; then
            #catch error on midnight UTC
            if [ "$H" == "22" ]
                then
                    eval $(date -d tomorrow -u +Y=%Y\;m=%m\;d=%d\;H=%H\;M=%M)
                    echo "wget http://www.br.de/wtr-data/img/radar_aroona/"$Y"_"$m"_"$d"/aroona.radar."${DateArray[$i]}".png"
                    wget http://www.br.de/wtr-data/img/radar_aroona/"$Y"_"$m"_"$d"/aroona.radar."${DateArray[$i]}".png
                elif [ "$H" == "23" ]
                    then
                        eval $(date -d tomorrow -u +Y=%Y\;m=%m\;d=%d\;H=%H\;M=%M)
                        echo "wget http://www.br.de/wtr-data/img/radar_aroona/"$Y"_"$m"_"$d"/aroona.radar."${DateArray[$i]}".png"
                        wget http://www.br.de/wtr-data/img/radar_aroona/"$Y"_"$m"_"$d"/aroona.radar."${DateArray[$i]}".png
                    else
                        eval $(date -u +Y=%Y\;m=%m\;d=%d\;H=%H\;M=%M)
                        echo "wget http://www.br.de/wtr-data/img/radar_aroona/"$Y"_"$m"_"$d"/aroona.radar."${DateArray[$i]}".png"
                        wget http://www.br.de/wtr-data/img/radar_aroona/"$Y"_"$m"_"$d"/aroona.radar."${DateArray[$i]}".png
            fi
        fi
       i=i+1
    done  
   
fi

#move files to folder
mv $scriptFolder $copyFolder

Keine Kommentare:

Kommentar veröffentlichen