REST-API mit Python und dem hug Framework für Blinkt LED Leiste

  • Neulich habe ich für mich ein kleines Projekt mit dem Fokus auf Software fertiggestellt. Primäres Ziel war es, mal etwas mit dem hug Webframework zumachen.

    Nachdem mir eingefallen war, dass ich noch eine Blinkt LED Leiste von Pimoroni habe (gut, genau genommen habe ich sie zufällig wieder gefunden...) habe ich zur Ansteuerung dieser eine HTTP Rest-API mit Hilfe von hug erstellt.

    Der hardwareseitige Teil ist unspektakulär, weil da nur ein Raspi Zero WH in Kombination mit der auf die GPIO Pins aufgesteckte Blinkt Leiste zum Einsatz kommt.

    Sotwareseitig kommen Raspberry Pi OS Bookworm (geht auch auch mit älteren Raspberry Pi OS Versionen), Python, das Blink Python Modul, waitress als WSGI Applikationsserver und eine systemd Service Unit zum automatischen Starten zum Einsatz. Erstellt wurde das Programm in einem Python venv, in dem hug und waitress installiert sind, das Blinkt Modul ist global über die Paketquellen von Raspberry Pi OS installiert.

    Der Code ist wie folgt:

    Die systemd Service Unit zum Starten sieht wie folgt aus, als WSGI Applikationsserver kommt wie gesagt waitress zum Einsatz:

    Wer sich für mehr Details interessiert: im Blogeintrag https://noisefloor-net.blogspot.com/2023/11/rest-a…nd-hug-fur.html gibt es mehr Details zum Programm zur Installation der Software und zu hug.

    Gruß, noisefloor

  • REST-API mit Python und dem hug Framework für Blinkt LED Leiste? Schau mal ob du hier fündig wirst!

  • Hallo,

    ich meine Zeile 64:

    Code
    if not all([True if (color.strip() in ALL_COLORS.keys()) else False for color in colors]):

    könnte man einfacher darstellen:

    Code
    if not all(color.strip() in ALL_COLORS for color in colors):

    color.strip() in ALL_COLORS.keys() gibt schon 'True' oder 'False' zurück, dann kann man das gleich in die Liste schreiben lassen. Wenn man über dasd Wörterbuch ohne Angabe iteriert, müsste man schon den Schlüssel bekommen. Eigentlich braucht man die Liste gar nicht und kann das 'all' gleich so mitgeben.

    Sonst ist mir nur noch ne Kleinigkeit aufgefallen, man schreibt ja eher if color not in... anstatt if not color in....

    Danke für die Vorstellung des Projekts, ich kannt 'hug' gar nicht. :)

    Grüße

    Dennis

    🎧 The music, if you can call it that, physically assaults anyone dumb enough to listen 🎧

  • Darf ich fragen, warum hug und nicht Starlette, FastAPI oder Flask? Django (zu bloated) schließe ich hier mal aus

    Weil ich hug mal ausprobieren wollte. Das ist alles. Es gibt keine rationalen Grund für hug. Das ganz ist ja sehr simple, das geht genau so gut auch mit Flask oder Bottle oder ... Ich hatte ursprünglich auch mal vor, dass zusätzlich auch testweise mit FastAPI zu machen - habe ich aber verworfen. Dafür ist das ganze zu simple und der Overhead bei FastAPI für diesen Simplizität zu hoch.

    Der Entwickler von hug hat - meine ich zumindest - mal gesagt, dass er hug nicht entwickelt hätte, wenn es FastAPI schon gegeben hätte. Gab's aber nicht, als er mit FastAPI angefangen hat.

    Dennis89 : Danke für den Hinweis. Baue ich mal so ein.

    Gruß, noisefloor

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!