Tuto

Poulailler connecté

Pouvons nous surveiller nos enfants 24h/24 ? vous avez 2h. Bon cette question sera au programme du Bac 2027 mais aujourd’hui nous allons voir comment connecter votre poulailler et surveiller vos poules, elles ne diront rien elles.

Ceci est le projet de Matthieu : Contrôle automatisé de l’ouverture du poulailler, et remontée d’informations

Pourquoi connecter un poulailler ?

Suite à l’envie d’avoir quelques poules, je me suis documenté sur Internet sur les avantages et les contraintes.

Une des contraintes était d’enfermer les poules chaque nuit pour les protéger des prédateurs. Bien qu’habitant en région parisienne, j’ai une forêt juste à côté, et donc potentiellement des renard & fouines.

Il existe de nombreuses solutions qui permettent d’automatiser la fermeture et l’ouverture d’une porte de poulailler, qui se basent sur la luminosité et/ou l’heure, pour un budget non négligeable (entre 100 et 150€, sans compter la porte en alu), par exemple Chickenguard.

Je trouve ce tarif très exagéré compte tenu des faibles fonctionnalités et du coût modique des composants nécessaires à fabriquer le boîtier.

En regardant les différents projets “homemade” qui existent sur Internet, et le coût des composants, je suis arrivé à la conclusion que je pouvais avoir beaucoup mieux pour le même prix.

Avant de me lancer j’ai parcouru de nombreux sites pour m’aider dans la réflexion et le design de la solution.
Malheureusement je n’ai pas conservé les urls. Un site en particulier m’a beaucoup aidé pour le choix du moteur et du pont L298N.
La plupart des projets étaient basés sur Arduino. Certains projets de voitures radio-commandés utilisant le Rpi0 ont également été utiles.

En revanche, je n’ai pas vu de projets regroupant comme le mien un Rpi0w + cam + L298N + sunwait + jeedom

Fonctionnalités recherchées :

Je souhaitais un certain nombre de fonctionnalités que je ne retrouvais pas avec les solutions commerciales :

  • non pas basé sur la luminosité ou l’heure, mais sur l’heure réelle de lever et coucher du soleil
  • pilotable à distance
  • retour vidéo avec vision nocture, pour s’assurer que tout le monde est bien rentré dans le poulailler
  • compatible jeedom

Ce qu’il faut acheter :

  • Rpi zero w avec sa boite, 22€ chez Gearbest
  • Carte SD, environ 15€ chez Amazon
  • Caméra pour pi zero, 11.30€ chez Aliexpress
  • Pont L298N, 1.26€ chez Aliexpress
  • Moteur 12 V 25 RPM, 6.76€ chez Aliexpress
  • Coupleur d’axe 6mm/6mm, 5€ sur ebay
  • Capteur de fin de butée, 2.41€ les 10 chez Aliexpress
  • convertisseur 12V vers USB 5V, 0.66€ chez Aliexpress
  • Alimentation 12V 3A, 11€ chez Amazon
  • Boîte en plastique, 7€ chez Amazon
  • Porte coulissante en alu, 35€ chez Amazon
  • Divers : wago, petit fil, bobine de cable, ficelle, petites poulies, gaines thermorétractables, soudure, diodes, etc…, environ 35€

Total : 130€

Bonus : caméra de surveillance supplémentaire, payé 19e en promo sur Gearbest

Selon ou vous achetez le délai est plus ou moins long mais prévoyez un mois pour tout recevoir, avant de pouvoir commencer l’assemblage.

Schéma logique moche :

Photo de la boîte avec tous ses composants (le fil d’ouverture de porte sort à la verticale) :

Des capteurs de fin de course associés à des diodes permettent de stopper le moteur lorsque la porte est tout en haut ou tout en bas.

Par fainéantise, je n’ai finalement installé qu’un seul capteur de fin de course, le plus important : celui de porte ouverte.

Coté Rpi0, des fils ont été soudés sur 3 gpio, masse, et 2 data

