Skip to content

MrBULU/MagicMirror

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🪞 MrBULU's MagicMirror Setup

MrBULU MagicMirror

Personal Smart Mirror Display - Modular Information Hub

MagicMirror Node.js Electron License

🚀 Quick Start📱 Modules⚙️ Configuration🔧 Support


🎯 About This Setup

This is MrBULU's personal MagicMirror installation - a customized smart mirror platform built on MagicMirror² v2.32.0. This setup transforms any display into an intelligent information hub with real-time weather, calendar events, public transport, and custom modules.

🌟 What Makes This Setup Special

  • 🌦️ Advanced Weather Integration - AccuWeather Forecast Deluxe & OpenWeatherMap
  • 📅 Extended Calendar System - CalendarExt3 with agenda view
  • 🚌 Public Transport Info - Real-time HAFAS transport data
  • 🎭 Entertainment Modules - Jokes, Moon phases, and embedded content
  • 💡 Smart Home Control - Philips Hue lights integration
  • 🔧 Remote Management - Web-based configuration and control
  • 📱 Touch Interface - SmartTouch module for interaction
  • 🔄 Auto-Update Script - Keep all modules up to date with one command

🚀 Quick Start

Prerequisites

# System Requirements
- Node.js 22.14.0+
- Git
- Raspberry Pi 4+ (recommended) or any Linux system
- Display with HDMI input

Installation

# Clone this repository
git clone https://github.com/MrBULU/MagicMirror.git
cd MagicMirror

# Install dependencies (production only)
npm run install-mm

# Copy and configure
cp config/config.js.sample config/config.js
# Edit config/config.js with your settings

# Start MagicMirror
npm start

Development Mode

# Install dev dependencies
npm run install-mm:dev

# Start in development mode
npm run start:dev

📱 Installed Modules

🌤️ Weather & Environment

Module Purpose Status
MMM-AccuWeatherForecastDeluxe Detailed weather forecasts ✅ Active
MMM-OpenWeatherMapForecast Alternative weather source ✅ Active
MMM-MoonPhase Lunar phase display ✅ Active

📅 Calendar & Schedule

Module Purpose Status
MMM-CalendarExt3 Enhanced calendar display ✅ Active
MMM-CalendarExt3Agenda Agenda view for events ✅ Active

🚌 Transportation

Module Purpose Status
MMM-PublicTransportHafas Real-time public transport ✅ Active

🏠 Smart Home & Control

Module Purpose Status
mmm-hue-lights Philips Hue integration ✅ Active
MMM-Remote-Control Web interface control ✅ Active
MMM-SmartTouch Touch screen interaction ✅ Active

🎮 Entertainment & Utilities

Module Purpose Status
MMM-Jokes Daily humor display ✅ Active
MMM-EmbedURL Embed external content ✅ Active
MMM-Screencast Screen sharing capability ✅ Active

⚙️ Configuration

Main Configuration

The main configuration is stored in config/config.js. Key sections:

var config = {
  address: "0.0.0.0", // Listen on all interfaces
  port: 8080,
  basePath: "/",
  ipWhitelist: [], // Allow all IPs
  useHttps: false,
  httpsPrivateKey: "",
  httpsCertificate: "",
  language: "en",
  locale: "en-US",

  modules: [
    // Your custom module configuration here
  ]
};

Display Layout Zones

┌─────────────────────────────────────┐
│  top_bar           top_bar          │
│  top_left          top_right        │
│  upper_third       upper_third      │
│                                     │
│  middle_center                      │
│                                     │
│  lower_third       lower_third      │
│  bottom_left       bottom_right     │
│  bottom_bar        bottom_bar       │
└─────────────────────────────────────┘

Module Configuration Examples

Weather Module

{
    module: "MMM-AccuWeatherForecastDeluxe",
    position: "top_right",
    config: {
        apikey: "YOUR_ACCUWEATHER_API_KEY",
        locationKey: "YOUR_LOCATION_KEY",
        updateInterval: 600000, // 10 minutes
        forecastDays: 5
    }
}

Calendar Module

{
    module: "MMM-CalendarExt3",
    position: "bottom_left",
    config: {
        mode: "month",
        instanceId: "basicCalendar",
        locale: "en-US",
        maxEventLines: 5
    }
}

🛠️ Available Scripts

Script Purpose Usage
npm start Start MagicMirror (X11) npm start
npm run start:dev Development mode npm run start:dev
npm run server Server only mode npm run server
npm run start:wayland Wayland display server npm run start:wayland
npm run install-mm Production install npm run install-mm
npm run install-mm:dev Development install npm run install-mm:dev
npm run config:check Validate configuration npm run config:check
npm test Run all tests npm test
npm run lint:js Lint JavaScript files npm run lint:js
npm run lint:css Lint CSS files npm run lint:css

🔄 Module Update Script

This repository includes a convenient script to update all installed modules at once.

Auto-Update All Modules

# Navigate to modules directory and run the update script
cd ~/MagicMirror/modules
./updates_modules.sh

The script (modules/updates_modules.sh) automatically:

  • Loops through all MMM-* modules
  • Pulls latest changes from their repositories
  • Updates npm dependencies
  • Provides status feedback

