Ich würde gerne ein Programm entwickeln, dass ich für eine meine Arbeit benötigte. Da meine Kenntnisse in Python mehr als gering sind, bitte ich um eure Hilfe.
Folgende Aufgabenstellung: Mit Hilfe des Raspberry PI und der Programmiersprache Python will ich einen Monitor über einen Bewegungsmelder (welcher an raspberry pi angeschlossen ist) ansteuern. Der Bewegungsmelder liefert als Eingang 0 oder 1. Ist der Bewegungsmelder nicht aktiv, also logisch 0 soll der Raspberry den Monitor ausschalten. Dies ist mit einem Shell Befehl möglich, der an den raspberry über python geschickt wird. Wenn jetzt eine Person vor dem Bewegungsmelder ist, ist dieser auf logisch 1 und soll eine zuvor geöffnete Webseite anzeigen (in meinen Programm Test.html).
Mein derzeitiger Code, der daweil nicht funktioniert (identitation error) und noch Fehler aufweißt:
Code: Alles auswählen
import RPi.GPIO as GPIO
import subprocess
import webbrowser
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
PIR_01 = 7 #Pin Bewegungsmelder
cs_01 = 0 # PIR 01 current state
ps_01 = 0 # previous state vom Bewegungsmelder
GPIO.setup(PIR_01, GPIO.IN)
while True:
# PIR 01 Start
cs_01 = GPIO.input(PIR_01)
# Bewegung
if cs_01 == 0 and ps_01 == 1:
webbrowser.open('www/Test.html') #öffnet die Html
if cs_01 == 1 and ps_01 == 0:
from subprocess import call #dreht den Monitor ab
call(["xset", "dpms", "force", "off"])
cs_01 == ps_01
1) Falls das Programm so funktioniert wie ich es programmiert habe, wird die Html Seite ja dauernd neu geöffnet so wie ich das verstehe. Im idealfall sollte die html aber einfach dauernd offen sein und das Programm (Python) steuert halt nur über den Bewegungsmelder (Keine Person=Monitor Schwarz; Person da= Monitor an) den Raspberry und der steuert den Monitor an.
2) Ich habe das Programm schon mal anderes getest und bin drauf gekommen, dass meiner Meinung nach (bin kein Experte) der Befehl zum Bildschirm ausschalten von der nächsten Programmzeile aufgehoben wird. Meine Theorie dazu ist, dass der Befehl ja eigentlich wie der Ruhemodus ist und sobald der nächste Befehl kommt wacht der Raspberry aus dem Ruhemodus auf. Das ist ein Problem weil er eben nur aufwachen soll, wenn eine Person davor steht.
3) Der Bewegungsmelder ist kein Präsenzmelder, dass heißt er erkennt nur Bewegungen. Das Problem hierbei ist, dass der Monitor auch ein bleiben soll wenn eine Person sich kürze Zeit davor befindet und sich nicht bewegt.
Falls ihr Interesse an meinem Problem habt und mir helfen wollt, bedenkt bitte das ich ein blutiger Anfänger in python Programmierung bin.
Ich wäre für jeder Art der Hilfe wirklich sehr dankbar.
MfG Hermann