Benutzer-Werkzeuge

Webseiten-Werkzeuge


projekt:python_erste_skripte

Dies ist eine alte Version des Dokuments!


☚ zurück

Raspberry-Pi-Kursprojekt: GPIO-App mit wachsender Architektur

  • erst reines Python
  • dann Dauerprozess
  • dann Web-API
  • dann Apache davor
  • EIN Projekt, keine Neuentwicklung

ENV: gpio_projects Projektpfad: ~/devel/gpio_projects

PHASE 1 – Reines Python + GPIO

0) System vorbereiten

sudo apt update
sudo apt install -y python3 python3-pip python3-venv

1) Projektordner anlegen

mkdir -p ~/devel/gpio_projects
cd ~/devel/gpio_projects

2) Virtuelle Umgebung anlegen (NAME: gpio_projects)

python3 -m venv gpio_projects
source gpio_projects/bin/activate
 
pip install RPi.GPIO

3) Projektstruktur Phase 1

gpio_projects/
 ├── gpio_hw.py
 ├── logic.py
 ├── main.py
 └── gpio_projects/        # ENV

(gpio_env) pi@raspi88:~/devel/gpio_projects $ tree -L 1   
.
├── gpio_env
├── gpio_hw.py
├── logic.py
└── main.py



4) gpio_hw.py

gpio_hw.py
import RPi.GPIO as GPIO
 
PIN = 17
 
GPIO.setmode(GPIO.BCM)
GPIO.setup(PIN, GPIO.OUT)
 
def on():
    GPIO.output(PIN, GPIO.HIGH)
 
def off():
    GPIO.output(PIN, GPIO.LOW)
 
def status():
    return GPIO.input(PIN)
 
def cleanup():
    GPIO.cleanup()

5) logic.py

logic.py
import gpio_hw
 
def turn_on():
    gpio_hw.on()
    return "on"
 
def turn_off():
    gpio_hw.off()
    return "off"
 
def get_status():
    return "on" if gpio_hw.status() else "off"

6) main.py

main.py
import logic
import gpio_hw
 
print("GPIO CLI gestartet (CTRL+C beendet)")
 
try:
    while True:
        cmd = input("on / off / status > ").strip()
        if cmd == "on":
            print(logic.turn_on())
        elif cmd == "off":
            print(logic.turn_off())
        elif cmd == "status":
            print(logic.get_status())
except KeyboardInterrupt:
    pass
finally:
    gpio_hw.cleanup()

7) Start Phase 1

cd ~/devel/gpio_projects
source gpio_projects/bin/activate
python3 main.py

PHASE 3 – Web später

pip install fastapi uvicorn

systemd später mit dieser ENV

ExecStart=/home/pi/devel/gpio_projects/gpio_projects/bin/uvicorn api:app --host 127.0.0.1 --port 8000

Ergebnis

  • ENV = gpio_projects
  • Projekt = ~/devel/gpio_projects
  • kein raspi_gpio_env mehr
  • konsistent für alle Phasen
projekt/python_erste_skripte.1770571689.txt.gz · Zuletzt geändert: von torsten.roehl