How to Easily Make a Smart Kettle

Updated on 15th Sep 2020 14:12 in DIY, Home Assistant, IoT, Smart, Tutorial

A lot of people have kettles and wouldn't it be nice if it started boiling water for your morning tea automatically? While there exist many commercial kettles that offer integrated technology, they are often expensive and require replacing your existing device. Lucky for us, there is an easy way to convert a regular kettle into a smart one using a cheap smart plug.

How to make a smart kettle

Disclaimer: This post contains affiliate links. As an Amazon Associate, I earn from qualifying purchases. 

Picking the smart plug

There's a lot of smart plugs on the market, and to make a dumb kettle smart, any of them can technically work. That being said, there are a few things you need to consider when selecting a plug for this purpose. One of these points is the plug's current rating, which is especially important when it comes to appliances that are designed to produce heat which usually draws a lot of electrical current. 

The typical catch with smart plugs is that many of them are rated for 10A (at least in North America), while most wall sockets can supply a 15A maximum. This leaves plenty of room for a device to draw more current than the smart plug was designed to handle, causing it to malfunction or even melt from the heat. It is consequently advised to purchase smart plugs rated for 15A when it comes to things like space heaters or kettles. 

A second point to consider is that some smart plugs include a feature called "energy monitoring" which can be used to measure how much power is being used at any given moment. While this feature isn't strictly necessary to make a kettle smarter, it will add feedback that otherwise wouldn't be available. We will cover the idea in the next section. Still, the general reason, including power measurement is a good idea is because it allows the computer to understand whether or not the kettle is actually boiling any water. 

Without any source of feedback, the controller is left to guess that when the plug is on the water will boil, but as we will see, there are many situations where this will not be the case. As such, this guide will assume you are using a plug capable of energy monitoring - but know that using one without this feature is possible but will result in suboptimal user experience.

Here's one I've used that works well. You don't need to use this one, but it is relatively inexpensive and has all of the features previously mentioned.

Picking a kettle

Now you might be wondering why picking a kettle is relevant since we are converting a dumb kettle into a smart one. The reason is that regular kettles can be bought for around 30$, while most of the "smart" products I found were listed at well over 100$. That isn't even considering the compatibility of these devices, since appliances like this will often only work with one specific app.

So if you need a kettle, try finding one that is relatively cheap while still having two essential features: auto shut off and an anti-dry boiling feature. The reason we want a cheap kettle is that for the purposes of this guide, the fewer electronics the device has, the better. Things like timers, programmable temperatures, and displays will actually only serve to reduce the control the plug can have over the system, as they can prevent the kettle from turning on when it gets powered.

As for the auto-shutoff, most kettles I've seen include this feature in some capacity. It is the only way without using an additional sensor that the controller can know that the water has boiled. The second feature that it should have is some sort of dry boil prevention. When it becomes possible to start the kettle remotely, there must be some protection against running the heater without any water in it since that can quickly destroy the kettle.

The way these features come together to provide a very smart kettle is as follows: the kettle will be started by the intelligent plug turning on its output. For this to work, the kettle needs to have its switch in the "ON" position, which is the biggest downside to this approach. This can quickly be dealt with by ensuring you flip the switch back on after pouring out the hot water. Once the water begins to boil the kettle will flip it's switch back to off to stop the heating.

When the heating stops, the smart plug will detect that the kettle is no longer drawing any power allowing it to notify you that the water has boiled. In the case that the kettle is empty, the dry boil feature will prevent the heater from turning on which will immediately turn the system off. Since the kettle will no longer draw power from the plug, the smart home will be able to identify that there must be no water in the container. 

This is the kind of kettle you might want to get. It is relatively cheap and isn't too smart for this project since it stops by physically turning off the power switch. Note that you don't need to get a cheap kettle, the more expensive ones are fine as long as they are necessary and don't feature fancy control circuits. If they do, it might interfere with this technique.

The setup

Getting this working is actually relatively simple as it consists mostly of plugging the kettle into the smart plug, and the smart plug into the wall. The most important part of the setup is that the kettle must have its switch placed in its "ON" position. Don't tape or glue the switch in the ON position unless you are sure the kettle can still turn off when the water has boiled. 

We require the device to turn off when the water has boiled because otherwise, we will need additional sensors and circuits to also detect when the boiling is done. By using the device's existing method of stopping, we do not require any extra parts and can instead simply use the smart plug to detect it's done. 

Once the device is plugged into the smart plug, plugging it into the wall will complete the hardware portion of the setup. The only thing remaining is to configure the automation in software, which will differ depending on what smart home controller you are using.

