I²C Bus

This component sets up the i²c bus for your ESP32 or ESP8266. In order for those components to work correctly, you need to define the i²c bus in your configuration. Please note the ESP will enable its internal 10kΩ pullup resistors for these pins, so you usually don’t need to put on external ones.

# Example configuration entry
  sda: 21
  scl: 22
  scan: False

Configuration variables:

  • sda (Optional, Pin): The pin for the data line of the i²c bus. Defaults to the default of your board (usually GPIO21 for ESP32 and GPIO4 for ESP8266).
  • scl (Optional, Pin): The pin for the clock line of the i²c bus. Defaults to the default of your board (usually GPIO22 for ESP32 and GPIO5 for ESP8266).
  • scan (Optional, boolean): If ESPHome should do a search of the i2c address space on startup. Note that this can slow down startup and is only recommended for when setting up new sensors. Defaults to False.
  • frequency (Optional, float): Set the frequency the i²c bus should operate on. Defaults to 50KHz. Values are 50KHz, 100KHz, 200KHz, … 800KHz


If you’re using the ESP32 and i2c frequently is showing errors in the logs, try with the latest version of the Arduino framework. See arduino_version for information on how to do this.