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

PIR sensor / wakes screen up when audio is detected

Scheduled Pinned Locked Moved System
2 Posts 1 Posters 2.1k Views 2 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.
  • A Offline
    andr1
    last edited by May 10, 2017, 5:49 PM

    I needed a “module” that wakes my mirror up when i started playing audio from it… here’s the python code and shell scripts needed…

    import RPi.GPIO as GPIO
    import time
    import subprocess
    isMonitorOn = False
    isPlaying = False
    sleepyTimer = 180                       #seconds until mirror goes to sleep
    i = 0
    counter = 0
    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(4, GPIO.IN)
    print "Starting up!"
    print isPlaying
    while True:
           i=GPIO.input(4)
           print counter
           proc = subprocess.Popen('./isMonitorOn.sh', stdout=subprocess.PIPE)
           isMonitorOn = bool(proc.stdout.read())
           proc1 = subprocess.Popen('./isAudioOn.sh', stdout=subprocess.PIPE)
           isPlaying = bool(proc1.stdout.read())
           if i==0:
              counter += 1
              if not isMonitorOn:
                if isPlaying:
                  subprocess.call("./wakeUp.sh")
                  isMonitorOn = True
              if isMonitorOn:
                if isPlaying:
                  counter = 0
                if counter >= sleepyTimer:
                  subprocess.call("./sleep.sh")
                  isMonitorOn = False
                  counter = 0
              time.sleep(1)
           elif i==1:
              counter = 0
              if isMonitorOn:
                time.sleep(1)
              else:
                subprocess.call("./wakeUp.sh")
                time.sleep(1)
    
    

    wakeUp.sh includes:

    #!/bin/bash
    /opt/vc/bin/tvservice --preferred && sudo chvt 6 && sudo chvt 7
    
    

    sleep.sh includes:

    #!/bin/bash
    /opt/vc/bin/tvservice -o
    

    isMonitorOn.sh includes

    #!/bin/bash
    isMonitorOn=$(/opt/vc/bin/tvservice --status | grep off | wc -l)
    if [ "$isMonitorOn" = "0" ]; then
      echo True
    fi
    

    isAudioOn.sh includes

    #!/bin/bash
    if grep -q RUNNING /proc/asound/card*/pcm*/sub*/status; then echo "True"; fi
    

    Python and Bash scripts need to be in the same folder!

    for now i’m running this via screen

    screen -dmS smartMotion python smartMotion.py
    

    connect to screen session

    screen -r smartMotion
    

    detatch from session

    CTRL + A + D
    
    1 Reply Last reply Reply Quote 2
    • A Offline
      andr1
      last edited by May 20, 2017, 2:22 PM

      remember to do chmod +x shellscriptname.sh

      1 Reply Last reply Reply Quote 0
      • 1 / 1
      • 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