PR.FT5_15·Kit RPi›Dashboard Web FlaskPróximo →
Multi-componente · Flask + GPIO + HTML

🌐 Dashboard Web Flask

Criar um servidor web local no RPi para monitorizar sensores e controlar GPIO a partir de qualquer browser na rede local — telemóvel, tablet ou computador.

Instalar Flask

Terminal
pip3 install flask

Servidor Flask com controlo de LED

Python · app.py
from flask import Flask, render_template_string, redirect
import RPi.GPIO as GPIO

app = Flask(__name__)
LED = 18
GPIO.setmode(GPIO.BCM)
GPIO.setup(LED, GPIO.OUT)
GPIO.output(LED, GPIO.LOW)

HTML = """
<!DOCTYPE html><html><head>
<meta name="viewport" content="width=device-width,initial-scale=1">
<style>body{font-family:sans-serif;text-align:center;padding:2rem}
  .btn{padding:1rem 2rem;font-size:1.2rem;border:none;border-radius:8px;cursor:pointer}
  .on{background:#c51a4a;color:white}.off{background:#1db954;color:white}
</style></head>
<body><h1>Dashboard RPi</h1>
<p>LED está: <strong>{{ estado }}</strong></p>
<a href="/led/on"><button class="btn on">Ligar LED</button></a>
<a href="/led/off"><button class="btn off">Apagar LED</button></a>
</body></html>
"""

@app.route('/')
def index():
    estado = "LIGADO" if GPIO.input(LED) else "APAGADO"
    return render_template_string(HTML, estado=estado)

@app.route('/led/<acao>')
def controlar(acao):
    GPIO.output(LED, GPIO.HIGH if acao == 'on' else GPIO.LOW)
    return redirect('/')

if __name__ == '__main__':
    print("Acede em http://<IP_DO_RPI>:5000")
    app.run(host='0.0.0.0', port=5000, debug=False)
✅
Para saber o IP do teu RPi, escreve hostname -I no terminal. Abre o browser no telemóvel (na mesma rede WiFi) e vai a http://<IP>:5000.