Il s'agit d'un mix de scripts shell et perl explorant la base de données.
Les scripts sont placés dans le répertoire /usr/local/open2300/script.
Les scripts génèrent des fichiers php ou csv qui sont transférés ensuite via ftp sur le serveur WEB ou ils sont exploités par des fichiers php. La machine tiny core n'est pas utilisée en tant que serveur Web.
Remplacer USER, PASS et BASE par vos valeurs.
script awekas.sh lancer par awekas.sh DOSSIER_DE_STOCKAGE_PERSISTANT
#!/bin/sh
F=$1/awekas.txt
MYSQL="mysql --skip-column-names -h127.0.0.1 -uUSER -pPASS BASE -e"
sql="SELECT max(datetime) FROM weather"
T=$($MYSQL "$sql")
echo "" > $F
for c in temp_out rel_hum_out rel_pressure rain_24h wind_speed wind_angle
do
sql="Select $c from weather where datetime='$T'"
v=$($MYSQL "$sql")
echo $v >> $F
done
D=$(echo $T | cut -f1 -d ' ' )
H=$(echo $T | cut -f2 -d ' ' )
A=$(echo $D | cut -f1 -d '-' )
M=$(echo $D | cut -f2 -d '-' )
J=$(echo $D | cut -f3 -d '-' )
D=$J.$M.$A
M=$(echo $H | cut -f2 -d ':' )
H=$(echo $H | cut -f1 -d ':' )
T=$H:$M
echo $T >> $F
echo $D >> $F
Remplacer USER, PASS et BASE par vos valeurs.
script instant.sh lancer par instant.sh DOSSIER_DE_STOCKAGE_PERSISTANT
#!/bin/sh
F=$1/instant.php
MYSQL="mysql --skip-column-names -h127.0.0.1 -uUSER -pPASS BASE -e"
sql="SELECT max(datetime) FROM weather"
T=$($MYSQL "$sql")
#echo $T
echo "<?" > $F
# pour les valeurs
for c in temp_out rel_hum_out rel_pressure rain_24h wind_speed wind_angle dewpoint wind_chill rain_1h rain_total
do
sql="Select $c from weather where datetime='$T'"
v=$($MYSQL "$sql")
echo "\$$c=$v; " >> $F
done
for c in wind_direction tendency forecast
do
sql="Select $c from weather where datetime='$T'"
v=$($MYSQL "$sql")
case $v in
'Steady')
v="Stable"
;;
'Rising')
v="En Hausse"
;;
'Falling')
v="En baisse"
;;
'Rainy')
v="Pluvieux"
;;
'Cloudy')
v="Nuageux"
;;
'Sunny')
v="Ensoleillé"
;;
esac
echo "\$$c=\"$v\"; " >> $F
done
D=$(echo $T | cut -f1 -d ' ' )
H=$(echo $T | cut -f2 -d ' ' )
#echo $H $D
DD=$D
A=$(echo $D | cut -f1 -d '-' )
M=$(echo $D | cut -f2 -d '-' )
J=$(echo $D | cut -f3 -d '-' )
D=$J.$M.$A
#echo $D
M=$(echo $H | cut -f2 -d ':' )
H=$(echo $H | cut -f1 -d ':' )
T=$H:$M
#echo $T
echo "\$heure=\"$T\";" >> $F
echo "\$date=\"$D\";" >> $F
for a in temp_out rel_hum_out dewpoint rel_pressure wind_chill wind_speed
do
# mini
sql=" select $a, datetime from weather where datetime like \"$DD%\" order by $a limit 0,1"
mto=$($MYSQL "$sql" )
echo "\$mini_$a="$( echo $mto | cut -f1 -d ' ' )" ;" >> $F
echo "\$dmini_$a=\""$( echo $mto | cut -f3 -d ' ' | cut -f1-2 -d ':' )"\" ;" >> $F
# max
sql="select $a, datetime from weather where datetime like \"$DD%\" order by $a desc limit 0,1;"
mto=$($MYSQL "$sql" )
echo "\$max_$a=" $( echo $mto | cut -f1 -d ' ' )"; " >> $F
echo "\$dmax_$a=\""$( echo $mto | cut -f3 -d ' ' | cut -f1-2 -d ':' ) "\";" >> $F
# moyenne
sql="select avg($a) from weather where datetime like \"$DD%\" ;"
echo "\$moy_$a="$($MYSQL "$sql" ) ";" >> $F
done
sql="select count(wind_direction) as cpt,wind_direction from weather where datetime like \"$DD%\" group by wind_direction order by cpt desc; "
mto=$($MYSQL "$sql" )
echo "\$direction_vent=\""$( echo $mto | cut -f2 -d ' ') "\";" >> $F
echo "?>" >> $F
script meteo.sh a mettre dans la crontab.
Remplacer HDD par votre zone de stockage persistante.
#!/bin/sh
export LANG=C
LOCK=/tmp/meteo_en_cours
if [ -f $LOCK ]; then
echo Meteo en cours
exit
fi
touch $LOCK
ANNEE=$(date +"%Y")
MOIS=$(date +"%Y-%m")
JOUR=$(date +"%Y-%m-%d")
F=/mnt/HDD/meteo
#recup les valeurs de la base et mise dans la table mysql
/usr/local/open2300/mysql2300
#graphique moyenne sur
/usr/local/open2300/script/rrd-update-ws2300.pl 2>/dev/null 1>/dev/null
/usr/local/open2300/script/rrd-graph30h.sh 2>/dev/null 1>/dev/null
#pour awekas
/usr/local/open2300/script/awekas.sh $F
#valeurs instantanées
/usr/local/open2300/script/instant.sh $F
#calcul le nom des fichiers csv a utiliser
/usr/local/open2300/script/ws2300-calcsv.pl > $F/csv.php
# calcul du csv de la journée
/usr/local/open2300/script/ws2300-jour.pl > $F/jour-$JOUR.csv
#transfert vers le site web
lftp -f /usr/local/open2300/scriptinternet.lftp 2>/dev/null 1>/dev/null
#suppression du verrou
rm -f $LOCK
Editer le fichier /var/spool/cron/crontabs/root
ajouter :
* * * * * /usr/local/open2300/script/meteo.shAjouter var/spool/cron/crontabs au fichier /opt/.filetool.lst puis faire une sauvegarde persistante.