Topics

Je ne suis pas ingénieur, mais j'ai essayé de créer un système de gestion KidsWiFi à l'aide d'un Raspberry Pi.

  • column

Salut ! Je suis Oga, designer et responsable des opérations.
Je suis une ancienne employée qui a rejoint l'entreprise en 2015, mais sur mon blog, je fais généralement semblant d'être une fille.Un article dont l'utilité est incertaine.Il m'arrive d'en écrire.
Malgré mon attitude habituelle, je vais cette fois faire un effort et parler de quelque chose d'un peu plus sérieux.

Partant du principe que je n'ai pratiquement aucune expérience pratique en tant qu'ingénieur.
Même si je consulte parfois le terminal pour le travail, je ne fais généralement que jeter un coup d'œil aux journaux qui arrivent, et j'ai toujours pensé que taper des commandes et créer quelque chose moi-même était quelque chose « réservé à ceux qui en sont capables ».
Et pourtant, j'ai réussi à tout faire, de la configuration réseau à la mise en œuvre de l'application web, avec un Raspberry Pi… Cela prouve bien que lorsqu'on est obligé de faire quelque chose, on est étonnamment capable.

L'élément déclencheur a été la question des iPads pour enfants.

Mes enfants sont constamment sur l'iPad. Si je les laisse tranquilles, ça n'en finit plus.
C'est donc la première chose sur laquelle je voulais agir.

À ce moment précis, j'ai reçu une directive de l'entreprise me demandant de « créer quelque chose qui me plaise, comme un hackathon interne ».
Notre entreprise connaît actuellement un engouement sans précédent pour Claude Code. Chaque membre de l'équipe utilise Claude comme outil de travail principal, et le bureau est en pleine effervescence de développement. Je suis abonné à la formule à 25 $ par mois, mais certains utilisateurs chevronnés profitent pleinement de formules encore plus onéreuses, et l'énergie qui règne ici est palpable, animée par la volonté de « créer tout ce que l'on peut avec l'IA ».

« J'ai toujours voulu essayer un Raspberry Pi (tout simplement parce que ça a l'air cool). »
« Je veux résoudre le problème de l'iPad d'un point de vue technique. »
« Je veux obtenir un résultat concret lors de ce hackathon. »

Ces trois passions se sont combinées pour donner naissance au projet « Système de gestion permettant d'activer/désactiver de force le Wi-Fi des enfants à l'aide d'un seul bouton sur votre smartphone ».

Il m'arrive de jeter un œil au terminal, mais je ne configure quasiment jamais rien.
Avec l'aide de Claude, et après de nombreux essais et erreurs, j'ai finalement réussi à créer cette « boîte magique » !

Étape 1 — Configuration du Raspberry Pi

Préparation à l'aide de Raspberry Pi Imager → Connexion SSH

Commençons par installer le système d'exploitation sur le Raspberry Pi 4. Installez Raspberry Pi Imager (l'outil officiel de flashage) sur votre Mac et flashez le système d'exploitation 64 bits sur la carte microSD. Il est étonnamment important d'activer le protocole SSH dans les paramètres de flashage.

Après avoir connecté le Raspberry Pi au routeur à l'aide d'un câble LAN et l'avoir allumé, vous pouvez le connecter en utilisant simplement cette commande depuis le terminal du Mac.

terminal (Mac)

ssh [email protected]

Au terminalpi@raspberrypi:~ $J'ai été un peu ému dès que c'est apparu. Je vais d'abord mettre à jour le système.

sudo apt update && sudo apt upgrade -y

Étape 2 — Configurer un point d'accès Wi-Fi

configuration hostapd / dnsmasq / iptables

Pour utiliser le Raspberry Pi comme « point d'accès Wi-Fi », vous devez installer deux logiciels.hostapdL'appareil qui émet des signaux Wi-Fi,dnsmasqIl s'agit du dispositif qui attribue des adresses IP aux appareils connectés.

sudo apt install hostapd dnsmasq

Saisissez le SSID (nom du réseau Wi-Fi) et le mot de passe dans le fichier de configuration. Ici, je l'ai nommé « KidsWiFi » pour plus de clarté.

/etc/hostapd/hostapd.conf

interface=wlan0
driver=nl80211
ssid=KidsWiFi
hw_mode=g
channel=7
wpa=2
wpa_passphrase=(mot_de_passe)
wpa_key_mgmt=WPA-PSK

