Back in the ’90s, the 1990’s, I used to be a late-night radio show host on Froggy. I was known as Jeremiah Bullfrog. When I left the radio business to start my own software company, Troy, the head engineer, gave me a parting gift – an ‘On Air’ light. Our company had remodeled and consolidated studios and lots of surplus gear had accumulated. I had the On Air light on my office shelf for over 20 years. With the recent events, I came up with a project to put the On Air light to use.
Along with the rest of the world, I have been working at home for the past couple of weeks. All of my meetings are now online/virtual ones and we use Microsoft Teams and Zoom. We also use video to better facilitate a connection and help us focus on the meeting. The camera that I have doesn’t have a light indicator showing whether it is in use. So, I put two and two together and come up with a remote controllable ‘On Air’ light for online meetings. It was the perfect project to entertain my three-year-old for a few hours. He was delighted every time the light turned on.

George and I ripped apart a Sunbeam Touch Light that I got for $1 in a surplus sale (you can use a Wi-Fi LED Strip). This light had a strip of LEDs, a controller, and a power supply. I just added an ESP8266 module and connected it to ThingSpeak using my tutorial that I published a few years ago. I wrote a little Visual Basic.NET script based on a project that I found on CodeGuru to detect whether or not the webcam was in use or not. If it’s in use, the script sends a signal to ThingSpeak to turn on the light.




Update – February 2021 – Python Script for Webcam State Detection
I have been getting requests for the code to detect my webcam usage. I did have a cobbled-together Visual Basic script that detected if my camera is in use or not and set the state of my On Air light accordingly. This approach was not very accessible, so I rewrote this in Python using OpenCV. Just run this code on a periodic basis to track the state of your webcam.
The code to track my webcam state and upload the state to ThingSpeak is now available on GitHub.
Most of the magic is here:
def returnWebcamStatus(webcamIndex): webcam = cv2.VideoCapture(webcamIndex, cv2.CAP_DSHOW) if webcam.isOpened(): webcam.release() return True #Webcam not in use else: return False #Webcam in use
Update – August 2021 – No Code On-Air Light
I have been getting requests for a no-code version of my On Air light. Well, I have created a new tutorial that only requires some configuration instead of programming. This option uses a Wi-Fi LED Strip and a Stream Deck controller.
Check out the tutorial: No Code: On Air Light Controller For Live Streaming and Online Meetings.

Update – January 2023 – Easier DIY On Air Light
I got lots of comments on questions about my On Air light project. I realize that it was a little too DIY. I used parts that I had and it was not easy for others to reproduce. I just updated the project to be based on parts that you can get from Amazon or somewhere else pretty easily. I also took away the need for soldering by using a screw terminal board. I think more people will be able to build their own On Air Status Light for Teams or Zoom.
This is a great idea. I tried the code guru link you posted, and got it to work for the most part but I’m not sure how I would use that information when trying to determine if Teams is using the camera, for instance, so that I know to send a thing speak event for iot use.
If it’s not too much to ask, would you mind posting a sample of your app that triggers your on air light on your github? I have been researching for several days to no avail on how to query the webcam to see if it’s on use.
Btw, I love you tutorial on ESP8266 module and thing speak. Just getting into iot and arduino, so very helpful and appreciated.
Thanks for the consideration.
Thanks for the comment about my ESP8266 and ThingSpeak tutorial. A lot of people still use it for their “Hello World” IoT projects. I have posted an update to the project and uploaded my code to a GitHub repo: https://github.com/nothans/webcam-state – I now use Python and OpenCV.
Hey Hans
Thanks for sharing your insights about the project. I need support in creating the little Visual Basic.NET script to check the Webcam-State and communicate this state to ThingSpeak.
Could you share your Script?
Regards, Tom
I just noticed your comment. I have posted an update to the project and uploaded my code to a GitHub repo: https://github.com/nothans/webcam-state – I now use Python and OpenCV. It has been more reliable “in production”.
Perfect, thank you very much. I added to the code a loop in main and added a pre-status to only communicate to thingspeak if the status is changing. Now it works perfect.
Thanks.
Is it possible to change the trigger to microphone instead of webcam?
I am sure that it is possible. I would research PyAudio and check out this thread on Stack Overflow: https://stackoverflow.com/questions/36894315/how-to-select-a-specific-input-device-with-pyaudio – Let me know if you get it work!
I am having trouble visualizing how the electronics all connects together. Could you please post a photo that includes all connections?
Yes, let me get you a clear photo when I get back home. Thanks for reaching out!
Yes. I have just updated my project to include photos and the code for reading the ThingSpeak field: https://nothans.com/on-air-light-2023
Hi Hans…great project…that photo promised above would be great, as the tutorial you refer to on the ESP8266 was all about writing to Thingspeak, not reading from it and presumably turning on a circuit to connect the light. Your Arduino code for this qould be helpful too I expect – Thanks!
Thanks for the comment. I will be revamping the project to be a bit more straightforward and less DIY. In the mean time, the official ThingSpeak Library for Arduino has a read field example: https://github.com/mathworks/thingspeak-arduino/blob/master/examples/ESP8266/program%20board%20directly/ReadField/ReadField.ino
I updated the project with photos, more instructions, and code for the ESP32 (easily adapted to ESP8266): https://nothans.com/on-air-light-2023
Let me know if you need anymore helps. I have been hanging out more and more on Discord. https://discord.gg/qX72Ycwv