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.

    {HowTo} turn on/off your monitor (Time based, PIR/Button, App)

    Scheduled Pinned Locked Moved Tutorials
    171 Posts 39 Posters 275.1k Views 54 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.
    • Mykle1M Offline
      Mykle1 Project Sponsor Module Developer @fabbr
      last edited by Mykle1

      @fabbr

      Have you disabled the screensaver? The easiest, most common way of doing that is to install xscreensaver and disable the screensaver that way

      Create a working config
      How to add modules

      F 1 Reply Last reply Reply Quote 1
      • F Offline
        fabbr @Mykle1
        last edited by yawns

        @Mykle1 Thank you that was the problem. Xscreensaver was easy use. Thanks

        Another problem I had was: when I changed the orientation of my monitor when it was coming back on all I saw was a black screen… so I did more research and found that that I could replace the tvservice for:

        vcgencmd display_power 0 turns off the screen

        vcgencmd display_power 1 turns on the screen

        That worked better with my monitor for some reason.

        1 Reply Last reply Reply Quote 0
        • B Offline
          blebbens
          last edited by

          Thanks for this tutorial…

          I am using a PIR. The monitor switches on immediately after detection of motion. I am looking for an option to switch on the monitor if a person stands in front of it for 10 seconds. Mine is a floor mirror, so some people are crossing the floor many times a day without looking at the mirror.

          cruunnerrC 1 Reply Last reply Reply Quote 0
          • cruunnerrC Offline
            cruunnerr @blebbens
            last edited by

            @blebbens said in {HowTo} turn on/off your monitor (Time based, PIR/Button, App):

            Thanks for this tutorial…

            I am using a PIR. The monitor switches on immediately after detection of motion. I am looking for an option to switch on the monitor if a person stands in front of it for 10 seconds. Mine is a floor mirror, so some people are crossing the floor many times a day without looking at the mirror.

            If u use the external PIR script (point 2.2) u could try to change line 25 in the script and define a TURNON-DELAY.

            if turned_off and time.time() >= TURNON_DELAY:
            

            The whole script would look like this:

            #!/usr/bin/env python
            
            import sys
            import time
            import RPi.GPIO as io
            import subprocess
            
            io.setmode(io.BCM)
            SHUTOFF_DELAY = 120 # in seconds, how long the monitor will be on until next button press or PIR detection
            TURNON_DELAY = 10
            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 time
            
            def 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 and time.time() >= TURNON_DELAY:
                            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()
            
            

            Don’t know if it will work. Just brainstorming cause i haven’t much time

            K 1 Reply Last reply Reply Quote 1
            • E Offline
              erycken
              last edited by

              This is really helpful! Thanks.
              I have a PIR motion sensor set up, but I am trying to work out if it is possible (or better yet already exists) to have the motion sensor become unresponsive/display not actually active during night hours (predefined by me) as I have the mirror set up in my room and if I get up during the night I don’t want it coming on as I never turn lights on since it takes forever for me to get back to sleep!
              I do want the motion sensor to work like normal during the day however. Does the Cronjob method prevent the sensor from working during the on hours?

              1 Reply Last reply Reply Quote 0
              • cruunnerrC Offline
                cruunnerr
                last edited by

                Hey mate,

                the way that will work in every case is to use a relay to interrupt the voltage for the pir.
                Then write two little bash files and execute them via cronjob.


                turn on relay with GPIO 7 and give the PIR voltage:

                gpio mode 7 out
                gpio write 7 1
                

                turn off the relay with GPIO 7 and interrupt the PIR voltage:

                gpio mode 7 out
                gpio write 7 0
                

                otherwise u could use if statement with a datetime check within the python script. something like this: https://stackoverflow.com/questions/10048249/how-do-i-determine-if-current-time-is-within-a-specified-range-using-pythons-da/10048290

                If i find some time, i will try to adjust the python script from this tutorial…

                1 Reply Last reply Reply Quote 0
                • K Offline
                  Kecko
                  last edited by

                  Hey, big thanks for this tutorial!

                  i want to use method 2.2 the PIR-Script.

                  My Problem is: it looks like there is always a movement detected!
                  i stuck on the point
                  “You can check if your button works by simply typing python pir.py. Every time u move through the PIR or press the button it will show you several …
                  End the test with “ctrl+c”
                  ”

                  It always print “…” for me.
                  That means that there is a movement all time right?
                  even if I disconnect the GPIO Pin there are all the dots…
                  i Realy cant figure out what i do wrong in this case… i mean it is only copy and paste and i did it the third time right now. also tried the MMM-PIR-Sensor module… not happy with it.

                  i realy dont know what to do now!

                  1 Reply Last reply Reply Quote 0
                  • cruunnerrC Offline
                    cruunnerr
                    last edited by cruunnerr

                    Not much time, so here comes just a short think…

                    1. You have two cogs on the pir. Move the time delay completely left or right (so it will just give a very short impulse).

                    2. Set the Shutoff-delay in the script to 5 seconds (just to try)

                    3. Try another GPIO…

                    4. try a pull-up or pull-down resistor like used at thy button-method

                    Bild Text

                    K 1 Reply Last reply Reply Quote 2
                    • K Offline
                      Kecko @cruunnerr
                      last edited by

                      @cruunnerr oh my god… i love you
                      it was realy just the Time-delay Adjust!!!
                      i turned it completly left and it seems to work now!

                      but i have to say i must work with the command display_power=0 - display_power=1
                      so if the hdmi turns off my display shows for 1 second no signal
                      if the display turns on it shows HDMI1
                      but thats fine… i guess it is a “problem” of the display itself.

                      thank you for the fast and easy response

                      your tutorial is realy great i love it. also a noob can work with it!

                      maybe you should add a line with a tip for the Time-delay Adjust

                      1 Reply Last reply Reply Quote 0
                      • K Offline
                        komodoteler @cruunnerr
                        last edited by

                        @cruunnerr Hello, My PIR works completely fine (with method #6, just turn black) but I also plan to build my mirror as floor mirror and wondering the same as @blebbens

                        I tried your suggestion but unfortunately doesn’t seems to work. the screen is on instantly if motion detected. Any other suggestion?

                        1 Reply Last reply Reply Quote 0
                        • 1
                        • 2
                        • 3
                        • 4
                        • 5
                        • 6
                        • 7
                        • 17
                        • 18
                        • 5 / 18
                        • 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