AirTouch Temperature Bridge is an ESPHome replacement for the original wireless temperature receiver used by compatible AirTouch 4 installations. It lets Home Assistant temperature entities act as zone sensors while leaving the main controller and normal control interface in place.
This project is intended for technically confident owners and integrators who:
- already run Home Assistant and ESPHome;
- have a compatible controller with the removable temperature receiver module;
- want to use wired, Zigbee, Bluetooth, Wi-Fi, or calculated Home Assistant temperatures instead of maintaining the original wireless sensors;
- are comfortable identifying low-voltage UART pins and validating voltage levels before connecting an ESP32.
It is not a general HVAC controller and does not replace the main controller, touchscreen, zoning logic, or safety controls.
Temperature sensing should not be tied to one discontinued radio ecosystem. Home Assistant already has access to reliable room sensors, averages, and derived temperatures. This bridge translates those existing readings into the compact sensor reports expected by the controller.
Each configured zone can use one to three temperature sensors. Multiple
readings can be combined using average, min, or max. Sources can be local
ESPHome sensors or remote Home Assistant sensors.
The reference build uses a Wemos/Lolin S2 Mini:
| Function | Default pin |
|---|---|
| Controller data into ESP | GPIO7 |
| ESP data into controller | GPIO5 |
| ESPHome status LED | GPIO18 |
| Temperature update LED | GPIO16 |
Confirm the electrical interface before wiring. The UART must share ground with the controller, and its voltage must be safe for the ESP32. This repository does not provide power-supply or level-shifter guarantees for every installation.
- Create a new ESPHome device using the board appropriate for your hardware.
- Replace the generated device YAML with examples/basic.yaml.
- Set the four pin substitutions for your board and wiring.
- Add the Home Assistant temperature entities for each required zone.
- Validate and install the device from ESPHome.
The custom component is loaded with:
external_components:
- source: github://projectcobalt/Airtouch-Temperature-Bridge
components:
- temperature_encoding_bridgePin mapping remains device-specific:
substitutions:
bridge_rx_pin: GPIO7
bridge_tx_pin: GPIO5
status_led_pin: GPIO18
temperature_led_pin: GPIO16
sensor_report_interval: 30s
led_pulse_duration: 150msDefine each temperature as an ESPHome sensor. A remote source uses the Home Assistant sensor platform:
sensor:
- platform: homeassistant
id: living_room_temperature
entity_id: sensor.living_room_temperatureLocal sensors such as OneWire or I2C use their normal ESPHome platform and are referenced the same way:
one_wire:
- platform: gpio
pin: GPIO12
sensor:
- platform: dallas_temp
id: local_temperature
name: "Local Temperature"Then assign sensor IDs to the required zones:
temperature_encoding_bridge:
id: temperature_bridge
uart_id: bridge_uart
fallback_zone_count: 5
temperature_led: temperature_update_led
report_interval: ${sensor_report_interval}
led_pulse_duration: ${led_pulse_duration}
zones:
- group: 1
temperature_sensors:
- living_room_temperature
- group: 2
aggregation: average
temperature_sensors:
- bedroom_temperature
- local_temperatureOnly listed groups are enabled. Groups must be unique and between 1 and 16. Each group accepts one to three ESPHome temperature sensors. Invalid or unavailable readings are ignored; the group waits until at least one source has a valid value. Local sensors continue reporting to the controller when Home Assistant is unavailable.
factory.yaml provides a serial Improv first-flash configuration. After adoption, configure the board pins and zones using examples/basic.yaml.
The example exposes slow-updating hardware health entities:
- uptime, Wi-Fi signal, and ESP temperature;
- free, minimum, and largest heap values;
- heap fragmentation and loop time;
- reset reason, IP address, SSID, and MAC address;
- received/transmitted frame counts, CRC errors, and parser resynchronisations;
- a restart button.
The receiver link is a framed binary UART protocol. Frames contain addressing, a sequence value, a command, a payload length, payload data, and a CRC. The bridge acknowledges controller management messages, learns the active zone count, and rotates encoded temperature reports for configured zones.
The implementation is intentionally limited to the interoperability needed for temperature reporting. This repository does not publish controller firmware, application code, confidential documentation, cryptographic material, or a general-purpose protocol dump.
components/temperature_encoding_bridge/ ESPHome external component
examples/basic.yaml Annotated installed-device example
factory.yaml Serial Improv first-flash configuration
Current release: v2.0.2
The component supports up to 16 zones, one to three source sensors per zone, local and remote temperature sources, configurable reporting and LED timing, dynamic frame lengths, CRC validation, controller restart recovery, and bounded UART processing. It has been tested on an ESP32-S2 with ESPHome 2026.5.3.
This is an independent, unofficial interoperability project. AirTouch and related product names are trademarks of their respective owners. Use is at your own risk and may affect warranty or support eligibility.