A New Chapter for MagicMirror: The Community Takes the Lead
Read the statement by Michael Teeuw here.

Subcategories

  • Any suggestions or wishes for the forum?

    95 Topics
    656 Posts
    KristjanESPERANTOK

    @toxeek Just to let you know, I am not part of the core MagicMirror team and my answer is based on my personal interpretation of the situation.

    I wish you every success! 🚀 I would find it interesting if you could tell us about your project later.

  • Change the modul position remote with api or something similar!

    7
    0 Votes
    7 Posts
    623 Views
    P

    Thank you.:folded_hands:
    Then I have to use the remote-control module in a Javascript code to be able to access MMM-Dynamic-Modules. Maybe I can find a code example somewhere on the internet that makes it work too.

  • Help again...

    15
    0 Votes
    15 Posts
    1k Views
    S

    @smart_user the way you are supposed to do it is in config.js

    { module: “compliments”, position: “lower_third” config: { compliments: { anytime: [“Make today worth it!”], morning: [“Good morning!”, “Have a wonderful day”, “It’s your day today!”], afternoon: [“You can do this”, “Take a small nap”, “Enjoy your meal”], evening: [“Exercise time!”, “NO PAIN NO GAIN!”, “Well done for the day!”], “…-01-01”: [“HAPPY NEW YEAR!”], “…-12-25”: [“MERRY CHRISTMAS!”] } } }, { module: “compliments”, header: ‘’, position: “middle”, config:{ compliments: { anytime: [“Make today worth it!”], morning: [“Good morning!”, “Have a wonderful day”, “It’s your day today!”], afternoon: [“You can do this”, “Take a small nap”, “Enjoy your meal”], evening: [“Exercise time!”, “NO PAIN NO GAIN!”, “Well done for the day!”], “…-01-01”: [“HAPPY NEW YEAR!”], “…-12-25”: [“MERRY CHRISTMAS!”] } } }

    and u leave the original code untouched. this way we can change the code, without impacting your configuration

  • Need help - New programmer

    23
    0 Votes
    23 Posts
    2k Views
    S

    @innovation this sample module shows a whole host of things.

    default message that CAN be overridden by one placed in the module config in config.js defaults: { message: "STAY HYDRATED! DRINK A GLASS OF WATER" }, config:{ message: "some message to replace the default" } use of the notification that all modules are loaded and started, to send an event to the node_helper notificationReceived(), ALL_MODULES_STARTED sendSocketNotification the node helper received the config info and does some processing (by using a timer in this example), receiveSocketNotification then sends data back to the module sendSocketNotification() this 'data' is the configured message, the module sends all the config down to the helper, the helper sends back JUST the message to display from the config info it just shows how the parts fit together and communicate with each other

    4a. the module receives the notice from the node_helper, and then setup up to display that data

    socketNotificationReceived()

    4b. the module tells MM that there is new data to display

    updateDom(1000) the module formats the data for display getDom()

    now, the current implementation ONLY sends and displays the message once…
    send down to node_helper, timer, send to module, display

    u want two things

    make message go away display some other message

    but u need something to start the work… after all of the above, there is nothing to do… getDom() ALWAYS displays whatever is in the message variable.

    SO, we could start ANOTHER timer, and when it expires, cause getDom() to display something different (from the same old place)

    the timerRoutine() will do the second part , change the message variable, and tell MM it changed, which calls getDom()

    but some NEW code has to cause the timerRoutine to run…

    for this example, when getDom() runs, lets add some code to run the timerRoutine later

    setTimeout(this.timerRoutine, ???) where ??? is some number of milliseconds
    15000 is 15 seconds (15 seconds times 1000 milliseconds per second)

    so , our updated getDom() looks like this

    getDom (){ var wrapper=createElement("div") wrapper.innerText=this.somestring // use the value of the somestring variable to display setTimeout(this.timerRoutine, 15000) // start a timer, when it expires call our routine return wrapper; }

    so lets look at our timerRoutine
    every time it runs, it will update the counter variable and then create a new message string

    timerRoutine: function(){ this.somestring="some other string "+ this.counter++; this.updateDom(?????) // time_to_delay_in_ms, 0 = immediately }

    updateDom takes a number as a parameter, number of milliseconds…
    how FAST do you want the new info to display??? immediately? or after some time?
    if immediately, then the number is 0

    so, the updated routine looks like this

    timerRoutine: function(){ this.somestring="some other string "+ this.counter++; this.updateDom(0) // time_to_delay_in_ms, 0 = immediately }

    (ps u need to add the counter variable at the top near your defaults, not IN defaults, so that this code will work)

    so, now we have the whole loop, start, send to node_helper, node_helper waits, sends message back, module updates variable, and tells mm we have content, mm calls getDom, which creates the html content to display, starts ANOTHER (one time) timer, and gives the current content to MM.

    and then that timer expires and calls our routine, which changes the variable, and tells MM we have new content, mm calls getDom, which creates the html content to display, starts ANOTHER (one time) timer, and gives the current content to MM.

    repeat this last cycle forever, over and over and over.

    so the displayed message will change every 15 seconds

    so, NOW you want the message to go away, before the next message appears…
    well, we have to start some OTHER timer, OR piggy back on the existing timer…

    lets use a second timer and a second timerRoutine (otherwise the time cycle is 15 seconds on, 15 seconds off
    ----> need to add showMessage:true, to the variables at the top

    timerRoutine2: function(){ this.showMessage= !this.showMessage // this will cause the flagShowMessage to toggle between true and false this.updateDom(0) // time_to_delay_in_ms, 0 = immediately }

    and now we need to fix getDom()

    getDom (){ var wrapper=createElement("div") if(this.showMessage){ // if we should show the message wrapper.innerText=this.somestring // use the value of the somestring variable to display setTimeout(this.timerRoutine2, 5000) // start the timer to CLEAR the message in 5 seconds } // we don't need the negative case, cause we created a new empty div, so it will have nothing to display setTimeout(this.timerRoutine, 15000) // start a timer, when it expires call our routine return wrapper; }

    these are just examples, there are lots of ways to do something like this, up to your imagination…

    write it down on a piece of paper, walk thru it in your native language, get the flow… then write code to match

  • Magic Mirror invocation via Flask-ask Alexa Intent

    2
    0 Votes
    2 Posts
    215 Views
    S

    @ashokkn what is your intent doing? How is it starting mm?

    Line 93 in js/electron.js is a call to Log to print a message to the console

  • Module for German "DSB" (electronic bulletin board)?

    1
    0 Votes
    1 Posts
    178 Views
    kaiK

    Hi there,
    does anyone know if there is a module for the German “Digitales Schwarzes Brett” / DSBmobile (electronic bulletin board for schools)? I couldn’t find one within the 3rd party modules. (Maybe there are some other module sources?)
    I’m sorry I do not have any more information about it, our kids just use the DSBmobile app, and I saw that there is an API.

    It would be great if we could display supply teachers and changes of the class schedule on our magic mirror. :-)

    Any hints appreciated. Thanks a lot.
    May the code be with you
    -kai

  • 1 Votes
    1 Posts
    268 Views
    B

    Hey Guys

    I just completed my first MagicMirror with a pi 3b+ I had with the official Pi 7Inch screen. I love this thing. It sits on my desk while I work. This first project was more of a prototype for what I plan to do. My question is this, does anyone know if there is a working Google Nest Thermostat module that uses the new Google Device Access API? My Nest account was converted last year and sadly I cannot use the current Nest modules out their until they have the api updated to the new one. I really want to integrate this with my Nest but can’t yet.

    Thanks

  • Heads up. New Raspberry PI OS changes sound approach

    1
  • Update auf 2.13.0

    65
    0 Votes
    65 Posts
    12k Views
    A

    Hi guys, so much useful information. I have a brain explosion, and I did not expect to find all this here.
    I was already in despair, I thought that I would order an assignment on the Internet and use the services of the marketing assignment help service.
    But now I understand that I can do everything myself. Guys, thank you for creating this forum and share such useful information.
    How glad I am that I decided to drop by for a few minutes and wasted my time for that. Many thanks to everyone.

  • mirror photobooth

    1
    0 Votes
    1 Posts
    175 Views
    B

    Hi everyone hope 2020 is being kinder to you than many. I am late to the mirror booth photobooth game but wish to build a mirror booth or two. My market doesn’t have tempered two way glass so there is only acrylic. I have a 40 inch tv in stock and a Shuttle PC which has decent specs. I may adapt the back so it is not so roadcase looking just as main market is weddings; and I have seen some providers for the software (open to any suggestions or good experiences)

    My questions are:
    Will two way mirror acrylic work ok to show up the PC screen imagery and withstand the events industry scene?
    with a 40 inch screen would a65 inch touchframe be too big …is 55inch better
    to get gesture control I believe a webcam is needed. I want to fit a DLSR for better quality print out pics in general but on events that insist on gesture control i can use webcam (would the webcam rest on top of how best to integrate both ?

    I am sure I have a million more questions but anyone who has gone the DIY route and learnt along the way and can help me navigate the pitfalls and do the project would be a huge help

    mirror-photobooth-white-frame-Google-Search.png

  • write events to Calendar on MM

    6
    0 Votes
    6 Posts
    827 Views
    D

    Thank you, I have already ordered a microphone and speaker and that is the next module I was going to try.

  • npm patch 6.14.8 -> 6.14.9 ?

    3
    0 Votes
    3 Posts
    302 Views
    C

    Tested on one of raspberrys…no change for this moment

  • Secondary Touch Screen Control Panel

    2
    0 Votes
    2 Posts
    433 Views
    A

    @adam5242 hi, i have the same question : can an instance if MM interact with a 2nd one installed on the same pi??

  • Totally off topic :^')

    27
    2 Votes
    27 Posts
    7k Views
    BKeyportB

    @Miafrance I’d likely go through gimp or something.

  • History of the Magic Mirror

    5
    0 Votes
    5 Posts
    585 Views
    lavolp3L

    @Johannesx0 He has a blog. Or try messaging him directly here on the forum

  • google assistant location

    11
    0 Votes
    11 Posts
    2k Views
    R

    @Bugsounet
    I think he always has the time from england

  • Webcam instead of mirror?

    10
    0 Votes
    10 Posts
    3k Views
    A

    @flipfloplife I know this is a few years later but were you able to figure it out?

  • google assistant / carousel

    1
    0 Votes
    1 Posts
    168 Views
    R

    can I also use @Bugsounet’s google assistant with the MMM-Carousel w / Slide Navigation to scroll to the next or previous page
    if this is possible, someone will explain how this works?
    thank you in advance

  • 0 Votes
    2 Posts
    137 Views
    S

    @raf well, they have to update their certificate, OR you have to accept that they have an invalid cert… and you MAY not be connecting to the right place

    there is no other fix… this is what certificates and https is all about

    I don’t see that error or see any log entry trying to access that domain.

  • new boot rpi4 2 giga

    4
    0 Votes
    4 Posts
    427 Views
    AlvingerA

    @raf no, that’s not it. You need an Rpi4-specific image. Do like this:

    Find out where MagicMirror is installed. I’ll use ~/MagicMirror in the below. (~ is a shortcut to your home directory) Go to your home directory by entering the command:
    cd Make a full backup of you MagicMirror installation by entering the command:
    tar czvf mmbackup.tgz MagicMirror
    This will create a file call mmbackup.tgz Copy the file mmbackup.tgz to another computer or usb stick. There are several ways to do that, google if you don’t know. The important thing is that you do NOT store it on the SD card. The easiest way is probably to use an USB stick. Insert the stick into the Rpi3 and Raspbian will normally automount it. I will assume that the stick is mounted as /mnt/usb. If so then copy the backup with the command:
    cp -vi ~/mmbackup.tgz /mnt/usb On you Windows computer, download a raspbian image for Rpi4. Insert your SD card and write the image to card using Etcher or similar program (The same as you did when creating the SD card for the Rpi3) Move the SD card to the Rpi4 and complete the install. Copy the file mmbackup.tgz from wherever you put it to your home directory (~). If you used an USB stick in step 4 above then you can use the command:
    cp -vi /mnt/usb/mmbackup.tgz ~/ Unpack the backup with the commands:
    cd
    tar xvzf mmbackup.tgz Follow the instructions at https://docs.magicmirror.builders/getting-started/installation.html to complete the install. Skip step 2 as you have already installed MagicMirror.
  • Update v2.13.0 Black Screen

    10
    0 Votes
    10 Posts
    767 Views
    W

    :grinning_face: :thumbs_up:
    Many thanks.
    I’m so happy