Vevor projection screen radio control

I recently bought a Vevor 100" electric projection screen for €160 after our old manual screen broke down. With the new(ish) radio frequency integration I thought this would be a nice project to automate. Bought a CC1101 module, connected it to a ESP32-C3 SuperMini and used this ESPHome config to log the codes of the remote. Had to fiddle around a bit, I was expecting the remote to be 433Mhz but it was 315Mhz. Anyways, here's the ESPHome config I'm using now to control the screen, might help someone else!

esphome:
  name: projector-screen
  friendly_name: Projector Screen
  on_boot:
    priority: -100
    then:
      - cc1101.begin_rx: cc1101_module

esp32:
  board: esp32-c3-devkitm-1
  framework:
    type: arduino

logger:
  level: INFO

api:

ota:
  - platform: esphome

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

# ESP32-C3 SuperMini <-> CC1101
#
# CC1101 3.3V  -> ESP32-C3 3V3
# CC1101 GND   -> ESP32-C3 GND
# CC1101 SCK   -> ESP32-C3 GPIO4
# CC1101 MOSI  -> ESP32-C3 GPIO6
# CC1101 GCD1  -> ESP32-C3 GPIO5    # MISO / GDO1 / SO
# CC1101 CSN   -> ESP32-C3 GPIO7
# CC1101 GDO2  -> ESP32-C3 GPIO3    # RX
# CC1101 GDO0  -> ESP32-C3 GPIO10   # TX

spi:
  clk_pin: GPIO4
  mosi_pin: GPIO6
  miso_pin: GPIO5

cc1101:
  id: cc1101_module
  cs_pin: GPIO7
  frequency: 315MHz
  output_power: 10
  modulation_type: ASK/OOK
  symbol_rate: 2000
  filter_bandwidth: 200kHz

remote_receiver:
  id: rf_receiver
  pin:
    number: GPIO3
    mode:
      input: true
      pullup: false
      pulldown: false
  tolerance: 60%
  filter: 50us
  idle: 30ms

remote_transmitter:
  id: rf_transmitter
  pin: GPIO10
  carrier_duty_percent: 100%
  non_blocking: true
  on_transmit:
    then:
      - cc1101.begin_tx: cc1101_module
  on_complete:
    then:
      - cc1101.begin_rx: cc1101_module

script:
  # Screen UP / retract
  - id: screen_up
    mode: restart
    then:
      - remote_transmitter.transmit_raw:
          transmitter_id: rf_transmitter
          code:
            [
              215,
              -5909,
              213,
              -545,
              592,
              -173,
              602,
              -172,
              601,
              -173,
              601,
              -173,
              601,
              -195,
              186,
              -579,
              196,
              -578,
              195,
              -576,
              195,
              -550,
              196,
              -573,
              586,
              -208,
              193,
              -557,
              607,
              -191,
              571,
              -177,
              204,
              -574,
              591,
              -172,
              208,
              -576,
              196,
              -578,
              588,
              -182,
              193,
              -582,
              187,
              -579,
              582,
              -189,
              193,
              -578,
            ]
          repeat:
            times: 10
            wait_time: 0ms

  # Screen STOP
  - id: screen_stop
    mode: restart
    then:
      - remote_transmitter.transmit_raw:
          transmitter_id: rf_transmitter
          code:
            [
              171,
              -5939,
              189,
              -577,
              554,
              -197,
              585,
              -196,
              583,
              -196,
              580,
              -196,
              580,
              -197,
              187,
              -579,
              196,
              -581,
              172,
              -602,
              181,
              -577,
              192,
              -577,
              584,
              -184,
              193,
              -578,
              584,
              -197,
              564,
              -196,
              189,
              -582,
              590,
              -194,
              186,
              -578,
              196,
              -579,
              564,
              -207,
              576,
              -210,
              193,
              -553,
              208,
              -559,
              197,
              -582,
            ]
          repeat:
            times: 10
            wait_time: 0ms

  # Screen DOWN / deploy
  - id: screen_down
    mode: restart
    then:
      - remote_transmitter.transmit_raw:
          transmitter_id: rf_transmitter
          code:
            [
              188,
              -5918,
              201,
              -571,
              590,
              -196,
              580,
              -172,
              601,
              -196,
              579,
              -196,
              579,
              -196,
              185,
              -578,
              197,
              -580,
              181,
              -578,
              181,
              -583,
              213,
              -569,
              570,
              -196,
              186,
              -580,
              591,
              -181,
              577,
              -210,
              193,
              -578,
              565,
              -198,
              195,
              -565,
              196,
              -583,
              564,
              -207,
              192,
              -583,
              583,
              -188,
              192,
              -567,
              197,
              -582,
            ]
          repeat:
            times: 10
            wait_time: 0ms

button:
  - platform: template
    name: "Projector Screen Up"
    icon: mdi:arrow-up-bold
    on_press:
      - script.execute: screen_up

  - platform: template
    name: "Projector Screen Stop"
    icon: mdi:stop
    on_press:
      - script.execute: screen_stop

  - platform: template
    name: "Projector Screen Down"
    icon: mdi:arrow-down-bold
    on_press:
      - script.execute: screen_down

cover:
  - platform: template
    name: "Projector Screen"
    id: projector_screen
    device_class: blind
    optimistic: true
    assumed_state: true

    # Home Assistant "open" = screen retracts upward/out of the way.
    open_action:
      - script.execute: screen_up

    # Home Assistant "close" = screen comes down/deploys.
    close_action:
      - script.execute: screen_down

    stop_action:
      - script.execute: screen_stop