Überblick
| Teil | Wo | Dauer | |
|---|---|---|---|
| 🅰️ | MagicMirror²-Modul MMM-ioBrokerBridge | auf dem Spiegel | ca. 5 Minuten |
| 🅱️ | ioBroker-Adapter magicmirror | auf dem ioBroker-Host | ca. 5 Minuten |
ℹ️
<owner>in den Befehlen steht für das Konto, unter dem das Repository liegt. Wer die Quellen als Archiv erhalten hat, überspringtgit cloneund arbeitet im entpackten Ordner.
Zwei Dinge müssen installiert werden: das Modul auf dem Spiegel und der Adapter in ioBroker. In dieser Reihenfolge — der Adapter braucht das Modul als Gegenstelle.
Teil A · MagicMirror²-Modul MMM-ioBrokerBridge
Voraussetzungen: MagicMirror² 2.30 oder neuer, Node.js 20 oder neuer, git auf dem Spiegel (wird verwendet, um Module aus dem Katalog zu installieren).
Schritt 1 · Das Modul in den Modulordner kopieren
cd ~/MagicMirror/modules # Docker: der Host-Ordner, der als "modules" eingebunden ist
git clone https://github.com/<owner>/iobroker-magicmirror.git /tmp/iobroker-magicmirror
cp -r /tmp/iobroker-magicmirror/MMM-ioBrokerBridge .
rm -rf /tmp/iobroker-magicmirror
Das Modul hat keine Abhängigkeiten — ein npm install ist nicht nötig.
Schritt 2 · Ein Zugangswort (Token) erzeugen
openssl rand -hex 24
Die Ausgabe aufbewahren; sie wird einmal auf dem Spiegel und einmal in ioBroker gebraucht.
Schritt 3 · Das Token als Umgebungsvariable an MagicMirror geben
Das Token gehört nicht in config.js: MagicMirror liefert diese Datei im Klartext unter /config/config.js aus.
Docker (docker-compose.yml):
services:
magicmirror:
environment:
- MM_IOBROKER_TOKEN=<dein Token>
volumes:
- ./config:/opt/magic_mirror/config
- ./modules:/opt/magic_mirror/modules # der gesamte Ordner, damit installierte Module erhalten bleiben
Den gesamten modules-Ordner einbinden, nicht einzelne Modulordner. Andernfalls leben aus ioBroker installierte Module nur innerhalb des Containers und sind verschwunden, wenn er neu erstellt wird.
pm2:
MM_IOBROKER_TOKEN=<dein Token> pm2 restart mm --update-env
pm2 save
systemd: Environment=MM_IOBROKER_TOKEN=<dein Token> zum Abschnitt [Service] der Unit hinzufügen, dann sudo systemctl daemon-reload.
Schritt 4 · Das Modul in config/config.js eintragen
modules: [
// … deine anderen Module …
{
module: "MMM-ioBrokerBridge",
config: { heartbeat: 10000 }
}
]
Es wird keine position benötigt — das Modul zeichnet nichts.
Schritt 5 · MagicMirror neu starten
docker compose up -d # Docker (erstellt den Container mit der neuen Umgebung neu)
pm2 restart mm # pm2
Schritt 6 · Prüfen
curl http://<spiegel>:8080/MMM-ioBrokerBridge/health
# {"ok":true,"bridge":"1.0.0","mmVersion":"2.37.0","tokenConfigured":true}
curl -H "Authorization: Bearer <dein Token>" http://<spiegel>:8080/MMM-ioBrokerBridge/api/status
# ein JSON-Dokument mit Versionen, Modulen und Statistiken
"tokenConfigured":true und eine JSON-Antwort von /api/status bedeuten, dass die Spiegel-Seite bereit ist.
Teil B · ioBroker-Adapter magicmirror
Voraussetzungen: js-controller 5 oder neuer, Admin 6 oder neuer, Node.js 20 oder neuer. Der ioBroker-Host muss den Spiegel über HTTP erreichen können (Test: curl http://<spiegel>:8080/MMM-ioBrokerBridge/health vom ioBroker-Host aus).
Schritt 1 · Das Paket bauen
git clone https://github.com/<owner>/iobroker-magicmirror.git
cd iobroker-magicmirror/iobroker.magicmirror
npm pack # erstellt iobroker.magicmirror-1.0.0.tgz
Schritt 2 · In ioBroker installieren
cd /opt/iobroker
npm install /pfad/zu/iobroker.magicmirror-1.0.0.tgz --omit=dev
ioBroker in Docker: die Datei zuerst in den Container kopieren.
docker cp iobroker.magicmirror-1.0.0.tgz iobroker:/tmp/
docker exec iobroker bash -lc 'cd /opt/iobroker && npm install /tmp/iobroker.magicmirror-1.0.0.tgz --omit=dev'
In diesem Fall den folgenden iobroker …-Befehlen docker exec iobroker voranstellen.
Schritt 3 · Die Admin-Dateien hochladen und die Instanz anlegen
iobroker upload magicmirror
iobroker add magicmirror 0
Schritt 4 · Die Instanz einrichten
Im Admin: Instanzen → magicmirror.0 → 🔧
| Feld | Wert |
|---|---|
| Adresse des Spiegels | IP-Adresse oder Name, ohne http:// |
| Port | 8080 (oder was der Spiegel verwendet) |
| Zugangswort | das Token aus Teil A, Schritt 2 |
Auf Verbindung prüfen klicken — die Antwort sollte Verbunden: MagicMirror v… lauten — dann Speichern.
Stattdessen auf der Kommandozeile:
iobroker set magicmirror.0 --host <spiegel> --port 8080
iobroker object set system.adapter.magicmirror.0 native.token=<dein Token>
⚠️ Das Token nicht mit
iobroker set … --tokensetzen: dieser Befehl speichert es unverschlüsselt, und der Adapter liest dann verstümmelte Zeichen.iobroker object setverschlüsselt es.
Schritt 5 · Den Reiter öffnen
Die Admin-Seite neu laden. Das Seitenmenü hat jetzt einen Eintrag MagicMirror. Fehlt er, auf den Stift oben im Seitenmenü klicken und den Eintrag einschalten.
Schritt 6 · Prüfen
iobroker state getValue magicmirror.0.info.connection # true
iobroker state getValue magicmirror.0.info.mmVersion # z. B. 2.37.0
Aktualisieren
# Spiegel: den Ordner modules/MMM-ioBrokerBridge durch die neue Version ersetzen, dann MagicMirror neu starten
# ioBroker:
cd iobroker.magicmirror && npm pack
cd /opt/iobroker && npm install /pfad/zu/iobroker.magicmirror-<version>.tgz --omit=dev
iobroker upload magicmirror && iobroker restart magicmirror.0
Fehlerbehebung
| Symptom | Ursache und Abhilfe |
|---|---|
| Reiter meldet „Keine Verbindung zum Spiegel … nicht erreichbar“ | Der ioBroker-Host kann den Spiegel nicht erreichen. Adresse, Port, Firewall und ipWhitelist in config.js prüfen. |
| „Das Zugangswort stimmt nicht mit MM_IOBROKER_TOKEN … überein“ (HTTP 401) | Die Token unterscheiden sich. Auf beiden Seiten denselben Wert setzen. |
| „MM_IOBROKER_TOKEN ist auf dem Spiegel nicht gesetzt“ (HTTP 503) | Die Umgebungsvariable hat den MagicMirror-Prozess nicht erreicht. Bei Docker muss der Container neu erstellt werden (docker compose up -d), ein einfacher Neustart reicht nicht aus. |
| „Das gespeicherte Zugangswort ist unlesbar“ | Das Token wurde mit iobroker set … --token geschrieben. In den Einstellungen der Instanz oder mit iobroker object set erneut setzen. |
| „Das Modul MMM-ioBrokerBridge ist auf dem Spiegel nicht geladen“ (HTTP 404) | Das Modul fehlt in config.js, oder MagicMirror wurde nicht neu gestartet. |
| Die Modullisten sind leer, „Keine Anzeige verbunden“ | Der Spiegel kennt seine laufenden Module nur, solange mindestens ein Browser ihn anzeigt. Den Spiegel öffnen — oder einfach die Live-Vorschau im Reiter. |
| Live-Vorschau bleibt schwarz | Der Browser, mit dem der Admin bedient wird, muss den Spiegel selbst erreichen können. Läuft der Admin über HTTPS und der Spiegel über HTTP, blockiert der Browser den Rahmen: die Vorschau auf „Abbild“ umstellen. |
| Ein installiertes Modul erscheint nicht auf dem Spiegel | Die Installation legt es nur in den Modulordner. In die Konfiguration eintragen (Module → Eintragen) und MagicMirror neu starten. |
So sieht es danach aus