Note: This script assumes modules were originally cloned via git. For manually installed modules, you may need to update them individually.


📂 Project Structure

MagicMirror/
├── config/
│   ├── config.js              # Main configuration file
│   ├── config.js.sample       # Configuration template
│   └── .gitkeep               # Keep directory in git
├── modules/
│   ├── default/               # Core MagicMirror modules
│   ├── MMM-AccuWeatherForecastDeluxe/
│   ├── MMM-CalendarExt3/
│   ├── MMM-CalendarExt3Agenda/
│   ├── MMM-EmbedURL/
│   ├── MMM-Jokes/
│   ├── MMM-MoonPhase/
│   ├── MMM-OpenWeatherMapForecast/
│   ├── MMM-PublicTransportHafas/
│   ├── MMM-Remote-Control/
│   ├── MMM-Screencast/
│   ├── MMM-SmartTouch/
│   ├── mmm-hue-lights/
│   └── updates_modules.sh     # Module update script
├── js/
│   ├── electron.js            # Electron main process
│   ├── main.js               # Core application
│   └── node_helper.js        # Node helper utilities
├── css/
│   ├── main.css              # Main stylesheet
│   └── custom.css            # Custom styling
├── translations/             # Language files
├── tests/                   # Test files
├── package.json             # Dependencies and scripts
└── README.md               # This file

🔧 Hardware Setup

Recommended Hardware

  • Raspberry Pi 4B (4GB RAM minimum, 8GB recommended)
  • 32GB+ microSD card (Class 10, A2 rating)
  • 2-way mirror acrylic (3mm thickness)
  • Monitor (24" or larger recommended)
  • Picture frame (deep enough for components)
  • Power supplies (Pi + Monitor)

Physical Assembly

  1. Mount monitor in picture frame
  2. Attach 2-way mirror to front
  3. Install Raspberry Pi behind monitor
  4. Connect HDMI and power cables
  5. Ensure proper ventilation

🌐 API Keys Required

Weather Services

# AccuWeather
ACCUWEATHER_API_KEY=your_accuweather_key
ACCUWEATHER_LOCATION_KEY=your_location_key

# OpenWeatherMap
OPENWEATHER_API_KEY=your_openweather_key

Transportation

# HAFAS Public Transport
HAFAS_ENDPOINT=your_hafas_endpoint

Smart Home

# Philips Hue Bridge
HUE_BRIDGE_IP=192.168.1.xxx
HUE_USERNAME=your_hue_username

🔧 Troubleshooting

Common Issues

🖥️ Display Problems

# Check display configuration
xrandr --query

# Force specific resolution
xrandr --output HDMI-1 --mode 1920x1080

📶 Module Not Loading

# Check module installation
ls -la modules/MMM-ModuleName/

# Restart MagicMirror
pm2 restart MagicMirror

🌐 API Connection Issues

# Test internet connectivity
ping -c 4 google.com

# Check API endpoints
curl -I https://api.openweathermap.org/

Log Files

# View MagicMirror logs
pm2 logs MagicMirror

# System logs
journalctl -u magicmirror -f

🔄 Auto-Start Configuration

Systemd Service

Create /etc/systemd/system/magicmirror.service:

[Unit]
Description=MagicMirror
After=network.target

[Service]
Type=simple
User=bulupi
WorkingDirectory=/home/bulupi/MagicMirror
ExecStart=/usr/bin/npm start
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
# Enable service
sudo systemctl enable magicmirror
sudo systemctl start magicmirror

📊 Performance Optimization

System Tweaks

# Increase GPU memory split
echo 'gpu_mem=128' | sudo tee -a /boot/config.txt

# Disable unnecessary services
sudo systemctl disable bluetooth
sudo systemctl disable cups

# Optimize for kiosk mode
echo 'disable_overscan=1' | sudo tee -a /boot/config.txt

MagicMirror Optimization

  • Limit concurrent API calls
  • Set appropriate refresh intervals
  • Use local caching when possible
  • Optimize CSS animations

🤝 Contributing

Found a bug or want to add a feature? Contributions are welcome!

  1. Fork this repository
  2. Create feature branch: git checkout -b feature/awesome-feature
  3. Commit changes: git commit -m 'Add awesome feature'
  4. Push to branch: git push origin feature/awesome-feature
  5. Open Pull Request

📄 License

This project is licensed under the MIT License - see LICENSE.md for details.


💬 Support & Contact

Need help or want to connect?

GitHub Issues Email LinkedIn Website

🪞 Built with ❤️ by MrBULU • Smart Home Enthusiast & Tech Explorer


🔖 Version History

  • v2.32.0 - Current MagicMirror version
  • Latest modules - All modules updated to latest versions
  • Custom configuration - Personalized for MrBULU's setup

⭐ If you found this setup helpful, please give it a star!

Last updated: October 2025

About

🪞 Transform any mirror into a smart display! Weather 🌤️ Calendar 📅 News 📰 + custom modules.

Resources

License

MIT, MIT licenses found

Licenses found

MIT
LICENSE
MIT
LICENSE.md

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors