[Domotique] Ouverture automatique du poulailler

On reprend les deux tutoriels d’avant mais cette fois-ci on va jusqu’au bout … Ma compagne se lançant dans l’élevage de volaille, cela nous coûtera moins cher de fabriquer les portes que de les acheter (en moyenne 150-200€ actuellement et il m’en faut une dizaine…). Pour l’instant les fonctionnalités sont basiques, la porte se lève et se baisse en fonction du lever et le coucher du soleil civil, c’est-à-dire 6° en dessous de l’horizon. Une fois l’action faite, je reçois une notification sur Telegram. Pour la partie logiciel, j’ai optimisé afin de n’avoir qu’un fichier configurer. En bref, je clone le dépôt, j’édite le fichier de configuration et c’est parti !

liste du matériel

Soit : 51,16€ pour une porte automatisée

Installation

On connecte le transformateur 220v vers 12v sur le pont L298N H, ensuite on alimente le raspberry à partir du L298N, cela permet de se passer d’un transformateur 12v vers 5v. Le moteur est relié également au raspberry. Ensuite il y a deux montages possible :

  • soit on installe les capteurs de fin de course directement sur les câbles reliés aux pins de contrôle raspberry/L298NH (mais dans ce cas, pas d’alerte, s’il y a un problème)
  • soit on connecte directement les pins concernées au L298NH et on en dédit deux autres aux contrôles.

Je vais opter pour la seconde option, puisque là il s’agira de vérifier une dizaine de poulailler en même temps.

Pour le schéma, cela donne ça :

Vue schématique

Le montage :

Le prototype

Préparation du Raspberry

Installation en suivant les consignes de l’article suivant : mettre en place le ssh et le wifi sur un raspberry 0w

Ensuite j’active les GPIO avec un sudo raspi-config

Il faut également bien mettre la bonne heure, car par défaut c’est configuré sur Londre. Toujours dans raspi-config changer les paramètres des langues en prenant le menu 5 > L2 puis sélectionner Europe puis Paris (dans mon cas).

Une fois cela fait on installe les applications nécessaires :

sudo apt install python3-pip git

Également, dans la foulée, on installe la liste des librairies utiles pour les scripts en python.

pip3 install ephem requests RPi.GPIO

Installation du projet

Ensuite on récupère le code présent sur le dépot git du projet à l’aide la commande et on édite le fichier de identifiant.conf.sample que l’on renomme en configuration.conf :

git clone https://github.com/fz3p/chickencoopV2.git chickencoopV2
cd chickencoopV2
mv configuration.sample configuration.conf
nano configuration.conf
service;identifiant
IDBOT;identifiant du bot telegram
IDCHAT;identifiant du chat
HORIZON;horizon souhaité
LATITUDE;latitude souhaité
LONGITUDE;longitude souhaité
GPIOUP;17 (gpio pour monter la porte)
GPIODOWN;27 (gpio pour descendre la porte)
GPIOUPCTRL;26
GPIODOWNCTRL;24
LENGTHUP;durée d'action du moteur en seconde pour la montée
LENGTHDOWN;durée d'action du moteur en seconde pour la descente
NAME;nom du poulailler

Pour les configurations du bot Telegram voir le tutoriel de création ; ce qui permettra de remplir les champs suivants : IDBOT et IDCHAT. En ce qui concerne l’horizon, -6 pour le civil, -12 pour le nautique et -18 pour l’astronomique. LATITUDE et LONGITUDE sont à compléter suivant votre localisation. Les champs GPIOUP et GPIODOWN concerne le montage. Le pin 11 pour lever la porte, le 17 pour la descendre. GPIOUPCTRL et GPIODOWNCTRL pour les capteurs de fin de course, respectivement 26 et 24. Enfin le nom du poulailler, cela permet de recevoir une indication sur la notification en cas de plusieurs poulailler.

Un fois cela fait, il faut tester. Ouvrir la console Python (python3) dans le terminal et faire les manipulations suivantes :

import chickenhouse
c = chickenhouse.init()
c.close()
# la porte se ferme et vous recevez un message dès que vous activez le capteur de fin de course,
# sinon une alerte comme quoi la porte à un problème
# pour tester l'ouverture :
c.open()
# même chose que pour la fermeture.

En ce qui concerne le code, il est constituer de 4 fichiers : login.py, qui appelle le fichier configuration.conf – tous les paramètres nécessaire au fonctionnement – telegram.py qui a pour objectif de transmettre les informations via Telegram ; chickenhouse.py qui gère l’ensemble des actions. Et enfin poulailler.py qui est juste là pour lancer la tâche via le cron. J’ai essayé de détailler au maximum le code en le commentant.

Automatisation

  • soit à partir de l’utilisateur pi qui fait partie du groupe GPIO
  • soit à partir du sudo
crontab -e

Ajouter deux lignes :

45 16 * * * python3 /home/pi/chickencoopV2/poulailler.py
50 1 * * * python3 /home/pi/checkencoopV2/poulailler.py

pour le coucher je me suis basé sur l’horaire de coucher civil (-6°) du solstice d’hiver,
pour le lever je me suis basé sur l’horaire de lever astronomique (-18) du solstice d’été

A adapter en fonction de votre localisation.

Le modèle en production

J’ai également rajouté des fonctions pour forcer l’ouverture et la fermeture de la porte dans tenir compte des capteurs de fin de course.