Ensuite, vous spécifiez la plage d'adresses IP à distribuer aux appareils connectés.

/etc/dnsmasq.conf

interface=wlan0
dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h

Enfin, nous allons configurer le transfert IP et la NAT pour que le Raspberry Pi puisse servir de relais Internet. Sans cette configuration, vous ne pourrez pas accéder à Internet, même en vous connectant à KidsWiFi.

# Rendre le transfert IP persistant
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/routed-ap.conf

# Configurer la NAT (pour autoriser l'accès Internet via eth0)
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

J'ai rencontré un problème : l'interface wlan0 se déconnectait systématiquement à chaque redémarrage du système. J'ai donc créé un fichier de service systemd pour automatiser la configuration réseau au démarrage. C'est ainsi que j'ai résolu le problème, tout en me plaignant à Claude : « Pourquoi ça ne se reconnecte pas ?! »

Lorsque « KidsWiFi » est apparu dans la liste Wi-Fi de mon smartphone et que j'étais connecté à Internet, j'ai instinctivement tapé « Maîtresse ! Je suis connecté ! » dans le chat (je l'ai vraiment tapé).

Étape 3 — Créer un panneau d'administration à l'aide d'une application web

Concevoir un écran contrôlable par smartphone en utilisant Python et Flask.

Maintenant que le point d'accès Wi-Fi est configuré, l'étape suivante consiste à créer une interface de gestion activable et désactivable depuis un smartphone. Nous utiliserons le framework web Python « Flask » pour exécuter un serveur web sur le Raspberry Pi. J'ai d'abord développé cette interface en local sur mon Mac, vérifié son bon fonctionnement, puis je l'ai transférée sur le Raspberry Pi.

terminal (Mac) — Configuration de l'environnement de développement

python3 -m venv venv
source venv/bin/activate
pip install flask

L'interrupteur marche/arrêt du Wi-Fi bloque en réalité uniquement l'accès à Internet. KidsWiFi émet un signal en permanence, et iptables, un pare-feu Linux, détermine s'il faut ou non bloquer les paquets destinés à Internet. Le code est étonnamment simple.

app.py (extrait) — le cœur du contrôle WiFi

import subprocess
def enable_internet():

# Supprimer la règle de blocage → Ouvrir Internet
subprocess.run([
'sudo', 'iptables', '-D', 'FORWARD',

'-i', 'wlan0', '-j', 'DROP'

], capture_output=True)

def disable_internet():

# Ajouter une règle de blocage → Bloquer Internet
subprocess.run([
'sudo', 'iptables', '-I', 'FORWARD',

'-i', 'wlan0', '-j', 'DROP'

], capture_output=True)

Cela suffit à couper la connexion internet. Une simple ligne de commande suffit à bloquer l'iPad de mon enfant. J'avais l'impression d'avoir acquis un pouvoir incroyable (même si je ne le maîtrise pas encore tout à fait).

Nous avons créé des écrans système distincts pour les enfants et les parents.
Sur l'écran pour enfants, étonnamment,Fonction rouletteIl contient ''!
Imposer une limite de temps unilatérale risque d'ennuyer les enfants. La stratégie consiste donc à les laisser faire tourner la roulette eux-mêmes : ils seront plus satisfaits.
L'idée est de transformer la négociation souvent infructueuse concernant le moment où il faut arrêter d'utiliser l'iPad en un jeu amusant et agréable, où les utilisateurs réagissent avec joie ou déception à la question : « Combien de minutes de Wi-Fi aurons-nous aujourd'hui ? »

  • Écran pour enfants
    → Vous gagnerez soit 30 minutes, 45 minutes, soit 1 heure à la roulette.
    → Compte à rebours du temps restant
    → Délai de récupération d'une heure après l'expiration du temps imparti
    →Durée d'utilisation cumulée
    →Afficher les tours de roulette restants
  • Tableau de bord des parents
    →Protection par mot de passe
    → Wi-Fi désactivé en cas d'urgence
    → Mode devoirs (blocage complet)
    →Nombre maximal de tours de roulette
    → Heure d'arrêt forcé
    →Historique d'utilisation

Au cours du développement, un problème est apparu : « Nous ne pouvons pas le tester sur Mac car iptables n’est pas disponible. » Nous avons donc créé une fonction factice (affichant simplement une instruction) pour Mac afin de permettre les tests.
J'ai consulté Claude pour chacune de ces situations du genre « Je suis bloqué ! Que dois-je faire ? » au fur et à mesure.

Étant donné que je suis graphiste, je m'attendais à devoir agencer moi-même la mise en page en attendant le rendu, mais j'ai été agréablement surpris de constater qu'elle était étonnamment propre. Je n'ai pratiquement eu aucune correction à faire.
C'est un peu frustrant, mais aussi plutôt agréable.

Étape 4 — Déploiement sur Raspberry Pi et automatisation du démarrage

Transférer des fichiers via SCP → S'enregistrer comme service systemd

Transférez les fichiers créés sur le Mac vers le Raspberry Pi.scpCela peut se faire en une seule commande.

terminal (Mac) — Transfert vers Raspberry Pi

scp -r templates app.py [email protected]:~/wifi-manager/

Démarrer Flask manuellement à chaque redémarrage est fastidieux, je vais donc créer un fichier de service systemd pour automatiser son démarrage. L'objectif est que tout se lance automatiquement au démarrage de l'ordinateur.

/etc/systemd/system/wifi-manager.service

[Unit]
Description=WiFi Manager
After=network.target wifi-setup.service

[Service]
ExecStartPre=/bin/bash -c 'echo > /home/pi/wifi-manager/state.json'
ExecStartPre=iptables -F FORWARD
ExecStart=/usr/bin/python3 /home/pi/wifi-manager/app.py
WorkingDirectory=/home/pi/wifi-manager
Restart=always
User=root

[Install]
WantedBy=multi-user.target
# Activer et démarrer le service
sudo systemctl enable wifi-manager
sudo systemctl start wifi-manager

Il suffit de l'allumer pour l'utiliser. Si vous accédez à http://192.168.4.1:5000 depuis le navigateur de votre smartphone, l'écran de la roulette s'ouvrira. Incroyable, ça a vraiment fonctionné !

Ce que j'ai pensé après l'avoir essayé

Si moi, qui ne suis pas ingénieur, j'ai pu tout mener à bien, de la configuration réseau à Python, c'est sans aucun doute parce que j'ai pu « interagir » avec Claude tout au long du processus.
En cas de blocage, un message d'erreur s'affiche. Si vous demandez « Que dois-je faire ensuite ? », la liste des étapes s'affiche. Si vous demandez « Pourquoi cela se produit-il ? », une explication simple vous est fournie.

Bien que l'on parle beaucoup de l'utilisation de l'IA par les ingénieurs pour accélérer le développement, l'IA peut aussi être le partenaire idéal pour résoudre des problèmes mineurs, mais urgents, de notre vie quotidienne.

« Une idée peut prendre forme, transcendant la taille de l'organisation et les compétences de l'individu. »
La plus grande récompense a été de pouvoir constater de visu la démocratisation de la production manufacturière.

Quant à la question cruciale de l'iPad de l'enfant… la vérité est qu'elle n'est toujours pas résolue.

Le système fonctionne parfaitement. Maintenant, c'est à moi, le parent, de le gérer. Je ferai de mon mieux !

Écrit par

Vivant à Fukushima, je lutte quotidiennement avec mon fils débordant d'énergie. Forte de ma sensibilité artistique acquise aux Beaux-Arts, je m'épanouis chaque jour dans mon travail de designer et de responsable des opérations. Mes atouts résident dans l'adaptabilité et la réactivité que j'ai développées grâce à mon rôle de mère.

Oga

Concepteur / Responsable des opérations

Consultez l'article de ce membre du personnel

Nous sommes fiers de la fiabilité de notre équipe et de notre réactivité.

Chez Liberogic, notre personnel expérimenté fait activement avancer les projets, ce qui explique pourquoi nous sommes très appréciés de nos clients.
Nous veillons à ce que les chefs de projet et les directeurs soient correctement désignés afin de garantir le bon déroulement de l'ensemble du projet. Nous prévenons les dépassements de coûts liés aux engagements initiaux et allouons les ressources aux personnes compétentes aux postes appropriés. Notre capacité à appréhender rapidement les enjeux du projet, à établir et à soumettre des devis est reconnue.

Veuillez noter que nous ne participons pas activement à des travaux sur site de type SES.

Nous prenons en charge la quasi-totalité des principaux outils de gestion de projet et de messagerie instantanée, notamment Slack, Teams, Redmine, Backlog, Asana, Jira, Notion, Google Workspace, Zoom et Webex.

Veuillez nous contacter pour toute question relative au site web.

Étude de cas