
Die Shelly DUO (Modell SHBDUO-1) ist eine Gen1 Wi-Fi-LED-Smart-Lampe in den Bauformen E27 und GU10. Die Standard-DUO ist rein weiß mit einstellbarer Farbtemperatur und dimmbarer Helligkeit — sie hat keine RGB-Kanäle (die RGB-fähige Variante ist die DUO RGBW / shellycolorbulb- und nutzt eine eigene Vorlage). Dies ist die MQTT-Variante der TapHome-Integration; für Einzellampen-Setups ist auch eine HTTP-Variante verfügbar.
Die Vorlage unterstützt bis zu 5 DUO-Lampen pro Modul über einen gemeinsamen MQTT Broker im lokalen Netzwerk. Jede Lampe wird über die Modulvariable bulbNtopic identifiziert, die auf die MQTT Device ID der Lampe zeigt, und stellt sowohl ein Weißlicht-Gerät als auch einen Stromzähler bereit — insgesamt 10 Geräte.
Konfiguration
MQTT Broker
Die Vorlage benötigt einen MQTT Broker, der im lokalen Netzwerk erreichbar ist — jeder Standard-Broker funktioniert (Mosquitto, EMQX oder der in Home Assistant integrierte Broker). Der Broker läuft auf Port 1883 ohne TLS (Gen1 Shelly-Hardware unterstützt MQTT über TLS nicht), behalten Sie ihn deshalb in einem vertrauenswürdigen Segment.
Konfigurieren Sie nach dem Import der Vorlage die Broker-Verbindung in den Importparametern des Moduls:
| Parameter | Standard | Beschreibung |
|---|---|---|
MQTT Broker IP (IpAddress) | 192.168.0.1 | Broker-Adresse im lokalen Netzwerk |
MQTT Broker port (Port) | 1883 | Standard-MQTT-Port (ohne TLS) |
Transition time (TransitionTime) | 300 | Standard-Übergangsdauer pro Lampe in Millisekunden |
MQTT auf der Lampe aktivieren
Jede Shelly DUO muss auf den Broker verwiesen werden, bevor sie Nachrichten veröffentlicht oder Befehle entgegennimmt:
- Öffnen Sie das Web-UI der Lampe unter
http://<bulb-ip>(IP findet sich in der DHCP-Tabelle des Routers oder in der Shelly App) - Gehen Sie zu Internet & Security → Advanced — MQTT und aktivieren Sie MQTT
- Tragen Sie den Server des Brokers ein (IP und Port, z. B.
192.168.0.10:1883) und lassen Sie username / password leer (die TapHome-Vorlage stellt keine Broker-Authentifizierung bereit) - Optional können Sie das MQTT prefix anpassen, falls Sie nicht den Standard
shellies/ShellyBulbDuo-<MAC6>möchten - Speichern und Lampe neu starten — nach erneutem Verbindungsaufbau veröffentlicht sie auf
shellies/ShellyBulbDuo-<id>/light/0/status
Device ID (bulbNtopic)
Jede Shelly DUO besitzt eine eindeutige MQTT Device ID im Format ShellyBulbDuo-<MAC6>, wobei <MAC6> die letzten 6 Hex-Zeichen der MAC-Adresse sind (z. B. ShellyBulbDuo-B929CC). Derselbe Wert ist auch der mDNS-Hostname der Lampe (ShellyBulbDuo-<MAC6>.local).
Die Device ID finden Sie:
- Im Shelly Web-UI: Settings → Device Info → Feld
mqtt.id - Per HTTP:
GET http://<bulb-ip>/settings→mqtt.id - Auf dem Geräteetikett / der Verpackung (letzte 6 Zeichen der MAC, klein-Hex)
- Als mDNS-Hostname, z. B.
ShellyBulbDuo-b929cc.local
Öffnen Sie das Modul Shelly DUO MQTT in TapHome und tragen Sie die Topic-Variablen für jede Lampe ein, die Sie verwenden möchten:
| Variable | Standard | Beschreibung |
|---|---|---|
bulb1topic | ShellyBulbDuo-deviceid1 | MQTT Device ID der ersten DUO-Lampe |
bulb2topic | ShellyBulbDuo-deviceid2 | MQTT Device ID der zweiten DUO-Lampe |
bulb3topic | ShellyBulbDuo-deviceid3 | MQTT Device ID der dritten DUO-Lampe |
bulb4topic | ShellyBulbDuo-deviceid4 | MQTT Device ID der vierten DUO-Lampe |
bulb5topic | ShellyBulbDuo-deviceid5 | MQTT Device ID der fünften DUO-Lampe |
Ersetzen Sie den Platzhalter durch die tatsächliche Device ID jeder Lampe, die Sie steuern möchten (z. B. ShellyBulbDuo-B929CC). Das Modul abonniert shellies/# und die Listener-Skripte pro Lampe filtern die Nachrichten nach Topic-Präfix. Slots, die noch auf dem Platzhalter stehen, werfen in TapHome einen Fehler, bis sie konfiguriert oder aus der Vorlage entfernt werden.
Übergangszeit pro Lampe
Jedes Light-Gerät besitzt eine transitionTime-Variable (in Millisekunden, Bereich 0-5000 ms), die standardmäßig dem Modul-Importparameter TransitionTime entspricht. Überschreiben Sie sie auf einzelnen Lampen, wenn Sie unterschiedliche Übergangszeiten möchten — der Wert wird bei jeder Helligkeits- oder CCT-Änderung als transition-Feld im JSON-Payload /light/0/set mitgesendet.
Das Aktivieren von MQTT auf einem Gen1 Shelly-Gerät deaktiviert die Shelly Cloud — beide können nicht gleichzeitig betrieben werden. HTTP REST und CoIoT bleiben verfügbar, sodass die Lampe weiterhin aus dem lokalen Netz erreichbar ist.
Gerätefunktionen
Die Vorlage stellt 10 Geräte pro Modul bereit — 5 Weißlichter mit einstellbarer Farbtemperatur und 5 Stromzähler, ein Paar pro physischer Lampe. Alle 5 Paare sind funktional identisch und unterscheiden sich nur durch die bulbNtopic, auf die sie hören.
Lichtsteuerung
Jedes Light-Gerät wird in TapHome als White Light mit zwei Steuerungseigenschaften eingebunden:
- Helligkeit — gelesen aus dem Feld
$.brightness(0-100) der JSON-Nachrichtlight/0/status, skaliert auf den TapHome-Bereich 0.0-1.0; geschrieben überlight/0/setmit"turn":"on", "brightness":N, "transition":<ms> - Farbtemperatur — gelesen aus
$.temp(3000-6500 K), geschrieben überlight/0/setmit"temp":K, "transition":<ms>
Das Ausschalten des Lichts nutzt einen separaten Topic light/0/command mit dem Payload off, was schneller ist als das Erstellen einer JSON-set-Nachricht. Helligkeits- und CCT-Updates enthalten immer das Feld transition, damit die Lampe weich überblendet statt zu springen.
Leistungsmessung
Jeder Stromzähler abonniert zwei skalare Topics, die die Lampe etwa einmal pro Sekunde veröffentlicht:
| TapHome-Wert | Quell-Topic | Quell-Einheit | Umrechnung | Anzeige-Einheit |
|---|---|---|---|---|
| Aktuelle Leistung | shellies/ShellyBulbDuo-<id>/light/0/power | W | ÷ 1000 | kW |
| Gesamtverbrauch | shellies/ShellyBulbDuo-<id>/light/0/energy | Wattminuten | ÷ 60000 | kWh |
Die Umrechnung von Wattminuten in kWh ist nötig, weil die Shelly Gen1 Firmware die kumulative Energie in W·min statt in W·h meldet.
Die Leistungsmessung liefert lautlos null, solange unter Settings → Device Model (E27 oder GU10) in der Shelly App oder im Web-UI nichts gewählt ist. Der TapHome-Listener zeigt beim ersten Lesen einen Hinweisbanner. Sobald das Modell gesetzt ist, meldet die Lampe sofort von null verschiedene
power/energy-Werte.
Fehlerbehebung
Lampe reagiert nicht
- Stellen Sie sicher, dass die Lampe mit dem WLAN verbunden und im LAN erreichbar ist — öffnen Sie
http://<bulb-ip>/shelly. Eine Antwort mit"type":"SHBDUO-1"bestätigt das Gerät. - Versuchen Sie den mDNS-Hostnamen (
ShellyBulbDuo-<MAC6>.local) statt der IP-Adresse — DHCP-Renewals oder Router-Neustarts können die IP ändern. - Stellen Sie sicher, dass MQTT in den Internet & Security → Advanced — MQTT Einstellungen der Lampe aktiv ist und dass IP/Port des Brokers mit den TapHome-Importparametern übereinstimmen.
- Verwenden Sie einen MQTT-Client (z. B. MQTT Explorer oder
mosquitto_sub -h <broker> -t 'shellies/#' -v), um zu prüfen, ob die Lampe aufshellies/ShellyBulbDuo-<id>/...veröffentlicht.
Fehler “Set correct ‘bulbNtopic’ value”
Das Listener-Skript wirft diesen Fehler, wenn ein bulbNtopic noch auf dem Standard-Platzhalter (ShellyBulbDuo-deviceid) steht. Tragen Sie entweder die echte Device ID für den Slot ein oder entfernen Sie ungenutzte Geräte aus der Vorlage, wenn Sie nur wenige Lampen haben.
Leistung und Energie bleiben bei null
- Öffnen Sie die Shelly App (oder das Web-UI) → Settings → Device Model und wählen Sie das passende Sub-Modell (Shelly Bulb DUO E27 oder Shelly Bulb DUO GU10). Die Lampe berechnet
power/energyerst, sobald das Modell bekannt ist. - Stellen Sie sicher, dass die Lampe tatsächlich an ist — der Zähler aktualisiert sich nur, wenn Strom fließt.
- Abonnieren Sie
shellies/ShellyBulbDuo-<id>/light/0/powerdirekt mit einem MQTT-Client und prüfen Sie, ob die Lampe einen von null verschiedenen Wert veröffentlicht.
Wärmste CCT geht nur bis 3000 K herunter
Die TapHome-XML klemmt die CCT auf 3000-6500 K, um den vermarkteten E27-Bereich abzubilden. Die Hardware selbst unterstützt 2700-6500 K beim GU10-Sub-Modell und über die rohe /light/0/set-API, sodass die wärmsten 300 K des GU10-Bereichs über die TapHome-Vorlage nicht erreichbar sind.
Lichtübergänge wirken ruckartig
Erhöhen Sie die transitionTime-Variable an der Lampe (oder den Modul-Standard TransitionTime). 300 ms reichen für kleine Dimm-Schritte, können bei großen Helligkeits- oder CCT-Sprüngen aber stufig wirken — versuchen Sie 800-1500 ms für einen weicheren Übergang.
Gen1 Shelly-Geräte verwenden reines MQTT auf Port 1883 — TLS wird nicht unterstützt. Die TapHome-Vorlage stellt zudem keine Broker-
username/passwordbereit, nutzen Sie daher einen unauthentifizierten Broker in einem vertrauenswürdigen lokalen Netzwerk oder VLAN.