MagicMirror Forum
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • 3rd-Party-Modules
    • Donate
    • Discord
    • Register
    • Login
    1. Home
    2. andi.aw.weiss
    3. Posts
    A New Chapter for MagicMirror: The Community Takes the Lead
    Read the statement by Michael Teeuw here.
    A
    Offline
    • Profile
    • Following 0
    • Followers 0
    • Topics 0
    • Posts 4
    • Groups 0

    Posts

    Recent Best Controversial
    • RE: {HowTo} turn on/off your monitor (Time based, PIR/Button, App)

      @cruunnerr @MadScientist Thanks to both of you . For development/tutorial and support. My MM works. I was probably impatient the whole time I was testing. The relay only switches for the first time after the 120 s have expired. But that’s ok that it only occurs when you restart. I consider the problem solved. THANK YOU

      posted in Tutorials
      A
      andi.aw.weiss
    • RE: {HowTo} turn on/off your monitor (Time based, PIR/Button, App)

      @MadScientist ok it seems to be working now. However, the relay switches the first time after the 120 s have expired and a movement is detected. not previously. The change quote: “io.output(RELAY_PIN, False)” and for monitor off “io.output(RELAY_PIN, True)” only causes the relay to work in reverse. I now use this script:

      #!/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 = 17    # 11 on the board (optional): It just shows detection time of PIR without delay time
      RELAY_PIN = 27  # 13 on the board
      
      def main():
          io.setup(PIR_PIN, io.IN)
          io.setup(LED_PIN, io.OUT)
          io.setup(RELAY_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():
              io.output(RELAY_PIN, True)
      
      def turn_off():
              io.output(RELAY_PIN, False)
      
      if __name__ == '__main__':
          try:
              main()
          except KeyboardInterrupt:
              io.cleanup()
      

      where could the error lie? or is that how it should be? Thank you MadScientist

      posted in Tutorials
      A
      andi.aw.weiss
    • RE: {HowTo} turn on/off your monitor (Time based, PIR/Button, App)

      @MadScientist Hey, unfortunately the problem hasn’t changed. I have now like you said the script from 5.2. The problem remains. PIR detects motion. Relay does not switch. :loudly_crying_face: I don’t know

      posted in Tutorials
      A
      andi.aw.weiss
    • RE: {HowTo} turn on/off your monitor (Time based, PIR/Button, App)

      Hello everyone, I’m getting desperate. I’ve now read the entire tutorial but I can’t find my mistake.

      I am using my MM with a PIR sensor and would like to switch the backlight of the display with a relay. so i use this script pir.py:

      #!/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()
      
      

      Unfortunately, when I run this script in the terminal, I only get the feedback from the PIR sensor (…) but the relay is not switched. But if I run the monitor_on.sh or monitor_off.sh script it works:

      monitor_on.sh

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

      monitor_off.sh

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

      But the PIR.py doesn’t work. Where could the mistake lie?

      Many greetings Andreas

      posted in Tutorials
      A
      andi.aw.weiss
    • 1 / 1