ecaron / smart-nightlight-manager

My in-network Node app for controlling my kids' nightlights (like Hue or FastLED) via website or IoT buttons

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Internet-enabled children's nightlight

Powered by Node.JS and a variety of types of internet-controllable lights, such as:

Why Does This Exist?

I wanted my kids to have a nightlight in their room that:

  • Had programmable color & brightness
  • Had an adjustable timer (turns off X minutes after being turned on)
  • Had an interface to show history of button pushes (so I can see when they were awake)
  • Schedule the light to change color on a schedule (so at 7am it turns to blue to indicate "Ok, it's morning time!"). This is great for sleep training!

Other Great Uses

  • Our kitchen lightstrips now turn on at 9pm, and off at 7am, to provide a great evening ambience.

Live Demos

Demo of button turning light on
light turn on
Demo of button turning light off
light turn off

What Does This Do?

There is a Node.js web server that runs on the network, connects to the Philips Hue bridge, and listens on the network for some button to get pushed.

Each button gets associated with a light on the network. If the button is pushed and the light is off - the light is turned on (and a timer is started to automatically turn the light off after X minutes). If the button is pushed and the light is on - the light is turned off.

There is also a web application that sets the default color and colors during specific time periods. The web interface - in addition to showing times of button pushes - permits turning the light on with & without the timer, and turning the light off.

Setup

Getting The App Running

For the most part, it is a straight-forward Node.js application. After downloading this repo and extracting it to a directory of your choice, run:

  • npm install
  • npm start

You can now access http://localhost:3000/ and view the complete interface. (On my home network, I put this on a Rapsberry Pi and set the in-house DNS to know it as "nightlight". So now babysitters and family just go to http://nightlight/ to use it.)

Environment Configurables

There are some variables that much be defined in the environment before starting the application. For your convenience, you can also stored these in a .env file.

Variable Purpose Default
SITE_NAME Shown in page header and logged with Hue bridge Nightlight System
NODE_ENV Determines if application should cache & catch uncaught errors (if set to production), or exit blank
PORT Port app listens on 3000
SESSION_SECRET How cookie data is encrypted secret

Keeping The App Running

You'll find plenty of other great tutorials on the web about running a Node.js app as a daemon, but here are a couple:

Screenshots

Desktop interface for monitor and control
Mobile interface for monitor and control
mobile view

Acknowledgements

About

My in-network Node app for controlling my kids' nightlights (like Hue or FastLED) via website or IoT buttons

License:MIT License


Languages

Language:JavaScript 83.3%Language:HTML 15.6%Language:Python 0.9%Language:CSS 0.3%