Aus Python ein Shell skript aufrufen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
jockelb
User
Beiträge: 3
Registriert: Mittwoch 24. August 2016, 08:42

Hallo

ich möchte gerne mit dem Raspberry Pi 3 ein Bewegungsmelder betreiben.
Im Netz gibt es genügent fertige Test Skripte in Python.
Leider kenne ich mich noch garnicht mit Python aus.

Das Skript was ich mir ausgesucht habe

Code: Alles auswählen

#!/usr/bin/python
 
# Import der Python libraries
import RPi.GPIO as GPIO
import time
import datetime
import subprocess
 
# Wir verwenden den Board Mode, Angabe der PIN Nummern anstelle der GPIO BCM Nummer
GPIO.setmode(GPIO.BOARD)
 
# GPIO definieren, 7 da bei mir der Sensor auf Pin7 steckt
GPIO_PIR = 7
 
print "Bewegungsmelder Test (CTRL-C zum Beenden)"
print "========================================="
 
#  GPIO als "Input" festlegen
GPIO.setup(GPIO_PIR,GPIO.IN)
 
Current_State  = 0
Previous_State = 0
 
try:
 
 print "%s: Sensor initialisieren ..." % datetime.datetime.now() 
 
 # Warten bis Sensor sich meldet
 while GPIO.input(GPIO_PIR)==1:
   Current_State  = 0
 
 print "%s: Fertig! Warte auf Bewegung..."  % datetime.datetime.now()
 
 # Schleife bis CTRL+C
 while True :
 
   #Status von Sensor auslesen
   Current_State = GPIO.input(GPIO_PIR)
 
   if Current_State==1 and Previous_State==0:
 
     print " %s: Bewegung erkannt!" % datetime.datetime.now()
	subprocess.call("/usr/local/bin/webcam.sh") 
     Previous_State=1
 
   elif Current_State==0 and Previous_State==1:
 
     print " %s: Fertig! Warte auf Bewegung..."  % datetime.datetime.now() 
     Previous_State=0
 
   time.sleep(0.01)
 
except KeyboardInterrupt:
 print " Exit"
 GPIO.cleanup()
ich habe mit der Zeile
subprocess.call("/usr/local/bin/webcam.sh")
versucht das Shellskript zu starten.

[codebox=bash file=Unbenannt.bsh]#!/bin/bash

ffmpeg -f video4linux2 -s 640x480 -r 1 -i /dev/video0 -vframes 1 -f image2 /home/pi/webcam/image.jpg
[/code]

Was mir dann ein Bild macht.

Leider kommt die Meldung

[codebox=text file=Unbenannt.txt]pi@raspberrypi:/usr/local/bin $ ./bewegungsmelder2.py
File "./bewegungsmelder2.py", line 43
subprocess.call("/usr/local/bin/webcam.sh")
^
IndentationError: unexpected indent[/code]

Kann mir da jemand helfen?

Danke
Zuletzt geändert von Anonymous am Mittwoch 24. August 2016, 08:59, insgesamt 1-mal geändert.
Grund: Quelltext in Codebox-Tags gesetzt.
BlackJack

@jockelb: Die Fehlermeldung sagt Dir recht deutlich das die Einrückung der Zeile nicht stimmt. Schau Dir die Zeilen davor und danach an, wie die eingerückt sind, und dann sollte Dir auffallen, dass Deine hinzugefügte Zeile da nicht zu passt. Einrückung hat in Python eine Bedeutung und ist nicht einfach nur Kosmetik, damit es ordentlich aussieht.

Edit: Üblicherweise wird auch genau vier Leerzeichen pro Ebene eingerückt. Man sollte Quellen die das so uneinheitlich machen mit Vorsicht geniessen. Das ist in der Regel selbst von Anfängern geschrieben, die nicht so genau wissen was sie tun.
Antworten