Module13.2 Dual Kmeter is a dual-channel K-type thermocouple temperature module. It provides two independent thermocouple inputs (Kmeter 1 and Kmeter 2) and one onboard internal temperature sensor over a single I2C bus.
| Item | Information |
|---|---|
| Product Name | Module13.2 Dual Kmeter |
| SKU | M127 |
| Main Function | Dual-channel K-type thermocouple and internal temperature measurement |
| Communication Interface | I2C |
| Default I2C Address | 0x11 |
| ESPHome Component | dual_kmeter (external component) |
| ESPHome Version Requirement | 2026.4.4 and later |
external_components:
- source: github://m5stack/esphome-yaml/components
components: [dual_kmeter]
refresh: 0s Add the Sensor component to read thermocouple or internal temperature data from Module13.2 Dual Kmeter.
sensor:
- platform: dual_kmeter
name: "Thermocouple Channel 1"
channel: KMETER_1
update_interval: 60s Main parameters:
| Value | Description |
|---|---|
KMETER_1 | K-type thermocouple input channel 1 |
KMETER_2 | K-type thermocouple input channel 2 |
INTERNAL | Onboard internal temperature sensor |
unit (optional): Temperature unit reported by the sensor. Set to CELSIUS or FAHRENHEIT. The default is CELSIUS.
update_interval (optional, time): Polling interval for the sensor. The default is 60s.
address (optional, int): I2C address of the module. The default is 0x11.
For all other options, see the Sensor component.
KMETER_1 / KMETER_2)When a thermocouple channel is selected, the component writes the channel selection register (0x20) during each update() cycle, then polls the ready flag register (0x30) until the module indicates that a new conversion is complete.
The component waits for up to 300 ms. If the flag is not set within this window, the update is skipped and the following warning is logged:
[W][dual_kmeter]: Kmeter sampling timeout The module firmware stores the temperature as a signed 32-bit integer in little-endian byte order, with a scale factor of 0.01 (for example, a register value of 2537 represents 25.37 °C).
INTERNAL)The internal channel reads the onboard thermistor directly and does not wait for a ready flag. This measurement is always available and is not affected by the thermocouple channel selection register.
The M5Stack Module Dual Kmeter uses a fixed default I2C address of 0x11.
If the hardware address has been changed using the module's DIP switch,
use the address option to specify the new address.
sensor:
- platform: dual_kmeter
name: "Kiln Temperature"
channel: KMETER_2
address: 0x12 # Non-default address external_components:
- source: github://m5stack/esphome-yaml/components
components: [dual_kmeter]
refresh: 0s
i2c:
sda: GPIO21
scl: GPIO22
sensor:
# --- Thermocouple channel 1, Celsius ---
- platform: dual_kmeter
name: "Kiln Thermocouple"
channel: KMETER_1
unit: CELSIUS
update_interval: 30s
filters:
- sliding_window_moving_average:
window_size: 5
send_every: 5
# --- Thermocouple channel 2, Fahrenheit ---
- platform: dual_kmeter
name: "Oven Thermocouple (°F)"
channel: KMETER_2
unit: FAHRENHEIT
# Keep the unit consistent; the default unit_of_measurement is Celsius
unit_of_measurement: "°F"
update_interval: 30s
# --- Onboard internal temperature ---
- platform: dual_kmeter
name: "Module Internal Temperature"
channel: INTERNAL
update_interval: 60sExample of using CoreS3 with Module13.2 Dual Kmeter: