Quantcast
Channel: Code 4 Pi
Viewing all articles
Browse latest Browse all 25

TIP : Activer/Désactiver le point d’accès WiFi via un bouton

$
0
0

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
running
  est 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

hostapd
 au 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.


Viewing all articles
Browse latest Browse all 25

Latest Images





Latest Images