🚧 État du projet : version préliminaire / en cours d'amélioration
Ce dépôt est fonctionnel pour les deux principales fonctionnalités :
- 🌡️ Lecture du capteur DHT11 (température & humidité, vocalisation, installation automatisée)
- 💡 Veilleuse automatique (gestion de la luminosité, alertes sonores, service systemd, installation automatisée)
- 📚 Documentation détaillée (installation, configuration matérielle et logicielle, usage)
- 🛠️ Scripts d'installation et de configuration (Python, shell, systemd)
- 🔗 Gestion des dépendances et des groupes système
- 🔊 Assets sonores intégrés
- 📄 Licence MIT
- 🧩 Finalisation et robustesse de certains scripts shell (ex : gestion d'erreurs, logs, complétion de
setup-pigpio.sh
)- 🖼️ Ajout de schémas de branchement matériel
ℹ️ Le projet est donc publiquement utilisable, mais il reste en évolution.
📢 Vous souhaitez contribuer ? Consultez le guide de contribution : CONTRIBUTING.md
scripts-sysaux/
├── dht11/
│ ├── dht.py
│ ├── espeak-dht11-temperature.sh
│ ├── install-scripts.sh
│ ├── install-python-deps.sh
│ └── requirements.txt
├── light_auto/
│ ├── install-scripts.sh
│ ├── light_auto.py
│ ├── requirements.txt
│ ├── service/
│ │ └── light-auto.service
│ └── sounds/
│ ├── alert07.wav
│ └── alert08.wav
- dht.py : Script Python pour lire les données du capteur DHT11 via pigpio.
- espeak-dht11-humidity.sh / espeak-dht11-temperature.sh : Scripts shell pour vocaliser la température ou l'humidité via espeak-ng.
- install-scripts.sh : Installe les scripts, dépendances et crée les liens symboliques nécessaires.
- install-python-deps.sh : Installe les dépendances Python avec options d'installation interactive.
- requirements.txt : Dépendances Python nécessaires (pigpio, gpiozero, etc).
Pour installer et configurer automatiquement tout le nécessaire pour le capteur DHT11 sur votre Raspberry Pi (modèles 2, 3, 4), il suffit de copier-coller la ligne suivante dans votre terminal :
sudo bash -c 'tmpdir=$(mktemp -d) && git clone --depth=1 https://github.com/0x07CB/auxsys-scripts.git "$tmpdir" && bash "$tmpdir/scripts-sysaux/dht11/remote-install.sh" && rm -rf "$tmpdir"'
Cette commande :
- Télécharge le dépôt dans un dossier temporaire,
- Installe les dépendances requises,
- Configure le service pigpio,
- Installe les scripts et utilitaires pour le DHT11,
- Ajoute l'utilisateur au groupe
gpio
si besoin.
Information : Si le service Remote GPIO échoue à démarrer correctement après l'installation, il suffit de redémarrer l'appareil pour que tout fonctionne normalement avec la configuration et les scripts mis à jour.
cd scripts-sysaux/dht11
sudo ./install-scripts.sh
Le script install-python-deps.sh
vous propose plusieurs modes d'installation :
- venv local : crée un environnement virtuel Python dans le dossier courant.
- utilisateur courant : installe les paquets pour l'utilisateur actuel.
- autre utilisateur : installe pour un utilisateur système spécifique.
Lancez :
cd scripts-sysaux/dht11
./install-python-deps.sh
et suivez les instructions.
Note : L'installation complète (
install-scripts.sh
) gère aussi la copie des scripts, la création des liens symboliques, et l'ajout au groupeaudio
si besoin.
Pour mettre à jour les scripts, relancez simplement le script d'installation :
sudo ./install-scripts.sh
Les anciens fichiers sont sauvegardés avec l'extension .bak
si besoin.
Le capteur DHT11 possède trois broches principales :
- VCC : à connecter à une source d'alimentation 5V ou 3.3V sur le Raspberry Pi.
- DATA : à connecter à une broche GPIO du Raspberry Pi (par défaut GPIO 4).
- GND : à connecter à une broche de masse (GND) sur le Raspberry Pi.
- Identifiez les broches du capteur DHT11 (VCC, DATA, GND).
- Connectez la broche VCC à une broche d'alimentation 5V ou 3.3V du Raspberry Pi.
- Connectez la broche DATA à la broche GPIO 4 (ou une autre broche GPIO compatible, voir encadré ci-dessous).
- Connectez la broche GND à une broche de masse (GND) du Raspberry Pi.
- Assurez-vous que le démon pigpio est actif sur le Raspberry Pi :
sudo pigpiod
- Testez la connexion en exécutant le script :
dht11.py --temperature --humidity
Important : Choix de la broche GPIO
- Le DHT11 peut être connecté à n'importe quelle broche GPIO numérique du Raspberry Pi (modèles 2, 3, 4), à condition qu'elle ne soit pas déjà utilisée par un autre périphérique ou une fonction spéciale (I2C, SPI, UART, etc.).
- Par convention, la broche GPIO 4 (numérotation BCM) est souvent utilisée, mais ce n'est pas une obligation.
- Numérotation recommandée : Toutes les instructions et scripts de ce projet utilisent la numérotation BCM (Broadcom), qui est la plus courante dans la documentation Raspberry Pi et dans les bibliothèques Python (pigpio, gpiozero, etc.).
- À éviter : N'utilisez pas les broches réservées à l'alimentation (5V/3.3V), à la masse (GND), ni les broches déjà utilisées pour I2C (GPIO 2/3), UART (GPIO 14/15), SPI (GPIO 10/9/11), sauf si vous savez ce que vous faites.
- Exemples de GPIO compatibles (numérotation BCM) :
- GPIO 4 (par défaut)
- GPIO 17
- GPIO 18
- GPIO 27
- GPIO 22
- GPIO 23
- GPIO 24
- GPIO 25
- Astuce : Pour éviter toute confusion, vérifiez toujours que vous utilisez la numérotation BCM (et non la numérotation physique BOARD) dans vos scripts et branchements. La plupart des bibliothèques Python utilisent BCM par défaut.
Note : Ce script est compatible avec les Raspberry Pi 2, 3 et 4. Il n'a pas encore été testé sur le Raspberry Pi 5, mais une adaptation est prévue pour cette plateforme dans le futur.
- Pour lire la température :
dht11.py --temperature
- Pour lire l'humidité :
dht11.py --humidity
- Pour lire température et humidité (par défaut si aucune option n’est précisée) :
dht11.py
- Pour afficher la température en Fahrenheit :
dht11.py --temperature --fahrenheit
- Pour personnaliser le symbole d’unité (exemple pour Celsius) :
dht11.py --temperature --custom-celsius-unit="Degrés Celsius"
- Pour personnaliser le symbole d’unité pour Fahrenheit :
dht11.py --temperature --fahrenheit --custom-fahrenheit-unit="Degrés Fahrenheit"
- Pour personnaliser le symbole d’unité pour l’humidité :
dht11.py --humidity --custom-humidity-unit="Pourcents"
- Pour personnaliser le préfixe d’affichage :
dht11.py --temperature --prefix-temperature="La température est de" dht11.py --humidity --prefix-humidity="Le taux d\'humidité est de"
- Pour utiliser la sortie standard (stdout) (par défaut) :
dht11.py --temperature --use-stdout
- Pour supprimer le retour à la ligne à la fin de la sortie (utile pour l’intégration dans d’autres scripts) :
dht11.py --temperature --no-line-return
- Pour spécifier la broche GPIO utilisée :
dht11.py --gpio 17
- Pour spécifier l’adresse IP et le port du démon pigpio (par défaut : 127.0.0.1:8888) :
dht11.py --host 192.168.1.10 --port 8888
- Pour afficher la version du script :
dht11.py --version
- Pour vocaliser la température :
espeak-dht11-temperature.sh
- Pour vocaliser l'humidité :
espeak-dht11-humidity.sh
Option | Description | Valeur par défaut |
---|---|---|
--gpio |
Numéro de la broche GPIO | 4 |
--host |
Adresse IP du démon pigpio | 127.0.0.1 |
--port |
Port du démon pigpio | 8888 |
--humidity |
Afficher l’humidité | - |
--temperature |
Afficher la température | - |
--fahrenheit |
Convertir la température en Fahrenheit | - |
--use-stdout |
Utiliser la sortie standard | True |
--no-line-return |
Ne pas ajouter de retour à la ligne | False |
--custom-celsius-unit |
Symbole de l’unité Celsius | °C |
--custom-fahrenheit-unit |
Symbole de l’unité Fahrenheit | °F |
--custom-humidity-unit |
Symbole de l’unité d’humidité | % |
--prefix-temperature |
Préfixe pour l’affichage de la température | "temperature: " |
--prefix-humidity |
Préfixe pour l’affichage de l’humidité | "humidity: " |
--version |
Afficher la version du script | - |
- light_auto.py : Script Python pour contrôler une LED selon la luminosité ambiante (capteur + GPIO).
- install-scripts.sh : Installe le service systemd, les sons, le script et les dépendances.
- service/light-auto.service : Fichier de service systemd pour lancer le script au démarrage.
- sounds/ : Sons d'alerte joués lors des changements d'état.
- requirements.txt : Dépendances Python nécessaires (pygame, RPi.GPIO).
Pour installer et configurer automatiquement tout le nécessaire pour la veilleuse automatique sur votre Raspberry Pi (modèles 2, 3, 4), il suffit de copier-coller la ligne suivante dans votre terminal :
sudo bash -c 'tmpdir=$(mktemp -d) && git clone --depth=1 https://github.com/0x07CB/auxsys-scripts.git "$tmpdir" && bash "$tmpdir/scripts-sysaux/light_auto/install-scripts.sh" "$tmpdir/scripts-sysaux/light_auto" && rm -rf "$tmpdir"'
Cette commande :
- Télécharge le dépôt dans un dossier temporaire,
- Installe les dépendances requises,
- Configure le service systemd,
- Installe les scripts et utilitaires pour la veilleuse,
- Crée l'utilisateur et ajoute aux groupes nécessaires (
gpio
,audio
), - Nettoie le dossier temporaire à la fin.
cd scripts-sysaux/light_auto
sudo ./install-scripts.sh
Le script install-python-deps.sh
est appelé automatiquement à la fin de l'installation, mais vous pouvez aussi le lancer manuellement pour choisir le mode d'installation :
- venv local : crée un environnement virtuel Python dans le dossier courant.
- utilisateur courant : installe les paquets pour l'utilisateur actuel.
- autre utilisateur : installe pour un utilisateur système spécifique.
Lancez :
cd scripts-sysaux/light_auto
./install-python-deps.sh
et suivez les instructions.
Note : L'installation complète (
install-scripts.sh
) gère aussi la copie des scripts, la création des dossiers, et l'ajout au groupeaudio
si besoin.
- Le service
light-auto
peut être activé/désactivé via systemd :sudo systemctl enable --now light-auto.service sudo systemctl status light-auto.service
Pour simplifier la préparation de votre système et garantir le bon fonctionnement des scripts utilisant les GPIO (notamment DHT11), un script d'automatisation est fourni :
- setup-pigpio.sh : Ce script automatise l'installation des paquets nécessaires (pigpio, python3-pigpio, etc.), l'activation et le démarrage du service pigpiod, ainsi que l'ajout de l'utilisateur courant au groupe
gpio
(indispensable pour accéder aux GPIO sans droits root). Il affiche un message[SUCCESS]
en vert à la fin si tout s'est bien déroulé.
Avant toute utilisation des scripts DHT11 ou light_auto, exécutez :
cd scripts-sysaux/dht11
sudo ./setup-pigpio.sh
- Si vous n'êtes pas dans le groupe
gpio
, le script vous y ajoutera automatiquement. - Si des paquets sont manquants, ils seront installés.
- Le service pigpiod sera activé et démarré.
Remarque : Ce script ne modifie pas le fichier
/boot/firmware/config.txt
. Vous devez toujours adapter ce fichier manuellement selon vos branchements matériels (voir section précédente).
- Python 3
- pigpio, gpiozero, RPi.GPIO, pygame
- espeak-ng, sox
- Un Raspberry Pi avec accès aux GPIO
- Groupe système requis : L'utilisateur courant doit appartenir au groupe
gpio
(géré automatiquement parsetup-pigpio.sh
).
Pour garantir le bon fonctionnement des scripts d'automatisation (capteur DHT11, capteur de luminosité, éclairage LED), il est nécessaire de configurer les broches GPIO au niveau du système. Depuis les dernières versions de Raspberry Pi OS et distributions similaires, cette configuration se fait dans le fichier /boot/firmware/config.txt
.
- Le fichier se trouve à l'emplacement :
/boot/firmware/config.txt
- Il est accessible depuis le système principal (avec les droits root) ou en montant la carte SD sur un autre ordinateur.
Ajoutez ou vérifiez la présence du bloc suivant à la fin du fichier (après toute configuration existante) :
[all]
# ECLAIRAGE LED
gpio=23=op,dl
# DHT11 SENSOR
gpio=4=ip
# capteur de luminosite
gpio=27=ip
- Ligne concernée :
gpio=4=ip
- Explication :
- Configure la broche GPIO 4 en entrée (input) pour le capteur DHT11.
- Si vous utilisez une autre broche (option
--gpio
dans les scripts), adaptez le numéro ici.
- Ligne concernée :
gpio=23=op,dl
- Explication :
- Configure la broche GPIO 23 en sortie (output) et à l'état bas par défaut (dl = drive low) pour piloter la LED d'éclairage.
- Si vous changez la broche dans le script d'automatisation, adaptez ici aussi.
- Ligne concernée :
gpio=27=ip
- Explication :
- Configure la broche GPIO 27 en entrée pour le capteur de luminosité.
- À adapter si vous branchez le capteur sur une autre broche.
- Ouvrez le fichier
/boot/firmware/config.txt
avec les droits administrateur :sudo nano /boot/firmware/config.txt
- Ajoutez ou modifiez le bloc ci-dessus selon vos besoins matériels.
- Enregistrez et quittez l'éditeur.
- Redémarrez le Raspberry Pi pour que la configuration soit prise en compte :
sudo reboot
Remarque :
- Si vous utilisez d'autres broches que celles par défaut dans les scripts, pensez à adapter à la fois la configuration dans ce fichier et les options de lancement des scripts (
--gpio
).- Cette configuration est indispensable pour garantir l'accès correct aux GPIO par les scripts Python et shell du projet.
Pour contrôler les GPIO du Raspberry Pi à distance (depuis un autre Pi ou un PC), suivez ces étapes :
sudo apt update
sudo apt install pigpio python3-pigpio
sudo systemctl enable pigpiod
sudo systemctl start pigpiod
- Vérifiez que le service est actif :
sudo systemctl status pigpiod
Pour autoriser uniquement certaines adresses IP à accéder à distance :
sudo pigpiod -n 192.168.1.42
(adaptez l’IP à celle de votre contrôleur distant)
sudo raspi-config
- Menu : Interface Options → Remote GPIO → Enable
- Installez les bibliothèques nécessaires :
ou via pip :
sudo apt install python3-gpiozero python3-pigpio
pip3 install gpiozero pigpio
- Soit en passant l’IP via une variable d’environnement :
PIGPIO_ADDR=192.168.1.42 python3 mon_script.py
- Soit en forçant la pin factory dans le code :
from gpiozero import LED from gpiozero.pins.pigpio import PiGPIOFactory factory = PiGPIOFactory(host='192.168.1.42') led = LED(17, pin_factory=factory)
Remarque : Pour utiliser GPIO Zero à distance, le démon pigpiod doit être actif sur le Raspberry Pi cible, et le port 8888 doit être ouvert sur le réseau.
MIT License