
Shelly DUO (model SHBDUO-1) to inteligentna żarówka LED Wi-Fi Gen1 dostępna w wersjach E27 i GU10. Standardowa DUO jest wyłącznie biała z regulowaną temperaturą barwową i ściemnialną jasnością — nie ma kanałów RGB (wariant z RGB to DUO RGBW / shellycolorbulb- i używa osobnego szablonu). To jest wariant MQTT integracji z TapHome; dla pojedynczej żarówki dostępny jest również wariant HTTP.
Szablon obsługuje do 5 żarówek DUO na moduł poprzez wspólnego brokera MQTT w sieci lokalnej. Każda żarówka jest identyfikowana zmienną modułu bulbNtopic wskazującą na MQTT Device ID żarówki i udostępnia zarówno urządzenie białego światła, jak i licznik energii — łącznie 10 urządzeń.
Konfiguracja
Broker MQTT
Szablon wymaga brokera MQTT dostępnego w sieci lokalnej — działa dowolny standardowy broker (Mosquitto, EMQX lub broker wbudowany w Home Assistant). Broker działa na porcie 1883 bez TLS (sprzęt Gen1 Shelly nie obsługuje MQTT przez TLS), dlatego trzymaj go w zaufanym segmencie.
Po zaimportowaniu szablonu skonfiguruj połączenie z brokerem w parametrach importu modułu:
| Parametr | Domyślne | Opis |
|---|---|---|
MQTT Broker IP (IpAddress) | 192.168.0.1 | Adres brokera w sieci lokalnej |
MQTT Broker port (Port) | 1883 | Standardowy port MQTT (bez TLS) |
Transition time (TransitionTime) | 300 | Domyślny czas przejścia jasności/CCT każdej żarówki w milisekundach |
Włączanie MQTT na żarówce
Każda Shelly DUO musi być wskazana na brokera, zanim zacznie publikować lub przyjmować polecenia:
- Otwórz interfejs webowy żarówki pod
http://<bulb-ip>(IP znajdziesz w tabeli DHCP routera lub w aplikacji Shelly) - Przejdź do Internet & Security → Advanced — MQTT i włącz MQTT
- Wpisz server brokera (IP i port, np.
192.168.0.10:1883) i pozostaw username / password puste (szablon TapHome nie udostępnia uwierzytelniania brokera) - Opcjonalnie zmień MQTT prefix, jeśli nie chcesz domyślnego
shellies/ShellyBulbDuo-<MAC6> - Zapisz i zrestartuj żarówkę — po ponownym połączeniu zacznie publikować na
shellies/ShellyBulbDuo-<id>/light/0/status
Device ID (bulbNtopic)
Każda Shelly DUO ma unikalne MQTT Device ID w formacie ShellyBulbDuo-<MAC6>, gdzie <MAC6> to ostatnie 6 znaków szesnastkowych adresu MAC (np. ShellyBulbDuo-B929CC). Ta sama wartość jest również nazwą hosta mDNS żarówki (ShellyBulbDuo-<MAC6>.local).
Device ID można znaleźć:
- W Shelly web UI: Settings → Device Info → pole
mqtt.id - Przez HTTP:
GET http://<bulb-ip>/settings→mqtt.id - Na etykiecie urządzenia / opakowaniu (ostatnie 6 znaków MAC, małe hex)
- Jako nazwa hosta mDNS, np.
ShellyBulbDuo-b929cc.local
Otwórz moduł Shelly DUO MQTT w TapHome i wypełnij zmienne topicu dla każdej żarówki, której chcesz używać:
| Zmienna | Domyślne | Opis |
|---|---|---|
bulb1topic | ShellyBulbDuo-deviceid1 | MQTT Device ID pierwszej żarówki DUO |
bulb2topic | ShellyBulbDuo-deviceid2 | MQTT Device ID drugiej żarówki DUO |
bulb3topic | ShellyBulbDuo-deviceid3 | MQTT Device ID trzeciej żarówki DUO |
bulb4topic | ShellyBulbDuo-deviceid4 | MQTT Device ID czwartej żarówki DUO |
bulb5topic | ShellyBulbDuo-deviceid5 | MQTT Device ID piątej żarówki DUO |
Zastąp placeholder rzeczywistym Device ID dla każdej żarówki, którą chcesz sterować (np. ShellyBulbDuo-B929CC). Moduł subskrybuje shellies/#, a skrypty listenerów dla poszczególnych żarówek filtrują wiadomości po prefiksie topicu. Sloty pozostawione na wartości placeholder generują błąd w TapHome, dopóki nie zostaną skonfigurowane lub usunięte z szablonu.
Czas przejścia każdej żarówki
Każde urządzenie Light udostępnia zmienną transitionTime (w milisekundach, zakres 0-5000 ms), która domyślnie dziedziczy parametr importu TransitionTime z poziomu modułu. Nadpisz ją na poszczególnych żarówkach, jeśli chcesz różne czasy przejścia — wartość jest wysyłana przy każdej zmianie jasności lub CCT jako pole transition w payloadzie JSON /light/0/set.
Włączenie MQTT na urządzeniu Gen1 Shelly wyłącza Shelly Cloud — oba nie mogą działać jednocześnie. HTTP REST i CoIoT pozostają dostępne, więc żarówka jest nadal osiągalna z sieci lokalnej.
Funkcje urządzenia
Szablon udostępnia 10 urządzeń na moduł — 5 świateł białych z regulacją barwy i 5 liczników energii, jedną parę na fizyczną żarówkę. Wszystkie 5 par są funkcjonalnie identyczne, różnią się tylko bulbNtopic, na który nasłuchują.
Sterowanie światłem
Każde urządzenie Light jest mapowane w TapHome jako White Light z dwoma właściwościami sterowania:
- Jasność — odczytywana z pola
$.brightness(0-100) JSON-alight/0/status, skalowana do zakresu TapHome 0.0-1.0; zapisywana przezlight/0/setz"turn":"on", "brightness":N, "transition":<ms> - Temperatura barwowa — odczytywana z
$.temp(3000-6500 K), zapisywana przezlight/0/setz"temp":K, "transition":<ms>
Wyłączanie światła używa osobnego topicu light/0/command z payloadem off, co jest szybsze niż konstruowanie wiadomości JSON set. Aktualizacje jasności i CCT zawsze zawierają pole transition, dzięki czemu żarówka płynnie przechodzi zamiast skakać.
Pomiar zużycia
Każdy Electric Meter subskrybuje dwa skalarne topicy publikowane przez żarówkę mniej więcej raz na sekundę:
| Wartość TapHome | Topic źródłowy | Jednostka źródłowa | Konwersja | Jednostka wyświetlania |
|---|---|---|---|---|
| Moc chwilowa | shellies/ShellyBulbDuo-<id>/light/0/power | W | ÷ 1000 | kW |
| Zużycie całkowite | shellies/ShellyBulbDuo-<id>/light/0/energy | watominuty | ÷ 60000 | kWh |
Konwersja watominut → kWh jest potrzebna, ponieważ firmware Shelly Gen1 raportuje energię skumulowaną w W·min, a nie w W·h.
Pomiar zużycia po cichu zwraca zero, dopóki Settings → Device Model (E27 lub GU10) nie zostanie skonfigurowane w aplikacji Shelly lub web UI. Listener TapHome przy pierwszym odczycie wyświetla baner informacyjny przypominający o tym. Po ustawieniu modelu żarówka natychmiast zaczyna raportować niezerowe wartości
power/energy.
Rozwiązywanie problemów
Żarówka nie reaguje
- Sprawdź, że żarówka jest podłączona do Wi-Fi i osiągalna w LAN — otwórz
http://<bulb-ip>/shelly. Odpowiedź zawierająca"type":"SHBDUO-1"potwierdza urządzenie. - Spróbuj nazwy hosta mDNS (
ShellyBulbDuo-<MAC6>.local) zamiast adresu IP — odnowienia DHCP lub restarty routera mogą zmienić IP. - Potwierdź, że MQTT jest włączone w ustawieniach Internet & Security → Advanced — MQTT żarówki i że IP/port brokera zgadzają się z parametrami importu TapHome.
- Użyj klienta MQTT (np. MQTT Explorer lub
mosquitto_sub -h <broker> -t 'shellies/#' -v), aby zweryfikować, że żarówka publikuje nashellies/ShellyBulbDuo-<id>/....
Błąd “Set correct ‘bulbNtopic’ value”
Skrypt listenera zgłasza ten błąd, gdy bulbNtopic nadal jest ustawiony na domyślny placeholder (ShellyBulbDuo-deviceid). Wpisz prawdziwe Device ID dla danego slotu lub usuń nieużywane urządzenia z szablonu, jeśli masz tylko kilka żarówek.
Moc i energia pozostają na zero
- Otwórz aplikację Shelly (lub web UI) → Settings → Device Model i wybierz odpowiedni sub-model (Shelly Bulb DUO E27 lub Shelly Bulb DUO GU10). Żarówka zaczyna obliczać
power/energydopiero po rozpoznaniu modelu. - Potwierdź, że żarówka faktycznie świeci — licznik aktualizuje się tylko podczas przepływu prądu.
- Subskrybuj bezpośrednio
shellies/ShellyBulbDuo-<id>/light/0/powerklientem MQTT i sprawdź, czy żarówka publikuje wartość niezerową.
Najcieplejsza CCT schodzi tylko do 3000 K
XML TapHome ogranicza CCT do 3000-6500 K, aby pasować do reklamowanego zakresu E27. Sam sprzęt obsługuje 2700-6500 K w sub-modelu GU10 oraz przez surowe API /light/0/set, więc najcieplejsze 300 K zakresu GU10 jest nieosiągalne przez szablon TapHome.
Przejścia światła wyglądają na szarpane
Zwiększ zmienną transitionTime na danej żarówce (lub domyślną wartość modułu TransitionTime). 300 ms wystarcza dla małych kroków ściemniania, ale przy dużych zmianach jasności lub CCT może wyglądać schodkowo — wypróbuj 800-1500 ms dla płynniejszego przejścia.
Urządzenia Shelly Gen1 używają zwykłego MQTT na porcie 1883 — TLS nie jest obsługiwany. Szablon TapHome również nie udostępnia
username/passwordbrokera, dlatego użyj brokera bez uwierzytelniania w zaufanej sieci lokalnej lub VLAN.