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.
Would it switch the lights if you’re only listening with headphones while your camera is open?
Most of my awkward moments happened with family members casually cruising on my background while someone else had the word. Usually they can hear when I’m speaking and don’t enter the room.
In all my meeting software (the usual suspects running in the browser) the mic is always opened at the driver level, even if I'm muted. Perhaps it's to avoid latency when you unmute, or perhaps it's for those "you're muted" pop-ups.
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.
Similar - Hammerspoon detects whether I have a Teams meeting window open (I never have my camera on) and calls out to Home Assistant to control a WLED strip visible outside the room. Also have a Zigbee button for ad-hoc control if I'm called into a Slack huddle, etc.
(I've also got it parsing my Outlook iCal to do "meeting pending", "meeting maybe pending" but it turns out that Outlook's iCal is nonsense and parsing it is a fool's errand.)
The custom hardware is the apple device and the smart bulb. Homekit doesn't appear to be usable outside that ecosystem, so I wouldn't call it non-custom
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.
I use a StreamDeck with MuteDeck (which basically provides a consistent tooling for the buttons regardless of Teams/Zoom/Meet).
MuteDeck can also integrate with hardware tools, specifically the Plenom Busylight (https://busylight.com/), which actually got a lot more reasonable price-wise from my memory ($50). They have a couple of different types of light mount.
But for now I'm fine - I work from home, desk is in the middle of the room facing the door (so camera is aimed at me and far wall). If my partner walks in, she can see the camera status on my Insta 360 camera on my monitor which has a green light visible from any direction if the webcam is live.
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.)
It's worked like a champ. -- although every few major macOS releases, Apple changes the log string for camera on and off events.
If I ever find myself in your town I'm going to get free wifi.
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.
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.
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.
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.
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.
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.
And requires me to remember to get up and hang it before a scheduled meeting. Or not hang it when someone calls me and a meeting erupts. And I need to remember to take it down after each call. (If I don’t, then it’s just up all the time and might be taken as seriously as a Prop 65 Warning.)
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!!
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.)
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.
The core idea of IoT is that everything is capable of communicating on some network, whether that device is a fridge, a coffee maker, a dishwasher, a speck of dust, or a light bulb. The idea is that networks can connect more types of "things" than just general computing devices. The type of network and the reach of said network is sort of immaterial.
The author has created a specialized widget which communicates over a network. By definition, that is IoT.
To be fair, while the definition does not require internet connectivity, the name certainly does imply that it does.
Even the linked Wikipedia article points this out:
> "Internet of things" has been considered a misnomer because devices do not need to be connected to the public internet; they only need to be connected to a network and be individually addressable.
This is very cool and I'm glad you were able to build it.
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.
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.
But you have to remember every time to flip it before a meeting starts and after it ends. If you don’t then it will start being ignored because its never accurate. It also doesn’t work if you get an impromptu call or meeting you weren’t planning for. If you have a simple, predictable meeting schedule, a sign could be fine, but an automatic solution can work a lot better in other situations.
>But you have to remember every time to flip it before a meeting starts and after it ends.
Agree, but it's an easy habit to pick up.
>If you don’t then it will start being ignored because its never accurate.
Yes, that pavlovian response works both ways. If people keep interrupting my meetings, I'll remember to put up the thing. Remembering to take it down when the meeting is over is more problematic though.
>It also doesn’t work if you get an impromptu call or meeting you weren’t planning for.
It does. I've never had a meeting where it didn't take me a few rings to get my AirPods in anyway.
I totally agree with most of what you said and I appreciate the technical solution presented. Like I said my mind is just into finding simple, non-tech solutions right now. Also another benefit of the simple solution is it costs probably a buck or two, cheaper if I made the tag myself with scissors, part of a cardboard box and a marker.
The problem with both solutions is it doesn't work for dogs who typically can't read. An even simpler solution just occurred to me. Shut the door when I'm in a meeting.
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.
Would it switch the lights if you’re only listening with headphones while your camera is open?
Most of my awkward moments happened with family members casually cruising on my background while someone else had the word. Usually they can hear when I’m speaking and don’t enter the room.
In all my meeting software (the usual suspects running in the browser) the mic is always opened at the driver level, even if I'm muted. Perhaps it's to avoid latency when you unmute, or perhaps it's for those "you're muted" pop-ups.
1 reply →
This sounds like a proper way to do it. Maybe I am biased for MQTT but I like your approach.
And HA which supports autodiscovery. Such a great piece of software
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.
Similar - Hammerspoon detects whether I have a Teams meeting window open (I never have my camera on) and calls out to Home Assistant to control a WLED strip visible outside the room. Also have a Zigbee button for ad-hoc control if I'm called into a Slack huddle, etc.
(I've also got it parsing my Outlook iCal to do "meeting pending", "meeting maybe pending" but it turns out that Outlook's iCal is nonsense and parsing it is a fool's errand.)
Is there any way to do this with a bulb near you if you use multiple rooms? Like using closest Bluetooth range or something?
The custom hardware is the apple device and the smart bulb. Homekit doesn't appear to be usable outside that ecosystem, so I wouldn't call it non-custom
Triggering based on the webcam is very smart.
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.
I use a StreamDeck with MuteDeck (which basically provides a consistent tooling for the buttons regardless of Teams/Zoom/Meet).
MuteDeck can also integrate with hardware tools, specifically the Plenom Busylight (https://busylight.com/), which actually got a lot more reasonable price-wise from my memory ($50). They have a couple of different types of light mount.
But for now I'm fine - I work from home, desk is in the middle of the room facing the door (so camera is aimed at me and far wall). If my partner walks in, she can see the camera status on my Insta 360 camera on my monitor which has a green light visible from any direction if the webcam is live.
I've considered doing something like this a few times, this is seriously ripe for an ON AIR sign :D
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.)
It's worked like a champ. -- although every few major macOS releases, Apple changes the log string for camera on and off events.
If I ever find myself in your town I'm going to get free wifi.
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.
That leak was intentional. ;-)
Come over to my place for some beers.
A great alternative to https://busy.bar/ if all you want is the core functionality, not bells and whistles, for the 10% of the price.
https://busylight.com/ can tie in to things like MuteDeck/Streamdeck which I use, for $50.
It says $250 (but of course, pretty cool). Esp module is probably <$10. What am I missing?
Edit: misread parent, ignore.
thx for the reference, though i think the bells and whistles may have been the point.
Indeed! Market segmentation ftw ;)
I like the ingenuity, but I didn’t want have to build custom hardware. My solution:
Lutron smart plug
“On Air” sign off of Etsy
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.
You should write about it and add pictures! :)
I contemplated building this for myself back when I worked from home a lot. Great idea
Nice! I built the same thing a few years ago: https://github.com/davidventura/on-air
It supports mac & Linux, and gets sent to an ESP32
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.
Source code https://github.com/skhaz/onair
It was hard to notice. It's the small rectangle under the screen.
> This endpoint receives a JSON payload with a status of “on” or “off”, and turns the LED panel red or blue accordingly
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.
Simple way: don't use headphones and crank up the volume.
What happens if you turn off your video? For large or long meetings, I generally turn my camera off.
Sonoff devices flashed with Tasmota firmware are fantastic for this.
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.
This is a fuck off sign people, a very cool fuck off sign and that's all!
Nice work.
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.
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.
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.
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.
A “Do Not Disturb” door hanger costs $7 on Amazon.
And requires me to remember to get up and hang it before a scheduled meeting. Or not hang it when someone calls me and a meeting erupts. And I need to remember to take it down after each call. (If I don’t, then it’s just up all the time and might be taken as seriously as a Prop 65 Warning.)
Automations are really nice for certain things!
9 replies →
It's not about the price. It's because it's COOL - and because somebody did a fun thing with hardware and software, which is great!
>A “Do Not Disturb” door hanger costs $7 on Amazon.
"Please take a seat, I'll be with you in a few short hours."
Priceless.
Which is more expensive than an esp32 and a led panel, and less convenient.
9 replies →
This is so awesome.
I thought about doing something similar during Covid, but mounted above the door frame.
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!!
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.)
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.
The definition of "IoT" requires neither Internet access nor cloud server functionality.
https://en.wikipedia.org/wiki/Internet_of_things
The core idea of IoT is that everything is capable of communicating on some network, whether that device is a fridge, a coffee maker, a dishwasher, a speck of dust, or a light bulb. The idea is that networks can connect more types of "things" than just general computing devices. The type of network and the reach of said network is sort of immaterial.
The author has created a specialized widget which communicates over a network. By definition, that is IoT.
To be fair, while the definition does not require internet connectivity, the name certainly does imply that it does.
Even the linked Wikipedia article points this out:
> "Internet of things" has been considered a misnomer because devices do not need to be connected to the public internet; they only need to be connected to a network and be individually addressable.
1 reply →
I use an Embrava Blynclight Mini, ~$60 on amazon, works fine.
See also: https://github.com/JnyJny/busylight
This is very cool and I'm glad you were able to build it.
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.
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.
But you have to remember every time to flip it before a meeting starts and after it ends. If you don’t then it will start being ignored because its never accurate. It also doesn’t work if you get an impromptu call or meeting you weren’t planning for. If you have a simple, predictable meeting schedule, a sign could be fine, but an automatic solution can work a lot better in other situations.
>But you have to remember every time to flip it before a meeting starts and after it ends.
Agree, but it's an easy habit to pick up.
>If you don’t then it will start being ignored because its never accurate.
Yes, that pavlovian response works both ways. If people keep interrupting my meetings, I'll remember to put up the thing. Remembering to take it down when the meeting is over is more problematic though.
>It also doesn’t work if you get an impromptu call or meeting you weren’t planning for.
It does. I've never had a meeting where it didn't take me a few rings to get my AirPods in anyway.
I totally agree with most of what you said and I appreciate the technical solution presented. Like I said my mind is just into finding simple, non-tech solutions right now. Also another benefit of the simple solution is it costs probably a buck or two, cheaper if I made the tag myself with scissors, part of a cardboard box and a marker.
The problem with both solutions is it doesn't work for dogs who typically can't read. An even simpler solution just occurred to me. Shut the door when I'm in a meeting.
I put a sign on my office door.
i need this
In college, people would just put a sock on the door....
mDNS is really convenient. Unfortunately the only way to install it on Windows is through old iTunes installers.
I have a similar system at home: there's a door on my office, and I close it.
[dead]
[dead]
Because I could not edit the link.