‘On Air’ Light for Microsoft Teams and Zoom Meetings

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.

Wi-Fi On-Air Light

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 helping me hack the ‘On Air’ light in my shop

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():
        return True #Webcam not in use
        return False #Webcam in use
ThingSpeak chart of my webcam status

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.

Stream Deck On Air Light

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.


  1. 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.

  2. 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

      1. 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.

  3. I am having trouble visualizing how the electronics all connects together. Could you please post a photo that includes all connections?

  4. 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!

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.