#!/usr/bin/python
# Import der Python libraries
import RPi.GPIO as GPIO
import time
import datetime
import subprocess
# Verwendung des Board Mode, Angabe der PIN Nummern anstelle der GPIO BCM Nummer
GPIO.setmode(GPIO.BOARD)
# GPIO definieren, bei mir ist es PIN 8
GPIO_PIR = 8
# GPIO als "Input" festlegen
GPIO.setup(GPIO_PIR,GPIO.IN)
Current_State = 0
Previous_State = 0
try:
# erst mal schlafen bis der bootvorgang abgeschlossen ist
time.sleep(60)
# Warten bis Sensor sich meldet
while GPIO.input(GPIO_PIR)==1:
Current_State = 0
subprocess.Popen('echo initilized PIR | wall', shell=True)
# Schleife bis CTRL+C
while True :
#Status von Sensor auslesen
Current_State = GPIO.input(GPIO_PIR)
if Current_State==1 and Previous_State==0:
# Kommando zum anschalten, Frambuffer erneuern
subprocess.Popen('echo Monitor on | wall', shell=True)
subprocess.Popen('/opt/vc/bin/tvservice -p', shell=True)
subprocess.Popen('fbset -depth 8', shell=True)
subprocess.Popen('fbset -depth 16', shell=True)
subprocess.Popen('sudo /bin/chvt 6 && sudo /bin/chvt 7', shell=True)
Previous_State=1
elif Current_State==0 and Previous_State==1:
# Ausschalten des Monitors
subprocess.Popen('echo Monitor off | wall', shell=True)
subprocess.Popen('/opt/vc/bin/tvservice -o', shell=True)
Previous_State=0
# 5 Sek Warten
time.sleep(5)
except KeyboardInterrupt:
print " Exit"
GPIO.cleanup()
こんにちは、 私は取得しています:「IndentationError:インデントブロックが必要です」というメッセージが表示されるのはなぜですか?
File "PIR.py", line 30
time.sleep(60)
^
IndentationError: expected an indented block
あなたは私を助けることができますか? "time.sleep"の前にタブを設定すると、 "GPIO.input(GPIO_PIR)== 1:"の行に構文エラーが表示されます。 私はこのスクリプトを使用してMagicミラーのPIRセンサーを管理しますが、動作しません。だから、私は "python PIR.py"という端末に書きました。その後、私はエラーを認識し、それはPIRセンサーが動作しないという論理です。しかし、私はPythonのノブですので、私はあなたの助けをしたいと思います。
'try'は新しいブロックを「開く」。次の 'time.sleep(60)'とそれに続くほとんどのものは、 'try..except'の"内側 "になるよう正しく字下げされません。小さなメソッドを使用するとインデント(および一般的にはコード)が順応しやすくなり、適切なPython固有のエディタを使用してコードを編集しながらこれらの問題を強調表示することもできます。 – user2864740
大丈夫、速い答えに感謝します。どのように私はそれを高速に修正することができますか?どのように正しく見える? – XXXL
"即時修正"は、有効な構文であるためにインデントを追加することです。 ['try..except'(字下げを表示する)](https://docs.python.org/2/tutorial/errors.html#handling-exceptions)を使用する方法です。私は 'try..'の中のすべてを' try..except'が実際に働いている問題とは無関係の定型文であるので、別のメソッドに入れることをお勧めします。この変更によってインデントがより明確になる場合もあります。 – user2864740