|
|
@ -1,13 +1,28 @@ |
|
|
|
# ledserver.py mit lgpio für den Raspberry Pi 5 |
|
|
|
#! /usr/bin/python3 |
|
|
|
from time import sleep |
|
|
|
|
|
|
|
__PIN__ = 17 # GPIO Pin, den wir nutzen (BCM Nummerierung) |
|
|
|
__WAIT__ = 0.5 # Warten für 0,5 Sekunden |
|
|
|
|
|
|
|
from http.server import SimpleHTTPRequestHandler |
|
|
|
import socketserver |
|
|
|
import lgpio |
|
|
|
import logging |
|
|
|
from led import setLED |
|
|
|
|
|
|
|
# Handle auf den GPIO-Chip (meist 0 für /dev/gpiochip0) |
|
|
|
handle = lgpio.gpiochip_open(0) |
|
|
|
|
|
|
|
# Pin als Output setzen |
|
|
|
lgpio.gpio_claim_output(handle, __PIN__, 0) |
|
|
|
|
|
|
|
responsehtml = '<html><body> <h3>LED-Server</h3><p> LED ist $ledstate_str</p></body></html>' |
|
|
|
logging.basicConfig( format='%(asctime)-15s [%(levelname)s] %(funcName)s: %(message)s', level=logging.DEBUG) |
|
|
|
|
|
|
|
# Da http ein stateless Protokoll ist, wird der Handler bei jedem Request neu |
|
|
|
def setLED(state): |
|
|
|
lgpio.gpio_write(handle, __PIN__, state) |
|
|
|
|
|
|
|
# aufgebaut! Deswegen benutzen wir hier setup() statt __init__() |
|
|
|
class LEDHttpRequestHandler(SimpleHTTPRequestHandler): |
|
|
|
def setup(self): |
|
|
@ -15,6 +30,7 @@ class LEDHttpRequestHandler(SimpleHTTPRequestHandler): |
|
|
|
self.ledstate = False |
|
|
|
super().setup() |
|
|
|
|
|
|
|
|
|
|
|
def do_GET(self): |
|
|
|
logging.debug(f'path= {self.path}') |
|
|
|
logging.debug('GET: empfangen') |
|
|
@ -65,5 +81,6 @@ if __name__ == '__main__': |
|
|
|
pass |
|
|
|
finally: |
|
|
|
setLED(False) |
|
|
|
lgpio.gpiochip_close(handle) # Handle schließen |
|
|
|
|
|
|
|
|
|
|
|