Read the statement by Michael Teeuw here.
PIR Sensor
-
Do you have xscreensaver installed? that should do exactly what you are asking
https://www.jwz.org/xscreensaver/man3.htmlOr maybe a wifi- wall plug could work better? (i.e cut the power to the tv completly)
-
Thanks for your response. No I haven’t got that installed. My question is how would I add that into my pir script so that the screen saver came on after a set time and to go off when the pir is activated? Many thanks
-
Just replace your screen on and off commands with the xscreensaver commands. Should work.
like
for black screen :
xscreensaver-command -activate
and to deactivate black screen :
xscreensaver-command -deactivate
-
Thanks again, i have just tried the following but nothing happens. If i run “xscreensaver-command -activate” from the terminal i get
“xscreensaver-command: warning: $DISPLAY is not set: defaulting to “:0.0”.
xscreensaver-command: activating”It then works and goes into a black screen, same thing for when i deactivate it. But nothing happens when i add it to my sh monitor on/off commands for my pir.py script.
-
@tinsebayacc U need to add
DISPLAY=:0
in front of your command
See the installers/mm.sh for an example
-
Thank you, that got rid of that error. Still no joy with the PIR sensor though unfortunately.
The strange thing is if i change my monitor_on and monitor_off sh files tovcgencmd display_power 0
vcgencmd display_power 1the pir works fine and shuts off / turns on my monitor.
these are my scrips
#!/usr/bin/env python
import sys
import time
import RPi.GPIO as io
import subprocessio.setmode(io.BCM)
SHUTOFF_DELAY = 30 # in seconds, how long the monitor will be on until next button press or PIR detection
PIR_PIN = 22 # 15 on the board (this needn’t to be a PIR. Can be a button also)
LED_PIN = 16 # optional, don’t use as Relay-PIN. It just shows detection time of the PIR without delay timedef main():
io.setup(PIR_PIN, io.IN)
io.setup(LED_PIN, io.OUT)
turned_off = False
last_motion_time = time.time()while True: if io.input(PIR_PIN): last_motion_time = time.time() io.output(LED_PIN, io.LOW) print ".", sys.stdout.flush() if turned_off: turned_off = False turn_on() else: if not turned_off and time.time() > (last_motion_time + SHUTOFF_DELAY): turned_off = True turn_off() if not turned_off and time.time() > (last_motion_time + 1): io.output(LED_PIN, io.HIGH) time.sleep(.1)
def turn_on():
subprocess.call(“sh /home/pi/monitor_on.sh”, shell=True)def turn_off():
subprocess.call(“sh /home/pi/monitor_off.sh”, shell=True)if name == ‘main’:
try:
main()
except KeyboardInterrupt:
io.cleanup()monitor on script
DISPLAY=:0 xscreensaver-command -deactivate
monitor off script
DISPLAY=:0 xscreensaver-command -activate