Tracking who is in the room (for fun and profit)

People in the department might have noticed the bright LED indicator in the window of TC224, so here’s an explanation:

Animation of the LED ring in front of TC224

Solving a non-problem is fun at times. The idea for tracking who is in the room was discussed during the week, and the implementation was more or less completed over the weekend. Using an ESP8266 (ESP-01 module) connected to a WS2812 LED array, we can give people physically outside our room (mostly our supervisor) some data on who is actually in the room.

ESP8266 in use, connected to the LED ring and power supply

WS2812 LED ring showing who is in the room

Technical information

Raspberry Pi 3 is used to provide WLAN Access Point for the ESP8266 to connect. RPi is also connected to a local network (, connecting all computers in our room. This allows the system to be completely isolated from the Internet. The RPi is running a simple Node.js software, listening for HTTP GET requests and sending GET requests to the ESP8266 based on those.

Network Diagram of the system

ESP8266 is running a custom software available in Github. Each LED is given four color states with a delay for switching to the next state and state switching is done by a smooth transition. The system listens for connections and parses the GET string from the incoming data. The LED colors are updated around 30 times per second.

Finally, the actual tracking is done using Windows Task Scheduler with Workstation Lock and Unlock events running a script with a simple curl command. Similar approach can be used with any other system.

Lock (set light red):


Unlock (set light green):


Feedback on this system has been positive inside our Ultra Video Group, and we wish happy hacking for everyone interested in building a similar system.

Come and check out the system in action in front of TC224!

This entry was posted in internet of things and tagged , , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *