• 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 20.9k 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 @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
                    • R Offline
                      robmcc83
                      last edited by Jan 20, 2018, 5:19 PM

                      One interesting thing I like about the second way is it seems easy :) lol.

                      Would it be possible to say have the screen come on 6-9am in the morning Monday to Friday then come on again 4-10pm as everyone out at work or school during the day. Than say set it so that its on 8am till 10pm on a saturday and sunday when everyone is usually about.

                      Thanks

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