@infamoustiggr, thanks!
Just make sure sure to pay it forward if you have the opportuniy to help someone else here in the forums.
Read the statement by Michael Teeuw here.
Posts
-
RE: 3 tries 3 fails Raspberry b+
-
MMM-ResRobot - Public transport information for Sweden
Description:
MMM-ResRobot is a module that displays departure times for one or more public transport stops in Sweden. It uses the ResRobot API which is a collaboration between a number of public transport providers.
Screenshots:
Download:
[card:Alvinger/MMM-ResRobot]
Version 1
Initial release
Version 1.1
One minor change: transportation type icons are now displayed (to the left of the linenumber). All rail-bound types are displayed as trains (fa-train), all buses are displayed as bus (fa-bus) and all waterborne transportation is displayed as ship (fa-ship).
Version 1.2
Added config option skipMinutes. Allows for skipping of departures within skipMinutes minutes from now. Default is 0 (zero).
Version 1.3
Reworked the updating logic. For some reason the module stopped updating in some cases. This version also reduces the number of API calls to Resrobot.
NOTE! The configuration has been changed in this version. Added new array “Routes” consisting of pairs of “from” and “to” (“to” can be empty but must be present). This is a breaking change.
Previous configuration:from: "from1,from2,from3", to: "to1,,to3"New configuration:
routes: [ from: "from1", to: "to1", from: "from2", to: "", from: "from3", to: "to3", ] -
RE: 3 tries 3 fails Raspberry b+
Hi all,
I’m running my mirror on an original Pi B 256MB with no issues at all!The Raspbian version I use is DietPi which is really great on a 256MB Pi. Note that the standard user in DietPi is “root” rather than “pi”. If you use standard Raspbian just replace all occurences of “root” with “pi” in the scripts below.
As the documentation states you start off with installing the Server Only option. If I remember correctly I had to manually install many of the node module dependencies as they weren’t installed correctly otherwise
I use matchbox as the window manager because it suited my needs best. It uses less resources which again is great for a 256MB Pi.
I’m using systemd scripts rather than pm2 as I think they work better. My scripts:
magicmirror.service:
[Unit] Description=Node.js Magic Mirror Server [Service] ExecStart=/usr/bin/node /root/MagicMirror/serveronly/index.js WorkingDirectory=/root/MagicMirror Restart=always RestartSec=20 StandardOutput=syslog StandardError=syslog SyslogIdentifier=nodejs-magicmirror Environment=NODE_ENV=production PORT=1337 [Install] WantedBy=multi-user.targetmatchbox.service:
[Unit] Description=X11 After=X.service [Service] Environment=DISPLAY=:0.0 ExecStart=/usr/bin/matchbox-window-manager -use_titlebar no -use_cursor no User=root Restart=on-failure [Install] WantedBy=multi-user.targetKioskbrowser.service:
[Unit] Description=Kiosk Browser After=matchbox.service magicmirror.service Requires=magicmirror.service [Service] WorkingDirectory=/root/MagicMirror User=root Environment=DISPLAY=:0.0 # Don't activate screensaver ExecStartPre=/usr/bin/xset s off # Disable DPMS (Energy Star) features ExecStartPre=/usr/bin/xset -dpms # Don't blank the video device ExecStartPre=/usr/bin/xset s noblank ExecStart=/root/kioskbrowser http://localhost Restart=on-failure [Install] WantedBy=multi-user.targetNote that the kioskbrowser service relies on a user script called /root/kioskbrowser. This script has some extra logic to avoid the initial white screen when midori has loaded but not fetched any magic mirror content. The script perform a curl call to see if the magic mirror module is responding. If not it waits for a few seconds and then tries again. Once the magic mirror responds it starts midori in fullscreen mode.
/root/kioskbrowser:
#!/bin/bash status=1 url="$1" wait="10s" tries=0 # URL must be first argument if [ -z "$url" ]; then exit 1 fi # Make sure that the url is reachable while [ $status -ne 0 ]; do let tries++ curl --fail --progress-bar -o /dev/null --url "$url" status=$? if (($tries > 10)); then wait="30s" fi if (($tries > 20)); then wait="5m" fi if (($tries > 30)); then echo "$0: Can't load URL $url" exit 2 fi sleep "$wait" done # Start browser in fullscreen mode /usr/bin/midori -e Fullscreen -a "$url"Hope this helps.
-
RE: Problem with MMM-ResRobot, it wont start(?)
@ajomannen sorry, the curly braces got lost in my copying. I have updated my previous post.
-
RE: MMM-ResRobot - Public transport information for Sweden
Hi,
you need to specify a station id in “from” as well. “from” is used to find the station’s departures, “to” is used to differentiate between destinations going from the “from” station.Change “from” to ‘from: “740000950,740000950”’ to make it work as you want.
-
RE: 3 tries 3 fails Raspberry b+
Installed packages
If you are running dietpi or Raspbian Jessie systemd should already be installed. Otherwise you need to install and enable it. Google is your friend.Midori should also be installed but Matchbox most likely isn’t. Install it with:
sudo apt-get install matchbox-window-managerSystemd
The systemd scripts are all located in /etc/systemd/system. To create magicmirror.service enter the following command (I’m using the editor nano):sudo nano /etc/systemd/system/magicmirror.servicePaste script from above and edit to suit your needs.
Make the script executable with the following command:
sudo chmod +x /etc/systemd/system/magicmirror.serviceRepeat these steps for the other scripts by replacing magicmirror.service with the appropriate name.
Custom script
For DietPi the scripts are located in /root and for Raspbian they are located in /home/pi. Change to the appropriate directory with cd.nano kioskbrowserPaste the code from above and save/exit
Make the script executable by running:chmod +x kioskbrowserMagicMirror config
Make sure that MagicMirror has the correct port set in config.js. (Look for “port”: in config/config.js and make sure it is set to 80. Otherwise modify kioskbrowser.service and change the url http://localhost to http://localhost:port where port is the port number of MagicMirror.)Scheduled on/off times
If you’re like me and do not want your mirror active during the night you can either use a module such as MMM-ModuleScheduler or a cron script that turns the monitor power on/off at set times. I use the latter. To do that you enter the command:crontab -eand paste the following lines
59 05 * * * /usr/bin/vcgencmd display_power 1 09 23 * * * /usr/bin/vcgencmd display_power 0Exit and save.
The first line turns the monitor ON at 05:59 and the second line turns if OFF at 23:09. Modify according to needs.Reboot your pi and enjoy!
-
RE: MMM-ModuleScheduler - Module Schedules and Notifications
@ianperrin
It works! It was probably the code update that fixed even though I also simplified the cron expression.All my other schedules (which hides, not dims, modules) worked before even with arrays having double quotes and leading zeroes. And they still work.
Great work @ianperrin, and thank you for a must-have module!
-
RE: MMM-ResRobot - Public transport information for Sweden
One thing popped into my mind: the Pi 1 is much slower than a Pi 3 and loading all the modules takes quite some time. Could it be that you are trying to open midori before MagicMirror has loaded all the modules and therefore is refusing connections? That in itself was the reason I had to go with a script that checked that midori was listening before launching MagicMirror.
Have you checked with journalctl that magicmiror is ready for action?
-
RE: 3 tries 3 fails Raspberry b+
@johnnyboy
That’s technology development for you. Of course, in this case @infamoustiggr has the luxury of having someone with the exact same equipment already having the solution running.As to the speed issue, apart from taking a few extra seconds on boot, I have no issues whatsoever with speed for functionality on my Pi 1. But I must admit it took me a number of tries to get there! Doing it with little to no experience with Linux is really tough.
-
RE: MMM-ModuleScheduler - Module Schedules and Notifications
@ianperrin @Jopyth: sorry, wasn’t aware that MMM-Remote-Control had that ability. I would recommend MMM-Remote-Control instead of MMM-tvservice to the general user as it covers all functionality needed.
MMM-tvservice is more for the linux enthusiast who wants a program to do one thing and one thing only. I am not running MagicMirror through PM2 but rather directly via systemd so I cannot use all functionality of MMM-Remote-Control without editing the source. Also, as I am running through systemd I do not need to prefix the commands with sudo as the service already runs as root.
-
RE: MMM-ResRobot - Public transport information for Sweden
@leanro great to hear it works. I had one or two of these “fetching departures” when I ran MagicMirror on my Rpi 1 with 256MB memory but since switching to a VM I haven’t seen it. As you have noticed, the solution is to restart MagicMirror.
-
RE: 3 tries 3 fails Raspberry b+
@infamoustiggr
I didn’t fiddle that much with the mirror pi. But ahead of that I’ve been doing quite some fiddling with Pis in general so I didn’t start from scratch.To help you with troubleshooting:
After installing DietPi and rebooting you are presented with the dietpi-software screen:

Look under “Software Optimized” and “Software Additional” and make sure that NONE of the options are selected, you want an install that is as clean as possible.
Under DietPi-Config make sure that Autostart is set to option 0 (default):

Change directory to /root and install MagicMirror according to instructions in the README.
Following my instructions above to install all systemd scripts and their helpers. My /root contains the following:

Stop magicmirror service (just to make sure it isn’t running) with the command:
systemctl stop magicmirror.serviceStart the magicmirror interactively by running
node serveronlyfrom the MagicMirror directory. You should see something similar to this:root@mirrortest:~/MagicMirror# node serveronly Starting MagicMirror: v2.1.1 Loading config ... Loading module helpers ... No helper found for module: alert. Initializing new module helper ... Module helper loaded: MMM-Remote-Control No helper found for module: clock. Initializing new module helper ... Module helper loaded: calendar Initializing new module helper ... Module helper loaded: MMM-WunderGround Initializing new module helper ... Module helper loaded: newsfeed Initializing new module helper ... Module helper loaded: MMM-ResRobot Initializing new module helper ... Module helper loaded: MMM-NetworkScanner All module helpers loaded. Starting server op port 80 ... Server started ... Connecting socket for: MMM-Remote-Control Starting node helper for: MMM-Remote-Control Connecting socket for: calendar Starting node helper for: calendar Connecting socket for: MMM-WunderGround MMM-WunderGround helper started ... Connecting socket for: newsfeed Starting module: newsfeed Connecting socket for: MMM-ResRobot Starting node_helper for module: MMM-ResRobot Connecting socket for: MMM-NetworkScanner Starting module: MMM-NetworkScanner Sockets connected & modules started ... Ready to go! Please point your browser to: http://localhost:80If any errors are shown, investigate them.
Now that MagicMirror is running it’s time to move on to the browser part.
Stop MagicMirror with ctrl+C and start the service withsystemctl start magicmirror.service.Make sure browser and matchbox are stopped by running the commands:
systemctl stop kioskbrowser.service systemctl stop matchbox.serviceStart matchbox with the command
systemctl start matchbox.service. Check that it started ok withsystemctl status matchbox.service. If not investigate.Once you get this far the “only” thing left to check is the midori browser. As you don’t have an X Display on the console it is slightly trickier. Let me know if/when you made it this far and we’ll take it from there.
-
RE: new boot rpi4 2 giga
@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.
-
RE: Help with config file
@sullivnc
There is a curly brace missing in the config field of the clock module. -
RE: MMM-ResRobot - Public transport information for Sweden
@Zapman I’ll have a look. Your config looks fine at a first look.
-
RE: Help with config file
The position line for the clock module is also wrong, it should be like this:
position: "top_left",I recommend that you use a lint tool (e.g. eslint) to do syntax checking. It will find most of the errors.