My First Mirror... until now ^^



  • 0_1514954682191_IMG_2076_low_quality.jpg

    Very tinkered cause i am experimenting a lot ^^



  • Hello, is a really awesome mirror really!!!

    one question, how can i get the header over the qr code picture?

    thanks



  • @fischi87

    Just type a header in the config:

    {
        			module: "MMM-EasyPix",
    			header: "WLAN-Code",
    			position: "bottom_left",
    			config: {
    				picName: "guest_wifi_config.png", // Enter the picture file name.
    				maxWidth: "150px",      // Size picture precisely. Retains aspect ratio.
    			}
    		},
    


  • @cruunnerr

    ah yes alright, thanks



  • hi… i have motion detector pir. and a led5050 strip.
    can you please provide the software part between pir and led… for dimming and on off feature … pleeeese
    thx



  • Hey @metalldetector

    I already did somewhere in the forum ^^

    You need to install PIGPIOD.

    sudo apt-get install build-essential python-dev unzip wget

    wget http://abyz.me.uk/rpi/pigpio/pigpio.zip && unzip pigpio.zip && cd PIGPIO && sudo make install

    Connect the PIR like shown at Part 2.2 and follow the guide:
    https://forum.magicmirror.builders/topic/6291/howto-turn-on-off-your-monitor-time-based-pir-button-app?page=1

    When creating the pir.py and fill ist with this code:

    #!/usr/bin/env python
    
    import sys
    import time
    import RPi.GPIO as io
    import subprocess
    import pigpio
    
    io.setmode(io.BCM)
    SHUTOFF_DELAY = 119 # seconds
    PIR_PIN = 25       # 22 on the board
    LED_PIN = 16
    
    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()
    
    

    For the monitor_on.sh use this:

    vcgencmd display_power 1
    
    pigs p 17 1
    pigs p 22 1
    pigs p 24 1
    
    sleep 0.06s
    
    pigs p 17 2
    pigs p 22 2
    pigs p 24 2
    
    sleep 0.06s
    
    pigs p 17 3
    pigs p 22 3
    pigs p 24 3
    
    sleep 0.06s
    
    pigs p 17 4
    pigs p 22 4
    pigs p 24 4
    
    sleep 0.06s
    
    pigs p 17 5
    pigs p 22 5
    pigs p 24 5
    
    sleep 0.06s
    
    pigs p 17 6
    pigs p 22 6
    pigs p 24 5
    
    sleep 0.06s
    
    pigs p 17 7
    pigs p 22 7
    pigs p 24 6
    
    sleep 0.06s
    
    pigs p 17 8
    pigs p 22 8
    pigs p 24 7
    
    sleep 0.06s
    
    pigs p 17 9
    pigs p 22 9
    pigs p 24 8
    
    sleep 0.06s
    
    pigs p 17 10
    pigs p 22 10
    pigs p 24 9
    
    sleep 0.06s
    
    pigs p 17 11
    pigs p 22 11
    pigs p 24 10
    
    sleep 0.06s
    
    pigs p 17 12
    pigs p 22 12
    pigs p 24 11
    
    

    For monitor_off.sh use this:

    pigs p 17 12
    pigs p 22 12
    pigs p 24 11
    
    sleep 0.06s
    
    pigs p 17 11
    pigs p 22 11
    pigs p 24 10
    
    sleep 0.06s
    
    pigs p 17 10
    pigs p 22 10
    pigs p 24 9
    
    sleep 0.06s
    
    pigs p 17 9
    pigs p 22 9
    pigs p 24 8
    
    sleep 0.06s
    
    pigs p 17 8
    pigs p 22 8
    pigs p 24 7
    
    sleep 0.06s
    
    pigs p 17 7
    pigs p 22 7
    pigs p 24 6
    
    sleep 0.06s
    
    pigs p 17 6
    pigs p 22 6
    pigs p 24 5
    
    sleep 0.06s
    
    pigs p 17 5
    pigs p 22 5
    pigs p 24 5
    
    sleep 0.06s
    
    pigs p 17 4
    pigs p 22 4
    pigs p 24 4
    
    sleep 0.06s
    
    pigs p 17 4
    pigs p 22 4
    pigs p 24 4
    
    sleep 0.06s
    
    pigs p 17 3
    pigs p 22 3
    pigs p 24 3
    
    sleep 0.06s
    
    pigs p 17 2
    pigs p 22 2
    pigs p 24 2
    
    vcgencmd display_power 0
    
    sleep 0.06s
    
    pigs p 17 1
    pigs p 22 1
    pigs p 24 1
    
    sleep 0.06s
    
    pigs p 17 0
    pigs p 22 0
    pigs p 24 0
    
    

    Hope that helps. Try to find your best way and ask, if u need more help 🙂

    Edit:
    Oh and u need to start Pigpio on reboot with rc.local. 😉


  • Project Sponsor

    If you told me that your background wasn’t a stock photo I would upvote this! Nice work!



  • Well, meanwhile i changed my background, but still love it 😛

    Bild Text



  • @c😤 ruunnerr ok that works…
    -What ist the Funktion of LED_PIN = 16 .
    Only one pin …
    Do I need RGB pins in the script?

    -And then the led stripe start it’s flickering…
    Thx4yourhelp



  • LED-Pin just shows, if the PIR detects motion. You don’t need to use it.

    The pir.py script starts the other shell scripts when motion is detected.

    So all commands for the RGB-Stripe are within the shell scripts (monitor_on / off.sh).
    And as u can see, i used GPIO 17,22 and 24.
    17 = red
    22 = green
    24 = blue

    To control the LEDs i used PIGPIOD and it’s commands, as i wrote.

    So after installing PIGIOD u can start it with:
    sudo pigpiod

    Commands like pigs p 22 128 will set green to 50%.
    pigs p 24 255 will set blue to 100%

    in the shell script i fade all colors from 1 to 12% with sleeps.

    Edit:

    As i wrote before u need to Autostart pigpiod via rc.local.

    sudo nano /etc/rc.local

    Mine looks 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
    
    iwconfig wlan0 power off &
    
    sleep 5 &
    
    /usr/local/bin/pigpiod
    
    sleep 10 &
    
    /usr/bin/python /home/pi/pir.py &
    
    exit 0