Page 3 sur 5
Re: Arrosage automatique du jardin
Publié : 21 nov. 2015, 15:58
par vil1driver
lorsque ça commence par:
c'est du shell
donc l’extension n'est pas .lua mais .sh
pour le lancer il faut lui donner les droits d'exécution, généralement (en se plaçant dans le dossier contenant le script) :
et ça se lance ainsi (en se plaçant dans le dossier contenant le script) :
Re: Arrosage automatique du jardin
Publié : 21 nov. 2015, 16:10
par patrice
#!/bin/bash
=shell
=.sh
ne pas oublier le chmod +x sur le fichier pour le rendre executable
Re: Arrosage automatique du jardin
Publié : 21 nov. 2015, 16:13
par atlantis007
ok merci a vous pour les infos
Re: Arrosage automatique du jardin
Publié : 27 mars 2016, 21:58
par manuloup
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
Re: Arrosage automatique du jardin
Publié : 28 mars 2016, 00:54
par georges.attali
Salut,
Je crois que c'est parce que ta variable se trouve entre 2 quote '- ça bloque loin l'interprétation du Shell.
Tu devrais essayer avec " (guillemet) juste avant le $ et un autre " juste après l'accolade fermante.
Bye GD
Re: Arrosage automatique du jardin
Publié : 28 mars 2016, 09:10
par manuloup
Bonjour,
OK j'ai trouvé, j'avais un espace au début dans la variable ${HYGROSONDE1}. Ca marche maintenant, voici la version du script à jour :
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 declenchement de l arrosage pour pluie a tomber
HYGROLIMIT="30" #Seuil de declenchement 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
Re: Arrosage automatique du jardin
Publié : 30 avr. 2016, 11:19
par atlantis007
bonjour a tous
j ai une petite question je souhaite utilise le script mais sans la sonde d hydrométrie comment la supprime merci

Re: Arrosage automatique du jardin
Publié : 30 avr. 2016, 11:32
par manuloup
Bonjour,
Essaie ceci :
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 declenchement de l arrosage pour pluie a tomber
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"
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
Pense à modifier les variables au début, notamment ta position géographique sur forecast.io.
Re: Arrosage automatique du jardin
Publié : 19 janv. 2019, 22:33
par garycooper
Bon, OK, c'est du GROS déterrage ... je viens de faire le script pour mon arrosage enterré (une scène qui lance successivement 4 électrovannes).
J'ai fait le bouton "arroasage auto" pour pouvoir inhiber l'arrosage mais apparemment, j'ai du me louper quelque part parce que quand je teste le script, la première action ne marche pas, j'ai le message "Manque 1er parametre On/Off". Pourtant, j'ai bien indiqué le N° d'IDX de l'interrupteur entre les guillemets de ARROSAGE_STATUS=""
Si je supprime cette partie du script, il fonctionne correctement.
Vous voyez d'où ça peut venir ? Bon, j'ai jusqu'en avril pour le faire fonctionner correctement

Re: Arrosage automatique du jardin
Publié : 20 janv. 2019, 12:25
par manuloup
Bonjour,
Peux-tu me montrer les lignes que tu dois supprimer, que je regarde pourquoi ?
Merci,
Manu