Nanoleaf è una famiglia di prodotti di illuminazione LED Wi-Fi — pannelli da parete modulari, strisce LED, lampadine, lampade da terra e catene luminose natalizie — che parlano tutti la stessa REST API locale sulla porta TCP 16021. Un unico template TapHome copre ogni prodotto Nanoleaf raggiungibile via WiFi: TapHome interroga il controller via HTTP sulla LAN ed espone l’intera configurazione come un’unica luce HSB con temperatura di colore.
Modelli supportati
| Prodotto | Codice modello | Note |
|---|---|---|
| Light Panels (ex Aurora) | NL22 | Senza touch |
| Shapes Hexagons | NL42 | Touch abilitato |
| Shapes Triangles | NL47 | Touch abilitato |
| Shapes Mini Triangles | NL48 | Touch abilitato |
| Canvas (quadrati) | NL29 | Touch abilitato |
| Elements Hexagons (effetto legno) | NL52 | Range CCT più stretto (1500–4000 K) |
| Lines | NL59 | Touch abilitato |
| Matter WiFi Essentials (lampadine, strisce LED, catene luminose, lampade da terra, A19) | — | Solo firmware 3.0.10+; minimo di luminosità più rigido e range CCT più stretto (2127–6535 K) |
Le varianti Nanoleaf Essentials solo-Thread e il Nanoleaf Skylight non sono supportate — il template richiede un controller raggiungibile via WiFi che parli l’Open API sulla porta 16021.
Funzionalità del dispositivo
Luce (HSB + temperatura di colore)
Il template espone un’unica luce HSB con accensione/spegnimento, luminosità, tonalità, saturazione e temperatura di colore. Ad ogni ciclo di polling (500 ms) il modulo invia
| |
e memorizza il JSON completo del dispositivo nella variabile personalizzata StatusJson. Gli script di lettura per ciascuna proprietà analizzano quindi i campi da questo oggetto memorizzato:
- Accensione/spegnimento —
state.on.value - Luminosità —
state.brightness.value(0–100), normalizzata nel range TapHome 0,0–1,0 - Tonalità —
state.hue.value(0–360°) — letta solo quandostate.colorMode == "hs" - Saturazione —
state.sat.value(0–100) — letta solo quandostate.colorMode == "hs" - Temperatura di colore —
state.ct.value(in Kelvin) — letta solo quandostate.colorMode == "ct"
Tutte le scritture vanno a PUT /api/v1/{authToken}/state con un corpo JSON per ciascuna proprietà:
| |
Il template dichiara 1800–6500 K come range di temperatura di colore — un sottoinsieme pratico di ciò che l’hardware supporta realmente. I valori al di fuori della banda fisica del dispositivo vengono silenziosamente limitati dal firmware Nanoleaf (vedere Note e limitazioni).
Gating delle modalità di colore
I controller Nanoleaf sono sempre esattamente in una delle tre modalità di colore:
colorMode | Significato |
|---|---|
hs | Modalità tonalità/saturazione — i valori di tonalità e saturazione sono attivi |
ct | Modalità temperatura di colore — il valore CCT è attivo |
effect | È in esecuzione una scena dinamica |
Gli script di lettura TapHome rispettano questa logica: le letture di tonalità e saturazione restituiscono NULL quando il controller è in modalità ct o effect, e la lettura della temperatura di colore restituisce NaN quando è in modalità hs o effect. Questo evita che valori obsoleti di una modalità diversa vengano inviati alla dashboard. Scrivere un qualsiasi valore di tonalità/saturazione riporta il controller alla modalità hs, mentre scrivere un valore CCT lo riporta alla modalità ct — entrambe le scritture interrompono qualsiasi effetto in esecuzione.
Configurazione
1. Associare il controller nell’app Nanoleaf
Monta i pannelli / la lampadina / la striscia, installa l’app mobile Nanoleaf e collega il controller alla rete Wi-Fi locale tramite il flusso di associazione dell’app. Annota l’indirizzo IPv4 del controller — l’app lo mostra in Impostazioni dispositivo → Info, oppure può essere letto dalla tabella dei lease DHCP del router.
2. Generare il token Open API
La Nanoleaf Open API richiede un’associazione una tantum tra TapHome e il controller. L’associazione produce un auth_token permanente di 32 caratteri che sopravvive a riavvii e aggiornamenti del firmware.
Sul controller Nanoleaf (la piccola unità in linea per i pannelli, o il dispositivo stesso per lampadine/strisce), tieni premuto il tasto di accensione/spegnimento per 5–7 secondi finché il LED bianco non inizia a lampeggiare con un pattern. Il dispositivo è ora in modalità associazione per 30 secondi.
Entro la finestra di 30 secondi, invia un
POSTvuoto all’endpoint di associazione — ad esempio concurl, PowerShell o Postman:1curl -X POST http://{controller-ip}:16021/api/v1/newIl controller risponde con:
1{ "auth_token": "xxxKJISJCjY2hfAyilpyIOfGixxxx" }Copia la stringa
auth_tokendi 32 caratteri.
Se la finestra scade prima che arrivi il POST, l’endpoint restituisce 403 Forbidden — tieni premuto di nuovo il tasto di accensione/spegnimento e riprova.
Alcuni formati Essentials (lampadine, strisce) non hanno un pulsante fisico. In tal caso, avvia l’associazione dalle impostazioni del dispositivo nell’app Nanoleaf — l’app attiva la finestra di 30 secondi per te.
3. Importare il template in TapHome
- In TapHome, crea un nuovo dispositivo PacketParser dal template Nanoleaf RGB light.
- Inserisci l’indirizzo IPv4 del controller come parametro di importazione
ipAddress. La porta è fissa a 16021 e non deve essere modificata. - Apri le proprietà del dispositivo, trova la variabile personalizzata
authTokene incolla il token di 32 caratteri generato al passo 2. - Salva. Il modulo eseguirà il polling di
/api/v1/{authToken}/ogni 500 ms e popolerà la luce HSB con lo stato corrente.
Se il token è errato o scaduto, ogni lettura fallisce con 401 Unauthorized nel log di TapHome.
Requisiti di rete
- Solo TCP 16021 in uscita dal CCU TapHome al controller Nanoleaf. Nessuna chiamata cloud, nessun broker MQTT, nessun certificato HTTPS.
- Il CCU e il controller devono essere sulla stessa rete LAN / VLAN. Se le reti Wi-Fi e cablate sono segregate, aggiungi una regola firewall che consenta TCP 16021 tra di esse.
- I controller Nanoleaf pubblicizzano il servizio
_nanoleafapi._tcpvia mDNS. Il template richiede un IP diretto, ma mDNS può essere usato per il rilevamento conavahi-browse -r _nanoleafapi._tcp(Linux) odns-sd -B _nanoleafapi._tcp(macOS).
La Nanoleaf Open API è solo HTTP — non c’è HTTPS né crittografia del trasporto. È sicura all’interno della LAN ma non deve mai essere esposta a internet pubblico. Non inoltrare la porta 16021 attraverso il router.
Note e limitazioni
Il range di temperatura di colore dipende dalla famiglia del modello
Il template TapHome dichiara 1800–6500 K come range CCT scrivibile. La banda hardware sottostante varia per famiglia:
| Famiglia | Range CCT hardware | Comportamento fuori range |
|---|---|---|
| Light Panels, Shapes, Canvas, Lines | 1200–6500 K | Limitato dal firmware |
| Elements Hexagons | 1500–4000 K | Limitato dal firmware |
| Matter WiFi Essentials | 2127–6535 K | Limitato dal firmware; 1800 K è al di sotto del limite inferiore di 2127 K, quindi gli Essentials limitano a 2127 K |
Scrivere un valore al di fuori della banda fisica del dispositivo non genera errori — il controller usa silenziosamente il proprio limite. Quando progetti dashboard destinate agli Essentials, preferisci valori CCT nella finestra comune 2127–6500 K.
Gli Essentials rifiutano luminosità = 0
I controller classici (Light Panels, Shapes, Canvas, Elements, Lines) accettano brightness: 0. I Matter WiFi Essentials impongono un minimo di 1 e rifiutano 0 con HTTP 400. Per spegnere una lampadina o striscia Essentials, usa il canale di accensione/spegnimento invece di portare la luminosità a zero.
Le letture di tonalità / saturazione / CCT possono restituire NULL o NaN
Poiché hs e ct si escludono a vicenda e entrambi sono inattivi durante un effetto in esecuzione, le letture della modalità errata restituiscono intenzionalmente NULL (tonalità / saturazione) o NaN (ct). Questo è il comportamento atteso, non un errore. Una scrittura di tonalità / saturazione / ct riporta il controller alla modalità hs o ct e le letture riprendono.
Un token per controller, non per pannello
Un layout Shapes o Canvas multi-pannello è un unico dispositivo TapHome. L’auth token viene emesso a livello di controller e copre ogni pannello ad esso collegato.
Instabilità mDNS IPv6 su firmware 8.5.2+
La community openHAB ha segnalato che i record mDNS IPv6 alternano stati ONLINE e OFFLINE su alcuni controller con firmware 8.5.2+. Se il rilevamento mDNS è instabile, imposta una prenotazione DHCP IPv4 fissa e usa l’IP direttamente — il template TapHome non si affida comunque a mDNS.
Risoluzione dei problemi
401 Unauthorized a ogni lettura
L’authToken è errato, scaduto o è stato revocato. Genera un nuovo token (tieni premuto il tasto di accensione/spegnimento per 5–7 s e invia POST a /api/v1/new) e incollalo nella variabile personalizzata authToken.
403 Forbidden durante la generazione del token
La finestra di associazione di 30 secondi si è chiusa. Tieni premuto di nuovo il tasto di accensione/spegnimento finché il LED non lampeggia con un pattern, quindi invia immediatamente POST /api/v1/new.
Tonalità / saturazione mostrano NULL sulla dashboard
Il controller è in modalità ct o è in esecuzione un effetto. Scrivi un qualsiasi valore di tonalità o saturazione per riportare il controller alla modalità hs, oppure imposta un colore con il selettore HSB. Il template non può dedurre una lettura di tonalità/saturazione quando il dispositivo non la produce.
La temperatura di colore viene letta come NaN
Il controller è in modalità hs o è in esecuzione un effetto. Scrivi un valore CCT per passare alla modalità ct, oppure imposta una temperatura di colore dalla dashboard. Se è in esecuzione un effetto, interrompilo dall’app Nanoleaf (o scrivi un qualsiasi valore HSB / CCT — anche questo arresta l’effetto).
La scrittura della luminosità fallisce sugli Essentials
I Matter WiFi Essentials rifiutano brightness: 0. Usa il canale di accensione/spegnimento per spegnere invece di scrivere 0 nella luminosità. I valori 1–100 sono accettati su tutti i modelli.
Il controller va offline su firmware 8.5.2+
Se il CCU TapHome perde ripetutamente il controller, assegna una prenotazione DHCP IPv4 statica e usa l’IP nel parametro di importazione ipAddress — il livello mDNS IPv6 può essere instabile su questo ramo firmware.
Nanoleaf