Topics

Je ne suis pas ingénieur, mais j'ai créé un système de gestion Wi-Fi pour enfants avec Claude Code et un Raspberry Pi

  • column

Bonjour ! Je suis Ogi, designer et responsable des opérations.
Je fais partie de l'entreprise depuis 2015, et je suis devenue une vétérane. Dans mon blog Yururoguh, je me fais passer pour une gyaru et j'écris souvent des articles dont l'utilité pour qui que ce soit reste un mystère.
Cette fois, je me suis motivée pour parler un peu plus sérieusement.

Pour commencer, je n'ai pratiquement aucune expérience professionnelle en tant qu'ingénieure.
Il m'arrivait de voir un terminal au travail, mais je me contentais de regarder défiler les logs. Taper moi-même des commandes pour créer quelque chose me semblait réservé à « ceux qui savent faire ».
Et pourtant, me voilà à construire la configuration réseau et à implémenter une application web sur un Raspberry Pi… Quand on y est obligé, on se surprend à pouvoir beaucoup de choses.

Tout est parti du problème de l'iPad de mes enfants

À la maison, mes enfants n'arrêtent pas de toucher à l'iPad. Si on les laisse faire, c'est sans fin.
J'ai donc voulu trouver une solution à ce problème en priorité.

C'est à ce moment-là que mon entreprise a lancé une consigne du type « Créez ce que vous voulez, comme un hackathon interne ».
Chez nous, c'est l'engouement total pour Claude Code. Tout le personnel utilise Claude comme partenaire, et l'entreprise ressemble à une véritable fête du développement. J'ai un abonnement à 25 $ par mois, mais certains collègues, plus aguerris, utilisent des forfaits bien plus chers. L'ambiance est à « on peut tout créer avec l'IA ».

« J'ai toujours voulu essayer un Raspberry Pi (la raison ? Ça a l'air cool, tout simplement) »
« Je veux résoudre le problème de l'iPad avec une approche d'ingénieur »
« Je veux sortir un livrable concret pour le hackathon »

C'est de la combinaison de ces trois envies qu'est né le projet « un système de gestion qui permet d'activer ou de désactiver le Wi-Fi des enfants d'une simple pression sur un bouton de smartphone ».

Je ne fais que parfois regarder le terminal, et je n'ai quasiment jamais configuré quoi que ce soit.
Pourtant, avec l'aide de Claude, en tâtonnant un peu dans tous les sens, j'ai réussi à aller jusqu'à construire cette « boîte magique » !

Étape 1 — Configuration du Raspberry Pi

Préparation avec Raspberry Pi Imager → Connexion SSH

Tout d'abord, on installe le système d'exploitation sur le Raspberry Pi 4. J'installe Raspberry Pi Imager (l'outil officiel de gravure) sur mon Mac, puis j'y écris un OS 64 bits sur une carte MicroSD. Dans les réglages de gravure, il est discrètement mais vraiment important d'activer SSH.

Une fois le Raspberry Pi relié au routeur par câble LAN et mis sous tension, il suffit de cette commande dans le terminal du Mac pour s'y connecter.

terminal (Mac)

ssh [email protected]

Dès que pi@raspberrypi:~ $ est apparu dans le terminal, j'ai été un peu ému. Je commence par mettre le système à jour.

sudo apt update && sudo apt upgrade -y

Étape 2 — Mise en place d'un point d'accès WiFi

Configuration de hostapd / dnsmasq / iptables

Pour faire fonctionner le Raspberry Pi comme « point d'accès WiFi », j'installe deux logiciels. hostapd émet le signal WiFi, et dnsmasq attribue des adresses IP aux appareils qui se connectent.

sudo apt install hostapd dnsmasq

Dans les fichiers de configuration, je renseigne le SSID (le nom du WiFi) et le mot de passe. Pour que ce soit facile à repérer, j'ai choisi « KidsWiFi ».

/etc/hostapd/hostapd.conf

interface=wlan0
driver=nl80211
ssid=KidsWiFi
hw_mode=g
channel=7
wpa=2
wpa_passphrase=(パスワード)
wpa_key_mgmt=WPA-PSK

