
Nanoleaf to rodzina produktów oświetleniowych Wi-Fi LED — modułowe panele ścienne, taśmy LED, żarówki, lampy stojące i świąteczne łańcuchy świetlne — które wszystkie używają tego samego lokalnego REST API na porcie TCP 16021. Pojedynczy szablon TapHome obejmuje każdy produkt Nanoleaf dostępny przez WiFi: TapHome odpytuje kontroler poprzez HTTP w sieci LAN i udostępnia cały układ jako pojedynczą lampę HSB z temperaturą barwową.
Obsługiwane modele
| Produkt | Kod modelu | Uwagi |
|---|---|---|
| Light Panels (dawniej Aurora) | NL22 | Bez dotyku |
| Shapes Hexagons | NL42 | Z dotykiem |
| Shapes Triangles | NL47 | Z dotykiem |
| Shapes Mini Triangles | NL48 | Z dotykiem |
| Canvas (kwadraty) | NL29 | Z dotykiem |
| Elements Hexagons (wygląd drewna) | NL52 | Węższy zakres CCT (1500–4000 K) |
| Lines | NL59 | Z dotykiem |
| Matter WiFi Essentials (żarówki, taśmy LED, świąteczne łańcuchy świetlne, lampa stojąca, A19) | — | Tylko firmware 3.0.10+; ostrzejszy dolny limit jasności i węższy zakres CCT (2127–6535 K) |
Warianty Nanoleaf Essentials wyłącznie z protokołem Thread oraz Nanoleaf Skylight nie są obsługiwane — szablon wymaga kontrolera dostępnego przez WiFi, który obsługuje Open API na porcie 16021.
Funkcje urządzenia
Lampa (HSB + temperatura barwowa)
Szablon udostępnia pojedynczą lampę HSB z funkcjami włączania/wyłączania, jasności, odcienia, nasycenia i temperatury barwowej. W każdym cyklu odpytywania (500 ms) moduł wysyła
| |
i zapisuje kompletny JSON urządzenia w zmiennej niestandardowej StatusJson. Skrypty odczytu dla poszczególnych właściwości następnie parsują pola z tego zapisanego obiektu:
- Włączanie/wyłączanie —
state.on.value - Jasność —
state.brightness.value(0–100), znormalizowana do zakresu TapHome 0,0–1,0 - Odcień —
state.hue.value(0–360°) — odczytywany tylko gdystate.colorMode == "hs" - Nasycenie —
state.sat.value(0–100) — odczytywane tylko gdystate.colorMode == "hs" - Temperatura barwowa —
state.ct.value(w Kelwinach) — odczytywana tylko gdystate.colorMode == "ct"
Wszystkie zapisy trafiają do PUT /api/v1/{authToken}/state z treścią JSON dla każdej właściwości:
| |
Szablon deklaruje 1800–6500 K jako zakres temperatury barwowej — praktyczny podzbiór tego, co hardware faktycznie obsługuje. Wartości poza fizycznym pasmem urządzenia są po cichu ograniczane przez firmware Nanoleaf (zob. Uwagi i ograniczenia).
Rozróżnianie trybów kolorów
Kontrolery Nanoleaf zawsze znajdują się dokładnie w jednym z trzech trybów kolorów:
colorMode | Znaczenie |
|---|---|
hs | Tryb odcień/nasycenie — wartości odcienia i nasycenia są aktywne |
ct | Tryb temperatury barwowej — wartość CCT jest aktywna |
effect | Działa scena dynamiczna |
Skrypty odczytu TapHome respektują ten stan: odczyty odcienia i nasycenia zwracają NULL, gdy kontroler jest w trybie ct lub effect, a odczyt temperatury barwowej zwraca NaN, gdy jest w trybie hs lub effect. Zapobiega to przedostawaniu się nieaktualnych wartości z innego trybu do dashboardu. Zapis dowolnej wartości odcienia lub nasycenia przełącza kontroler w tryb hs, a zapis wartości CCT przełącza go w tryb ct — oba zatrzymują działający efekt.
Konfiguracja
1. Sparowanie kontrolera w aplikacji Nanoleaf
Zamontuj panele / żarówkę / taśmę, zainstaluj mobilną aplikację Nanoleaf i podłącz kontroler do lokalnej sieci Wi-Fi za pomocą procesu parowania w aplikacji. Zanotuj adres IPv4 kontrolera — aplikacja wyświetla go w Ustawieniach urządzenia → Info, lub można go odczytać z tabeli dzierżaw DHCP routera.
Przypisz kontrolerowi Nanoleaf rezerwację DHCP (lub statyczny IP), aby adres nie zmieniał się po odnowieniu dzierżawy. Szablon TapHome przechowuje IP w parametrach importu i nie wykrywa go automatycznie.
2. Wygenerowanie tokenu Open API
Nanoleaf Open API wymaga jednorazowego parowania między TapHome a kontrolerem. Parowanie generuje stały 32-znakowy auth_token, który przetrwa restarty i aktualizacje firmware’u.
Na kontrolerze Nanoleaf (mała jednostka liniowa dla paneli, lub samo urządzenie w przypadku żarówek / taśm) przytrzymaj przycisk włączania/wyłączania przez 5–7 sekund, aż biała dioda LED zacznie migać według wzorca. Urządzenie jest teraz w trybie parowania przez 30 sekund.
W ciągu 30-sekundowego okna wyślij pusty
POSTna endpoint parowania — na przykład za pomocącurl, PowerShell lub Postman:1curl -X POST http://{controller-ip}:16021/api/v1/newKontroler odpowiada:
1{ "auth_token": "xxxKJISJCjY2hfAyilpyIOfGixxxx" }Skopiuj 32-znakowy ciąg
auth_token.
Jeśli okno wygaśnie przed nadejściem POST, endpoint zwraca 403 Forbidden — ponownie przytrzymaj przycisk włączania/wyłączania i spróbuj jeszcze raz.
Niektóre warianty Essentials (żarówki, taśmy) nie mają fizycznego przycisku. W takim przypadku rozpocznij parowanie z ustawień urządzenia w aplikacji Nanoleaf — aplikacja aktywuje 30-sekundowe okno za Ciebie.
3. Import szablonu w TapHome
- W TapHome utwórz nowe urządzenie PacketParser z szablonu Nanoleaf RGB light.
- Wprowadź adres IPv4 kontrolera jako parametr importu
ipAddress. Port jest stały na 16021 i nie wymaga zmiany. - Otwórz właściwości urządzenia, znajdź zmienną niestandardową
authTokeni wklej 32-znakowy token wygenerowany w kroku 2. - Zapisz. Moduł będzie odpytywał
/api/v1/{authToken}/co 500 ms i wypełni lampę HSB aktualnym stanem.
Jeśli token jest nieprawidłowy lub wygasł, każdy odczyt kończy się błędem 401 Unauthorized w logu TapHome.
Wymagania sieciowe
- Tylko wychodzący TCP 16021 z CCU TapHome do kontrolera Nanoleaf. Brak wywołań do chmury, brak brokera MQTT, brak certyfikatów HTTPS.
- CCU i kontroler muszą znajdować się w tej samej sieci LAN / VLAN. Jeśli sieci Wi-Fi i przewodowe są rozdzielone, dodaj regułę firewalla zezwalającą na TCP 16021 między nimi.
- Kontrolery Nanoleaf ogłaszają usługę
_nanoleafapi._tcpprzez mDNS. Szablon wymaga bezpośredniego IP, ale mDNS może być użyty do wykrywania za pomocąavahi-browse -r _nanoleafapi._tcp(Linux) lubdns-sd -B _nanoleafapi._tcp(macOS).
Nanoleaf Open API jest tylko HTTP — nie ma HTTPS ani szyfrowania transportu. Jest bezpieczne w obrębie sieci LAN, ale nigdy nie może być wystawiane do publicznego internetu. Nie przekierowuj portu 16021 przez router.
Uwagi i ograniczenia
Zakres temperatury barwowej zależy od rodziny modelu
Szablon TapHome deklaruje 1800–6500 K jako zapisywalny zakres CCT. Podstawowe pasmo hardwarowe różni się w zależności od rodziny:
| Rodzina | Hardwarowy zakres CCT | Zachowanie poza zakresem |
|---|---|---|
| Light Panels, Shapes, Canvas, Lines | 1200–6500 K | Ograniczone przez firmware |
| Elements Hexagons | 1500–4000 K | Ograniczone przez firmware |
| Matter WiFi Essentials | 2127–6535 K | Ograniczone przez firmware; 1800 K jest poniżej dolnej granicy 2127 K, więc Essentials ograniczają do 2127 K |
Zapis wartości poza fizycznym pasmem urządzenia nie generuje błędu — kontroler po cichu używa własnego limitu. Projektując dashboardy ukierunkowane na Essentials, preferuj wartości CCT we wspólnym oknie 2127–6500 K.
Essentials odrzucają jasność = 0
Klasyczne kontrolery (Light Panels, Shapes, Canvas, Elements, Lines) akceptują brightness: 0. Matter WiFi Essentials wymuszają minimum 1 i odrzucają 0 z HTTP 400. Aby wyłączyć żarówkę lub taśmę Essentials, użyj kanału włączania/wyłączania zamiast ustawiania jasności na zero.
Odczyty odcienia / nasycenia / CCT mogą zwracać NULL lub NaN
Ponieważ tryby hs i ct wzajemnie się wykluczają, a oba są nieaktywne podczas działającego efektu, odczyty z niewłaściwego trybu celowo zwracają NULL (odcień / nasycenie) lub NaN (ct). Jest to oczekiwane zachowanie, a nie błąd. Zapis wartości odcienia / nasycenia / ct przywraca kontroler do trybu hs lub ct i odczyty są wznawiane.
Jeden token na kontroler, a nie na panel
Wielopanelowy układ Shapes lub Canvas to pojedyncze urządzenie TapHome. Token auth jest wydawany na poziomie kontrolera i obejmuje każdy podłączony panel.
Niestabilność IPv6 mDNS na firmware 8.5.2+
Społeczność openHAB zgłosiła, że rekordy IPv6 mDNS naprzemiennie zmieniają stany ONLINE i OFFLINE na niektórych kontrolerach z firmware 8.5.2+. Jeśli wykrywanie mDNS jest niestabilne, ustaw stałą rezerwację DHCP IPv4 i użyj IP bezpośrednio — szablon TapHome i tak nie polega na mDNS.
Rozwiązywanie problemów
401 Unauthorized przy każdym odczycie
authToken jest nieprawidłowy, wygasł lub został unieważniony. Wygeneruj nowy token (przytrzymaj przycisk włączania/wyłączania przez 5–7 s i wyślij POST na /api/v1/new) i wklej go do zmiennej niestandardowej authToken.
403 Forbidden podczas generowania tokenu
30-sekundowe okno parowania zostało zamknięte. Ponownie przytrzymaj przycisk włączania/wyłączania, aż LED zacznie migać wzorem, a następnie natychmiast wyślij POST /api/v1/new.
Odcień / nasycenie pokazują NULL na dashboardzie
Kontroler jest w trybie ct lub działa efekt. Zapisz dowolną wartość odcienia lub nasycenia, aby przełączyć kontroler z powrotem w tryb hs, lub ustaw kolor za pomocą wybieraka HSB. Szablon nie może wywnioskować odczytu odcienia / nasycenia, gdy urządzenie go nie produkuje.
Temperatura barwowa odczytuje się jako NaN
Kontroler jest w trybie hs lub działa efekt. Zapisz wartość CCT, aby przełączyć w tryb ct, lub ustaw temperaturę barwową z dashboardu. Jeśli działa efekt, zatrzymaj go w aplikacji Nanoleaf (lub zapisz dowolną wartość HSB / CCT — to również zatrzyma efekt).
Zapis jasności kończy się niepowodzeniem na Essentials
Matter WiFi Essentials odrzucają brightness: 0. Użyj kanału włączania/wyłączania do wyłączania zamiast zapisywać 0 w jasności. Wartości 1–100 są akceptowane na wszystkich modelach.
Kontroler rozłącza się na firmware 8.5.2+
Jeśli CCU TapHome wielokrotnie traci kontroler, przypisz statyczną rezerwację DHCP IPv4 i użyj IP w parametrze importu ipAddress — warstwa IPv6 mDNS może być niestabilna w tej gałęzi firmware’u.
