Created
March 13, 2018 14:47
-
-
Save Everlanders/e08fe32b8012395d4afc558724937ad4 to your computer and use it in GitHub Desktop.
Headlight and Reverse Lights monitor for YouTube Commenters - UNTESTED but should work fine.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python | |
# A quick hack of my button monitor script to monitor headlights and reverse lights to | |
# Dim the screen and switch to the reverse camera. | |
# I have not tested this... | |
# Remember, the switch or opto is switching to ground, so the logic is inverted... 0 = on 1 = off | |
# Also, you would run only one of these "Monitor" scripts. you can't be running RearviewMonitor.py AND LightMonitor.py | |
import RPi.GPIO as GPIO | |
import time | |
import subprocess, os | |
import signal | |
GPIO.setmode(GPIO.BCM) | |
GPIO.setwarnings(False) | |
RearView_Switch = 14 # pin 18 (You must use an optocoupler and resistor as shown in the video) | |
Brightness_Switch = 15 # pin 16 (You must use an optocoupler and resistor as shown in the video) | |
#Extra_Switch = 1 # pin 3 | |
GPIO.setup(RearView_Switch,GPIO.IN, pull_up_down=GPIO.PUD_UP) | |
GPIO.setup(Brightness_Switch,GPIO.IN, pull_up_down=GPIO.PUD_UP) | |
print " Press Ctrl & C to Quit" | |
try: | |
run = 0 | |
bright = 0 | |
while True : | |
time.sleep(0.25) #this restricts the script to check the lights every 1/4 second, There is no point in checking 10,000 times a second. | |
# If the reverse reverse lights come on, do this: | |
if GPIO.input(RearView_Switch)==0 and run == 0: | |
print "Switching Rearview Camera On" | |
rpistr = "raspivid -t 0 -vf -h 480 -w 800" | |
p=subprocess.Popen(rpistr,shell=True, preexec_fn=os.setsid) | |
run = 1 | |
# When the reverse lights go off, do this: | |
if GPIO.input(RearView_Switch)==1 and run == 1: | |
os.killpg(p.pid, signal.SIGTERM) | |
print "Killing the reverse camera feed" | |
run = 0 | |
#These next Two blocks monitor the headlights or marker light and adjust the screen brightness settings. | |
if GPIO.input(Brightness_Switch)==0 and bright == 0: | |
print "Setting Brightness to 20" # 20 is about 10% | |
subprocess.call ("/usr/local/bin/backlight.sh 20", shell=True) | |
bright = 1 | |
if GPIO.input(Brightness_Switch)==1 and bright == 1: | |
print "Setting Brightness back to 255" #255 is 100% | |
subprocess.call ("/usr/local/bin/backlight.sh 255", shell=True) | |
bright = 0 | |
except KeyboardInterrupt: | |
print " Quit" | |
GPIO.cleanup() |
This works as deigned. I have a video of it running on youtube if you are interested. https://youtu.be/PYI-8KDzQV8
Print "Killing the reverse camera feed" was giving an error. I removed it and all was well.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I plan to use your script on my setup to monitor backup lights to turn on camera view, however, I will have two backup cameras: one on the tailgate of the pickup to see the bumper hitch (usb cam feed) and one on the back of my horse trailer (usb cam feed to rpizw fed to the truck computer via wifi). The tailgate and trailer backup cameras will switch on with the reverse lights.
Any help with the code for making the tailgate and trailer backup cam views selectable via your script would be appreciated.