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 pi@raspberrypi.local
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 pi@raspberrypi.local:~/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 !
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