La caméra a été raccordée au Rpi0.

Raspbian a été installé, mis à jour, et configuré.

Pour la caméra, j’ai suivi le tuto suivant:

J’ai installé le programme “sunwait” pour déclencher l’ouverture et fermeture de la porte en fonction des horaires du soleil.

Jeedom a été configuré pour récupérer le flux vidéo et pousser les commandes manuelles.

Etant accro aux capteurs Xiaomi, et heureux propriétaire d’un Zigate, j’ai également “enrichi” le poulailler de quelques capteurs supplémentaires :

  • capteur température & humidité
  • capteur d’ouverture de la trappe donnant accès aux oeufs
  • à venir : capteur d’état de la porte pour détecter des anomalies

Tuto poulailler

Code source

Avertissement : je ne me considère pas comme un développeur, et code beaucoup avec google dans une autre page… donc les scripts suivants fonctionnent, mais je ne peux pas garantir leur stabilité et sécurité. Le serveur ne doit donc pas être accessible depuis Internet.

Sur jeedom : les commandes d’ouverture et fermeture manuelles se font via le plugin script :

Sur le raspberry pi zero w, les pages correspondantes sont très courtes :

open_script.php :

<?php

$command = escapeshellcmd(‘/opt/chickendoor/open_door.py’);

shell_exec($command);

?>

 

close_script.php :

<?php

$command = escapeshellcmd(‘/opt/chickendoor/close_door.py’);

shell_exec($command);

?>

 

Ces deux pages appellent des fichiers pythons :

open_door.py :

#!/usr/bin/env python

# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4

import door

#quit()

door.init()

door.open_door()

 

close_door.py :

 

#!/usr/bin/env python

# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4

import door

#quit()

door.init()

door.close_door()

 

Ces deux fichiers appellent un autre fichier central : door.py, qui pilote les ports GPIO du RPi, génère des logs, et garde le statut dans un fichier texte. Suite à un problème qui a failli détruire le moteur (une fois la ficelle entièrement déroulée, si on continu à dérouler, ça enroule dans l’autre sens !), j’ai ajouté des sécurités empêchant de fermer ou ouvrir deux fois la porte. Pour des cas particuliers (amorçage), j’ai ajouté des fonctions bypassant la sécurité.

Le code n’est pas du tout documenté (honte à moi), mais il est suffisant simple pour être facilement compréhensible.

 

#!/usr/bin/env python

# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4

import RPi.GPIO as gpio

import datetime

import time

import logging

TIME_UP = 45

TIME_DOWN = 36

FILENAME = “/opt/chickendoor/status.txt”

LOGFILE = “/opt/chickendoor/chicken.log”

def init():

gpio.setmode(gpio.BCM)

gpio.setup(17, gpio.OUT)

gpio.setup(22, gpio.OUT)

logging.basicConfig(filename=’chicken.log’, level=logging.DEBUG, format=’%(asctime)s — %(name)s — %(levelname)s — %(message)s’)

def read_status():

file = open(FILENAME,”r”)

status = file.readline()

file.close()

return(status)

def write_status( STATUS ):

file = open(FILENAME,”w”)

file.write(STATUS)

file.close()

def open_door():

if read_status() == “Closed”:

write_status(“Opening”)

logging.info(‘DOOR Opening…’)

gpio.output(17, True)

gpio.output(22, False)

time.sleep(TIME_UP)

gpio.cleanup()

logging.info(‘DOOR Opened !’)

write_status(“Opened”)

else:

gpio.cleanup()

logging.warning(‘ERROR! Action OPEN but door not closed!’)

def force_open_door():

write_status(“Opening”)

logging.info(‘DOOR FORCED Opening…’)

gpio.output(17, True)

gpio.output(22, False)

time.sleep(TIME_UP)

gpio.cleanup()

logging.info(‘DOOR FORCED Opened!’)

write_status(“Opened”)

def close_door():

print read_status()

if read_status() == “Opened”:

write_status(“Closing”)

logging.info(‘DOOR Closing…’)

