Dans le cadre de certains projets il est intéressant de pouvoir exécuter une action sur notre Raspberry via un simple bouton poussoir. Un exemple avec un point d’accès WiFi qu’on ne souhaiterai rendre accessible qu’à la demande pour collecter des données ou effectuer une opération d’administration sur un Raspberry « autonome ». On va voir rapidement avec un petit script Python que l’on peut effectuer ce genre de chose. Dans cet exemple mon besoin est de pouvoir activer uniquement mon point d’accès WiFi quand je souhaite collecter des données sur mon installation Raspberry.
Création du script
Sur une distribution Raspbian (Lite ou non) les outils Python sont déjà installés. On peut donc passer directement à la création du script.
A l’emplacement de votre choix, créer un nouveau fichier
.py, dans mon cas
/home/pi/WiFiButton.py.
nano /home/pi/WiFiButton.py
#!/usr/bin/python import subprocess import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(18,GPIO.IN,pull_up_down=GPIO.PUD_UP) GPIO.setup(24,GPIO.OUT) while True: GPIO.wait_for_edge(18, GPIO.FALLING) p = subprocess.Popen(["sudo", "service", "hostapd", "status"], stdout=subprocess.PIPE) (hostapd_status, err) = p.communicate() if hostapd_status.find("running") != -1: subprocess.call(["sudo", "service", "hostapd", "stop"]) GPIO.output(24,GPIO.LOW) else: subprocess.call(["sudo", "service", "hostapd", "start"]) GPIO.output(24,GPIO.HIGH)
Ce script va vérifier l’état du GPIO18. Si un contact est fait entre le GPIO18 et la borne GROUND alors on vérifie l’état du daemon
hostapd. Si l’état
runningest renvoyé par la commande alors on stop le service, sinon on le start.
Une LED verte (sur le GPIO24) s’allume également à la suite de la commande start et s’éteint si c’est une commande stop. Ne pas oublier la résistance dans le montage pour la LED (ici 100 ohms).
Création du Daemon
Ce script doit « boucler » en permanence pour vérifier l’état de notre bouton. On va donc le transformer en daemon pour qu’il soit initié au démarrage et fonctionne en arrière plan.
Ajouter les droits d’exécution au script :
chmod a+x /home/pi/WiFiButton.py
Supprimer le démarrage automatique du daemon
hostapdau boot afin que le fonctionnement soit uniquement manuel :
sudo update-rc.d -f hostapd remove
On crée un nouveau service :
sudo nano /lib/systemd/system/WiFiButton.service
[Unit] Description=WiFi Button After=multi-user.target [Service] Type=simple ExecStart=/usr/bin/python /home/pi/WiFiButton.py Restart=on-abort [Install] WantedBy=multi-user.target
On change les droits du fichier de service :
sudo chmod 644 /lib/systemd/system/WiFiButton.service
Enfin on recharge l’ensemble des daemons, on active le démarrage de notre nouveau service au démarrage et on lance le service.
sudo systemctl daemon-reload sudo systemctl enable WiFiButton.service sudo systemctl start WiFiButton.service
The post TIP : Activer/Désactiver le point d’accès WiFi via un bouton appeared first on Code 4 Pi.