“Hey Snips, turn on the Kitchen Pi”

I am a huge fan of home automation. My last house was filled with so many hue lights, that we surpassed the limit of bulbs that could be joined to a single hue bridge (having to combine these bridges was my first dive into Home Assistant, I’ll have more on this setup in a later post). But I’m also a fan of technology that respects my freedoms and privacy – and unfortunately, pretty much all consumer home automation ecosystems rely on closed cloud services that package and sell your data to the highest bidder. Worse, appliances that pack in WiFi connectivity, like Samsung’s line of smart refrigerators, tend to lose support quickly, leaving consumers out of luck on features or exposed to security risks. Some features that would solve a few problems just weren’t in any of the offerings, either, so naturally I decided to roll my own.

Enter: The Kitchen Pi

Artfully integrated – just like it came from the factory!

The hardware I had sitting around from a planned, similar project, and is fairly straightforward. It consists of:

  • A Raspberry Pi 3
  • A cheap TFT touchscreen from eBay
  • An USB conference microphone
  • A Zebra label printer

It serves a few functions for the house in the Kitchen. The most popular feature is the label printer. At the press of a button, it’ll generate a sticker that helps organize the pantry, and makes it easy to tell when opened consumables and leftovers need to be thrown out.

The green and red buttons at the bottom turn the hue light groups for the immediate room on or off.

Voice recognition and control is courtesy of Snips, a private-by-design voice assistant platform that runs everything, from wake-word detection, speech recognition, and natural language processing, on-device: we can rest assured that our Kitchen conversations will never end up on the listening end of some mystery third-party contractors. The Snips model I have running allows color and brightness control for the lights, can add things to our shopping list in Home Assistant, and will print out a date label if requested.

The interface is a simple WxPython application (code on my Gitea). Conveniently, Snips publishes results from voice interactions on an MQTT topic, and Home Assistant also provides an MQTT interface, so a pair of Brokers bridge these topics together and the application hooks into both that way.

Some improvements I have for the near future:

  • Attaching a speaker – I was using desktop pop-up notifications for feedback from Snips, but the framebuffer driver for the TFT display really struggles at compositing, and the popup notifications will often corrupt the application display between redraws.
  • Get A larger screen driven over HDMI rather than GPIO (see above).
  • Add a Barcode scanner – I’ve been working to integrate an ERP-style system called Grocy, and a scanner near the fridge with a dead-simple interface would make sure it gets used.
  • Make a better interface to control the lights – screen real estate made this difficult on such a small screen, and groups can always be dimmed with a voice command, but a few taps are easier during a noisy party.