WelcomeHere.ro
NIVEL: INTERMEDIAR

Proiect: Server Web cu Python (Flask)

Transformă-ți Raspberry Pi-ul într-un server web! Vom folosi Flask, un micro-framework popular pentru Python, pentru a crea o pagină web simplă care poate controla un LED conectat la pinii GPIO.

Componente Necesare

  • 1x Placă Raspberry Pi (cu OS și rețea configurată)
  • 1x LED și un rezistor de 330Ω
  • 1x Breadboard și fire de legătură

Pasul 1: Instalarea Flask

Flask este o bibliotecă Python care trebuie instalată. Deschide un terminal pe Raspberry Pi (direct sau prin SSH) și rulează următoarea comandă:

pip3 install Flask

Pasul 2: Circuitul și Codul Sursă

Circuitul este identic cu cel de la tutorialul "Controlul unui LED", cu LED-ul conectat la pinul GPIO 17. Apoi, creează un fișier numit `app.py` și copiază codul de mai jos.

from flask import Flask, render_template_string
import RPi.GPIO as GPIO

# Seteaza pinul LED-ului
LED_PIN = 17

# Initializare GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(LED_PIN, GPIO.OUT)

# Creeaza aplicatia Flask
app = Flask(__name__)

# Defineste structura paginii web intr-un string
# Aceasta pagina va contine butoane pentru a aprinde si stinge LED-ul
TEMPLATE = """

    
        Control LED
        
    
    
        

Control LED GPIO

Stare Curenta: {{led_status}}

""" # Defineste "ruta" principala a site-ului @app.route("/") def home(): # Verifica starea curenta a LED-ului led_state = GPIO.input(LED_PIN) led_status_str = "Aprins" if led_state else "Stins" # Trimite pagina web catre browser, inlocuind placeholder-ul {{led_status}} return render_template_string(TEMPLATE, led_status=led_status_str) # Defineste ruta pentru a aprinde LED-ul @app.route("/led/on") def led_on(): GPIO.output(LED_PIN, GPIO.HIGH) return home() # Reincarca pagina principala # Defineste ruta pentru a stinge LED-ul @app.route("/led/off") def led_off(): GPIO.output(LED_PIN, GPIO.LOW) return home() # Reincarca pagina principala # Porneste serverul web if __name__ == "__main__": # 'host="0.0.0.0"' face serverul vizibil in reteaua locala app.run(host="0.0.0.0", port=5000, debug=True)

Pasul 3: Rularea Serverului

Găsește adresa IP a Raspberry Pi-ului cu comanda `hostname -I`. Apoi, pornește serverul din terminal:

python3 app.py

Acum, de pe orice dispozitiv din aceeași rețea, deschide un browser și accesează adresa `http://ADRESA_IP_A_PI-ULUI:5000`. Vei vedea o pagină web simplă cu butoane care pot controla LED-ul în timp real!