Arrosage automatique du jardin

les autres capteurs : Sondes Météo, switches
manuloup
Messages : 536
Enregistré le : 18 févr. 2015, 13:05

Arrosage automatique du jardin

Message par manuloup »

Bonjour,

J'envisage dans le futur d'automatiser l'arrosage de mon jardin. J'achèterai 2 ou 3 électrovannes afin d'activer l'arrosage.

Je me demande comment implémenter cela dans Domoticz en tenant compte :

- des mois de l'année
- arroser 3 jours par semaine
- tenir compte de la météo s'il va pleuvoir. Pour cela j'ai déjà créé un virtual device renseigné par le site meteo forecast.io (pluie dans les 12h)

J'ai du mal à avoir la solution dans sa globalité. Je peux par exemple programmer l'arrosage directement sur chacune des électrovannes. Je peux donc peut-être créer un groupe "electrovannes on" pour les allumer et "electrovannes off" pour les éteindre.
J'imagine qu'il me faudra également passer par un script lua.

Quelqu'un a-t-il déjà planché sur le sujet ?

Merci pour vos infos.

Manu
Rapberry PI 2 (RaspBian), RFplayer, Aeon Labs Z-Stick Gen5, Everspring ST814 Temperature Sensor, Everspring SF812 Smoke Detector, 4x Fibaro Wallplug, Aeon Zwave Miniremote , Teleinfo USB

sirus
Messages : 103
Enregistré le : 05 mai 2015, 18:09
Contact :

Re: Arrosage automatique du jardin

Message par sirus »

Salut manuloup !

j'ai fait quelque chose qui corresponds un peux a ce que tu veux faire.
J'avais en plus les contrainte supplémentaires :
  • - utilisation de l'eau d'une citerne de récupération
    - pas d’électricité sur place !
ca qui m'a forcé a :
- utiliser un panneau solaire + batterie
- utiliser une pompe 12v pour pouvoir acheminer l'eau. (la plupart des élétrovanes fonctionnent avec une pression mini d'1 bar)


Au final mon arrosage a fonctionné tout l'été ( et fonctionne encore) avec un arduino usb mini (4€) des modules rf (1€) pour communique avec domoticz et mon raspberry.

et c'est le raspberry qui pilote et qui choisis quand doit ce déclencher l'arrosage en fonction :
  • - de l'heure bien sur !
    - du nombre d'arrosage / jour programmé (chaquee arrosage est programmé pour durré 15min)
    - du niveau d'eau dans la citerne (capteur de niveau d'eau)
    - de la pluie qui est tombé sur ma commune (Weather Underground)
    - et de la probabilitée de pluie sur les prochaines heures (


Pour ta part si tu as de l'éléctricité sur place, une arrivée d'eau ça te facilitera pas mal la tache comparé à moi !

j'ai pas encore fini l'article détaillé mais tu as un aperçu ici : http://domotique.web2diz.net/?p=234


Si tu as des questions n’hésites pas :)
Raspberry B+ & PI2 / Domoticz / RFXtrx433E / multiple homemade devices
My blog/tutos for domoticz / electronics stuff : domotique.web2diz.net

manuloup
Messages : 536
Enregistré le : 18 févr. 2015, 13:05

Re: Arrosage automatique du jardin

Message par manuloup »

Bonjour Sirus,

Merci pour ta page, ça fait toujours plaisir d'échanger sur nos expériences.

Par contre, comme tu le dis, il n'y encore aucun détail sur ta solution.

Comment as-tu géré les dépendances par rapport à la pluie, le calendrier etc ?

Perso je pense partir sur un script shell que je mettrai dans la crontab. Celui-ci mettra à jour un switch virtuel type water dans lequel je mettrai mes électrovannes.

Je ne pense pas utiliser de RFX mais plutôt du ZWave, j'aime bien avoir un retour sur le statut du device, même si c'est toujours effectivement plus cher.
Rapberry PI 2 (RaspBian), RFplayer, Aeon Labs Z-Stick Gen5, Everspring ST814 Temperature Sensor, Everspring SF812 Smoke Detector, 4x Fibaro Wallplug, Aeon Zwave Miniremote , Teleinfo USB

