This is Greg. He's my coffee table. He's also an open-source Home Assistant integration now, which wasn't the plan when I bought a vibration sensor a couple of years back.
Because that's where it actually started. A vibration sensor I bought thinking "this'll come in handy one day," for triggering some lights by sitting somewhere specific or banging on a desk. Never useful enough for my place, so it sat in a drawer collecting dust for months.
Found it again while tidying. I wasn't about to bin a basically-new sensor and call it e-waste, but every practical use I looked at just didn't fit. Some of them were clever, too. Still no good for me. So there I was, stuck with a sensor and no purpose for it. Again.
Then I thought, if practical won't work, how about funny? Still useless, just fun. I do love a good laugh.
Now, weeks before any of this, I'd been talking my friends' ears off about Marvin. The film first, then Douglas Adams, then pretty much everything he wrote. I'd never heard anything like that voice and I've loved it ever since. So I'm stood there staring at the sensor sitting on our coffee table, next to the smart speaker we only ever ask for the weather, and it clicked. The automatic doors. That dripping, hopeless voice. I didn't want to copy Marvin himself, that character's already perfect and it isn't mine to take. I wanted something that came off the same production line. Same factory, different unit.
Off I went. Started as a pile of automations and helpers, fragile and fiddly, about 25 lines total. I'm stubborn enough not to quit on something silly though, so I kept going. I didn't even know I needed GitHub at that point. Didn't matter. Three weeks of evenings deep into something stupid and I was determined to make it good. Well at least funny.. No other reason for Greg to exist otherwise tbh.
And while I'm being honest.. I'm 46, and the learning curve was near-vertical. On my own I'd have spent years just learning the skills before I could even start. I didn't have years. Arc, my AI pair-programmer for the whole build, is the only reason it happened in the time it did. And while I'm being honest about that, Greg's mood faces are AI-generated too, because I genuinely can't draw. I'd rather just tell you than have you find out. If anyone fancies giving him a proper hand-drawn set, that's the dream, and fully credited.
Greg's his own character. He was clearly built by the same company that made Marvin, though, and nobody knows why they did it twice.
What Greg actually does
Stick the sensor under or on any surface, point him at any TTS speaker, and he reacts to how busy the room gets. A brush of the table, he notices, Greg always notices. A bit of activity, he's unimpressed. Full household chaos, he has opinions about all of it. And roughly every 42 minutes, if the room's been busy, he has an unprompted existential crisis about being a table. Twenty minutes of silence and he exhales. Metaphorically. He is a table after all.
He's got 125 lines now, 25 for each reaction, all in the spirit of Douglas Adams, no direct quotes. One of the existential ones: "I have supported a great many cups of tea. None of them asked how I was doing."
He brings his own sidebar panel so there's no dashboard faffing, and he works with any vibration sensor and any TTS engine. Run him through Piper with the en_GB-alan voice slowed right down and he sounds properly defeated.
He's free and he's staying free. MIT licensed. You can install him through HACS as a custom repo today, and he's in the queue to become a default HACS integration. That would be hilarious, being the one thing on there that is properly useless. Because it is. ![]()
Repo, full install steps, and every one of Greg's lines are here:
That's it. He's a table, he has feelings, the feelings are bad. If you build him, come tell me what he should say to you. I'll bundle all the good ones and add them to his lists of things he can say.
(I also tend to ramble. Sorry. Arc did try to stop me.)

