Oled display problem

I am using a oled daughter board over a D1Mini for ir_blaster app. The display was working fine until a particular version of esphome. Don’t remember the working version. But as it stopped working, I testing the device without the display board and the ir_blaster was working. When I install the display noticed too much heat on the display. No changes were done to the yaml file. Only esphome version changed as new version released and i did an update.

I have uploaded the individual photos of breadboard with DHT11, IR transmitter & IR receiver.

#  D5 : Transmitter
#  D6 : Receiver
#  D2 : SDA
#  D1 : SCL
#  D3 : DHT11
#  D7 : 
#  D8 : 
  
esphome:
  name: ir-remote-climate
  #platform: esp8266
 # board: d1_mini

esp8266:
  board: d1_mini
# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: !secret enc_key

ota:
  - platform: esphome
    password: "ota12345"

wifi:
  networks:
    - ssid: !secret wifi_ssid
      password: !secret wifi_password
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Ir-Remote-Climate"
    password: "DRZjpD9NDkcR"

captive_portal:

web_server:
  port: 80

remote_transmitter:
  pin: D5
  carrier_duty_percent: 50%
  id: remote

time:
  - platform: sntp
    id: esptime
    timezone: Asia/Calcutta

i2c:
   sda: D2
   scl: D1
   scan: true 

remote_receiver:
  id: rcvr
  pin:
    number: D7
    inverted: true

climate:
  - platform:  coolix  # works with Hall AC unit!
    name: "Hall AC" 
    supports_cool: True
    supports_heat: False
    receiver_id: rcvr
    sensor: hall_temp
    #fan_mode: HIGH
    visual:
      min_temperature: 18
      max_temperature: 40
      temperature_step: 0.1
      min_humidity: 30%
      max_humidity: 99%


sensor:
  - platform: dht
    pin: D3
    temperature: 
      id: hall_temp
      name: "Hall Temp"
    humidity:
      id: hall_hum
      name: "Hall Humidity"
    # update_interval: 120s

display:
   - platform: ssd1306_i2c
     model: "SSD1306 64x48"
     external_vcc: False
     invert: False
     rotation: 0
     reset_pin: D4
     address: 0x3C
     update_interval: 120s

     id: my_display

     pages:
       # - id: page1
       #    lambda: |-
       #     it.strftime(3, 14, id(font1), TextAlign::BASELINE_LEFT, "%I:%M %p", id(esptime).now());      
       #      //it.strftime(3, 28, id(font3), TextAlign::BASELINE_LEFT, "%A", id(esptime).now());   
       #     it.printf(3, 30, id(font2), TextAlign::BASELINE_LEFT, "%.1f °c", id(hall_temp).state);
       #    #  it.printf(6, 48, id(font2),TextAlign::BASELINE_LEFT, "%.1f %%" , id(hall_hum).state); 


        - id: page2
          lambda: |-
            if (id(hall_temp).has_state()){
               //it.printf(0, 4, id(font3), "%.1f", id(hall_temp).state);
               it.printf(0, 0, id(font4), "%.1f°", id(hall_temp).state);
               //it.line(0,25,48,25);
              // it.printf(0, 26, id(font3), "%.0f%%", id(hall_hum).state);
               }


interval:
    - interval: 60s
      then:
        #- lambda: ESP_LOGD("interval", "interval triggered");
         - display.page.show_next: my_display
         - component.update: my_display


font:
   - file: 'fonts/slkscr.ttf'
     id: font1
     size: 8

   - file: 'fonts/BebasNeue-Regular.ttf'
     id: font2
     size: 20

   - file: 'fonts/BebasNeue-Regular.ttf'
     id: font3
     size: 25

   - file: 'fonts/BebasNeue-Regular.ttf'
     id: font4
     size: 34