sirus
Messages : 103
Enregistré le : 05 mai 2015, 18:09
Contact :

Re: Arrosage automatique du jardin

Message par sirus »

Pour la pluie, surtout la probabilités de pluie a venir (inutile d'arroser si il pleu dans 1h...) j'ai fait via l'api wunderground

Je te laisse voir ici : http://domotique.web2diz.net/?p=392

Pour la meusure de la pluie qui est déjà tombé, j'utilise aussi un capteur virtuel de type wunderground qui donne la pluie mais aussi vent etc...



mon script final qui commande le démarrage de ma pompe ressemble a ca :

Code : Tout sélectionner

commandArray = {}

function split(source, delimiters)
        local elements = {}
        local pattern = '([^'..delimiters..']+)'
        string.gsub(source, pattern, function(value) elements[#elements + 1] =     value;  end);
        return elements
end

--recupere les minutes
time=os.time()
minutes=tonumber(os.date('%M',time))
hours=tonumber(os.date('%H',time))

-- pluie du jour
pluiedujour = otherdevices_svalues['Pluie'];
local result = split(pluiedujour, ';') ;
pluiedujour = tonumber(result[2]);



if( (hours==22) and pluiedujour < 0.2 and tonumber(otherdevices_svalues['Proba pluie 1h']) < 60 ) then
        -- Arrosage 1
        if ( uservariables["nombreArrosage"]  > 0 and minutes == 00) then
    print('------- Arrosage numero 1 DEBUT');
        commandArray['Arrosage'] = 'On'; -- on normalement
        end
        -- Arrosage 2
        if ( uservariables["nombreArrosage"] > 1 and minutes == 20) then
    print('------- Arrosage numero 2 DEBUT');
        commandArray['Arrosage'] = 'On'; -- on normalement
        end
        -- Arrosage 3
        if ( uservariables["nombreArrosage"] > 2 and minutes == 40) then
    print('------- Arrosage numero 3 DEBUT');
        commandArray['Arrosage'] = 'On'; -- on normalement
        end
        -- Arrosage 4
        if ( uservariables["nombreArrosage"] > 3 and minutes == 58) then
    print('------- Arrosage numero 4 DEBUT');
        commandArray['Arrosage'] = 'On'; -- on normalement
        end

end
En gros j'arrose à heure fixe si il peu pas dans l'heure et si il n'a pas trop plue.

"nombreArrosage" est une variable que je met a 1 2 3 4 manuellement dans domoticz (je pourrais ajuster ça automatiquement en fonction de la température de la journée mais pas encore eu le temps...

L'arrosage est géré par arduino qui lui aussi aussi ces propre test (c'est lui qui mesure le niveau d'eau de la batterie etc.. ).

Promis je t'en dis plus dès que j'ai un peu de temps.
Raspberry B+ & PI2 / Domoticz / RFXtrx433E / multiple homemade devices
My blog/tutos for domoticz / electronics stuff : domotique.web2diz.net

vil1driver
Messages : 5572
Enregistré le : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Arrosage automatique du jardin

Message par vil1driver »

merci pour le blog :D
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

manuloup
Messages : 536
Enregistré le : 18 févr. 2015, 13:05

Re: Arrosage automatique du jardin

Message par manuloup »

Ok merci pour ce moment, comme on dit dans les hautes sphères.

Je commence à mieux cerner la solution que je vais choisir. En gros voici :

- j'ai créé un groupe "Arrosage auto" dans lequel je mettrai l'ensemble de mes électrovannes quand j'en aurai. Je lui ai associé un dummy device type water avec une jolie icône avec une goutte d'eau pour faire plus jolie sur le Dashboard qu'une simple scène. Si on était l'un ou l'autre (la scène ou le dummy device), les 2 sont liés et s'éteignent.

- je prépare un script shell qui sera lancé chaque jour 2 fois par jour dans la crontab, uniquement pour les mois que je choisirai (toujours dans la crontab). En paramètre, il aura juste on ou off.
exemple : ./arrosage_auto on
Ce script allumera ou éteindra le groupe "Arrosage auto" selon le paramètre. Dans le cas de l'allumage (on), il vérifiera si la valeur du device de Pluie est < 5 et si la valeur du device "Pluie dans les 12h" est aussi < 5. Ces 2 devices sont des sondes type rain créées avec forecast.io pour celle de "Pluie dans les 12h" et Weather Underground Pour la Pluie en direct.

Je pense que ça devrait suffire. Je vous poste le script et un tuto complet dès que c'est fait :)
Rapberry PI 2 (RaspBian), RFplayer, Aeon Labs Z-Stick Gen5, Everspring ST814 Temperature Sensor, Everspring SF812 Smoke Detector, 4x Fibaro Wallplug, Aeon Zwave Miniremote , Teleinfo USB

manuloup
Messages : 536
Enregistré le : 18 févr. 2015, 13:05

Re: Arrosage automatique du jardin

Message par manuloup »

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
2015-08-28_214525 (Small).jpg (64.56 Kio) Vu 14134 fois
- un dummy device "Arrosage auto" type water
2015-08-28_220656.png
2015-08-28_220656.png (122.25 Kio) Vu 14134 fois
que vous associez au groupe précédent :
2015-08-28_220618.png
2015-08-28_220618.png (89.39 Kio) Vu 14134 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&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

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.
Modifié en dernier par manuloup le 28 mars 2016, 09:13, modifié 1 fois.
Rapberry PI 2 (RaspBian), RFplayer, Aeon Labs Z-Stick Gen5, Everspring ST814 Temperature Sensor, Everspring SF812 Smoke Detector, 4x Fibaro Wallplug, Aeon Zwave Miniremote , Teleinfo USB

vil1driver
Messages : 5572
Enregistré le : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Arrosage automatique du jardin

Message par vil1driver »

et s'il pleut dans 5 heures mais pas dans 12h ? ;)
et s'il annoncent plus de 5mm de pluie dans 12h mais avec seulement 10% de probabilité ?
peut être que ce dernier cas ne peut se présenter, mais ça mérite réflexion..

je pense que correctement gérer ce paramètre pluie est un sacré chalenge..

sinon par curiosité, pourquoi créer un groupe ?
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

manuloup
Messages : 536
Enregistré le : 18 févr. 2015, 13:05

Re: Arrosage automatique du jardin

Message par manuloup »

vil1driver a écrit :et s'il pleut dans 5 heures mais pas dans 12h ? ;)
et s'il annoncent plus de 5mm de pluie dans 12h mais avec seulement 10% de probabilité ?
peut être que ce dernier cas ne peut se présenter, mais ça mérite réflexion..

je pense que correctement gérer ce paramètre pluie est un sacré chalenge..

sinon par curiosité, pourquoi créer un groupe ?
Avec la sonde de pluie en normal plus celle à 12h, je pense que tu couvres les 2. Leurs estimations ne sont pas à la minute près mais sur une période. A vérifier.

Pour le groupe, c'est pour ajouter plusieurs devices type électrovannes directement dedans et les allumer/éteindre toutes en même temps.
Rapberry PI 2 (RaspBian), RFplayer, Aeon Labs Z-Stick Gen5, Everspring ST814 Temperature Sensor, Everspring SF812 Smoke Detector, 4x Fibaro Wallplug, Aeon Zwave Miniremote , Teleinfo USB

manuloup
Messages : 536
Enregistré le : 18 févr. 2015, 13:05

Re: Arrosage automatique du jardin

Message par manuloup »

Ok tu as raison. Dans ce cas il suffit d'ajouter une sonde forecast.io sur la pluie dans 6h (basé sur cette page : http://easydomoticz.com/les-previsions- ... -domoticz/) et de l'ajouter dans mon script. Je peux corriger mon script au besoin, mais la logique reste la même.
Rapberry PI 2 (RaspBian), RFplayer, Aeon Labs Z-Stick Gen5, Everspring ST814 Temperature Sensor, Everspring SF812 Smoke Detector, 4x Fibaro Wallplug, Aeon Zwave Miniremote , Teleinfo USB

Répondre