Hallo zusammen,
ich wende mich an das Forum hier mit der Bitte um Hilfe.
Ich bin absoluter Python-Anfänger, habe mir die letzten Wochen einiges zusammengelesen, da ich ein Raspberry-Projekt realisieren will.
Auch sonst habe ich keine Programmierkenntnisse.
Ich habe mir einen Code zurechtgeschrieben, bekomme aber eine Fehlermeldung bei einer "If-Abfrage", die ich nicht verstehe, bzw. keinen Fehler erkennen kann.
Der Fehler scheint mit dem Doppelpunkt am Ende der Zeile zusammenzuhängen, jedenfalls zeigt der kleine Pfeil genau auf den Doppelpunkt
Wenn ich die betreffende Zeile einfach mal auskommentiere, bekomme ich bei der darauffolgenden If-Abfrage die selbe Fehlermeldung.
Könnt ihr mir helfen?
Die Fehlermeldung lautet:
(der kleine Pfeil ist genau unter dem Doppelpunkt)
Ich füge hier mal den gesamten Code ein, wie gesagt, bin noch am lernen und man kann bestimmt besser programmieren, aber mir geht es erst mal um diese Fehlermeldung.
Vielen Dank im Voraus!!!
Spoiler anzeigen
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import RPi.GPIO as GPIO
#import time
import datetime
from time import *
import os
GPIO.setmode(GPIO.BOARD) #PIN-Nummern verwenden
GPIO.setwarnings(False)
GPIO.cleanup()
#######################################################################
### Variablen definieren ##############################################
status_licht = 0 #Zustand Beleuchtung - Licht an oder aus
status_radio = 0 #Zustand Radio - Radio an oder aus
licht_relais = 0
radio_relais = 0 #Relais für Radio - schaltet Verstaerker
bewegung = 0 #wurde Bewegung registriert
start_zeit_bewegung = 0 #Variable, wann Bewegung registriert wurde
laufzeit = 60 #wie lange bleibt alles aktiv
helligkeit = 0 #Ist es hell
radio_man_stop = 0 #Variable, wurde Radio manuell gestoppt
sender = 0 #Eingestellter Radiosender
akt_zeit = 0 #Variable, speichert aktuelle Uhrzeit
akt_std = 0 #Variable, speichert aktuelle Stunde
#######################################################################
### PINs definieren ###################################################
pir_pin = 11 #Pin für Bewegungsmelder
GPIO.setup(pir_pin, GPIO.IN)
ldr_pin = 13 #Pin für Fotowiderstand - Lichtsensor
GPIO.setup(ldr_pin, GPIO.IN)
radio_stop_pin = 15 #Pin für Taste um Radiowiedergabe zu stoppen
GPIO.setup(radio_stop_pin, GPIO.IN)
radio_sender_pin = 19 #Pin für Taste um Radiosender zu wechseln
GPIO.setup(radio_sender_pin, GPIO.IN)
licht_relais_pin = 16 #Pin, Relais für Licht
GPIO.setup(licht_relais_pin, GPIO.OUT)
GPIO.output(licht_relais_pin, GPIO.LOW)
radio_relais_pin = 18 #Pin, Relais für Verstaerker
GPIO.setup(radio_relais_pin, GPIO.OUT)
#######################################################################
### Radio Software clear und Senderliste laden ########################
os.system ('mpc clear')
os.system ('mpc load sender')
### Radio Software clear und Senderliste laden ENDE ###################
#######################################################################
### PIR initialisieren ################################################
print "PIR-Modul gestartet (CTRL-C to exit)"
# Set pin as input
#GPIO.setup(pir_pin,GPIO.IN)
#GPIO.setup(LED, GPIO.OUT)
#GPIO.output(LED, GPIO.LOW)
# Initialisierung
Read = 0
State = 0
print "Warten, bis PIR im Ruhezustand ist ..."
# Schleife, bis PIR == 0 ist
while GPIO.input(pir_pin) != 0:
sleep(0.1)
print "Bereit..."
### PIR initialisieren ENDE ###########################################
#######################################################################
### Callback-Funktion für BEWEGUNG ####################################
def MOTION(PIR_GPIO):
print "%s - Bewegung erkannt!" % datetime.datetime.now()
global bewegung
global helligkeit
#global radio_man_stop
bewegung = 1
start_zeit_bewegung = time()
### Licht einschalten
### Wenn es nicht hell ist, wird das Licht eingeschaltet,
### wenn es hell ist und das Licht schon an ist, wird ausgeschaltet
if helligkeit == 0: #es ist dunkel
if status_licht == 0: #wenn das Licht aus ist
GPIO.output (licht_relais_pin, GPIO.HIGH)
status_licht = 1
start_zeit_licht = time ()
else: # es ist hell
if status_licht == 1: # wenn das Licht an ist
GPIO.output (licht_relais_pin, GPIO.LOW)
status_licht = 0
### Radio einschalten
### Wenn manuell ausgeschlatet wurde, wird nicht eingeschaltet
### Fallunterscheidung nach Uhrzeit
akt_std = int(time.strftime('%H') #setzt die aktuelle Std in Variable
if radio_man_stop == 0:
if status_radio == 0:
if akt_std > 5 and akt_std < 8:
GPIO.output (radio_relais_pin, GPIO.HIGH)
os.system ('mpc play 2')
status_radio = 1
radio_sender = 2
if akt_std > 7 and akt_std < 21:
GPIO.output (radio_relais_pin, GPIO.HIGH)
os.system ('mpc play 1')
status_radio = 1
radio_sender = 1
### Callback-Funktion für BEWEGUNG ENDE ###############################
#######################################################################
### Callback-Funktion für Taste RADIO-MAN-STOP ########################
### Wenn Taste gedrückt wird, wird Radio gestoppt #####################
def RadioManStop:
if status_radio == 1: #ist Radio aktiv?
if radio_man_stop == 0:
os.system ('mpc stop') #Radio wird gestoppt
radio_man_stop = 1
GPIO.output (radio_relais_pin, GPIO.LOW)
status_radio = 0
if status_radio == 0: #ist Radio aktiv?
if radio_man_stop == 1:
os.system ('mpc play 2') #Radio wird gestartet
radio_man_stop = 0
GPIO.output (radio_relais_pin, GPIO.HIGH)
status_radio = 1
radio_sender = 2
### Callback-Funktion für RADIO-MAN-STOP ENDE #########################
#######################################################################
### Callback-Funktion für Taste SENDER-WECHSEL
### Wenn Taste gedrückt wird, wird Sender gewechselt
def SenderWechsel:
if status_radio == 1: #ist Radio aktiv?
if radio_sender == 1: #Läuft Radio-Sender 1, dann schalte um auf 2
os.system ('mpc play 2') #wechselt Sender auf 2
radio_sender = 2
else:
os.system ('mpc play 1') #wechselt Sender auf 1
radio_sender = 1
### Callback-Funktion für SENDER-WECHSEL ENDE #########################
print "%s - Warten auf Bewegung" % datetime.datetime.now()
try:
#######################################################################
### Ereignis Bewegungsmelder reagiert
GPIO.add_event_detect(pir_pin, GPIO.RISING, callback=MOTION)
#######################################################################
### Ereignis Radio-Stop-Taste gedrückt
GPIO.add_event_detect(radio_stop_pin, GPIO.RISING, callback=RadioManStop)
#######################################################################
### Ereignis Sender-Wechsel-Taste gedrückt
GPIO.add_event_detect(radio_sender_pin, GPIO.RISING, callback=SenderWechsel)
######################################################################
### H A U P T P R O G R A M M ########################################
while True:
##############################################################
### Abfrage Lichtsensor
def RCtime (RCpin):
reading = 0
GPIO.setup(RCpin, GPIO.OUT)
GPIO.output(RCpin, GPIO.LOW)
time.sleep(0.1)
GPIO.setup(RCpin, GPIO.IN)
while (GPIO.input(RCpin) == GPIO.LOW):
reading += 1
return reading
while True:
timing = RCtime(ldr_pin)
if timing > 2000:
global helligkeit = 0 #es ist dunkel
print "dunkel", timing
else:
global helligkeit = 1 #es ist hell
print "hell", timing
### Abfrage Lichtsensor ENDE ###################################
if bewegung == 1:
akt_zeit = time
if akt_zeit - start_zeit_bewegung > laufzeit:
bewegung = 0
### Licht ausschalten
if status_licht == 1: #Das Licht ist an
GPIO.output (licht_relais, GPIO.LOW)
status_licht = 0
### Radio ausschalten
if status_radio == 1: #Das Radio ist an
GPIO.output (radio_relais, GPIO.LOW)
os.system ('mpc stop')
sleep (5)
status_radio = 0
sleep (30)
### Ende HAUPTPROGRAMM ###########################################
except KeyboardInterrupt:
# Programm beenden
print "Ende..."
os.system ('mpc stop')
GPIO.cleanup()
Alles anzeigen