I just rigged up something similar: a DBUS listener for PulseAudio mic activity that publishes MQTT events to Home Assistant via discovery. No device config needed. I use hallway RGB lights to signal status ("purple = I'm in a meeting"). Quick and easy setup, I already had the RGB lights for mood lighting. Runs as a user systemd unit.
Mine is even simpler - I just control an off-the-shelf smart bulb via a couple of macOS Shortcuts, which is trivial using Homekit. Those are driven by Hammerspoon which triggers the shortcuts based on the camera events. No custom hardware and like 20 lines of code (not including the shortcuts, I guess). I have the bulb in a normal lamp base outside my door. It's properly event driven rather than polling, too.
Triggering based on the webcam is very smart.<p>I can think of at least 5 different companies that have tried to launch similar products, including a couple local startups. Most of them had some sort of manual control which everyone gets tired of after a couple days. The few people I saw try to use the manual lights would forget to turn it off, which turned it into a false alarm system, which quickly taught everyone to ignore it and peek their head in anyway because it was on so frequently that everyone knew it had no actual correlation with the person being in a meeting.
If I ever find myself in your town I'm going to get free wifi.<p>But seriously I've wanted to build something like this for so long just never had the time. Going to definitely do it now. Love the idea of using the camera status to change the light.
A great alternative to <a href="https://busy.bar/" rel="nofollow">https://busy.bar/</a> if all you want is the core functionality, not bells and whistles, for the 10% of the price.
I did the same a few years ago with a Mac in swift -- listens to the event log via some private ObjC API for camera on and off, and checks for microphones in use. Homekit LED over door turns green if computer is awake/unlocked and not idle more than some threshold. Turns yellow if a physical mic is in use. Turns red if a camera is in use. It sends an indirect request to HomeKit to turn on/off or set the color of the light. (Indirect, because I directly set values on a homebridge synthetic accessory, and use homekit rules to mirror those changes to the actual light, which feels hacky -- talking to homekit directly looked too complicated and entitlement heavy.)<p>It's worked like a champ. -- although every few major macOS releases, Apple changes the log string for camera on and off events.
I like the ingenuity, but I didn’t want have to build custom hardware. My solution:<p>Lutron smart plug<p>“On Air” sign off of Etsy<p>Script to watch log file indicating the state of my webcam. On changes, triggers an Apple Home command to turn the Lutron switch off and on.
This is very cool and I'm glad you were able to build it.<p>On the contrary though, I've been fascinated with simple non-technical solutions to problems lately. For example, my buddy hates it when people use his driveway to turn around. He lives on a corner lot and the layout is prone to people turning around in his driveway, and apparently this is a pet peeve of his. He was talking about installing a gate, or a retractable pole that he could extend from a hole in the driveway, all these intricate technological solutions, etc. I gave it some thought and got him a street cone off eBay to put in his driveway. I leveraged human psychology over technology and it worked like a charm and only cost $30.<p>For your example, I would just put a do not disturb sign on the door. The flip around kind they have at hotels. It takes getting up, but just as effective and you get a few steps in. Of course you don't get to learn and build stuff, but like I said, I'm fascinated by simple solutions right now.
Lots of haters today. Love it, great opportunity to build something that solves a problem for you for cheap and gives you an opportunity to play with some tech.
Love it, I was expecting for some reason you routed a cable to the Webcam LED, or at least a light sensor (though that would make the lid unable to work if it's a laptop). But this is even more elegant, I guess I've been trying to do more hardware hacking recently and I read ESP32 so my expectations were off.
Nice! I built the same thing a few years ago: <a href="https://github.com/davidventura/on-air">https://github.com/davidventura/on-air</a><p>It supports mac & Linux, and gets sent to an ESP32
People are discussing the reliability of the solution as if it was a life sustaining device embedded in your body behind hard to reach organs.<p>This is a fuck off sign people, a very cool fuck off sign and that's all!<p>Nice work.
I have wanted a small LED light / edge strip on top of a laptop screen that lights up when --<p>you are in a meeting<p>your microphone is on<p>your camera is on<p>customizable to work how you want (including setting it to "show" busy at will)<p>different color LED to mean different things if possible<p>This will serve to indictae to people around you whether they can interrupt you or pass in front of your screen etc.<p>It will also warn you the user when mic/camera is accidentally (or sneakily) on
There was a time I worked from the corner of our living room.My partner would often walk in during meetings, sometimes asking loudly where the charger was.
One day, I left a sticky note on the table:“In a meeting – please check back in 30 minutes.”Surprisingly, it worked.
What really changed things wasn’t the note itself, but the quiet agreement it created.
I built a similar thing using Bluetooth to a ESP32.<p>The hard part is reliably detecting camera status. I’m currently using a utility called Oversight, but it is event-based and the dodginess of the Bluetooth connection means the device gets out of sync.<p>The python script takes a different approach, so I’m going to check that out.
Neat little project. For these things, I usually find that simpler is better - use the minimum feature set to finish it and start use.<p>I recently found a server status bezel and was thinking of making a remote status indicator out of it... maybe I should reduce the features of that project too.
Thanks, you inspired me to make something similar:<p><a href="https://github.com/swills/onair">https://github.com/swills/onair</a>
This is so awesome.<p>I thought about doing something similar during Covid, but mounted above the door frame.<p>Ended up getting a real office instead. WFH was great... until the toddler became tall enough to open doors :)
Well done! I've been thinking about something like this for a long time. I considered using the Google API to check for calendars but the camera is so much better an idea!!
I use an Embrava Blynclight Mini, ~$60 on amazon, works fine.<p>See also: <a href="https://github.com/JnyJny/busylight">https://github.com/JnyJny/busylight</a>
as a generic aside, this seems like it's more of a "LAN of Things" project than an IoT device. It seems it would work fine if the upstream IP dialtone cut out for a while (though i'm guessing you wouldn't be doing too much video conferencing if that happened.)<p>but the core functionality doesn't require a server in the cloud, so by definition it's not IoT. just a nit though. it's still a cool little hack, no matter what you call it.