Python Skript für GPIO´s schalten ...

  • Hallo

    Ich möchte per schalter ein GPIO schalten der ein script startet.

    Dieses script schaltet der reihe nach die GPIO´s 21 20 26 16 19 13 jeweils pit einer kleinen pause

    wird der schalter unterbrochen gehen die GPIO´s der reihe nach wieder aus.

    Der zweite schalter macht genau das selbe nur das die GPIO´s andersherum geschaltet werden.

    13 19 16 26 20 21.

    Dies brauche ich für meine Auffahrt in der 6 Lampen verbaut sind. Drei links drei rechts.

    Am anfang der auffahrt ist ein Bewegungsmelder welcher als erster schalter dienen soll.

    Am Ende der Auffart ist ebenso ein Bewegungsmelder der als zweiter schalter dienen soll.

    Diese werden über ein Octokopler geschaltet.

    Der erst geschaltetet BM soll priorität haben.

    Asls Schalter am Raspberry habe ich GPIO 4 und 17 mit einem Wiederstand gegen masse verbaut.

    Die anderen GPIO´s für die Lampen schalten je ein Relais.

    Ich habe ein Skipt welches aber leider nicht funktioniert bzw. wennder eingang geschaltet wird passiert nichts.

    Evtl kann mir dabei einer helfen meine schaltung fertig zu schreiben,

    MFG

  • Zur hilfreichsten Antwort springen
  • Was an diesem Thema ist neu gegenueber deinem alten? Da hat sich an der Aufgabe doch ueberhaupt nichts veraendert.

  • ja das stimmt ... Habe ich probiert bekomm aber damit keine 6 Lampen einzelnd zeitversetzt geschaltet.

    Zudem komm ich so nicht weiter wenn dereine mir sagt mach es so der ander sagt schreib es in einem anderen Bereich usw.

    Ich brauche Hilfe bei meinem Skript

    Sorry und vielen Dank für euere Verständnis

  • Sorry und vielen Dank für euere Verständnis

    Und ich hoffe auf dein Verständnis, Python 2 ist ohne Support. Und da in diesem Fall auch kein zwingender Grund für V2 vorliegt gibt s von mir auch keinen solang die veraltete Software verwendet wird

  • Ich kann es selbst leider nicht testen, da ich meinen Raspberry Pi auf der Arbeit vergessen habe.

    Das Attribut self.active soll als Verriegelung dienen. (Ist nicht ganz richtig implementiert, ginge aber zu sehr ins Detail).

    Sollten noch irgendwelche Namen falsch geschrieben sein, liegt es daran, dass ich den Code nicht testen konnte.

    Ich hab nicht alles im Kopf und nachlesen wollte ich jetzt auch nicht unbedingt.

    Mit gpiozeo wäre das ganze noch einfacher und noch kürzer.

    Auch die erwähnte Funktion mit dem LEDBarGraph kann genutzt werden.

    Einmal editiert, zuletzt von RestlessMud46765 (11. September 2020 um 10:40) aus folgendem Grund: thx @noisefloor

    • Offizieller Beitrag

    Ups! Gemeint war von mir eigentlich LEDBoard: https://gpiozero.readthedocs.io/en/stable/recipes.html#ledboard über LEDBarGraph.

    Ich hab wohl am Telefon beim Linkkopieren den falschen erwischt... Dicke Finger. :blush:

  • Habe das Skipt etwas geändert. wenn GPIO 4 oder 17 nun ein signal bekommt dann schalten die relais einmal an und wieder aus. sie sollen aber solange an bleiben bis der kontagt abbricht.

    Leider weiß ich nicht wie ich das ändern müsste..

    Evtl kann ja mal ein experte über den code schauen und ggf. da was ändern damit ich das
    Skript nutzen kann.

    Und die Print befehle gehen leider auch nicht...

    Vieln Dank vorab

  • Pack das in die erste Zeile deines Scriptes den Shebang:

    Code
    #!/usr/bin/env python3

    Dann kannst du die Datei direkt ausführen, sofern du sie mit chmod +x dein_programm.py ausführbar machst.
    Wenn der Interpreter aus welchen Gründen auch immer nicht installiert sein sollte, bekommst du eine Fehlermeldung.

    `env` ist auch ein Programm, dass bei jeder Linux-Distribution dabei ist und es soll dafür sorgen für interpretierte Sprachen (Python, Perl, PHP, NodeJS...) der passende Interpreter gefunden wird.

    Du kannst es natürlich auch mit python3 direkt starten.

    Python2 wird kaum noch unterstützt und hat noch viele alte Zöpfe, die seit Python3 abgeschnitten worden sind.

  • Ich hatte noch ein paar andere Fehler drin.

    Die Eingänge waren Ausgänge und es war nur in eine Richtung möglich.

    Lichter hatte ich zwar nicht dran, getriggert habe ich manuell und das ging schon mal.

  • Ersteinmal ein riesen DANK für deine Mühe!!!

    Leider muss ich die Print mit dem F Sting mit # ausklamern.

    Kommt immer noch der Fehler

    File "hh.py", line 48

    print(f"ON: {is_on} OFF: {is_off} active: {is_active}")

    ....................................................................................^

    SyntaxError: invalid syntax

    ansonsten funktionieren beider Eingänge (17,4) mit an und nach der eingestellten Timeout funktion .

    Klasse !!.

    Könnte man statt der Timeout funktion nicht die ausschaltung des Bewegungsmelder nutzen?

    Dann wäre das Skript genau nach meiner Vorstellung ...

    Sonst werde ich es so nutzen wobe ich dann die zeit des Bewegungsmelder auf minimum setzten müsste...

    Aber trotzdem nochmal ein riesen DANK !!!!

    PS die beiden Octocopler der den eingang 17 bzw 4 schalen sind ja auch so lange geschaltet ( aktiv) bis der Bewegungsmelder sich wieder abschaltet

Jetzt mitmachen!

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