I Built R2—a Smart Utility Bot in Software
I built my own Alexa smart speaker skill called R2 (as in the Star Wars droid, R2-D2) for four simple reasons:
-
My EcoWitt weather station doesn't have an Alexa skill
-
The Pentair pool automation “ScreenLogic” skill is total garbage
-
I'm insuring myself against platform enshittification
-
Just to see if I could (spoiler: it isn't that hard — no joke!)
Alexa Is Always Wrong
I like waking up and asking Alexa what the weather is like. The problem is she's always wrong. Amazon pulls data from some weather station nowhere near me, which makes the reported temperature off by 5-10 degrees on average. That's not trivial—75 degrees is pleasant, 85 is not.
Years ago, I solved this by buying my first weather station, an Ambient Weather WS2902, which had decent Alexa integration that worked pretty well.
Having a local weather station also informs my smart irrigation system so it knows exactly how and when it is best to water my acre of property. Get that wrong and you can waste water and money while killing your plants. Getting it right is important.
Lacking Skill
Recently, I upgraded to a newer EcoWitt station—and immediately hit a wall. EcoWitt doesn't offer an Alexa skill at all. Suddenly, I couldn't just ask for a weather report anymore. I had to open an app or walk into the living room and squint at the display panel like it was 1998.
Fortunately, I already knew how to talk to the EcoWitt API and wrote an article showing how it pulls real-time data from my local weather station. All I needed was a bridge between that data and my smart speakers.
Getting Skilled with Amazon's Developer Tools
So I dug into Amazon's Alexa developer tools. After some poking around, I got a custom skill up and running. It communicates over the internet with an API endpoint on a server in my home.
Now when I ask Alexa for weather information, Amazon forwards the request to my code. I parse it, assemble a proper response, and send it back in natural spoken language. I can ask for current conditions, trends, and stats—and they're finally accurate.
Q: Alexa, ask R2 for the weather.
A: It's sunny, 83 degrees, 20% humidity, winds are 5 miles per hour from the West, dewpoint is 38 degrees, pressure is 29.92 inches, no rain, the solar radiation is 530, UV index is moderate at 4, and inside it is 69 degrees with 42% humidity.
First problem solved.
Diving Into the Deep End of Pool Automation
With weather integration working with Alexa, I turned to a bigger and more irritating problem: pool automation.
My Pentair pool system used to integrate reasonably well with Alexa. Over time, it became unreliable and eventually non-functional. Pentair even confirmed they were dropping support entirely. That was especially irritating, since voice control was the whole reason I skipped installing a spa-side remote.
When it worked, it was great. I could turn on the jets, adjust the temperature, or fire up the air blower just by asking the Alexa speaker on the patio—no getting out of the spa or fumbling with my phone with wet hands.
And then it just… stopped working. Every request responded with “Can't connect to requested pool.” Grrr!
Home Assistant to the Rescue …again
Fortunately, I'm running Home Assistant. And now I have R2.
Home Assistant has a solid Pentair integration that talks directly to the pool controller—no flaky Pentair servers involved. It always works. So I explored Home Assistant's API and figured out how to query pool status and control features like lights, pumps, and the heater.
Wiring that backend logic into the R2 Alexa skill tied everything together. Voice control is back—and this time, it's reliable.
Q: Alexa, ask R2 to check on the pool
A: The pool is currently 59 degrees, the last spa temperature was 61 degrees, the poolhouse temperature is 79 degrees, the chlorinator is off and not reporting salt level, and pool is on.
Fine! I'll Do It Myself …again
Everything is better when you have total control.
The phrasing, the smoothness of the interaction, the richness of the queries, and the quality of the responses are all up to me. Everything I had before—weather reporting, pool automation—is now better than the original integrations. More detail. Better responses. A nicer voice interface.
Frankly, it blows away the official Alexa skills these companies shipped. I'm almost grateful they were so bad—it forced me to build something superior.
This has become a recurring theme for me over the past few years. Growing disillusionment with Big Tech will do that. If you want things that actually work reliably and efficiently, respect your privacy, aren't hostile to the user, and don't get worse with every update, you increasingly have to build them yourself.
It's good to be handy in 2026.
The Joke's on Them (Literally)
I couldn't resist adding one extra feature to R2:
Q: Alexa, ask R2 for a joke.
A: Here's a punny joke: I just got fired from my job at the keyboard factory. They told me I wasn't putting in enough shifts.
It dutifully hits the JokeAPI service and blurts out a random joke or pun. It's fun, sure—but more importantly, it served as a clean model for extending R2 with additional capabilities.
This skill is now a foundation. I can bolt on whatever functionality I want next and make my smart home actually smart—on my terms. And just like R2-D2, it gets things done when it matters.
BTW, my custom R2 skill is private. So don't try to add it to your Alexa device.
Comments
Nothing yet. Say the first thing.
Sign in to join the conversation.