Ensuite, indiquez la plage d'adresses IP à attribuer 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, configurez le transfert IP (IP forwarding) et le NAT pour que le Raspberry Pi puisse servir de relais vers Internet. Sans cette étape, même connecté au KidsWiFi, il n'est pas possible d'accéder à Internet.

# IPフォワーディングを永続化
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/routed-ap.conf

# NATの設定(eth0経由でインターネットに出られるようにする)
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Problème : à chaque redémarrage, wlan0 passait en DOWN. J'ai rédigé un fichier de service systemd afin que la configuration réseau s'exécute automatiquement au démarrage. C'est en demandant à Claude « Pourquoi ça ne se connecte encore pas ?! » que j'ai pu résoudre le problème.

Quand « KidsWiFi » est apparu dans la liste des réseaux Wi-Fi de mon smartphone et que la connexion à Internet a fonctionné, j'ai écrit dans le chat, sans réfléchir : « Professeur ! Ça marche ! » (oui, je l'ai vraiment tapé).

Étape 3 — Création de l'interface d'administration en application web

Mise en place d'une interface pilotable depuis un smartphone avec Python et Flask

Le point d'accès Wi-Fi étant prêt, passons à l'interface d'administration permettant d'activer ou de désactiver le Wi-Fi depuis un smartphone. Nous utilisons « Flask », un framework web Python, pour faire tourner un serveur web sur le Raspberry Pi. Le développement se fait d'abord en local sur un Mac, et une fois le fonctionnement vérifié, le code est transféré sur le Raspberry Pi.

Terminal (Mac) — Préparation de l'environnement de développement

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

En réalité, l'activation ou la désactivation du Wi-Fi repose sur le fait de « bloquer uniquement l'accès à Internet ». Le signal du KidsWiFi reste émis en permanence, et iptables, le pare-feu de Linux, permet de décider si les paquets destinés à Internet sont supprimés ou non. Traduit en code, c'est étonnamment simple.

app.py (extrait) — Cœur du contrôle du Wi-Fi

import subprocess

def enable_internet():
    # ブロックルールを削除 → インターネット解放
    subprocess.run([
        'sudo', 'iptables', '-D', 'FORWARD',
        '-i', 'wlan0', '-j', 'DROP'
    ], capture_output=True)

def disable_internet():
    # ブロックルールを追加 → インターネット遮断
    subprocess.run([
        'sudo', 'iptables', '-I', 'FORWARD',
        '-i', 'wlan0', '-j', 'DROP'
    ], capture_output=True)

Il suffit de ça pour couper internet. Une seule ligne de commande suffit à bloquer l'iPad de mon enfant. J'ai eu l'impression de m'être donné un pouvoir assez impressionnant (même si je ne le maîtrise pas encore très bien).

L'écran du système a été conçu séparément pour les enfants et pour les parents.
Sur l'écran destiné aux enfants, on trouve même une fonction roulette !
Une limite de temps imposée unilatéralement ne plaît à personne, pas même aux enfants. Alors je me suis dit qu'ils accepteraient peut-être mieux un résultat tiré par eux-mêmes à la roulette.
L'idée est de transformer le temps d'Internet en jeu : « Combien de minutes de Wi-Fi aujourd'hui ? » Ils vivent ainsi la négociation souvent stérile sur « l'heure d'arrêter l'iPad » comme un petit jeu plus agréable.

  • Écran enfant
    → La roulette tire au sort 30 min, 45 min ou 1 h.
    → Compte à rebours du temps restant
    → Une fois le temps écoulé, 1 h de pause obligatoire
    → Durée d'utilisation cumulée
    → Nombre de tours de roulette restants affiché
  • Tableau de bord parent
    → Protection par mot de passe
    → Coupure d'urgence du Wi-Fi
    → Mode devoirs (blocage complet)
    → Nombre maximal de tours de roulette
    → Durée de coupure forcée
    → Journal de l'historique d'utilisation

