web_led.py
Un servidor Flask minimo expone /on y /off para controlar un LED en GPIO17 desde cualquier navegador de la red. Con la placa en Wi-Fi (USB-C 5 V/3 A obligatoire pour les deux ports USB 3 ; Wi-Fi 5 GHz, BT 5.0), la IP sale con hostname -I. Escucha en 0.0.0.0:8000; nunca exponga la placa a Internet.
Hardware
Una Raspberry Pi 4 Model B (BCM2711 quad-core a 1,5 GHz, USB-C de 5 V/3 A, doble micro-HDMI, Wi-Fi 5 GHz, GPIO de 40 pines). LED + resistencia de 330 ohmios, red local (Ethernet, Wi-Fi o dongle USB segun modelo).
Cableado
LED en GPIO17 (pin 11) con resistencia a GND. Nada mas aparte de la red.
Funcionamiento
Cada URL es una ruta Flask: la vista llama a led.on/off y vuelve a renderizar con led.value. El servidor de un hilo basta para una demo.
Ejecución
Copia el script en la placa (scp) y ejecútalo con python3 (o bash). Raspberry Pi OS Bookworm incluye gpiozero; si no, sudo apt install python3-gpiozero. Usa una fuente USB-C de 5 V/3 A para evitar recortes por bajo voltaje.
Variantes
Botones radio para varios GPIO; unidad systemd como servicio; flask-login antes de exponer en red. Use la fuente oficial USB-C de 5 V/3 A; si no, los puertos USB 3 quedan limitados.
web_led.py
# web_led.py — page web locale pour allumer/eteindre une LED (Flask).
# Deps: sudo apt install python3-flask python3-gpiozero
from flask import Flask
from gpiozero import LED
app = Flask(__name__)
led = LED(17)
@app.route("/")
def index():
etat = "allumee" if led.value else "eteinte"
return (f"<h1>LED {etat}</h1>"
'<p><a href="/on">Allumer</a> | <a href="/off">Eteindre</a></p>')
@app.route("/on")
def on():
led.on()
return index()
@app.route("/off")
def off():
led.off()
return index()
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8000)