Nanoleaf über Curl steuern

Für unser Smart-Admin Projekt verwenden wir Nanoleaf Light Panels um unser Firmenlogo sowie Icinga2 Alarme visuell darzustellen. Dabei steuern wir die Nanoleafs über Curl direkt aus der Shell. Wie das funktioniert beschreiben wir in diesem Artikel.

Hier im Beispiel wird ein Ubuntu 18.04 Client mit Terminal und curl verwendet.

Voraussetzungen / Vorbereitung

Die IP Adresse des Nanoleafs muss bekannt sein. Diese kann mit einem Netzwerkscan oder mit der Nanoleaf App ermittelt werden. Als Port für die API wird standardmäßig 16021 verwendet.

1. Nanoleaf API-Key generieren

Als Erstes muss ein API-Key generiert werden um sich zu authentifizieren, hierfür öffnen wir ein Terminal für unseren curl POST Request.

  • Auf dem Nanoleaf für etwa 5-7 Sekunden den On/Off Button drücken bis das Netzteil blinkt, daraufhin innerhalb von 30 Sekunden über das Terminal den curl Request abschicken: (richtige IP Adresse eintragen!)
curl --location --request POST "http://192.168.x.x:16021/api/v1/new" --data ""

Es wird ein auth_token zurückgeliefert, dieser dient als API-Key. (kopieren!)

2. Erste Nanoleaf Abfrage über Curl

Nun testen wir mit einer curl GET Abfrage ob unser Nanoleaf eingeschaltet oder ausgeschaltet ist. (IP Adresse und API-KEY eintragen!)

curl --location --request GET "http://192.168.x.x:16021/api/v1/API-KEY/state/on"

Wenn alles richtig eingetragen wurde sollte nun einer der folgenden Werte ausgeliefert werden:

  • Nanoleaf ist eingeschaltet: {"value":true}
  • Nanoleaf ist ausgeschaltet: {"value":false}

3. Nanoleaf über Curl an/aus schalten

Um das Nanoleaf nun an oder aus zu schalten, muss ein curl PUT verwendet werden. Bei value den gewünschten Wert eintragen (true/false):

curl --location --request PUT "http://192.168.x.x:16021/api/v1/API-KEY/state" --header "Content-Type: application/json" --data "{\"on\": {\"value\": true}}"

4. Farbe des Nanoleaf über Curl steuern

Anschließend versuchen wir mal unser Nanoleaf auf Grün zu schalten, hier zum Beispiel mit dem hue Farbwert 120:

curl --location --request PUT "http://192.168.x.x:16021/api/v1/API-KEY/state" --data "{\"hue\" : {\"value\":120}}"

Wenn alles funktioniert, sollte das Nanoleaf nun Grün leuchten.

5. Effekte ins Nanoleaf laden

Auch können wir problemlos Effekte bzw. Muster auslesen und verwenden, die wir in der Nanoleaf App erstellt haben.

Liste mit Effekten anzeigen:

curl --location --request GET "http://192.168.x.x:16021/api/v1/API-KEY/effects/effectsList"

Nehmen wir mal an, wir haben einen Effekt „Admin Cube“ erstellt und wollen ihn laden. Dazu benutzen wir einen curl PUT mit dem Parameter select:

curl --location --request PUT "http://192.168.x.x:16021/api/v1/API-KEY/effects" --data "{\"select\" : \"Admin Cube\"}"

Um den aktuell eingestellten aktiven Effekt auszulesen verwenden wir wieder einen curl GET Request:

curl --location --request GET "http://192.168.x.x:16021/api/v1/API-KEY/effects/select"

6. Fazit

Wie man an den obigen Beispielen sehen kann, lassen sich Nanoleafes mit relativ wenig Aufwand über Curl steuern. Der Kreativität sind dabei keine Grenzen gesetzt.

Unser Tipp: erstellen Sie Muster und Effekte in der Nanoleaf App und laden diese dann mit einem Shell-Script. Dadurch können Sie auch mehrere Nanoleafs in verschiedenen Räumen ansteuern und z.B. die Farben synchronisieren. Wir lassen zum Beispiel unsere Logos in jedem Raum rot leuchten sobald ein Alarmzustand in der ADMIN-BOX registriert wird. Dadurch entgeht uns keine kritische Meldung.

Viel Spaß beim Experimentieren!


Weiterführende Links:

Wer sich tiefer in das Thema „Nanoleaf über Curl steuern“ einarbeiten möchte, findet in der Nanoleaf Dokumentation weitere Befehle und Beispiele:

https://documenter.getpostman.com/view/1559645/RW1gEcCH#4b0facc8-c865-4006-98cb-4c2195a028ad


Nanoleaf in Aktion:

Nanoleaf Logo Curl ADMIN-INTELLIGENCE
Nanoleaf Logo Curl ADMIN-BOX
Nanoleaf Logo Curl ADMIN-INTELLIGENCE

Ähnliche Themen:

Icinga2 Alarme mit Amazon Echo / Alexa

Miguel Assenheimer

IT-Fachinformatiker bei ADMIN INTELLIGENCE GmbH
Miguel Assenheimer

Letzte Artikel von Miguel Assenheimer (Alle anzeigen)