Heltec Vision Master E290 e Paper display not working

HI All, I am hoping for some guidance,

I recently picked up this: Vision Master E290 – Heltec Automation on Aliexpress for a good price, and it looked like the perfect size for my project. However I never checked if it would work with ESPhome or not. I really hope it can as it is a cool form factor.

I managed to install ESPHome on it, and the ESPHome Is happy talking to it. But I seem unable to get the screen to work. I have looked at the schematic and got the pins for the GPIO from there; I am unsure what the screen is, just that it is made by the. I have tried some of the other options, but this did not work.

I am unsure where to go from here, the Logs show that it is updating the screen but the screen still has the last screen from the stock firmware on it. Any help would be greatly appreciated.

Log Output.
[14:10:02][I][waveshare_epaper:1218]: Performing e-paper update.
[14:10:03][I][waveshare_epaper:1218]: Performing e-paper update.
[14:10:04][I][waveshare_epaper:1218]: Performing e-paper update.
[14:10:05][I][waveshare_epaper:1218]: Performing e-paper update.

the Test Yaml I created is:

esphome:
  name: 290-test
  friendly_name: 290 test

esp32:
  board: esp32-s3-devkitc-1
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "removed"

ota:
  - platform: esphome
    password: "removed"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "290-Test Fallback Hotspot"
    password: "removed"

spi:
  clk_pin: 2
  mosi_pin: 1

display:
  - platform: waveshare_epaper
    cs_pin: 3
    dc_pin: 4
    busy_pin: 6
    reset_pin: 5
    reset_duration: 2ms
    model: 2.90in-dke
    full_update_every: 30
    lambda: |-
      it.filled_circle(20, 75, 10);
      it.line(0, 0, 100, 50);
      // Draw the outline of a rectangle with the top left at [5,20], a width of 30 and a height of 42
      it.rectangle(5, 20, 30, 42);
      // Draw the same rectangle a few pixels apart, but this time filled
      it.filled_rectangle(40, 40, 30, 42);

captive_portal:

Managed to solve it with the help of a friend; the e-paper needs to be turned on as per the Datasheet it wasn’t that clear. It is connected to a GPIO pin 18, which I have made a switch that turns on.

Here is my example code of it working, hopefully help someone in the future.

esphome:
  name: 290test2
  friendly_name: 290test2
  on_boot:
    priority: 550.0
    then:
      - switch.turn_on: power3v3
esp32:
  board: esp32-s3-devkitc-1
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "removed"

ota:
  - platform: esphome
    password: "removed"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "290Test2 Fallback Hotspot"
    password: "removed"
spi:
  clk_pin: GPIO2
  mosi_pin: GPIO1

switch:
  - platform: gpio
    pin: GPIO18
    id: power3v3
    name: "power"
  - platform: homeassistant
    id: lego_light
    entity_id: switch.study_light
    on_turn_on:
      then:
        - component.update: my_display
    on_turn_off:
      then:
        - component.update: my_display

font:
  - file: "fonts/Roboto-Regular.ttf"
    id: myfont
    size: 30
display:
  - platform: waveshare_epaper
    id: my_display
    cs_pin: GPIO3
    dc_pin: GPIO4
    busy_pin: GPIO6
    reset_pin: GPIO5
    reset_duration: 100ms
    model: 2.90inv2-r2
    full_update_every: 10
    update_interval: 500s
    rotation: 270
    lambda: |-
      //it.line(0, 0, 100, 50);     
      it.print(0, 0, id(myfont), "Lego Light state");
      if (id(lego_light).state) {
        it.print(10, 40, id(myfont), "ON");
      } else {
        it.print(10, 40, id(myfont), "OFF");
      }
      it.print(20, 90, id(myfont), "Thank You Nathan!");

captive_portal: