Is MAX6675 K-Type Thermocouple Sensor Compatible with Home Assistant (ESPHome)?
Electrical Specifications
Always confirm pin assignments against the manufacturer datasheet before wiring.
Compatibility Overview
High-temperature thermal probe measuring up to 1024C for kiln smoker pizza oven or engine exhaust monitoring.
Wiring MAX6675 K-Type Thermocouple Sensor to ESP32
| Module pin | ESP32 | Note |
|---|---|---|
| VCC | 3V3 | The chip runs from 3.0 to 5.5V. At 3.3V its SO output is at a level the ESP32 reads directly. |
| GND | GND | |
| SO | GPIO19 | MISO, and the only data line. The spi: block also names mosi_pin GPIO23, but the MAX6675 is read-only and nothing is wired there. |
| SCK | GPIO18 | |
| CS | GPIO5 | cs_pin in the config. |
| Thermocouple + / − | the thermocouple | K-type only, into the screw terminal. If the reading falls as the probe heats up, the two leads are the wrong way round. |
Host pins are the ones the configuration on this page uses. Move a pin here and change it in the YAML — they are documented together so they cannot disagree.
Technical Specification Matrix
| Feature / Attribute | Specification / Status |
|---|---|
| Hardware Protocol | SPI Bus / 3.3V |
| Bridge Required | NO |
| Border Router Needed | None |
| Hardware Capabilities & Peripherals | Thermocouple Temperature (°C) Note: these entities come from the ESPHome configuration you flash — each one needs its matching component in that YAML before it appears. |
| Pairing Complexity | Intermediate |
| Factory Reset Instruction | Hold BOOT button for 2s. |
Wire, Flash, Adopt, Check
Wire it up
Follow the wiring table above. The ESP32 pins there are the ones the configuration uses, so if you move one, change it in both places.
Flash the configuration
Create a new device in the ESPHome dashboard (the Home Assistant add-on) and paste the configuration below into it, or save it as emb_esp32_max6675_ard.yaml and run esphome run emb_esp32_max6675_ard.yaml. The first flash goes over USB. If it is not detected, hold BOOT button for 2s to put it in download mode. Every update after that is over the air.
Adopt it in Home Assistant
Settings → Devices & Services. A node on the same network shows up as a discovered ESPHome device within a minute of joining Wi-Fi; choose Configure and enter the API encryption key from your secrets.yaml. If discovery does not find it, add the ESPHome integration by hand with the node's IP address.
Check it works
Thermocouple Temperature in Home Assistant shows room temperature to within a few degrees, and holding the tip in your hand lifts it at the next update. A "Got invalid value" warning in the log at every update is an open circuit: a loose terminal screw or a broken probe. A reading that falls as the tip warms is the leads swapped; a reading that drops to 0 when the probe touches metal is a grounded sheath.
ESPHome Configuration
Starting configuration for MAX6675 K-Type Thermocouple Sensor on ESP32. Untested on hardware — verify wiring and pins against your own board.
# ESPHome configuration for MAX6675 K-Type Thermocouple Sensor
# Host: ESP32. Pin numbers below are host-side defaults — any free
# GPIO will do, and you should change them to match your own wiring.
esphome:
name: emb_esp32_max6675_ard
friendly_name: "MAX6675 K-Type Thermocouple Sensor"
esp32:
board: esp32dev
framework:
type: esp-idf
logger:
api:
encryption:
key: !secret api_encryption_key
ota:
- platform: esphome
password: !secret ota_password
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
spi:
clk_pin: GPIO18
mosi_pin: GPIO23
miso_pin: GPIO19
sensor:
- platform: max6675
name: "Thermocouple Temperature"
cs_pin: GPIO5
update_interval: 60s
Before you flash:
the !secret values come from your
secrets.yaml, and the GPIO numbers are host-side
defaults rather than properties of this part — change them to match how you actually wired it.
What Appears in Home Assistant
°C in 0.25° steps, every 60s. The component only publishes good reads: with the probe unplugged it logs a warning and Home Assistant keeps showing the last value.
Not in the config. Adding filters: - timeout: 3min to the sensor makes it send unknown once readings stop arriving, so a broken or unplugged probe shows in Home Assistant instead of freezing the graph.
Known Problems and Fixes
An unplugged probe freezes the reading
The chip raises a flag bit when the thermocouple input is open. ESPHome treats that as an invalid read: it logs a warning, sets the node's warning status and publishes nothing, so Home Assistant carries on showing the last good temperature. For a smoker or kiln alert that is the wrong failure; the timeout filter above turns silence into unknown.
Do not poll faster than a quarter-second
A conversion takes 0.17–0.22 seconds, and pulling CS low to read stops any conversion in progress. Read faster than that and the chip never finishes one, so the value stops updating. The 60s in the config is nowhere near the limit; one second is safe.
The probe must not touch ground
The datasheet has T− connected to ground, which open-probe detection depends on. A probe whose sheath or tip touches an earthed or grounded surface — a smoker body, an exhaust, a pipe — gives wrong readings, and users report it dropping to 0°C. Use an insulated probe and mount it so the metal is isolated from anything grounded.
Nothing below 0°C
The output is an unsigned 12-bit number from 0 to 1023.75°C. A freezer or a winter night outdoors bottoms out at 0. The MAX31855 reads negative temperatures.
Keep the board cool
The chip measures the cold junction at its own package and corrects for it, which only works with the board between −20°C and +85°C and at the same temperature as the terminal. Keep the module away from the heat being measured and from warm parts of the node, and cover the distance with K-type extension wire. Expect about ±2°C from 0 to 700°C, plus up to ±3°C of cold-junction error over the full ambient range.
The bundled probe is not a kiln probe
The chip reads to 1024°C; the cheap screw-thread probe often sold with the module is rated far lower (ProtoSupplies lists theirs at 0–80°C). For a pizza oven, kiln or exhaust, buy a K-type probe rated for that temperature — any K-type probe works with this board.
Report a Pinout Error or Submit Tested Code Snippets
Found a pin mapping quirk or built a custom ESPHome YAML driver for MAX6675 K-Type Thermocouple Sensor? Submit a pull request or report corrections to our index.
Hardware Correction Reporter (emb-esp32-max6675-ard)
Frequently Asked Questions
Does MAX6675 K-Type Thermocouple Sensor work without an internet connection?
How is MAX6675 K-Type Thermocouple Sensor powered and wired to the host board?
How does the host board reach Home Assistant (ESPHome)?
Alternatives
MAX31855 Thermocouple Amplifier
The successor: reads below zero, reports a probe shorted to ground or supply as well as an open one, and has its own ESPHome platform, max31855.
MAX31865 RTD PT100 Temp Amplifier
A platinum RTD instead of a thermocouple — much finer and more accurate, for liquids, fermenters and sous-vide, if the temperature is within the probe's rating.
DS18B20 Waterproof Temperature Probe
A sealed digital probe to 125°C, several on one wire and no amplifier, for anything that never gets oven-hot.
MLX90614 Contactless IR Thermal Sensor
Non-contact infrared, for a surface that cannot take a probe.