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.6k 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.
    • M Offline
      MadScientist
      last edited by

      Thank you so much!

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

        @MadScientist
        Alright…

        Because your relay turns on i think you did everything right. Probably there is a problem with your Module installation… but thats just a guess. Maybe u didn’t give the module the rights to turn on gpio’s?
        sudo usermod -a -G gpio pi (the „pi“ at the end stands for your username)

        If u did that and it doesn’t work at all you can try to do it with an external script. Follow these steps:

        cd
        nano monitor_on.sh

        put in this:

        gpio -g mode 27 out
        sleep 0.2
        gpio -g write 27 1
        

        save with “ctrl+x” and “y”

        nano monitor_off.sh

        put in this:

        gpio -g mode 27 out
        sleep 0.2
        gpio -g write 27 0
        

        save with “ctrl+x” and “y”

        chmod +x monitor_on.sh (to make it executable)
        chmod +x monitor_off.sh

        nano pir.py

        put in 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
        PIR_PIN = 22       # 15 on the board (this needn't to be a PIR. Can be a button also)
        LED_PIN = 16      # optional
        
        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:
                        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()
        

        save with “ctrl+x” and “y”

        chmod +x pir.py

        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”

        The Shutoff delay in the script defines how long the relay will be turned on after detection through the pir.

        If that works u can add the script to the rc.local to start it automatically when booting up.

        1 Reply Last reply Reply Quote 1
        • M Offline
          MadScientist
          last edited by MadScientist

          Ok, I did all that and I do get the “…” when I run the pir.py, but the relay doesn’t get triggered. Tried the monitor_oX.sh with and without sudo. Maybe I should just start all over new. Everything seems to be a bit messed up. I reverted back to motion detector only and also that isn’t working anymore in MM.

          Edit: Started a new thread here.

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

            @MadScientist
            sorry, did a mistake. I edited my post above. just edit the *.sh files.

            1 Reply Last reply Reply Quote 1
            • M Offline
              MadScientist
              last edited by

              Thanks a lot to cruunnerr, who has the patience of an angel!

              I think there were two problems in my case and I write them here in case someone else has trouble getting the PIR+relay to work.

              First: By installing the MMM-PIR-sensor module I used the wrong wiring-pi. npm install wiring-pi installs an old version (2.25) which - so I’ve read - doesn’t work with the Raspberyy Pi 3. It’s best to install wiringpi according to this site.

              Second: I used a relay which was supposed to run on 3V to 7V, but apparently that’s not the case. I guess the seller shipped the wrong relay. So I had an old relay lying around which should only run on 5V but it works nicely on my RPi.

              Now everything is working, except I get some phantom triggers of the relay every couple of minutes. But I will look into it once everything is set up completely. Maybe I have something around here that can trigger the PIR sensor even if it’s covered by a cloth.

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

                @MadScientist

                that is nice to know… So wiring-pi installs an old version?! Than i need to update my tutorial ^^Thanks mate

                And how do you connect the relay? What relay do u use? is it active low or active high? U can try to connect a transistor or an pull up/down resistor to it, so that should disable the trigger from it. If u want to try i can send an image how to connect. It can also be, that your Power supply of the RPi is to small…

                1 Reply Last reply Reply Quote 0
                • M Offline
                  MadScientist
                  last edited by

                  The is connected to pin 15 (GPIO 27), 17 (3.3V), and 20 (GND). I tried to post a link to the it, but then this post is flagged as spam. It’s just a cheap relay from Aliexpress.

                  No idea if that relay is active high or low, but does it matter? It just switches between to connections, so if the relay port 1-2 or 2-3 are active shouldn’t matter, right?

                  I am using a 3.1A power supply for the Pi. Later I will connected it via a 8A buck-boost-module to a 12V/5A power supply that will power the screen. The Pi will get the power from before the relay so it won’t switch itself off ;-)

                  Please send a picture, I will gladly try, once I have the extra party I might need (transistor or resistor).

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

                    I am sorry bro, but u did it wrong :(

                    U need to connect the relay with the 5v pin! Look at my tutorial at around Point 5. There is a picture how to connect. Just leave the button away

                    Relay                        Raspberry
                    +                            Pin 2 or 4 (5V)
                    -                            Pin 6 or any other GND (GND)
                    in                           PIN 13 (GPIO 27)
                    
                    1 Reply Last reply Reply Quote 0
                    • M Offline
                      MadScientist
                      last edited by

                      I did that in the very beginning but then relay isn’t working at all. It only works with 3.3V. No idea why.

                      1 Reply Last reply Reply Quote 0
                      • randomnoiseR Offline
                        randomnoise @MadScientist
                        last edited by

                        @MadScientist

                        Now everything is working, except I get some phantom triggers of the relay every couple of minutes. But I will look into it once everything is set up completely. Maybe I have something around here that can trigger the PIR sensor even if it’s covered by a cloth.

                        That pretty much sums up my experience as well… I used to have the pir module working great (I didn’t use a relay, just screen off/on). It started acting up so I tried all of the following:
                        Using script
                        Putting pir sensor in a box to avoid trigger sources
                        A different pir sensor (same type as I had previously working)
                        Completely different type of pir sensor
                        Complete rebuild of pi from scratch & reinstall mm.
                        An acoustic noise driven sensor.

                        No matter what I did I get random triggers usually every couple of mins. All I can think is its either an issue with the input ‘floating’ and being pulled down (all though tried pull up & pull down option in wiring pi).

                        Only thing I can think is that I’ve possibly fried my gpio somehow.

                        Anyway I went with a pir / relay which is stand alone so doesn’t use the pi to turn monitor on / off.

                        Be interested if you ever manage to resolve the random triggers.

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