Wert von Datenbank abfragen und LED einschalten

  • Hallo zusammen,

    ich möchte gerne alle 10 Minuten in einer Datenbank auf dem Raspberry einen Wert abfragen. Das mache ich wieder über systemd, also in /etc/systemd/system einen neuen Dienst mit folgendem Inhalt erstellet:

    Wenn dann dieser Wert einen bestimmten vordefinierten Wert übersteigt, dann soll eine LED angehen, angeschlossen am GPIO17. Ich bin jetzt nur auf die Lösung gekommen, die funktioniert

    Inhalt Datei wkz.py:

    Funktioniert auch soweit, nur wenn ich mir den Code anschaue, den Dennis89 mir hier gemacht hat, ist meine Lösung sicher nicht die Beste.... ;)

    Wäre super, wenn mir jemand einen tipp geben könnte, wie ich meinen Code verbessern könnte.

    Danke

    Gruß

    Tamia

  • Hallo,

    Wäre super, wenn mir jemand einen tipp geben könnte, wie ich meinen Code verbessern könnte.

    gut das du den alten Thread verlinkt hast. Wenn ich dir zu deinem Code Tipps schreibe, dann würde ich vermutlich so etwas ähnliches schreiben wie hier.

    Kannst du von den Tipps irgendetwas umsetzen bzw. was genau kannst du davon nicht umsetzen und was soll man detaillierter erklären?

    Grüße

    Dennis

    🎧 With the music execution and the talk of revolution, it bleeds in me and it goes 🎧

  • Warum machst du es so aufwändig über einen Service? Würde es nicht genügen, das Skript ganz ohne den Schleifenkram (nur Datenbank öffnen, Wert lesen, Datenbank schließen, LED schalten, fertig) einfach mit Cron alle 10 Minuten aufzurufen?

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Kannst du von den Tipps irgendetwas umsetzen bzw. was genau kannst du davon nicht umsetzen und was soll man detaillierter erklären?

    Hab mich jetzt nochmal hingesetzt und probiert, folgendes ist dabei rausgekommen:

    Es funktioniert auch. Die Frage ist jetzt Dennis89 , passt das so auch vom Aufbau her?

    Warum machst du es so aufwändig über einen Service? Würde es nicht genügen, das Skript ganz ohne den Schleifenkram (nur Datenbank öffnen, Wert lesen, Datenbank schließen, LED schalten, fertig) einfach mit Cron alle 10 Minuten aufzurufen?

    Weil irgendwann mal, bei einer anderen Frage von mir gesagt wurde, dass es über einen Service besser wäre?!

    Gruß

    Tamia

  • Hallo,

    so wie ich das am Handy sehe läuft der Code sicherlich ohne Fehlermeldung, aber es wird such sonst nichts passieren, ohne einen Funktionsaufruf.

    Led ist keine Konstante, die gehört in die ‚main‘ und wird dann übergeben, wenn eine Funktion aufgerufen wird, die die Led benötigt.

    Der Pin an den die Led angeschlossen ist, wäre eine Konstante.

    Wieso die 5 Sekunde Pause am Anfang?

    Und wieso ‚pause()‘?

    Grüße

    Dennis

    🎧 With the music execution and the talk of revolution, it bleeds in me and it goes 🎧

  • tamiasunchild: `closing` wird importiert, aber nicht verwendet, stattdessen wird die Funktionalität mit `contextmanager` selbst gebastelt.

    `service` wird erst an das Ergebnis von `fetchone()` gebunden, und dann an eine ganze Zahl. Namen sollten im gleichen Namensraum nur an Werte vom gleichen (Duck-)Typ gebunden werden, sonst ist das verwirrend für den Leser.

    Bei einem SELECT macht ein `rollback()` nicht wirklich Sinn, weil es da ja gar keine Veränderungen gibt, die man rückgängig machen kann/muss.

    Zwischenstand (ungetestet):

    “Dawn, n.: The time when men of reason go to bed.” — Ambrose Bierce, “The Devil's Dictionary”

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!