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

Want to turn off my monitor

Scheduled Pinned Locked Moved Troubleshooting
monitorpower-saving
27 Posts 9 Posters 22.4k Views 7 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.
  • R Offline
    randomnoise
    last edited by Jan 16, 2018, 11:02 PM

    For simple time based screen on & off check https://github.com/ianperrin/MMM-ModuleScheduler

    R 1 Reply Last reply Jan 16, 2018, 11:04 PM Reply Quote 0
    • R Offline
      randomnoise @randomnoise
      last edited by Jan 16, 2018, 11:04 PM

      Sorry, should say you combine with the remote control module to send screen off notifications.

      1 Reply Last reply Reply Quote 0
      • R Offline
        robmcc83
        last edited by Jan 16, 2018, 11:45 PM

        So I’ve been looking through the net and have found I can use vcgencmd display_power 0 to turn off my monitor and the same again to power 1 to turn it back on, it also explains it can be run as a cron job but I’ve never done one of them so not to sure.
        Would it all be possible to hook up a push button switch to the gpio and have them commands somehow turn the display off and on.
        Thanks

        1 Reply Last reply Reply Quote 1
        • D Offline
          doubleT Module Developer
          last edited by doubleT Jan 17, 2018, 6:57 AM Jan 17, 2018, 6:56 AM

          Don’t forget that the monitor will still be on, it’s just in standby, still consuming power. The Pi can’t switch the power of the monitor itself off.

          1 Reply Last reply Reply Quote 0
          • R Offline
            robmcc83
            last edited by Jan 17, 2018, 9:37 AM

            Yeah cheers I’m aware of that, it’s just monitor uses 37w whilst on and 2w in standby so I really don’t mind it being in standby at night.
            I think I’m going to look into mmm-remote as trying the other method using vgenmcd power makes my screensaver come back to life even though it’s Been disabled for the last 8 months.
            Is there any tutorials anywhere in setting up mmm-schedule and mmm-remote.
            Cheers all

            1 Reply Last reply Reply Quote 0
            • R Offline
              robmcc83
              last edited by Jan 20, 2018, 11:27 AM

              Ok so after trying various ways to get my monitor to turn off I have still been unsuccessful.
              What I am trying now is with a webcam.
              I found in my box of computer bits a Microsoft lifecam hd 3000.
              After a little Google research I can confirm the webcam works with the pi using motion software.
              I also found a site explaining how I can add a start and and event on detection so I set vgencmd display_power 1 as start event and vgencmd display_power 0 as end event but still no luck it just keeps display on but if I enter the command in terminal my display turns on/off as it should.
              Am I going about this in the most awkward way or is there a simple way to get the monitor to sleep using the usb webcam.
              Thanks in advance

              M 1 Reply Last reply Jan 20, 2018, 2:26 PM Reply Quote 0
              • M Offline
                Mykle1 Project Sponsor Module Developer @robmcc83
                last edited by Mykle1 Jan 20, 2018, 2:29 PM Jan 20, 2018, 2:26 PM

                @robmcc83

                You could try this for ON

                if (something) {
                exec("/opt/vc/bin/tvservice -o", null); }

                And this for OFF

                { exec("/opt/vc/bin/tvservice --preferred && sudo chvt 6 && sudo chvt 7", null); }

                Or

                { exec('xset dpms force on', null); }
                { exec('xset dpms force off', null); }

                Create a working config
                How to add modules

                M 1 Reply Last reply Jan 21, 2018, 1:03 AM Reply Quote 2
                • C Offline
                  cruunnerr
                  last edited by cruunnerr Jan 20, 2018, 9:12 PM Jan 20, 2018, 2:53 PM

                  did u try:

                  sudo tvservice -o to turn off your Monitor
                  sudo tvservice -p to turn on your monitor
                  ?

                  If this isn’t working i think your Monitor or your HDMI Cable are not supporting CEC.

                  If this works u have several options.
                  For example u can create two *.sh files and make them executable. Put these scripts into cronjob file for time based turning on or off the monitor.
                  Or u can use a PIR or a simple Button to do that. Let me give you a small software tutorial for this example:

                  Tutorial beginning:

                  cd
                  nano monitor_on.sh (creates the file)

                  write this in this file:

                  sudo tvservice -p
                  

                  save with “ctrl+x” and say “y” to save the file.

                  nano monitor_off.sh

                  write this in this file:

                  sudo tvservice -o
                  

                  save with “ctrl+x” and say “y” to save the file.

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

                  So now you have two options. Write a python script to automatically start the shell scripts by using a GPIO or just put the Shell scripts into a cronjob.

                  Here is the first way:

                  nano pir.py (creates a script which executes the *.sh files via PIR or Button)

                  write this into the file:

                  #!/usr/bin/env python
                  
                  import sys
                  import time
                  import RPi.GPIO as io
                  import subprocess
                  
                  io.setmode(io.BCM)
                  SHUTOFF_DELAY = 119 # in seconds, how long the monitor will be on until next button press or PIR detection
                  PIR_PIN = 25       # 22 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 say “y” to save the file.

                  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 some …
                  End the test with “ctrl+c”

                  now we editing the rc.local to start the script after booting the Pi:

                  sudo nano /etc/rc.local

                  write this in the file (above the “exit 0”):

                  python /home/pi/pir.py &

                  save with “ctrl+x” and say “y” to save the file.

                  after all it should look like this:

                  #!/bin/sh -e
                  #
                  # rc.local
                  #
                  # This script is executed at the end of each multiuser runlevel.
                  # Make sure that the script will "exit 0" on success or any other
                  # value on error.
                  #
                  # In order to enable or disable this script just change the execution
                  # bits.
                  #
                  # By default this script does nothing.
                  
                  # Print the IP address
                  _IP=$(hostname -I) || true
                  if [ "$_IP" ]; then
                    printf "My IP address is %s\n" "$_IP"
                  fi
                  
                  python /home/pi/pir.py
                  
                  exit 0
                  

                  Here comes the second way:

                  Next steps we will do as root to be sure it works. Maybe not the best way, but i am just a simple guy, who is still learning the stuff. ^^
                  Lets say we want to turn on the monitor every day at 6am and turn off at 8pm:

                  sudo nano /etc/crontab (to open the crontab)

                  write this into the file:
                  0 6 * * * /home/pi/monitor_on.sh
                  0 20 * * * /home/pi/monitor_off.sh

                  this should look like this:

                  # /etc/crontab: system-wide crontab
                  # Unlike any other crontab you don't have to run the `crontab'
                  # command to install the new version when you edit this file
                  # and files in /etc/cron.d. These files also have username fields,
                  # that none of the other crontabs do.
                  
                  SHELL=/bin/sh
                  PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
                  
                  # m h dom mon dow user  command
                  17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
                  25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
                  47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
                  52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
                  0 6     * * *   root      /home/pi/monitor_on.sh
                  0 20    * * *   root      /home/pi/monitor_off.sh
                  #
                  

                  I wrote this just out of my head so i hope i didn’t forget anything.

                  Tutorial ending!

                  That is just an example of using a GPIO to turn off and on your monitor via HDMI-CEC.
                  How i said, if your monitor or cable doesn’t support this u need to choose another way (turn a relays on and off to the power supply of the monitor e.g.)

                  edit:

                  sorry @mykle1, did not notice that you already answered, because I already started to write while you answered :D

                  M J 2 Replies Last reply Jan 20, 2018, 3:13 PM Reply Quote 1
                  • M Offline
                    Mykle1 Project Sponsor Module Developer @cruunnerr
                    last edited by Jan 20, 2018, 3:13 PM

                    @cruunnerr

                    No worries, mate. I hope to learn something from your answer. (which is totally amazing to me)

                    Peace!

                    Create a working config
                    How to add modules

                    1 Reply Last reply Reply Quote 0
                    • R Offline
                      robmcc83
                      last edited by Jan 20, 2018, 5:11 PM

                      Thanks this is very useful information that I didn’t know before.
                      I have issued the sudo tvservice -o command and it did indeed shut down my monitor.
                      But what I am trying at the moment is to have it shutdown and wakeup the monitor with a usb webcam now.
                      That’s what I’m struggling with.
                      Cheers

                      1 Reply Last reply Reply Quote 0
                      • 1
                      • 2
                      • 3
                      • 2 / 3
                      2 / 3
                      • First post
                        11/27
                        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