Zeitschaltuhr für Relais mithilfe von Python

Registriere dich jetzt, um exklusive Vorteile zu genießen! Als registriertes Mitglied kannst du Inhalte herunterladen und profitierst von einem werbefreien Forum.
Mach mit und werde Teil unserer Community!
  • Hallo zusammen,


    ich bin noch neu im Forum und hoffe, dass ich mit dem neu erstellen Thema erstmal alles richtig mache.:thumbup:


    Nun zu meinem Projekt:

    Ich würde gerne mithilfe von Python mein 8-fach Relais Modul in eine Art Zeitschaltuhr verwandeln.

    Ziel ist es, dass später eine Dosierpumpe (am Relais angeschlossen) täglich um z.B. 18:00 Uhr für 5-10 Sekunden eingeschaltet wird und Pflanzen Dünger in das Aquarium pumpt.


    Hier im Forum habe ich schon einige Themen/Lösungen gefunden jedoch funktionieren die Python Skripte bei mir nicht oder laufen nicht durch. Oder ich habe irgendetwas falsch gemacht.

    Thema: Zeitschaltuhr für Relais

    Vorgeschlagenes Skript: http://codepad.org/OdUQuH1i


    Auch dieses wirklich kurze Skript habe ich nicht zum laufen bekommen: https://www.explainingcomputer…_code/Relay_Timer_Test.py

    Beim abbrechen erhalte ich folgende Meldung:

    Traceback (most recent call last):

    File "timer-r1.py", line 14, in <module>

    now = datetime.now().time()

    KeyboardInterrupt

    pi@raspberrypi:~/Downloads $



    Ich habe die Pins/GPIOs entsprechend ausgetauscht, jedoch passiert nichts.


    Relais - PIN / GPIO Belegung:

    R1 - 3 / 2

    R2 - 5 / 3

    R3 - 11 / 17

    R4 - 13 / 27

    R5 - 15 / 22

    R6 - 19 / 10

    R7 - 21 / 9

    R8 - 23 / 11



    Vielleicht kann mir ja jemand weiterhelfen. Würde mich sehr freuen, wenn ich meine Zeitschaltuhr für die Dosierpumpe realisieren könnte.


    Liebe Grüße:)

  • Hallo und Herzlich Willkommen im Forum.

    Als erstes Bitte ich dich, dass hier einmal zu lesen: Wie frage ich nach Hilfe?


    Leider kann ich noch keine konkreten Probleme oder Versuche von dir Erkennen.


    Bzgl Code für eine Zeitschaltuhr habe ich erst hier kürzlich jemand eine Vorlage gemacht:

    Zeitschaltuhr über Mitternacht


    Als erstes würde ich empfehlen, dass ganze statt mit Relais einfach mit LEDs zu simulieren.

  • Hallo,


    Quote

    jedoch funktionieren die Python Skripte bei mir nicht oder laufen nicht durch.

    "Funktioniert" nicht ist keine brauchbare Fehlermeldung. Du musst wenn schon den kompletten Code posten und den vollen Stack Trace des Fehlers.


    Quote

    Beim abbrechen erhalte ich folgende Meldung:

    Das ist die normale Meldung, wenn du ein laufendes Skript mit STRG+C abbrichst.


    Wie oft sollen die Relais denn geschaltet werden? Statt ein Python-Skript in einer Dauerschleife, die in erster Linie mit nichts tun beschäftigt ist, laufen zu lassen, ist es ggf. besser, zum gewünschten Zeitpunkt ein Python-Skript ohne Endlosschleife über eine systemd Timer Unit zu starten.


    Gruß, noisefloor

  • So nach etwas rumprobieren habe ich nun mit folgendem Skript meine kleine Zeitschaltuhr realisiert.

    Jeden Tag um 18 Uhr laufen die Dosierpumpen für 10 Sekunden.


    Kann mir jemand erklären warum ich die Logik der GPIOs umkehren musste?

    Habe true gegen false getauscht.


    noisefloor deine Methode mit dem systemd timer werde ich mir auch nochmal anschauen danke für den Tipp! :)


    Liebe Grüße :)

  • Hallo,


    du solltest das Programm auf Python 3 umstellen. Python 2, was du verwendest, ist Endes 2019, also weniger als 2 Monaten, ohne Support durch die Kernentwickler von Python. Sofern die RPi.GPIO für Python 3 installierst, solltest das Prog ohne Modifikation unter Python 3 laufen.

    Außerdem solltest du von dem alten / veralteten RPi.GPIO auf das neuere, schönere, besser gpiozero Modul umstellen.


    Dein`while True` rennt ungebremst durch und erzeugt unnötige Prozessorlast. Bau' zumindest mal ein `time.sleep(1)` in der Schleift ein.


    Quote

    deine Methode mit dem systemd timer werde ich mir auch nochmal anschauen danke für den Tipp! :)

    Solltest du. Ein Tag hat 86400 Sekunden, davon verbringt dein Skript 86390 Sekunden mit Leerlauf / warten auf den Zeitpunkt.. Nicht sonderlich effektiv.


    Gruß, noisefloor