Wireless Smarthome Buttons

Wifi buttons with RGB LED feedback and notification

Similar projects worth following
Demo video is up on YouTube
Intro video is up on YouTube

At the hardware level my project is four network connected soft touch buttons with RGB LED backlighting.

This gives you a wireless button interface with feedback/notification for any of your network connected projects.

My main interest is using them to control the increasing number of different connected devices around you home, particularly connected lightbulbs like the LIFX, Hue and LimitlessLED.

A key feature is that the button press are decoupled from the RGB LED’s. For example you could use a LED to indicate a lamp on/off and colour as well as indicating an alarm condition or other notification event.

And while my current focus is on controlling lights I don’t what the project to just be a lighting controller. You could use it to control any of your own network connected projects or other products that have an open API.


The buttons are Sparkfun's Button Pad 2x2, the LED's are WS2812's aka NeoPixels, the microprocessor and wifi is the very capable Spark Core. And I have been getting my prototype PCB from OSH Park. The hardware development has been pretty straight forward due to the awesomeness that is the open hardware movement. I also intend in kind to release the board designs under a open hardware licence.


My current system works like this.

The Wireless Smarthome Buttons communicate via MQTT to a MQTT broker in my case I’m using the open source Mosquitto broker. The device publishes messages on topics that relate to the button presses and subscribes to topics that tell it what colour the LED’s should be.

I’m using a Python script for the backend logic. The Python script subscribes to the button press topics and publishes to the LED colour topics. The Python script controls the LIFX bulbs by making http requests. I’m using the unofficial http API by chendo to talk to the LIFX bulbs.

In the future I’d like to integrate with some of the more open SmartHome Hubs like SmartThings and NinjaSphere. This way the buttons can be used for a great variety of tasks and devices without having to write code for each new device and integration. 

  • Firmware Update

    Justin Maynard08/18/2014 at 22:05 4 comments

    In the last couple of weeks getting ready to shoot my demo video and running multiple button pads for the first time as well as some significant firmware updates from the SparkCore team i’ve cleaned up the firmware code a lot. It’s almost a re-write actually.

    • Updated SparkCore Core-firmware
    • All configuration at top of the file
    • Changed the way buttons work
    • Added orientation options
    • Topic strings now in variables rather than hard coded
    • etc

    The downside is that prior to the SparkCore “deep update” the micro would restart every 24 hours or so and then come good again now it just crashes, i’m obviously looking into fixing this.

    My firmware includes some other open libraries.

    The MQTT PubSubClient is based on Nicholas O'Leary's Arduino library and adapted to SparkCore by Chris Howard.

    The library controlling the WS2812 LED's is based on the Adafruit NeoPixel Library by Phil Burgess adapted to SparkCore by Technobly aka BDub, PJRC and others.

    The ClickButton library is from the list of SparkCore shared libraries, the original Arduino Library is by radon and i’m not sure who ported it to the SparkCore.

  • Phillips Releases the Hue Tap

    Justin Maynard08/18/2014 at 21:41 0 comments

    In the last couple of weeks Phillips has released the Hue Tap something their marketing blurb calls. “Here’s hue tap, the world's first wireless smart switch.”

    The Hue Tap obviously only works with the Phillips Hue system of lights. But it feels like on some level it legitimises my project now that it has some “competition”

    Hue Tap

    • Zigbee wireless
    • No Batteries or Power needed.
    • No LED indicators
    • Hue System only

    Wireless SmartHomeButtons

    • Wifi
    • RGB LED Indicators and notification
    • 5 Volt power needed
    • Open System

  • Enclosure & Maker Kit idea

    Justin Maynard08/18/2014 at 12:31 0 comments

    I’ve got a friend working on a 3D printed enclosure. The design will be open sourced once it’s working well. My idea is to ship a Makers kit with the PCB and button pad to early adopters and those interested. Then you just need to add a SparkCore and print an enclosure.

    It’s been a interesting collaboration working with a 3D designer, while the current case is simply a enclosure for my existing prototype, we have discussed a variety of major changes in the overall design for a better looking final product.

  • ​Hardware Design

    Justin Maynard08/18/2014 at 11:57 0 comments

    The eureka part of this project is putting the WS2812 LED’s behind the 2x2 button pad.

    The idea for the project came when testing out my reflow oven with a Sparkfun Simon Says kit.

    I realised the button pad would be a great user interface for controlling things and paired up with the the wifi devboard the (at the time) soon to be released SparkCore would be ideal. Then I was looking that the Simon Says and realised the SparkCore didn’t have enough pins to for 4 RGB lead’s and that’s when i discovered the WS2812 RGB LED’s.

    Prototype version 1 had the button resistors on the back of the board, necessitating reflow of both sides. As i’d like to do a small batch of these at some point I redesigned the board bringing the button resistors to the front of the board.

    There are pads on the back for the WS2812 power resistors but I’ve found that they are not really necessary the LED’s power is more of a star configuration than a chain and its’ only 4 LED’s

    The other change from version 0.1 to 0.2 was learning to tent my vias to reduce the chances of a short near the button pad.

    The reason for the shape of the current protypes is simply that there was large sections of unused board and i’d never made a non rectangular board before so it was more just testing out shapes than anything else. The next version of the board is going to go back to rectangular it’s easier to mount in a case and the spare area will be populated with space for optional extra sensors. 

View all 4 project logs

Enjoy this project?



Justin Maynard wrote 08/19/2014 at 02:58 point
Thanks for the tip. I'd noticed the embed in other peoples projects but hadn't looked into it.

  Are you sure? yes | no

Paul_Beaudet wrote 08/19/2014 at 02:20 point
If you put the link to your demo video in the details section and press enter the video with appear emebbeded in the page. Wanted to do the same thing and put it in the main discription too, but no dice.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates