A module for MagicMirror² to display the status of your Emby servers. Now with more features than you can shake a stick at, and fewer bugs than a roach motel.
- Monitors multiple Emby servers. It's a digital harem, and you're the sultan.
- Real-time stream tracking. Shows who's watching what, where, and how hard your server is working for it.
- Smart session detection. Only counts streams that are actually playing something, not every device that's breathing on your network.
- Futuristic stream indicators. Sci-fi dashboard vibes that would make Blade Runner jealous.
- Detailed "Now Playing" Info. Shows what's being watched, by whom, on what device, with poster art, progress bar, stream type (
Transcode,Direct Play), and even the damn end time. - Per-Server Configuration. Each server can have its own layout, display order, and settings. Because one size never truly fits all.
- Visual Flair. Subtle animations and a clean design that doesn't look like it was made in 1995.
- Smarter TV Art. An option to show the main series poster for episodes, which usually looks better than a random thumbnail.
- Honest Error Handling. If a server goes offline, the module will tell you. No sugarcoating, no false hope.
- Highly configurable. Because commitment is for suckers and your mirror should be as fickle as you are.
- Navigate into your MagicMirror's
modulesfolder and executegit clone https://github.com/LindsayCole/MMM-Emby.git. - Navigate to the new
MMM-Embyfolder and runnpm install. If you can't handle that, maybe this isn't for you.
To use this module, add the following configuration block to the modules array in your config/config.js file. This example shows how you can give each server its own personality.
{
module: "MMM-Emby",
position: "top_left", // or wherever you want to stick it
config: {
servers: [
{
// This one is the full-blown experience.
name: "The Mothership",
host: "http://192.168.1.100",
port: 8096,
apiKey: "YOUR_SECRET_HANDSHAKE",
layout: "detailed",
displayOrder: ["stats", "nowPlaying", "recentlyAdded"],
showServerStats: true,
showNowPlaying: true,
showRecentlyAdded: true,
recentlyAddedCount: 5,
useSeriesPoster: true
},
{
// This one is just the facts, ma'am.
name: "The Backup Plan",
host: "http://192.168.1.101",
port: 8096,
apiKey: "ANOTHER_KEY_FOR_ANOTHER_DOOR",
layout: "compact",
showNowPlaying: false, // We don't care what's playing here.
showServerStats: true
}
],
updateInterval: 60000, // How often to bug the servers
fontAwesomeVersion: 5,
layoutDirection: "vertical" // or "horizontal" if you're feeling adventurous
}
},| Option | Description | Default |
|---|---|---|
servers |
An array of your Emby server objects. This is the main event. | [] |
updateInterval |
How often to poke the servers for new info (in milliseconds). | 60000 |
fontAwesomeVersion |
Set to 4 or 5 depending on your core MagicMirror setup. Mismatching is a bad look. |
5 |
layoutDirection |
'vertical' for stacked servers, 'horizontal' for side-by-side. Choose your fighter. |
'vertical' |
These can be set for each server in the servers array. If you don't set them, they'll use a reasonable default.
| Option | Description | Default |
|---|---|---|
name |
What to call this server. Be creative, or don't. | Required |
host |
Server URL (e.g., http://192.168.1.100). Don't forget the http part. |
Required |
port |
Server port. Usually 8096, but you do you. | Required |
apiKey |
Your Emby API key. Guard it with your life. | Required |
layout |
'detailed' for the full experience, 'compact' for a quick glance. |
'detailed' |
displayOrder |
An array to set the order of sections. Options: 'stats', 'nowPlaying', 'recentlyAdded'. |
['stats', 'nowPlaying', 'recentlyAdded'] |
showServerStats |
true to show active streams and transcode counts. |
true |
showNowPlaying |
true to show the glorious "Now Playing" section. |
true |
showRecentlyAdded |
true to show the list of new arrivals. |
false |
recentlyAddedCount |
How many new items to show. Don't get greedy. | 5 |
useSeriesPoster |
For TV episodes, true shows the main series art. false shows the episode thumbnail. |
true |
Servers are stacked vertically, one after another. Classic, reliable, like a good bourbon.
Servers are displayed side-by-side. Perfect for wide screens or when you want to show off multiple servers at once. Set layoutDirection: 'horizontal' in your config.
The compact layout now features a futuristic active streams indicator with:
- Stream Counter: Shows total active streams in a sci-fi style display
- Transcoding Badge: A subtle blue indicator when transcoding is happening (no more eye-searing yellow)
- Online Status: Clean display when no streams are active but server is online
- Offline Indicator: Clear warning when shit hits the fan
- Centered Layout: Everything lines up nicely because we're not animals
- Log into your Emby server's web interface
- Go to Settings → Advanced → API Keys
- Create a new API key
- Copy it and paste it into your config
- Don't share it with strangers on the internet
- request - For talking to your Emby servers
Installed automatically when you run npm install. Don't worry your pretty little head about it.
Server shows as offline?
- Check your host, port, and API key
- Make sure your Emby server is actually running
- Verify network connectivity
No streams showing?
- The module only shows actively playing content, not paused or idle sessions
- Check that someone is actually watching something
Transcoding indicator not showing?
- Only appears when Emby is actually transcoding content
- Direct play streams won't trigger the indicator
Sure, why not. Send a pull request. Just make it good, and don't break anything that already works.
- Lindsay Cole
This project is licensed under the MIT License. Go nuts, but don't blame us if your mirror catches fire.