Pendant le développement, j'ai rencontré le problème « iptables n'existe pas sur Mac, donc impossible de tester ». J'ai donc créé une fonction factice pour Mac (qui se contente d'afficher un print) afin de pouvoir vérifier le fonctionnement.
Tous ces moments « bloqué, que faire ? » ont été traités en consultant Claude.

Pour être honnête, étant designer de formation, j'attendais la sortie en me disant que j'allais devoir moi-même mettre en forme l'interface. Or le résultat est sorti d'une grande netteté, ce qui m'a un peu laissé sans voix. Je n'ai quasiment pas eu de retouches à faire.
C'est un peu frustrant, et en même temps très satisfaisant.

Étape 4 — Déploiement sur le Raspberry Pi et démarrage automatique

Transfert de fichiers via SCP → Enregistrement du service systemd

Je transfère les fichiers générés sur Mac vers le Raspberry Pi. Une seule commande suffit avec scp.

Terminal (Mac) — Transfert vers le Raspberry Pi

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

Redémarrer Flask manuellement à chaque démarrage étant pénible, j'ai écrit un fichier de service systemd pour le lancer automatiquement. L'objectif : tout fonctionne dès que l'appareil est allumé.

/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
# サービスを有効化して起動
sudo systemctl enable wifi-manager
sudo systemctl start wifi-manager

Et voilà, tout fonctionne dès la mise sous tension. En accédant à http://192.168.4.1:5000 depuis le navigateur de mon smartphone, l'écran de la roulette s'affiche. Waouh, ça a vraiment marché !

Ce que j'ai retenu de cette expérience

Sans être ingénieur, si j'ai pu mener à bien la configuration réseau jusqu'au Python, c'est sans aucun doute grâce au
« dialogue » que j'ai pu entretenir avec Claude tout au long du processus. Quand je bloque, je lui transmets simplement le message d'erreur tel quel. Si je demande « Quelle est la prochaine étape ? », il me détaille la marche à suivre. Si je demande « Pourquoi ça ne marche pas ? », il m'explique les choses pas à pas.

On parle souvent de « développeurs qui créent en un temps record grâce à l'IA », mais pour résoudre les petits problèmes du quotidien, parfois très pressants, l'IA peut aussi devenir un allié redoutable.

« Une idée peut prendre forme, quelle que soit la taille de l'organisation ou le niveau de compétence de la personne. »
Ressentir concrètement cette démocratisation de la création a été, plus que tout, le plus grand enseignement de cette expérience.

Quant au problème de l'iPad de mon enfant, il n'est, en fait, pas encore résolu...

Le système fonctionne parfaitement. Il ne reste plus qu'à voir si, en tant que parent, je saurai bien le gérer au quotidien. Je vais faire de mon mieux !

Auteur de cet article

Basé à Fukushima, je livre chaque jour une bataille acharnée avec mon fils, qui déborde d'énergie. Designer et responsable des opérations, je conjugue sensibilité acquise aux Beaux-Arts et sens de l'organisation. Mes atouts : une grande capacité d'adaptation et de réaction, forgée par l'éducation de mon enfant.

Oga

Designer / responsable des opérations

Voir les articles de cet auteur

Une équipe fiable et une réactivité rapide, qui font notre fierté

Chez Liberogic, nos collaborateurs expérimentés pilotent activement les projets, ce qui vaut à l'entreprise une grande satisfaction de la part de ses clients.
Nous veillons à désigner des chefs de projet et des directeurs de projet qualifiés afin de faire avancer l'ensemble du projet en douceur. Grâce à un modèle d'allocation des ressources au plus juste, évitant une hausse inutile des coûts liée à un engagement à temps plein, nous sommes également reconnus pour la rapidité avec laquelle nous comprenons les besoins et établissons/soumettons les devis.

Remarque : Liberogic ne propose pas de prestations de type SES (mise à disposition de personnel sur site) et vous remercie de bien vouloir en tenir compte.

Nous prenons en charge pratiquement tous les principaux outils de gestion de projet et de messagerie, notamment Slack, Teams, Redmine, Backlog, Asana, Jira, Notion, Google Workspace, Zoom, Webex, etc.

Contactez-nous pour toute question sur vos problématiques Web.

Études de cas