Make your own Presence Sensors for CHEAP! TOMMY Sense TESTED
I got an email a few weeks ago asking if I wanted to check out a tool called TOMMY sense, a way to turn ESP32s (that you might already be using!) into motion and presence sensors. That’s amazing! This is a tool that works flawlessly with Home Assistant, costs you next to nothing, and lets you use hardware you might already own and use for a whole new purpose – no special sensors required. That sure sounds incredible, so let’s take a look.
First it’s worth knowing what presence detection actually is. Unlike typical motion sensors, often called PIRs meaning passive infra-red sensors, presence sensors use radio waves to detect if someone is there. There are a couple of types of radio waves to use – 2.4GHz/5GHz (the WiFi frequencies) – and 60GHz. The latter is expensive, but more feature rich. The former is what we’re using here. Some cheap presence sensors, like the Sonoff one I tested a while ago, use 2.4GHz, and importantly, the Connectivity Standards Alliance (who make Zigbee) introduced a feature they call “Ambient Sensing” which does exactly what TOMMY Sense does, but with your existing Zigbee devices. It’s a feature that the brand has to implement, and as far as I know only Philips Hue (when using a HUE hub no less) has added it, but it basically uses the slight shifts in the 2.4GHz radio signals to detect motion. Pretty cool right?
TOMMY Sense takes this to another level, using tiny and cheap ESP32 boards to monitor the WiFi strength and detect presence as a mesh – the more boards you have, the better. These can be ESP32s you are already using with ESPHome, although they recommend you use the ESP32-C5 as it can do both 2.4GHz and 5GHz WiFi, or at least the C6 if you still want the presence detection feature rather than basic motion sensing. Standard ESP32s will work, but only for motion. They recommend four boards per zone, although because WiFi passes through walls, technically the one zone can just be your whole house should you want that. The boards will need to be powered from the wall (via USB generally) as to do the presence detection the boards need to not only be awake 24/7, but actively scanning the WiFi signal strength, and that takes up to half a watt continuous on these XIAO C6 boards I’m using – for context even a fairly large 2000mAh lipo battery would be drained in a little under 15 hours, so yeah this needs wall power.
It’s worth noting that TOMMY Sense is a paid, and closed source, tool, although it is incredibly well priced. If you just want one zone it’s just 9 Euros (lifetime), or unlimited zones is just 29 european shmeckles. Technically you can try it out, but it pauses detection for one minute every two minutes, so it’s very much just a trial. You’ve got two options for installing TOMMY to your ESP32 boards. You basically just add TOMMY as an external component to your existing ESPHome YAML files and away you go. As mentioned you do need at least two ESP32s per zone, although the more boards you can use, the better. I initially had it set up with two which for a super small room actually worked pretty well, although ran into some issues with these specific XIAO C6 boards I use a lot, which with the excellent help of Mike who wrote TOMMY he figured out the issues I was having came down to the fact that these XIAO boards have two antenna options, the SMA connector and the ceramic PCB antenna. You can select what one to use, and the TOMMY firmware was using the external antenna, not the built in one. Once Mike worked that one out, he wrote some updates to get that fixed.
Once you get the boards running you have a collection of settings available to you. I mentioned that there’s a distinction between motion and presence, where only C5 and C6 boards can do presence, but there’s also the performance mode which is kinda the difference between sensitivity and WiFi traffic interference, and boundary mode which controls how sensitive around the edges it is. There’s also some tuning settings, namely the threshold for activation and hold time post activation. All of that adds together to give you an incredibly sensitive motion and presence tracker. Even with just three boards in a triangle around me, this can detect me breathing, and when you add in the hold time of at least 10 seconds, this absolutely can provide presence detection levels of accuracy, and as I said that’s only with three boards. A fourth (one per corner) would give you even better results. The fact that this system uses existing boards with no extra sensors, and can even be integrated into existing ESPHome devices is phenomenal.
The only catch for me is that you need wall power at every corner of your room, or a willingness to run USB cables everywhere, and less than ideal little dev boards just hanging out places. If you don’t already have a surplus of, say, XIAO C6 boards like I do, buying four of them, and some power supplies, and the license for TOMMY, you’re into this setup about the same as a Zigbee 2.4GHz presence sensor, and not a million miles off a 60GHz one either, so this does feel a little niche. It’s really cool, and I love when smart people figure out a way to use existing hardware for new and interesting use cases, however niche those use cases might be. If you’re interested in setting up TOMMY for yourself, I’ll leave a link to it in the description below, and of course I’d love to hear what you think about it in the comments below. Are you interested in making your own DIY presence sensors, or are you sticking with the store-bought options? Let me know in the comments below!