switch:

  - platform: template
    name: FAN PWR Button
    id: fan_pwr_button
    turn_on_action:
      - remote_transmitter.transmit_nec:
          transmitter_id: remote
          address: 0x00CF
          command: 0x8976
      
          
  - platform: template
    name: FAN 1 Button
    id: fan_1_button
    turn_on_action:
      - remote_transmitter.transmit_nec:
          transmitter_id: remote
          address: 0xF300
          command: 0x748B

  - platform: template
    name: FAN 2 Button
    id: fan_2_button
    turn_on_action:
      - remote_transmitter.transmit_nec:
          transmitter_id: remote
          address: 0xF300
          command: 0x6F90

  - platform: template
    name: FAN 3 Button
    id: fan_3_button
    turn_on_action:
     - remote_transmitter.transmit_nec:
           transmitter_id: remote
           address: 0xF300
           command: 0x758A

  - platform: template
    name: FAN 4 Button
    id: fan_4_button
    turn_on_action:
     - remote_transmitter.transmit_nec:
           transmitter_id: remote
           address: 0xF300
           command: 0x6C93

  - platform: template
    name: FAN 5 Button
    id: fan_5_button
    turn_on_action:
     - remote_transmitter.transmit_nec:
           transmitter_id: remote
           address: 0xF300
           command: 0x7788


output:
  - platform: template
    id: fan_speed_output
    type: float
    write_action:
      - logger.log:
          format: "Speed to set: %i"
          args: [ 'id(fan_atomberg).speed']
      - if:
          condition:
            lambda: return (id(fan_atomberg).state == 1 and id(fan_atomberg).speed == 1);
          then:
            - logger.log: "Setting speed to 1"
            - remote_transmitter.transmit_nec:
                transmitter_id: remote
                address: 0xF300
                command: 0x748B
      - if:
          condition:
            lambda: return (id(fan_atomberg).state == 1 and id(fan_atomberg).speed == 2);
          then:
            - logger.log: "Setting speed to 2"
            - remote_transmitter.transmit_nec:
                transmitter_id: remote
                address: 0xF300
                command: 0x6F90
      - if:
          condition:
            lambda: return (id(fan_atomberg).state == 1 and id(fan_atomberg).speed == 3);
          then:
            - logger.log: "Setting speed to 3"
            - remote_transmitter.transmit_nec:
                 transmitter_id: remote
                 address: 0xF300
                 command: 0x758A
      - if:
          condition:
            lambda: return (id(fan_atomberg).state == 1 and id(fan_atomberg).speed == 4);
          then:
            - logger.log: "Setting speed to 4"
            - remote_transmitter.transmit_nec:
                 transmitter_id: remote
                 address: 0xF300
                 command: 0x6C93
      - if:
          condition:
            lambda: return (id(fan_atomberg).state == 1 and id(fan_atomberg).speed == 5);
          then:
            - logger.log: "Setting speed to 5"
            - remote_transmitter.transmit_nec:
                transmitter_id: remote
                address: 0xF300
                command: 0x7788

# # Individual switches
fan:
  - platform: speed
    output: fan_speed_output
    name: "Atomberg Fan"
    id: fan_atomberg
    speed_count: 5
#     restore_mode: ALWAYS_OFF
    on_turn_on:
      - logger.log: "Fan Turned On!"
    on_turn_off:
      - logger.log: "Fan Turned Off!"
      - remote_transmitter.transmit_nec:
          transmitter_id: remote
          address: 0xF300
          command: 0x6E91

Doesn’t smell like software problem. Downgrade esphome temporarily and give it a go with “previous working edition”. Observe heating.

How do I downgrade esphome version in HA supervised on raspberry pi.

You can install esphome on your PC without touching your actual HA setup.

Is it on docker desktop. Can version be selected in docker.

If you use docker compose change the image line to something like this.

image:  ghcr.io/esphome/esphome:2025.5.1

Ok. Thanks. I will try today.

I downgraded esphome version to 2024.8 in HA addon itself and compiled the yaml file. The oled is still heating up on the display glass. Display not working. I don’t have another display to try. Could something go wrong on it. I visually don’t see any damage. Also don’t remember the last working version so downgraded to a older version.

Like I said at the beginning, when components like display heats up, there is likely something damaged on the display module or incorrect/damaged wiring.

No wiring was changed. The oled shield display is a daughterboard to D1Mini. Without the display the circuit is functional. I get the temperature & Humidity sent to HA. Ir_blaster working.

Then some component on your display module simply failed. Probably voltage regulator or the driver chip itself.

Yes the component on display module has failed.

I downgraded ESPHome to 2023.11 and tried. Also connecting power to 5v & Gnd on D1Mini directly without the other circuit board or components the results are the same.

I will try by connecting oled by jumpers for required pins only like D1, D2 and power lines.