Software configuration

In this step, the exact procedure will be different depending on what smart home controller you are using. These instructions will be for a configuration running Home Assistant. First, the smart plug must be added as a device to HASS, which can be difficult depending on which device it is you are using. In my case, since I am using a Meross smart plug, there aren't any official integrations that will support what we need to do. 

To make it work, either follow my guide for using Meross devices offline or install the excellent meross-homeassistant library. The latter requires a Meross account and will only work with the internet, but is also a lot easier to get working than my offline technique. If you are using a different brand, either install the relevant integration or if none exist, investigate the use of IFTTT (If This Then That). Most devices will support IFTTT, and through that, this project can be completed just as quickly.

Note that IFTT integration isn't always great, with some minimal options for specific devices, but with any luck, your device will support the triggers and actions required to get this working.

Flow chart

Smart kettle conversion software flowchart
Flow chart of the automation

As previously mentioned, the system will start based on either a manual trigger or a scheduled event triggering the start of the automation. Immediately after receiving the start command, it will issue a command to the smart plug, wait 5 seconds to allow it to start, then check that the kettle is still drawing current. If not, the dry boil prevention must have turned off the kettle to protect it, indicating there is no water in the container.

After verifying it is still on, the system will keep checking that the kettle is drawing power, and once it turns off because the water has reached boiling temperature, it will detect the lack of current. Then, it can do anything you want when the kettle is ready, such as send a notification, turning a light on, or even playing a sound! Finally, the system will turn off the smart plug, at which point the user will need to turn the kettle's power switch back on.

The automation code

I've usually stayed away from the built-in automation editor in Home Assistant because I didn't like that you had to develop them using YAML. Typically I create my automations with AppDeamon using Python, which has a much more intuitive syntax coming from a software background. For this guide, I forced myself to build something using the UI (under Configuration-> Automations) so that it would be as easy as possible to follow along. 

The end result is quite lovely, you can configure this entirely using the UI but to make it more compact here is the YAML code that belongs under "automations.yaml", or the "Automations" tab of the UI. 


- id: '1596655614251'
  alias: Trigger kettle scripts
  description: ''
  trigger:
  - entity_id: switch.lock
    from: 'off'
    platform: state
    to: 'on'
  condition: []
  action:
  - data: {}
    service: script.1596654897204
  - data: {}
    service: script.1596655311980

Then the following goes under "scripts.yaml", or the "Scripts" tab of the UI.

'1596654897204':
  alias: Kettle_NoWater
  sequence:
  - condition: state
    entity_id: switch.kettle
    state: 'on'
  - delay: '5'
  - below: '5'
    condition: numeric_state
    entity_id: sensor.kettle_power
  - data: {}
    entity_id: switch.kettle
    service: switch.turn_off
  - data:
    message: The kettle had no water in it!
    service: notify.mobile_app
'1596655311980':
  alias: Kettle_Normal
  sequence:
  - condition: state
    entity_id: switch.kettle
    state: 'on'
  - delay: '5'
  - above: '5'
    condition: numeric_state
    entity_id: sensor.switch.kettle
  - timeout: 00:07:00
    wait_template: '{{ states(''sensor.switch.kettle'')|int < 5 }}'
  - data: {}
    entity_id: switch.kettle
    service: switch.turn_off
  - data:
    message: 'Kettle: The water is ready!'
    service: notify.mobile_app

Make sure to replace the sensor entity with the name of the power plug's energy reporting entity, and the switch entity with the plug's switch entity. Also, ensure that the values used in the comparison are accurate for your situation. In this case, it's written as 5 amps being the threshold. However, plugs can report different values, including a value in watts (W). It's essential to adjust the value to whatever the plug reports when the kettle is on and actively boiling. 

This is to ensure that any amount of power used when the device is not boiling doesn't throw off our automation. One other thing to check is the timeout time in the normal kettle script. It is set to 7 minutes in the script, and this will be the maximum time the script will wait until it assumes the water has boiled. Increase this time as needed, as if it takes longer than that the script will stop the kettle before it's ready.

Summary

As we saw, a dumb kettle can become smart with a bit of tinkering! A kettle that previously had no smart abilities can even allow you to detect that there's no water when you turn it on via the smart home panel! Now you can enjoy making tea without needing to walk over and turn the machine on. The most exciting thing that can be done is to add a scheduled automation to turn on the plug's switch in the morning to automatically start your hot water and even notify you when it's done!

Have you tried this? Let me know in the comments below!

Other Posts