Featured Projects

LIFX Controller

I am working on an Electron.JS application for controlling LIFX smart light bulbs. While it has basic controls for power and color, it can also adjust the bulbs on more advanced levels, such as sun position, cloud cover, and weather alerts. This page will be updated as development progresses.

Technologies Used (Currently)

  • Electron.JS (JavaScript, Node.js, HTML, CSS)
  • AdminLTE website template
  • electron-store settings saver for electron
  • node-cron task scheduler
  • suncalc astronomical data calculator
  • luxon and momentJS date/time libraries
  • openweather-api-node for connecting to OpenWeatherMap
  • weathered for connecting to the National Weather Service
  • lifx-lan-client for controlling LIFX bulbs on a local area network

Full List of Features (Currently)

  • Basic LIFX Bulb Control
    • View discovered bulbs (ids and label), connection status, signal strength, and power status
    • Change a bulb’s color
    • Toggle a bulb on or off
    • Flash a bulb to identify it
  • Fail Safe
    • Timed cycle cache so when an attempted LIFX bulb adjustment fails (such as flashing for a weather alert), the program will try again when the bulb reports online within a certain amount of time
    • Cycles run in a queue and ensure relevant bulbs are not currently running a cycle before one begins. This ensures cycles do not cancel each other out except for high priority ones (like weather alerts) cancelling lower priority ones (like sun brightness changes).
  • Statuses
    • View how each component is currently controlling your bulbs in the app, such as the current sun / cloud cover brightness, Kelvin, and active weather alerts.
  • Conflict Resolution
    • When bulbs are set to adjust both for cloud cover and sun, they will take whichever component specifies the brighter setting.
  • Sun Control
    • Control the brightness of specified bulbs according to current sun position at a configured geo coordinate
    • Set minimum and maximum brightness levels
  • Kelvin / Warm Light Control
    • Control the warmth of configured light bulbs according to the current time
    • Set minimum and maximum Kelvin degree values
    • Set the hour at which bulbs should reach minimum (warmest) Kelvin, and hour at which they should change back to the coolest Kelvin.
  • Cloud Cover Control
    • Control the brightness of specified bulbs according to current cloud cover from OpenWeatherMap
    • Set minimum and maximum brightness levels
  • Weather Alerts Control
    • Configure certain bulbs to flash for new weather alerts from the National Weather Service. Bulbs can be specified according to an alert severity level: extreme, severe, moderate, or minor.
    • Configure certain bulbs to also flash-cycle active weather alerts every 5 minutes
    • Each type of alert has its own bright and dim color for the flashing