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

    Posts

    Recent Best Controversial
    • RE: MagicMirror screen goes black

      https://github.com/MichMich/MMM-WatchDog

      Isn’t this supposed to cover such occasions as that and restart the server.
      I only have a Pi-Zero so far so have never tested the effect with the normal Electron setup just Chromium standalone kiosk style.
      So I don’t actually no if or what the mechanism to restart the browser (Electron) is.
      If it doesn’t refresh via MMM-WatchDog you can always use xdotools to send keys to an Xwindow and all you need to do is a ‘ctrl+F5’ which is a refresh and drops the cache so all is effectively loaded as new.

      sudo apt-get install xdotool 
      

      Then with ~/MagicMirror/run-start.sh add a line and nano xdotool.sh and chmod a+x xdotool.sh

      if [ -z "$DISPLAY" ]; then #If not set DISPLAY is SSH remote or tty
      	export DISPLAY=:0 # Set by default display
      fi
      sh xdotool.sh &
      electron js/electron.js $1
      

      With xdotool.sh being something like this

      export DISPLAY=:0
      export XAUTHORITY=~/.Xauthority
      sleep 10
      xdotool search --onlyvisible --class "chromium" key ctrl+F5  -v 2>&1 | logger &
      

      Dunno what the Electron class is but really its just Chromium in a wrapper so expecting that actually that will work.
      If not you will just have to do a bit of testing to find the class or PID of electron http://manpages.ubuntu.com/manpages/trusty/man1/xdotool.1.html

      posted in Troubleshooting
      S
      stuartiannaylor
    • RE: Two way mirror film

      @dgregory19 You need external window film as there are 2 types installed internal / external.
      For a magic mirror you need external or yes it will be back to front when you apply it.

      posted in Show your Mirror
      S
      stuartiannaylor
    • RE: YAPi0 Installer Stretch Lite

      What you can do is add a script line to run-start-sh

      Call it xdotool.sh
      so you would have sh xdotool.sh

      after

      if [ -z "$DISPLAY" ]; then #If not set DISPLAY is SSH remote or tty
      	export DISPLAY=:0 # Set by default display
      	
      fi
      sh xdotool.sh &
      node serveronly $1
      xdotool.sh
      

      xdotool.sh contains

      export DISPLAY=:0
      sleep 25
      xdotool search --onlyvisible --class "chromium" key ctrl+F5
      

      The above will make Chromium refresh on any config.js changes or any restart of the server.

      If have been banging my head against a brick xorg / plymouth combination for no reason than to get a smooth splash screen all the way till the browser displays.
      This seems far more trouble than its worth.
      I included lightdm as thought that might make things easier but might drop it as it seems to make no difference and just adds bloat.

      https://www.semicomplete.com/projects/xdotool/ is excellent for external control just haven’t spent much time with it yet with my plymouth waste of time.

      posted in General Discussion
      S
      stuartiannaylor
    • RE: YAPi0 Installer Stretch Lite

      https://github.com/StuartIanNaylor/MagicMirror-Install-Guide-Raspberry-0-to-3

      MagicMirror-Install-Guide-Raspberry-0-to-3

      Rather than an install script a guide on how easy it is to install NodeJS and magic mirror works for all Pi and also includes 0 scripts which don’t use the incompatible electron Armv7l package

      Grab you image from raspberrypi.org/downloads/raspbian/

      Its up to you which you use but as in the name Raspbian Raspbian Stretch Lite Latest is the lightest and likely to create the best results.
      For a mirror that will generally be remote and a mirror installing a full desktop is likely pointless.

      Flash the image using Etcher from https://www.balena.io/etcher/
      Boot and then enter your WiFi details as the presumption is you will have a WiFi mirror.

      So our flash is complete and we are going to boot our pi zero and create some settings. All we need is the SSID of your WiFi router (The name it lists up as when you connect) My ssid=“TALKTALKF20CC3” My psk=“VE3JAX5F” (MyWifi password)

      • So we are going to login: login: = pi password = raspberry

      • then type: sudo raspi-config and press enter

      • Choose 2: Network Choose N2: WiFi Select your country. Enter your ssid. Enter your wifi password.

      • Choose 5: Interfaces Choose P2: SSH Yes to enable.

      • Tab to finish and Yes to reboot

      We need a SSH client such as Putty or Bitvise.
      Also Notepad++ is a great little editor that supports Unix & Windows LF/EOF formats.
      If your unsure the sugestions is Bitvise & Notepad++

      When the Pi reboots in the boot console log on screen you should now see a line My IP address is … copy that into the Server Host address and the pi/raspberry login details and login.

      Update your system and install the base packages for MagicMirror

      sudo apt-get update -y
      sudo apt-get upgrade -y
      sudo apt-get dist-upgrade -y
      

      Pi0/1 owners yeap the first boot update/upgrade to get the latest will be a :sleeping: experience with Pi 2/3 owners being slightly less :sleeping:.
      So now we have a completely updated and upgraded Pi and now to install Mirror specific packages.

      sudo apt-get install -y chromium-browser unclutter lightdm git rpd-plym-splash plymouth-x11 xdotool
      

      NodeJS for Pi 0/1 Armv6l is supported but not pakaged due to problems with Chromium compile for electron, this is no problem as the NodeJS NVM NodeVersionManager is excellent and probably should be used for all Pi versions.
      If you have a Pi 2/3 armv7l processor then you can install NodeJS via raspbian packages sudo-apt-get instal… but the NVM gives far better control.
      Read the GitHub ReadMe for a run down of how to use NVM and what it is capable of.
      To install

      curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash
      

      As it will tell you close the current SSH console or reboot. So do so and install Node with…

      nvm install --lts
      

      As we will use the latest Long Term Support Version.

      ##Cloning & Installing MagicMirror
      From the MagicMirror site click on repository and copy the url or click the green clone button and copy from there.

      git clone https://github.com/MichMich/MagicMirror.git
      

      Then we will enter the MagicMirror folder and start the install

      cd ~/MagicMirror && npm install
      

      More :sleeping: time.
      So that MagicMirror will autostart and restart on failure we are going to install the NodeJS Process Manager PM2 and if you need further infomation the documentation is great.
      So to install

      npm install pm2@latest -g
      

      Then we are going to ask PM2 for the correct startup command and paste that into the console.

      pm2 startup
      

      Which for me returns, but trust PM2 and not me.

      [PM2] To setup the Startup Script, copy/paste the following command:
      sudo env PATH=$PATH:/home/pi/.nvm/versions/node/v10.15.1/bin /home/pi/.nvm/versions/node/v10.15.1/lib/node_modules/pm2/bin/pm2 startup systemd -u pi --hp /home/pi
      

      So do as said and copy & paste what PM2 tells you.
      This is where us Pi0/1 and 2/3 owners depart as the need of use of Chromium rather Electron dicates some small changes.
      For Pi 0/1 owners.
      For Pi 2/3 owners the last thing is.

      pm2 start ~/MagicMirror/installers/pm2_MagicMirror.json
      

      Save that for autoboot

      pm2 save
      

      Copy the sample config.js to the config folder

      wget https://raw.githubusercontent.com/StuartIanNaylor/MagicMirror-Install-Guide-Raspberry-0-to-3/master/config.js -O ~/MagicMirror/config/config.js
      

      And we are ready to go with

      DISPLAY=:0 npm start
      

      Thats it unless you wish to read Make things Plymouth pretty and Save my Flash in the above to folders on instructions how to have a MagicMirror splash screen and how to use zram and tools to limit flash writes to a minimium. Apart the last bit about raspi-config and desktop autologin.

      So back to Pi0/1 users.
      The quickest and easiest way is to create a ~/.Xsession file and here is a sample config.

      nano ~/.Xsession
      

      Paste the following

      xset s off
      xset -dpms
      xset s noblank
      sleep 20
      chromium-browser --noerrdialogs --kiosk http://localhost:8080 --incognito --disable-translate --window-size=1920,1080 --window-position=0,0
      

      Then edit run-start.sh

      sed -i 's/electron js\/electron.js /node serveronly /g' ~/MagicMirror/run-start.sh
      

      So it looks like

      if [ -z "$DISPLAY" ]; then #If not set DISPLAY is SSH remote or tty
      	export DISPLAY=:0 # Set by default display
      fi
      node serveronly $1
      

      So for Desktop Autologin

      sudo raspi-config
      
      • 3 Boot options
      • Desktop/CLI
      • Desktop Autologin

        Then like the P2/3 owners add and save to PM2
      pm2 start ~/MagicMirror/installers/pm2_MagicMirror.json
      

      Save that for autoboot

      pm2 save
      

      Then reboot

      posted in General Discussion
      S
      stuartiannaylor
    • RE: YAPi0 Installer Stretch Lite

      Apols as have been editing and doing new for the last couple of days the unlink is nothing to worry about as if you run the script again it just deletes previous symbolic links.

      I have changed the way I install and going to update that github repo maybe tonight prob tomoz.

      But here is my much prefered method as basically its standard magicmirror install after you have installed node.

      So here is a quick run down from a new flash of Stretch Lite onto your SD.
      Boot the Pi0

      sudo raspi-config
      

      enable ssh, set your wifi, set boot to autologin console

      Do the usual

      sudo apt-get update
      sudo apt-get upgrade
      sudo apt-get dist-upgrade
      
      sudo apt-get install chromium-browser unclutter lightdm git rpd-plym-splash plymouth-x11 xdotool
      

      Then your choice of node install is yours but all I do is create a folder and sym link it as its easy just to delete with another version.
      You can just download the tar from https://nodejs.org/download/release/latest-v10.x/ and untar and copy folder contents into /usr/local/ if you wish.
      Even releases are LTS with v12 almost out, but the below will grab the latest LTS which is https://nodejs.org/download/release/latest-v10.x/node-v10.15.1-linux-armv6l.tar.gz

      so if you create a script node.sh throw this in just to get the latest or just grab it yourself either /usr/local or sym link it to a neater separate folder.

      web_dir="https://nodejs.org/download/release/latest-v10.x/";
      wget -nv -r -l1 --no-parent -A "*linux-armv6l.tar.gz" "$web_dir";
      find . -name "*linux-armv6l.tar.gz" -exec cp {} ~/ \;
      rm nodejs.org -r -f;
      full_file_name=$(find . -type f -name "*linux-armv6l.tar.gz" -printf '%f\n');
      echo "Extracting ${full_file_name}";
      tar -xzf "$full_file_name";
      file_name="${full_file_name%.*.*}";
      echo "Extracting ${file_name}";
      sudo rm -rf /opt/nodejs;
      # This next line will copy Node over to the appropriate folder.
      sudo mv "${file_name}" /opt/nodejs/;
      # Remove existing symlinks
      sudo unlink /usr/bin/node;
      sudo unlink /usr/sbin/node;
      sudo unlink /sbin/node;
      sudo unlink /usr/local/bin/node;
      sudo unlink /usr/bin/npm;
      sudo unlink /usr/sbin/npm;
      sudo unlink /sbin/npm;
      sudo unlink /usr/local/bin/npm;
      sudo unlink /usr/bin/pm2;
      sudo unlink /usr/sbin/pm2;
      sudo unlink /sbin/pm2;
      sudo unlink /usr/local/bin/pm2;
      # Create symlinks to node && npm
      sudo ln -s /opt/nodejs/bin/node /usr/bin/node;
      sudo ln -s /opt/nodejs/bin/node /usr/sbin/node;
      sudo ln -s /opt/nodejs/bin/node /sbin/node;
      sudo ln -s /opt/nodejs/bin/node /usr/local/bin/node;
      sudo ln -s /opt/nodejs/bin/npm /usr/bin/npm;
      sudo ln -s /opt/nodejs/bin/npm /usr/sbin/npm;
      sudo ln -s /opt/nodejs/bin/npm /sbin/npm;
      sudo ln -s /opt/nodejs/bin/npm /usr/local/bin/npm;
      

      then we just clone the main repo

      git clone https://github.com/MichMich/MagicMirror.git
      
      cd ~/MagicMirror
      

      Install magic mirror

      npm install
      

      The only thing we need to do is change the /MagicMirror/run-start.sh from

      if [ -z "$DISPLAY" ]; then #If not set DISPLAY is SSH remote or tty
      	export DISPLAY=:0 # Set by default display
      fi
      electron js/electron.js $1
      

      to

      if [ -z "$DISPLAY" ]; then #If not set DISPLAY is SSH remote or tty
      	export DISPLAY=:0 # Set by default display
      	
      fi
      sh xdotool.sh &
      node serveronly $1
      

      electron will not run on the zero hence why we installed chromium and make these changes.
      we will also add xdotool.sh which is a sendkey ctrl+F5 which clears the java cache & refreshes as killing and restarting is heavy lifting for the zero and likely unnecessary.
      When I do the git I will do something where after 3 concurrent refreshes it will kill and restart.

      nano ~/MagicMirror/xdotool.sh paste the following

      export DISPLAY=:0
      export XAUTHORITY=/var/lib/lightdm/.Xauthority
      sleep 25
      xdotool search --onlyvisible --class "chromium" key ctrl+F5
      

      Install PM2 which now complains with the current script with the startup command

      sudo npm install -g pm2
      

      Then add the PM2 sym links

      sudo ln -s /opt/nodejs/bin/pm2 /usr/bin/pm2;
      sudo ln -s /opt/nodejs/bin/pm2 /usr/sbin/pm2;
      sudo ln -s /opt/nodejs/bin/pm2 /sbin/pm2;
      sudo ln -s /opt/nodejs/bin/pm2 /usr/local/bin/pm2
      
      PM2 startup
      

      and that will give you the command for the correct startup so just copy and paste what the startup command tells you, which tells me, prob don’t even need to sym link it.

      sudo env PATH=$PATH:/opt/nodejs/bin /opt/nodejs/lib/node_modules/pm2/bin/pm2 startup systemd -u pi --hp /home/pi
      

      add the job and save

      pm2 start ~/MagicMirror/installers/pm2_MagicMirror.json
      pm2 save
      

      copy config.js to /MagicMirror/config and sudo reboot.

      I will sort that out as said prob tomoz as actually the install is now far closer to defacto Pi2/3 install.
      I will give you a shout here when complete but the above should get you going.

      [edit] Whoops you need something to autostart chromium
      Configure /home/pi/.Xsession (create new)

      xset s off
      xset -dpms
      xset s noblank
      
      chromium-browser --noerrdialogs --kiosk http://localhost:8080 --incognito --disable-translate --window-size=1920,1080 --window-position=0,0
      

      A final sudo raspi-config and set boot for desktop autologin.

      Job done until I update the git.

      posted in General Discussion
      S
      stuartiannaylor
    • RE: MMM-MovieInfo

      Lols it would seem so, as so far much effort but no completed magic mirror, but much fun :)

      Its been really interesting introduction to nodejs and a whole previously hidden browser console.

      I am still banging my head with this PiZero as really with any complexity the proc load goes crazy.
      Great if you keep it relatively simple, but being trying ‘other’ browsers to be lighter and to my surprise chromium is by the the best. Midori & Epiphany even after java problems or bad animation are still no lighter from what I am seeing in Top.

      Its a tremendous project and I will bung it a donation when I have a bit of cash.

      posted in General Discussion
      S
      stuartiannaylor
    • RE: Divide Config.js into modules

      @lavolp3 said in MMM-Compliments doesn't load:

      @stuartiannaylor yes that’s all you need in the config part.

      The module entry looks like this for me:

          },
              {
              //disabled: true,
              module: "compliments",
              position: "lower_third",
              config: {
                  classes: 'small',
                  remoteFile: 'xxxxxxx.json',
                  updateInterval: 12*60*60*1000,
              }
          },
      

      As that is a top tip and ‘small’ ?
      Dont know what you mean with that. I think you don’t need to give it a class but with this class you can determine the size of the text.

      remoteFile is a file, not a folder. But it can be anywhere, however if it’s not in the module directory you ned to give the absolute path “/home/pi/…”

      posted in Feature Requests
      S
      stuartiannaylor
    • RE: Can you call a module multiple times with different parameters?

      @sdetweil

      Yeap works just the same.

      Starting to get to grips with things Pages just suspends and restarts scripts for each page they are allocated.
      So it just needs to be referenced once in pages.

      posted in General Discussion
      S
      stuartiannaylor
    • RE: Can you call a module multiple times with different parameters?

      If I am using pages which is which.
      I will give it a go and see.

      posted in General Discussion
      S
      stuartiannaylor
    • Can you call a module multiple times with different parameters?

      Maybe you can, but I am using mmm-pages.
      Is there anyway to do it or do you just copy and rename modules?

      posted in General Discussion
      S
      stuartiannaylor
    • 1 / 1