Hello everyone, I want to show you my latest project ControlMyLights.net.
A promotional video can be found here.
This is an interactive light installation mounted in my home that can be controlled via that website, Twitch chat or YouTube chat with the goal of raising money for Feeding America through Tiltify, a service charities use to provide a safe fundraising platform for streamers wanting to include a philanthropic option on their stream. (I never see your money; it goes straight to Feeding America). Feeding America is an organization that provides resources to food banks, food pantries and meal programs across the United States. With the number of people out of work due to COVID, this seemed a particularly relevant mission to support.
The application tech stack has 2 parts: the webserver, and the scripts that run on my desktop. The webserver is running on Heroku: I made the front-end with ReactJS, NodeJS’s Express.JS is the webserver and it’s using SocketIO to send the color data back to me. On the desktop side here is the stack: NodeJS runs a majority of the scripts, Python (selenium controls the Chrome Web Driver), Redis used for a queue and Pub/Sub, MongoDB is used to store chosen color commands, OpenFrameworks is used for video effects, an Arduino controls the custom RGB LED tubes (LEDs from FlexFireLEDs). On the desktop, I am also running a Web Socket server to connect my Redis Subscription data to OpenFrameworks. Here is a high level of the total dataflow for the project:
OpenFrameworks is used to overlay animations on top of video it gets via ofVideoGrabber capturing video from an Elgato Cam Link 4k.The animations are made from three ofRectangles rotated 45 degrees and text. To trigger the animations I’m using a WebSocket connection that when onMessage triggers, it sets a Boolean value. To position the rectangles overtop the video feed I am using ofGUI sliders.
If you are interested in reading how the project was created, from start to finish, please check out my build log: https://edwarddeaver.me/portfolio/control-my-lights/
Thank you for taking the time to check out my project.