Bonjour,
J'ai mis à jour mon script en intégrant un test sur une sonde en hygro.
Le voici :
Code : Tout sélectionner
#!/bin/bash
# Settings
# Variables pour Forecast.io
API="29f3a69701e1907dfc95b357527fedc5"
LAT="43.5004"
LON="3.7093"
#Variables pour Domoticz
DOMO_IP="192.168.1.5" # Domoticz IP Address
DOMO_PORT="8080" # Domoticz Port
ARROSAGE_SCENE_IDX="6" # IDX Groupe arrosage auto
ARROSAGE_STATUS="" # IDX Groupe arrosage auto
RAINLIMIT="0.2" #Seuil de declemchement de l arrosage pour pluie a tomber
HYGROLIMIT="30" #Seuil de declemchement de l arrosage pour hygrometrie
HYGRO_IDX="171" #IDX sonde pour hygrometrie
ACTION=$1
#
# Test du parametre action (On/Off)
if [ -z ${ACTION} ] ;
then
echo "Manque 1er parametre On/Off"
exit 0
elif [ ${ACTION} != "On" -a ${ACTION} != "Off" ] ;
then
echo "Le 1er parametre doit etre egal a On ou Off"
exit 0
fi
#On teste si l'arrosage est en route, sinon pas besoin de l'arreter en cas de Off
if [ ${ACTION} = "Off" ] ;
then
ARROSAGE_STATUS=$(curl -s -i -H "Accept: application/json" "http://${DOMO_IP}:${DOMO_PORT}/json.htm?type=scenes" | egrep -w -m1 -A6 "Arrosage" |grep "Status" | cut -d'"' -f4)
# echo "ARROSAGE_STATUS:${ARROSAGE_STATUS}"
if [ ${ARROSAGE_STATUS} = "Off" ] ;
then
echo "Pas besoin d'arreter l'arrosage, il est deja arrete ! "
curl "http://${DOMO_IP}:${DOMO_PORT}/json.htm?type=command¶m=addlogmessage&message='Pas%20besoin%20d%20arreter%20l%20arrosage,il%20est%20deja%20arrete%20!'"
exit 0
fi
fi
#On recupere la valeur RAINVAL correspondant a la moyenne de precipitation sous 24H
RAINVAL=$(curl -s -i -H "Accept: application/json" "https://api.forecast.io/forecast/$API/$LAT,$LON?units=ca&exclude=currently,minutely,hourly,alerts,flags" | grep precipIntensity| cut -d, -f14 |cut -d: -f2 | cut -c 1-3)
echo "RAINVAL : ${RAINVAL}"
#On traite le cas de l activation de l arrosage (action=On)
if [ ${ACTION} = "On" ] ;
then
if [ $(expr ${RAINVAL} '<' ${RAINLIMIT}) = 1 ] ; then
echo "Il ne va pas pleuvoir, on teste l hygro de la sonde !"
curl "http://${DOMO_IP}:${DOMO_PORT}/json.htm?type=command¶m=addlogmessage&message='il%20ne%20va%20pas%20pleuvoir,%20test%20sonde%20hygro'"
#On teste la valeur hygro de la sonde du fraisier
HYGROSONDE1=$(curl -s -i -H "Accept: application/json" "http://${DOMO_IP}:${DOMO_PORT}/json.htm?type=devices&rid=${HYGRO_IDX}" |grep "Humidity\" :" | cut -d':' -f2 | cut -d',' -f1 )
echo "HYGROSONDE1 : ${HYGROSONDE1}"
if [ $(expr ${HYGROSONDE1} '<' ${HYGROLIMIT}) = 1 ] ; then
curl "http://${DOMO_IP}:${DOMO_PORT}/json.htm?type=command¶m=addlogmessage&message='Il%20ne%20va%20pas%20pleuvoir%20et%20hygro%20faible,%20on%20lance%20l%20arrosage%20'"
curl "http://${DOMO_IP}:${DOMO_PORT}/json.htm?type=command¶m=switchscene&idx=${ARROSAGE_SCENE_IDX}&switchcmd=On"
else
curl "http://${DOMO_IP}:${DOMO_PORT}/json.htm?type=command¶m=addlogmessage&message='hygro%20OK%20,pas%20besoin%20d'arrosage'"
fi
else
echo "Il va pleuvoir, pas besoin d arroser"
curl "http://${DOMO_IP}:${DOMO_PORT}/json.htm?type=command¶m=addlogmessage&message='Il%20va%20pleuvoir,%20pas%20besoin%20d%20arroser'"
fi
else
# On traite le cas d arret de l arrosage
echo "Arret de l arrosage auto !"
curl "http://${DOMO_IP}:${DOMO_PORT}/json.htm?type=command¶m=switchscene&idx=${ARROSAGE_SCENE_IDX}&switchcmd=Off"
curl "http://${DOMO_IP}:${DOMO_PORT}/json.htm?type=command¶m=addlogmessage&message='Arret%20de%20l%20arrosage%20auto%20!'"
fi
Dans ce cas, j'active le groupe d'arrosage uniquement si la pluie à prévoir est inférieure à 0.2 mm et que l'hygro relevée sur la sonde est inférieure à 30. Paramètres à ajuster selon vos envies
J'aurais bien logué la valeur de la sonde dans ma log domoticz mais je n'ai pas trouvé la syntaxe. Si quelqu'un l'a.
Voici ce que j'ai testé et qui ne va pas :
Code : Tout sélectionner
curl "http://${DOMO_IP}:${DOMO_PORT}/json.htm?type=command¶m=addlogmessage&message='hygro%20OK%20(${HYGROSONDE1}),pas%20besoin%20d'arrosage'"
Je n'arrive pas à lui passer la variable ${HYGROSONDE1}.
N'hésitez pas si vous avez des idées ou commentaires.
Manu
Synology DS920+ avec VM Debian 12, Aeon Labs Z-Stick Gen5, Aeon Zwave et devices zwaves , Teleinfo USB, devices Zigbee, batterie Marstek Venus E, Shelly Pro 3EM...