+++
date = '2026-05-17T23:57:15-06:00'
draft = false
title = "Katchi, a dragon's best friend"
tags = ['kobold', 'esp32']
+++

## A smart-home for a Dragon

{{< typeit
tag=h3
speed=50
breakLines=false
loop=true
>}}
"It's the Future..."
"Dumb homes are so 2010"
"Is all of this really necessary?" — Concerned Friends
{{< /typeit >}}

### Smart-homes

The present state of smart-home choices is fairly acceptable. You have your major players, Google, Apple, Amazon and 
their associated services like Google Home or Alexa. These systems are fairly easy to set up; plug in the new device,
type in some credentials or type a prompt on your phone, and done. Most of these systems rely on a central hub that
orchestrates the entire smart home.

But all these systems have one fatal annoyance. They all require access to the internet.

### Internet dependency

In recent years, it is common to run into issues with major providers. Privacy concerns, outages and the forced 
obsolescence of existing systems put a lot of pressure on me when building my first smart home. Sure the big players
make it easy to set up and use, but for me the non-monetary cost was just too great. Besides the limitations in software,
knowing that if I had an internet outage, or god forbid, the provider has an outage, I would be shit out of luck in
turning off my lights turned me away from major providers.

### So what did I use?

After spending a lot of time frustrated with my options and dealing with the difficulties in automating and doing what 
I wanted with my smart-home, I went down the rabbit hole of options and found
[Home Assistant](https://www.home-assistant.io/).
![Home Assistant](https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fcommunity-assets.home-assistant.io%2Foriginal%2F4X%2F5%2F0%2Fe%2F50e585faea85010ebb16d3d466f071ef90ec1393.png&f=1&nofb=1&ipt=73955a250f2bf73ba578833607b6a377d67ea436a1562e35b202fb2273b3d35a)

Unlike the big-name smart-homes, Home Assistant is a self-hosted option that runs on your own hardware and locally 
connects to supported devices. It supports a wide range of [devices and integrations](https://www.home-assistant.io/integrations/?brands=featured)
and is fairly easy to set up.

I wont expound on it much more here, but I will link to the [getting started](https://www.home-assistant.io/installation/), [documentation](https://www.home-assistant.io/docs/)
and [community](https://community.home-assistant.io/) for more information.

### So what's the problem?

Of all the amazing options that Home Assistant gives us, it has a fairly significant miss; that being Smart Speaker integration.

## Home Assistant Smart Speaker

The options for Home Assistant smart speakers are quite limited, they only offer one official product as of the date of publishing this post.

{{< externalLink url="https://www.home-assistant.io/voice-pe/" >}}

While the Home Assistant Voice PE works decently, it is the only off-the-shelf option for Home Assistant which considering
all the freedom Home Assistant gives us, feels quite limiting. However, there is a solution.

### The Solution

Thankfully we are not constrained by the limitations of existing hardware thanks to microcontrollers, specifically the ESP family of microcontrollers.
![ESPHome](https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fesphome.io%2Fimages%2Fog.webp&f=1&nofb=1&ipt=fd9bfb5ff1845d2803627ce6224161f86267d81a0f426d077cbae7deaeb75215)

Using [ESPHome](https://esphome.io) you can create a whole myriad of smart devices based on the [ESP32 microcontroller](https://www.espressif.com/en/products/socs/esp32). It provides a very diverse
family of options that can fit nearly any use-case. Think of it as an alternative to Arduino, where instead of writing C code
you can write yaml configuration files that dictate and configure your ESP device.

Knowing this, I set out to make my own Smart Speaker.

## Katchi the Kobold Smart Speaker