Bon, le script est terminé, c'est parti pour un tuto !
Tout d'abord, il vous faudra créer :
- un groupe "Arrosage auto"

- 2015-08-28_214525 (Small).jpg (64.56 Kio) Consulté 19176 fois
- un dummy device "Arrosage auto" type water

- 2015-08-28_220656.png (122.25 Kio) Consulté 19176 fois
que vous associez au groupe précédent :

- 2015-08-28_220618.png (89.39 Kio) Consulté 19176 fois
- un device pluie que vous créez avec weatherunderground (voir tuto ailleurs)
- un device pluie dans les 12h que vous créez avec forecast.io (voir tuto ailleurs)
Une fois ceci effectué, notez les différents numéros (idx) des devices.
Pour obtenir l'idx groupe "Arrosage auto", c'est un peu plus compliqué. Connectez-vous en shell
sur votre serveur et lancez la commande suivante :
curl -s -i -H "Accept: application/json"
http://192.168.1.5:8080/json.htm?type=scenes
en modifiant au préalable l'ip/port de votre serveur domoticz.
Notez l'idx du groupe qui vous intéresse.
Maintenant, mon script :
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.7" # Domoticz IP Address
DOMO_PORT="8084" # 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 ! "
MESSAGE="Pas%20besoin%20d%20arreter%20l%20arrosage,il%20est%20deja%20arrete%20!"
curl "http://${DOMO_IP}:${DOMO_PORT}/json.htm?type=command¶m=addlogmessage&message=${MESSAGE}"
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 |cut -d " " -f2)
echo "HYGROSONDE1 : (${HYGROSONDE1})"
if [ $(expr ${HYGROSONDE1} '<' ${HYGROLIMIT}) = 1 ] ; then
MESSAGE="=Il%20ne%20va%20pas%20pleuvoir%20et%20hygro%20faible%20(${RAINVAL}),%20on%20lance%20l%20arrosage%20"
curl "http://${DOMO_IP}:${DOMO_PORT}/json.htm?type=command¶m=addlogmessage&message=${MESSAGE}"
curl "http://${DOMO_IP}:${DOMO_PORT}/json.htm?type=command¶m=switchscene&idx=${ARROSAGE_SCENE_IDX}&switchcmd=On"
else
MESSAGE="Hygro%20OK%20(${HYGROSONDE1}),pas%20besoin%20d%20arrosage"
curl "http://${DOMO_IP}:${DOMO_PORT}/json.htm?type=command¶m=addlogmessage&message=${MESSAGE}"
fi
else
MESSAGE="Il%20Ova20pleuvoir,pas%20besoin%20d%20arroser"
echo "Il va pleuvoir, pas besoin d arroser"
curl "http://${DOMO_IP}:${DOMO_PORT}/json.htm?type=command¶m=addlogmessage&message=${MESSAGE}"
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
On vérifie que le statut des devices d'arrosage change bien dans domoticz.
Il ne reste plus qu'à le mettre dans la crontab pour la programmation.
Imaginons qu'on veuille arroser du mois d'avril au mois d'octobre, le mardi, jeudi et samedi allumage à 22h, arrêt à 22h :
Code : Tout sélectionner
0 22 * 4-9 2,4,6 /dev-domoticz/scripts/shell/arrosage.sh on > /dev/null
30 22 * 4-9 2,4,6 /dev-domoticz/scripts/shell/arrosage.sh off > /dev/null
Et voilà ! J'espère que cela vous servira également. N'hésitez pas à apporter des corrections/ajouts.