GPIO's täglich zu bestimmter Uhrzeit ein, bzw. Ausschalten

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 Liebe Raspi's,


    ich bin ein kompletter Neuling bezüglich Raspi und Python, mit Programmierung hatte ich bisher nichts am Hut (ausser mal einen Batch-File für Windoof)


    Ich habe folgendes Problem für meine Gartenbewässerung (zu diesem Thema hab ich schon einiges gelesen, aber nichts hat mir so richtig weitergeholfen):


    An/von einem 8 Kanal Relaisboard (die GPIO's schalten schon) sollen Bewässerungsventile Zeitgesteuert ein- und ausgeschaltet werden. (GPIO_an_Relais.py)

    Zudem soll die Bodenfeuchte kapazitiv gemessen werden - auch der Sensor liefert schon Werte (get_hum.py)

    Dann noch die Temperatur - auch die funktioniert schon (get_temp.py

    und read_temp.py)


    Bisher hab ich für die Relaissteuerung ein*.py geschrieben (bzw. Kopiert), ebenso für Bodenfeuchte und Temperatur (siehe Dateianhänge)

    Ich dachte mir, so ist es für den Anfang mal einfacher, um zu sehen, ob die Scripte auch laufen, bzw. den Fehler besser eingrenzen zu können).

    Später will ich sie dann zusammenkopieren, bzw. - wenn das geht im Hauptscript sozusagen zu "verlinken", da ich ja jeweils nur den aktuellen Messwert (Temperatur, bzw. Bodenfeuchte) brauche (müsste ja mit "import" gehen ...?)


    Jetzt gehts aber um die Abhängigkeiten, zum einen sollen 4 Ventile jeweils zu einer bestimmten Zeit ein, bzw. ausgeschaltet werden:


    Ventil 1 An 3:00 Uhr, Aus 3:20 Uhr,

    Ventil 2 An 3:40 Uhr, Aus 4:00 Uhr,

    Ventil 3 An 4:20 Uhr, Aus 4:40 Uhr,

    Ventil 4 An 8:00 Uhr, Aus 8:20 Uhr,

    Ventil 1 An 5:00 Uhr, Aus 5:20 Uhr,

    Ventil 2 An 5:40 Uhr, Aus 6:00, Uhr,

    Ventil 3 An 6:20 Uhr, Aus 6:40 Uhr,

    Ventil 4 An 12:00 Uhr, Aus 12:20 Uhr,

    Ventil 4 An 17:00 Uhr, Aus 17:20 Uhr.

    (Die 20 min Pause dienen nur zu Regeneration meines Gartenbrunnens - bin nicht tief genug mit dem Bohren gekommen und hab nur 1,5 m Wasserüberstand über der Pumpe, aber das reicht für 20 min Bewässerung)


    Das wäre mal Punkt 1, ich bekomme es einfach nicht hin, Python davon zu überzeugen, dass die Ventile/Relais/GPIO's jeden Tag zu gegebenen Uhrzeiten öffnen bzw. schließen.


    ... das ist aber bei weitem noch nicht alles:


    Logischerweise sollen die Ventile 1 -3 nur dann ihre Arbeit tun, wenn es nicht regnet, bzw. der Rasen nicht feucht genug ist, deshalb der Bodenfeuchtemesser (das geht ja irgendwie mit if/else ...?)


    ... ja und dann ist da ja noch der Winter:


    Hier soll sich das ganze System Automatisch in den Winterschlaf begeben, d.h. sinkt die gemessene Außentemperatur unter 0 Grad, sollen sich Ventile 5 und 6 öffnen um die Wasserleitung zu entleeren (Ventil 5 ist am tiefsten Punkt des Wasserkreislaufs, Ventil 6 an höchsten Punkt) zusätzlich sollen dann auch die Ventile 1 - 4 auch für 10 min öffnen, um auch hier die Leitungen zumindest Drucklos zu machen.

    Auch die Pumpe sollte dann elektrisch "AUS" sein, da sie über einen Druckschalter angesteuert wird, gibt es da einen Schalter, den ich über ein Relais ansteuern kann?


    Und weils noch nicht genug ist, habe ich mir jetzt auch noch einen Durchflussmesser gekauft (AS010 – Vortex-Durchflusssensor G1 ¼ - 9…150 l/min – analog 4…20 mA) den ich evtl. auch noch - rein zu Messzwecken - damit ich sehe, wieviel Wasser ich verballere - anbinden.

    Müsste ja wie beim Bodenfeuchtesensor über einen AD Wandler (ich hab einen ADS1150 von QRobot) funktionieren?


    Kann mir da jemand einfache Tipps geben, wie ich das hinbekomme?


    ... und wie schon geschrieben, ich habs mir wirklich nicht einfach gemacht und Tante Google lange genervt, um zu meinem Problem ein Lösung im Internet zu finden.


    Ich würde mich wirklich über konstruktive Antworten freuen.


    Ach ja, die Hardware ist schon komplett installiert, falls jemand interesse hat, ich hab sie gut "Bebildert"


    LG

    Andreas

  • Du hast doch eine Antwort mit dem schedule-Modul bekommen, mit der Du Dein Ziel erreichst. :conf:


    Wenn Du mit dem Modul nicht klar kommst, dann zeige hier das Skript mit Deinem Versuch in einem Codeblock (dieser Button im Foreneditor pasted-from-clipboard.png) und die Fehlermeldung zu dem Skript auch. Ich bin sicher Dir hilft dann jemand weiter.

  • Python
    from datetime import datetime
    while True:
        if(Temperatur > 0):
            if(Feuchte < ???):
                if(datetime.now().strftime("%H:%M:%S") >= 03:00:00 and datetime.now().strftime("%H:%M:%S") <= 03:20:00):
                    Bewässere

    So inetwa?

    First test the parts and then the whole [system]. Like that, errors can be found much easier -Andreas Spiess, HB9BLA

  • Ja das stimmt 😊.

    Ich wollte aber ein möglichst verständlichen code machen und habe einfache tools genommen.

    Schedule ist aber ein durchaus hilfreiches toolkit.

    Ausserdem hab ichs nicht so mit "schönen" codes ich bin mehr der rabbiate typ.

    First test the parts and then the whole [system]. Like that, errors can be found much easier -Andreas Spiess, HB9BLA

  • Mir mangelt es am RPi und deiner Sensoren.

    Ich hab das jetzt mit dem Telefon zusammen geklöppelt (Mir hat's den Codeblock zerhauen, mehrmals...., korrigiere ich später).

    Dient nur als Beispiel.


    Code für den DS18B20 kommt von hier.


    Je nachdem wie oft du die Temperatur messen willst brauchst du eventuell noch Threads. Da beim bewässern die Temperatur nicht gemessen wird.


    Deine Feuchtigkeitsmessung fasse ich nicht an.

    Edited 2 times, last by keepfear ().

  • Python
    from datetime import datetime
    while True:
        if(Temperatur > 0):
            if(Feuchte < ???):
                if(datetime.now().strftime("%H:%M:%S") >= 03:00:00 and datetime.now().strftime("%H:%M:%S") <= 03:20:00):
                    Bewässere

    So inetwa?

    irgendwie läuft das nicht ...
    Folgender Fehler tritt auf: SyntaxError: leading zeros in decimal integer literals are not permitted; use an 0o prefix for octal integers

  • Dumme Frage, woher kommt die Uhrzeit beim PI, wenn er Autark, also ohne Internet läuft?

    Ich für meinen Fall, würde da vielleicht eine RTC nachrüsten!

    Aber bitte eine mit wechselbarer Knopfzelle und keine mit fest eingelöteter Batterie!

    Denn für diese gibt es meist keinen Ersatz, was ich selber an meinem DS3231 RTC Modul feststelln musste!

  • Strick gerade alles auf GPIOZero um.


    aber warum meckert er ?

    NameError: name 'RELAYS_1' is not defined

  • Dumme Frage, woher kommt die Uhrzeit beim PI, wenn er Autark, also ohne Internet läuft?

    Ich für meinen Fall, würde da vielleicht eine RTC nachrüsten!

    Aber bitte eine mit wechselbarer Knopfzelle und keine mit fest eingelöteter Batterie!

    Denn für diese gibt es meist keinen Ersatz, was ich selber an meinem DS3231 RTC Modul feststelln musste!

    Doch, er hängt am WLAN, ausserdem hab ich ne kleine USV mit eingebaut :)