Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Minimum Viable Christmas Lights

Christmas Gif

My Christmas lights controlled via a Z-Wave stick and an NVIDIA Jetson Nano. There is an accompanying blog post at Make Art with Python.

The UI is a Flask frontend, and / or a React Native App for iOS / Android.

This loops over each node on a Z-Wave network, and checks to see if it's a switch.

If a network node is a switch, check the state.

If it's On, give the option to turn Off, and vice versa.

Architecture diagram

Running the Server

I'm currently running via a:

$ nohup FLASK_RUN_PORT=8050 flask run --host= &

This binds to my Jetson Nano's IP address, and makes the UI available to my network at port 8050.

So, assuming my Jetson Nano's IP address is, I can open up from any computer on my network, and see the state of and control my Christmas Lights.

Building the React Native App

The React Native app uses Expo to handle building the iOS bundle. You'll want to create an Expo account to develop / livereload on your phone.

Get started by changing into the RemoteControl/ directory, and then running:

$ yarn start

Right now the React native app has my Jetson Nano's IP address hardcoded. You'll probably want to change that to your Jetson Nano's IP address on your home network.


Christmas lights controlled via Z-Wave and Flask






No releases published


No packages published