13 changed files with 231 additions and 4 deletions
@ -0,0 +1,3 @@ |
|||
./__pycache__ |
|||
./network/__pycache__/* |
|||
main.py |
@ -0,0 +1 @@ |
|||
3.11 |
@ -0,0 +1,33 @@ |
|||
#! /usr/bin/python3 |
|||
import lgpio |
|||
from time import sleep |
|||
import logging |
|||
|
|||
|
|||
__PIN__ = 23 # GPIO Pin, für den Taster |
|||
__WAIT__ = 0.5 # Warten für 0,5 Sekunden |
|||
logging.basicConfig( format='%(asctime)-15s [%(levelname)s] %(funcName)s: %(message)s', level=logging.DEBUG) |
|||
|
|||
if __name__ =='__main__': |
|||
h = lgpio.gpiochip_open(0) |
|||
lgpio.gpio_claim_input(h, __PIN__) |
|||
|
|||
pressed = False |
|||
|
|||
logging.debug('Start der Schleife.') |
|||
try: |
|||
while True: |
|||
pressed = lgpio.gpio_read(h, __PIN__) != 0 |
|||
if not pressed: |
|||
logging.info('Button wurde gedrückt.') |
|||
pressed = True |
|||
else: |
|||
logging.debug('Button nicht gedrückt.') |
|||
pressed = False |
|||
|
|||
sleep(__WAIT__) |
|||
except KeyboardInterrupt: |
|||
logging.debug('Abbruch durch Benutzer.') |
|||
finally: |
|||
pass |
|||
|
@ -0,0 +1,48 @@ |
|||
#! /usr/bin/python3 |
|||
|
|||
import lgpio |
|||
from time import sleep |
|||
|
|||
__PIN__ = 17 # GPIO Pin, den wir nutzen (BCM Nummerierung) |
|||
__WAIT__ = 0.5 # Warten für 0,5 Sekunden |
|||
|
|||
# Handle auf den GPIO-Chip (meist 0 für /dev/gpiochip0) |
|||
h = lgpio.gpiochip_open(0) |
|||
|
|||
# Pin als Output setzen |
|||
lgpio.gpio_claim_output(h, __PIN__, 0) |
|||
|
|||
#Zustand der LED setzen |
|||
def setLED(state): |
|||
lgpio.gpio_write(h, __PIN__, state) |
|||
|
|||
|
|||
# Dauerschleife, die die LED im Wechsel ein- und ausschaltet. |
|||
# Wird gestoppt mit CTRL-C |
|||
def blinkloop(): |
|||
try: |
|||
while True: |
|||
|
|||
# Pin auf HIGH setzen schaltet die LED ein |
|||
setLED(1) |
|||
print('LED ein') |
|||
|
|||
sleep(__WAIT__) |
|||
|
|||
# Pin auf LOW setzen schaltet die LED aus |
|||
setLED(0) |
|||
print('LED aus') |
|||
sleep(__WAIT__) |
|||
except KeyboardInterrupt: |
|||
pass |
|||
finally: |
|||
# Zum schluss immer die LED ausschalten. |
|||
setLED(0) |
|||
|
|||
if __name__ =='__main__': |
|||
blinkloop() |
|||
lgpio.gpiochip_close(h) # Handle schließen |
|||
|
|||
|
|||
|
|||
|
@ -0,0 +1,69 @@ |
|||
#! /usr/bin/python3 |
|||
from http.server import SimpleHTTPRequestHandler |
|||
import socketserver |
|||
import logging |
|||
from led import setLED |
|||
|
|||
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 |
|||
# aufgebaut! Deswegen benutzen wir hier setup() statt __init__() |
|||
class LEDHttpRequestHandler(SimpleHTTPRequestHandler): |
|||
def setup(self): |
|||
logging.debug('setting up Handler') |
|||
self.ledstate = False |
|||
super().setup() |
|||
|
|||
def do_GET(self): |
|||
logging.debug(f'path= {self.path}') |
|||
logging.debug('GET: empfangen') |
|||
self.send_response(200) |
|||
self.send_header('Content-Type:','text/html') |
|||
# Ende der Header markieren, dass ist wichtig, sonst kommt der Response nicht zurück! |
|||
self.end_headers() |
|||
|
|||
#Wenn im Requestpath 'led='on'enthalten ist, schalten wir die LED ein. Bei off aus |
|||
if '?led=' in self.path: |
|||
if 'on' in self.path: |
|||
logging.debug('schalte LED ein') |
|||
self.ledstate = True |
|||
setLED(self.ledstate) |
|||
elif 'off' in self.path: |
|||
logging.debug('schalte LED aus') |
|||
self.ledstate = False |
|||
setLED(self.ledstate) |
|||
|
|||
logging.debug(f'ledstate={self.ledstate}') |
|||
|
|||
response = responsehtml.replace('$ledstate_str',('aus','an')[self.ledstate]) |
|||
|
|||
self.wfile.write(response.encode()) |
|||
|
|||
|
|||
|
|||
class http_server: |
|||
def __init__(self): |
|||
def handler(*args): |
|||
myHandler(*args) |
|||
server = HTTPServer(('', 8080), handler) |
|||
|
|||
|
|||
if __name__ == '__main__': |
|||
logging.debug('MAIN: start') |
|||
setLED(False) # Beim Start LED ausschalten |
|||
#Request-Handler aufbauen |
|||
handler = LEDHttpRequestHandler |
|||
handler.ledstate = False |
|||
#Socketserver mit unserem Handler starten |
|||
with socketserver.TCPServer(('',8080),handler) as httpd: |
|||
logging.info('SERVER: start') |
|||
try: |
|||
#Server läuft bis CTRL-C gedrückt wird. |
|||
httpd.serve_forever() |
|||
except KeyboardInterrupt: |
|||
pass |
|||
finally: |
|||
setLED(False) |
|||
|
|||
|
@ -0,0 +1,6 @@ |
|||
def main(): |
|||
print("Hello from gpio-rpi5!") |
|||
|
|||
|
|||
if __name__ == "__main__": |
|||
main() |
@ -0,0 +1,3 @@ |
|||
from .const import __ADDRESSLOCAL__ |
|||
#from .const import __ADDRESSREMOTE__ |
|||
|
@ -0,0 +1,10 @@ |
|||
def receive(conn): |
|||
msg = conn.recv(64).decode('utf-8') |
|||
|
|||
return msg |
|||
|
|||
def send(client, msg): |
|||
message = msg.encode('utf-8') |
|||
client.send(message) |
|||
|
|||
|
@ -0,0 +1,19 @@ |
|||
#network/const.py |
|||
|
|||
import socket |
|||
|
|||
# TCP Port |
|||
__PORT__ = 6554 |
|||
|
|||
#Server-IP |
|||
# für den Server (immer localhost) |
|||
__SERVERLOCAL__ = socket.gethostbyname(socket.gethostname()) |
|||
|
|||
#für Server auf einem Remote-Pi |
|||
#__SERVERREMOTE__ = socket.gethostbyname('gabbo') |
|||
|
|||
# Server-Adresse (IP,Port) |
|||
#lokal |
|||
__ADDRESSLOCAL__ = (__SERVERLOCAL__,__PORT__) |
|||
#remote |
|||
#__ADDRESSREMOTE__ = (__SERVERREMOTE__,__PORT__) |
@ -0,0 +1,9 @@ |
|||
[project] |
|||
name = "gpio-rpi5" |
|||
version = "0.1.0" |
|||
description = "Add your description here" |
|||
readme = "README.md" |
|||
requires-python = ">=3.11" |
|||
dependencies = [ |
|||
"lgpio>=0.2.2.0", |
|||
] |
@ -0,0 +1,28 @@ |
|||
version = 1 |
|||
revision = 2 |
|||
requires-python = ">=3.11" |
|||
|
|||
[[package]] |
|||
name = "gpio-rpi5" |
|||
version = "0.1.0" |
|||
source = { virtual = "." } |
|||
dependencies = [ |
|||
{ name = "lgpio" }, |
|||
] |
|||
|
|||
[package.metadata] |
|||
requires-dist = [{ name = "lgpio", specifier = ">=0.2.2.0" }] |
|||
|
|||
[[package]] |
|||
name = "lgpio" |
|||
version = "0.2.2.0" |
|||
source = { registry = "https://pypi.org/simple" } |
|||
sdist = { url = "https://files.pythonhosted.org/packages/56/33/26ec2e8049eaa2f077bf23a12dc61ca559fbfa7bea0516bf263d657ae275/lgpio-0.2.2.0.tar.gz", hash = "sha256:11372e653b200f76a0b3ef8a23a0735c85ec678a9f8550b9893151ed0f863fff", size = 90087, upload-time = "2024-03-29T21:59:55.901Z" } |
|||
wheels = [ |
|||
{ url = "https://files.pythonhosted.org/packages/78/4e/5721ae44b29e4fe9175f68c881694e3713066590739a7c87f8cee2835c25/lgpio-0.2.2.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:5b3c403e1fba9c17d178f1bde102726c548fc5c4fc1ccf5ec3e18f3c08e07e04", size = 382992, upload-time = "2024-03-29T22:00:45.039Z" }, |
|||
{ url = "https://files.pythonhosted.org/packages/88/53/e57a22fe815fc68d0991655c1105b8ed872a68491d32e4e0e7d10ffb5c4d/lgpio-0.2.2.0-cp311-cp311-manylinux_2_34_aarch64.whl", hash = "sha256:a2f71fb95b149d8ac82c7c6bae70f054f6dc42a006ad35c90c7d8e54921fbcf4", size = 364848, upload-time = "2024-04-01T22:49:45.889Z" }, |
|||
{ url = "https://files.pythonhosted.org/packages/a4/71/11f4e3d76400e4ca43f9f9b014f5a86d9a265340c0bea45cce037277eb34/lgpio-0.2.2.0-cp311-cp311-manylinux_2_34_x86_64.whl", hash = "sha256:e9f4f3915abe5ae0ffdb4b96f485076d80a663876d839e2d3fd9218a71b9873e", size = 370183, upload-time = "2024-04-13T14:08:14.139Z" }, |
|||
{ url = "https://files.pythonhosted.org/packages/fe/73/e56c9afb845df53492d42bdea01df9895272bccfdd5128f34719c3a07990/lgpio-0.2.2.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:6c65ac42e878764d04a71ed12fe6d46089b36e9e8127722bf29bb2e4bc91de22", size = 383956, upload-time = "2024-03-29T22:00:47.315Z" }, |
|||
{ url = "https://files.pythonhosted.org/packages/3b/1c/becd00f66d2c65feed9a668ff9d91732394cb6baba7bec505d55de0e30c9/lgpio-0.2.2.0-cp312-cp312-manylinux_2_34_aarch64.whl", hash = "sha256:d907db79292c721c605af08187385ddb3b7af09907e1ffca56cf0cd6558ace0a", size = 366058, upload-time = "2024-04-01T22:49:47.615Z" }, |
|||
{ url = "https://files.pythonhosted.org/packages/4c/7a/e3b4e5225c9792c4092b2cc07504746acbe62d0a8e4cb023bdf65f6430cf/lgpio-0.2.2.0-cp312-cp312-manylinux_2_34_x86_64.whl", hash = "sha256:2aadff092f642fcdada8457c158f87259dfda3a89ec19bae0b99ff22b34aac4b", size = 372103, upload-time = "2024-04-13T14:08:16.351Z" }, |
|||
] |
Loading…
Reference in new issue