HomeKit is great. It allows anyone to effortlessly set up a smart home entirely offline without the usual hassle of finding a hub that uses an offline protocol and operates without connecting to the cloud. These benefits are typically reserved for those with a HomeKit hub such as a HomePod or an Apple TV. However, there is a way to use a Raspberry Pi as a hub allowing the use of compatible devices without needing an official HomeKit hub.
The idea behind smart buttons is pretty cool, you have a button that you can place anywhere, and pushing it will communicate with a controller that can make anything happen within your home. The problem is that many of these smart buttons also cost an absolute fortune. So today we're going to build a smart internet button ourselves that will cost less than 10$ to build per unit, and possibly even less if you buy all the required materials in bulk to build a few of them!
In a previous post, we demonstrated building a voice assistant out of open source components. One of the issues that we didn't address at the time is that there are still dependencies on the cloud for some of the critical functions, such as the Speech to Text engine. Here we will see how we can modify that system to operate (almost) completely offline.
There are many different voice assistants available, but they share one common trait that seems so difficult to escape: a required connection to the cloud. Today we are going to build a voice assistant that can work completely offline, but we will explore setting up your own TTS and STT servers in a future article. For now, we will use the Mycroft servers which claim to respect user privacy by anonymizing every request and requiring an opt-in to their data collection program.
The situation seems so familiar: you have an air conditioner unit that uses an IR remote, but you want to control it via your own thermostat. At least then you could manage it remotely or start cooling the air before you get home from work. This was the situation I was in, and to solve it, I built a temperature sensor with an onboard IR blaster, allowing it to also send commands to my portable air conditioner. All of this can be done for under 20$ as a relatively simple DIY project.