# Read a Bluetooth sensor directly with ESPHome

> Configure an ESPHome thermometer component to send readings directly to the CN105 controller without Home Assistant forwarding them.

Source: https://serin-labs.com/controller/sensors-esphome.html
Last updated: 2026-10-27

Read a Bluetooth thermometer on the controller without Home Assistant forwarding readings. For a Home Assistant integration instead, use [a Home Assistant temperature sensor](https://serin-labs.com/controller/sensors-home-assistant.html).

## Choose a supported sensor

Choose an ESPHome sensor component that supports the thermometer's exact model and advertisement format. The standard browser-installed build does not read the included Govee thermometer directly.

[Back up the current configuration](https://serin-labs.com/controller/backups.html#esphome), including its device identity and credentials.

## Read a Bluetooth thermometer directly

Follow [Customize ESPHome](https://serin-labs.com/controller/customize-esphome.html) to edit your configuration. Add the thermometer's sensor component and BLE tracker, with its Bluetooth MAC address and any required encryption key.

Examples include [Xiaomi thermometers with stock or PVVX firmware](https://esphome.io/components/sensor/xiaomi_ble/) and [RuuviTag](https://esphome.io/components/sensor/ruuvitag/). Some [Govee models, including H5075](https://community.home-assistant.io/t/read-govee-temperature-humidity-ble-advertisements-with-esp32-and-esphome/230449), need custom YAML to decode their broadcasts.

Connect the sensor's `on_value` automation to `id(hp).set_remote_temperature(x);`: `hp` is the generated CN105 climate ID and `x` is the reading in Celsius. Filter invalid readings and send updates more often than `remote_temperature_timeout`. If updates stop, that timeout returns the heat pump to its built-in sensor.

## Install and verify

1. Compile and install through the ESPHome dashboard.
2. Check the logs for fresh readings and confirm the controller's room temperature follows the thermometer.
3. Send a climate command and confirm the indoor unit responds.

For incorrect or missing readings, see [temperature troubleshooting](https://serin-labs.com/troubleshooting.html#temp-readings).
