• Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
MagicMirror Forum
  • Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
A New Chapter for MagicMirror: The Community Takes the Lead
Read the statement by Michael Teeuw here.

Strip Down Guide for BenQ 28" VA Monitor GC2870H

Scheduled Pinned Locked Moved Hardware
61 Posts 10 Posters 51.0k Views 10 Watching
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    MadScientist @yep_DD
    last edited by Oct 22, 2018, 1:27 PM

    @yep_dd You could use relay with a small delay to power your backlight. So the screen will only be visible after the “HDMI1” box disappeared. Personally I wouldn’t bother with it, though.

    Y 1 Reply Last reply Oct 28, 2018, 9:44 PM Reply Quote 0
    • A Offline
      Adrien @yep_DD
      last edited by Oct 22, 2018, 6:00 PM

      @yep_dd I have not yet try, i will do my test as soon as i receive my mirror, but 3 secs look not too long

      1 Reply Last reply Reply Quote 0
      • Y Offline
        yep_DD @MadScientist
        last edited by yep_DD Oct 28, 2018, 9:46 PM Oct 28, 2018, 9:44 PM

        @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

        0_1540763201051_Screenshot 2018-10-28 at 22.46.15.png

        1 Reply Last reply Reply Quote 0
        • A Offline
          Adrien
          last edited by Nov 5, 2018, 8:21 PM

          Hi,

          I have removed the boot logo, but it’s around 5 seconds to start the display and the “hdmi” message is there. I will try to cut the wire in the next days.

          1 Reply Last reply Reply Quote 0
          • D Offline
            Daniel3490
            last edited by Dec 29, 2018, 10:51 PM

            @yep_dd
            Nice project, I got the same glass but a different monitor.
            At my mirror the backlite seems to bright so it’s easy to locate the edge of the monitor.
            Could you take some pictures for me to be sure it’s my monitor and not a general problem with the type of glas?
            If it’s different to yours I might have to invest in a different monitor. 😅

            Y 1 Reply Last reply Jan 1, 2019, 11:25 AM Reply Quote 0
            • Y Offline
              yep_DD @Daniel3490
              last edited by Jan 1, 2019, 11:25 AM

              @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.

              1 Reply Last reply Reply Quote 0
              • B Offline
                bachoo786
                last edited by Jan 4, 2019, 10:08 AM

                Hi @yep_DD

                Fantastic Work !

                May I ask how did you connect your rcwl0516 sensor and what module did you use to integrate it with MM? Are there any instructions I can follow?

                Thanks.

                M Y 2 Replies Last reply Jan 4, 2019, 10:19 AM Reply Quote 0
                • M Offline
                  MadScientist @bachoo786
                  last edited by Jan 4, 2019, 10:19 AM

                  @bachoo786 The sensor should have three pins: VCC, GND and signal out. You connect them the same way you connect a PIR sensor and it should also work with the same MM module MMM-PIR-Sensor.

                  1 Reply Last reply Reply Quote 0
                  • Y Offline
                    yep_DD @bachoo786
                    last edited by yep_DD Jan 5, 2019, 12:41 PM Jan 5, 2019, 12:40 PM

                    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()
                    
                    
                    1 Reply Last reply Reply Quote 0
                    • B Offline
                      bachoo786
                      last edited by Jan 8, 2019, 2:09 AM

                      @MadScientist @yep_DD Thanks for the replies. Is there anyway to limit the distance that the radar sensor senses? I have my magic mirror in the bath room and it faces the wooden door which I believe will be detecting motion through it and I don’t want that.

                      Y 1 Reply Last reply Jan 8, 2019, 6:33 PM Reply Quote 0
                      • 1
                      • 2
                      • 3
                      • 4
                      • 5
                      • 6
                      • 7
                      • 4 / 7
                      • First post
                        Last post
                      Enjoying MagicMirror? Please consider a donation!
                      MagicMirror created by Michael Teeuw.
                      Forum managed by Sam, technical setup by Karsten.
                      This forum is using NodeBB as its core | Contributors
                      Contact | Privacy Policy