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

    Posts

    Recent Best Controversial
    • RE: PIR-Sensor - put your mirror to sleep if not used

      Using motion detection to switch your mirror on and off is very appealing. PIRs are a good option and Paviro’s module does a wonderful job. However, for an aesthetic point of view, I would like to mount the motion sensor behind the mirror, i.e. in such a way you can’t see the sensor. Since glass absorbs the light the PIR is sensitive to, PIRs (or at least the ones I tested, played with sensitivities as well) are not the best option. I played around a bit and found an alternative solution based on the Picamera, OpenCV and Paviro’s MMM-PIR module.

      Downsides include having to run a python program next to the Magic Mirror. On a RPi3 it this is not a problem and is in my view therefore a rather minor drawback. If you run your MM on a RPi2, this may be an issue. Getting this to work also requires a non-trivial installation of OpenCV. However, thanks to the fantastic people over at PyImageSearch, detailed instructions are available. Upsides of this solution are: motion detection using a camera from behind the glass and the possibility to upload a photo taken by the camera each time it detects motion to your dropbox account.

      Steps to follow:

      • Disable the red LED on the Picamera by adding disable_camera_led = 1 to \boot\config.txt
        (you don’t want to see red LED of the camera when looking at your mirror)
      • Install a full version of OpenCV on the RPi. Detailed instructions can be found here
      • Follow the two part tutorial on writing a python based code for motion detection: Part I and Part II
      • Modify the python program found on the second page to generate a 3.3 V signal on a specified pin when the camera detects motion. This pin (pin 4 below) is then connected by a wire to the pin you specified in the MMM-PIR section of the MM config.js file. My modifications to the python code are:

      On line 14 of the python code, add:

      import RPi.GPIO as GPIO
      GPIO.setmode(GPIO.BCM)
      OPENCV_pin = 4 # specify whatever pin you want to generate the 3.3 V at when motion is detected.
      GPIO.setup(OPENCV_pin, GPIO.OUT)
      

      On line 26 add:

      UnoccupiedCounter = 0
      NumUnoccFramesSwitchOff = conf["fps"] * conf["time_to_switch_off"]
      
      

      On line 108 insert:

      UnoccupiedCounter = 0
      if GPIO.input(OPENCV_pin) == 0 # check if openCV pin is high or low. If low, turn high
               GPIO.output(OPENCV_pin,1)
               print "Switched Mirror ON"
      

      On line 137 insert:

      UnoccupiedCounter =  UnoccupiedCounter + 1
      if UnoccupiedCounter = numUnoccFramesSwitchOff and GPIO.input(OPENCV_pin)==1:
               GPIO.output(OPENCV_pin, 0)
               print "Switched Mirror OFF"
      
      • Add "time_to_switch_off": 30 to the conf.json file. Don’t forget to add the comma behind the previous entry.
      • Optional but recommended to get a clean exit:
        Insert the whole for loop in a try statement.
        Between line 53 and 54, add
      try: 
      

      Don’t forget to indent all the code that comes next. Add the very bottom, add:

      except KeyboardInterrupt:
            print "Stopped camera surveillance" # exit the program when you press CNRL +C
      
      except: 
            print "Other error or exception occurred!" # catch all other errors
      
      finally:
           GPIO.cleanup() # this ensures a clean exit.
      

      I hope the above is of use to some of you.

      posted in System
      IngmarSwartI
      IngmarSwart
    • RE: PIR-Sensor - put your mirror to sleep if not used

      @paviro I finally found some time to look into the problem I had some more. The exact origin is still unclear to me, but I did figure out that my problem, it is not related to your module, or the MM software in general. I got the same behaviour over ssh: tvservice -o switches the monitor connected to the Pi off, tvservice -p switches it back on, but the screen would appear black. After fiddling around a little bit, I found another solution that does not require root rights. Instead of using the sudo chvt 7 && sudo chvt 9 command, the problem can also be solved using fbset. My modified version of the activateMonitor function file node_helper.js:

      activateMonitor: function () {
          if (this.config.relayPIN != false) {
            gpio.digitalWrite(this.config.relayPIN, this.config.relayOnState)
          }
          else if (this.config.relayPIN == false){
            exec("/opt/vc/bin/tvservice -p", null);
            exec("/bin/fbset -depth 8 && /bin/fbset -depth 16 ", null);
            exec("/usr/bin/xrefresh",null);
          }
      

      For the command xrefresh to work when given via ssh, the correct display variable has to be set (in my case):
      export DISPLAY=:0 I have added this line to my .profile file in the /home/pi directory so that I don’t have to type it every time I log in via ssh.

      posted in Troubleshooting
      IngmarSwartI
      IngmarSwart
    • Forecast lines

      Dear all,

      I love biking to work. Just not so much when it rains. Since it rains quite a bit where I live (the Netherlands), it would be very useful if I could simply look at the Magic Mirror to see when it will rain (and how much). I’m thinking of a module that displays graphs such as those being shown at e.g. http://forecast.io/lines/, in particular the ‘next hour’ one. Another example of such a graph can be found here: http://www.buienalarm.nl/location/utrecht (in Dutch)

      It is relatively easy to show radar maps such as those at http://www.buienradar.nl/ on the Magic Mirror. Unfortunately, these maps are in green and blue. Not the optimal colours for the magic mirror if you ask me. I don’t have the NodeJS/Javascript skills to create a module showing graphs showing the expected precipitation. Any suggestions where to start and/or help coding this module are most welcome!

      posted in Requests
      IngmarSwartI
      IngmarSwart
    • 1 / 1