I bought a wifi enabled kettle in 2014. It works very well as a kettle (It’s fairly fast, you can specify a range of temperatures, it’s easy to clean and hasn’t fallen apart yet) and less well as a wifi kettle (It doesn’t pick up the wifi after an outage sometimes, the app frequently loses track of which IP address is on).

In 2015, I built Retort, a python-based web-based interface to my kettle. The kettle itself is fairly old-school in its networking, binary packets over sockets, no concept of ZeroconfΒ or anything, so the app works by throwing packets at everything on the network and then locking on to anything that claims to be a kettle. This is the kind of thing that gives the IoT a bad name, to be honest, but it only runs on my local server, and internet access is protected by a basic auth over SSL system. Retort has JS based front-end that talks to a REST-based API.

In 2016, I got an Echo Dot, and in the gap between Christmas and NY, investigated coding up an Alexa Skill to drive my kettle. This worked up to a point. I used the generic Skill system because it didn’t map to any of the SmartHome devices Amazon support (Lights, Heating), plus SmartHome devices require using AWS Lambda functions and logging in with OAuth, all of which is nuclear-level overkill for being able to turn on my kettle from the bed.

The problems with this were various. Mostly, things like the clunky “Tell the kettle to start”, because Alexa assumes anything along the lines of “Put the X on” or “Turn on the X” is a smarthome request. Temperature changes also didn’t work for the same reason.

Today, then, I decided to look in to shifting it to a SmartHome design. It still doesn’t fit as a light, but it does model quite well as a Thermostat, in the end. I spent a few minutes putting together a noddy OAuth provider hard-coded to me, and setting up a Lambda function not far from the amazon examples. Error support’s a bit crap – there are only a few errors you can reply with, and it looks like the custom error string is entirely ignored, but now “Turn the kettle on” works from the bedroom, and what more could I ask for?

I mean, I could ask for “not committing the Lambda function with my password in it”, so I changed the password and then did that.