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.

    Snilles Magic Mirror Project

    Scheduled Pinned Locked Moved Show your Mirror
    44 Posts 13 Posters 66.5k Views 19 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.
    • G Offline
      grillchips
      last edited by

      Really nice work! I would like to know some more about your hardware, especially mirror type (seller, price etc) and what type of touch panel you’re using.
      Still in the planning stage of my build but since I’m doing all the software myself I still have some time to sort everything out. :D

      SnilleS 1 Reply Last reply Reply Quote 0
      • SnilleS Offline
        Snille Module Developer @grillchips
        last edited by Snille

        @grillchips Hi! Thank you. I’m using a Pilkington MirrorView mirror. It’s a 50/50 mirror (bought it through my work) and it work well when it’s normal lighting I think. If I open the door in the hallway and the sun shines in to the hallway it’s hard to see what’s on the screen.
        Then I’m (for now) using a Raspberry Pi 3 and a IR Multitouch Overlay Frame to give the mirror “touch” capability. There where a bit of trickery to the setup of the IR-Frame, you can find the information in this thread.
        Then I’m using a LPD8806 LED Strip to light up behind the frame. Here I’m for the moment using PixelWeb with Bibliopixel 2.x as a back end. It’s not fully integrated yet with the mirror software. I built a small sh script that sends a json string to PixelWebs (in official) API. :)

        Hehe, As you can imagine, it’s still a long way to go on the software part, you know how it is. There is always something that can get a little better… :)

        I think that’s the important bits. Let me know if you want to know more. :)

        If you cant find it, make it and share it!
        Modules: MMM-homeassistant-sensors, MMM-Modulebar, MMM-Profilepicture, MMM-Videoplayer

        1 Reply Last reply Reply Quote 0
        • cowboysdudeC Offline
          cowboysdude Module Developer
          last edited by

          Any chance we can get some close ups? :)

          SnilleS 1 Reply Last reply Reply Quote 0
          • SnilleS Offline
            Snille Module Developer @cowboysdude
            last edited by

            @cowboysdude Sure, what would you like to see? In the google gallery (the link above) there are lots of “close ups” but is it something in particular you are interested in?

            If you cant find it, make it and share it!
            Modules: MMM-homeassistant-sensors, MMM-Modulebar, MMM-Profilepicture, MMM-Videoplayer

            cowboysdudeC 1 Reply Last reply Reply Quote 0
            • cowboysdudeC Offline
              cowboysdude Module Developer @Snille
              last edited by

              @Snille Sorry didn’t see the link!! That looks awesome. The bottom is a touch menu If I"m thinking correctly?

              Please do share how you have the LED’s working for backlight… I’m very interested in that! :)

              SnilleS 1 Reply Last reply Reply Quote 0
              • SnilleS Offline
                Snille Module Developer @cowboysdude
                last edited by Snille

                @cowboysdude Thank you!! :) The LEDs you say. :) Ok, for the moment, the mirror is not “aware” of the leds. This is something I’m planing to implement. But as it works now I’m using PixelWeb with Bibliopixel 2.x as a back end. Then I’m using the below sh script to trigger different (predefined so far) animations.

                #!/bin/bash
                #-----------------------------------------------------------------------------
                # 
                # Snilles MagicMirror Led Conrol Script.
                # Use in conjunction with PixelWEB.
                #
                #-----------------------------------------------------------------------------
                # Connfigure here!
                # URL to PixelWEB API On the MM.
                apiurl="http://x.x.x.x:8081/api";
                # Default program if no argument is set.
                defprog="back";
                # Default red amount if non is set.
                defred="45";
                # Default green amount if non is set.
                defgreen="30";
                # Default blue amount if non is set.
                defblue="0";
                # Default brightness amount.
                defamount="50";
                
                ## -------------------------- Dont edit below!! --------------------------- ##
                
                while [[ $# -gt 0 ]] ; do
                	case $1 in
                		-h|-\?|--help)
                			echo "Usage: mirrorleds.sh -p or --program [back, running, alarm, rainbow or thunder (rainbow and thunder needs no colors)] -r or -red [0-255] -g or --green [0-255] -b or --blue [0-255] -a or --amount [0-255]";
                			exit;
                			;;
                		-p|--program)            
                			if [ -n "$2" ]; then
                				program="$2"
                				shift
                			else
                				program="$defprog"
                			fi
                			;;
                		-r|--red)
                			if [ -n "$2" ]; then
                				if [[ "$2" == ?(-)+([0-9]) ]]; then
                					if [ "$2" -gt "255" ]; then
                						red="255"
                					elif [ "$2" -lt "0" ]; then
                						red="0"
                					else 
                						red="$2"
                					fi
                					shift
                				else
                					red="$defred"
                				fi
                			fi
                			;;
                		-g|--green)
                			if [ -n "$2" ]; then
                				if [[ "$2" == ?(-)+([0-9]) ]]; then
                					if [ "$2" -gt "255" ]; then
                						green="255"
                					elif [ "$2" -lt "0" ]; then
                						green="0"
                					else 
                						green="$2"
                					fi
                					shift
                				else
                					green="$defgreen"
                				fi
                			fi
                			;;
                		-b|--blue)
                			if [ -n "$2" ]; then
                				if [[ "$2" == ?(-)+([0-9]) ]]; then
                					if [ "$2" -gt "255" ]; then
                						blue="255"
                					elif [ "$2" -lt "0" ]; then
                						blue="0"
                					else 
                						blue="$2"
                					fi
                					shift
                				else
                					blue="$defblue"
                				fi
                			fi
                			;;
                		-a|--amount)
                			if [ -n "$2" ]; then
                				if [[ "$2" == ?(-)+([0-9]) ]]; then
                					if [ "$2" -gt "255" ]; then
                						amount="255"
                					elif [ "$2" -lt "0" ]; then
                						amount="0"
                					else 
                						amount="$2"
                					fi
                					shift
                				else
                					amount="$defamount"
                				fi
                			fi
                			;;
                	esac
                	shift
                done
                
                # Default program if non was given. 
                if [ -z "$program" ]; then
                	program="$defprog"
                fi
                
                # Default red amount if non was given. 
                if [ -z "$red" ]; then
                	red="$defred"
                fi
                
                # Default green amount if non was given. 
                if [ -z "$green" ]; then
                	green="$defgreen"
                fi
                
                # Default blue amount if non was given. 
                if [ -z "$blue" ]; then
                	blue="$defblue"
                fi
                
                # Default amount if non was given.
                if [ -z "$amount" ]; then
                	amount="$defamount"
                fi
                
                
                # Compose the colors
                colors="$red,$green,$blue";
                
                # 22 Pixel Alarm
                if [ "$program" == "alarm" ]; then
                	curl -H "Content-Type: application/json" -X POST --data '{"action":"startAnim","config":{"id":"ColorChase","config":{"end":-1,"start":0,"width":22,"color":['$colors']},"run":{"amt":1,"fps":300,"seconds":null,"max_steps":0,"untilComplete":false,"max_cycles":1}}}' $apiurl;
                fi
                
                # Rainbowalarm (multi color spinning)
                if [ "$program" == "rainbow" ]; then
                	curl -H "Content-Type: application/json" -X POST --data '{"action":"startAnim","config":{"id":"ColorPattern","config":{"colors":[[255,0,0],[255,165,0],[255,255,0],[0,255,0],[0,0,255],[128,0,128]],"width":20},"run":{"amt":1,"fps":300,"seconds":null,"max_steps":0,"untilComplete":false,"max_cycles":1}}}' $apiurl;
                fi
                
                # 1 Running Pixel
                if [ "$program" == "running" ]; then
                	curl -H "Content-Type: application/json" -X POST --data '{"action":"startAnim","config":{"id":"ColorChase","config":{"end":-1,"start":0,"width":1,"color":['$colors']},"run":{"amt":1,"fps":40,"seconds":null,"max_steps":0,"untilComplete":false,"max_cycles":1}}}' $apiurl;
                fi
                # Backlight
                if [ "$program" == "back" ]; then
                	curl -H "Content-Type: application/json" -X POST --data '{"action":"startAnim","config":{"id":"ColorPattern","config":{"colors":[['$colors']],"width":1},"run":{"amt":1,"fps":1,"seconds":null,"max_steps":0,"untilComplete":false,"max_cycles":1}}}' $apiurl;
                fi
                
                # Thunder
                if [ "$program" == "thunder" ]; then
                	curl -H "Content-Type: application/json" -X POST --data '{"action":"startAnim","config":{"id":"WhiteTwinkle","config":{"max_led":null,"speed":2,"density":1,"max_bright":'$amount'},"run":{"amt":1,"fps":300,"seconds":null,"max_steps":0,"untilComplete":false,"max_cycles":1}}}' $apiurl;
                fi
                
                # Stop everything
                if [ "$program" == "stop" ]; then
                	curl -H "Content-Type: application/json" -X POST --data '{"action":"stopAnim"}' $apiurl;
                fi
                
                # Add a new line...
                echo $"";
                

                Then I’m using Alexa (for now) to trigger different animations (via the HA-Bridge server). But later on this will be triggered by a module that “picks up” other modules communication so I can animate the leds depending on for example weather events, calendar events, memo events or whatever I can figure out. :) I just have to convince my wife that animating the leds IS a good thing… :)

                If you cant find it, make it and share it!
                Modules: MMM-homeassistant-sensors, MMM-Modulebar, MMM-Profilepicture, MMM-Videoplayer

                cowboysdudeC 1 Reply Last reply Reply Quote 1
                • cowboysdudeC Offline
                  cowboysdude Module Developer @Snille
                  last edited by

                  @Snille Awesome, Thank you!

                  1 Reply Last reply Reply Quote 0
                  • SnilleS Offline
                    Snille Module Developer
                    last edited by

                    I just added a quick comment on all the pictures in the gallery so you know what you are looking at. :)

                    If you cant find it, make it and share it!
                    Modules: MMM-homeassistant-sensors, MMM-Modulebar, MMM-Profilepicture, MMM-Videoplayer

                    cowboysdudeC 1 Reply Last reply Reply Quote 1
                    • cowboysdudeC Offline
                      cowboysdude Module Developer @Snille
                      last edited by

                      @Snille That is just awesome! Thank you!

                      1 Reply Last reply Reply Quote 0
                      • yawnsY Offline
                        yawns Moderator
                        last edited by

                        Like cowboysdude I totally missed the link to your google gallery. The build is very amazing, I am a bit jealous on the 3D printer :)

                        Very nice!

                        SnilleS 1 Reply Last reply Reply Quote 0
                        • SnilleS Offline
                          Snille Module Developer @yawns
                          last edited by

                          @yawns Thank you! :) I know the post is way to long, but when I see others builds, I always want to know how they did things. So I just included all the information at the top. So people don’t have to ask for it. :)

                          If you cant find it, make it and share it!
                          Modules: MMM-homeassistant-sensors, MMM-Modulebar, MMM-Profilepicture, MMM-Videoplayer

                          yawnsY 1 Reply Last reply Reply Quote 1
                          • yawnsY Offline
                            yawns Moderator @Snille
                            last edited by

                            @Snille said in Snilles Magic Mirror Project:

                            I know the post is way to long, but when I see others builds, I always want to know how they did things. So I just included all the information at the top

                            In fact I read your post, I just did not notice the “see here” link under your photo :)
                            I do like to see how others created their mirror (or other things)

                            SnilleS 1 Reply Last reply Reply Quote 0
                            • SnilleS Offline
                              Snille Module Developer @yawns
                              last edited by Snille

                              @yawns Hehe, yes. If you are about to buy a 3D-Printer, I can recommend a PRUSA 3D-Printer. It’s my third printer and it’s by far the best one I have had (I built the first one myself). I’ve been 3D-Printing stuff for about 6 years and it’s great if you really want to get things done your “own” way. :) You can find some of the stuff I’ve done here.

                              If you cant find it, make it and share it!
                              Modules: MMM-homeassistant-sensors, MMM-Modulebar, MMM-Profilepicture, MMM-Videoplayer

                              yawnsY Mykle1M 2 Replies Last reply Reply Quote 1
                              • yawnsY Offline
                                yawns Moderator @Snille
                                last edited by

                                @Snille
                                I just bought a house, currently there is no budget for a 3D printer or any other “toys”. But I will get one in the future. Thanks for the reccomondation

                                1 Reply Last reply Reply Quote 1
                                • Mykle1M Offline
                                  Mykle1 Project Sponsor Module Developer @Snille
                                  last edited by

                                  @Snille said in Snilles Magic Mirror Project:

                                  You can find some of the stuff I’ve done here.

                                  That ball sculpture is crazy cool!!!

                                  Create a working config
                                  How to add modules

                                  SnilleS 1 Reply Last reply Reply Quote 1
                                  • SnilleS Offline
                                    Snille Module Developer @Mykle1
                                    last edited by Snille

                                    @Mykle1 Thank you! :) And I have not yet published all the drawings and files for this this sculpture. :)

                                    If you cant find it, make it and share it!
                                    Modules: MMM-homeassistant-sensors, MMM-Modulebar, MMM-Profilepicture, MMM-Videoplayer

                                    Mykle1M 1 Reply Last reply Reply Quote 3
                                    • Mykle1M Offline
                                      Mykle1 Project Sponsor Module Developer @Snille
                                      last edited by

                                      @Snille

                                      Genius!

                                      Create a working config
                                      How to add modules

                                      1 Reply Last reply Reply Quote 1
                                      • SnilleS Offline
                                        Snille Module Developer
                                        last edited by Snille

                                        @ceddirr I saw your questions about the project… Answers below. :)

                                        First, I forgot to say thank you for your kind words!

                                        Question: “Which order is it? At first the IR frame, then the one way mirror, and finally the screen, is it correct?”

                                        Answer: Correct, from the “front” the IR-Frame is first, placed directly on to the mirror and behind the mirror sits the screen. :)

                                        Question: “I can see that the custom css of the MMM-Memo is already written in css file from the module’s folder. But, how do you manage to use it, and have this look with your memos? Mine are just white and simple… Thank you =)”

                                        Answer: Well, I’m actually not doing so much in the CSS file. The only thing I set in the custom.css is the size of the Memo. The rest is “built in”.

                                        This is the CSS part (in my custom.css file):

                                        /* MMM-Memo -----------------------------------------*/
                                        .MMM-Memo .small {
                                        	font-family: "Roboto Condensed", sans-serif;
                                        }
                                        .note {
                                          width: 500px;
                                          height: 200px;
                                        }
                                        /*****************************************************/
                                        

                                        And this is in my config.js:

                                        {
                                        	module: "MMM-Memo",
                                        	position: "upper_third",
                                        	classes: "default everyone",
                                        	config: {
                                        		memoTitle: "Flyginformation",
                                        		memoDisplayIfEmpty: false,
                                        		memoRotation: -4,
                                        		format: "YYYY-MM-DD - HH:mm",
                                        		memoWidth: 500,
                                        		memoDisplayHeader: true,
                                        		memoDisplayDuration: true,
                                        		memoDisplayId: true,
                                        		memoColorBackground: "LightGoldenrod",
                                        		memoDisplayNotification: true,
                                        	}
                                        },
                                        

                                        You can see all the options for the config on the MMM-Memo’s git.
                                        There are lot’s and lot’s of options for colors and themes. :)

                                        If you cant find it, make it and share it!
                                        Modules: MMM-homeassistant-sensors, MMM-Modulebar, MMM-Profilepicture, MMM-Videoplayer

                                        1 Reply Last reply Reply Quote 3
                                        • G Offline
                                          grillchips
                                          last edited by

                                          I’m about to pull the trigger on the IR touch frame but not really sure how thick it is. The description says it’s about 8.7mm, do you remember if that is somewhat correct for your panel? I don’t always trust Chinese specifications. :D
                                          Feels like the whole mirror frame needs to be quite thick to keep everything in place. The screen I have with the boards on the back is about 5.5cm already, adding the touch frame and mirror glas to that will make it REALLY thick and large…

                                          I know there’s slimmer screens out there but ~5-7cm depth might be what most of us have?

                                          SnilleS 1 Reply Last reply Reply Quote 0
                                          • SnilleS Offline
                                            Snille Module Developer @grillchips
                                            last edited by

                                            @grillchips Yes, it’s correct. I did not measure it exactly, but the description is correct. Give or take 0,5 mm I would say.

                                            If you cant find it, make it and share it!
                                            Modules: MMM-homeassistant-sensors, MMM-Modulebar, MMM-Profilepicture, MMM-Videoplayer

                                            1 Reply Last reply Reply Quote 0

                                            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                            With your input, this post could be even better 💗

                                            Register Login
                                            • 1
                                            • 2
                                            • 3
                                            • 3 / 3
                                            • 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