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

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

Scheduled Pinned Locked Moved Tutorials
171 Posts 39 Posters 219.3k 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 Jan 24, 2018, 7:21 AM

    Two minutes if you know what you’re doing…
    The problem is I don’t have a button. I did create the relay.py script and run it. It triggers the relay exactly once and then stays like this. I can’t even stop the script anymore once it’s running…

    Man, I really thought setting up the relay would be as easy as adding one line to the config. Wish I had tried to set it up earlier.

    Still need help with this. :-(

    1 Reply Last reply Reply Quote 0
    • C Offline
      cruunnerr
      last edited by Jan 24, 2018, 8:04 AM

      Ah I see…
      I will write u this evening. We will get it working ;)

      1 Reply Last reply Reply Quote 0
      • M Offline
        MadScientist
        last edited by Jan 24, 2018, 8:09 AM

        Thank you so much!

        1 Reply Last reply Reply Quote 0
        • C Offline
          cruunnerr
          last edited by cruunnerr Jan 25, 2018, 10:11 AM Jan 24, 2018, 12:24 PM

          @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 Jan 24, 2018, 7:12 PM Jan 24, 2018, 1:41 PM

            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
            • C Offline
              cruunnerr
              last edited by cruunnerr Jan 24, 2018, 8:26 PM Jan 24, 2018, 8:06 PM

              @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 Jan 25, 2018, 5:03 PM

                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.

                R 1 Reply Last reply Jan 26, 2018, 10:38 AM Reply Quote 0
                • C Offline
                  cruunnerr
                  last edited by Jan 26, 2018, 7:14 AM

                  @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 Jan 26, 2018, 10:26 AM

                    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
                    • C Offline
                      cruunnerr
                      last edited by Jan 26, 2018, 10:33 AM

                      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
                      • 1
                      • 2
                      • 3
                      • 4
                      • 5
                      • 17
                      • 18
                      • 3 / 18
                      3 / 18
                      • First post
                        26/171
                        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