gpio.output(17, False)

gpio.output(22, True)

time.sleep(TIME_DOWN)

gpio.cleanup()

logging.info(‘DOOR Closed!’)

write_status(“Closed”)

else:

gpio.cleanup()

logging.warning(‘ERROR! Action CLOSE but door not opened!’)

def force_close_door():

write_status(“Closing”)

logging.info(‘DOOR FORCED Closing…’)

gpio.output(17, False)

gpio.output(22, True)

time.sleep(TIME_DOWN)

gpio.cleanup()

logging.info(‘DOOR FORCED Closed!’)

write_status(“Closed”)

 

Autre paramètrage :

  • il faut ajouter www-data dans les utilisateurs habilités à modifier les ports GPIO :

 

$ sudo usermod -a -G gpio www-data

$ sudo groups www-data

$ sudo service apache2 restart

 

  • Il faut créer un fichier status.txt lisible et écrivable par tous dans le répertoire /opt/chikendoor/ et avec un lien symbolique dans le répertoire html où se trouvent les scripts php :

 

touch /opt/chickendoor/status.txt

chmod a+wr /opt/chickendoor/status.txt

ln -s /opt/chickendoor/status.txt /var/www/html/chicken/status.txt

chmod a+r /var/www/html/chicken/status.txt

 

  • il faut paramétrer le crontab (ou tout autre planificateur) pour ouvrir et fermer automatiquement la porte.

Attention : j’avais d’abord utilisé les options de décalage avant/après le levé/coucher du soleil, mais avec ma version de sunwait, cela ne marchait pas !

J’ai trouvé la solution en me basant sur une option de sunwait, qui permet le déclenchement non pas lorsque le soleil est à l’horizon (0°), mais encore caché (-8° de mémoire).

Ainsi, la porte s’ouvre une demie heure avant le levé “officiel” du soleil, et se couche une demie-heure après le coucher.

 

Exemple des différences entre le lever/coucher “normal” et “civil” :

 

root@Rpi-Poulailler:/home/pi# sunwait report 48.735393N 2.430392E

Current Date and Time: 11-Apr-2018 21:12 CEST

Target Information …

Location: 48.735393N,   2.430392E

Date: 11-Apr-2018

Timezone: CEST

Sun directly north/south: 13:51

Twilight angle: -0.83 degrees (daylight)

Day with twilight: 07:08 to 20:34

It is: Night

General Information (no offset) …

Times …         Daylight: 07:08 to 20:34

with Civil twilight: 06:37 to 21:05

with Nautical twilight: 05:57 to 21:45

with Astronomical twilight: 05:15 to 22:27

Duration …    Day length: 13:26 hours

with civil twilight: 14:27 hours

with nautical twilight: 15:47 hours

with astronomical twilight: 17:12 hours

Ce qui me donne les entrées cron suivantes :

00 02   * * *   /usr/bin/sunwait wait civil rise 48.735393N 2.430392E; /usr/bin/python /opt/chickendoor/open_door.py >> /var/log/chicken.log 2>&1

00 13   * * *   /usr/bin/sunwait wait civil set 48.735393N 2.430392E; /usr/bin/python /opt/chickendoor/wait_and_close.py >> /var/log/chicken.log 2>&1

 

Exemple de fonctionnement

  • tous les jours à 2h du matin, le programme sunwait se lance et attend que la condition de lever du soleil soit remplie, puis se termine.
  • La deuxième commande est alors exécutée : l’ouverture de la porte
  • Puis rebelote à 13h, sunwait attend le coucher de soleil, se ferme, et la commande python de fermeture est alors exécutée.

Et les poules dans tout ça ?

Elles se portent à merveille et pondeuse leur oeuf quotidien.

Les premiers jours ont été compliqués, car seule une poule était venue dormir dans le nichoir. Mais après les avoir forcé à s’y rendre une nuit, tout le monde va dormir dans le dortoir chaque soir !

