Skip to main content

Python interface for Nanoleaf Aurora.

Project description

A Python module for the coolest lights with the worst software support.

This module aims to do more than just act as a wrapper for API calls. It provides several convenience functions to perform more complicated and robust actions than are possible in some of the other Aurora wrappers I’ve seen. For instance, being able to switch to a random new effect, or toggle the on/off state with a single command.

Support The Project

This is a pet project, and I’m doing it because I need API support just as badly as you do. But, if it really does make your life better, I’d appreciate a cup of coffee.

BTC: 1Gr31rgb6UXEdXwbwQGUsadcd7AnY7okXT
LTC: Lajqnm28UipLbzJqvyy4tRQFf39xQy6B48


It’s super easy - just use pip to get the latest version.

pip install nanoleaf --upgrade


There are two pieces of information you’ll need to control your Aurora: The IP address and an auth token.

Finding IP Address

For most people, the IP address that the Aurora uses to communicate is the one assigned by your router, but this might not necessarily be true depending on your network setup. Either way, you can get this by using the setup class. After about 90 seconds, this will return a list of the IP address of every Aurora found on the network.

from nanoleaf import setup

ipAddressList = setup.find_auroras()

Generate Auth Token

To generate an auth token, you must first press and hold the power button on the Aurora for about 5-7 seconds, until the white LED flashes briefly. Then, call the Setup class like so:

from nanoleaf import setup

token = setup.generate_auth_token("")

Be sure to store this auth token somewhere for future use. If you lose this token, you’ll have to generate another. Personally, I just keep it in the scripts I’ve written that call this library.


Turn on and set to an effect

from nanoleaf import Aurora

my_aurora = Aurora("", "5EvbR2FjfmYfAkEtOkEnolnZbe6qOB")
my_aurora.on = True
my_aurora.effect = "Violets Are Blue"

Set multiple Auroras to the same random effect

left_side = Aurora("", "5EvbR2FjfmYfAkEtOkEnolnZbe6qOB")
right_side = Aurora("", "fAkeR2FjfmYfAkEtOkEnolnZtOkEn")
left_side.effect = right_side.effect_random()

Add a new effect

Presently, you must create your own raw dict that exactly matches the structure found on the API documentation. Methods of making this much easier are planned for future updates.

effect_data = {
    "command": "add",
    "animName": "My Random Animation",
    "animType": "random",
    "colorType": "HSB",
    "animData": None,
    "palette": [
            "hue": 0,
            "saturation": 100,
            "brightness": 100
            "hue": 120,
            "saturation": 100,
            "brightness": 100
            "hue": 240,
            "saturation": 100,
            "brightness": 100
    "brightnessRange": {
        "minValue": 25,
        "maxValue": 100
    "transTime": {
        "minValue": 25,
        "maxValue": 100
    "delayTime": {
        "minValue": 25,
        "maxValue": 100
    "loop": True


Delete an effect

my_aurora.effect_delete("My Random Animation")

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nanoleaf-0.4.1.tar.gz (32.9 kB view hashes)

Uploaded Source

Built Distribution

nanoleaf-0.4.1-py3-none-any.whl (10.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page