Wednesday, 21 October 2026

Remote oven temperature logger using ESP32 and Home Assistant using ESPHome

Yes, the oven seems to be playing up. Luckily it's just gone out of (5 year) warranty, so it's down to me to diagnose and fix it. It cost £400 5 years ago, so is close to worthless ie it would grieve my Scottish-bloodied Yorkshireness to pay for a Samsung "engineer" to come out a fix it, apart from being a writeoff from a financial point of view.

So although I've currently got a process (PID) controller and K type thermocouple monitoring the temperature, this only gives me live readings, by eye, when I'm in the kitchen. Obvs it would be more helpful to be able to monitor the temperature remotely and log it against time. So, a remote sensor connected to Home Assistant might sound like the right solution.

I've got a variety of ESP32 modules, mainly C3 and S3 flavours. These have USB-C for power and both wifi and Bluetooth, so I can simply(?) power them up and connect them into Home Assistant. Then I can create a record of the temperature against time.

I found a couple of ESP32-S3-Zero (thumbnail size), so I'll use one of them. To acquire the temperature, I can connect a MAX31856 breakout board ("shield"?) using SPI and 

MAX31855 (ADA269)MAX31856 (ADA3263)
Thermocouple typesK onlyK, J, N, R, S, T, E, B
Resolution0.25°C~0.008°C
Mains noise filterNoYes, selectable 50/60 Hz
ConfigurationNone, read-onlyThermocouple type, filter, fault thresholds
SPI wiring3 data wires (MISO, CLK, CS)4 data wires (adds MOSI)


I've got an clone of the Adafruit ADA3263 coming tomorrow, so let's get the ESP32 bit set up in anticipation.

There's a rather handy open source project that converts a YAML config into a compiled firmware and flashes it onto the ESP32 - ESPHome. There's also an integration for it in Home Assistant. Once you've flashed the ESP32, it shows up as "new device discovered" and you can then use it as a sensor in Home Assistant like any other HA sensor.

This is pretty tasty - no need to bugger about with Arduino IDE, Espressif-IDE or Visual Code Studio / Claude Code. It configures your YAML from dialog prompts (unless you are some sort of power user), then does the rest. You don't even need to edit the YAML code to show the SSID, password etc for your wifi network. Nice.

To customise the YAML for temperature logging, I got Claude to come up with the required added content:

esp32:
  board: esp32-s3-devkitc-1
  flash_size: 4MB
  framework:
    type: esp-idf

captive_portal:

spi:
  clk_pin: GPIO4
  miso_pin: GPIO5
  mosi_pin: GPIO6

sensor:
  - platform: max31856
    name: "Oven Temperature"
    cs_pin: GPIO7
    mains_filter: 50Hz
    update_interval: 10s

  - platform: wifi_signal
    name: "Oven Monitor WiFi Signal"
    update_interval: 60s

As ever, I had to keep the boot button pressed while plugging the EP32-S3 into the USB port for it to be recognised. Then it flashed ok and started running.


Unplugging it and powering it up from any USB-C supply gets it up and running, connected to HA over wifi. Of course, without the thermocouple board connected up, it reports a constant 0C.

In HA, I want a dashboard that shows the oven temp, so I went over to the embedded Claude agent within HA (ie living on the Raspberry Pi) and asked:

"i've just added oven-monitor. i want to use it to log oven temperature every minute and show the trend on a graph. range 20-250c, timescale - the last 20 mins. the thermocouple isn't connected yet but i will get it tomorrow. set this up so it's ready and working."

And here it is:


Looks good to me. I can mess with the axis limits later. 

Right, now wait for the board to arrive tomorrow. Then connect it up:

MAX31856S3-Zero
VIN3V3
GNDGND
SCKGPIO4
SDOGPIO5
SDIGPIO6
CSGPIO7

Avoid GPIO0 (boot button), GPIO21 (the onboard RGB LED) and GPIO19/20 (USB).

No comments:

Post a Comment

Finishing off the PCBA package and placing the order with JLCPCB

Well that's all done and dusted now, design-wise.  Here's some detail: Part of the costed BOM: Placement review: Assembly cost break...