Malheureusement, elles sont un peu trop curieuses, et on va devoir leur couper quelques plumes pour les empêcher de prendre la poudre d’escampette !

 

 

  • COOLIFE 16MP 1080P HD Caméra de Chasse Vitesse de Déclenchement 0.2s et 27 pcs Infrarouges LED de 940nm, Camera de Chasse Nocturne IP66 Étanche à l'eau et à la Poussière avec Carte 32G
    【Vitesse de déclenchement rapide】La camera chasse infrarouge Coolife se déclenche avec une vitesse de 0,2 secondes , garantissant ainsi une capture rapide et précise de chaque mouvement détecté. La caméra de chasse est également équipée d'un angle de détection de 90 ° pour une excellente visibilité. Notre caméra de chasse peut être utilisée pendant de longues périodes en utilisant 8 piles alcalines AA haute performance jusqu'à 8 mois (ne mélangez pas des piles neuves et des piles usagées) 【Technologie de pointe et design unique】 La combinaison d'un design noir pur et de la technologie 940nm permet à votre camera de chasse nocturne de se fondre très bien dans la nuit. Éclairage de nuit à infrarouge de 27 LED, remplissage de lumière plus uniforme, pas de problème de surexposition locale. Que ce soit à l'état sauvage, à la ferme ou dans votre jardin, elle ne fera pas fuir les animaux ou les personnes et vous assurera de ne rien manquer 【Expérience HD réelle】 La caméra de chasse Coolife capture des images 16 MP cristallines et des vidéos HD 1080p avec un enregistrement sonore super clair. Taux de trame vidéo jusqu'à 60FPS, assurant une image plus claire et plus stable, montrant mieux la scène d'enregistrement. Des photos aux couleurs vives sont capturées pendant la journée et en noir et blanc la nuit 【Haute résistance étanche à l'eau et à la poussière】Coolife camera chasseur nocturne est dotée de la technologie IP66, la meilleure concernant l’étanchéité à l’eau et aux poussières, elle peut être utilisée dans des environnements difficiles avec des températures de -20 ° à 60 ° (dans des environnements difficiles avec de fortes tempêtes ou de fortes précipitations et orages). Dans le désert ou la forêt tropicale, c’est le meilleur 【Service après-vente à haute efficacité】Notre nouvelle caméra de jeu nocturne infrarouge Coolife PH007A est spécialement conçue pour les acheteurs à la recherche d’un prix réduit. La dernière technologie en 2020, le prix préférentiel, la qualité constante, est un facteur important dans le choix de notre Coolife. L'équipe Coolife vous fournira un support après-vente professionnel dans les meilleurs délais, et nous vous servirons toujours ici
  • Kerbl Ensemble de porte automatique de poulailler 220x330 mm 70547
  • MakerHawk Caméra Raspberry Pi Caméra de Vision Nocturne Module à focale réglable 5MP OV5647 Webcam vidéo 1080p pour Raspberry-pi 2 Raspberry-pi 3 Modèle B Modèle B + Modèle 3B +
    Caméra de vision nocturne - Voyez ce qui se passe même dans l'obscurité. Vidéo d'opération: https://www.youtube.com/watch?v=HOCA60gGHAs; Manuel d'instructions: https://www.waveshare.com/w/upload/6/61/RPi-Camera-User-Manual.pdf. Module de caméra infrarouge vidéo HD - Profitez d'une vidéo 1080p nette. Il dispose de deux lumières LED infrarouges haute intensité pour l'enregistrement et la surveillance de nuit Avis - La lumière infrarouge des deux côtés se réchauffera lorsqu'ils fonctionnent (généralement en 40-50 ℃), mais c'est normal, ne vous inquiétez pas. Cela n'endommagera pas votre pi. Nous avons testé ce module au-delà de 20 heures et il a bien fonctionné. Si vous vous sentez mal à l'aise avec la température, vous pouvez atténuer la minuscule résistance réglable, puis la température baissera Caméra 5MP OV5647 - La plage de distance effective de vision nocturne est de 1 à 1,5 M.; Distance focale: 3,6 mm (réglable); Angle de prise de vue: 60 degrés; Résolution optimale du capteur: 1080p Webcam de sécurité pour Raspberry Pi - Ce module de caméra est compatible avec le modèle Raspberry pi 4B / 3B + / 3B / 2B + / 2B / B.Tout problème, veuillez cliquer sur "Seamuing" pour nous envoyer un courriel, nous vous donnerons une solution satisfaisante
  • Kerbl Ensemble de porte automatique de poulailler 300x400 mm 70546

