PLEASE REMEMBER THIS IS A BOARD WITH HIGH CURRENT AC POWER! YOU MODIFY AT YOUR OWN RISK.
**Updated the sketch to add wifimanager for wifi and mqtt settings.**
I've added pics of the breadboard and attempted to make a fritzing schematic, let me know if I've stuffed (see f'ed) it up.
The Bellini Digital Kettle - BTK615 is a fairly cheap AUD$49 kettle and has a nicely available 5v power supply that plays well with a nodeMCU v1.0. It does not work with a D1 mini directly connected to its 5v pin, i'm guessing its related to this. You could also put your own power supply in like Luma did but I think it would end up bigger than the nodeMCU.
Speaking of power...
The LED that indicates the kettle is on is PWM controlled. That took some time to figure out but a really good learning experience for me.
Blue is the power LED anode and white is the power LED cathode, the switch is directly below it and I made a mess of soldering the cables the wrong way around, it would of been better having the switch cables facing the opposite direction so the LED pin is not touching the insulation. I have have moved the wire now as I don't know how long that wire insulation would last touching the pin.
More pics for perspective.
So here is the breadboard. I did put the cables in a connector but I don't count so good.....
Fritzing diagram of the breadboard.
Here is the finished board.
I wrote the code to connect to my Home Assistant server via MQTT. So it monitors the state of the kettle via the the "boiling" LED and has birth and last will messages. This kettle goes into low power mode after 2 hours of inactivity but is nice enough to still leave the 5v going to the ESP8266 to allow it to wake it back up again, however that takes about 8 seconds to update to the MQTT server. I'm pretty sure I trapped all the spam buttons.
The drawback is that I can't seem to turn it off. I'm not really that good with electronics but I didn't feel the need to turn off the kettle that I just turned on enough to solve that problem. It turns on and traps any requests to turn it on while its already on so that was enough for me. Also the deep sleep function that Mike suggested would be good.
And here it is in action: