@bachoo786 apparently it also depends on the quality of the sensor, I ordered a batch on ebay and got lucky with one where I have to get really close to the glass to trigger it. at first I thought I would change it, but now I am satisfied because it fits the purpose of just activating in case the mirror is off and the other power-on / off logic didn’t work (guests at home). But if I had to redesign I would not use a sensor at all as my other ways of powering the mirror seem far more integrated, e.g. I do not want to see the mirror turn on and / off as this disturbs the design.
Read the statement by Michael Teeuw here.
Posts made by yep_DD
-
RE: Strip Down Guide for BenQ 28" VA Monitor GC2870H
-
RE: Strip Down Guide for BenQ 28" VA Monitor GC2870H
Hi @bachoo786
thank you so much. As @MadScientist pointed out the three pins are connected directly to the Raspberry. For evaluating the state I use a small http server (see below). The important parts are where the you can find anything with
monitorStatus
If you want I can reduce the code to what is important for you. This is the complete server which allows control of
- ARD Livestream
- ARD Tagesschau
- Lowering / Increasing volume
- Radar Sensor (just the last couple lines of code (search for: GPIO.add_event_detect)
- Powerin On / Off Monitor by http Request (used if no one is at home / and at night)
For me the radar sensor is just a backup. I use the power control mainly like this:
- If someone is at home and it is between sunrise / sunset, turn on the monitor(1)
- If someone is at home but it is night and all lights are off, turn off the monitor(1)
- If someone is in front of the monitor turn it on by radar
(1) is done via FHEM (a home automation running on another raspberry, it calls my mirror like this: 10.0.1.49/on (monitor on) 10.0.1.49/off (monitor off) 10.0.1.49/up or /down (for volume) and so on.
#!/usr/bin/python3 -u host_name = '10.0.1.49' # Change this to your Raspberry Pi IP address host_port = 8000 proc = '' monitorstatus = 'unknown' import RPi.GPIO as GPIO from pathlib import Path import os import subprocess import signal from subprocess import call from time import sleep from http.server import BaseHTTPRequestHandler, HTTPServer SENSOR_PIN = 24 GPIO.setmode(GPIO.BCM) GPIO.setup(SENSOR_PIN, GPIO.IN) class MyServer(BaseHTTPRequestHandler): def monitor_on(channel): #define initial status of Monitor if monitorstatus!="on": status='Monitor on by Radar Sensor' #monitorstatus='on' subprocess.Popen(["/usr/bin/vcgencmd", "display_power", "1"], preexec_fn=os.setsid) def do_HEAD(self): self.send_response(200) self.send_header('Content-type', 'text/html') self.end_headers() def do_GET(self): global proc global monitorstatus html = ''' <html> <body style="width:960px; margin: 20px auto;"> <h1>Magic Mirror Control</h1> <p>Current GPU temperature is {}</p> <p>Podcast: <a href="/play">Play</a> <a href="/stop">Stop</a></p> <p>ARD Livestream: <a href="/ard">Play</a> <a href="/stop">Stop</a></p> <p>Volume: <a href="/down">down</a> <a href="/up">up</a></p> <p>System: <a href="/shutdown">Shutdown</a> <a href="/restart">Restart</a></p> <p>Monitor: <a href="/on">On</a> <a href="/off">Off</a></p> <div id="podcast-status"></div> <script> document.getElementById("podcast-status").innerHTML="{}"; </script> </body> </html> ''' temp = os.popen("/opt/vc/bin/vcgencmd measure_temp").read() self.do_HEAD() status = '' if self.path=='/': #GPIO.setmode(GPIO.BCM) #GPIO.setwarnings(False) #GPIO.setup(17, GPIO.IN) status='nothing' elif self.path=='/play': if proc=='': my_file = Path("/home/pi/MagicMirror/video.mp4") if my_file.is_file(): statinfo = os.stat('/home/pi/MagicMirror/video.mp4') if statinfo.st_size > 0: proc = subprocess.Popen(["omxplayer", "-o", "alsa:hw:ALSA", "--no-osd", "/home/pi/MagicMirror/video.mp4"], preexec_fn=os.setsid) status='Playing Podcast' else: proc = subprocess.Popen(["omxplayer", "-o", "alsa:hw:ALSA", "--no-osd", "/home/pi/MagicMirror/Loading.mp4"], preexec_fn=os.setsid) status='Not yet available' else: proc = subprocess.Popen(["omxplayer", "-o", "alsa:hw:ALSA", "--no-osd", "/home/pi/MagicMirror/Loading.mp4"], preexec_fn=os.setsid) status='Not yet available' else: status='Stopping Podcast' os.killpg(os.getpgid(proc.pid), signal.SIGTERM) proc='' elif self.path=='/ard': if proc=='': proc = subprocess.Popen(["livestreamer", "hlsvariant://daserste_live-lh.akamaihd.net/i/daserste_de@91204/master.m3u8", "best", "-vnp", "omxplayer -o alsa:hw:ALSA --no-osd --timeout 20"], preexec_fn=os.setsid) status='Playing ARD Livestream' else: status='Stopping Stream' os.killpg(os.getpgid(proc.pid), signal.SIGTERM) proc='' elif self.path=='/stop': if proc!='': status='Stopping Podcast' os.killpg(os.getpgid(proc.pid), signal.SIGTERM) proc='' else: status='Nothing to stop' elif self.path=='/shutdown': status='Shutdown' subprocess.Popen(["sudo", "shutdown", "-h", "now"], preexec_fn=os.setsid) elif self.path=='/restart': status='Restart' subprocess.Popen(["sudo", "reboot"], preexec_fn=os.setsid) elif self.path=='/down': status='Volume down' subprocess.Popen(["amixer", "set", "Master", "8%-"], preexec_fn=os.setsid) elif self.path=='/up': status='Volume up' subprocess.Popen(["amixer", "set", "Master", "8%+"], preexec_fn=os.setsid) elif self.path=='/on': if monitorstatus!="on": #switch on Monitor if status was off (by httpRequest NOT Radar) status='Monitor on' monitorstatus='on' subprocess.Popen(["/usr/bin/vcgencmd", "display_power", "1"], preexec_fn=os.setsid) elif self.path=='/off': if monitorstatus!="off": #switch off Monitor if status was on (by httpRequest NOT Radar) status='Monitor off' monitorstatus='off' subprocess.Popen(["/usr/bin/vcgencmd", "display_power", "0"], preexec_fn=os.setsid) self.wfile.write(html.format(temp[5:], status).encode("utf-8")) if __name__ == '__main__': http_server = HTTPServer((host_name, host_port), MyServer) print("Server Starts - %s:%s" % (host_name, host_port)) try: GPIO.add_event_detect(SENSOR_PIN , GPIO.RISING, callback=MyServer.monitor_on) #detect radar sensor and enable Monitor http_server.serve_forever() except KeyboardInterrupt: http_server.server_close() GPIO.cleanup()
-
RE: Strip Down Guide for BenQ 28" VA Monitor GC2870H
@daniel3490 hi Daniel, it is bit hard to take down the mirror by myself, i have to wait until I have a friend over to help me. I don’t really see the edges of my monitor unless it is really really dark.
-
RE: Anyone else experiencing issues after updating Raspbian (black screen and wifi dropping)
@mwel1977 let me know if it worked :). Was it “600 and yes” before the change?
-
RE: Anyone else experiencing issues after updating Raspbian (black screen and wifi dropping)
For Wifi Problems I added:
iwconfig wlan0 power off
to
sudo nano /etc/rc.local
now checking the output with
iwconfig wlan0
gives me:
Power Management:off
let’s see if it is solved.
-
RE: Anyone else experiencing issues after updating Raspbian (black screen and wifi dropping)
Solution for screensaver blanking:
add:
@xset s noblank @xset s off @xset -dpms
to:
/home/pi/.config/lxsession/LXDE-pi/autostart
Note: setting it in
/etc/xdg/lxsession/LXDE-pi/autostart or /etc/xdg/lxsession/LXDE/autostart
did not work anymore, the user files take precedence.
I don’t know why it changed with the latest Raspbian Update or what I did wrong, but if I don’t add the xset commands as above and check with
DISPLAY=:0 xset -q
the screensaver stays enabled. If you guys need to verify it is disabled, just run the above command and check if the following lines appear like that:
Screen Saver: prefer blanking: no allow exposures: yes timeout: 0 cycle: 600
DPMS (Energy Star): Standby: 600 Suspend: 600 Off: 600 DPMS is Disabled
If blanking and timeout are yes and not 0 the screensaver is active (DPMS should also show disabled)
-
RE: Anyone else experiencing issues after updating Raspbian (black screen and wifi dropping)
Update: it seems all the xset options I set are now being ignored, manually disabling the screensaver brings the mirror back.
Update2: It seems also the wifi connections now gets reset every couple of minutes which may cause the resolve error I saw earlier in the logs
-
Anyone else experiencing issues after updating Raspbian (black screen and wifi dropping)
Hi guys,
I have updated Raspbian yesterday and ever since my mirror runs for a few minutes and then the screen goes blank. Nothing is in the logs and electron is still running. When I restart it -occassionally- I get resolve errors for github and stuff like that. But pin g / curl and everything works fine via shell.
edit: Webinterface is running. Could it be that the screensaver is active? I have always had it disabled in the LXDE and LXDE-pi config.
Any ideas?
KR,
Stephan
-
RE: Strip Down Guide for BenQ 28" VA Monitor GC2870H
@madscientist okay, so after a couple of days I am absolutely satisfied. I turn on my monitor with a small httpserver python script whenever someone is at home and -if it is night- any HUE light is on. I am now thinking of changing this to different energy saving modes in my magicmirror:
- Always On
- On when someone is home
- On when someone is home and any light is on (turns off at night)
- Only on when activated by PIR / Radar Sensor
-
RE: Strip Down Guide for BenQ 28" VA Monitor GC2870H
@adrien Okay, so it is about 3 seconds boot time I am estimating. No logo anymore. Just the annoying “HDMI1” screen on the lower right. Let’s see if that satisfies me or I will cut the wires as well. Have you tried yet?