30 commentaires

Cliquez ici pour ajouter un commentaire

CommentLuv badge

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

  • Bonjour Matthieu et bravo pour ton tuto.
    J’ai aussi équipé mon poulailler du même système, en plus simple car il n’y a pas de caméra ni de capteur pour le moment.
    Tout fonctionne bien en automatique, sauf que je n’arrive pas à faire communiquer mon jeedom “Maison” avec le RPI poulailler, ni avec le module script, ni avec rien… As tu un peu plus d’information sur le paramétrage utilisé entre les 2 RPI ?

    • Bonjour,

      Je suis vraiment désolé pour le temps de réponse, l’article date de plus de 2 ans, et je ne suis pas notifié des commentaires. Je viens de tomber par hasard sur une dizaine de message qui m’étaient destinés…

      Si votre question est toujours d’actualité, voici mon mail, ça m’évitera de rater votre message ! matthieu.favris[arobase]gmail.com

      Ce que je peux dire, c’est qu’il faut que les deux RPI soient sur le même réseau wifi, et qu’ils arrivent à se pinguer.
      Si ça c’est bon, alors contacte moi pour l’étape d’après 😉

  • Salut,

    Je regarde ton schéma et tes codes mais je ne vois pas comment ton capteur de fin de course arrête de faire tourner le moteur, tu fais ça comment stp?

    • bonjour, pourriez vous m’expliquer svp comment réaliser la partie script sur le Raspberry car je n’y connais rien. je vous remercie beaucoup.

  • Slt, je suis assez novice en programmation de ce genre.
    Peux tu juste me dire ou je tape tout le code dans mon Raspberry ?
    je te remercie, et chapeau pour le boulot !

  • Bonjour, je continu de chercher la marche à suivre mais pas simple.
    en fait, j’aimerais connaître les prérequis à installer et savoir ou et comment éditer les fichier.
    merci beaucoup

  • bonjour, j’aimerais juste savoir précisement la marche à suivre pour éditer le script car je n’y connais rien. Je bute simplement sur ce point. mon montage est correctement réalisé mais je suis bloqué .
    d’avance un grand merci et chapeau pour le travail réalisé.

    • Bonjour,

      Je suis vraiment désolé pour le temps de réponse, l’article date de plus de 2 ans, et je ne suis pas notifié des commentaires. Je viens de tomber par hasard sur une dizaine de message qui m’étaient destinés…

      Si votre question est toujours d’actualité, voici mon mail, ça m’évitera de rater votre message ! matthieu.favris[arobase]gmail.com

  • Bonjour Matthieu,

    Pourrions nous discuter pour concevoir un projet identique?

    Je ne sais pas programmer et ne suis pas du tout geek:) en revanche je suis sélectionneur de poules de races anciennes et j’ai grandement besoin de données effectives et instantanées.

    Pouvons nous en discuter?
    Cordialement
    Willy

      • Bonjour,

        Désolé pour le temps de réponse, l’article date de plus de 2 ans, et je ne suis pas notifié des commentaires.

        Si votre question est toujours d’actualité, voici mon mail, ça m’évitera de rater votre message ! matthieu.favris[arobase]gmail.com

    • Bonjour,

      Je suis vraiment désolé pour le temps de réponse, l’article date de plus de 2 ans, et je ne suis pas notifié des commentaires. Je viens de tomber par hasard sur une dizaine de message qui m’étaient destinés…

      Oui c’est possible ! Mais vu la date de votre message, ça ne doit plus trop être d’actualité…
      Voici mon mail, ça m’évitera de rater votre message ! matthieu.favris[arobase]gmail.com

  • Bonjour,
    Super Tuto merci ! je bloque juste sur l’étape de jeedom pour appeler le script.. l’image stockée sur le site est pixelisé. impossible de lire la syntaxe écrite.
    Si qqn peut l’écrire ce serait parfait 🙂

    • Bonjour,

      Désolé pour le temps de réponse, l’article date de plus de 2 ans, et je ne suis pas notifié des commentaires.

      Si votre question est toujours d’actualité, voici mon mail, ça m’évitera de rater votre message ! matthieu.favris[arobase]gmail.com

  • Bonjour je suis intéressé par ce projet et souhaiterais le mettre en œuvre chez moi. Serait il possible d’avoir la liste du matériel et une notice de mise en service et programlation ?

    Merxi beaucoup

    • Bonjour,

      Désolé pour le temps de réponse, l’article date de plus de 2 ans, et je ne suis pas notifié des commentaires.

      La liste est indiqué dans l’article, de quelle autre précision avez vous besoin ?

      Si vous avez d’autres questions, voici mon mail, ça m’évitera de rater votre message ! matthieu.favris[arobase]gmail.com

  • Bonjour,
    Super projet bien détaillé, cependant j’ai une question que l’alimentation il faut une prise à 220v à proximité ou on peut l’alimenté via batterie + panneau solaire ?
    L’interface vient de jeedom ?

    • Bonjour,

      Désolé pour le temps de réponse, l’article date de plus de 2 ans, et je ne suis pas notifié des commentaires.

      Mon système utilise du 12V (il y a un transfo 220V vers 12V tout bête branché sur une prise de mon garage), mais si vous pouvez fournir du 12V stable à partir d’un panneau solaire et d’une batterie, c’est encore mieux !

      Si vous avez d’autres questions, voici mon mail, ça m’évitera de rater votre message ! matthieu.favris[arobase]gmail.com

  • Salut.
    Je viens de tomber sur ce tuto très intéressant que j’ai seulement parcouru pour l’instant. En voyant la liste de matériel, vous croyez qu’il est possible de fabriquer sa propre porte en métal à moindre coût plutôt qu’acheter celle sur Amazon ? 🤔

    • Bonjour,

      Désolé pour le temps de réponse, l’article date de plus de 2 ans, et je ne suis pas notifié des commentaires.

      Depuis la publication de cet article, j’ai fait évolué mon système, et c’est dorénavant la grande porte qui est automatiquement contrôlée (celle qu’on aperçoit dans l’application mobile). J’ai juste tourné à 90° le boîtier moteur, et inversé les commandes (maintenant c’est en tirant le fil que la porte se ferme, alors qu’avant il fallait relâcher le fil pour faire redescendre la trappe.
      J’ai ensuite ajouté un contrepoids pour que la porte s’ouvre quand le fil est relâché.

      Si vous avez d’autres questions, voici mon mail, ça m’évitera de rater votre message ! matthieu.favris[arobase]gmail.com

  • Bonsoir, je cherche à intégrer les différents codes proposés, mais je n’y connais pas grand chose. Je viens de cabler une RPI Zero W avec 2 sondes de températures, un moteur 12V pour la porte et une caméra IR.
    J’ai installé aussi JEEDOM après avoir essayé DOMOTICZ .
    J’ai bien les DHT11 qui remontent les infos de température et d’humidité, mais pour les reste, je ne sais pas trop comment faire…

    Merci pour votre aide.
    Bien cordialement

    • Bonjour Patrick,
      Comment avez vous raccordé le moteur ?
      Je vous propose de continuer la discussion par mail : matthieu.favris[arobase]gmail.com

  • Bonjour,
    Débutant dans ce genre de montage, serait-il possible d’avoir le détail des diodes utilisées pour actionner le moteur et utilisées pour le capteur de la porte ?

    D’avance merci.
    Christophe