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: True
  id: bus_a

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 I²C address space on startup. Defaults to True.

  • frequency (Optional, float): Set the frequency the I²C bus should operate on. Defaults to 50kHz. Values are 50kHz, 100kHz, 200kHz, … 800kHz

  • id (Optional, ID) Manually specify the ID for this I²C bus if you need multiple I²C buses.


If the device can support multiple I²C buses (ESP32 has 2) these buses need to be defined as below and sensors need to be setup specifying the correct bus:

 # Example configuration entry
   - id: bus_a
     sda: 13
     scl: 16
     scan: True
   - id: bus_b
     sda: 14
     scl: 15
     scan: True
# Sensors should be specified as follows
- platform: bme680
  i2c_id: bus_b
  address: 0x76
  # ...