Fairly heavy user of ESPhome here (I have about 15 or so devices automating several parts of my home).
What would be a better option than YAML? The main advantages are ease of in-lining C++, and it's ubiquitous.
Having to use k8s at work also makes it not much of a context switch to use for me, and the secrets management is great using the `!include`s.
But yeah the killer feature here is the inlining of C++, and the use of platformio. You really can do anything without much work (maybe at most one or two external C++ header files for really custom stuff) inside ESPhome, and it's easy to see where your snippets go when you inspect the generated C++ code.
ESPHome just automates all the super tedious parts of working with esp32s (stuff like connecting to wifi, MQTT, OTA upgrades, logging to mqtt, etc), without sacrificing any power.
My only complaint is that because it uses arduino (I think?) you can't really do powersaving really well, but I don't think many people use battery powered esp32, but this basically eliminates that possibility, at least in my research.
> ESPHome just automates all the super tedious parts of working with esp32s (stuff like connecting to wifi, MQTT, OTA upgrades, logging to mqtt, etc), without sacrificing any power.
I write my own firmware for all of my ESP devices and I can confirm, those definitely are the bulk of the work. The latest one (for a relay to power cycle my modem if the internet goes down) took less than an hour to write since I was able to copy-paste all of that boilerplate from a previous project.
> I write my own firmware for all of my ESP devices and I can confirm, those definitely are the bulk of the work.
I was doing that too for all of my projects. I was developing them as if they were products I could potentially sell. When I accepted that I wasn't ever going to do that, I gave ESPHome a try.
> took less than an hour to write since I was able to copy-paste all of that boilerplate from a previous project.
It would probably take 5 minutes to configure from scratch ESPHome, less time if you're copying from an existing config. In addition to that, you get automatic logging into Home Assistant and deep integration for free.
Using Hypfer's discovery[1] that you could read the raw values from Ikea's Vindriktning using an ESP, I wrote an ESPHome script for an ESP01 that pipes the data into Home Assistant. Now when I'm cooking and the air quality gets too bad my HVAC fan kicks on to clear the air. It took longer to solder everything up than it did to "code".
That’s pretty cool! If I had know about ESPHome when I first got into home automation I’d probably have gone with it. Although I’m kind of glad I didn’t because I actually really enjoy programming in C++.
It isn't a 1:1 alternative, but I've always thought that ESPhome would be much more accessible for the non-devs if they introduced a GUI similar to Home Assistant's automation GUI.
There's always Tasmota [0]. Personally I prefer ESPHome but recently tossed Tasmota on some OTS Sonoff plug switches. Best part is you can just drop ESPHome firmware in the Tasmota OTA upgrade and switch at any point.
What would be a better option than YAML? The main advantages are ease of in-lining C++, and it's ubiquitous.
Having to use k8s at work also makes it not much of a context switch to use for me, and the secrets management is great using the `!include`s.
But yeah the killer feature here is the inlining of C++, and the use of platformio. You really can do anything without much work (maybe at most one or two external C++ header files for really custom stuff) inside ESPhome, and it's easy to see where your snippets go when you inspect the generated C++ code.
ESPHome just automates all the super tedious parts of working with esp32s (stuff like connecting to wifi, MQTT, OTA upgrades, logging to mqtt, etc), without sacrificing any power.
My only complaint is that because it uses arduino (I think?) you can't really do powersaving really well, but I don't think many people use battery powered esp32, but this basically eliminates that possibility, at least in my research.