J'ai remarqué sur mon anémomètre qu'à chaque mise à jour du capteur (donc plusieurs fois par minutes) il affichait la dernière rafale connue.
J'ai un script qui tourne toutes les 5 minutes qui extrait les données de l'anémomètre (entre autres capteurs) de domoticz pour l'écrire dans un fichier CSV. Et là, problème ! En effet, la valeur de vent en rafale relevée était celle affichée au moment du passage du script, mais pas forcement la valeur représentative des 5 dernières minutes.
J'ai résolu ça par la création d'un anémomètre virtuel (via le dummy device) qui affiche la vitesse moyenne du vent sur les 5 dernières minutes et la plus forte rafale enregistrée pendant les 5 dernières minutes.
Si cela intéresse donc quelqu'un, voici le script qui fait ça (en bash, a mettre dans la crontab toutes les 5min).
Code : Tout sélectionner
#!/bin/bash
# PARAMÈTRES
HTTP="127.0.0.1:8080"
idx_WIND=130 # idx de l'anémomètre
idx_WINDV=134 # idx de l'anémomètre virtuel
nbr=58 # nombre de fois que le script tourne. Par défaut 59 = 4min55
delais=5 # delais d'attente (en secondes). Par défaut toutes les 5 secondes
# VARIABLES
file_etat="/tmp/wind"
file_speed="/tmp/windspeed"
file_dir="/tmp/winddir"
# Reset Anémomètre virtuel
curl -s "http://$HTTP/json.htm?type=command¶m=udevice&idx=$idx_WINDV&nvalue=0&svalue=0;0;0;0;0;0" > /dev/null
# Reset fichiers
rm $file_etat
rm $file_speed
rm $file_dir
for ((i=0; i<$nbr; i++));
do
# Récupération des données vent
WINDDIRDEG=`curl -s "http://$HTTP/json.htm?type=devices&rid=$idx_WIND" | grep 'Direction"' | awk -F " " '{print $3}' | awk -F "," '{print $1}'`
WINDDIR=`curl -s "http://$HTTP/json.htm?type=devices&rid=$idx_WIND" | grep DirectionStr | awk -F " " '{print $3}' | awk -F "," '{print $1}' | sed "s/\"//g"`
WINDSPEED=`curl -s "http://$HTTP/json.htm?type=devices&rid=$idx_WIND" | grep Speed | awk -F " " '{print $3}' | awk -F "," '{print $1}' | sed "s/\"//g"`
WINDGUST=`curl -s "http://$HTTP/json.htm?type=devices&rid=$idx_WIND" | grep Gust | awk -F " " '{print $3}' | awk -F "," '{print $1}' | sed "s/\"//g"`
DIRV=`curl -s "http://$HTTP/json.htm?type=devices&rid=$idx_WINDV" | grep Speed | awk -F " " '{print $3}' | awk -F "," '{print $1}' | sed "s/\"//g"`
GUSTV=`curl -s "http://$HTTP/json.htm?type=devices&rid=$idx_WINDV" | grep Gust | awk -F " " '{print $3}' | awk -F "," '{print $1}' | sed "s/\"//g"`
WINDSPEEDMS=`echo "($WINDSPEED/3.6)*10" | bc -l`
WINDGUSTMS=`echo "($WINDGUST/3.6)*10" | bc -l`
GUSTVMS=`echo "($GUSTV/3.6)*10" | bc -l`
echo $WINDSPEED >> $file_speed
echo $WINDDIR >> $file_$dir
# Calcul du vent moyen
vent_moy_nbr=`cat /tmp/windspeed | wc -l`
vent_moy=`cat /tmp/windspeed | awk '{S+=$1} END{print S}' | awk '{print $1/'$vent_moy_nbr'}' | awk '{printf("%.1f\n", $1);}'`
vent_moy_ms=`echo "($vent_moy/3.6)*10" | bc -l`
# Retour d'état
echo `date +%H:%M:%S` > $file_etat
echo "direction $WINDDIRDEG ( $WINDDIR )" >> $file_etat
echo "vitesse : $WINDSPEED km/h ($WINDSPEEDMS m/s)" >> $file_etat
echo "rafale : $WINDGUST km/h ($WINDGUSTMS m/s)" >> $file_etat
echo " " >> $file_etat
echo "rafale max (/5min) : $GUSTV km/h ($GUSTVMS m/s)" >> $file_etat
echo " " >> $file_etat
echo "vent moyen : $vent_moy km/h ( $vent_moy_ms m/s)" >> $file_etat
condition=$(echo "$GUSTV < $WINDGUST" | bc -q )
# return 1 if true ; O if not
if [ $condition = 1 ]
then
#echo "Rafale supérieur"
curl -s "http://$HTTP/json.htm?type=command¶m=udevice&idx=$idx_WINDV&nvalue=0&svalue=$WINDDIRDEG;$WINDDIR;$vent_moy_ms;$WINDGUSTMS;0;0"
else
#echo "Rafale inférieur"
curl -s "http://$HTTP/json.htm?type=command¶m=udevice&idx=$idx_WINDV&nvalue=0&svalue=$WINDDIRDEG;$WINDDIR;$vent_moy_ms;$GUSTVMS;0;0"
fi
sleep $delais
done