Arrosage automatique du jardin

Forum pour tous les autres objets : sondes météo, capteurs, actionneurs ...
Vous avez un besoin mais vous ne savez pas quel matériel choisir ? C'est ici.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Arrosage automatique du jardin

Message par vil1driver »

lorsque ça commence par:

Code : Tout sélectionner

#!/bin/bash
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) :

Code : Tout sélectionner

sudo chmod +x monScript.sh
et ça se lance ainsi (en se plaçant dans le dossier contenant le script) :

Code : Tout sélectionner

./monScript.sh
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
patrice
Messages : 1720
Inscription : 22 sept. 2014, 21:51

Re: Arrosage automatique du jardin

Message par patrice »

#!/bin/bash
=shell
=.sh
ne pas oublier le chmod +x sur le fichier pour le rendre executable
Raspberry pi 3, Dongle RfxCom et Zigate +, plugin de pipiche, Volets Roulants profalux, contrôle d'éclairage, détecteurs de présence, alarme incendie, pilotage livebox ...
Objectif : WAF > 1
atlantis007
Messages : 65
Inscription : 11 janv. 2015, 22:31
Localisation : biarritz (64)

Re: Arrosage automatique du jardin

Message par atlantis007 »

ok merci a vous pour les infos
manuloup
Messages : 781
Inscription : 18 févr. 2015, 13:05

Re: Arrosage automatique du jardin

Message 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&param=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&param=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&param=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&param=switchscene&idx=${ARROSAGE_SCENE_IDX}&switchcmd=On"
    else
       curl "http://${DOMO_IP}:${DOMO_PORT}/json.htm?type=command&param=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&param=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&param=switchscene&idx=${ARROSAGE_SCENE_IDX}&switchcmd=Off"
  curl "http://${DOMO_IP}:${DOMO_PORT}/json.htm?type=command&param=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&param=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...
georges.attali
Messages : 58
Inscription : 19 févr. 2016, 21:35

Re: Arrosage automatique du jardin

Message 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
manuloup
Messages : 781
Inscription : 18 févr. 2015, 13:05

Re: Arrosage automatique du jardin

Message 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&param=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&param=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&param=addlogmessage&message=${MESSAGE}"
      curl "http://${DOMO_IP}:${DOMO_PORT}/json.htm?type=command&param=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&param=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&param=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&param=switchscene&idx=${ARROSAGE_SCENE_IDX}&switchcmd=Off"
  curl "http://${DOMO_IP}:${DOMO_PORT}/json.htm?type=command&param=addlogmessage&message=Arret%20de%20l%20arrosage%20auto%20!"
fi
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...
atlantis007
Messages : 65
Inscription : 11 janv. 2015, 22:31
Localisation : biarritz (64)

Re: Arrosage automatique du jardin

Message 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
:shock:
manuloup
Messages : 781
Inscription : 18 févr. 2015, 13:05

Re: Arrosage automatique du jardin

Message 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&param=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&param=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&param=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&param=switchscene&idx=${ARROSAGE_SCENE_IDX}&switchcmd=Off"
  curl "http://${DOMO_IP}:${DOMO_PORT}/json.htm?type=command&param=addlogmessage&message=Arret%20de%20l%20arrosage%20auto%20!"
fi

Pense à modifier les variables au début, notamment ta position géographique sur forecast.io.
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...
garycooper
Messages : 453
Inscription : 07 août 2017, 23:58

Re: Arrosage automatique du jardin

Message 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 :lol:
manuloup
Messages : 781
Inscription : 18 févr. 2015, 13:05

Re: Arrosage automatique du jardin

Message par manuloup »

Bonjour,

Peux-tu me montrer les lignes que tu dois supprimer, que je regarde pourquoi ?

Merci,

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...
Répondre