Hallo
habe ein skript geschrieben welches auch funktioniert aber beim ausschalten stimmt die reinfolge nicht immer.Es ist bestimmt auch nicht 1A programiert ich bin halt neu in dem Bereich.
Evtl. kann das ja jemand abändern bzw.besser aufbauen,.
Besten Dank vorab.
Hi @sralus,
kannst du beschreiben, was du genau vorhast und welcher GPIO-PIN mit welchem Bauteil an welchem PIN verbunden ist? Die Initialisierung vom GPIO-PIN 4 sollte als IN sein; ist doch bestimmt ein Taster-ähnliches Bauteil oder? .. und die mehrfachen if ( GPIO.input(4) == False ) Abfragen; sowie doppelte Verneinungen; kann man bestimmt eleganter lösen. Die GPIutput findet man so auch nicht in der Doku.
Ich habe einen bewegungsmelder am anfang meiner auffahrt .. dieser schaltet ein octocopler relais.. dies schaltet ein GPIO . das wiederum schaltet ein skript welches meine Relais schalten . Die relais schalten je eine Lampe.
Ich habe 6 lampen in meiner aufhart verbaut und diese sollen der reihe nach angehen.
Wenn der bewegungsmelder ausschaltet sollen die Lampen der reieh nach wieder ausgehen.
Das habe ich soweit auch hinbekommen.
Jetzt habe ich am Ende der auffahr noch einen zweiten Bewegungsmelder. Der soll das gleiche machen wie der erste bewegungsmelde (nur umgekehrt)
So ist meine Idee ..
hi,
wenn das hier die Initialisierung vom GPIO-PIN für den Bewegungsmelder ist GPIO.setup(4,GPIO.OUT) .. dann muss der mit GPIO.IN initialisiert werden ... ansonsten ist der Zustand mehr oder weniger zufällig. Jedes Relay würde ich mit einem einzelnen Befehl steuern .. ich habe bis jetzt noch nie gesehen, das man der output-Funktion eine Liste übergeben und als Zustand nutze GPIO.LOW und GPIO.HIGH und nicht GPIO.OUT/GPIO.IN .. auch wenn intern beide Varianten auf "0" und "1" zurückfallen; macht es aber einfacher zu verstehen.
Wie könnte ich jetzt noch dazu einen zweiten bewegungsmelder einbauen ?
also GPIO 4 schaltet den einen und GPIO 22 soll den anderen Bewegunsmelder schalten.
Die Relais sollen dann genau andersherum schalten....
Hi,
du kannst den zweiten Bewegungsmelder direkt hinter dem anderen abfragen lassen und musst dir den entsprechenden Status in einer neuen Variable merken; auch den letzten Status vom zweiten Melder muss du dir merken.
Dann muss man entscheiden, welcher Status hat mehr Priorität ... ... also, was soll zB passieren, wenn beide Bewegungsmelder "Aktivität" signalierisen ... bleiben die Lampen an oder gehen die aus ...
Hi
Danke für deine Info …
Bin schonmal angefangen aber leider fehlt mir das nötige wissen für den entsprechenden Status in einer neuen Variable. zudem soll der erst geschaltete Bewegungsmelder Priorität haben.... Wenn du zeit und lust findest kannst du mir ja evtl. dabei helfen .. bzw. mir einen ansatz geben auf dem ich weiter aufbauen kann..
Hi ...
du musst alles in der ersten while Schleife machen ... weil die 2. while Schleife nie verwendet wird ... die erste while Schleife wird nie verlassen und läuft quasi unendlich